diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java index 9731634609..faed7ca779 100644 --- a/src/main/java/net/minecraft/server/WorldServer.java +++ b/src/main/java/net/minecraft/server/WorldServer.java @@ -34,33 +34,35 @@ public class WorldServer extends World { private final CraftWorld world; private final CraftServer server; + /** + * setData + * + * @param x + * @param y + * @param z + * @param data (actually a byte!) + */ @Override - public boolean d(int i1, int j1, int k1, int l1) { - boolean result = super.d(i1, j1, k1, l1); - if ((result) && (world != null)) world.updateBlock(i1, j1, k1); + public boolean d(int x, int y, int z, int data) { + boolean result = super.d(x, y, z, data); + if ((result) && (world != null)) world.updateBlock(x, y, z, null, data); return result; } @Override - public boolean setTypeId(int i, int j, int k, int l) { - boolean result = super.setTypeId(i, j, k, l); - if ((result) && (world != null)) world.updateBlock(i, j, k); + public boolean setTypeId(int x, int y, int z, int type) { + boolean result = super.setTypeId(x, y, z, type); + if ((result) && (world != null)) world.updateBlock(x, y, z, type, null); return result; } @Override - public boolean setTypeIdAndData(int i, int j, int k, int l, int i1) { - boolean result = super.setTypeIdAndData(i, j, k, l, i1); - if ((result) && (world != null)) world.updateBlock(i, j, k); + public boolean setTypeIdAndData(int x, int y, int z, int type, int data) { + boolean result = super.setTypeIdAndData(x, y, z, type, data); + if ((result) && (world != null)) world.updateBlock(x, y, z, type, data); return result; } - @Override - public void setTileEntity(int i, int j, int k, TileEntity tileentity) { - super.setTileEntity(i, j, k, tileentity); - if (world != null) world.updateBlock(i, j, k); - } - public CraftWorld getWorld() { return world; } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index d7d2093cb3..30e91359ca 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -83,20 +83,22 @@ public class CraftWorld implements World { } - public Block updateBlock(int x, int y, int z) { + public void updateBlock(int x, int y, int z, Integer type, Integer data) { BlockCoordinate loc = new BlockCoordinate(x, y, z); - CraftBlock block = (CraftBlock)blockCache.get(loc); - final int type = world.getTypeId(x, y, z); - final byte data = (byte)world.getData(x, y, z); + CraftBlock block = (CraftBlock) blockCache.get(loc); if (block == null) { - block = new CraftBlock(this, x, y, z, type, data); - blockCache.put(loc, block); - } else { - block.update(); + return; } - return block; + if (type == null) { + type = world.getTypeId(x, y, z); + } + if (data == null) { + data = world.getData(x, y, z); + } + + block.update(type, data.byteValue()); } public CraftChunk updateChunk(int x, int z) { diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java index efe07ef013..16718f8653 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java @@ -346,9 +346,13 @@ public class CraftBlock implements Block { return world.getHandle().p(x, y, z); } - public void update() { - type = world.getHandle().getTypeId(x, y, z); - data = (byte)world.getHandle().getData(x, y, z); + public void update(int type, byte data) { + this.type = type; + this.data = data; light = (byte)world.getHandle().j(x, y, z); } + + public void update() { + this.update( world.getHandle().getTypeId(x, y, z), (byte)world.getHandle().getData(x, y, z)); + } }