BlackyPaw 8cc1683e83 SPIGOT-989: Cap assignment of pickup delays to Short.MAX_VALUE due to storage implementation constraints.
Changed assignment of pickup delays in such a way that they may not be larger than the value actually stored inside the NBT format that is Short.MAX_VALUE. Did not change method signature in order not to produce any shortening cast warnings in existing code. All values larger than 32767 are generally used to indicate that an item should never be picked up. Shortening this to 32767 will actually cause the pickup delay to never decrease, thus resulting in non-pickupable item stacks.
2015-09-30 08:48:28 +10:00

49 lines
1.2 KiB
Java

package org.bukkit.craftbukkit.entity;
import net.minecraft.server.Entity;
import net.minecraft.server.EntityItem;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Item;
import org.bukkit.inventory.ItemStack;
import org.bukkit.craftbukkit.inventory.CraftItemStack;
import org.bukkit.craftbukkit.CraftServer;
public class CraftItem extends CraftEntity implements Item {
private final EntityItem item;
public CraftItem(CraftServer server, Entity entity, EntityItem item) {
super(server, entity);
this.item = item;
}
public CraftItem(CraftServer server, EntityItem entity) {
this(server, entity, entity);
}
public ItemStack getItemStack() {
return CraftItemStack.asCraftMirror(item.getItemStack());
}
public void setItemStack(ItemStack stack) {
item.setItemStack(CraftItemStack.asNMSCopy(stack));
}
public int getPickupDelay() {
return item.pickupDelay;
}
public void setPickupDelay(int delay) {
item.pickupDelay = Math.min(delay, Short.MAX_VALUE);
}
@Override
public String toString() {
return "CraftItem";
}
public EntityType getType() {
return EntityType.DROPPED_ITEM;
}
}