From 1667e23f62d243341fe34c74bc6741177cebf3e8 Mon Sep 17 00:00:00 2001 From: DeadSilenceIV Date: Mon, 2 Jan 2023 16:13:54 -0500 Subject: [PATCH] AdvancedChests hook was updated and it now supports outside hotkeys. --- pom.xml | 2 +- .../chestsort/hooks/AdvancedChestsHook.java | 2 +- .../listeners/ChestSortListener.java | 25 ++++++++++++------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index b418148..b7e31cc 100644 --- a/pom.xml +++ b/pom.xml @@ -269,7 +269,7 @@ com.github.DeadSilenceIV AdvancedChestsAPI - 2.9-BETA + 3.1-BETA provided diff --git a/src/main/java/de/jeff_media/chestsort/hooks/AdvancedChestsHook.java b/src/main/java/de/jeff_media/chestsort/hooks/AdvancedChestsHook.java index 22fff59..3d3a2a8 100644 --- a/src/main/java/de/jeff_media/chestsort/hooks/AdvancedChestsHook.java +++ b/src/main/java/de/jeff_media/chestsort/hooks/AdvancedChestsHook.java @@ -61,7 +61,7 @@ public class AdvancedChestsHook { try { AdvancedChest chest = AdvancedChestsAPI.getChestManager().getAdvancedChest(location); if (chest != null) { - for (ChestPage page : chest.getPages()) { + for (ChestPage page : chest.getPages().values()) { Inventory inventory = page.getBukkitInventory(); plugin.getOrganizer().sortInventory(inventory, 0, inventory.getSize() - 10); } diff --git a/src/main/java/de/jeff_media/chestsort/listeners/ChestSortListener.java b/src/main/java/de/jeff_media/chestsort/listeners/ChestSortListener.java index 6c9fe4c..b788260 100644 --- a/src/main/java/de/jeff_media/chestsort/listeners/ChestSortListener.java +++ b/src/main/java/de/jeff_media/chestsort/listeners/ChestSortListener.java @@ -645,8 +645,14 @@ public class ChestSortListener implements org.bukkit.event.Listener { if (e.getCursor() != null && e.getCursor().getType() != null && e.getCursor().getType() != Material.AIR) { return; } + + boolean isAdvancedChest = advancedChestsHook.isAnAdvancedChest(e.getClickedInventory()) + || advancedChestsHook.isAnAdvancedChest(e.getInventory()); + // Possible fix for #57 - if (e.getInventory().getHolder() == null && !e.getView().getTopInventory().equals(p.getEnderChest())) { + if (e.getInventory().getHolder() == null + && !e.getView().getTopInventory().equals(p.getEnderChest()) + && !isAdvancedChest) { return; } if (e.getInventory().getHolder() == p && e.getInventory() != p.getInventory()) { @@ -685,12 +691,6 @@ public class ChestSortListener implements org.bukkit.event.Listener { return; } - // AdvancedChests hook - if(advancedChestsHook.isAnAdvancedChest(e.getClickedInventory()) - || advancedChestsHook.isAnAdvancedChest(e.getInventory())){ - return; - } - // Detect generic GUIs if(!isAPICall(e.getInventory()) && !isAPICall(e.getClickedInventory()) && (plugin.getGenericHook().isPluginGUI(e.getInventory()) @@ -722,7 +722,10 @@ public class ChestSortListener implements org.bukkit.event.Listener { chestSortEvent.setLocation(e.getWhoClicked().getLocation()); chestSortEvent.setSortableMaps(new HashMap<>()); - for (ItemStack item : e.getInventory().getContents()) { + ItemStack[] contents = e.getInventory().getContents(); + int contentsLength = (!isAdvancedChest) ? contents.length : contents.length-9; + for (int i = 0; i < contentsLength; i++) { + ItemStack item = contents[i]; chestSortEvent.getSortableMaps().put(item, plugin.getOrganizer().getSortableMap(item)); } @@ -737,7 +740,11 @@ public class ChestSortListener implements org.bukkit.event.Listener { == PlayerSetting.DoubleClickType.LEFT_CLICK) { // Left double click: put everything into destination plugin.getOrganizer().stuffPlayerInventoryIntoAnother(p.getInventory(), e.getInventory(), false, chestSortEvent); - plugin.getOrganizer().sortInventory(e.getInventory()); + if(isAdvancedChest){ + plugin.getOrganizer().sortInventory(e.getInventory(),0,e.getInventory().getSize()-10); + }else{ + plugin.getOrganizer().sortInventory(e.getInventory()); + } } else { // Left single click: put only matching items into destination plugin.getOrganizer().stuffPlayerInventoryIntoAnother(p.getInventory(), e.getInventory(), true, chestSortEvent);