mirror of
https://github.com/PaperMC/Paper.git
synced 2024-11-27 04:55:47 +01:00
SPIGOT-2842: Improve item age handling
This commit is contained in:
parent
c3d951ddcd
commit
78c7614349
@ -12,23 +12,11 @@
|
|||||||
private String g;
|
private String g;
|
||||||
private String h;
|
private String h;
|
||||||
public float a;
|
public float a;
|
||||||
+ private int lastTick = MinecraftServer.currentTick; // CraftBukkit
|
+ private int lastTick = MinecraftServer.currentTick - 1; // CraftBukkit
|
||||||
|
|
||||||
public EntityItem(World world, double d0, double d1, double d2) {
|
public EntityItem(World world, double d0, double d1, double d2) {
|
||||||
super(world);
|
super(world);
|
||||||
@@ -30,6 +32,11 @@
|
@@ -54,9 +56,12 @@
|
||||||
|
|
||||||
public EntityItem(World world, double d0, double d1, double d2, ItemStack itemstack) {
|
|
||||||
this(world, d0, d1, d2);
|
|
||||||
+ // CraftBukkit start - Can't set null items in the datawatcher
|
|
||||||
+ if (itemstack == null || itemstack.getItem() == null) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ // CraftBukkit end
|
|
||||||
this.setItemStack(itemstack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -54,9 +61,12 @@
|
|
||||||
this.die();
|
this.die();
|
||||||
} else {
|
} else {
|
||||||
super.A_();
|
super.A_();
|
||||||
@ -44,7 +32,7 @@
|
|||||||
|
|
||||||
this.lastX = this.locX;
|
this.lastX = this.locX;
|
||||||
this.lastY = this.locY;
|
this.lastY = this.locY;
|
||||||
@@ -104,9 +114,11 @@
|
@@ -104,9 +109,11 @@
|
||||||
this.motY *= -0.5D;
|
this.motY *= -0.5D;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,7 +44,7 @@
|
|||||||
|
|
||||||
this.ak();
|
this.ak();
|
||||||
if (!this.world.isClientSide) {
|
if (!this.world.isClientSide) {
|
||||||
@@ -121,6 +133,12 @@
|
@@ -121,6 +128,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.world.isClientSide && this.age >= 6000) {
|
if (!this.world.isClientSide && this.age >= 6000) {
|
||||||
@ -69,7 +57,7 @@
|
|||||||
this.die();
|
this.die();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,6 +180,7 @@
|
@@ -162,6 +175,7 @@
|
||||||
} else if (itemstack1.getCount() + itemstack.getCount() > itemstack1.getMaxStackSize()) {
|
} else if (itemstack1.getCount() + itemstack.getCount() > itemstack1.getMaxStackSize()) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
@ -77,7 +65,7 @@
|
|||||||
itemstack1.add(itemstack.getCount());
|
itemstack1.add(itemstack.getCount());
|
||||||
entityitem.pickupDelay = Math.max(entityitem.pickupDelay, this.pickupDelay);
|
entityitem.pickupDelay = Math.max(entityitem.pickupDelay, this.pickupDelay);
|
||||||
entityitem.age = Math.min(entityitem.age, this.age);
|
entityitem.age = Math.min(entityitem.age, this.age);
|
||||||
@@ -208,6 +227,11 @@
|
@@ -208,6 +222,11 @@
|
||||||
} else if (!this.getItemStack().isEmpty() && this.getItemStack().getItem() == Items.NETHER_STAR && damagesource.isExplosion()) {
|
} else if (!this.getItemStack().isEmpty() && this.getItemStack().getItem() == Items.NETHER_STAR && damagesource.isExplosion()) {
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
@ -89,20 +77,7 @@
|
|||||||
this.ap();
|
this.ap();
|
||||||
this.f = (int) ((float) this.f - f);
|
this.f = (int) ((float) this.f - f);
|
||||||
if (this.f <= 0) {
|
if (this.f <= 0) {
|
||||||
@@ -257,6 +281,12 @@
|
@@ -270,6 +289,26 @@
|
||||||
|
|
||||||
NBTTagCompound nbttagcompound1 = nbttagcompound.getCompound("Item");
|
|
||||||
|
|
||||||
+ // CraftBukkit start - Handle missing "Item" compounds
|
|
||||||
+ if (nbttagcompound1 == null) {
|
|
||||||
+ this.die();
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ // CraftBukkit end
|
|
||||||
this.setItemStack(new ItemStack(nbttagcompound1));
|
|
||||||
if (this.getItemStack().isEmpty()) {
|
|
||||||
this.die();
|
|
||||||
@@ -270,6 +300,26 @@
|
|
||||||
Item item = itemstack.getItem();
|
Item item = itemstack.getItem();
|
||||||
int i = itemstack.getCount();
|
int i = itemstack.getCount();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user