diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 1cfe31b8..9affe4c2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -277,7 +277,7 @@ public boolean loadChunk(int x, int z, boolean generate) { private void chunkLoadPostProcess(net.minecraft.world.chunk.Chunk chunk, int x, int z) { if (chunk != null) { - world.theChunkProviderServer.loadedChunkHashMap_KC.add(LongHash.toLong(x, z), chunk); // Passes to chunkt_TH + world.theChunkProviderServer.loadedChunkHashMap_KC.add(ChunkCoordIntPair.chunkXZ2Int(x, z), chunk); // Passes to chunkt_TH world.theChunkProviderServer.loadedChunks.add(chunk); // Cauldron - vanilla compatibility chunk.onChunkLoad(); diff --git a/src/main/java/org/bukkit/craftbukkit/util/LongHash.java b/src/main/java/org/bukkit/craftbukkit/util/LongHash.java index 9d54472f..f1971fc9 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/LongHash.java +++ b/src/main/java/org/bukkit/craftbukkit/util/LongHash.java @@ -2,7 +2,7 @@ public class LongHash { public static long toLong(int msw, int lsw) { - return ((long) msw << 32) + lsw - Integer.MIN_VALUE; + return (long)msw & 4294967295L | ((long)lsw & 4294967295L) << 32; } public static int msw(long l) { diff --git a/src/main/java/thermos/wrapper/VanillaChunkHashMap.java b/src/main/java/thermos/wrapper/VanillaChunkHashMap.java index 4938309d..ad2b7239 100644 --- a/src/main/java/thermos/wrapper/VanillaChunkHashMap.java +++ b/src/main/java/thermos/wrapper/VanillaChunkHashMap.java @@ -11,16 +11,16 @@ public class VanillaChunkHashMap extends LongHashMap { private final ChunkBlockHashMap chunkt_TH; - private final ConcurrentHashMap vanilla = new ConcurrentHashMap(); + private final HashMap vanilla = new HashMap(); public VanillaChunkHashMap(ChunkBlockHashMap chunkt_TH) { this.chunkt_TH = chunkt_TH; } - private static long V2B(long key) { + /*private static long V2B(long key) { return LongHash.toLong((int) (key & 0xFFFFFFFFL), (int) (key >>> 32)); - } + }*/ - public ConcurrentHashMap rawVanilla() + public HashMap rawVanilla() { return vanilla; } @@ -41,24 +41,24 @@ public void add(long key, Object value) { { Chunk c = (Chunk) value; chunkt_TH.put(c); - vanilla.put(V2B(key), c); + vanilla.put(super.getHashedKey(key), c); } } @Override public boolean containsItem(long key) { - return vanilla.containsKey(V2B(key)); + return vanilla.containsKey(super.getHashedKey(key)); } @Override public Object getValueByKey(long key) { - return vanilla.get(V2B(key)); + return vanilla.get(super.getHashedKey(key)); } @Override public Object remove(long key) { - Object o = vanilla.remove(V2B(key)); + Object o = vanilla.remove(super.getHashedKey(key)); if(o instanceof Chunk) // Thermos - Use our special map { Chunk c = (Chunk)o; @@ -66,5 +66,10 @@ public Object remove(long key) { } return o; } - + + @Override + public int getNumHashElements() + { + return this.vanilla.size(); + } }