From 9bd1ac3b45d14bdd4366a3c749c364b5f2185ef0 Mon Sep 17 00:00:00 2001 From: Sen Date: Thu, 4 Sep 2025 16:52:31 +0200 Subject: [PATCH] change inventory system --- .../client/gui/container/GuiContainer.java | 162 ++--------------- .../main/java/common/inventory/Container.java | 166 +----------------- 2 files changed, 20 insertions(+), 308 deletions(-) diff --git a/client/src/main/java/client/gui/container/GuiContainer.java b/client/src/main/java/client/gui/container/GuiContainer.java index 0f91ecbd..4d9557d9 100755 --- a/client/src/main/java/client/gui/container/GuiContainer.java +++ b/client/src/main/java/client/gui/container/GuiContainer.java @@ -4,7 +4,6 @@ import java.text.DecimalFormat; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Map.Entry; import org.lwjgl.opengl.GL15; @@ -28,7 +27,6 @@ import client.renderer.entity.RenderItem; import client.window.Bind; import client.window.Button; import common.collect.Lists; -import common.collect.Sets; import common.enchantment.Enchantment; import common.entity.npc.Attribute; import common.entity.npc.EntityNPC; @@ -69,13 +67,8 @@ public abstract class GuiContainer extends Gui protected int ySize = 166; public Container inventorySlots; private Slot theSlot; - protected final Set dragSplittingSlots = Sets.newHashSet(); protected final List drawnOverlays = Lists.newArrayList(); - protected boolean dragSplitting; - private int dragSplittingLimit; - private int dragSplittingButton; private boolean ignoreMouseUp; - private int dragSplittingRemnant; private long lastClickTime; private Slot lastClickSlot; private int lastClickButton; @@ -438,17 +431,7 @@ public abstract class GuiContainer extends Gui int k2 = 8; String s = null; - if (this.dragSplitting && this.dragSplittingSlots.size() > 1) - { - stack = stack.copy(); - stack.setSize(this.dragSplittingRemnant); - - if (stack.isEmpty()) - { - s = "" + Color.YELLOW + "0"; - } - } - else if(stack == this.cheatStack) { + if(stack == this.cheatStack) { s = Color.DARK_GREEN + "+" + Color.GREEN + formatAmount(stack.getSize()); } @@ -542,38 +525,6 @@ public abstract class GuiContainer extends Gui ItemStack itemstack1 = this.gm.player.getMouseItem(); String s = null; - if (this.dragSplitting && this.dragSplittingSlots.contains(slotIn) && itemstack1 != null) - { - if (this.dragSplittingSlots.size() == 1) - { - return; - } - - if (Container.canAddItemToSlot(slotIn, itemstack1, true) && this.inventorySlots.canDragIntoSlot(slotIn)) - { - itemstack = itemstack1.copy(); - flag = true; - Container.computeStackSize(this.dragSplittingSlots, this.dragSplittingLimit, itemstack, slotIn.getStack() == null ? 0 : slotIn.getStack().getSize()); - - if (itemstack.getSize() > itemstack.getMaxStackSize()) - { - s = Color.YELLOW + formatAmount(itemstack.getMaxStackSize()); - itemstack.setSize(itemstack.getMaxStackSize()); - } - - if (itemstack.getSize() > slotIn.getItemStackLimit(itemstack)) - { - s = Color.YELLOW + formatAmount(slotIn.getItemStackLimit(itemstack)); - itemstack.setSize(slotIn.getItemStackLimit(itemstack)); - } - } - else - { - this.dragSplittingSlots.remove(slotIn); - this.updateDragSplitting(); - } - } - this.itemRender.zLevel = 100.0F; GlState.enableDepth(); @@ -583,35 +534,6 @@ public abstract class GuiContainer extends Gui this.itemRender.zLevel = 0.0F; } - private void updateDragSplitting() - { - ItemStack itemstack = this.gm.player.getMouseItem(); - - if (itemstack != null && this.dragSplitting) - { - this.dragSplittingRemnant = itemstack.getSize(); - - for (Slot slot : this.dragSplittingSlots) - { - ItemStack itemstack1 = itemstack.copy(); - int i = slot.getStack() == null ? 0 : slot.getStack().getSize(); - Container.computeStackSize(this.dragSplittingSlots, this.dragSplittingLimit, itemstack1, i); - - if (itemstack1.getSize() > itemstack1.getMaxStackSize()) - { - itemstack1.setSize(itemstack1.getMaxStackSize()); - } - - if (itemstack1.getSize() > slot.getItemStackLimit(itemstack1)) - { - itemstack1.setSize(slot.getItemStackLimit(itemstack1)); - } - - this.dragSplittingRemnant -= itemstack1.getSize() - i; - } - } - } - private Slot getSlotAtPosition(int x, int y) { for (int i = 0; i < this.inventorySlots.inventorySlots.size(); ++i) @@ -680,43 +602,29 @@ public abstract class GuiContainer extends Gui if (l != -1) { - if (!this.dragSplitting) + if (this.gm.player.getMouseItem() == null) { - if (this.gm.player.getMouseItem() == null) + boolean flag2 = l != -999 && this.gm.shift(); + int i1 = 0; + + if (flag2) { - boolean flag2 = l != -999 && this.gm.shift(); - int i1 = 0; - - if (flag2) - { - this.shiftClickedSlot = slot != null && slot.getHasStack() ? slot.getStack() : null; - i1 = 1; - } - else if (l == -999) - { - i1 = 4; - } - - this.handleMouseClick(slot, l, mouseButton, i1); - - this.ignoreMouseUp = true; + this.shiftClickedSlot = slot != null && slot.getHasStack() ? slot.getStack() : null; + i1 = 1; } - else + else if (l == -999) { - this.dragSplitting = true; - this.dragSplittingButton = mouseButton; - this.dragSplittingSlots.clear(); - - if (mouseButton == 0) - { - this.dragSplittingLimit = 0; - } - else if (mouseButton == 1) - { - this.dragSplittingLimit = 1; - } + i1 = 4; } + + this.handleMouseClick(slot, l, mouseButton, i1); + + this.ignoreMouseUp = true; } +// else +// { +// this.dragSplitting = true; +// } } } @@ -727,16 +635,6 @@ public abstract class GuiContainer extends Gui public void mouseDragged(int mouseX, int mouseY) { - if(this.gm == null || this.cheatStack != null) - return; - Slot slot = this.getSlotAtPosition(mouseX, mouseY); - ItemStack itemstack = this.gm.player.getMouseItem(); - - if (this.dragSplitting && slot != null && itemstack != null && itemstack.getSize() > this.dragSplittingSlots.size() && Container.canAddItemToSlot(slot, itemstack, true) && slot.isItemValid(itemstack) && this.inventorySlots.canDragIntoSlot(slot)) - { - this.dragSplittingSlots.add(slot); - this.updateDragSplitting(); - } } public void mouseReleased(int mouseX, int mouseY, int state) @@ -782,32 +680,13 @@ public abstract class GuiContainer extends Gui } else { - if (this.dragSplitting && this.dragSplittingButton != state) - { - this.dragSplitting = false; - this.dragSplittingSlots.clear(); - this.ignoreMouseUp = true; - return; - } - if (this.ignoreMouseUp) { this.ignoreMouseUp = false; return; } - if (this.dragSplitting && !this.dragSplittingSlots.isEmpty()) - { - this.handleMouseClick((Slot)null, -999, Container.getDragCode(0, this.dragSplittingLimit), 5); - - for (Slot slot1 : this.dragSplittingSlots) - { - this.handleMouseClick(slot1, slot1.slotNumber, Container.getDragCode(1, this.dragSplittingLimit), 5); - } - - this.handleMouseClick((Slot)null, -999, Container.getDragCode(2, this.dragSplittingLimit), 5); - } - else if (this.gm.player.getMouseItem() != null) + if (this.gm.player.getMouseItem() != null) { boolean flag1 = k != -999 && this.gm.shift(); @@ -824,8 +703,6 @@ public abstract class GuiContainer extends Gui { this.lastClickTime = 0L; } - - this.dragSplitting = false; } private boolean isMouseOverSlot(Slot slotIn, int mouseX, int mouseY) @@ -987,7 +864,6 @@ public abstract class GuiContainer extends Gui private void setCurrentTab(CheatTab tab) { selectedTab = tab; - this.dragSplittingSlots.clear(); ITEM_LIST.clear(); tab.filter(ITEM_LIST); if(!this.cheatLast.isBlank() && this.gm.player != null) { diff --git a/common/src/main/java/common/inventory/Container.java b/common/src/main/java/common/inventory/Container.java index b7fe2b4a..256fd0ab 100755 --- a/common/src/main/java/common/inventory/Container.java +++ b/common/src/main/java/common/inventory/Container.java @@ -9,7 +9,6 @@ import common.entity.npc.EntityNPC; import common.item.Item; import common.item.ItemStack; import common.network.IPlayer; -import common.util.ExtMath; public abstract class Container { @@ -17,15 +16,6 @@ public abstract class Container public List inventorySlots = Lists.newArrayList(); public int windowId; private short transactionID; - - /** - * The current drag mode (0 : evenly split, 1 : one item by slot, 2 : not used ?) - */ - private int dragMode = -1; - - /** The current drag event (0 : start, 1 : add slot : 2 : end) */ - private int dragEvent; - private final Set dragSlots = Sets.newHashSet(); protected List crafters = Lists.newArrayList(); private Set playerList = Sets.newHashSet(); @@ -146,94 +136,7 @@ public abstract class Container { ItemStack itemstack = null; - if (mode == 5) - { - int i = this.dragEvent; - this.dragEvent = getDragEvent(clickedButton); - - if ((i != 1 || this.dragEvent != 2) && i != this.dragEvent) - { - this.resetDrag(); - } - else if (playerIn.getMouseItem() == null) - { - this.resetDrag(); - } - else if (this.dragEvent == 0) - { - this.dragMode = extractDragMode(clickedButton); - - if (isValidDragMode(this.dragMode, playerIn)) - { - this.dragEvent = 1; - this.dragSlots.clear(); - } - else - { - this.resetDrag(); - } - } - else if (this.dragEvent == 1) - { - Slot slot = (Slot)this.inventorySlots.get(slotId); - - if (slot != null && canAddItemToSlot(slot, playerIn.getMouseItem(), true) && slot.isItemValid(playerIn.getMouseItem()) && playerIn.getMouseItem().getSize() > this.dragSlots.size() && this.canDragIntoSlot(slot)) - { - this.dragSlots.add(slot); - } - } - else if (this.dragEvent == 2) - { - if (!this.dragSlots.isEmpty()) - { - ItemStack itemstack3 = playerIn.getMouseItem().copy(); - int j = playerIn.getMouseItem().getSize(); - - for (Slot slot1 : this.dragSlots) - { - if (slot1 != null && canAddItemToSlot(slot1, playerIn.getMouseItem(), true) && slot1.isItemValid(playerIn.getMouseItem()) && playerIn.getMouseItem().getSize() >= this.dragSlots.size() && this.canDragIntoSlot(slot1)) - { - ItemStack itemstack1 = itemstack3.copy(); - int k = slot1.getHasStack() ? slot1.getStack().getSize() : 0; - computeStackSize(this.dragSlots, this.dragMode, itemstack1, k); - - if (itemstack1.isOverLimit()) - { - itemstack1.setSize(itemstack1.getMaxStackSize()); - } - - if (itemstack1.getSize() > slot1.getItemStackLimit(itemstack1)) - { - itemstack1.setSize(slot1.getItemStackLimit(itemstack1)); - } - - j -= itemstack1.getSize() - k; - slot1.putStack(itemstack1); - } - } - - itemstack3.setSize(j); - - if (itemstack3.isEmpty()) - { - itemstack3 = null; - } - - playerIn.setMouseItem(itemstack3); - } - - this.resetDrag(); - } - else - { - this.resetDrag(); - } - } - else if (this.dragEvent != 0) - { - this.resetDrag(); - } - else if ((mode == 0 || mode == 1) && (clickedButton == 0 || clickedButton == 1)) + if ((mode == 0 || mode == 1) && (clickedButton == 0 || clickedButton == 1)) { if (slotId == -999) { @@ -679,41 +582,6 @@ public abstract class Container return true; } - /** - * Extracts the drag mode. Args : eventButton. Return (0 : evenly split, 1 : one item by slot, 2 : not used ?) - */ - public static int extractDragMode(int dragCode) - { - return dragCode >> 2 & 3; - } - - /** - * Args : clickedButton, Returns (0 : start drag, 1 : add slot, 2 : end drag) - */ - public static int getDragEvent(int dragCode) - { - return dragCode & 3; - } - - public static int getDragCode(int dragEvent, int dragMode) - { - return dragEvent & 3 | (dragMode & 3) << 2; - } - - public static boolean isValidDragMode(int dragModeIn, EntityNPC player) - { - return dragModeIn == 0 ? true : /* ( */ dragModeIn == 1; // ? true : dragModeIn == 2 && player.creative); - } - - /** - * Reset the drag fields - */ - protected void resetDrag() - { - this.dragEvent = 0; - this.dragSlots.clear(); - } - /** * Checks if it's possible to add the given itemstack to the given slot. */ @@ -728,36 +596,4 @@ public abstract class Container return flag; } - - /** - * Compute the new stack size, Returns the stack with the new size. Args : dragSlots, dragMode, dragStack, - * slotStackSize - */ - public static void computeStackSize(Set p_94525_0_, int p_94525_1_, ItemStack p_94525_2_, int p_94525_3_) - { - switch (p_94525_1_) - { - case 0: - p_94525_2_.setSize(ExtMath.floorf((float)p_94525_2_.getSize() / (float)p_94525_0_.size())); - break; - - case 1: - p_94525_2_.setSize(1); - break; - - case 2: - p_94525_2_.setSize(p_94525_2_.getItem().getMaxAmount()); - } - - p_94525_2_.incrSize(p_94525_3_); - } - - /** - * Returns true if the player can "drag-spilt" items into this slot,. returns true by default. Called to check if - * the slot can be added to a list of Slots to split the held ItemStack across. - */ - public boolean canDragIntoSlot(Slot p_94531_1_) - { - return true; - } }