Dismantling
Dismantle stations are fully independent from crafting stations: their ids are unrelated and each loads from its own directory. Dismantling is not a fourth page of a crafting station.
/emakistation dismantle <station>Requires emakistation.dismantle plus that dismantle station's access permission (falling back to emakistation.dismantle.access.<id> when the configuration leaves it empty).
The player places an item matching input_source into the dismantle slot, then confirms to roll rolls times against the pool.
Dismantle Station Definition
Lives under plugins/EmakiStation/stations_dismantle/, with the file name matching id.
id: "example_dismantle"
display_name: "<aqua>Example Dismantling Bench</aqua>"
layout: "station_dismantle"
permission: ""
output:
default: "storage_first"
condition:
invalid_as_failure: true
entries: []| Field | Description |
|---|---|
id | Dismantle station id, matching the file name. |
display_name | Display name used in the window title. |
layout | Window layout, pointing at gui/<name>.yml. Defaults to station_dismantle. |
permission | Permission required to open this dismantle station. When empty, falls back to emakistation.dismantle.access.<id>. |
output.default | Output routing; the values match crafting stations. |
condition | Condition gate evaluated before the window opens. |
Dismantle stations have no queue section, no channels section, no preview_layout / queue_layout, and no output.player_switchable. Dismantling settles immediately and never enters the queue.
When every target is full, dismantled outputs enter the pending-claim state; nothing is dropped or destroyed.
Dismantle Recipe Definition
Lives under plugins/EmakiStation/recipes_dismantle/. One recipe per file; the file name does not affect loading, and the recipe id comes from the id field inside the file.
id: "example_dismantle"
display_name: "<yellow>Iron Block Dismantling Example</yellow>"
station_id: ""
tags:
- "blacksmith"
permission: ""
input_source: "minecraft-iron_block"
rolls:
min: 2
max: 3
pool:
- item_source: "minecraft-iron_ingot"
amount:
min: 2
max: 4
weight: 6.0
- item_source: "minecraft-nugget"
amount: 3
weight: 3.0
condition:
invalid_as_failure: true
entries: []| Field | Description |
|---|---|
id | Recipe id. |
display_name | Display name. |
station_id | The bound dismantle station, singular. |
tags | Tags, letting dismantle stations reference recipes by tag. |
permission | Permission required to use this recipe; empty means unrestricted. |
input_source | Input item; the item placed into the dismantle slot must match this source. The format matches a regular recipe's item source. |
matcher | Optional top-level general item matcher selecting the input by component, PDC, or lore. It is ANDed with input_source: both have to hold for the input to be accepted. Item source conditions cannot go inside it — type: item_source and its aliases are rejected at load time and never match. See Item Matcher. |
rolls | How many times each dismantle rolls. |
pool | Output probability pool. |
condition | Condition gate checked before submission, same as regular recipes. When unsatisfied the dismantle button is refused. |
Matching the input with a matcher
A top-level matcher lets a dismantle recipe select inputs by item data, for example only already-damaged gear:
id: "damaged_gear_dismantle"
# input_source is still required and is checked alongside the matcher
input_source: "minecraft-iron_chestplate"
matcher:
type: component
component: damage
operator: '>'
value: 0
rolls: 1
pool:
- item_source: "minecraft-iron_nugget"
amount: 2
weight: 1.0matcher is ANDed with input_source
input_source must match and the matcher (when present) must pass, so the example above only accepts an iron chestplate that is also damaged. input_source stays required.
This means "a given item and a component condition" is expressed directly: put the item source in input_source and the component condition in matcher.
Item source conditions still cannot go inside matcher (type: item_source / item_sources / source / sources are rejected with a warning and the matcher never matches). Item sources belong in the top-level input_source.
NOTE
Dismantling has no stack-model limit. A matcher in a crafting recipe forces the whole recipe to draw from the backpack; dismantle recipes are not affected.
rolls
Two forms are accepted:
# Fixed count
rolls: 3# Range, both ends inclusive
rolls:
min: 2
max: 4pool — Output Probability Pool
Each roll picks one entry at random from the pool.
| Field | Description |
|---|---|
item_source | Output source, singular — one source per entry. |
amount | Amount; a fixed value or a min / max range. |
weight | Relative weight, default 1.0, must be greater than 0. |
Differences from Crafting Recipes
| Aspect | Crafting recipe | Dismantle recipe |
|---|---|---|
| Station binding | station_ids (plural list) | station_id (singular) or tags |
| Input | materials (several requirements, each an item_sources set) | input_source (a single source) |
| Output | Fixed list in result.outputs | Random rolls from pool weighted by weight |
| Duration | duration_seconds, enters the queue | No duration, settles immediately |
| Currency cost | cost | None |
| Condition gates | condition + display_condition | condition only |
| Stage actions | actions.pre / success / failure | None |