-
Notifications
You must be signed in to change notification settings - Fork 2
Menu examples
broken1arrow edited this page Apr 28, 2023
·
11 revisions
public class MainMenu extends MenuHolder {
private final MenuButton examplebutton;
private final MenuButton examplebutton1;
private final MenuButton examplebutton2;
public MainMenu() {
super();
setMenuSize(45);
setTitle("menu titel");
examplebutton = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
//stuff you want to execute here, when clicking on item.
}
@Override
public ItemStack getItem() {
//Item you want this button return.
return null;
}
};
examplebutton1 = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
//stuff you want to execute here when clicking on item.
}
@Override
public ItemStack getItem() {
//Item you want this button return.
return null;
}
};
examplebutton2 = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
//stuff you want to execute here, when clicking on item.
}
@Override
public ItemStack getItem() {
//Item you want this button return.
return null;
}
};
}
@Override
public MenuButton getButtonAt(int slot) {
if (slot == 1)
return examplebutton;
if (slot == 5)
return examplebutton1;
if (slot == 7)
return examplebutton2;
return null;
}
}
public class PagedMenu extends MenuHolder {
private final MenuButton removeAllPlayers;
private final MenuButton addPlayers;
private final MenuButton backButton;
private final MenuButton forward;
private final MenuButton previous;
private final MenuButton listOfFillObjects;
private final MenuButton previousAndForward;
public PagedMenu(Player player) {
super(new ArrayList<>(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 = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
// do something here
}
@Override
public ItemStack getItem() {
return null;
}
};
addPlayers = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
// do something here
//Two options to update, either all buttons or only this button.
updateButton(this);
updateButtons();
}
@Override
public ItemStack getItem() {
return null;
}
};
// Open menu befor this.
backButton = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
//example code to run.
//new MainGuiMenu().menuOpen(player);
}
@Override
public ItemStack getItem() {
return null;
}
};
previousAndForward = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
if (click.isLeftClick()) {
previousPage();
} else {
nextPage();
}
}
@Override
public ItemStack getItem() {
return null;
}
};
previous = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
if (click.isLeftClick()) {
previousPage();
}
}
@Override
public ItemStack getItem() {
return null;
}
};
forward = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
if (click.isLeftClick()) {
nextPage();
}
}
@Override
public ItemStack getItem() {
return null;
}
};
listOfFillObjects = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
if (object instanceof UUID) {
// your code here
}
}
@Override
public ItemStack getItem() {
return null;
}
@Override
public ItemStack getItem(Object object) {
if (object instanceof Player) {
return CreateItemStack.of(SkullCreator.itemFromUuid((( Player) object).getUniqueId()),
String.valueOf(object),new ArrayList<>()).makeItemStack();
}
return null;
}
};
}
@Override
public MenuButton getFillButtonAt(Object o) {
return listOfFillObjects;
}
@Override
public MenuButton getButtonAt(int slot) {
if (slot == 36)
return removeAllPlayers;
if (slot == 37)
return addPlayers;
if (slot == 38)
return forward;
if (slot == 35)
return previous;
if (slot == 44)
return backButton;
return null;
}
}
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.
public class MenuUpdateTime extends MenuHolder {
private final MenuButton examplebutton;
private final MenuButton examplebutton1;
private final MenuButton exampleFillSlots;
private final MenuButton forward;
private final MenuButton previous;
public MenuUpdateTime() {
super(new ArrayList<>(Bukkit.getOnlinePlayers()));
// Witch slot you want to fill with items in.
setFillSpace("9-27");
setMenuSize(45);
setTitle("menu titel");
setUpdateTime(5);
examplebutton = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
//stuff you want to execute here, when clicking on item.
}
@Override
public ItemStack getItem() {
//Item you want this button return.
return new ItemStack(Material.BLAZE_POWDER);
}
};
examplebutton1 = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
//stuff you want to execute here when clicking on item.
}
@Override
public ItemStack getItem() {
//Item you want this button return.
return null;
}
};
exampleFillSlots = new MenuButton() {
@Override
public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
}
@Override
public long setUpdateTime() {
return 2;
}
@Override
public boolean shouldUpdateButtons() {
return true;
}
@Override
public ItemStack getItem(Object object) {
if (object instanceof Player) {
LocalDateTime myObj = LocalDateTime.now();
ItemStack itemStack = CreateItemStack.of(SkullCreator.itemFromUuid(((Player) object).getUniqueId()),
String.valueOf(object), new ArrayList<>()).makeItemStack();
DateTimeFormatter myFormatObj = DateTimeFormatter.ofPattern("HH:mm:ss");
String formattedDate = myObj.format(myFormatObj);
ItemMeta meta = itemStack.getItemMeta();
meta.setDisplayName(object + " " + formattedDate);
itemStack.setItemMeta(meta);
return itemStack;
}
return null;
}
@Override
public ItemStack getItem() {
return null;
}
};
previous = new MenuButton() {
@Override
public void onClickInsideMenu(final Player player, final Inventory menu, final ClickType click, final ItemStack clickedItem, final Object object) {
if (click.isLeftClick()) {
previousPage();
}
}
@Override
public ItemStack getItem() {
return new ItemStack(Material.ARROW);
}
};
forward = new MenuButton() {
@Override
public void onClickInsideMenu(final Player player, final Inventory menu, final ClickType click, final ItemStack clickedItem, final Object object) {
if (click.isLeftClick()) {
nextPage();
}
}
@Override
public ItemStack getItem() {
return new ItemStack(Material.ARROW);
}
};
}
@Override
public MenuButton getFillButtonAt(Object o) {
return exampleFillSlots;
}
@Override
public MenuButton getButtonAt(int slot) {
if (slot == 1)
return examplebutton;
if (slot == 5)
return examplebutton1;
if (slot == 42)
return forward;
if (slot == 38)
return previous;
return null;
}
}