Commands and Permissions
EmakiStation registers its commands at runtime instead of declaring a commands: section in paper-plugin.yml, matching every other module in the series.
The main command is /emakistation, with the aliases /estation and /est. Running it without arguments, or with an unrecognised subcommand, prints the help text.
Subcommands
| Usage | Permission | Description |
|---|---|---|
/emakistation | none | Print help. |
/emakistation open <station> | emakistation.use + that station's access permission | Open the station window. |
/emakistation dismantle <station> | emakistation.dismantle + that dismantle station's access permission | Open the dismantle window. |
/emakistation queue | emakistation.use | View your own queue. |
/emakistation claim | emakistation.use | Claim pending outputs. |
/emakistation cancel <station> <index> | emakistation.use | Cancel a queue entry. |
/emakistation list [station] | emakistation.use | List stations, or the recipes of one station. |
/emakistation reload | emakistation.reload | Reload configuration, stations, recipes and GUI templates. |
/emakistation debug | emakistation.debug | Debug switches, with the same arguments as other modules' debug subcommand. |
/emakistation admin queue <player> | emakistation.admin | Inspect another player's queue, loading offline data asynchronously. The name must be present in the server cache, otherwise an unknown-player message is returned. |
The second argument of open, cancel and list completes to loaded crafting station ids; dismantle completes to loaded dismantle station ids. The first-argument completion list also includes help.
Permission Nodes
Permissions declared in paper-plugin.yml and their defaults:
| Permission | Default | Purpose |
|---|---|---|
emakistation.use | true | Use the station window and queue-related subcommands. |
emakistation.purchase | true | Buy extra queue slots. |
emakistation.dismantle | true | Use the dismantle window. |
emakistation.reload | op | Reload configuration. |
emakistation.debug | op | Debug switches. |
emakistation.admin | op | Administrative operations. |
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. Purchasing additionally requires 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. When permission is left empty in the configuration, it falls back to a node derived from the id:
| Type | Configuration key | Fallback node when empty |
|---|---|---|
| Crafting station | permission in stations/<id>.yml | emakistation.access.<id> |
| Dismantle station | permission in stations_dismantle/<id>.yml | emakistation.dismantle.access.<id> |
These prefixes are not declared in the descriptor because the node names depend on which stations the administrator configured. To grant the example station and the example dismantle station:
emakistation.access.blacksmith
emakistation.dismantle.access.example_dismantleQueue Length Permission Tiers
With queue.permission_tiers enabled, the highest number among the player's emakistation.queue.<n> nodes wins, and <n> is the queue length. With no node under that prefix, base_length is kept unchanged.
emakistation.queue.8
emakistation.queue.16Holding both of the above yields 16. A permission tier replaces the base length, whereas paid queue slots stack on top of the effective tier, and the result is clamped by the station's queue.max_length.
Threading
Every subcommand that touches a player's window or inventory dispatches to that player's owner thread first, 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.