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 Area | Slot Numbers | Description |
|---|---|---|
blueprint_inputs | 10, 11, 19, 20 | Blueprint placement area |
capacity_display | 13, 22 | Capacity display (current/max) |
required_materials | 15, 16, 24, 25 | Required material placement area |
optional_materials | 28, 29, 30 | Optional material placement area |
confirm | 34 | Confirm 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 Area | Slot Numbers | Description |
|---|---|---|
recipe_list | 10-16, 19-25, 28-34, 37-43 | Recipe display area (28 per page) |
prev_page | 48 | Previous page |
next_page | 50 | Next 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 counterTip
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.