Station Definitions
Crafting stations live under plugins/EmakiStation/stations/, one station per file, and the file name matches id.
Full Example
id: "blacksmith"
display_name: "<gold>Blacksmith Workshop</gold>"
layout: "station_catalog"
preview_layout: "station_preview"
queue_layout: "station_queue"
permission: ""
queue:
base_length: 3
max_length: 16
progress_mode: "offline"
cancel_refund_rate: 1.0
speed_multiplier: 1.0
allow_purchase: false
channels:
backpack: true
storage: true
default: "backpack"
output:
default: "storage_first"
player_switchable: true
condition:
invalid_as_failure: true
entries: []Fields
| Field | Description |
|---|---|
id | Station id, matching the file name. |
display_name | Display name used in window titles; MiniMessage is supported. |
layout | Recipe catalog page layout, pointing at gui/<name>.yml. Defaults to station_catalog. |
preview_layout | Material preview page layout. Defaults to station_preview. |
queue_layout | Craft queue page layout. Defaults to station_queue. |
permission | Permission required to open this station. When empty, falls back to emakistation.access.<id>. |
queue | Queue parameters; omitted keys inherit the queue section of config.yml. |
channels | Material source channels. |
output | Output routing. |
condition | Condition gate evaluated before the window opens; the syntax matches other Emaki modules. |
All three layout files must exist. A missing one raises missing_layout in the startup precheck.
The dismantle page does not belong to a station: dismantle stations are separate configuration, see Dismantling.
Recipe Ownership
Station files have no recipes section. Which recipes are offered is decided recipe-side: list the owning stations in station_ids inside recipes/<recipe>.yml. A recipe without station_ids is open to every station.
The queue Section
Besides the keys inherited from config.yml, stations have one key of their own:
| Field | Description |
|---|---|
allow_purchase | Whether this station sells extra queue slots. queue.purchase.enabled in config.yml must also be true. |
When an entry is cancelled, any currency already paid is refunded at cancel_refund_rate, the same rate as materials.
channels — Material Channels
| Field | Description |
|---|---|
backpack | Whether to take materials from the player's inventory. |
storage | Whether to take materials from the EmakiStorage warehouse. |
default | Retained key, no longer effective. |
Turning both off makes the station refused at load time — a station that opens but can never be used is worse than a startup error.
With both on, materials come from a merged inventory-plus-warehouse pool spent inventory-first. Players see no channel toggle and do not need one: the "owned" figure in the window is already the combined total.
default is retained only so old configuration files do not report an unknown key, and may be removed in a later version. Do not treat it as usable configuration.
output — Output Routing
| Value | Behaviour |
|---|---|
storage_first | Warehouse first, falling back to the inventory when full. |
backpack_first | Inventory first, falling back to the warehouse when full. |
storage_only | Warehouse only. |
backpack_only | Inventory only. |
With player_switchable: true players may switch their own preference in the window.
When every target is full, the entry enters the pending-claim state; nothing is dropped or destroyed.