diff --git a/src/main/java/me/skymc/taboolib/inventory/builder/MenuBuilder.java b/src/main/java/me/skymc/taboolib/inventory/builder/MenuBuilder.java index fb879d3..1b8bd9c 100644 --- a/src/main/java/me/skymc/taboolib/inventory/builder/MenuBuilder.java +++ b/src/main/java/me/skymc/taboolib/inventory/builder/MenuBuilder.java @@ -20,6 +20,7 @@ public class MenuBuilder { private boolean lock; private String name; private int rows = 9; + private Inventory parent; private HashMap items = new HashMap<>(); @@ -56,8 +57,13 @@ public class MenuBuilder { return this; } + public MenuBuilder parent(Inventory parent) { + this.parent = parent; + return this; + } + public Inventory build() { - Inventory inventory = Bukkit.createInventory(new MenuBuilderHolder(lock, items), rows, name); + Inventory inventory = Bukkit.createInventory(new MenuBuilderHolder(lock, items, parent), rows, name); items.forEach((key, value) -> inventory.setItem(key, value.getItemStack())); return inventory; } diff --git a/src/main/java/me/skymc/taboolib/inventory/builder/menu/MenuBuilderHolder.java b/src/main/java/me/skymc/taboolib/inventory/builder/menu/MenuBuilderHolder.java index 6c663bb..b54684d 100644 --- a/src/main/java/me/skymc/taboolib/inventory/builder/menu/MenuBuilderHolder.java +++ b/src/main/java/me/skymc/taboolib/inventory/builder/menu/MenuBuilderHolder.java @@ -13,10 +13,16 @@ public class MenuBuilderHolder implements InventoryHolder { private final boolean lock; private final HashMap items; + private final Inventory parent; - public MenuBuilderHolder(boolean lock, HashMap items) { + public MenuBuilderHolder(boolean lock, HashMap items, Inventory parent) { this.lock = lock; this.items = items; + this.parent = parent; + } + + public MenuBuilderHolder(boolean lock, HashMap items) { + this(lock, items, null); } @Override @@ -37,4 +43,8 @@ public class MenuBuilderHolder implements InventoryHolder { public HashMap getItems() { return items; } + + public Inventory getParent() { + return parent; + } } \ No newline at end of file diff --git a/src/main/java/me/skymc/taboolib/inventory/builder/menu/MenuBuilderListener.java b/src/main/java/me/skymc/taboolib/inventory/builder/menu/MenuBuilderListener.java index 54cb73e..3eba630 100644 --- a/src/main/java/me/skymc/taboolib/inventory/builder/menu/MenuBuilderListener.java +++ b/src/main/java/me/skymc/taboolib/inventory/builder/menu/MenuBuilderListener.java @@ -1,12 +1,15 @@ package me.skymc.taboolib.inventory.builder.menu; +import me.skymc.taboolib.Main; import me.skymc.taboolib.listener.TListener; +import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryAction; import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; import java.util.Optional; @@ -33,4 +36,14 @@ public class MenuBuilderListener implements Listener { }); } + @EventHandler + public void onClose(InventoryCloseEvent event) { + if (event.getInventory().getHolder() instanceof MenuBuilderHolder) { + MenuBuilderHolder holder = (MenuBuilderHolder) event.getInventory().getHolder(); + if (holder.getParent() != null) { + Bukkit.getScheduler().runTask(Main.getInst(), () -> event.getPlayer().openInventory(holder.getParent())); + } + } + } + }