Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package org.broken.cheststorage.menus;
- import org.broken.cheststorage.ChestStorage;
- import org.broken.cheststorage.NMS.UpdateTittleContainers;
- import org.broken.cheststorage.Settings.MainConfig;
- import org.broken.cheststorage.Settings.MainSettings;
- import org.broken.cheststorage.api.ContainerRegistryAPI;
- import org.broken.cheststorage.cache.PreferenceSettingsRegistery;
- import org.broken.cheststorage.util.GuiTempletsYaml;
- import org.broken.cheststorage.util.ItemUtily;
- import org.broken.cheststorage.util.MetadataEnumsForGui;
- import org.broken.cheststorage.util.hologram.Holograms;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.entity.Player;
- import org.bukkit.event.inventory.ClickType;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.event.inventory.InventoryCloseEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.metadata.FixedMetadataValue;
- import org.mineacademy.fo.Common;
- import org.mineacademy.fo.PlayerUtil;
- import org.mineacademy.fo.remain.CompMetadata;
- import java.lang.reflect.Field;
- import java.util.*;
- public class SettingsForMainGuiMenu extends MenuHolder {
- private Inventory[] inventories;
- private Inventory inventory;
- PreferenceSettingsRegistery preferenceRegistery = PreferenceSettingsRegistery.getInstance();
- //@Getter
- //private static final SettingsForMainGuiMenu instance = new SettingsForMainGuiMenu();
- private final Map<Integer, ItemStack> addedButtons = new HashMap<>();
- private int pageNumber = 0;
- private List<Integer> fillSpace;
- private int itemsPerPage;
- private Player player;
- private final List<helpclass> buttons = new ArrayList<>();
- private final helpclass placeholder;
- private final helpclass placeholder1;
- private final helpclass removeArmorstands;
- private final helpclass suctionBorderPlaceContainer;
- private final helpclass timerWhenLinkingModeOnOff;
- private final helpclass effectsOnContainers;
- private final helpclass showEffectsWhenCrafItems;
- private final helpclass showEffectsWhenSellItems;
- private final helpclass soundEffectsWhenCrafItems;
- private final helpclass soundEffectsWhenSellItems;
- private final helpclass soundEffectsWhenOpenClose;
- private final helpclass soundEffectsWhenContainerPickUpItems;
- private final helpclass displayPlayerNameOnHolo;
- private final helpclass effectsOnContainersWhenPlace;
- private final helpclass soundEffectsWhenPlaceContainer;
- private final helpclass backButtom;
- private final helpclass previousArrow;
- private final helpclass forwardArrow;
- public SettingsForMainGuiMenu(Location location, Player player) {
- super(location, player);
- String pluginName = ChestStorage.getInstance().getName().toLowerCase();
- placeholder = new helpclass() {
- @Override
- public void onClickedInMenu(Player player, Inventory menu, ClickType click) {
- System.out.println("testings " + player);
- }
- @Override
- public ItemStack getItem() {
- return ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Settings_Menu", "Placeholders", null), GuiTempletsYaml.getDisplayName("Settings_Menu", "Placeholders"), null);
- }
- };
- placeholder1 = new helpclass() {
- @Override
- public void onClickedInMenu(Player player, Inventory menu, ClickType click) {
- }
- @Override
- public ItemStack getItem() {
- return ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Settings_Menu", "Placeholders", null), GuiTempletsYaml.getDisplayName("Settings_Menu", "Placeholders"), null);
- }
- };
- for (Field field : SettingsForMainGuiMenu.class.getDeclaredFields()) {
- field.setAccessible(true);
- if (SettingsForMainGuiMenu.helpclass.class.isAssignableFrom(field.getType())) {
- try {
- helpclass fielddata = (helpclass) field.get(this);
- buttons.add(fielddata);
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- }
- }
- }
- private void updateInventory() {
- int requiredPages = 2;
- int slotIndex = 0;
- for (int i = 0; i < requiredPages; i++) {
- for (int itemPos : this.fillSpace) {
- ItemStack result = setItemsAt(slotIndex);
- slotIndex++;
- if (result == null) continue;
- this.inventories[i].setItem(itemPos, result);
- this.addedButtons.put(i * inventories[i].getSize() + itemPos, result);
- }
- }
- }
- private int getpageNumber() {
- return this.pageNumber;
- }
- public void setPageNumber(int pageNumber) {
- this.pageNumber = pageNumber;
- }
- private void setData() {
- this.itemsPerPage = GuiTempletsYaml.getFillSpace("Settings_Menu").size();
- this.fillSpace = GuiTempletsYaml.getFillSpace("Settings_Menu");
- }
- @Override
- public void generateInventories(List<UUID> ListOfObjectToAdd, String menuName) {
- int requiredPages = Math.max((int) Math.ceil((double) (!buttons.isEmpty() ? ((buttons.size() - 5) + GuiTempletsYaml.getMaxAmountOfItems(menuName)) : GuiTempletsYaml.getGuiSize(menuName)) / this.itemsPerPage), 1);
- //We need more pages if statically positioned players you add are placed at a higher page index an one page can hold.
- this.inventories = new Inventory[requiredPages];
- int slotIndex = 0;
- for (int i = 0; i < requiredPages; i++) {
- this.inventories[i] = createInventory(menuName);
- for (int itemPos : this.fillSpace) {
- ItemStack result = setItemsAt(slotIndex);
- slotIndex++;
- if (result == null) continue;
- this.inventories[i].setItem(itemPos, result);
- this.addedButtons.put(i * inventories[i].getSize() + itemPos, result);
- }
- }
- if (pageNumber >= this.inventories.length) {
- pageNumber = this.inventories.length - 1;
- }
- }
- @Override
- protected void setItemsInSlot(int slot) {
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Placeholders").contains(slot))
- inventory.setItem(slot, placeholder.getItem());
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Placeholders1").contains(slot))
- inventory.setItem(slot, placeholder1.getItem());
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Back_button").contains(slot))
- inventory.setItem(slot, backButtom.getItem());
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Previous_button").contains(slot))
- inventory.setItem(slot, previousArrow.getItem());
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Forward_button").contains(slot)) {
- inventory.setItem(slot, forwardArrow.getItem());
- }
- }
- protected ItemStack setItemsAt(int slot) {
- /*if (GuiTempletsYaml.getSlot("Settings_Menu", "Placeholders").contains(slot))
- return placeholder.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Placeholders1").contains(slot))
- return placeholder1.getItem();*/
- if (GuiTempletsYaml.getSlot("Settings_Menu", "ShowEffectsWhen_CrafItems_Button").contains(slot))
- return showEffectsWhenCrafItems.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "ShowEffectsWhen_SellItems_Button").contains(slot))
- return showEffectsWhenSellItems.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "SoundEffectsWhen_CrafItems_Button").contains(slot))
- return soundEffectsWhenCrafItems.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "SoundEffectsWhen_SellItems_Button").contains(slot))
- return soundEffectsWhenSellItems.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "SoundEffectsWhen_OpenClose_Button").contains(slot))
- return soundEffectsWhenOpenClose.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "WhenContainerPickUpItems_button").contains(slot))
- return soundEffectsWhenContainerPickUpItems.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "DisplayPlayer_NameOnHolo_Button").contains(slot))
- return displayPlayerNameOnHolo.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Suction_Border").contains(slot))
- return suctionBorderPlaceContainer.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Armorstands_button").contains(slot))
- return removeArmorstands.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "EffectsContainer_button").contains(slot))
- return effectsOnContainers.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Timer_Setting_button").contains(slot))
- return timerWhenLinkingModeOnOff.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "Effect_When_Place_button").contains(slot))
- return effectsOnContainersWhenPlace.getItem();
- if (GuiTempletsYaml.getSlot("Settings_Menu", "SoundEffectsWhen_PlaceContainer_Button").contains(slot))
- return soundEffectsWhenPlaceContainer.getItem();
- return null;
- }
- @Override
- public void clickedMenu(InventoryClickEvent event, ItemStack clicked) {
- if (!buttons.isEmpty()) {
- int clickedSlot = event.getSlot();
- int clickedPos = this.pageNumber * getMenuForPlayers().getSize() + clickedSlot;
- for (helpclass entitys : buttons)
- if (clicked != null && clicked.getType() != Material.AIR && entitys.getItem().isSimilar(clicked)) {
- if (addedButtons.containsKey(clickedPos) && addedButtons.get(clickedPos).isSimilar(clicked) || (clicked.hasItemMeta() && CompMetadata.hasMetadata(clicked, "Settings_Menu_Items")))
- entitys.onClickedInMenu((Player) event.getWhoClicked(), inventory, event.getClick());
- }
- event.setCancelled(true);
- }
- event.setCancelled(true);
- }
- public Inventory createInventory(String menuName) {
- inventory = Bukkit.createInventory(null, GuiTempletsYaml.getGuiSize(menuName));
- setItems();
- return inventory;
- }
- @Override
- public Inventory getMenuForPlayers() {
- if (this.inventories != null)
- return this.inventories[this.pageNumber];
- return null;
- }
- @Override
- public void onMenuClose(InventoryCloseEvent event) {
- player.removeMetadata(MetadataEnumsForGui.INVENTORY_SETTINGS_FOR_GUIMENU.toString(), MetadataEnumsForGui.INVENTORY_SETTINGS_FOR_GUIMENU.getPlugin());
- //inventories = null;
- }
- @Override
- public void onMenuOpen(Player player, Location location) {
- setItems();
- setData();
- this.player = player;
- generateInventories(new ArrayList<>(), "Settings_Menu");
- player.openInventory(getMenuForPlayers());
- PlayerUtil.updateInventoryTitle(player, "testings ");
- }
- @Override
- protected void setMenuInCache(Player player) {
- if (inventory == null)
- this.inventory = Bukkit.createInventory(null, GuiTempletsYaml.getGuiSize("WhiteBlacklist_Filtergui"));
- Common.runLater(10, () -> player.setMetadata(MetadataEnumsForGui.INVENTORY_SETTINGS_FOR_GUIMENU.toString(), new FixedMetadataValue(MetadataEnumsForGui.INVENTORY_SETTINGS_FOR_GUIMENU.getPlugin(), MetadataEnumsForGui.INVENTORY_SETTINGS_FOR_GUIMENU.getMetadataKey())));
- //whiteBlacklistFilterGui.override(player.getUniqueId(), inventory);
- }
- @Override
- protected void setItems() {
- for (int i = 0; i < this.inventory.getSize(); i++) {
- setItemsInSlot(i);
- }
- }
- public Player getViewer() {
- return this.player;
- }
- @Override
- public void whenBlockBreak() {
- }
- public static abstract class helpclass {
- public abstract void onClickedInMenu(Player player, Inventory menu, ClickType click);
- public abstract ItemStack getItem();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement