From 6ca55ef678dc41d7c48f9c8cc6c76690d2077b67 Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Fri, 5 Feb 2021 11:56:51 +0100 Subject: [PATCH] Refactoring, added missing javadoc --- .../de/studiocode/invui/gui/builder/GUIBuilder.java | 3 +++ .../invui/virtualinventory/VirtualInventory.java | 2 +- .../java/de/studiocode/invui/window/Window.java | 10 ++++++---- .../de/studiocode/invui/window/WindowManager.java | 13 +++++++++++++ .../window/impl/combined/BaseCombinedWindow.java | 5 ++++- .../{CombinedGUIWindow.java => CombinedWindow.java} | 8 ++++++-- ...inedGUIWindow.java => SimpleCombinedWindow.java} | 4 ++-- ...vilSplitGUIWindow.java => AnvilSplitWindow.java} | 6 +++--- ...leSplitGUIWindow.java => SimpleSplitWindow.java} | 4 ++-- .../{SplitGUIWindow.java => SplitWindow.java} | 8 ++++++-- .../invui/window/impl/single/SingleWindow.java | 4 ++++ 11 files changed, 50 insertions(+), 17 deletions(-) rename src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/{CombinedGUIWindow.java => CombinedWindow.java} (80%) rename src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/{SimpleCombinedGUIWindow.java => SimpleCombinedWindow.java} (79%) rename src/main/java/de/studiocode/invui/window/impl/combined/splitgui/{AnvilSplitGUIWindow.java => AnvilSplitWindow.java} (84%) rename src/main/java/de/studiocode/invui/window/impl/combined/splitgui/{SimpleSplitGUIWindow.java => SimpleSplitWindow.java} (63%) rename src/main/java/de/studiocode/invui/window/impl/combined/splitgui/{SplitGUIWindow.java => SplitWindow.java} (83%) diff --git a/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java b/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java index d4afb38..26ca249 100644 --- a/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java +++ b/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java @@ -50,6 +50,7 @@ public class GUIBuilder { * define where which {@link Item} should be. * * @param structure The structure {@link String} + * @return The {@link GUIBuilder} */ public GUIBuilder setStructure(@NotNull String structure) { String cleanedStructure = structure.replace(" ", "").replace("\n", ""); @@ -66,6 +67,7 @@ public class GUIBuilder { * * @param key The ingredient key * @param item The {@link Item} + * @return The {@link GUIBuilder} */ public GUIBuilder setIngredient(char key, @NotNull Item item) { ingredientMap.put(key, new Ingredient(item)); @@ -78,6 +80,7 @@ public class GUIBuilder { * * @param key The ingredient key * @param slotElement The {@link SlotElement} + * @return The {@link GUIBuilder} */ public GUIBuilder setIngredient(char key, @NotNull SlotElement slotElement) { ingredientMap.put(key, new Ingredient(slotElement)); diff --git a/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java b/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java index 341e941..9cb90cd 100644 --- a/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java +++ b/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java @@ -27,7 +27,7 @@ public class VirtualInventory implements ConfigurationSerializable { * * @param uuid The {@link UUID} this {@link VirtualInventory} should have. * Can be null, only used for serialization. - * @param size The size of the {@link VirtualInventory} ( size > 0 ) + * @param size The size of the {@link VirtualInventory} * @param items An array of {@link ItemStack} which reflects the contents of this * {@link VirtualInventory}, therefore the length of that array has * to be the same as size. diff --git a/src/main/java/de/studiocode/invui/window/Window.java b/src/main/java/de/studiocode/invui/window/Window.java index 29e2cce..f67cc54 100644 --- a/src/main/java/de/studiocode/invui/window/Window.java +++ b/src/main/java/de/studiocode/invui/window/Window.java @@ -5,8 +5,8 @@ import de.studiocode.invui.gui.GUIParent; import de.studiocode.invui.item.Item; import de.studiocode.invui.item.itembuilder.ItemBuilder; import de.studiocode.invui.virtualinventory.VirtualInventory; -import de.studiocode.invui.window.impl.combined.combinedgui.SimpleCombinedGUIWindow; -import de.studiocode.invui.window.impl.combined.splitgui.SimpleSplitGUIWindow; +import de.studiocode.invui.window.impl.combined.combinedgui.SimpleCombinedWindow; +import de.studiocode.invui.window.impl.combined.splitgui.SimpleSplitWindow; import de.studiocode.invui.window.impl.single.SimpleWindow; import org.bukkit.entity.Player; import org.bukkit.event.entity.PlayerDeathEvent; @@ -22,8 +22,8 @@ import java.util.UUID; * Windows can only have one viewer. * * @see SimpleWindow - * @see SimpleCombinedGUIWindow - * @see SimpleSplitGUIWindow + * @see SimpleCombinedWindow + * @see SimpleSplitWindow */ public interface Window extends GUIParent { @@ -53,6 +53,8 @@ public interface Window extends GUIParent { * A method called by the {@link WindowManager} to notify the Window * that {@link ItemStack}s have been shift-clicked from the lower * {@link Inventory} to this {@link Window} + * + * @param event The {@link InventoryClickEvent} associated with this action. */ void handleItemShift(InventoryClickEvent event); diff --git a/src/main/java/de/studiocode/invui/window/WindowManager.java b/src/main/java/de/studiocode/invui/window/WindowManager.java index 7cf8e65..75113cc 100644 --- a/src/main/java/de/studiocode/invui/window/WindowManager.java +++ b/src/main/java/de/studiocode/invui/window/WindowManager.java @@ -1,11 +1,14 @@ package de.studiocode.invui.window; import de.studiocode.invui.InvUI; +import de.studiocode.invui.window.impl.combined.BaseCombinedWindow; import org.bukkit.Bukkit; +import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityPickupItemEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.*; import org.bukkit.event.player.PlayerQuitEvent; @@ -145,4 +148,14 @@ public class WindowManager implements Listener { findWindows(event.getEntity()).forEach(window -> window.handleViewerDeath(event)); } + @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) + public void handleItemPickup(EntityPickupItemEvent event) { + Entity entity = event.getEntity(); + if (entity instanceof Player) { + Optional window = findOpenWindow(((Player) entity)); + if (window.isPresent() && window.get() instanceof BaseCombinedWindow) + event.setCancelled(true); + } + } + } diff --git a/src/main/java/de/studiocode/invui/window/impl/combined/BaseCombinedWindow.java b/src/main/java/de/studiocode/invui/window/impl/combined/BaseCombinedWindow.java index 9777076..5ee4efb 100644 --- a/src/main/java/de/studiocode/invui/window/impl/combined/BaseCombinedWindow.java +++ b/src/main/java/de/studiocode/invui/window/impl/combined/BaseCombinedWindow.java @@ -3,6 +3,7 @@ package de.studiocode.invui.window.impl.combined; import de.studiocode.invui.gui.SlotElement.ItemStackHolder; import de.studiocode.invui.gui.SlotElement.VISlotElement; import de.studiocode.invui.util.SlotUtils; +import de.studiocode.invui.window.Window; import de.studiocode.invui.window.impl.BaseWindow; import org.bukkit.entity.Player; import org.bukkit.event.entity.PlayerDeathEvent; @@ -14,7 +15,9 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; - +/** + * A {@link Window} that uses both top and player {@link Inventory}. + */ public abstract class BaseCombinedWindow extends BaseWindow { private final Inventory playerInventory; diff --git a/src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/CombinedGUIWindow.java b/src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/CombinedWindow.java similarity index 80% rename from src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/CombinedGUIWindow.java rename to src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/CombinedWindow.java index cbc32c5..0cf1e5d 100644 --- a/src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/CombinedGUIWindow.java +++ b/src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/CombinedWindow.java @@ -3,16 +3,20 @@ package de.studiocode.invui.window.impl.combined.combinedgui; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.SlotElement.ItemStackHolder; import de.studiocode.invui.util.SlotUtils; +import de.studiocode.invui.window.Window; import de.studiocode.invui.window.impl.combined.BaseCombinedWindow; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; -public abstract class CombinedGUIWindow extends BaseCombinedWindow { +/** + * A {@link Window} where top and player {@link Inventory} are affected by the same {@link GUI}. + */ +public abstract class CombinedWindow extends BaseCombinedWindow { private final GUI gui; - public CombinedGUIWindow(Player player, GUI gui, Inventory upperInventory, boolean closeable, boolean closeOnEvent) { + public CombinedWindow(Player player, GUI gui, Inventory upperInventory, boolean closeable, boolean closeOnEvent) { super(player, gui.getSize(), upperInventory, closeable, closeOnEvent); this.gui = gui; diff --git a/src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/SimpleCombinedGUIWindow.java b/src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/SimpleCombinedWindow.java similarity index 79% rename from src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/SimpleCombinedGUIWindow.java rename to src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/SimpleCombinedWindow.java index 32c1449..8649969 100644 --- a/src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/SimpleCombinedGUIWindow.java +++ b/src/main/java/de/studiocode/invui/window/impl/combined/combinedgui/SimpleCombinedWindow.java @@ -5,9 +5,9 @@ import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; -public class SimpleCombinedGUIWindow extends CombinedGUIWindow { +public class SimpleCombinedWindow extends CombinedWindow { - public SimpleCombinedGUIWindow(Player player, String title, GUI gui, boolean closeable, boolean closeOnEvent) { + public SimpleCombinedWindow(Player player, String title, GUI gui, boolean closeable, boolean closeOnEvent) { super(player, gui, createInventory(gui, title), closeable, closeOnEvent); } diff --git a/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/AnvilSplitGUIWindow.java b/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/AnvilSplitWindow.java similarity index 84% rename from src/main/java/de/studiocode/invui/window/impl/combined/splitgui/AnvilSplitGUIWindow.java rename to src/main/java/de/studiocode/invui/window/impl/combined/splitgui/AnvilSplitWindow.java index 75136bf..ea965e1 100644 --- a/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/AnvilSplitGUIWindow.java +++ b/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/AnvilSplitWindow.java @@ -8,12 +8,12 @@ import org.bukkit.inventory.ItemStack; import java.util.function.Consumer; -public class AnvilSplitGUIWindow extends SplitGUIWindow { +public class AnvilSplitWindow extends SplitWindow { private final AnvilInventory anvilInventory; - public AnvilSplitGUIWindow(Player player, String title, GUI upperGui, GUI lowerGui, - boolean closeable, Consumer renameHandler) { + public AnvilSplitWindow(Player player, String title, GUI upperGui, GUI lowerGui, + boolean closeable, Consumer renameHandler) { super(player, upperGui, lowerGui, null, false, closeable, true); diff --git a/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SimpleSplitGUIWindow.java b/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SimpleSplitWindow.java similarity index 63% rename from src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SimpleSplitGUIWindow.java rename to src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SimpleSplitWindow.java index db30211..3ed3cca 100644 --- a/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SimpleSplitGUIWindow.java +++ b/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SimpleSplitWindow.java @@ -4,9 +4,9 @@ import de.studiocode.invui.gui.GUI; import de.studiocode.invui.util.InventoryUtils; import org.bukkit.entity.Player; -public class SimpleSplitGUIWindow extends SplitGUIWindow { +public class SimpleSplitWindow extends SplitWindow { - public SimpleSplitGUIWindow(Player player, String title, GUI upperGui, GUI lowerGui, boolean closeable, boolean closeOnEvent) { + public SimpleSplitWindow(Player player, String title, GUI upperGui, GUI lowerGui, boolean closeable, boolean closeOnEvent) { super(player, upperGui, lowerGui, InventoryUtils.createMatchingInventory(upperGui, title), true, closeable, closeOnEvent); } diff --git a/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SplitGUIWindow.java b/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SplitWindow.java similarity index 83% rename from src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SplitGUIWindow.java rename to src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SplitWindow.java index afa143c..46db1f1 100644 --- a/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SplitGUIWindow.java +++ b/src/main/java/de/studiocode/invui/window/impl/combined/splitgui/SplitWindow.java @@ -3,17 +3,21 @@ package de.studiocode.invui.window.impl.combined.splitgui; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.SlotElement.ItemStackHolder; import de.studiocode.invui.util.SlotUtils; +import de.studiocode.invui.window.Window; import de.studiocode.invui.window.impl.combined.BaseCombinedWindow; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; -public abstract class SplitGUIWindow extends BaseCombinedWindow { +/** + * A {@link Window} where top and player {@link Inventory} are affected by different {@link GUI}s. + */ +public abstract class SplitWindow extends BaseCombinedWindow { private final GUI upperGui; private final GUI lowerGui; - public SplitGUIWindow(Player player, GUI upperGui, GUI lowerGui, Inventory upperInventory, boolean initItems, boolean closeable, boolean closeOnEvent) { + public SplitWindow(Player player, GUI upperGui, GUI lowerGui, Inventory upperInventory, boolean initItems, boolean closeable, boolean closeOnEvent) { super(player, upperGui.getSize() + lowerGui.getSize(), upperInventory, closeable, closeOnEvent); this.upperGui = upperGui; this.lowerGui = lowerGui; diff --git a/src/main/java/de/studiocode/invui/window/impl/single/SingleWindow.java b/src/main/java/de/studiocode/invui/window/impl/single/SingleWindow.java index 328435c..dc8d0d9 100644 --- a/src/main/java/de/studiocode/invui/window/impl/single/SingleWindow.java +++ b/src/main/java/de/studiocode/invui/window/impl/single/SingleWindow.java @@ -2,6 +2,7 @@ package de.studiocode.invui.window.impl.single; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.SlotElement.ItemStackHolder; +import de.studiocode.invui.window.Window; import de.studiocode.invui.window.impl.BaseWindow; import org.bukkit.entity.Player; import org.bukkit.event.entity.PlayerDeathEvent; @@ -11,6 +12,9 @@ import org.bukkit.inventory.ItemStack; import java.util.UUID; +/** + * A {@link Window} that just uses the top {@link Inventory}. + */ public abstract class SingleWindow extends BaseWindow { private final GUI gui;