How a command reaches the server

The chat box in the client handles a few prefixes itself. Everything else that starts with / goes to zone-server as a command line (ChatType.COMMAND). There, ChatCommandHandler asks each ChatCommand in turn whether the line is theirs, and the first match runs.

  • A command can need an authority (net.bestia.account.Authority). An account gets its authorities from its role (net.bestia.account.Role), which travels in the login token. Today GM and SUPER_GM hold every authority, USER holds none. A player who types a command they may not use is told so; an unknown command gets a different message.
  • Commands do not need Basic Skill rank 2, unlike talking to other players.
  • /help lists every command the caller may use, with its help text.
  • Commands that change the world for good (/carve, /ignite, /raze, /water) also need chunk-stream.allow-debug-edits switched on in the server config. Otherwise they are refused, even for a GM.

The source of each command is zone-server/src/main/kotlin/net/bestia/zone/chat/net/<Name>ChatCommand.kt.

Client prefixes

These never reach the server as commands. The client handles them in Game/UI/Chat/chat.gd.

PrefixWhat it does
/s <text>Switches to public chat and sends the text there
/p <text>Switches to party chat and sends the text there
/g <text>Switches to guild chat and sends the text there
/w <text>Whisper. Not implemented yet: the line is dropped
/clearClears the chat window

An emote the controlled body cannot play (a bestia asked to cheer) is refused by the client too, before it is sent.

Player commands

Every player may use these.

CommandWhat it doesSource
/helpLists the commands you may useChatCommandHandler
/cheer, /jump, /point, /flourish, /sit, /liePlays an emote. Emotes can be bound to Alt+1 to Alt+0 in the emote window (Alt+E)EmoteChatCommand
/party <name>Creates a party with that namePartyCreateChatCommand
/invite <username>Invites a player into your partyPartyInviteChatCommand
/kick <username>Removes a player from your party (owner only)PartyKickChatCommand
/leaveLeaves your partyPartyLeaveChatCommand

The emote list is AnimationKind.EMOTES; a new emote becomes a command by itself.

GM commands

CommandAuthorityWhat it doesSource
/mm <target>MAP_MOVEMoves you to a map position, on the ground. Target is a grid reference (/mm H12 41 37), a settlement name (/mm Trestein) or voxels (/mm 64000 64000)MapMoveChatCommand
/reveal [metres]MAP_REVEALPuts a chart of the whole world in your bag, or of a disc that wide around youRevealMapChatCommand
/item <ITEM_ID or DB_NAME> <AMOUNT>ITEMSpawns an item for youItemChatCommand
/exp <AMOUNT>EXPAdds EXP to your active bestiaExpChatCommand
/allskillsSKILLSMaster: every skill at max level. Bestia: its whole learnset at level 1. Written to the databaseAllSkillsChatCommand
/spawn <IDENTIFIER> <X> <Y>SPAWNSpawns an NPC bestia at a positionSpawnChatCommand
/ambientSPAWNReports the ambient wilderness density around you, and whyAmbientChatCommand
/townsfolk hereSPAWNSpawns the household of the nearest houseTownsfolkChatCommand
/townsfolk <OCCUPATION> <X> <Y>SPAWNPuts one townsperson of that trade at a position. /help lists the known occupationsTownsfolkChatCommand
/talk [OPTION]SPAWNTalks to the nearest townsperson (12 m), or picks one of the options they offeredTalkChatCommand
/knows [HOUSEHOLD]SPAWNWhat this town remembers, or what one household of it doesKnowsChatCommand
/sitesSPAWNDescribes the settlement you stand inSitesChatCommand
/sites pricesSPAWNWhat that settlement has on its shelves, and at what priceSitesChatCommand
/rumour post <STRENGTH>SPAWNPosts news of a kill where you stand, strength 0 to 1RumourChatCommand
/rumour hereSPAWNLists what the settlements that heard it are still sayingRumourChatCommand
/rumour sweepSPAWNForgets every rumour past its expiryRumourChatCommand
/dateWORLD_TIMEShows the world dateWorldTimeChatCommand
/date <HH:MM>WORLD_TIMEJumps to that time today. For everyone, until restartWorldTimeChatCommand
/date <YEAR>-<MONTH>-<DAY> <HH:MM>WORLD_TIMEJumps to a full dateWorldTimeChatCommand
/date resetWORLD_TIMEReturns to real timeWorldTimeChatCommand
/carve <X> <Y> <Z> [RADIUS]TERRAINRemoves a sphere of rock. Z is the global vertical index, 0 is sea level. Radius in voxelsCarveChatCommand
/water <X> <Y> <Z> [RADIUS]TERRAINPours the lower half of a sphere of water into air. Radius in voxelsWaterChatCommand
/ignite <X> <Y> [RADIUS]TERRAINSets the grass at a position alight. Radius in tiles. Ground that will not burn stays as it isIgniteChatCommand
/raze <SETTLEMENT>TERRAINDestroys every building of a settlement by its index, so it fallsRazeChatCommand

Some authorities have no chat command. KICK and BAN are GM actions of the login server (GmActionService). TEST_BESTIA hands a GM a test bestia when a master is created. KILL and DIALOG are granted but nothing checks them yet.

Last updated 09 Nov 2026, 23:57 +0100 . history