Interface ChunkLayout


  • public interface ChunkLayout
    A class for information about the chunk coordinate space, aka the layout. This can be used to obtain information about the chunk size and the space bounds, validate coordinates, convert from chunk to world and vice-versa and translate coordinates; among other things.
    • Method Detail

      • chunkSize

        Vector3i chunkSize()
        Returns the size of the chunks in blocks. The axes are matched to the corresponding vector components.
        Returns:
        The size of chunks
      • spaceMax

        Vector3i spaceMax()
        Returns the maximum coordinates for chunks for each axis. The axes are matched to the corresponding vector components. Due to the limited precision of 32bit integers, there always is a practical limit.
        Returns:
        The maximum coordinates of chunks
      • spaceMin

        Vector3i spaceMin()
        Returns the minimum coordinates for chunks for each axis. The axes are matched to the corresponding vector components. Due to the limited precision of 32bit integers, there always is a practical limit.
        Returns:
        The minimum coordinates of chunks
      • spaceSize

        Vector3i spaceSize()
        Gets the total size of the chunk space, which is equivalent to spaceMax() - spaceMin() + 1.
        Returns:
        The total size of the chunk space
      • spaceOrigin

        Vector3i spaceOrigin()
        Returns the origin of the chunk coordinate space. Normally Vector3i.ZERO.
        Returns:
        The origin of the chunk coordinate space
      • isValidChunk

        default boolean isValidChunk​(Vector3i coords)
        Returns true if the coordinates are valid chunk coordinates. False if otherwise.
        Parameters:
        coords - The coordinates to validate
        Returns:
        Whether or not the coordinates are valid for chunks
      • isValidChunk

        default boolean isValidChunk​(int x,
                                     int y,
                                     int z)
        Returns true if the coordinates are valid chunk coordinates. False if otherwise.
        Parameters:
        x - The x coordinate to validate
        y - The y coordinate to validate
        z - The z coordinate to validate
        Returns:
        Whether or not the coordinates are valid for chunks
      • isInChunk

        default boolean isInChunk​(Vector3i localCoords)
        Returns true if the local coordinates fit in a chunk. That is they are positive and smaller than the chunk's size.
        Parameters:
        localCoords - The coordinates to check
        Returns:
        Whether or not the coordinates fit in a chunk
      • isInChunk

        boolean isInChunk​(int x,
                          int y,
                          int z)
        Returns true if the local coordinates fit in a chunk. That is they are positive and smaller than the chunk's size.
        Parameters:
        x - The x local coordinate to validate
        y - The y local coordinate to validate
        z - The z local coordinate to validate
        Returns:
        Whether or not the coordinates fit in a chunk
      • isInChunk

        default boolean isInChunk​(Vector3i worldCoords,
                                  Vector3i chunkCoords)
        Returns true if the world coordinates fit in the chunk at the given coordinates.
        Parameters:
        worldCoords - The world coordinates to validate
        chunkCoords - The chunk coordinates in which they must fit
        Returns:
        Whether or not the world coordinates fit in the chunk
      • isInChunk

        boolean isInChunk​(int wx,
                          int wy,
                          int wz,
                          int cx,
                          int cy,
                          int cz)
        Returns true if the world coordinates fit in the chunk at the given coordinates.
        Parameters:
        wx - The x world coordinate to validate
        wy - The y world coordinate to validate
        wz - The z world coordinate to validate
        cx - The x chunk coordinate in which they must fit
        cy - The y chunk coordinate in which they must fit
        cz - The z chunk coordinate in which they must fit
        Returns:
        Whether or not the world coordinates fit in the chunk
      • toChunk

        default Optional<Vector3i> toChunk​(Vector3i worldCoords)
        Converts world coordinates to chunk coordinates. Returns nothing if the conversion failed because the resulting chunk coordinates aren't valid.
        Parameters:
        worldCoords - The world coordinates to convert to chunk coordinates
        Returns:
        The chunk coordinates on success, else nothing
      • toChunk

        default Optional<Vector3i> toChunk​(int x,
                                           int y,
                                           int z)
        Converts world coordinates to chunk coordinates. Returns nothing if the conversion failed because the resulting chunk coordinates aren't valid.
        Parameters:
        x - The x world coordinate to convert to chunk coordinates
        y - The y world coordinate to convert to chunk coordinates
        z - The z world coordinate to convert to chunk coordinates
        Returns:
        The chunk coordinates on success, else nothing
      • toWorld

        default Optional<Vector3i> toWorld​(Vector3i chunkCoords)
        Converts chunk coordinates to world coordinates. Returns nothing if the conversion failed because the given chunk coordinates aren't valid.
        Parameters:
        chunkCoords - The chunk coordinates to convert to world coordinates
        Returns:
        The world coordinates on success, else nothing
      • toWorld

        default Optional<Vector3i> toWorld​(int x,
                                           int y,
                                           int z)
        Converts chunk coordinates to world coordinates. Returns nothing if the conversion failed because the given chunk coordinates aren't valid.
        Parameters:
        x - The x chunk coordinate to convert to world coordinates
        y - The y chunk coordinate to convert to world coordinates
        z - The z chunk coordinate to convert to world coordinates
        Returns:
        The world coordinates on success, else nothing
      • forceToChunk

        default Vector3i forceToChunk​(Vector3i worldCoords)
        Converts world coordinates to chunk coordinates. This method never fails and can returns invalid chunk coordinates.
        Parameters:
        worldCoords - The world coordinates to convert to chunk coordinates
        Returns:
        The chunk coordinates
      • forceToChunk

        Vector3i forceToChunk​(int x,
                              int y,
                              int z)
        Converts world coordinates to chunk coordinates. This method never fails and can return invalid chunk coordinates.
        Parameters:
        x - The x world coordinate to convert to chunk coordinates
        y - The y world coordinate to convert to chunk coordinates
        z - The z world coordinate to convert to chunk coordinates
        Returns:
        The chunk coordinates
      • forceToWorld

        default Vector3i forceToWorld​(Vector3i chunkCoords)
        Converts chunk coordinates to world coordinates. This method never fails and can returns invalid world coordinates.
        Parameters:
        chunkCoords - The chunk coordinates to convert to world coordinates
        Returns:
        The world coordinates
      • forceToWorld

        Vector3i forceToWorld​(int x,
                              int y,
                              int z)
        Converts chunk coordinates to world coordinates. This method never fails and can returns invalid world coordinates.
        Parameters:
        x - The x chunk coordinate to convert to world coordinates
        y - The y chunk coordinate to convert to world coordinates
        z - The z chunk coordinate to convert to world coordinates
        Returns:
        The world coordinates
      • addToChunk

        default Optional<Vector3i> addToChunk​(Vector3i chunkCoords,
                                              Vector3i chunkOffset)
        Adds the chunk offset to the chunk coordinates. Returns nothing if the new coordinates are not valid.
        Parameters:
        chunkCoords - The chunk coordinates to add to
        chunkOffset - The chunk offset to add to the chunk coordinates
        Returns:
        The new chunk coordinates if they are valid
      • addToChunk

        default Optional<Vector3i> addToChunk​(int cx,
                                              int cy,
                                              int cz,
                                              int ox,
                                              int oy,
                                              int oz)
        Adds the chunk offset to the chunk coordinates. Returns nothing if the new coordinates are not valid.
        Parameters:
        cx - The x chunk coordinate to add to
        cy - The y chunk coordinate to add to
        cz - The z chunk coordinate to add to
        ox - The x chunk offset to add to the chunk coordinates
        oy - The y chunk offset to add to the chunk coordinates
        oz - The z chunk offset to add to the chunk coordinates
        Returns:
        The new chunk coordinates if they are valid
      • moveToChunk

        default Optional<Vector3i> moveToChunk​(int x,
                                               int y,
                                               int z,
                                               Direction direction)
        Moves chunk coordinates one step in the given direction. Returns nothing if the new coordinates are not valid. Direction.Division.SECONDARY_ORDINAL directions are not a valid argument. These will throw an exception.
        Parameters:
        x - The x chunk coordinate to move from
        y - The y chunk coordinate to move from
        z - The z chunk coordinate to move from
        direction - The direction in which to move a step
        Returns:
        The new chunk coordinates if they are valid
        Throws:
        IllegalArgumentException - If the direction is a Direction.Division.SECONDARY_ORDINAL
      • moveToChunk

        default Optional<Vector3i> moveToChunk​(int x,
                                               int y,
                                               int z,
                                               Direction direction,
                                               int steps)
        Moves chunk coordinates a number of steps in the given direction. Returns nothing if the new coordinates are not valid. Direction.Division.SECONDARY_ORDINAL directions are not a valid argument. These will throw an exception.
        Parameters:
        x - The x chunk coordinate to move from
        y - The y chunk coordinate to move from
        z - The z chunk coordinate to move from
        direction - The direction in which to move
        steps - The number of steps to take
        Returns:
        The new chunk coordinates if they are valid
        Throws:
        IllegalArgumentException - If the direction is a Direction.Division.SECONDARY_ORDINAL