SPIGOT-1568: Fix jukeboxes

This commit is contained in:
md_5 2016-03-01 20:07:44 +11:00
parent 69e196f796
commit 5122dcd61e

View File

@ -39,7 +39,7 @@
} }
@@ -84,11 +101,128 @@ @@ -84,11 +101,129 @@
} }
public EnumInteractionResult placeItem(EntityHuman entityhuman, World world, BlockPosition blockposition, EnumHand enumhand, EnumDirection enumdirection, float f, float f1, float f2) { public EnumInteractionResult placeItem(EntityHuman entityhuman, World world, BlockPosition blockposition, EnumHand enumhand, EnumDirection enumdirection, float f, float f1, float f2) {
@ -136,11 +136,12 @@
+ } + }
+ +
+ // Special case juke boxes as they update their tile entity. Copied from ItemRecord. + // Special case juke boxes as they update their tile entity. Copied from ItemRecord.
+ // PAIL: checkme on updates.
+ if (this.getItem() instanceof ItemRecord) { + if (this.getItem() instanceof ItemRecord) {
+ ((BlockJukeBox) Blocks.JUKEBOX).a(world, blockposition, world.getType(blockposition), this); + ((BlockJukeBox) Blocks.JUKEBOX).a(world, blockposition, world.getType(blockposition), this);
+ world.a((EntityHuman) null, 1005, blockposition, Item.getId(this.getItem())); + world.a((EntityHuman) null, 1010, blockposition, Item.getId(this.item));
+ --this.count; + --this.count;
+ entityhuman.b(StatisticList.X); + entityhuman.b(StatisticList.Z);
+ } + }
+ +
+ if (this.getItem() == Items.SKULL) { // Special case skulls to allow wither spawns to be cancelled + if (this.getItem() == Items.SKULL) { // Special case skulls to allow wither spawns to be cancelled
@ -169,7 +170,7 @@
return enuminteractionresult; return enuminteractionresult;
} }
@@ -112,7 +246,7 @@ @@ -112,7 +247,7 @@
nbttagcompound.setByte("Count", (byte) this.count); nbttagcompound.setByte("Count", (byte) this.count);
nbttagcompound.setShort("Damage", (short) this.damage); nbttagcompound.setShort("Damage", (short) this.damage);
if (this.tag != null) { if (this.tag != null) {
@ -178,7 +179,7 @@
} }
return nbttagcompound; return nbttagcompound;
@@ -121,13 +255,18 @@ @@ -121,13 +256,18 @@
public void c(NBTTagCompound nbttagcompound) { public void c(NBTTagCompound nbttagcompound) {
this.item = Item.d(nbttagcompound.getString("id")); this.item = Item.d(nbttagcompound.getString("id"));
this.count = nbttagcompound.getByte("Count"); this.count = nbttagcompound.getByte("Count");
@ -198,7 +199,7 @@
if (this.item != null) { if (this.item != null) {
this.item.a(this.tag); this.item.a(this.tag);
} }
@@ -164,6 +303,26 @@ @@ -164,6 +304,26 @@
} }
public void setData(int i) { public void setData(int i) {
@ -225,7 +226,7 @@
this.damage = i; this.damage = i;
if (this.damage < 0) { if (this.damage < 0) {
this.damage = 0; this.damage = 0;
@@ -216,6 +375,12 @@ @@ -216,6 +376,12 @@
this.count = 0; this.count = 0;
} }
@ -238,7 +239,7 @@
this.damage = 0; this.damage = 0;
} }
@@ -513,6 +678,7 @@ @@ -513,6 +679,7 @@
public void setItem(Item item) { public void setItem(Item item) {
this.item = item; this.item = item;