Package io.papermc.paper.math

# Interface Position

All Known Subinterfaces:
  `BlockPosition`, `FinePosition`

All Known Implementing Classes:
  `Location`

@Experimental public interface Position
Common interface for `FinePosition` and `BlockPosition`.

May see breaking changes until Experimental annotation is removed.

## Field Summary

Fields
Modifier and Type
Field
Description
`static final BlockPosition`
`BLOCK_ZERO`
`static final FinePosition`
`FINE_ZERO`

## Method Summary

Modifier and Type
Method
Description
`static @NotNull BlockPosition`
`block(int x, int y, int z)`
Creates a position at the coordinates
`static @NotNull BlockPosition`
`block(@NotNull Location location)`
Creates a position from the location.
`int`
`blockX()`
Gets the block x value for this position
`int`
`blockY()`
Gets the block x value for this position
`int`
`blockZ()`
Gets the block x value for this position
`static @NotNull FinePosition`
`fine(double x, double y, double z)`
Creates a position at the coordinates
`static @NotNull FinePosition`
`fine(@NotNull Location location)`
Creates a position from the location.
`boolean`
`isBlock()`
Checks of this position represents a `BlockPosition`
`boolean`
`isFine()`
Checks if this position represents a `FinePosition`
`@NotNull FinePosition`
`offset(double x, double y, double z)`
Returns a position offset by the specified amounts.
`@NotNull Position`
`offset(int x, int y, int z)`
Returns a position offset by the specified amounts.
`@NotNull BlockPosition`
`toBlock()`
Returns the block position of this position or itself if it already is a block position
`default @NotNull FinePosition`
`toCenter()`
Returns a new position at the center of the block position this represents
`default @NotNull Location`
`toLocation(@NotNull World world)`
Creates a new location object at this position with the specified world
`default @NotNull Vector`
`toVector()`
Converts this position to a vector
`double`
`x()`
Gets the x value for this position
`double`
`y()`
Gets the y value for this position
`double`
`z()`
Gets the z value for this position

## Field Details

### FINE_ZERO

static final FinePosition FINE_ZERO

### BLOCK_ZERO

static final BlockPosition BLOCK_ZERO

## Method Details

### blockX

int blockX()
Gets the block x value for this position

Returns:
  the block x value

### blockY

int blockY()
Gets the block x value for this position

Returns:
  the block x value

### blockZ

int blockZ()
Gets the block x value for this position

Returns:
  the block x value

### x

double x()
Gets the x value for this position

Returns:
  the x value

### y

double y()
Gets the y value for this position

Returns:
  the y value

### z

double z()
Gets the z value for this position

Returns:
  the z value

### isBlock

boolean isBlock()
Checks of this position represents a `BlockPosition`

Returns:
  true if block

### isFine

boolean isFine()
Checks if this position represents a `FinePosition`

Returns:
  true if fine

### offset

@NotNull @NotNull Position offset(int x, int y, int z)
Returns a position offset by the specified amounts.

Parameters:
  `x` - x value to offset
  `y` - y value to offset
  `z` - z value to offset
Returns:
  the offset position

### offset

@NotNull @NotNull FinePosition offset(double x, double y, double z)
Returns a position offset by the specified amounts.

Parameters:
  `x` - x value to offset
  `y` - y value to offset
  `z` - z value to offset
Returns:
  the offset position

### toCenter

@Contract(value="-> new", pure=true) @NotNull default @NotNull FinePosition toCenter()
Returns a new position at the center of the block position this represents

Returns:
  a new center position

### toBlock

@Contract(pure=true) @NotNull @NotNull BlockPosition toBlock()
Returns the block position of this position or itself if it already is a block position

Returns:
  the block position

### toVector

@Contract(value="-> new", pure=true) @NotNull default @NotNull Vector toVector()
Converts this position to a vector

Returns:
  a new vector

### toLocation

@Contract(value="_ -> new", pure=true) @NotNull default @NotNull Location toLocation(@NotNull @NotNull World world)
Creates a new location object at this position with the specified world

Parameters:
  `world` - the world for the location object
Returns:
  a new location

### block

@Contract(value="_, _, _ -> new", pure=true) @NotNull static @NotNull BlockPosition block(int x, int y, int z)
Creates a position at the coordinates

Parameters:
  `x` - x coord
  `y` - y coord
  `z` - z coord
Returns:
  a position with those coords

### block

@Contract(value="_ -> new", pure=true) @NotNull static @NotNull BlockPosition block(@NotNull @NotNull Location location)
Creates a position from the location.

Parameters:
  `location` - the location to copy the position of
Returns:
  a new position at that location

### fine

@Contract(value="_, _, _ -> new", pure=true) @NotNull static @NotNull FinePosition fine(double x, double y, double z)
Creates a position at the coordinates

Parameters:
  `x` - x coord
  `y` - y coord
  `z` - z coord
Returns:
  a position with those coords

### fine

@Contract(value="_ -> new", pure=true) @NotNull static @NotNull FinePosition fine(@NotNull @NotNull Location location)
Creates a position from the location.

Parameters:
  `location` - the location to copy the position of
Returns:
  a new position at that location