Spigot Designer 3.1.1

Create intelligent menus having beautiful GUI with navigation, buttons and more!

  1. Create beautiful GUI menus with ease using UIDesigner and [​IMG]
    #1 kangarko, May 27, 2018
    Last edited: Jan 21, 2019
  2. I see the latest version 1.1.7 is out in github. Why don't you post any more update here?
    Anyways, I really appreciate this library. It's helping me to finish my project in time.
    #2 Lazo, Jan 21, 2019
    Last edited: Jan 21, 2019
  3. kangarko updated UIDesigner with a new update entry:


    Read the rest of this update entry...
  4. You're totally right, I forgot about it some time ago! Pushed now.
    • Like Like x 1
  5. I'd like to know how to implement MenuPagged class. What does T generic type stands for?
    There's no tutorial or explanation of that.
    Don't be pressed on this, I merely need a short guidance.
  6. Hey, T stands for everything, you literally change it to what you need to iterate through in the menu. Here is an example directly from CoreArena.

    Code (Java):

    public final class MenuWorlds extends MenuPagged<World> {

    // In this menu we will show all worlds on your server
            protected MenuWorlds(Menu parent) {
                super(9 * 2, parent, Bukkit.getWorlds());

    // Normally, you set title in the constructor above but for MenuPagged we actually need this special method
            protected final String getMenuTitle() {
                return "Select Game World";

    // This is called for each item in the menu, in this case for each World to convert it into an displayable item
            protected ItemStack convertToItemStack(World w) {
                final List<String> lore = new ArrayList<>();
                final boolean on = getData().isWorld(w);
                lore.add(on ? "&2World is selected." : "&cWorld is not selected.");
                lore.add("&7Found arenas:");

                return ItemCreator.of(Material.GRASS,

            protected void onMenuClickPaged(Player pl, World w, ClickType click) {
                if (getData().isWorld(w)) {

                    restartMenu("&3World has been un-selected!");
                } else {

                    restartMenu("&2World has been selected!");

                if (getRotation().getPhase() != RotationPhase.SUSPENDED)


            protected final String[] getInfo() {
                return new String[] {
                        "Select the one world",
                        "for your automatic games.",
                        "After changing it, you",
                        "will need to re-select",
                        "enabled arenas again.",
                        "&6Changing will stop the",
                        "&6rotation, if running."
    • Friendly Friendly x 1
  7. Hey @kangarko sorry if I'm bothering you. I'm having a difficulty of adding MenuButtons into a menu.
    My intent was to create a MenuButtonTrigger and register it by overriding this method.
    And Instantiating MenuButtonTrigger required me to pass a menu instance. (The menu class I use extends MenuPagged)
    However, It's impossible to instantiate the menu in such case because the menu items need to be queried from database before the it gets constructed. So I think it's necessary to allow registering buttons after the construction of a menu like Menu#addButton(MenuButton)
  8. Could you make UIDesigner listen to InventoryDragEvent? I want my menu to listen to the event and handle it.
  9. You can just listen to it yourself and find your menu by its title
  10. kangarko updated UIDesigner with a new update entry:


    Read the rest of this update entry...