# Essentials: spawn, homes, nicknames and the everyday commands

> /spawn, /warp, /home, /rtp, /tpa, /back, /nick, /hat, /trash and /near for players; /heal, /feed, /god, /invsee and /vanish for staff.

Source: https://stygion.eu/docs/keystone/essentials
Updated: 2026-10-10

The `essentials` module, `essentials.toml`. The small things a server wants straight away: a spawn, warps, homes, invisible staff and the everyday commands. Each part can be switched off on its own (`spawn.enabled`, `warps.enabled`, `homes.enabled`, `vanish.enabled`, and one per command below).

## Spawn and warps

- `/spawn` and `/warp <name>` are for everybody (`keystone.spawn`, `keystone.warp`; the `default` group gets them at start). Tab offers the names; `/warp` on its own, or `/warps`, lists them.
- `/setwarp <name>` makes or moves a warp where you stand (`keystone.warp.set`), `/delwarp <name>` removes one (`keystone.warp.delete`). The editor has a **Warps** screen that lists them and deletes them.
- A warp into a world that is not loaded is listed as broken and refused with the reason.
- Where another mod already has `/warp` or `/spawn`, theirs stays; Keystone's are then under `/keystone`.

## Homes

From Keystone 0.2.1. Every player's own named places.

- `/sethome [name]` makes a home where you stand (or moves one that exists), `/home [name]` takes you back, `/delhome <name>` removes one and `/homes` lists them as buttons to click. Without a name it is the home called `home` (or your only one). Tab offers your own names only. All of it is one permission, `keystone.home`, which the `default` group gets at start.
- **How many is per group:** `homes.limits`, one `group=count` each (default `default=2`; for example `vip=4`, `vip-plus=6`, `legend=10`). The highest of the groups somebody is in counts, and so does `keystone.home.limit.<n>` from any group (up to 100; operators and `keystone.*` get 100). Nothing adds up. When a rank ends, homes over the limit keep working — only a new one is refused.
- **A safe teleport:** a countdown, `homes.warmup` (3 s), to stand still through — a step aside or a hit cancels it; after arriving, a cooldown, `homes.cooldown` (30 s). The landing is checked at the end: solid ground, room for feet and head, no lava or fire. If somebody built into the home, Keystone looks `homes.safe-search` blocks up, then down, and refuses rather than teleport you into a wall. `/sethome` where nobody can stand is refused.
- Between dimensions, unless `homes.across-worlds` is off.
- **Not into somebody else's land:** with FTB Chunks (`homes.respect-claims`), `/sethome` is refused in a chunk a team you are not in or allied with holds, and so is `/home` to a home that land was claimed over later.
- **Staff:** `keystone.home.others` — no group has it by default, operators do — allows `/home player:name`, `/delhome player:name` and `/homes player` (offline players too), with no countdown and no land check. Anybody without it gets the same refusal whether that player or home exists. `keystone.home.instant` skips the countdown and the cooldown for anybody who holds it.
- The editor has a **Homes** screen: every home with a search, the limit per group, and delete. Over the API, `GET /v1/homes` needs `homes.read` and `POST /v1/homes/delete` needs `homes.write` — **only the owner's keys carry these**, because a list of homes is a list of everybody's bases.
- Nothing of this runs every tick: a countdown looks at its player four times a second, only while it runs.

## Vanish

`/vanish` (`keystone.vanish`) takes staff out of every other player's world and tab list, out of the server list's count and names, the query port, `/list`, the join and leave lines, the Discord bridge's join line and topic, and the counts the local API gives out. Mobs ignore them and, unless `vanish.pick-up-items`, items stay on the ground. Whoever holds `keystone.vanish.see` still sees them. It survives a reconnect and a restart.

## Random teleport

From Keystone 0.2.2. `/rtp` puts a player somewhere random and safe. Permission `keystone.rtp`, which the `default` group gets at start; `rtp.enabled = false` turns it off.

