From b4b9f9682bce25ba03ccc0bf222cd7c3daa50638 Mon Sep 17 00:00:00 2001 From: Genre Mamanao <41022228+glenngenre@users.noreply.github.com> Date: Fri, 26 Sep 2025 07:12:05 +0800 Subject: [PATCH 1/5] Add BackButtonBehavior enum --- .../com/iridium/iridiumcore/gui/BackButtonBehavior.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 plugin/src/main/java/com/iridium/iridiumcore/gui/BackButtonBehavior.java diff --git a/plugin/src/main/java/com/iridium/iridiumcore/gui/BackButtonBehavior.java b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackButtonBehavior.java new file mode 100644 index 00000000..9521917f --- /dev/null +++ b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackButtonBehavior.java @@ -0,0 +1,8 @@ +package com.iridium.iridiumcore.gui; + +public enum BackButtonBehavior { + DISABLED, + ONLY_SKYBLOCK, + ALL +} + From b55dc98acec06dac24edc43a1689806103b3e5fe Mon Sep 17 00:00:00 2001 From: Genre Mamanao <41022228+glenngenre@users.noreply.github.com> Date: Fri, 26 Sep 2025 07:12:55 +0800 Subject: [PATCH 2/5] Implement BackButtonBehavior to BackGUI --- .../com/iridium/iridiumcore/gui/BackGUI.java | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java index e531bc41..7a9a588a 100644 --- a/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java +++ b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java @@ -14,30 +14,47 @@ public abstract class BackGUI implements GUI { private final Background background; private final Inventory previousInventory; private final Item backButton; + private final BackButtonBehavior backButtonBehavior; - public BackGUI(Background background, Player player, Item backButton) { + public BackGUI(Background background, Player player, Item backButton, BackButtonBehavior backButtonBehavior) { this.background = background; this.backButton = backButton; + this.backButtonBehavior = backButtonBehavior; - if (player == null) { + if (player == null || backButtonBehavior == BackButtonBehavior.DISABLED) { this.previousInventory = null; - } else { - Inventory previousInventory = IridiumCore.getInstance().getIridiumInventory().getTopInventory(player); - this.previousInventory = previousInventory.getType() == InventoryType.CHEST ? previousInventory : null; + return; } + + Inventory previousInventory = IridiumCore.getInstance().getIridiumInventory().getTopInventory(player); + if (previousInventory == null || previousInventory.getType() != InventoryType.CHEST) { + this.previousInventory = null; + return; + } + + if (backButtonBehavior == BackButtonBehavior.ONLY_SKYBLOCK) { + this.previousInventory = isSkyblockInventory(previousInventory) ? previousInventory : null; + return; + } + + this.previousInventory = previousInventory; + } + + private boolean isSkyblockInventory(Inventory inventory) { + return inventory.getHolder() instanceof GUI; } @Override public void addContent(Inventory inventory) { InventoryUtils.fillInventory(inventory, background); - if (previousInventory != null) { + if (previousInventory != null && backButtonBehavior != BackButtonBehavior.DISABLED) { inventory.setItem(inventory.getSize() + backButton.slot, ItemStackUtils.makeItem(backButton)); } } @Override public void onInventoryClick(InventoryClickEvent event) { - if (previousInventory != null && event.getSlot() == (event.getInventory().getSize() + backButton.slot)) { + if (previousInventory != null && backButtonBehavior != BackButtonBehavior.DISABLED && event.getSlot() == (event.getInventory().getSize() + backButton.slot)) { event.getWhoClicked().openInventory(previousInventory); } } From 4ae55640860cb468d608c52cb8d69b4000bee618 Mon Sep 17 00:00:00 2001 From: Genre Mamanao <41022228+glenngenre@users.noreply.github.com> Date: Fri, 26 Sep 2025 16:58:10 +0800 Subject: [PATCH 3/5] code cleanup --- .../com/iridium/iridiumcore/gui/BackGUI.java | 29 +++++++++++++------ 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java index 7a9a588a..b17490b5 100644 --- a/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java +++ b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java @@ -26,18 +26,18 @@ public BackGUI(Background background, Player player, Item backButton, BackButton return; } - Inventory previousInventory = IridiumCore.getInstance().getIridiumInventory().getTopInventory(player); - if (previousInventory == null || previousInventory.getType() != InventoryType.CHEST) { + Inventory prevInv = IridiumCore.getInstance().getIridiumInventory().getTopInventory(player); + if (prevInv == null || prevInv.getType() != InventoryType.CHEST) { this.previousInventory = null; return; } - if (backButtonBehavior == BackButtonBehavior.ONLY_SKYBLOCK) { - this.previousInventory = isSkyblockInventory(previousInventory) ? previousInventory : null; + if (backButtonBehavior == BackButtonBehavior.ONLY_SKYBLOCK && !isSkyblockInventory(prevInv)) { + this.previousInventory = null; return; } - this.previousInventory = previousInventory; + this.previousInventory = prevInv; } private boolean isSkyblockInventory(Inventory inventory) { @@ -47,15 +47,26 @@ private boolean isSkyblockInventory(Inventory inventory) { @Override public void addContent(Inventory inventory) { InventoryUtils.fillInventory(inventory, background); - if (previousInventory != null && backButtonBehavior != BackButtonBehavior.DISABLED) { - inventory.setItem(inventory.getSize() + backButton.slot, ItemStackUtils.makeItem(backButton)); + + if (previousInventory == null || backButtonBehavior == BackButtonBehavior.DISABLED) { + return; } + + int backSlot = inventory.getSize() + backButton.slot; + inventory.setItem(backSlot, ItemStackUtils.makeItem(backButton)); } @Override public void onInventoryClick(InventoryClickEvent event) { - if (previousInventory != null && backButtonBehavior != BackButtonBehavior.DISABLED && event.getSlot() == (event.getInventory().getSize() + backButton.slot)) { - event.getWhoClicked().openInventory(previousInventory); + if (previousInventory == null || backButtonBehavior == BackButtonBehavior.DISABLED) { + return; } + + int backSlot = event.getInventory().getSize() + backButton.slot; + if (event.getSlot() != backSlot) { + return; + } + + event.getWhoClicked().openInventory(previousInventory); } } From 549eafaee00167045cd041f1cf3a92ef7cb69035 Mon Sep 17 00:00:00 2001 From: Genre Mamanao <41022228+glenngenre@users.noreply.github.com> Date: Sun, 23 Nov 2025 16:10:02 +0800 Subject: [PATCH 4/5] feat: add constructor for backwards compat --- plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java index b17490b5..5db5789f 100644 --- a/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java +++ b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java @@ -39,6 +39,10 @@ public BackGUI(Background background, Player player, Item backButton, BackButton this.previousInventory = prevInv; } + + public BackGUI(Background background, Player player, Item backButton) { + this(background, player, backButton, BackButtonBehavior.ALL); + } private boolean isSkyblockInventory(Inventory inventory) { return inventory.getHolder() instanceof GUI; From 5b19b29e1cd7a15521e40e2b66dd6d6184c7d000 Mon Sep 17 00:00:00 2001 From: Genre Mamanao <41022228+glenngenre@users.noreply.github.com> Date: Sun, 23 Nov 2025 16:10:28 +0800 Subject: [PATCH 5/5] refactor: rename isSkyblockInventory --- plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java index 5db5789f..979dd8ad 100644 --- a/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java +++ b/plugin/src/main/java/com/iridium/iridiumcore/gui/BackGUI.java @@ -32,7 +32,7 @@ public BackGUI(Background background, Player player, Item backButton, BackButton return; } - if (backButtonBehavior == BackButtonBehavior.ONLY_SKYBLOCK && !isSkyblockInventory(prevInv)) { + if (backButtonBehavior == BackButtonBehavior.ONLY_SKYBLOCK && !isIridiumInventory(prevInv)) { this.previousInventory = null; return; } @@ -44,7 +44,7 @@ public BackGUI(Background background, Player player, Item backButton) { this(background, player, backButton, BackButtonBehavior.ALL); } - private boolean isSkyblockInventory(Inventory inventory) { + private boolean isIridiumInventory(Inventory inventory) { return inventory.getHolder() instanceof GUI; }