Skip to content

Recipes

Forge recipes define blueprint requirements, material entries, capacity, quality rules, result items, metadata operations, and actions. Recipe files are stored in recipes/*.yml.

Main fields

FieldDescription
idUnique recipe id.
display_nameRecipe display name.
forge_capacityTotal capacity limit for materials.
blueprint_requirementsRequired blueprint items.
materialsRequired or optional material entries.
optional_material_limitMaximum optional material types.
qualityQuality pool and guarantee configuration.
resultOutput item, metadata actions, and result actions.
actionPre, success, and failure actions.
permissionOptional permission requirement.

Target-input mode

When the result does not create a separate output item, Forge rebuilds the forge layer on the player's target equipment. This is useful for reforging or adding extra stats to an existing item.

Fixed-output mode

When result.item_sources is configured, Forge creates the configured output item on success.

Quality configuration

yaml
quality:
  enabled: true
  custom_pool: []
  guarantee:
    enabled: true
    attempts: 60
    minimum: "flawless"

Result metadata actions

result.meta_actions executes name and lore operations on the result item after a successful forge.

yaml
result:
  item_sources:
    - "minecraft-diamond_sword"
  meta_actions:
    name_actions:
      - action: "append_suffix"
        value: " <gray>[%quality_name%]</gray>"
    lore_actions:
      - action: "append"
        content:
          - ""
          - "<gray>Quality: <white>%quality_name%</white></gray>"
          - "<gray>Forged by: <white>%player_name%</white></gray>"

Available template variables

VariableDescription
%quality%Quality id.
%quality_name%Quality display name.
%quality_multiplier%Full quality multiplier key.
%multiplier%Short quality multiplier variable.
%player_name%Name of the player who performed the forge.
%player_uuid%UUID of the player who performed the forge.
{<stat_id>}Any variable injected through material effects.

Minimal example

yaml
id: "flame_sword"
display_name: "<red>Flame Sword</red>"
forge_capacity: 10
blueprint_requirements:
  - item_sources:
      - "minecraft-paper"
    amount: 1
materials:
  - item_sources:
      - "minecraft-blaze_rod"
    amount: 3
    capacity_cost: 5
    effects:
      - type: "variables"
        variables:
          fire_damage: 10
      - type: "lore_action"
        lore_actions:
          - action: "append"
            content:
              - "<red>Fire Damage: +%fire_damage%</red>"
optional_material_limit: 2
quality:
  enabled: true
  custom_pool: []
result:
  item_sources:
    - "minecraft-diamond_sword"
  meta_actions:
    name_actions:
      - action: "append_suffix"
        value: " <gray>[%quality_name%]</gray>"
    lore_actions:
      - action: "append"
        content:
          - ""
          - "<gray>Quality: <white>%quality_name%</white></gray>"
          - "<gray>Forged by: <white>%player_name%</white></gray>"
action:
  success:
    - 'sendmessage text="<green>Flame power infused into the weapon."'

Action nodes

NodeTrigger
action.preBefore recipe execution.
action.successAfter successful forge.
action.failureAfter failed forge.
result.actionsWhen the result is generated or applied.