Tags
Creators
Details
Licensed GPL-3.0-only
Published 7 months ago
Updated 2 months ago
All versions
4.6.0
Release
Emaki Forge 4.6.03 months ago 35
Compatibility
Minecraft: Java Edition
26.2
26.1.2
26.1
1.21.8–1.21.11
Platforms
Folia
Paper
Purpur
Required content
Unavailable version
Changes
Added
- Three action-chain actions:
emakiforge_refresh_held,emakiforge_refresh_player,emakiforge_refresh_all. /emakiforge debug stats(aliasstatus) reporting generation, files, parsed, skipped, registered, duplicates, issues, warnings, elapsed time, and source state.- Localizable config precheck and recipe-load diagnostics (directory creation failure, blank id, duplicate id, load failure) plus localizable player-facing runtime state messages (reloading, no recipes, load failed, capability missing, index not ready, closed, session expired).
- Optional soft dependency on EmakiItem, so the EmakiAttribute integration degrades gracefully when that plugin is absent instead of hard-failing.
Changed
- Reload is atomic: a candidate runtime is built in the background and installed only when no blocking problems exist. A failed reload keeps the previous runtime serving, and a superseded reload is reported as stale.
- Reload summary numbers come from that reload's own result, so concurrent reloads no longer report mixed counts.
- Forge settlement has an explicit commit boundary, so a stale completion no longer returns already-consumed inputs a second time.
- The recipe book binds to the runtime snapshot taken when it was opened, so paging during a reload cannot mix generations.
- GUI templates are loaded by their own loader and participate in reload candidate validation.
- Message prefix switched to a new brand gradient.
api-versionraised from1.21to1.21.8; only 1.21.8+ is supported. The build base moved from spigot-api to paper-api, so API consumers must switch their compile base. Java target stays 25,folia-supported: trueand the permission set (use/book/reload/debug/admin) are unchanged.- Cross-plugin hard API version gating was removed, so mixing slightly different Emaki minor versions is no longer blocked at startup.
Fixed
/emakiforge reloadused to report success unconditionally and swallow failures; it now reports failure with detail (thegeneral.reload_failmessage key existed but was never sent).- Reload replies are delivered on the sender's own execution domain, which is required for correctness on Folia.
Removed
- The browser-based Web Console layer (
web-console.yml,web-extensions/, theweb-console/frontend project). Owners who edited config through the browser must edit YAML directly. gui/editor_gui.yml, the admin recipe-editor template, whose only entry point was the removed web editor.- Backward compatibility for the old recipe
resultstructure:result.item_sources,result.meta_actions.name_actions,result.meta_actions.lore_actionsandresult.actionsbecomeresult.success.outputs[].item_sourcesandresult.success.name_actions/lore_actions/actions. Onlysuccessis read; if it is missing the recipe silently produces nothing, so all custom recipes must be migrated. - The flat GUI slot item structure:
item: "<MATERIAL>"withdisplay_name,loreandhidden_components: [tooltip]becomesitem.sourcewithitem.components.custom_name,item.components.loreanditem.components.tooltip_display.hide_tooltip. All customgui/*.ymlmust be migrated. - The
commands:section, as the descriptor moved fromplugin.ymltopaper-plugin.ymland commands register at runtime. Plain Spigot is no longer supported; Paper or a Paper fork is required.
Notes
- Requires EmakiCoreLib 4.6.0.
- Back up
recipes/andgui/before updating, then migrate all custom recipes and GUI templates to the structures above. - After updating, run
/emakiforge reloadand/emakiforge debug statsto confirm the registered recipe count matches expectations, then verify the forge GUI and recipe book.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:Ksqjj9TX:RTNr5OkV"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Ksqjj9TX:RTNr5OkV"
}

