diff options
author | Dinnerbone <dinnerbone@dinnerbone.com> | 2010-12-28 23:52:29 +0000 |
---|---|---|
committer | Dinnerbone <dinnerbone@dinnerbone.com> | 2010-12-28 23:52:29 +0000 |
commit | 804b5e7d2b97ac37d2d6938c276b2c6ba834547d (patch) | |
tree | cb918502024fa317e26173788e22ecda3cb23d8c /src/org | |
parent | ef622b20d148409528b60c9bed099a5618871583 (diff) | |
download | craftbukkit-804b5e7d2b97ac37d2d6938c276b2c6ba834547d.tar craftbukkit-804b5e7d2b97ac37d2d6938c276b2c6ba834547d.tar.gz craftbukkit-804b5e7d2b97ac37d2d6938c276b2c6ba834547d.tar.lz craftbukkit-804b5e7d2b97ac37d2d6938c276b2c6ba834547d.tar.xz craftbukkit-804b5e7d2b97ac37d2d6938c276b2c6ba834547d.zip |
Keep Blocks updated when changed by the world
Diffstat (limited to 'src/org')
-rw-r--r-- | src/org/bukkit/craftbukkit/CraftBlock.java | 4 | ||||
-rw-r--r-- | src/org/bukkit/craftbukkit/CraftWorld.java | 17 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/org/bukkit/craftbukkit/CraftBlock.java b/src/org/bukkit/craftbukkit/CraftBlock.java index 0f40dd78..5d865564 100644 --- a/src/org/bukkit/craftbukkit/CraftBlock.java +++ b/src/org/bukkit/craftbukkit/CraftBlock.java @@ -9,8 +9,8 @@ public class CraftBlock implements Block { private final int x; private final int y; private final int z; - private int type; - private byte data; + protected int type; + protected byte data; protected CraftBlock(final World world, final int x, final int y, final int z, final int type, final byte data) { this.world = world; diff --git a/src/org/bukkit/craftbukkit/CraftWorld.java b/src/org/bukkit/craftbukkit/CraftWorld.java index 304f3079..ec7298aa 100644 --- a/src/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/org/bukkit/craftbukkit/CraftWorld.java @@ -49,6 +49,23 @@ public class CraftWorld implements World { throw new UnsupportedOperationException("Not supported yet."); } + public Block updateBlock(int x, int y, int z) { + BlockCoordinate loc = new BlockCoordinate(x, y, z); + CraftBlock block = (CraftBlock)blockCache.get(loc); + final int type = world.a(x, y, z); + final byte data = (byte)world.b(x, y, z); + + if (block == null) { + block = new CraftBlock(this, x, y, z, type, data); + blockCache.put(loc, block); + } else { + block.type = type; + block.data = data; + } + + return block; + } + private final class ChunkCoordinate { public final int x; public final int z; |