Skip to content

Station Definitions

Crafting stations live under plugins/EmakiStation/stations/, one station per file, and the file name matches id.

Full Example

yaml
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

FieldDescription
idStation id, matching the file name.
display_nameDisplay name used in window titles; MiniMessage is supported.
layoutRecipe catalog page layout, pointing at gui/<name>.yml. Defaults to station_catalog.
preview_layoutMaterial preview page layout. Defaults to station_preview.
queue_layoutCraft queue page layout. Defaults to station_queue.
permissionPermission required to open this station. When empty, falls back to emakistation.access.<id>.
queueQueue parameters; omitted keys inherit the queue section of config.yml.
channelsMaterial source channels.
outputOutput routing.
conditionCondition 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:

FieldDescription
allow_purchaseWhether 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

FieldDescription
backpackWhether to take materials from the player's inventory.
storageWhether to take materials from the EmakiStorage warehouse.
defaultRetained 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

ValueBehaviour
storage_firstWarehouse first, falling back to the inventory when full.
backpack_firstInventory first, falling back to the warehouse when full.
storage_onlyWarehouse only.
backpack_onlyInventory 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.