Skip to content

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.

text
/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.

yaml
id: "example_dismantle"
display_name: "<aqua>Example Dismantling Bench</aqua>"

layout: "station_dismantle"

permission: ""

output:
  default: "storage_first"

condition:
  invalid_as_failure: true
  entries: []
FieldDescription
idDismantle station id, matching the file name.
display_nameDisplay name used in the window title.
layoutWindow layout, pointing at gui/<name>.yml. Defaults to station_dismantle.
permissionPermission required to open this dismantle station. When empty, falls back to emakistation.dismantle.access.<id>.
output.defaultOutput routing; the values match crafting stations.
conditionCondition 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.

yaml
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: []
FieldDescription
idRecipe id.
display_nameDisplay name.
station_idThe bound dismantle station, singular.
tagsTags, letting dismantle stations reference recipes by tag.
permissionPermission required to use this recipe; empty means unrestricted.
input_sourceInput item; the item placed into the dismantle slot must match this source. The format matches a regular recipe's item source.
matcherOptional 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.
rollsHow many times each dismantle rolls.
poolOutput probability pool.
conditionCondition 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:

yaml
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.0

matcher 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:

yaml
# Fixed count
rolls: 3
yaml
# Range, both ends inclusive
rolls:
  min: 2
  max: 4

pool — Output Probability Pool

Each roll picks one entry at random from the pool.

FieldDescription
item_sourceOutput source, singular — one source per entry.
amountAmount; a fixed value or a min / max range.
weightRelative weight, default 1.0, must be greater than 0.

Differences from Crafting Recipes

AspectCrafting recipeDismantle recipe
Station bindingstation_ids (plural list)station_id (singular) or tags
Inputmaterials (several requirements, each an item_sources set)input_source (a single source)
OutputFixed list in result.outputsRandom rolls from pool weighted by weight
Durationduration_seconds, enters the queueNo duration, settles immediately
Currency costcostNone
Condition gatescondition + display_conditioncondition only
Stage actionsactions.pre / success / failureNone