- **Where:** in the ring between `rtp.min-distance` and `rtp.max-distance` blocks (defaults 500 and 5000) from the world's spawn, or from another point (`rtp.centre = "spawn"` or `"x, z"`). On solid ground — never water, lava, leaves or the Nether's roof (in a world with a ceiling it lands under it) — and, with FTB Chunks, never on a claim of a team the player is not in or allied with (`rtp.respect-claims`, checked again when the countdown ends). Keep `max-distance` inside the world border; places outside it are skipped.
- **Which dimensions:** `rtp.worlds`, one per line, each with its own distances if you like — `minecraft:overworld`, or `minecraft:the_nether 100-1000` (a Nether block is eight of the Overworld's). `/rtp` alone goes in the dimension the player stands in when it is listed, else to the first line; `/rtp <dimension>` picks one.
- **Built not to cost the server:** the chunk is loaded — usually generated — off the server thread, one try at a time, at most `rtp.attempts` (6) of them, and two players search at once. Places outside the border or on a stranger's claim are skipped before anything is loaded and do not count. Every `/rtp` may generate new chunks, so the farther the distance, the bigger the world grows.
- **Countdown and cooldown:** `rtp.warmup` (3 s) to stand still through — walking away or being hurt cancels it — and `rtp.cooldown` (300 s), counted from arriving or from a search that found nothing, because that one generated chunks too.
- `keystone.rtp.instant` skips the countdown and the cooldown for anybody who holds it.
- Where another mod already has `/rtp`, Keystone's is `/keystone rtp`.

## Teleport requests

From Keystone 0.2.2. `/tpa <player>` asks to go to somebody, `/tpahere <player>` asks them to come, `/tpaccept` and `/tpdeny` answer (the buttons in the question do too), `/tpacancel` takes your request back. `keystone.tpa` is all five and the `default` group gets it at start; `tpa.enabled = false` turns them off.

- A request lapses after `tpa.timeout` (60 s) and both are told. Whoever moves stands still for `tpa.warmup` (3 s) and lands next to the other one where they are *then*, on safe ground; walking away or being hurt cancels it. After arriving, `tpa.cooldown` (30 s) before the same player may be moved by a request again.
- Between dimensions unless `tpa.across-worlds` is off. Not into somebody else's land (`tpa.respect-claims`, FTB Chunks): whoever said yes may be standing in a base that is neither theirs nor the mover's.
- **Staff:** `keystone.tpa.others` goes and brings at once, without asking, with no countdown and no land check. `keystone.tpa.instant` skips the countdown and the cooldown. A vanished player cannot be asked.
- Where another mod already has `/tpa`, Keystone's are under `/keystone`.

## Back

From Keystone 0.2.2. `/back` returns a player to where they stood before Keystone last moved them — `/spawn`, `/warp`, `/home`, `/rtp`, a teleport request or `/back` itself — or to where they died (`back.on-death`). Permission `keystone.back`, and `keystone.back.death` for the place of a death; both are in the `default` group from the first start. `keystone.back.instant` skips the countdown and the cooldown.

- **A death comes first** (0.2.4, `back.prefer-death`, on): after dying, `/back` goes to where they died even when they have taken `/spawn` or `/home` since, until it has taken them there once; the next `/back` then goes to the teleport before. Off: whichever happened last. Somebody without `keystone.back.death` goes back to their last teleport instead.
- A vanilla `/tp` or another mod's teleport is not seen, and a restart forgets every place.
- `back.warmup` (3 s) and `back.cooldown` (30 s) as above. A landing is checked: solid ground, room to stand. When the spot itself is not safe, `back.safe-search` (8) blocks up and down are tried — and for a death (lava, a wall, water) as many to the side as well, at most 16. Nothing safe within reach, or a fall into the void, is refused with the reason. `back.respect-claims` refuses a place a stranger's team has claimed since.
- `back.enabled = false` turns it off.

## Everyday commands

From Keystone 0.2.4. Each has its own `<command>.enabled` (a restart applies it), and every permission is asked again when the command runs.

| Command | Permission | What it does |
|---|---|---|
| `/heal [player]` | `keystone.heal` (`.others` for somebody else) | Full health, out of the fire |
| `/feed [player]` | `keystone.feed` (`.others`) | A full food bar |
| `/god [player]` | `keystone.god` (`.others`) | Only the void and `/kill` can hurt them, until typed again or they leave |
| `/invsee <player>` | `keystone.invsee` | Their inventory — online or offline |
| `/invsee <player> ender` | `keystone.invsee.ender` | Their ender chest |
| `/hat` | `keystone.hat` (`default`) | Wear one of what you hold; the old hat goes back to your inventory |
| `/trash` | `keystone.trash` (`default`) | A chest that empties itself when it closes |
| `/near` | `keystone.near` (`default`) | Who is within `near.radius` (200) blocks, with the distance rounded to ten — never a direction or coordinates |

- **Never above your rank:** `/heal`, `/feed`, `/god` and `/nick` on somebody else, and changing their inventory, are refused for a player who outranks you (heavier group, or an operator when you are not).
- **`/invsee`:** changing what is inside needs `keystone.invsee.modify`, and only works while the player is online — it is their live inventory, and the window closes the moment they leave. **An offline player's inventory is only ever shown:** it is read from their saved data into a copy that is never written back, because writing it while they may be joining could duplicate or lose items. Nothing in a view you may not change can be taken, shift-clicked, swapped with a number key, dragged or thrown.
- **God mode lasts the session:** it ends when they leave, and god mode a player gave themselves ends as soon as they lose `keystone.god` (a rank that ran out, a group taken away).
- **`/hat`** keeps Curse of Binding: a cursed helmet stays on. `/trash` really deletes.
- **Cooldowns:** `heal.cooldown`, `feed.cooldown`, `god.cooldown` (0), `near.cooldown` (10 s), in seconds; `keystone.<command>.instant` skips one.
- `/hat`, `/trash` and `/near` are in the `default` group from the first start (with `/kit`); the rest stay with operators and the groups you give them to.

## Nicknames

From Keystone 0.2.4. `/nick <name>` — a player goes by another name in chat, in the tab list and wherever the game prints names (death messages, `/msg`). Hovering over it shows the account: in chat formats the line `chat.hover.nick` (`{account}`), on the game's own name its usual hover. `/nick` shows yours, `/nick off` drops it.

- **Who may choose their own:** `keystone.nick`, or `nick.from-group` — a group's id, and everybody in it or in a heavier group may (`"vip-plus"` lets VIP+ and every rank above it). Blank: only who holds the permission.
- **What a nick may be:** letters, digits and `_` only — no colour, no spaces — `nick.min-length` (3) to `nick.max-length` (16) characters, none of `nick.blocked-words` (`admin`, `owner`, `staff`, … — also spelt with digits for letters or split by underscores), and **never another player's nick or the name of any account the server has seen**. `keystone.nick.bypass` steps over the word list, never over the rest.
- **Staff:** `/nick <player> <name>` or `/nick <player> off` (`keystone.nick.others`), never above their rank. A nick staff gave stays; one a player chose themselves goes when they lose the right to one.
- `nick.cooldown` (300 s) between changes of one's own; `keystone.nick.instant` skips it.

## Renaming or switching off a command

From Keystone 0.2.4, in `keystone.toml`: `commands.off = ["nick", "hat"]` drops Keystone's commands of those names, `commands.rename = ["kit: kits"]` gives one another name (its permission stays). For a pack where another mod should keep the name. `/keystone <command>` always stays, and `/keystone` itself can be neither. A restart applies it.
