Skip to main content



In Sandstone, coordinates and rotation are just an array of strings.

For example,

// Compiles to /setblock 0 5 0 dirt
setblock(['0', '5', '0'], 'dirt')
// Compiles to /setblock ~ ~10 ~ dirt
setblock(['~', '~10', '~'], 'dirt')

However, this isn't convenient to use. Therefore, Sandstone provides three helper functions to allow you to easily use numerical values as absolute, relative or local coordinates.


In order to create coordinates from numbers, you can use one of the following functions:

  • absolute or abs for absolute coordinates
  • relative or rel for relative coordinates, using the tilde ~ notation
  • local or loc for local coordinates, using the caret ^ notation

You can use them in two ways: with a single number, or with several ones. A single number returns a single string. Several numbers will return an array of strings:

import { abs, rel, loc } from 'sandstone'
// A single number
// Several numbers
abs(0, 10, 0)['0', '10', '0']
rel(0, 10, 0)['~', '~10', '~']
loc(0, 10, 0)['^', '^10', '^']

If you want to mix different kind of coordinates in the same command, you should use single numbers. If all your coordinates are of the same kind, multiple numbers are better.

// Compiles to /setblock 0 0 0 dirt
setblock(rel(0, 0, 0), 'dirt')
// Compiles to /setblock ^ ^ ^1 dirt
setblock(loc(0, 0, 1), 'dirt')
// Compiles to /setblock ~ 0 ~ bedrock
setblock([rel(0), abs(0), rel(0)], 'dirt')