diff options
author | Erik Broes <erikbroes@grum.nl> | 2011-01-30 20:19:56 +0100 |
---|---|---|
committer | Erik Broes <erikbroes@grum.nl> | 2011-01-30 20:19:56 +0100 |
commit | 6c60b54fdf92d4470228ac16c80e4b6743407692 (patch) | |
tree | 0e0e85ed0cc2ea33776034f18e014f77a1dc26b7 /src/main/java/org | |
parent | da00e2e3a980e6559176117fe30bab95fa169965 (diff) | |
download | craftbukkit-6c60b54fdf92d4470228ac16c80e4b6743407692.tar craftbukkit-6c60b54fdf92d4470228ac16c80e4b6743407692.tar.gz craftbukkit-6c60b54fdf92d4470228ac16c80e4b6743407692.tar.lz craftbukkit-6c60b54fdf92d4470228ac16c80e4b6743407692.tar.xz craftbukkit-6c60b54fdf92d4470228ac16c80e4b6743407692.zip |
Optimized blockCache, now only stores blocks asked for
Diffstat (limited to 'src/main/java/org')
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/CraftWorld.java | 20 | ||||
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java | 10 |
2 files changed, 18 insertions, 12 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index d7d2093c..30e91359 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 efe07ef0..16718f86 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)); + } } |