Advertisement
broken-arrow

Untitled

Nov 26th, 2021
720
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.44 KB | None | 0 0
  1.  
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.Location;
  5. import org.bukkit.Material;
  6. import org.bukkit.World;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.event.inventory.InventoryClickEvent;
  9. import org.bukkit.inventory.ItemStack;
  10.  
  11. import java.util.ListIterator;
  12. import java.util.Set;
  13.  
  14. public class MenuUtiliListener {
  15.     private final MenuCache menuCache = MenuCache.getInstance();
  16.     private static final MenuUtiliListener instance = new MenuUtiliListener();
  17.     private String playermetadata;
  18.  
  19.     public void onMenuClicking(InventoryClickEvent event) {
  20.         Player player = (Player) event.getWhoClicked();
  21.         Location location = null;
  22.         Object object = null;
  23.  
  24.         if (player.hasMetadata(playermetadata)) {
  25.             object = player.getMetadata(playermetadata);
  26.             if (object instanceof Location)
  27.                 location = (Location) object;
  28.         }
  29.         System.out.println("loc " + location);
  30.         MenuHolderTest menu = menuCache.getMenuInCache(checkMap(player, location, object));
  31.  
  32.  
  33.         //System.out.println("test " + event.getClickedInventory() + " " + event.getView().getTopInventory());
  34.         if (menu != null && !menu.getButtons().isEmpty()) {
  35.             ItemStack clickedItem = event.getCurrentItem();
  36.             int clickedSlot = event.getSlot();
  37.             int clickedPos = menu.getPageNumber() * menu.getMenu().getSize() + clickedSlot;
  38.             if (clickedItem == null || clickedItem.getType() == Material.AIR) return;
  39.  
  40.             if (menu.isSlotsYouCanAddItems()) {
  41.                 if (menu.getFillSpace().contains(clickedPos))
  42.                     return;
  43.                 else
  44.                     event.setCancelled(true);
  45.             }
  46.  
  47.             for (ListIterator<MenuButton> menuButtons = menu.getButtons().listIterator(); menuButtons.hasNext(); ) {
  48.                 MenuButton menuButton = menuButtons.next();
  49.                
  50.                 if (menuButton.getItem().isSimilar(clickedItem)) {
  51.                     if (menu.getAddedButtons().containsKey(clickedPos) && menu.getAddedButtons().get(clickedPos).isSimilar(clickedItem)) {
  52.                         menuButton.onClickInsideMenu(player, menu.getMenu(), event.getClick());
  53.                         event.setCancelled(true);
  54.                     }
  55.                 }
  56.             }
  57.             if (!menu.isSlotsYouCanAddItems()) {
  58.                 event.setCancelled(true);
  59.             }
  60.         }
  61.     }
  62.  
  63.     private Object checkMap(Player player, Location location, Object unknownObject) {
  64.         Set<Object> obj = menuCache.getMenusCached().keySet();
  65.         Object object = null;
  66.         for (Object objectType : obj) {
  67.             if (objectType != null) {
  68.                 Object[] splitObjekt = objectType.toString().split("\\*__\\*");
  69.                 String firstObject = splitObjekt[0].toString();
  70.                 int lastIndexOf = firstObject.lastIndexOf("}");
  71.                 Player player1 = Bukkit.getPlayer(splitObjekt[0].toString().substring(17, lastIndexOf));
  72.                 if (splitObjekt.length > 1 && player1 != null) {
  73.                     if (player1 == player)
  74.                         object = splitObjekt[0] + "*__*" + splitObjekt[1];
  75.                 } else if (splitObjekt.length > 1 && isLocation(splitObjekt[0]) != null && location != null) {
  76.                     if (!isLocation(splitObjekt[0]).equals(location)) continue;
  77.                     object = splitObjekt[0] + "*__*" + splitObjekt[1];
  78.                 }
  79.  
  80.                 if (splitObjekt.length > 1 && splitObjekt[0].equals(unknownObject))
  81.                     object = splitObjekt[0] + "*__*" + splitObjekt[1];
  82.             }
  83.         }
  84.         return object;
  85.     }
  86.  
  87.     public void setPlayermetadata(String playermetadata) {
  88.         this.playermetadata = playermetadata;
  89.     }
  90.  
  91.     public static MenuUtiliListener getInstance() {
  92.         return instance;
  93.     }
  94.  
  95.     public static Location isLocation(Object raw) {
  96.         String[] parts = new String[0];
  97.         if (!raw.toString().contains(" ")) {
  98.             String rawText = raw.toString();
  99.             String[] rawTextSplit = rawText.split(",");
  100.             int lastIndexOf = rawTextSplit[0].lastIndexOf("}");
  101.             int firstIndexOf = rawTextSplit[0].lastIndexOf("{");
  102.  
  103.             parts = new String[]{rawTextSplit[0].substring(firstIndexOf + 6, lastIndexOf) + "", rawTextSplit[1].replace("x=", "").split("\\.")[0] + "", rawTextSplit[2].replace("y=", "").split("\\.")[0] + "", rawTextSplit[3].replace("z=", "").split("\\.")[0]};
  104.         }
  105.         int length;
  106.         if (raw.toString().contains(" "))
  107.             length = (parts = raw.toString().split(" ")).length;
  108.         else
  109.             length = parts.length;
  110.         if (length == 4) {
  111.             final String world = parts[0];
  112.             final World bukkitWorld = Bukkit.getWorld(world);
  113.             if (bukkitWorld == null)
  114.                 return null;
  115.             if (!parts[1].matches("[-+]?\\d+") && !parts[2].matches("[-+]?\\d+") && !parts[3].matches("[-+]?\\d+"))
  116.                 return null;
  117.             else {
  118.                 int x = Integer.parseInt(parts[1]), y = Integer.parseInt(parts[2]), z = Integer.parseInt(parts[3]);
  119.                 return new Location(bukkitWorld, x, y, z);
  120.             }
  121.         }
  122.  
  123.         return null;
  124.     }
  125. }
  126.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement