Skip to content

Commands and Permissions ​

EmakiStation registers its commands at runtime instead of declaring a commands: section in paper-plugin.yml, just like every other module in the series

Your main command is /emakistation, with the aliases /estation and /est. Run it without arguments, or with an unrecognised subcommand, and it prints the help text

Subcommands ​

UsagePermissionDescription
/emakistationnonePrint help
/emakistation helpnoneSame as no arguments; prints help
/emakistation open <station>emakistation.use + that station's access permissionOpen the station window
/emakistation dismantle <station>emakistation.dismantle + that dismantle station's access permissionOpen the dismantle window
/emakistation queueemakistation.useView your own queue
/emakistation claimemakistation.useClaim pending outputs
/emakistation cancel <station> <index>emakistation.useCancel a queue entry; the index starts at 1
/emakistation list [station]emakistation.useList stations, or the recipes of one station. Console is allowed
/emakistation reloademakistation.reloadReload configuration, stations, recipes and GUI templates. Console is allowed
/emakistation debugemakistation.debugDebug switches, with the same arguments as other modules' debug subcommand. Console is allowed
/emakistation admin queue <player>emakistation.adminInspect another player's queue, loading offline data asynchronously. The name must be present in the server cache, otherwise an unknown-player message is returned. Console is allowed

You run open, dismantle, queue, claim and cancel as a player (the console gets a players-only message); list, reload, debug and admin also work from the console. Tab-completion offers 10 subcommands (help, open, dismantle, queue, claim, cancel, list, reload, debug, admin), and help only prints the help text

For the second argument, open, cancel and list complete to loaded crafting station ids, while dismantle completes to loaded dismantle station ids. The first-argument list also includes help; debug completions come from CoreLib's debug subcommand

Permission Nodes ​

Here are the permissions declared in paper-plugin.yml and their defaults:

PermissionDefaultPurpose
emakistation.usetrueUse the station window and queue-related subcommands
emakistation.purchasetrueBuy extra queue slots
emakistation.dismantletrueUse the dismantle window
emakistation.reloadopReload configuration
emakistation.debugopDebug switches
emakistation.adminopAdministrative operations

Note that emakistation.purchase is deliberately not placed under emakistation.queue.*: that prefix is already taken by queue length tiers, and mixing the two would make the meanings hard to tell apart. To buy a slot you also need queue.purchase.enabled in config.yml and queue.allow_purchase on the station to both be true

Per-Station Access Permissions ​

Crafting stations and dismantle stations have separate access prefixes. Leave permission empty in the configuration and it falls back to a node derived from the id:

TypeConfiguration keyFallback node when empty
Crafting stationpermission in stations/<id>.ymlemakistation.access.<id>
Dismantle stationpermission in stations_dismantle/<id>.ymlemakistation.dismantle.access.<id>

You will not find these prefixes declared in the descriptor, because the node names depend on which stations you configure. To grant the example station and the example dismantle station:

text
emakistation.access.blacksmith
emakistation.dismantle.access.example_dismantle

Queue Length Permission Tiers ​

With queue.permission_tiers enabled, the highest number among your emakistation.queue.<n> nodes wins, and <n> is the queue length. If you have no node under that prefix, base_length stays unchanged

text
emakistation.queue.8
emakistation.queue.16

Holding both of the above yields 16. A permission tier replaces the base length, while paid queue slots stack on top of the effective tier, and the station's queue.max_length clamps the result

Threading ​

Every subcommand that touches your window or inventory first hops to your own owner thread, because a command can arrive from the console or from another player's thread. On Folia that is the entity scheduler owner; on Paper it is the main server thread