2020-04-24 03:25:58 +02:00
|
|
|
package net.minestom.server.utils;
|
2019-08-23 23:55:09 +02:00
|
|
|
|
2021-07-08 13:48:28 +02:00
|
|
|
import net.minestom.server.coordinate.Point;
|
|
|
|
import net.minestom.server.coordinate.Vec;
|
2021-07-05 09:10:03 +02:00
|
|
|
|
2020-08-07 08:10:10 +02:00
|
|
|
public final class SerializerUtils {
|
|
|
|
|
|
|
|
private SerializerUtils() {
|
|
|
|
|
|
|
|
}
|
2019-08-23 23:55:09 +02:00
|
|
|
|
2019-08-25 20:03:43 +02:00
|
|
|
public static long positionToLong(int x, int y, int z) {
|
|
|
|
return (((long) x & 0x3FFFFFF) << 38) | (((long) z & 0x3FFFFFF) << 12) | ((long) y & 0xFFF);
|
|
|
|
}
|
|
|
|
|
2021-07-05 09:10:03 +02:00
|
|
|
public static Point longToBlockPosition(long value) {
|
2020-08-01 11:00:31 +02:00
|
|
|
final int x = (int) (value >> 38);
|
2021-12-13 16:41:30 +01:00
|
|
|
final int y = (int) (value << 52 >> 52);
|
2020-08-01 11:00:31 +02:00
|
|
|
final int z = (int) (value << 26 >> 38);
|
2021-07-05 09:10:03 +02:00
|
|
|
return new Vec(x, y, z);
|
2019-08-23 23:55:09 +02:00
|
|
|
}
|
|
|
|
}
|