EmakiForge
EmakiForge runs the forging flow. Players place target equipment, blueprints, and materials; the module checks recipe requirements, capacity, and conditions, then modifies the target item or creates a new result.
Module facts
| Item | Value |
|---|---|
| Module version | 4.6.0 |
| Main command | /emakiforge |
| Aliases | /eforge, /ef |
| Hard dependency | EmakiCoreLib |
| Soft dependency | EmakiAttribute, EmakiItem, PlaceholderAPI |
| Main permissions | emakiforge.use, emakiforge.book, emakiforge.reload, emakiforge.debug, emakiforge.admin |
Core concepts
| Concept | Description |
|---|---|
| Blueprint | Controls whether a player can use a forging recipe. |
| Material | Resources the player adds to influence success, quality, or final attributes. |
| Recipe | Defines input requirements, capacity, conditions, results, and actions. |
| Capacity | Limits the sum of capacity_cost across inserted materials. |
| Quality | Deterministic weighted outcome tier, optionally with pity. |
| Recipe book | GUI used to inspect available recipes. |
Default runtime folder
plugins/EmakiForge/
├── config.yml
├── recipes/
│ └── example_recipe.yml
├── gui/
│ ├── forge_gui.yml
│ └── recipe_book.yml
├── lang/
│ ├── zh_CN.yml
│ └── en_US.yml
└── data/Start with recipes/. That folder defines forging inputs, capacity, conditions, results, and actions. data/ is maintained by PlayerDataStore and holds one <uuid>.yml per player with craft counters and pity counters. The bundled example script is released by CoreLib to plugins/EmakiCoreLib/scripts/examples/forge_success.js.
Pages
| Page | Content |
|---|---|
| Commands | Forging, recipe book, reload, list, and debug commands. |
| Recipes | Inputs, blueprints, results, actions, and recipe matching. |
| Materials | Material contribution, capacity, quality modifiers, and effect writes. |
| Quality | Quality pools, pity, item metadata, and deterministic logic. |
| Forge History | Player forging data, autosave, and troubleshooting. |
| GUI | Forge UI and recipe book templates. |
| Audit | Forge audit data and material signature on result items. |
| Placeholders | PlaceholderAPI output. |
| CoreLib Actions | Refresh actions registered by Forge. |
| API | The EmakiForgeApi static facade. |
| Events | ForgeStartEvent, ForgeCompletedEvent. |
| JavaScript | Forge chance rules and result hooks. |
Typical forging flow
- Open the forge GUI with
/ef forge. - Place a blueprint in the blueprint slots; Forge matches the recipe by blueprint item source.
- Place materials in the required and optional material slots.
- Check recipe, condition, capacity, and material count.
- Click the confirm slot to run
actions.pre. - Resolve deterministic quality and pity from the player, recipe, and material fingerprint.
- Create the primary item from
result.success.outputsand attach the forge layer snapshot. - Run
result.success.actions→actions.success→ quality actions; on failure runactions.failure. - The CoreLib item assembly service rebuilds the item presentation.
- With EmakiAttribute installed,
ea_attributematerial effects are written to the structured PDC attribute layer.
Relation with Attribute
Forge can run basic forging without Attribute. The ea_attribute material effect requires EmakiAttribute: attributes are written through the EmakiAttribute authoritative API into a structured PDC layer, so the numbers participate in real combat calculation instead of only appearing in lore.
When EmakiAttribute is absent, Forge takes a no-op path: forging still completes, it simply does not write attribute payloads, and no error is raised.
JavaScript access
CoreLib JavaScript scripts can query Forge through emaki.module("forge"). The current public API exposes readiness and identity probes only; actual forging still runs through recipes, GUI, and action flows.
function main(ctx) {
if (emaki.module("forge").available() && emaki.module("forge").ready()) {
emaki.logger.info("Forge API version=" + emaki.module("forge").apiVersion());
}
return true;
}