Class LongPosHelper

java.lang.Object
net.rodofire.easierworldcreator.util.LongPosHelper

public class LongPosHelper extends Object
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
The encoding preserves the sign of the coordinates.

Using a long representation reduces memory usage and improves performance, especially when working with LongArrayList.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Number of bits allocated for x and z coordinates.
    static final long
    Bitmask for x and z coordinates (26 bits).
    static final int
    Maximum value for signed x and z before overflow.
    static final int
    Number of bits allocated for y coordinate.
    static final long
    Bitmask for y coordinate (12 bits).
    static final int
    Maximum value for signed y before overflow.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static long
    add(long pos, int dx, int dy, int dz)
     
    static int[]
    convert2Array(net.minecraft.util.math.BlockPos pos)
     
    static net.minecraft.util.math.BlockPos
    decodeBlockPos(long encoded)
    Decodes a long value back into a BlockPos.
    static int[]
    decodeBlockPos2Array(long encoded)
     
    static int
    decodeX(long encoded)
     
    static int
    decodeY(long encoded)
     
    static int
    decodeZ(long encoded)
     
    static long
    encodeBlockPos(int x, int y, int z)
    Encodes the given coordinates into a single long value.
    static it.unimi.dsi.fastutil.longs.LongArrayList
    encodeBlockPos(List<net.minecraft.util.math.BlockPos> pos)
    Encodes a BlockPos into a single long value.
    static long
    encodeBlockPos(net.minecraft.util.math.BlockPos pos)
    Encodes a BlockPos into a single long value.
    static long
    encodeVec3d(net.minecraft.util.math.Vec3d pos)
    Encodes a BlockPos into a single long value.
    static net.minecraft.util.math.ChunkPos
    getChunkPos(long encoded)
     
    static long
    offset(net.minecraft.util.math.Direction direction, long pos, int distance)
     
    static long
    up(long pos, int i)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • XZ_BITS

      public static final int XZ_BITS
      Number of bits allocated for x and z coordinates.
      See Also:
    • Y_BITS

      public static final int Y_BITS
      Number of bits allocated for y coordinate.
      See Also:
    • XZ_MASK

      public static final long XZ_MASK
      Bitmask for x and z coordinates (26 bits).
      See Also:
    • Y_MASK

      public static final long Y_MASK
      Bitmask for y coordinate (12 bits).
      See Also:
    • XZ_MAX

      public static final int XZ_MAX
      Maximum value for signed x and z before overflow.
      See Also:
    • Y_MAX

      public static final int Y_MAX
      Maximum 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 a BlockPos into 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 a BlockPos into 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 a BlockPos into 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 a BlockPos.
      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)