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

    • Method Detail

      • world

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

        java.util.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
      • 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:
        java.lang.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.
      • blockType

        default BlockType blockType()
        Gets the BlockType for this location.
        Returns:
        The block type
      • 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

        java.util.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