diff --git a/src/main/java/org/ultramine/server/chunk/ChunkHash.java b/src/main/java/org/ultramine/server/chunk/ChunkHash.java index 26cd92d..8fccead 100644 --- a/src/main/java/org/ultramine/server/chunk/ChunkHash.java +++ b/src/main/java/org/ultramine/server/chunk/ChunkHash.java @@ -28,6 +28,27 @@ public static long blockCoordToHash(int x, int y, int z) { - return (long)(x & 0xffffff) | ((long)(z & 0xffffff) << 32) | ((long)(y & 0xff) << 56); + return (long)(x & 0xffffff) | ((long)(y & 0xff) << 24) | ((long)(z & 0xffffff) << 32); + } + + public static int blockKeyToX(long key) + { + int x = (int)(key & 0xffffff); + if((x & 8388608) != 0) + x |= 0xff << 24; + return x; + } + + public static int blockKeyToZ(long key) + { + int z = (int)((key >> 32) & 0xffffff); + if((z & 8388608) != 0) + z |= 0xff << 24; + return z; + } + + public static int blockKeyToY(long key) + { + return (int)((key >> 24) & 0xff); } }