diff --git a/src/main/java/net/minestom/server/inventory/click/ClickType.java b/src/main/java/net/minestom/server/inventory/click/ClickType.java index 4bf6dbe19..2eb9b91d8 100644 --- a/src/main/java/net/minestom/server/inventory/click/ClickType.java +++ b/src/main/java/net/minestom/server/inventory/click/ClickType.java @@ -5,9 +5,16 @@ public enum ClickType { LEFT_CLICK, RIGHT_CLICK, CHANGE_HELD, + + START_SHIFT_CLICK, SHIFT_CLICK, + + START_DRAGGING, DRAGGING, + + START_DOUBLE_CLICK, DOUBLE_CLICK, + DROP } diff --git a/src/main/java/net/minestom/server/inventory/click/InventoryClickProcessor.java b/src/main/java/net/minestom/server/inventory/click/InventoryClickProcessor.java index ee52238db..b873cb035 100644 --- a/src/main/java/net/minestom/server/inventory/click/InventoryClickProcessor.java +++ b/src/main/java/net/minestom/server/inventory/click/InventoryClickProcessor.java @@ -13,6 +13,8 @@ import net.minestom.server.inventory.condition.InventoryConditionResult; import net.minestom.server.item.ItemStack; import net.minestom.server.item.StackingRule; import net.minestom.server.utils.inventory.PlayerInventoryUtils; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.List; @@ -167,7 +169,7 @@ public class InventoryClickProcessor { public InventoryClickResult shiftClick(Inventory inventory, Player player, int slot, ItemStack clicked, ItemStack cursor, InventoryClickLoopHandler... loopHandlers) { - InventoryClickResult clickResult = startCondition(inventory, player, slot, ClickType.SHIFT_CLICK, clicked, cursor); + InventoryClickResult clickResult = startCondition(inventory, player, slot, ClickType.START_SHIFT_CLICK, clicked, cursor); if (clickResult.isCancel()) { return clickResult; @@ -250,7 +252,7 @@ public class InventoryClickProcessor { ItemStack clicked, ItemStack cursor, Int2ObjectFunction itemGetter, BiConsumer itemSetter) { - InventoryClickResult clickResult = new InventoryClickResult(clicked, cursor); + InventoryClickResult clickResult = startCondition(inventory, player, slot, ClickType.START_DRAGGING, clicked, cursor); final StackingRule stackingRule = cursor.getStackingRule(); @@ -365,7 +367,7 @@ public class InventoryClickProcessor { public InventoryClickResult doubleClick(Inventory inventory, Player player, int slot, ItemStack cursor, InventoryClickLoopHandler... loopHandlers) { - InventoryClickResult clickResult = new InventoryClickResult(ItemStack.getAirItem(), cursor); + InventoryClickResult clickResult = startCondition(inventory, player, slot, ClickType.START_DOUBLE_CLICK, ItemStack.getAirItem(), cursor); if (clickResult.isCancel()) { return clickResult; @@ -489,8 +491,8 @@ public class InventoryClickProcessor { return clickResult; } - private InventoryClickResult startCondition(InventoryClickResult clickResult, Inventory inventory, - Player player, int slot, ClickType clickType, + private InventoryClickResult startCondition(@NotNull InventoryClickResult clickResult, @Nullable Inventory inventory, + @NotNull Player player, int slot, @NotNull ClickType clickType, ItemStack clicked, ItemStack cursor) { boolean isPlayerInventory = inventory == null; final int inventorySlot = isPlayerInventory ? 0 : inventory.getSize(); @@ -557,18 +559,19 @@ public class InventoryClickProcessor { return clickResult; } - private InventoryClickResult startCondition(Inventory inventory, Player player, int slot, ClickType clickType, ItemStack clicked, ItemStack cursor) { + private InventoryClickResult startCondition(@Nullable Inventory inventory, @NotNull Player player, int slot, + @NotNull ClickType clickType, ItemStack clicked, ItemStack cursor) { final InventoryClickResult clickResult = new InventoryClickResult(clicked, cursor); return startCondition(clickResult, inventory, player, slot, clickType, clicked, cursor); } - private void callClickEvent(Player player, Inventory inventory, int slot, - ClickType clickType, ItemStack clicked, ItemStack cursor) { + private void callClickEvent(@NotNull Player player, @Nullable Inventory inventory, int slot, + @NotNull ClickType clickType, ItemStack clicked, ItemStack cursor) { InventoryClickEvent inventoryClickEvent = new InventoryClickEvent(player, inventory, slot, clickType, clicked, cursor); player.callEvent(InventoryClickEvent.class, inventoryClickEvent); } - public void clearCache(Player player) { + public void clearCache(@NotNull Player player) { this.leftDraggingMap.remove(player); this.rightDraggingMap.remove(player); }