Skip to content

Menu examples

broken1arrow edited this page Apr 28, 2023 · 11 revisions

Make simple onepage menu

publicclassMainMenuextendsMenuHolder {
privatefinalMenuButtonexamplebutton;
privatefinalMenuButtonexamplebutton1;
privatefinalMenuButtonexamplebutton2;
publicMainMenu() {
super();
setMenuSize(45);
setTitle("menu titel");
examplebutton = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
//stuff you want to execute here, when clicking on item.
}
@OverridepublicItemStackgetItem() {
//Item you want this button return.returnnull;
}
};
examplebutton1 = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
//stuff you want to execute here when clicking on item.
}
@OverridepublicItemStackgetItem() {
//Item you want this button return.returnnull;
}
};
examplebutton2 = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
//stuff you want to execute here, when clicking on item.
}
@OverridepublicItemStackgetItem() {
//Item you want this button return.returnnull;
}
};
}
@OverridepublicMenuButtongetButtonAt(intslot) {
if (slot == 1)
returnexamplebutton;
if (slot == 5)
returnexamplebutton1;
if (slot == 7)
returnexamplebutton2;
returnnull;
}
}

Make several pages menu

publicclassPagedMenuextendsMenuHolder {
privatefinalMenuButtonremoveAllPlayers;
privatefinalMenuButtonaddPlayers;
privatefinalMenuButtonbackButton;
privatefinalMenuButtonforward;
privatefinalMenuButtonprevious;
privatefinalMenuButtonlistOfFillObjects;
privatefinalMenuButtonpreviousAndForward;
publicPagedMenu(Playerplayer) {
super(newArrayList<>(Bukkit.getOnlinePlayers()));
setMenuSize(45);
setTitle("players in party");
// Witch slot you want to fill with items in.setFillSpace("0-35");
// add this if you want players add or remove items from slots you set with setFillSpace().//setSlotsYouCanAddItems();removeAllPlayers = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
// do something here
}
@OverridepublicItemStackgetItem() {
returnnull;
}
};
addPlayers = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
// do something here//Two options to update, either all buttons or only this button.updateButton(this);
updateButtons();
}
@OverridepublicItemStackgetItem() {
returnnull;
}
};
// Open menu befor this.backButton = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
//example code to run.//new MainGuiMenu().menuOpen(player);
}
@OverridepublicItemStackgetItem() {
returnnull;
}
};
previousAndForward = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
if (click.isLeftClick()) {
previousPage();
} else {
nextPage();
}
}
@OverridepublicItemStackgetItem() {
returnnull;
}
};
previous = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
if (click.isLeftClick()) {
previousPage();
}
}
@OverridepublicItemStackgetItem() {
returnnull;
}
};
forward = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
if (click.isLeftClick()) {
nextPage();
}
}
@OverridepublicItemStackgetItem() {
returnnull;
}
};
listOfFillObjects = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
if (objectinstanceofUUID) {
// your code here
}
}
@OverridepublicItemStackgetItem() {
returnnull;
}
@OverridepublicItemStackgetItem(Objectobject) {
if (objectinstanceofPlayer) {
returnCreateItemStack.of(SkullCreator.itemFromUuid((( Player) object).getUniqueId()),
String.valueOf(object),newArrayList<>()).makeItemStack();
}
returnnull;
}
};
}
@OverridepublicMenuButtongetFillButtonAt(Objecto) {
returnlistOfFillObjects;
}
@OverridepublicMenuButtongetButtonAt(intslot) {
if (slot == 36)
returnremoveAllPlayers;
if (slot == 37)
returnaddPlayers;
if (slot == 38)
returnforward;
if (slot == 35)
returnprevious;
if (slot == 44)
returnbackButton;
returnnull;
}
}

Make menu with buttons some update when have it open.

Option to update buttons while the menu is open, works on both with fill buttons and without. This example demonstrate in with fill buttons menu, but it is works same way without fill buttons is used.

publicclassMenuUpdateTimeextendsMenuHolder {
privatefinalMenuButtonexamplebutton;
privatefinalMenuButtonexamplebutton1;
privatefinalMenuButtonexampleFillSlots;
privatefinalMenuButtonforward;
privatefinalMenuButtonprevious;
publicMenuUpdateTime() {
super(newArrayList<>(Bukkit.getOnlinePlayers()));
// Witch slot you want to fill with items in.setFillSpace("9-27");
setMenuSize(45);
setTitle("menu titel");
setUpdateTime(5);
examplebutton = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
//stuff you want to execute here, when clicking on item.
}
@OverridepublicItemStackgetItem() {
//Item you want this button return.returnnewItemStack(Material.BLAZE_POWDER);
}
};
examplebutton1 = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
//stuff you want to execute here when clicking on item.
}
@OverridepublicItemStackgetItem() {
//Item you want this button return.returnnull;
}
};
exampleFillSlots = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(Playerplayer, Inventorymenu, ClickTypeclick, ItemStackclickedItem, Objectobject) {
}
@OverridepubliclongsetUpdateTime() {
return2;
}
@OverridepublicbooleanshouldUpdateButtons() {
returntrue;
}
@OverridepublicItemStackgetItem(Objectobject) {
if (objectinstanceofPlayer) {
LocalDateTimemyObj = LocalDateTime.now();
ItemStackitemStack = CreateItemStack.of(SkullCreator.itemFromUuid(((Player) object).getUniqueId()),
String.valueOf(object), newArrayList<>()).makeItemStack();
DateTimeFormattermyFormatObj = DateTimeFormatter.ofPattern("HH:mm:ss");
StringformattedDate = myObj.format(myFormatObj);
ItemMetameta = itemStack.getItemMeta();
meta.setDisplayName(object + " " + formattedDate);
itemStack.setItemMeta(meta);
returnitemStack;
}
returnnull;
}
@OverridepublicItemStackgetItem() {
returnnull;
}
};
previous = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(finalPlayerplayer, finalInventorymenu, finalClickTypeclick, finalItemStackclickedItem, finalObjectobject) {
if (click.isLeftClick()) {
previousPage();
}
}
@OverridepublicItemStackgetItem() {
returnnewItemStack(Material.ARROW);
}
};
forward = newMenuButton() {
@OverridepublicvoidonClickInsideMenu(finalPlayerplayer, finalInventorymenu, finalClickTypeclick, finalItemStackclickedItem, finalObjectobject) {
if (click.isLeftClick()) {
nextPage();
}
}
@OverridepublicItemStackgetItem() {
returnnewItemStack(Material.ARROW);
}
};
}
@OverridepublicMenuButtongetFillButtonAt(Objecto) {
returnexampleFillSlots;
}
@OverridepublicMenuButtongetButtonAt(intslot) {
if (slot == 1)
returnexamplebutton;
if (slot == 5)
returnexamplebutton1;
if (slot == 42)
returnforward;
if (slot == 38)
returnprevious;
returnnull;
}
}

Clone this wiki locally