Interface Location<W extends World<W,​L>,​L extends Location<W,​L>>

All Known Subinterfaces:
ClientLocation, ServerLocation

public interface Location<W extends World<W,​L>,​L extends Location<W,​L>>
  • Method Summary

    Modifier and Type
    Method
    Description
    add​(double x, double y, double z)
    Add vector components to the position on this instance, returning a new Location instance.
    add​(Vector3d v)
    Add another Vector3d to the position on this instance, returning a new Location instance.
    add​(Vector3i v)
    Add another Vector3i to the position on this instance, returning a new Location instance.
    Gets the block at this location.
    Gets the underlying biome position.
    Gets the BlockState for this location.
    Gets the associated BlockEntity on this block.
    Gets the underlying block position.
    default BlockType
    Gets the BlockType for this location.
    int
    Gets the floored X component of this instance's position.
    int
    Gets the floored Y component of this instance's position.
    int
    Gets the floored Z component of this instance's position.
    Gets the underlying chunk position.
    Gets the FluidState for this location.
    boolean
    Returns true if this location has a block at its blockPosition().
    boolean
    Checks for whether the block at this location contains block entity data.
    boolean
    inWorld​(W world)
    Returns true if this location is in the given world.
    boolean
    Gets whether this location is available.
    boolean
    Gets whether this location is valid.
     
    Gets the underlying position.
    relativeTo​(Direction direction)
    Gets the location next to this one in the given direction.
    relativeToBlock​(Direction direction)
    Gets the location next to this one in the given direction.
    boolean
    setBlock​(BlockState state)
    Replace the block at this location with a new state.
    boolean
    Replace the block at this location with a new state.
    boolean
    Replace the block type at this location by a new type.
    boolean
    Replace the block type at this location by a new type.
    sub​(double x, double y, double z)
    Subtract vector components to the position on this instance, returning a new Location instance.
    sub​(Vector3d v)
    Subtract another Vector3d to the position on this instance, returning a new Location instance.
    sub​(Vector3i v)
    Subtract another Vector3i to the position on this instance, returning a new Location instance.
    Create a new instance with a new block position.
    withPosition​(Vector3d position)
    Create a new instance with a new position.
    withWorld​(W world)
    Create a new instance with a new World.
    Gets the underlying world.
    Gets the underlying World if it's available.
    double
    x()
    Gets the X component of this instance's position.
    double
    y()
    Gets the Y component of this instance's position.
    double
    z()
    Gets the Z component of this instance's position.
  • Method Details

    • world

      W world()
      Gets the underlying world. Throws a IllegalStateException if the world isn't available.
      Returns:
      The underlying world
      See Also:
      worldIfAvailable()
    • worldIfAvailable

      Optional<W> worldIfAvailable()
      Gets the underlying World if it's available. A World is available when it exists and is loaded.
      Returns:
      The underlying world, if available
      See Also:
      isAvailable()
    • isAvailable

      boolean isAvailable()
      Gets whether this location is available. A location is available when the target World exists and is loaded.
      Returns:
      Whether the location is available
    • isValid

      boolean isValid()
      Gets whether this location is valid. A location is valid when the target World exists, this can be loaded or unloaded.
      Returns:
      Whether the location is valid
    • position

      Vector3d position()
      Gets the underlying position.
      Returns:
      The underlying position
    • blockPosition

      Vector3i blockPosition()
      Gets the underlying block position.
      Returns:
      The underlying block position
    • chunkPosition

      Vector3i chunkPosition()
      Gets the underlying chunk position.
      Returns:
      The underlying chunk position
    • biomePosition

      Vector3i biomePosition()
      Gets the underlying biome position.
      Returns:
      The underlying biome position
    • x

      double x()
      Gets the X component of this instance's position.
      Returns:
      The x component
    • y

      double y()
      Gets the Y component of this instance's position.
      Returns:
      The y component
    • z

      double z()
      Gets the Z component of this instance's position.
      Returns:
      The z component
    • blockX

      int blockX()
      Gets the floored X component of this instance's position.
      Returns:
      The floored x component
    • blockY

      int blockY()
      Gets the floored Y component of this instance's position.
      Returns:
      The floored y component
    • blockZ

      int blockZ()
      Gets the floored Z component of this instance's position.
      Returns:
      The floored z component
    • onServer

      default Optional<ServerLocation> onServer()
    • inWorld

      boolean inWorld(W world)
      Returns true if this location is in the given world. This is implemented as an Object.equals(Object) check.
      Parameters:
      world - The world to check
      Returns:
      Whether this location is in the world
    • withWorld

      L withWorld(W world)
      Create a new instance with a new World.
      Parameters:
      world - The new world
      Returns:
      A new instance
    • withPosition

      L withPosition(Vector3d position)
      Create a new instance with a new position.
      Parameters:
      position - The new position
      Returns:
      A new instance
    • withBlockPosition

      L withBlockPosition(Vector3i position)
      Create a new instance with a new block position.
      Parameters:
      position - The new position
      Returns:
      A new instance
    • sub

      L sub(Vector3d v)
      Subtract another Vector3d to the position on this instance, returning a new Location instance.
      Parameters:
      v - The vector to subtract
      Returns:
      A new instance
    • sub

      L sub(Vector3i v)
      Subtract another Vector3i to the position on this instance, returning a new Location instance.
      Parameters:
      v - The vector to subtract
      Returns:
      A new instance
    • sub

      L sub(double x, double y, double z)
      Subtract vector components to the position on this instance, returning a new Location instance.
      Parameters:
      x - The x component
      y - The y component
      z - The z component
      Returns:
      A new instance
    • add

      L add(Vector3d v)
      Add another Vector3d to the position on this instance, returning a new Location instance.
      Parameters:
      v - The vector to add
      Returns:
      A new instance
    • add

      L add(Vector3i v)
      Add another Vector3i to the position on this instance, returning a new Location instance.
      Parameters:
      v - The vector to add
      Returns:
      A new instance
    • add

      L add(double x, double y, double z)
      Add vector components to the position on this instance, returning a new Location instance.
      Parameters:
      x - The x component
      y - The y component
      z - The z component
      Returns:
      A new instance
    • relativeTo

      L relativeTo(Direction direction)
      Gets the location next to this one in the given direction. Always moves by a unit amount, even diagonally.
      Parameters:
      direction - The direction to move in
      Returns:
      The location in that direction
    • relativeToBlock

      L relativeToBlock(Direction direction)
      Gets the location next to this one in the given direction. Always moves by a block amount, even diagonally.

      Direction.Division.SECONDARY_ORDINAL directions are not a valid argument. These will throw an exception.

      Parameters:
      direction - The direction to move in
      Returns:
      The location in that direction
      Throws:
      IllegalArgumentException - If the direction is a Direction.Division.SECONDARY_ORDINAL
    • biome

      Biome biome()
      Gets the block at this location.
      Returns:
      The biome at this location
    • hasBlock

      boolean hasBlock()
      Returns true if this location has a block at its blockPosition().
      Returns:
      Whether or not there is a block at this location.
    • block

      BlockState block()
      Gets the BlockState for this location.
      Returns:
      The block state
    • blockType

      default BlockType blockType()
      Gets the BlockType for this location.
      Returns:
      The block type
    • fluid

      FluidState fluid()
      Gets the FluidState for this location.
      Returns:
      The fluid state
    • hasBlockEntity

      boolean hasBlockEntity()
      Checks for whether the block at this location contains block entity data.
      Returns:
      True if the block at this location has block entity data, false otherwise
    • blockEntity

      Optional<? extends BlockEntity> blockEntity()
      Gets the associated BlockEntity on this block.
      Returns:
      The associated block entity, if available
    • setBlock

      boolean setBlock(BlockState state)
      Replace the block at this location with a new state.

      This will remove any extended block data at the given position.

      Parameters:
      state - The new block state
      Returns:
      True if the block change was successful
    • setBlock

      boolean setBlock(BlockState state, BlockChangeFlag flag)
      Replace the block at this location with a new state.

      This will remove any extended block data at the given position.

      Parameters:
      state - The new block state
      flag - The various change flags controlling some interactions
      Returns:
      True if the block change was successful
    • setBlockType

      boolean setBlockType(BlockType type)
      Replace the block type at this location by a new type.

      This will remove any extended block data at the given position.

      Parameters:
      type - The new type
      Returns:
      True if the block change was successful
    • setBlockType

      boolean setBlockType(BlockType type, BlockChangeFlag flag)
      Replace the block type at this location by a new type.

      This will remove any extended block data at the given position.

      Parameters:
      type - The new type
      flag - The various change flags controlling some interactions
      Returns:
      True if the block change was successful