
EmakiCooking | World-Placed Cooking Stations with Persistence
Seven distinct cooking stations placed as real blocks in the world — chopping board, wok, grinder, steamer, oven, juicer and fermentation barrel — each with its own mechanics, coordinate-persistent state, display entities, multi-branch outcomes, chained re
Tags
Creators
Details
4.1.0
Compatibility
Required content
Changes
Added
- World blacklists, global and per station:
station.disabled_worlds: []plusstations.<type>.disabled_worlds: []. In a blacklisted world the plugin does not take over events and vanilla block behavior is preserved. - Station placeholder family
%emakicooking_station_*%resolving the player's most recent interacted station:type,type_name,world,x,y,z,location,block,heat_block,burning,burning_seconds,heat,moisture,steam,input,input_source,input_amount,ingredient_count,recipe,recipe_id,progress,progress_target,progress_percent,completed,fluid,fluid_amount,player. Astation_<name>_<field>form also exists to target a specific station type. - Public station interaction event so third-party plugins can react to station interactions.
- New command
/ecooking station reindex(requiresemakicooking.admin) to rebuild the station state index. /ecooking inspect block(previously onlyinspect hand), reporting station type, source, block, block state, whether it is a tile state, storage backend, PDC state, index state, index backend, whether legacy YAML exists, and whether interaction is disabled by the world blacklist.- New nutrition actions:
emakicookingclearnutrition,emakicookingresetnutrition,emakicookingrechecknutritionthreshold,emakicookingrunrecipereward. - Config precheck messages for the recipe directory and station state directory, plus storage backend hints per station.
- New localized station names and error keys.
Changed
- Descriptor renamed from
plugin.ymltopaper-plugin.ymlwith structured dependencies (EmakiCoreLib required; PlaceholderAPI / CraftEngine / ItemsAdder / Nexo / Oraxen / PacketEvents / MMOItems / NeigeItems optional). All 25 permission keys and their defaults are unchanged;/ecooking(aliasec) registers in code with the alias preserved. - Station state now primarily lives in block PDC with a version ledger, plus index recovery and completion transaction recovery, so station progress and output are less likely to be lost or double-granted after a crash or hard shutdown. Legacy YAML is still scanned and automatically archived to
data/stations-legacy-backup/, and blocks without a tile state fall back to YAML. - Message prefix switched to a new brand gradient.
- The third-party item/furniture integration set is unchanged.
api-versionraised from1.21to1.21.8and the build base moved from spigot-api to paper-api;folia-supported: trueand the Java 25 target are unchanged.
Fixed
- Station floating text lost vanilla item translation names: the text was flattened to a legacy string, so translatable components could not be localized by the client. Components are now preserved and vanilla item names render in the client's own language.
- The sample action lines in the default
config.ymlwere invalid and never fired because they used ids that were not registered. The defaults are corrected, so the out-of-the-box examples now work: chopping board, wok, grinder, steamer, oven, juicer, fermentation barrel sound and particle feedback, and nutrition overeating feedback.
Removed
- Player nutrition data will be silently reset unless you act first. The nutrition data key changed from
values:tonutrition:with no fallback read and no schema version bump, so olddata/nutrition/<uuid>.ymlfiles are treated as empty and rebuilt from per-type defaults. Back updata/nutrition/and rename thevalues:section tonutrition:in each player file before upgrading, otherwise all player nutrition is lost. - Short nutrition action aliases are removed.
ecaddnutrition,cookingaddnutrition,ecremovenutrition,ectakenutrition,cookingremovenutrition,ecsetnutrition, andcookingsetnutritionare gone; onlyemakicookingaddnutrition,emakicookingremovenutrition, andemakicookingsetnutritionremain. Any action chain using a short alias will report an unregistered action, so search your configs and scripts and replace them with the fullemakicooking*names. - The browser-based Web Console layer, including
web-console.yml, the GUI surface web extension, and theweb-console/frontend project.
Notes
- Requires EmakiCoreLib 4.6.0.
- Before upgrading, in order: back up
data/nutrition/, renamevalues:tonutrition:in each player nutrition file, then search configs and scripts and replace every short nutrition action alias with its fullemakicooking*name. - Station state data is not broken: recipe files, the
stations.*structure, and permission keys are unchanged. The new config keysstation.disabled_worldsand the per-stationdisabled_worldsdefault to empty lists, meaning nothing is disabled, so leaving them out changes nothing. After upgrading, spot-check a few placed stations with/ecooking inspect blockand verify player nutrition values look correct.
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:NlpcnczH:4zpnM27A"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:NlpcnczH:4zpnM27A"
}
