broken-arrow

Untitled

Nov 27th, 2021
889
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package org.brokenarrow.storage.menus.redone;
  2.  
  3. import org.bukkit.Location;
  4. import org.bukkit.Material;
  5. import org.bukkit.entity.Player;
  6. import org.bukkit.event.inventory.InventoryClickEvent;
  7. import org.bukkit.event.inventory.InventoryCloseEvent;
  8. import org.bukkit.inventory.ItemStack;
  9. import org.bukkit.plugin.Plugin;
  10.  
  11. import java.util.ListIterator;
  12.  
  13. import static org.brokenarrow.storage.menus.redone.GetKeyDataFromCache.checkMap;
  14.  
  15. public class MenuUtiliListener {
  16.  
  17.     private final Plugin plugin;
  18.  
  19.     public MenuUtiliListener(Plugin plugin) {
  20.         this.plugin = plugin;
  21.     }
  22.  
  23.     private final MenuCache menuCache = MenuCache.getInstance();
  24.     private String playermetadata;
  25.  
  26.     public void onMenuClicking(InventoryClickEvent event) {
  27.         Player player = (Player) event.getWhoClicked();
  28.         Location location = null;
  29.         Object object = null;
  30.  
  31.         if (player.hasMetadata(playermetadata)) {
  32.             object = player.getMetadata(playermetadata);
  33.             if (object instanceof Location)
  34.                 location = (Location) object;
  35.         }
  36.         System.out.println("loc " + location);
  37.         MenuHolderTest menu = menuCache.getMenuInCache(checkMap(player, location, object));
  38.         System.out.println("menu " + menu.getMenu() + " " + event.getView().getTopInventory());
  39.         if (!event.getView().getTopInventory().equals(menu.getMenu())) return;
  40.  
  41.  
  42.         if (menu != null && !menu.getButtons().isEmpty()) {
  43.             ItemStack clickedItem = event.getCurrentItem();
  44.             int clickedSlot = event.getSlot();
  45.             int clickedPos = menu.getPageNumber() * menu.getMenu().getSize() + clickedSlot;
  46.             if (clickedItem == null || clickedItem.getType() == Material.AIR) return;
  47.             if (menu.isSlotsYouCanAddItems()) {
  48.                 if (menu.getFillSpace().contains(clickedPos))
  49.                     return;
  50.                 else
  51.                     event.setCancelled(true);
  52.             }
  53.             if (menu.isStartLoadMenuButtons()) {
  54.                 event.setCancelled(true);
  55.                 return;
  56.             }
  57.  
  58.             for (ListIterator<MenuButton> menuButtons = menu.getButtons().listIterator(); menuButtons.hasNext(); ) {
  59.                 MenuButton menuButton = menuButtons.next();
  60.                 Object objectData = menu.getObject() != null && !menu.getObject().equals("") ? menu.getObject() : clickedItem;
  61.  
  62.                 if (menuButton.getItem() != null && menuButton.getItem().isSimilar(clickedItem)) {
  63.                     if (menu.getAddedButtons().containsKey(clickedPos) && menu.getAddedButtons().get(clickedPos).isSimilar(clickedItem)) {
  64.                         menuButton.onClickInsideMenu(player, menu.getMenu(), event.getClick(), clickedItem, objectData);
  65.                         event.setCancelled(true);
  66.                         break;
  67.                     }
  68.                 }
  69.                 if (menu.getListOfFillItems() != null) {
  70.                     if (menuButton.getItem(objectData) != null && menuButton.getItem(objectData).isSimilar(clickedItem) && menu.getAddedButtons().containsKey(clickedPos) && menu.getAddedButtons().get(clickedPos).isSimilar(clickedItem)) {
  71.                         menuButton.onClickInsideMenu(player, menu.getMenu(), event.getClick(), clickedItem, objectData);
  72.                         event.setCancelled(true);
  73.                         break;
  74.                     }
  75.                 }
  76.  
  77.             }
  78.             if (!menu.isSlotsYouCanAddItems()) {
  79.                 event.setCancelled(true);
  80.             }
  81.         }
  82.     }
  83.  
  84.     public void onMenuClose(InventoryCloseEvent event) {
  85.         Player player = (Player) event.getPlayer();
  86.         if (player.hasMetadata(this.playermetadata))
  87.             player.removeMetadata(this.playermetadata, plugin);
  88.     }
  89.  
  90.     /**
  91.      * If you have set metadata, use this method to compere it
  92.      *
  93.      * @param playermetadata metadata key you has set on the player.
  94.      */
  95.  
  96.     public void setPlayermetadata(String playermetadata) {
  97.         this.playermetadata = playermetadata;
  98.     }
  99.  
  100. }
  101.  
RAW Paste Data