Class LongPosHelper
java.lang.Object
net.rodofire.easierworldcreator.util.LongPosHelper
Utility class for encoding and decoding
BlockPos into a single long value.
This encoding scheme uses:
- 26 bits for the x-coordinate
- 26 bits for the z-coordinate
- 12 bits for the y-coordinate
Using a long representation reduces memory usage and improves performance,
especially when working with LongArrayList.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intNumber of bits allocated for x and z coordinates.static final longBitmask for x and z coordinates (26 bits).static final intMaximum value for signed x and z before overflow.static final intNumber of bits allocated for y coordinate.static final longBitmask for y coordinate (12 bits).static final intMaximum value for signed y before overflow. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic longadd(long pos, int dx, int dy, int dz) static int[]convert2Array(net.minecraft.util.math.BlockPos pos) static net.minecraft.util.math.BlockPosdecodeBlockPos(long encoded) Decodes a long value back into aBlockPos.static int[]decodeBlockPos2Array(long encoded) static intdecodeX(long encoded) static intdecodeY(long encoded) static intdecodeZ(long encoded) static longencodeBlockPos(int x, int y, int z) Encodes the given coordinates into a single long value.static it.unimi.dsi.fastutil.longs.LongArrayListencodeBlockPos(List<net.minecraft.util.math.BlockPos> pos) Encodes aBlockPosinto a single long value.static longencodeBlockPos(net.minecraft.util.math.BlockPos pos) Encodes aBlockPosinto a single long value.static longencodeVec3d(net.minecraft.util.math.Vec3d pos) Encodes aBlockPosinto a single long value.static net.minecraft.util.math.ChunkPosgetChunkPos(long encoded) static longoffset(net.minecraft.util.math.Direction direction, long pos, int distance) static longup(long pos, int i)
-
Field Details
-
XZ_BITS
public static final int XZ_BITSNumber of bits allocated for x and z coordinates.- See Also:
-
Y_BITS
public static final int Y_BITSNumber of bits allocated for y coordinate.- See Also:
-
XZ_MASK
public static final long XZ_MASKBitmask for x and z coordinates (26 bits).- See Also:
-
Y_MASK
public static final long Y_MASKBitmask for y coordinate (12 bits).- See Also:
-
XZ_MAX
public static final int XZ_MAXMaximum value for signed x and z before overflow.- See Also:
-
Y_MAX
public static final int Y_MAXMaximum value for signed y before overflow.- See Also:
-
-
Constructor Details
-
LongPosHelper
public LongPosHelper()
-
-
Method Details
-
encodeBlockPos
public static long encodeBlockPos(int x, int y, int z) Encodes the given coordinates into a single long value.- Parameters:
x- The x-coordinate (-33,554,432 to 33,554,431)y- The y-coordinate (-2,048 to 2,047)z- The z-coordinate (-33,554,432 to 33,554,431)- Returns:
- Encoded long value representing the
BlockPos
-
encodeBlockPos
public static long encodeBlockPos(net.minecraft.util.math.BlockPos pos) Encodes aBlockPosinto a single long value.- Parameters:
pos- The block position- Returns:
- Encoded long value
-
encodeVec3d
public static long encodeVec3d(net.minecraft.util.math.Vec3d pos) Encodes aBlockPosinto a single long value.- Parameters:
pos- The block position- Returns:
- Encoded long value
-
encodeBlockPos
public static it.unimi.dsi.fastutil.longs.LongArrayList encodeBlockPos(List<net.minecraft.util.math.BlockPos> pos) Encodes aBlockPosinto a single long value.- Parameters:
pos- The block position- Returns:
- Encoded long value
-
decodeBlockPos
public static net.minecraft.util.math.BlockPos decodeBlockPos(long encoded) Decodes a long value back into aBlockPos.- Parameters:
encoded- The encoded long value- Returns:
- Decoded
BlockPos
-
decodeBlockPos2Array
public static int[] decodeBlockPos2Array(long encoded) -
convert2Array
public static int[] convert2Array(net.minecraft.util.math.BlockPos pos) -
decodeX
public static int decodeX(long encoded) -
decodeZ
public static int decodeZ(long encoded) -
decodeY
public static int decodeY(long encoded) -
getChunkPos
public static net.minecraft.util.math.ChunkPos getChunkPos(long encoded) -
add
public static long add(long pos, int dx, int dy, int dz) -
up
public static long up(long pos, int i) -
offset
public static long offset(net.minecraft.util.math.Direction direction, long pos, int distance)
-