Advertisement
broken-arrow

Untitled

Jun 24th, 2021
497
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.66 KB | None | 0 0
  1. import org.broken.cheststorage.data.ChestRegistry;
  2. import org.broken.cheststorage.util.MetadataEnumsForGui;
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.GameMode;
  5. import org.bukkit.Location;
  6. import org.bukkit.Material;
  7. import org.bukkit.entity.HumanEntity;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.event.inventory.InventoryClickEvent;
  10. import org.bukkit.event.inventory.InventoryCloseEvent;
  11. import org.bukkit.event.inventory.InventoryType;
  12. import org.bukkit.inventory.Inventory;
  13. import org.bukkit.inventory.ItemStack;
  14. import org.bukkit.inventory.meta.ItemMeta;
  15. import org.bukkit.metadata.FixedMetadataValue;
  16. import org.mineacademy.fo.Common;
  17. import org.mineacademy.fo.collection.StrictMap;
  18. import org.mineacademy.fo.remain.CompMaterial;
  19. import org.mineacademy.fo.remain.CompMetadata;
  20.  
  21. import java.util.*;
  22.  
  23. public class WhiteBlacklistFilterGui {
  24.  
  25.     String DisplayName = "§3Set items you whant to craft";
  26.     private final StrictMap<UUID, Inventory> whiteBlacklistFilterGui = new StrictMap<>();
  27.  
  28.     public void createGuiFiterCrafting(Player player, Location location) {
  29.         ChestRegistry registry = ChestRegistry.getInstance();
  30.         createWhiteBlacklistFilterGui(player);
  31.         Inventory inventories = getWhiteBlacklistFilterGui(player);
  32.  
  33.         for (int i = 0; i < inventories.getSize(); i++) {
  34.  
  35.             if (i >= 27 && i <= 35)
  36.                 inventories.setItem(i, setPlacholders());
  37.             if (i == 29)
  38.                 inventories.setItem(i, setDenyButton());
  39.             if (i == 33)
  40.                 inventories.setItem(i, setAcceptButton(location));
  41.  
  42.         }
  43.         player.openInventory(getWhiteBlacklistFilterGui(player));
  44.         ItemStack[] items = registry.getFiltreritems(location);
  45.         System.out.println(Arrays.toString(items));
  46.         if (items != null)
  47.             for (int i = 0; i < items.length; i++) {
  48.                 ItemStack itemstacks = items[i];
  49.                 if (itemstacks != null) {
  50.                     ItemStack setItem = new ItemStack(itemstacks.getType(), 1);
  51.                     inventories.setItem(i, setItem);
  52.  
  53.                 }
  54.             }
  55.  
  56.     }
  57.  
  58.     public void guiLogic(InventoryClickEvent event, ItemStack clicked) {
  59.  
  60.         if (clicked != null && event.getSlotType() != InventoryType.SlotType.OUTSIDE) {
  61.             Material clickedItem = clicked.getType();
  62.  
  63.             if (CompMetadata.getMetadata(clicked, "Guimatrial") != null) {
  64.  
  65.  
  66.                 if (clickedItem == CompMaterial.RED_STAINED_GLASS_PANE.getMaterial() && CompMetadata.getMetadata(clicked, "Guimatrial").equals("GuiPlaceholderes"))
  67.                     event.setCancelled(true);
  68.  
  69.                 if (clickedItem == CompMaterial.GREEN_STAINED_GLASS_PANE.getMaterial() && CompMetadata.getMetadata(clicked, "Guimatrial").equals("GuiPlaceholderes"))
  70.                     event.setCancelled(true);
  71.  
  72.                 if (clickedItem == CompMaterial.GRAY_STAINED_GLASS_PANE.getMaterial() && CompMetadata.getMetadata(clicked, "Guimatrial").equals("GuiPlaceholderes"))
  73.                     event.setCancelled(true);
  74.  
  75.             }
  76.         }
  77.     }
  78.  
  79.  
  80.     public void onMenuClose(final Player player, final Inventory inv, InventoryCloseEvent event, Location location) {
  81.         ChestRegistry registry = ChestRegistry.getInstance();
  82.         Map<Integer, ItemStack> itemStackMap = new HashMap<>();
  83.         Map<Integer, ItemStack> map = getItemsExceptBottomBar(inv, player);
  84.  
  85.         int conter = 0;
  86.  
  87.         Set<ItemStack> set = new HashSet<>();
  88.         List<ItemStack> list = new ArrayList<>();
  89.  
  90.         for (final Map.Entry<Integer, ItemStack> entitys : map.entrySet()) {
  91.  
  92.             if (entitys.getValue() != null)
  93.                 if (!set.add(entitys.getValue())) {
  94.                     list.add(entitys.getValue());
  95.  
  96.                 } else {
  97.                     itemStackMap.put(entitys.getKey(), entitys.getValue());
  98.                 }
  99.  
  100.         }
  101.  
  102.         for (Map.Entry<Integer, ItemStack> entitys : map.entrySet()) {
  103.  
  104.             if (entitys.getValue() != null && list.contains(entitys.getValue())) {
  105.                 conter++;
  106.                 if (conter > 1) {
  107.                     HashMap<Integer, ItemStack> ifInventorFull = player.getInventory().addItem(new ItemStack(entitys.getValue().getType(), entitys.getValue().getAmount()));
  108.  
  109.  
  110.                     if (ifInventorFull.containsKey(entitys.getValue()) && player.getLocation().getWorld() != null)
  111.                         player.getLocation().getWorld().dropItemNaturally(player.getLocation(), ifInventorFull.get(entitys.getValue()));
  112.                 }
  113.                 if (conter == list.size())
  114.                     Common.tell(player, "&6&lYou can´´t add same &3" + entitys.getValue().getType() + " &4" + conter + "&6&l times. You get back the items.");
  115.             }
  116.         }
  117.         registry.setFiltreritems(location, itemStackMap.values().toArray(new ItemStack[0]));
  118.     }
  119.  
  120.  
  121.     private Map<Integer, ItemStack> getItemsExceptBottomBar(final Inventory inv, Player player) {
  122.         final Map<Integer, ItemStack> items = new HashMap<>();
  123.  
  124.         for (int i = 0; i < inv.getSize() - 9; i++) {
  125.             final ItemStack item = inv.getItem(i);
  126.  
  127.             if (item != null && item.getAmount() > 1) {
  128.                 HashMap<Integer, ItemStack> ifInventorFull = player.getInventory().addItem(new ItemStack(item.getType(), item.getAmount() - 1));
  129.                 if (ifInventorFull.containsKey(item) && player.getLocation().getWorld() != null)
  130.                     player.getLocation().getWorld().dropItemNaturally(player.getLocation(), ifInventorFull.get(item));
  131.                 Common.tell(player, "&6&lYou cant add more an one &3" + item.getType() + "&6&l You has added &4" + item.getAmount() + "&6&l items. You get back &4" + (item.getAmount() - 1) + "&6.");
  132.             }
  133.  
  134.             items.put(i, item != null && !CompMaterial.isAir(item.getType()) ? new ItemStack(item.getType(), 1) : null);
  135.         }
  136.  
  137.         return items;
  138.     }
  139.  
  140.     private ItemStack setDenyButton() {
  141.         String displayName = "§6Close the gui";
  142.         ItemStack denyButton = CompMaterial.RED_STAINED_GLASS_PANE.toItem();
  143.         denyButton = CompMetadata.setMetadata(denyButton, "Guimatrial", "GuiPlaceholderes");
  144.         ItemMeta denyMeta = denyButton.getItemMeta();
  145.         denyMeta.setDisplayName(displayName);
  146.         denyButton.setItemMeta(denyMeta);
  147.         return denyButton;
  148.     }
  149.  
  150.     private ItemStack setPlacholders() {
  151.         String displayName = "§6";
  152.         ItemStack denyButton = CompMaterial.GRAY_STAINED_GLASS_PANE.toItem();
  153.         denyButton = CompMetadata.setMetadata(denyButton, "Guimatrial", "GuiPlaceholderes");
  154.         ItemMeta denyMeta = denyButton.getItemMeta();
  155.         denyMeta.setDisplayName(displayName);
  156.         denyButton.setItemMeta(denyMeta);
  157.         return denyButton;
  158.     }
  159.  
  160.     private ItemStack setAcceptButton(Location location) {
  161.         String displayName = "§3Uppgrade with more pages";
  162.  
  163.         ItemStack acceptButton = CompMaterial.GREEN_STAINED_GLASS_PANE.toItem();
  164.         acceptButton = CompMetadata.setMetadata(acceptButton, "Guimatrial", "GuiPlaceholderes");
  165.         ItemMeta acceptMeta = acceptButton.getItemMeta();
  166.         acceptMeta.setDisplayName(displayName);
  167.         acceptButton.setItemMeta(acceptMeta);
  168.         return acceptButton;
  169.     }
  170.  
  171.     private void createWhiteBlacklistFilterGui(Player player) {
  172.         MetadataEnumsForGui metadataGui = MetadataEnumsForGui.INVENTORY_FILTERGUI;
  173.  
  174.         Inventory inventory = Bukkit.createInventory(null, 9 * 4, DisplayName);
  175.         Common.runLater(2, () -> player.setMetadata(metadataGui.toString(), new FixedMetadataValue(metadataGui.getPlugin(), metadataGui.getMetadataKey())));
  176.         whiteBlacklistFilterGui.override(player.getUniqueId(), inventory);
  177.     }
  178.  
  179.     public Inventory getWhiteBlacklistFilterGui(Player player) {
  180.         return whiteBlacklistFilterGui.get(player.getUniqueId());
  181.     }
  182.  
  183.     public boolean PlayerViwePageEmpty(Player player) {
  184.         return whiteBlacklistFilterGui.contains(player.getUniqueId());
  185.     }
  186.  
  187.     public void removeCraftingGuiForPlayere(Player player, InventoryCloseEvent event) {
  188.         MetadataEnumsForGui metadataGui = MetadataEnumsForGui.INVENTORY_FILTERGUI;
  189.         System.out.println("close");
  190.         whiteBlacklistFilterGui.removeWeak(player.getUniqueId());
  191.         player.removeMetadata(metadataGui.toString(), metadataGui.getPlugin());
  192.  
  193.     }
  194.  
  195.     public int getViewersAmount(List<HumanEntity> viewersList) {
  196.         int viewers = 0;
  197.  
  198.         for (HumanEntity viewer : viewersList) {
  199.             if (viewer.getGameMode() != GameMode.SPECTATOR)
  200.                 viewers++;
  201.         }
  202.         return viewers;
  203.     }
  204.  
  205. }
  206.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement