Skip to content

GUI

EmakiForge provides two GUI interfaces: the forging interface and the recipe book interface. All GUI configuration files are stored in the gui/ directory.

Forging Interface

forge_gui.yml Layout

The forging interface is a 5-row (45-slot) chest GUI:

Row 1: [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
Row 2: [  ] [BP] [BP] [  ] [CP] [  ] [RM] [RM] [  ]
Row 3: [  ] [BP] [BP] [  ] [CP] [  ] [RM] [RM] [  ]
Row 4: [  ] [OM] [OM] [OM] [  ] [  ] [  ] [CF] [  ]
Row 5: [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]

BP = blueprint_inputs    Blueprint input slots
CP = capacity_display    Capacity display slots
RM = required_materials  Required material slots
OM = optional_materials  Optional material slots
CF = confirm             Confirm button
Slot AreaSlot NumbersDescription
blueprint_inputs10, 11, 19, 20Blueprint placement area
capacity_display13, 22Capacity display (current/max)
required_materials15, 16, 24, 25Required material placement area
optional_materials28, 29, 30Optional material placement area
confirm34Confirm forging button

Recipe Book Interface

recipe_book.yml Layout

The recipe book interface is a 6-row (54-slot) chest GUI:

Row 1: [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ] [  ]
Row 2: [RL] [RL] [RL] [RL] [RL] [RL] [RL] [  ] [  ]
Row 3: [RL] [RL] [RL] [RL] [RL] [RL] [RL] [  ] [  ]
Row 4: [RL] [RL] [RL] [RL] [RL] [RL] [RL] [  ] [  ]
Row 5: [RL] [RL] [RL] [RL] [RL] [RL] [RL] [  ] [  ]
Row 6: [  ] [  ] [  ] [PV] [  ] [NX] [  ] [  ] [  ]

RL = recipe_list   Recipe list slots
PV = prev_page     Previous page button
NX = next_page     Next page button
Slot AreaSlot NumbersDescription
recipe_list10-16, 19-25, 28-34, 37-43Recipe display area (28 per page)
prev_page48Previous page
next_page50Next page

Complete Forging Execution Pipeline

The complete pipeline from when a player clicks the confirm button to forging completion:

Player clicks confirm button (confirm)

canForge — Pre-checks
    ├── Check if blueprint matches blueprint_requirements
    ├── Check if required materials are complete
    ├── Check if optional material count exceeds optional_material_limit
    ├── Check if total material capacity exceeds forge_capacity
    ├── Check if conditions are met (condition_type + conditions)
    └── Check permissions
    ├── Any check fails → Display error, abort
    └── All pass ↓

prepareForge — Prepare forging
    ├── Collect all material effects
    ├── Aggregate stat_contribution
    ├── Aggregate quality_modify
    ├── Aggregate capacity_bonus
    └── Aggregate structured_presentation

execute — Execute forging
    ├── Execute action.pre actions
    ├── Determine quality tier (quality calculation pipeline)
    ├── Apply quality multiplier to all attribute values
    └── Consume materials and blueprint

build snapshot — Build snapshot
    ├── ForgeLayerSnapshotBuilder builds layer snapshot
    ├── Write stat data
    ├── Write attribute data
    └── Write structured_presentation data

preview — Preview product
    └── Generate output item and apply meta_actions

give — Give product
    ├── Place product in player inventory
    ├── Execute action.success actions
    └── Execute quality actions (if any)

record — Record audit
    ├── Write to player data file
    └── Update pity counter

Tip

The entire forging pipeline executes synchronously to ensure atomicity of item operations. If an exception occurs at any stage, the system will roll back consumed materials.

Released under the GPL-3.0 License