xyz.refineryteam.refinerycore.api.gui ships presets for the most common menu flows, a binder that keeps paginated menus in sync with live data, and an animator for animated decorations — so you often don’t need to write a subclass at all.
ListPickerGUI<T> — pick one item from a list
xyz.refineryteam.refinerycore.api.gui.preset.ListPickerGUI is a ready-made paginated picker covering the extremely common “pick a player / kit / warp / home from a menu” flow, with no GUI subclass required:
WarpCommand.java
The renderer turns each element into its clickable
ItemStack; onSelect fires after the GUI closes automatically. Navigation buttons (◀ Previous page / Next page ▶) are provided and wired up for you.
TextInputGUI — anvil text input as a preset
xyz.refineryteam.refinerycore.api.gui.preset.TextInputGUI is a thin composition over AnvilPrompt with a simpler signature for the common “ask for a string” case:
KitCommand.java
CollectionBinder<T> — live data without manual refreshes
Instead of copying a list into a PaginatedGUI once at construction, xyz.refineryteam.refinerycore.api.gui.pagination.CollectionBinder re-reads it from a supplier on every render — so GUIs showing “all online players” or “all warps” stay current:
OnlinePlayersGUI.java
LiveSearchGUI.java
The supplier should return a fresh copy of the items each time — never a live view being mutated elsewhere.
GUIAnimator — animated menus
xyz.refineryteam.refinerycore.api.gui.animation.GUIAnimator drives periodic item updates for any RefineryGUI: animated borders, blinking buttons, countdown indicators, rotating decorations.
AnimatedMenu.java
The animator runs a repeating sync task and stops itself when the GUI is destroyed or has had no viewers past the idle grace period — you never leak tasks.

