fix itemstack sizes

This commit is contained in:
Sen 2025-07-07 15:20:52 +02:00
parent 4e94a660ff
commit c376d92790
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
111 changed files with 983 additions and 1353 deletions

View file

@ -5,6 +5,7 @@ import java.util.List;
import common.entity.npc.EntityNPC;
import common.init.ItemRegistry;
import common.item.Item;
import common.item.ItemStack;
import common.tags.TagObject;
import server.command.Command;
@ -31,20 +32,20 @@ public class CommandItem extends Command {
}
public Object exec(CommandEnvironment env, Executor exec, String item, int amount, TagObject tag, List<EntityNPC> players) {
ItemStack stack = ItemStack.getStack(item, null);
if(stack == null)
Item items = ItemRegistry.byName(item);
if(items == null)
throw new RunException("Gegenstand '%s' existiert nicht", item);
stack.readTag(tag);
ItemStack stack = new ItemStack(items);
stack.readTags(tag);
int done = 0;
int given = 0;
for(EntityNPC player : players) {
int total = amount;
while(total > 0) {
int added = Math.min(total, stack.getMaxStackSize());
ItemStack st = stack.copy();
st.size = added;
ItemStack st = stack.copy(added);
player.inventory.addItemStackToInventory(st);
added -= st.size;
added -= st.getSize();
if(added <= 0)
break;
total -= added;

View file

@ -20,8 +20,8 @@ public class CommandMore extends Command {
}
private int addItems(ItemStack stack) {
int diff = stack.getMaxStackSize() - stack.size;
stack.size = stack.getMaxStackSize();
int diff = stack.getMaxStackSize() - stack.getSize();
stack.setSize(stack.getMaxStackSize());
return diff;
}

View file

@ -586,11 +586,11 @@ public class Player extends User implements ICrafting, Executor, IPlayer
}
public void sendThrowMessage(ItemStack stack) {
if(stack.size == 1)
if(stack.getSize() == 1)
this.addFeed(TextColor.DRED + "* %s weg geworfen",
stack.getColoredName(TextColor.DRED));
else
this.addFeed(TextColor.DRED + "* %d %s weg geworfen", stack.size,
this.addFeed(TextColor.DRED + "* %d %s weg geworfen", stack.getSize(),
stack.getColoredName(TextColor.DRED));
}
@ -1231,9 +1231,9 @@ public class Player extends User implements ICrafting, Executor, IPlayer
if (itemstack1 != null)
{
itemstack1.onBlockDestroyed(this.entity.worldObj, iblockstate.getBlock(), pos, this.entity);
itemstack1.getItem().onBlockDestroyed(itemstack1, this.entity.worldObj, iblockstate.getBlock(), pos, this.entity);
if (itemstack1.size == 0)
if (itemstack1.isEmpty())
{
this.entity.destroyCurrentEquippedItem();
}
@ -1254,11 +1254,11 @@ public class Player extends User implements ICrafting, Executor, IPlayer
// if(this.onPlayerInteract(false, null)) {
// return true;
// }
int i = stack.size;
int i = stack.getSize();
int j = stack.getItemDamage();
ItemStack itemstack = stack.useItemRightClick(this.entity.worldObj, this.entity);
ItemStack itemstack = stack.getItem().onItemRightClick(stack, this.entity.worldObj, this.entity);
if (itemstack != stack || itemstack != null && (itemstack.size != i || itemstack.getMaxItemUseDuration() > 0 || itemstack.getItemDamage() != j))
if (itemstack != stack || itemstack != null && (itemstack.getSize() != i || itemstack.getMaxItemUseDuration() > 0 || itemstack.getItemDamage() != j))
{
this.entity.inventory.mainInventory[this.entity.inventory.currentItem] = itemstack;
@ -1272,7 +1272,7 @@ public class Player extends User implements ICrafting, Executor, IPlayer
// }
// }
if (itemstack.size == 0)
if (itemstack.isEmpty())
{
this.entity.inventory.mainInventory[this.entity.inventory.currentItem] = null;
}
@ -1323,7 +1323,7 @@ public class Player extends User implements ICrafting, Executor, IPlayer
// }
else
{
return stack.onItemUse(this.entity, this.entity.worldObj, pos, side, offsetX, offsetY, offsetZ);
return stack.getItem().onItemUse(stack, this.entity, this.entity.worldObj, pos, side, offsetX, offsetY, offsetZ);
}
}
@ -2384,7 +2384,7 @@ public class Player extends User implements ICrafting, Executor, IPlayer
itemstack = this.entity.inventory.getCurrentItem();
if (itemstack != null && itemstack.size == 0)
if (itemstack != null && itemstack.isEmpty())
{
this.entity.inventory.mainInventory[this.entity.inventory.currentItem] = null;
itemstack = null;
@ -2393,12 +2393,12 @@ public class Player extends User implements ICrafting, Executor, IPlayer
if (itemstack == null || itemstack.getMaxItemUseDuration() == 0)
{
this.isChangingQuantityOnly = true;
this.entity.inventory.mainInventory[this.entity.inventory.currentItem] = ItemStack.copyItemStack(this.entity.inventory.mainInventory[this.entity.inventory.currentItem]);
this.entity.inventory.mainInventory[this.entity.inventory.currentItem] = ItemStack.copy(this.entity.inventory.mainInventory[this.entity.inventory.currentItem]);
Slot slot = this.entity.openContainer.getSlotFromInventory(this.entity.inventory, this.entity.inventory.currentItem);
this.entity.openContainer.detectAndSendChanges();
this.isChangingQuantityOnly = false;
if (!ItemStack.areItemStacksEqual(this.entity.inventory.getCurrentItem(), packetIn.getStack()))
if (!ItemStack.allEquals(this.entity.inventory.getCurrentItem(), packetIn.getStack()))
{
this.sendPacket(new SPacketSetSlot(this.entity.openContainer.windowId, slot.slotNumber, this.entity.inventory.getCurrentItem()));
}
@ -2724,8 +2724,8 @@ public class Player extends User implements ICrafting, Executor, IPlayer
case REPAIR:
if(this.isAdmin() && this.entity.getCurrentEquippedItem() != null) {
ItemStack itemstack = this.entity.getCurrentEquippedItem();
int diff = itemstack.getMaxStackSize() - itemstack.size;
itemstack.size = itemstack.getMaxStackSize();
int diff = itemstack.getMaxStackSize() - itemstack.getSize();
itemstack.setSize(itemstack.getMaxStackSize());
itemstack.setRepairCost(0);
if(itemstack.getItem().getMaxDamage() > 0)
itemstack.setItemDamage(0);
@ -2866,7 +2866,7 @@ public class Player extends User implements ICrafting, Executor, IPlayer
// {
ItemStack itemstack = this.entity.openContainer.slotClick(packetIn.getSlotId(), packetIn.getUsedButton(), packetIn.getMode(), this.entity);
if (ItemStack.areItemStacksEqual(packetIn.getClickedItem(), itemstack))
if (ItemStack.allEquals(packetIn.getClickedItem(), itemstack))
{
this.entity.connection.sendPacket(new SPacketConfirmTransaction(packetIn.getWindowId(), packetIn.getActionNumber(), true));
this.isChangingQuantityOnly = true;
@ -2901,12 +2901,12 @@ public class Player extends User implements ICrafting, Executor, IPlayer
if(item == null)
return;
ItemStack stack = new ItemStack(item, packet.isStacked() ? item.getMaxAmount() : 1);
int amount = stack.size;
int amount = stack.getSize();
if(amount <= 0)
return;
if(packet.getSlot() == -1) {
this.entity.inventory.addItemStackToInventory(stack);
amount -= stack.size;
amount -= stack.getSize();
if(amount <= 0)
return;
}
@ -2917,26 +2917,26 @@ public class Player extends User implements ICrafting, Executor, IPlayer
Slot slot = packet.getSlot() < 0 ? this.entity.inventoryContainer.getSlot(36 + -2 - packet.getSlot()) : this.entity.openContainer.getSlot(packet.getSlot());
if(slot == null || !slot.canCheatItem())
return;
stack.size = Math.min(slot.getSlotStackLimit(), stack.size);
amount = stack.size;
stack.setSize(Math.min(slot.getSlotStackLimit(), stack.getSize()));
amount = stack.getSize();
if(amount <= 0)
return;
if(slot.getHasStack()) {
ItemStack old = slot.getStack();
if(ItemStack.areItemsEqual(stack, old) && ItemStack.areItemStackTagsEqual(stack, old)) {
stack.size = Math.min(slot.getSlotStackLimit(), Math.min(stack.getMaxStackSize(), old.size + stack.size));
amount = stack.size - old.size;
if(ItemStack.itemEquals(stack, old) && ItemStack.dataEquals(stack, old)) {
stack.setSize(Math.min(slot.getSlotStackLimit(), Math.min(stack.getMaxStackSize(), old.getSize() + stack.getSize())));
amount = stack.getSize() - old.getSize();
if(amount <= 0 || !slot.isItemValid(stack))
return;
}
else {
if(!slot.isItemValid(stack))
return;
if(old.size == 1)
if(old.getSize() == 1)
this.addFeed(TextColor.DRED + "* %s zerstört",
old.getColoredName(TextColor.DRED));
else
this.addFeed(TextColor.DRED + "* %d %s zerstört", old.size,
this.addFeed(TextColor.DRED + "* %d %s zerstört", old.getSize(),
old.getColoredName(TextColor.DRED));
}
}