Skip to content

Chat commands

A / line typed in the chat is dispatched in this order: the server’s own account and fight commands, then the game mode (OnPlayerCommandText in Lua, OnPlayerCommand in C#; true = handled), then the built-ins below, then Unknown command: /x. A mode overrides any built-in by handling its name; a mode’s /help that prints a line and returns false is followed by the server’s own list. Commands are never echoed to the chat.

[commands] in server.toml switches the built-ins: builtin = false turns them all off, disabled turns some off by name, public names the ones anyone may use - every other built-in answers admins only (“Admins only.” to everyone else). Admins are the logged-in owners of [accounts] admins or players the mode promoted (SetPlayerAdmin).

Always answered, before the mode sees the line, whatever [commands] says.

Command
/register <password> claims the caller’s name: from then on it needs the password (at least [accounts] min_password_length characters, no spaces). Off when [accounts] registration = false
/login <password> proves a registered name; three wrong tries kick. A registered name not logged in within [accounts] login_grace_seconds is kicked
/fight <player> starts a fight with that player - both may lock on to each other. Refused when pvp is off
/peace ends every fight of the caller

[commands] public = ["help", "pos", "players", "items", "uptime"].

Command
/help the commands the caller may use - the mode’s line first when it prints one, then this list
/pos the server’s record of the caller: position, yaw, reports received, ping
/players who is online
/items <part of a name> the first eight items whose name, English name or category holds the words, with their ids (items)
/uptime how long the caller has been on, and the server tick
Command
/give <item> [count] puts items in the caller’s inventory - the item by name, id, GUID or English name (several words allowed; a trailing number is the count): /give duelling longsword 2
/item <item> places one of the item as a pickup in front of the caller, in their virtual world
/tp x y z | /tp <player> teleports the caller to a point (z below 0 = on the terrain) or next to a player, following them into their virtual world
/goto <player> the same as /tp <player>
/horse [soul] the horse next to the caller, or theirs called over, or a new one; with a soul named (horses, by name, id or GUID) always a new horse of that breed, mounted
/horses <part of a name> the first eight horse breeds whose name holds the words
/dog [soul] a dog at the caller’s heel (dogs), on the game’s own companion AI; /dog again sends it away
/dog stay, /dog follow, /dog free the dog waits where it is, comes along again, or roams (SetDogMode)
/prop <mesh> [scale] [rigid] places a static mesh 2.5 m ahead (meshes by id, file name or path): /prop barrel_a, /prop 441 1.5 rigid
/props <part of a path> searches the meshes
/time [hh:mm] the world clock: shows it, or sets it for everyone
/rain [0-1 | off] the rain override: shows it, forces an amount, or hands the rain back to the weather
/weather [preset | profile] [blend seconds] alone lists the presets; with one, changes the sky for everyone (weather)
/heal [player] full health and stamina, injuries, bleeding, alcohol and buffs gone - the caller’s or the named player’s
/kick <player> [reason] disconnects the player
/kickban <player> [minutes] kicks and bans the name and the address; without minutes, for good
/unban <name | address> lifts a ban
/reload reloads the game mode without a restart

The example modes add their own: freeroam.lua has /tag, /colour, /team, /actor (its heal arm heals the demo character, hostile [player] sets it on you or on the player named), /hurt [player] [amount] (takes health off a player without a blow), /kill [player] (the server’s death without a blow), /fx [effect] and /sfx [trigger], and for a server with world data /actor come (the demo character walks to you along the navigation mesh), /los [name] (whether the line to that player is clear, or what stands 30 m ahead) and /ground (the floor under you against the terrain’s height); duel_arena.lua has /duel, /leave, /score, /queue, /arena. A mode’s commands are whatever its OnPlayerCommandText answers; the getting-started guide shows one with typed arguments (sscanf: a player, a number, the rest of the line, in one call).