Examples
Complete single-page menu
A copyable command menu with buttons, a border, and lifecycle events.
This class builds a fresh menu for each opening, which is a safe default when content may differ between players.
import eu.xap3y.xagui.GuiMenu;
import eu.xap3y.xagui.XaGui;
import eu.xap3y.xagui.models.GuiButton;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public final class RewardsMenu {
private final XaGui xaGui;
public RewardsMenu(XaGui xaGui) {
this.xaGui = xaGui;
}
public void open(Player player) {
GuiMenu menu = xaGui.createMenu("&8Rewards", 3);
menu.fillBorder(Material.GRAY_STAINED_GLASS_PANE);
menu.addCloseButton();
menu.setOpenSound(Sound.BLOCK_CHEST_OPEN, 0.7f);
GuiButton reward = new GuiButton(Material.DIAMOND)
.setName("&bDaily reward")
.setLore("", "&7Click to claim", "&eOne diamond")
.withListener(event -> {
Player clicker = event.getPlayer();
clicker.getInventory().addItem(new ItemStack(Material.DIAMOND));
clicker.sendMessage("§aReward claimed!");
clicker.closeInventory();
});
menu.setSlot(13, reward);
menu.setOnClose(event ->
event.getPlayer().sendMessage("§7Rewards menu closed."));
menu.open(player);
}
}Create RewardsMenu once and call open(player) from your command executor or event listener.