Advertisement
broken-arrow

Untitled

Dec 11th, 2021
861
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.51 KB | None | 0 0
  1.  
  2. import brokenarrow.menu.lib.CheckDuplicatedItems;
  3. import brokenarrow.menu.lib.MenuButton;
  4. import brokenarrow.menu.lib.MenuHolder;
  5. import brokenarrow.menu.lib.MenuMetadataKey;
  6. import org.brokenarrow.storage.CustomContainersMainClass;
  7. import org.brokenarrow.storage.api.ContainerRegistryAPI;
  8. import org.brokenarrow.storage.util.GuiTempletsYaml;
  9. import org.brokenarrow.storage.util.ItemUtily;
  10. import org.brokenarrow.storage.util.YamlSettingsContainers;
  11. import org.bukkit.Location;
  12. import org.bukkit.Material;
  13. import org.bukkit.entity.Player;
  14. import org.bukkit.event.inventory.ClickType;
  15. import org.bukkit.event.inventory.InventoryCloseEvent;
  16. import org.bukkit.inventory.Inventory;
  17. import org.bukkit.inventory.ItemStack;
  18.  
  19. import java.util.ArrayList;
  20. import java.util.Arrays;
  21. import java.util.List;
  22. import java.util.Map;
  23. import java.util.stream.Collectors;
  24. import java.util.stream.IntStream;
  25.  
  26. public class CraftingFilterMenu extends MenuHolder {
  27.  
  28.     private final MenuButton infoButton;
  29.     private final MenuButton backButton;
  30.     private final MenuButton placeholders;
  31.     private final MenuButton fillSlots;
  32.     private final ContainerRegistryAPI registry = ContainerRegistryAPI.getInstance();
  33.  
  34.     public CraftingFilterMenu(Location location) {
  35.         super(CustomContainersMainClass.getInstance(), GuiTempletsYaml.getGuiSize("Crafting_Filtergui"));
  36.  
  37.         setTitle(GuiTempletsYaml.getGuiTitle("Crafting_Filtergui"));
  38.         setSlotsYouCanAddItems(true);
  39.         setFillSpace(IntStream.rangeClosed(0, 26).boxed().collect(Collectors.toList()));
  40.  
  41.         infoButton = new MenuButton() {
  42.             @Override
  43.             public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
  44.                 updateButtons();
  45.             }
  46.  
  47.             @Override
  48.             public ItemStack getItem() {
  49.                 return ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Crafting_Filtergui", "Info_Button", null),
  50.                         GuiTempletsYaml.getDisplayName("Crafting_Filtergui", "Info_Button"), GuiTempletsYaml.getLore("Crafting_Filtergui", "Info_Button"),
  51.                         "Guimatrial", "GuiPlaceholders");
  52.             }
  53.         };
  54.  
  55.         backButton = new MenuButton() {
  56.             @Override
  57.             public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
  58.                 player.closeInventory();
  59.             }
  60.  
  61.             @Override
  62.             public ItemStack getItem() {
  63.                 return ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Crafting_Filtergui", "Back_button", null),
  64.                         GuiTempletsYaml.getDisplayName("Crafting_Filtergui", "Back_button"), GuiTempletsYaml.getLore("Crafting_Filtergui", "Back_button"),
  65.                         "Guimatrial", "GuiPlaceholders");
  66.             }
  67.         };
  68.  
  69.         placeholders = new MenuButton() {
  70.             @Override
  71.             public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
  72.  
  73.             }
  74.  
  75.             @Override
  76.             public ItemStack getItem() {
  77.                 return ItemUtily.createItemStack(GuiTempletsYaml.getIcon("Crafting_Filtergui", "Placeholders", null),
  78.                         GuiTempletsYaml.getDisplayName("Crafting_Filtergui", "Placeholders"), GuiTempletsYaml.getLore("Crafting_Filtergui", "Placeholders"),
  79.                         "Guimatrial", "GuiPlaceholders");
  80.             }
  81.         };
  82.         fillSlots = new MenuButton() {
  83.             @Override
  84.             public void onClickInsideMenu(Player player, Inventory menu, ClickType click, ItemStack clickedItem, Object object) {
  85.  
  86.             }
  87.  
  88.             @Override
  89.             public ItemStack getItem() {
  90.                 return null;
  91.             }
  92.  
  93.             @Override
  94.             public ItemStack getItem(int slot, Object object) {
  95.                 if (convertToArray(location).size() > slot) {
  96.                     return convertToArray(location).get(slot);
  97.                 }
  98.                 return null;
  99.  
  100.             }
  101.         };
  102.  
  103.     }
  104.  
  105.     @Override
  106.     public ItemStack getFillItemsAt(int slot) {
  107.         return fillSlots.getItem(slot, null);
  108.     }
  109.  
  110.     @Override
  111.     public ItemStack getItemAt(int slot) {
  112.  
  113.         if (GuiTempletsYaml.getSlot("Crafting_Filtergui", "Info_Button").contains(slot))
  114.             return infoButton.getItem();
  115.         if (GuiTempletsYaml.getSlot("Crafting_Filtergui", "Back_button").contains(slot))
  116.             return backButton.getItem();
  117.         if (GuiTempletsYaml.getSlot("Crafting_Filtergui", "Placeholders").contains(slot))
  118.             return placeholders.getItem();
  119.  
  120.         return null;
  121.     }
  122.  
  123.     @Override
  124.     public void menuClose(InventoryCloseEvent event, Inventory inventory) {
  125.         Player player = (Player) event.getPlayer();
  126.         if (player.hasMetadata(MenuMetadataKey.MENU_OPEN_LOCATION.name())) {
  127.             Object object = player.getMetadata(MenuMetadataKey.MENU_OPEN_LOCATION.name()).get(0).value();
  128.             if (object instanceof Location) {
  129.                 Location location = (Location) object;
  130.                 List<String> blacklistedItems = YamlSettingsContainers.getBlacklistedItems(ContainerRegistryAPI.getInstance().getContainerFileName(location), ContainerRegistryAPI.getInstance().getCurrentUpdate(location));
  131.                 Map<Integer, ItemStack> map = new CheckDuplicatedItems(blacklistedItems).getItemsExceptBottomBar(inventory, player);
  132.  
  133.                 registry.setFiltreritems(location, map.values().toArray(new ItemStack[]{}));
  134.                 if (getAmountOfViwers() <= 0) {
  135.                     updateButtons();
  136.                     for (int i = 0; i < inventory.getSize(); i++) {
  137.                         if (getFillSpace().contains(i))
  138.                             inventory.setItem(i, map.get(i));
  139.                     }
  140.                 }
  141.             }
  142.         }
  143.  
  144.     }
  145.  
  146.     public List<ItemStack> convertToArray(Location location) {
  147.         if (registry.getFiltreritems(location) != null && registry.getFiltreritems(location).length > 0 && !(registry.getFiltreritems(location)[0].getType() == Material.AIR))
  148.             return Arrays.stream(registry.getFiltreritems(location)).collect(Collectors.toList());
  149.         else
  150.             //MenuCache.getInstance().removeMenuChached(location);
  151.             return new ArrayList<>();
  152.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement