#Is there a way to pass a method into the superclass constructor without using static?

1 messages · Page 1 of 1 (latest)

unreal river
#
public class CraftsMenu extends Menu {

    private static final int PAGE_SIZE = 27;
    private static final int PAGE_SIZE_WITHOUT_SELECTORS = PAGE_SIZE-9;

    public CraftsMenu(int currentPageNumber) {
        super(createMenu(), currentPageNumber);
        super.addPageSelectors();
    }

    public CraftsMenu() {
        super(createMenu());
        super.addPageSelectors();
    }

    private static List<Inventory> createMenu() {
        List<Inventory> inventoryPages = new ArrayList<>();

        for(int i = 1; i <= 10; i++) {
            Inventory firstPage = Bukkit.createInventory(null, PAGE_SIZE, "Main crafts menu (" + i + ")"); // TODO
            inventoryPages.add(firstPage);
        }

        return inventoryPages;
    }

    @Override
    public void onAction(InventoryInteractEvent event) {
        event.setCancelled(true);
        if(event instanceof InventoryClickEvent) {
            Player player = (Player) event.getWhoClicked();
            InventoryClickEvent inventoryClickEvent = (InventoryClickEvent) event;
            ItemStack clickedItem = inventoryClickEvent.getCurrentItem();
            NBTManager nbtManager = new NBTManager();
            if(nbtManager.hasNBT(clickedItem, "next")) nextPage();
            if(nbtManager.hasNBT(clickedItem, "prev")) previousPage();
            openForPlayer(player);
        }
    }

}
plush coral
#

no

unreal river
# plush coral no

well, how can I use non-static methods from the superclass in the createMenu() method (static method)

#

or is it impossible too

#

or maybe there is an other way to do

plush coral
#

You cant call methods on non-initialized Object