Advertisement
broken-arrow

Untitled

Oct 7th, 2021
1,093
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 11.00 KB | None | 0 0
  1. package org.broken.cheststorage.menus;
  2.  
  3. import org.broken.cheststorage.ChestStorage;
  4. import org.broken.cheststorage.NMS.UpdateTittleContainers;
  5. import org.broken.cheststorage.Settings.MainConfig;
  6. import org.broken.cheststorage.Settings.MainSettings;
  7. import org.broken.cheststorage.api.ContainerRegistryAPI;
  8. import org.broken.cheststorage.cache.PreferenceSettingsRegistery;
  9. import org.broken.cheststorage.util.GuiTempletsYaml;
  10. import org.broken.cheststorage.util.ItemUtily;
  11. import org.broken.cheststorage.util.MetadataEnumsForGui;
  12. import org.broken.cheststorage.util.hologram.Holograms;
  13. import org.bukkit.Bukkit;
  14. import org.bukkit.Location;
  15. import org.bukkit.Material;
  16. import org.bukkit.entity.Player;
  17. import org.bukkit.event.inventory.ClickType;
  18. import org.bukkit.event.inventory.InventoryClickEvent;
  19. import org.bukkit.event.inventory.InventoryCloseEvent;
  20. import org.bukkit.inventory.Inventory;
  21. import org.bukkit.inventory.ItemStack;
  22. import org.bukkit.metadata.FixedMetadataValue;
  23. import org.mineacademy.fo.Common;
  24. import org.mineacademy.fo.PlayerUtil;
  25. import org.mineacademy.fo.remain.CompMetadata;
  26.  
  27. import java.lang.reflect.Field;
  28. import java.util.*;
  29.  
  30. public class SettingsForMainGuiMenu extends MenuHolder {
  31.  
  32.     private Inventory[] inventories;
  33.     private Inventory inventory;
  34.     PreferenceSettingsRegistery preferenceRegistery = PreferenceSettingsRegistery.getInstance();
  35.     //@Getter
  36.     //private static final SettingsForMainGuiMenu instance = new SettingsForMainGuiMenu();
  37.     private final Map<Integer, ItemStack> addedButtons = new HashMap<>();
  38.     private int pageNumber = 0;
  39.     private List<Integer> fillSpace;
  40.     private int itemsPerPage;
  41.     private Player player;
  42.  
  43.  
  44.     private final List<helpclass> buttons = new ArrayList<>();
  45.     private final helpclass placeholder;
  46.     private final helpclass placeholder1;
  47.     private final helpclass removeArmorstands;
  48.     private final helpclass suctionBorderPlaceContainer;
  49.     private final helpclass timerWhenLinkingModeOnOff;
  50.     private final helpclass effectsOnContainers;
  51.     private final helpclass showEffectsWhenCrafItems;
  52.     private final helpclass showEffectsWhenSellItems;
  53.     private final helpclass soundEffectsWhenCrafItems;
  54.     private final helpclass soundEffectsWhenSellItems;
  55.     private final helpclass soundEffectsWhenOpenClose;
  56.     private final helpclass soundEffectsWhenContainerPickUpItems;
  57.     private final helpclass displayPlayerNameOnHolo;
  58.     private final helpclass effectsOnContainersWhenPlace;
  59.     private final helpclass soundEffectsWhenPlaceContainer;
  60.     private final helpclass backButtom;
  61.     private final helpclass previousArrow;
  62.     private final helpclass forwardArrow;
  63.  
  64.  
  65.     public SettingsForMainGuiMenu(Location location, Player player) {
  66.         super(location, player);
  67.         String pluginName = ChestStorage.getInstance().getName().toLowerCase();
  68.  
  69.         placeholder = new helpclass() {
  70.             @Override
  71.             public void onClickedInMenu(Player player, Inventory menu, ClickType click) {
  72.                 System.out.println("testings " + player);
  73.             }
  74.  
  75.             @Override
  76.             public ItemStack getItem() {
  77.                 return ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Settings_Menu", "Placeholders", null), GuiTempletsYaml.getDisplayName("Settings_Menu", "Placeholders"), null);
  78.             }
  79.         };
  80.         placeholder1 = new helpclass() {
  81.             @Override
  82.             public void onClickedInMenu(Player player, Inventory menu, ClickType click) {
  83.             }
  84.  
  85.             @Override
  86.             public ItemStack getItem() {
  87.                 return ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Settings_Menu", "Placeholders", null), GuiTempletsYaml.getDisplayName("Settings_Menu", "Placeholders"), null);
  88.             }
  89.         };
  90.  
  91.         for (Field field : SettingsForMainGuiMenu.class.getDeclaredFields()) {
  92.             field.setAccessible(true);
  93.             if (SettingsForMainGuiMenu.helpclass.class.isAssignableFrom(field.getType())) {
  94.                 try {
  95.                     helpclass fielddata = (helpclass) field.get(this);
  96.                     buttons.add(fielddata);
  97.                 } catch (IllegalAccessException e) {
  98.                     e.printStackTrace();
  99.                 }
  100.  
  101.             }
  102.         }
  103.     }
  104.  
  105.     private void updateInventory() {
  106.         int requiredPages = 2;
  107.         int slotIndex = 0;
  108.         for (int i = 0; i < requiredPages; i++) {
  109.             for (int itemPos : this.fillSpace) {
  110.  
  111.                 ItemStack result = setItemsAt(slotIndex);
  112.                 slotIndex++;
  113.  
  114.                 if (result == null) continue;
  115.                 this.inventories[i].setItem(itemPos, result);
  116.                 this.addedButtons.put(i * inventories[i].getSize() + itemPos, result);
  117.  
  118.             }
  119.         }
  120.  
  121.  
  122.     }
  123.  
  124.     private int getpageNumber() {
  125.         return this.pageNumber;
  126.     }
  127.  
  128.     public void setPageNumber(int pageNumber) {
  129.         this.pageNumber = pageNumber;
  130.     }
  131.  
  132.     private void setData() {
  133.         this.itemsPerPage = GuiTempletsYaml.getFillSpace("Settings_Menu").size();
  134.         this.fillSpace = GuiTempletsYaml.getFillSpace("Settings_Menu");
  135.     }
  136.  
  137.     @Override
  138.     public void generateInventories(List<UUID> ListOfObjectToAdd, String menuName) {
  139.  
  140.         int requiredPages = Math.max((int) Math.ceil((double) (!buttons.isEmpty() ? ((buttons.size() - 5) + GuiTempletsYaml.getMaxAmountOfItems(menuName)) : GuiTempletsYaml.getGuiSize(menuName)) / this.itemsPerPage), 1);
  141.         //We need more pages if statically positioned players you add are placed at a higher page index an one page can hold.
  142.  
  143.         this.inventories = new Inventory[requiredPages];
  144.  
  145.         int slotIndex = 0;
  146.         for (int i = 0; i < requiredPages; i++) {
  147.             this.inventories[i] = createInventory(menuName);
  148.             for (int itemPos : this.fillSpace) {
  149.  
  150.                 ItemStack result = setItemsAt(slotIndex);
  151.                 slotIndex++;
  152.  
  153.                 if (result == null) continue;
  154.                 this.inventories[i].setItem(itemPos, result);
  155.                 this.addedButtons.put(i * inventories[i].getSize() + itemPos, result);
  156.  
  157.             }
  158.         }
  159.         if (pageNumber >= this.inventories.length) {
  160.             pageNumber = this.inventories.length - 1;
  161.         }
  162.     }
  163.  
  164.     @Override
  165.     protected void setItemsInSlot(int slot) {
  166.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Placeholders").contains(slot))
  167.             inventory.setItem(slot, placeholder.getItem());
  168.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Placeholders1").contains(slot))
  169.             inventory.setItem(slot, placeholder1.getItem());
  170.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Back_button").contains(slot))
  171.             inventory.setItem(slot, backButtom.getItem());
  172.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Previous_button").contains(slot))
  173.             inventory.setItem(slot, previousArrow.getItem());
  174.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Forward_button").contains(slot)) {
  175.             inventory.setItem(slot, forwardArrow.getItem());
  176.         }
  177.     }
  178.  
  179.     protected ItemStack setItemsAt(int slot) {
  180.  
  181.         /*if (GuiTempletsYaml.getSlot("Settings_Menu", "Placeholders").contains(slot))
  182.             return placeholder.getItem();
  183.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Placeholders1").contains(slot))
  184.             return placeholder1.getItem();*/
  185.         if (GuiTempletsYaml.getSlot("Settings_Menu", "ShowEffectsWhen_CrafItems_Button").contains(slot))
  186.             return showEffectsWhenCrafItems.getItem();
  187.         if (GuiTempletsYaml.getSlot("Settings_Menu", "ShowEffectsWhen_SellItems_Button").contains(slot))
  188.             return showEffectsWhenSellItems.getItem();
  189.         if (GuiTempletsYaml.getSlot("Settings_Menu", "SoundEffectsWhen_CrafItems_Button").contains(slot))
  190.             return soundEffectsWhenCrafItems.getItem();
  191.         if (GuiTempletsYaml.getSlot("Settings_Menu", "SoundEffectsWhen_SellItems_Button").contains(slot))
  192.             return soundEffectsWhenSellItems.getItem();
  193.         if (GuiTempletsYaml.getSlot("Settings_Menu", "SoundEffectsWhen_OpenClose_Button").contains(slot))
  194.             return soundEffectsWhenOpenClose.getItem();
  195.         if (GuiTempletsYaml.getSlot("Settings_Menu", "WhenContainerPickUpItems_button").contains(slot))
  196.             return soundEffectsWhenContainerPickUpItems.getItem();
  197.         if (GuiTempletsYaml.getSlot("Settings_Menu", "DisplayPlayer_NameOnHolo_Button").contains(slot))
  198.             return displayPlayerNameOnHolo.getItem();
  199.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Suction_Border").contains(slot))
  200.             return suctionBorderPlaceContainer.getItem();
  201.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Armorstands_button").contains(slot))
  202.             return removeArmorstands.getItem();
  203.         if (GuiTempletsYaml.getSlot("Settings_Menu", "EffectsContainer_button").contains(slot))
  204.             return effectsOnContainers.getItem();
  205.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Timer_Setting_button").contains(slot))
  206.             return timerWhenLinkingModeOnOff.getItem();
  207.         if (GuiTempletsYaml.getSlot("Settings_Menu", "Effect_When_Place_button").contains(slot))
  208.             return effectsOnContainersWhenPlace.getItem();
  209.         if (GuiTempletsYaml.getSlot("Settings_Menu", "SoundEffectsWhen_PlaceContainer_Button").contains(slot))
  210.             return soundEffectsWhenPlaceContainer.getItem();
  211.         return null;
  212.     }
  213.  
  214.     @Override
  215.     public void clickedMenu(InventoryClickEvent event, ItemStack clicked) {
  216.         if (!buttons.isEmpty()) {
  217.             int clickedSlot = event.getSlot();
  218.             int clickedPos = this.pageNumber * getMenuForPlayers().getSize() + clickedSlot;
  219.  
  220.             for (helpclass entitys : buttons)
  221.                 if (clicked != null && clicked.getType() != Material.AIR && entitys.getItem().isSimilar(clicked)) {
  222.                     if (addedButtons.containsKey(clickedPos) && addedButtons.get(clickedPos).isSimilar(clicked) || (clicked.hasItemMeta() && CompMetadata.hasMetadata(clicked, "Settings_Menu_Items")))
  223.                         entitys.onClickedInMenu((Player) event.getWhoClicked(), inventory, event.getClick());
  224.                 }
  225.             event.setCancelled(true);
  226.         }
  227.         event.setCancelled(true);
  228.     }
  229.  
  230.     public Inventory createInventory(String menuName) {
  231.  
  232.         inventory = Bukkit.createInventory(null, GuiTempletsYaml.getGuiSize(menuName));
  233.         setItems();
  234.  
  235.         return inventory;
  236.     }
  237.  
  238.     @Override
  239.     public Inventory getMenuForPlayers() {
  240.         if (this.inventories != null)
  241.             return this.inventories[this.pageNumber];
  242.         return null;
  243.     }
  244.  
  245.     @Override
  246.     public void onMenuClose(InventoryCloseEvent event) {
  247.         player.removeMetadata(MetadataEnumsForGui.INVENTORY_SETTINGS_FOR_GUIMENU.toString(), MetadataEnumsForGui.INVENTORY_SETTINGS_FOR_GUIMENU.getPlugin());
  248.         //inventories = null;
  249.     }
  250.  
  251.     @Override
  252.     public void onMenuOpen(Player player, Location location) {
  253.         setItems();
  254.         setData();
  255.         this.player = player;
  256.         generateInventories(new ArrayList<>(), "Settings_Menu");
  257.         player.openInventory(getMenuForPlayers());
  258.         PlayerUtil.updateInventoryTitle(player, "testings ");
  259.     }
  260.  
  261.     @Override
  262.     protected void setMenuInCache(Player player) {
  263.         if (inventory == null)
  264.             this.inventory = Bukkit.createInventory(null, GuiTempletsYaml.getGuiSize("WhiteBlacklist_Filtergui"));
  265.         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())));
  266.         //whiteBlacklistFilterGui.override(player.getUniqueId(), inventory);
  267.     }
  268.  
  269.     @Override
  270.     protected void setItems() {
  271.         for (int i = 0; i < this.inventory.getSize(); i++) {
  272.             setItemsInSlot(i);
  273.         }
  274.     }
  275.  
  276.     public Player getViewer() {
  277.         return this.player;
  278.     }
  279.  
  280.     @Override
  281.     public void whenBlockBreak() {
  282.  
  283.     }
  284.  
  285.     public static abstract class helpclass {
  286.  
  287.  
  288.         public abstract void onClickedInMenu(Player player, Inventory menu, ClickType click);
  289.  
  290.         public abstract ItemStack getItem();
  291.  
  292.  
  293.     }
  294.  
  295. }
  296.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement