summaryrefslogtreecommitdiffstats
path: root/src/main/java/org
diff options
context:
space:
mode:
authorErik Broes <erikbroes@grum.nl>2011-01-30 20:19:56 +0100
committerErik Broes <erikbroes@grum.nl>2011-01-30 20:19:56 +0100
commit6c60b54fdf92d4470228ac16c80e4b6743407692 (patch)
tree0e0e85ed0cc2ea33776034f18e014f77a1dc26b7 /src/main/java/org
parentda00e2e3a980e6559176117fe30bab95fa169965 (diff)
downloadcraftbukkit-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.java20
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java10
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));
+ }
}