diff options
author | feildmaster <admin@feildmaster.com> | 2013-01-01 23:17:38 -0600 |
---|---|---|
committer | feildmaster <admin@feildmaster.com> | 2013-01-01 23:58:46 -0600 |
commit | fb0be1fc0acfa85a5b25786a6df5b494a936dbb2 (patch) | |
tree | 99d31f161a2c97daa6b257caa4006643261c466f /src/main/java/net | |
parent | 8f0c1aed6bb7d3dd24baffaa7e01d2297f159995 (diff) | |
download | craftbukkit-fb0be1fc0acfa85a5b25786a6df5b494a936dbb2.tar craftbukkit-fb0be1fc0acfa85a5b25786a6df5b494a936dbb2.tar.gz craftbukkit-fb0be1fc0acfa85a5b25786a6df5b494a936dbb2.tar.lz craftbukkit-fb0be1fc0acfa85a5b25786a6df5b494a936dbb2.tar.xz craftbukkit-fb0be1fc0acfa85a5b25786a6df5b494a936dbb2.zip |
Move the tile entity with the falling block. Adds BUKKIT-3349
Allows for interesting things to be done with world.spawn()
Diffstat (limited to 'src/main/java/net')
-rw-r--r-- | src/main/java/net/minecraft/server/EntityFallingBlock.java | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java index 1daf7bee..ea440dcb 100644 --- a/src/main/java/net/minecraft/server/EntityFallingBlock.java +++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java @@ -18,6 +18,7 @@ public class EntityFallingBlock extends Entity { private boolean hurtEntities; private int fallHurtMax; private float fallHurtAmount; + private NBTTagCompound tileEntityData; // CraftBukkit public EntityFallingBlock(World world) { super(world); @@ -90,6 +91,17 @@ public class EntityFallingBlock extends Entity { return; } + // CraftBukkit start - Store the block tile entity with this entity + TileEntity tile = this.world.getTileEntity(i, j, k); + if (tile != null) { + tileEntityData = new NBTTagCompound(); + // Save the data + tile.b(tileEntityData); + // Remove the existing tile entity + this.world.r(i, j, k); + } + // CraftBukkit end + this.world.setTypeId(i, j, k, 0); } @@ -105,6 +117,10 @@ public class EntityFallingBlock extends Entity { return; } this.world.setTypeIdAndData(i, j, k, this.id, this.data); + + if (this.tileEntityData != null) { + this.world.setTileEntity(i, j, k, TileEntity.c(this.tileEntityData)); + } // CraftBukkit end if (Block.byId[this.id] instanceof BlockSand) { ((BlockSand) Block.byId[this.id]).a_(this.world, i, j, k, this.data); @@ -171,6 +187,11 @@ public class EntityFallingBlock extends Entity { nbttagcompound.setBoolean("HurtEntities", this.hurtEntities); nbttagcompound.setFloat("FallHurtAmount", this.fallHurtAmount); nbttagcompound.setInt("FallHurtMax", this.fallHurtMax); + // CraftBukkit start - store the tile data + if (this.tileEntityData != null) { + nbttagcompound.set("Bukkit.tileData", this.tileEntityData.clone()); + } + // CraftBukkit end } protected void a(NBTTagCompound nbttagcompound) { @@ -185,6 +206,12 @@ public class EntityFallingBlock extends Entity { this.hurtEntities = true; } + // CraftBukkit start - load tileData + if (nbttagcompound.hasKey("Bukkit.tileData")) { + this.tileEntityData = (NBTTagCompound) nbttagcompound.getCompound("Bukkit.tileData").clone(); + } + // CraftBukkit end + if (nbttagcompound.hasKey("DropItem")) { this.dropItem = nbttagcompound.getBoolean("DropItem"); } |