Skip to content

Usage Examples

virtualWinter edited this page Aug 30, 2025 · 2 revisions

Usage Examples

Here are a few examples of how to use the menu library.

Simple Paginated Menu

This example creates a simple menu with a list of items that spans multiple pages.

import club.catmc.utils.menu.MenuBuilder;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

import java.util.ArrayList;
import java.util.List;

public class MenuExamples {

    public void openSimpleMenu(Player player) {
        List<ItemStack> items = new ArrayList<>();
        for (int i = 1; i <= 50; i++) {
            items.add(new ItemStack(Material.DIAMOND, i));
        }

        MenuBuilder.create("My Awesome Menu", 54)
            .items(items)
            .onOpen(p -> p.sendMessage("Welcome to the menu!"))
            .onClose(p -> p.sendMessage("You closed the menu."))
            .buildAndOpen(player);
    }
}

Confirmation Menu

This example shows how to create a confirmation dialog with confirm and cancel actions.

import club.catmc.utils.menu.MenuBuilder;
import org.bukkit.entity.Player;

public class MenuExamples {

    public void openConfirmationMenu(Player player) {
        MenuBuilder.confirmation(
            "Are you sure?",
            p -> {
                p.sendMessage("You confirmed!");
                // Add your confirmation logic here
            },
            p -> {
                p.sendMessage("You cancelled.");
                // Add your cancellation logic here
            }
        ).buildAndOpen(player);
    }
}

Sign Input Menu

This example demonstrates how to get text input from a player using a sign.

import club.catmc.utils.menu.SignInputMenu;
import org.bukkit.entity.Player;

public class MenuExamples {

    public void openSignInputMenu(Player player) {
        SignInputMenu.create(
            player,
            new String[]{"", "^^^^^^^^^^^^^^^", "Enter your", "text here"},
            lines -> {
                String combined = String.join(" ", lines);
                player.sendMessage("You entered: " + combined);
            }
        ).open(player);
    }
}

Advanced Paginated Menu with Actions

This example demonstrates a paginated menu where each item has a specific click action.

import club.catmc.utils.menu.MenuBuilder;
import club.catmc.utils.menu.MenuItem;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

public class MenuExamples {

    public void openAdvancedMenu(Player player) {
        MenuBuilder builder = MenuBuilder.create("Advanced Menu", 36);

        for (int i = 1; i <= 20; i++) {
            int finalI = i;
            builder.addItem(
                new MenuItem(Material.EMERALD, finalI)
                    .name("§aItem #" + finalI)
                    .lore("§7Click me!")
                    .build(),
                event -> {
                    Player p = (Player) event.getWhoClicked();
                    p.sendMessage("You clicked item #" + finalI);
                    p.closeInventory();
                }
            );
        }

        builder.buildAndOpen(player);
    }
}

Anvil Input Menu

This example shows how to get text input from a player using an anvil interface.

import club.catmc.utils.menu.AnvilInputMenu;
import org.bukkit.entity.Player;

public class MenuExamples {

    public void openAnvilInputMenu(Player player) {
        AnvilInputMenu.create(
            player,
            "Enter your name",
            name -> {
                player.sendMessage("Your name is: " + name);
            },
            p -> {
                p.sendMessage("You cancelled the input.");
            }
        ).open(player);
    }
}

Clone this wiki locally