summaryrefslogtreecommitdiffstats
path: root/src/org
diff options
context:
space:
mode:
authorDinnerbone <dinnerbone@dinnerbone.com>2010-12-28 23:52:29 +0000
committerDinnerbone <dinnerbone@dinnerbone.com>2010-12-28 23:52:29 +0000
commit804b5e7d2b97ac37d2d6938c276b2c6ba834547d (patch)
treecb918502024fa317e26173788e22ecda3cb23d8c /src/org
parentef622b20d148409528b60c9bed099a5618871583 (diff)
downloadcraftbukkit-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.java4
-rw-r--r--src/org/bukkit/craftbukkit/CraftWorld.java17
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;