fix itemstack sizes
This commit is contained in:
parent
4e94a660ff
commit
c376d92790
111 changed files with 983 additions and 1353 deletions
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue