EmakiCooking Overview
EmakiCooking is a world-station cooking system that provides runtime management for four station types — Chopping Board, Wok, Grinder, and Steamer — along with a legacy JiuWu's Kitchen configuration import pipeline.
Basic Information
| Property | Value |
|---|---|
| Version | 2.2.0 |
| artifactId | emaki-cooking |
| Main Class | emaki.jiuwu.craft.cooking.EmakiCookingPlugin |
| Root Command | /ecooking |
| Alias | /ec |
| Hard Dependency | EmakiCoreLib |
| Soft Dependency | CraftEngine, ItemsAdder, Nexo |
信息
EmakiCooking is the only functional module that does not soft-depend on EmakiAttribute. It focuses on world station interactions rather than equipment stat progression.
Core Responsibilities
- Provides runtime management for four station types: Chopping Board, Wok, Grinder, and Steamer
- Persists station state by world coordinates via
StationStateStore(YAML files saved todata/stations/) - Identifies station block sources (vanilla / CraftEngine / ItemsAdder / Nexo) via
CookingBlockMatcherandCustomBlockBridge - Handles result distribution uniformly via
CookingRewardService(drop / give / action chain) - Serves as troubleshooting and migration entry points via
CookingInspectServiceandLegacyImportService - Builds assembly layer snapshots for output items via
CookingLayerSnapshotBuilder - Completes the minimum runnable pipeline through default recipes, station configs, and steamer GUI resources
config.yml Full Format
# Config file version, do not modify manually
config_version: "2.2.0"
# Language file identifier
language: zh_CN
# Whether to release default resources on first startup (recipes, GUI, language files, etc.)
release_default_data: true
# Legacy import settings
legacy_import:
# Legacy JiuWu's Kitchen data directory name
old_directory: "old"
# ============================================================
# Display Adjustments
# Controls offset, rotation, and scale of ItemDisplay entities above stations
# ============================================================
display_adjustments:
# Global defaults — used when stations have no individual configuration
defaults:
# Item display (non-block items)
item:
offset:
x: 0.5
y: 1.02
z: 0.5
rotation:
x: 90 # Fixed angle, or "min-max" range for random
y: 0
z: 0
scale:
x: 0.5
y: 0.5
z: 0.5
# Block display (block-type items)
block:
offset:
x: 0.5
y: 1.125
z: 0.5
rotation:
x: 0
y: 90
z: 0
scale:
x: 0.25
y: 0.25
z: 0.25
# Station-level defaults — override global defaults
station_defaults:
wok:
item:
offset:
y: 1.05
rotation:
y: "0-360" # Random rotation range
# ============================================================
# Stations Configuration
# ============================================================
stations:
# ---- Chopping Board ----
chopping_board:
# Station block source (vanilla or craftengine format)
block_source: "minecraft-oak_slab"
# Whether sneaking is required to interact
require_sneaking: true
# Whether results drop into the world (false = directly given to inventory)
drop_result: true
# Whether to check space above the chopping board (must be air)
space_restriction: false
# Minimum interval between two interactions (milliseconds)
interaction_delay_ms: 1000
# Item sources allowed as cutting tools
tool_sources:
- "minecraft-iron_sword"
- "minecraft-diamond_sword"
- "minecraft-netherite_sword"
# Damage dealt to the player when cutting
cut_damage:
enabled: true
chance: 10 # Percentage probability (0-100)
value: 2 # Damage value
# ---- Wok ----
wok:
block_source: "minecraft-cauldron"
require_sneaking: true
drop_result: true
# Whether a bowl is required when serving
need_bowl: true
# Minimum interval between two stirs (milliseconds)
stir_delay_ms: 5000
# Timeout (milliseconds), exceeding this without stirring counts as burnt
timeout_ms: 30000
# Default output item source when no recipe matches
invalid_result_source: ""
# Item sources allowed as spatulas
spatula_sources:
- "minecraft-wooden_shovel"
- "minecraft-stone_shovel"
# Heat level rules — block below the wok determines heat level
heat_levels:
- source: "minecraft-campfire"
level: 1
- source: "minecraft-soul_campfire"
level: 2
# Scald damage when retrieving ingredients bare-handed
scald_damage:
enabled: true
value: 2
# Random failure configuration
failure:
enabled: true
chance: 5 # Percentage probability
output_source: "minecraft-charcoal"
# ---- Grinder ----
grinder:
block_source: "minecraft-lodestone"
require_sneaking: true
drop_result: true
# Background check interval (ticks, 20 ticks = 1 second)
check_delay_ticks: 20
# ---- Steamer ----
steamer:
block_source: "minecraft-barrel"
require_sneaking: true
drop_result: true
# Heat source blocks (blocks below the steamer)
heat_sources:
- "minecraft-campfire"
- "minecraft-soul_campfire"
# Whether to auto-ignite the heat source when adding fuel
ignite_heat_source: true
# Fuel rules — item source → burn duration (seconds)
fuels:
- source: "minecraft-coal"
duration_seconds: 60
- source: "minecraft-charcoal"
duration_seconds: 40
# Moisture source rules — input item → output item + moisture value
moisture_sources:
- input_source: "minecraft-water_bucket"
output_source: "minecraft-bucket"
moisture: 100
# Whether to reset cooking progress when steam is depleted
reset_progress_when_steam_empty: true
# Amount of moisture converted to steam per tick
steam_production_efficiency: 10
# Amount of steam consumed per ingredient per tick
steam_conversion_efficiency: 1
# Base steam consumption per tick
steam_consumption_efficiency: 1Default Content
| Content Type | Count | Description |
|---|---|---|
| Cooking Recipes | 4 | cut_carrot, bone_meal, simple_stew, steamed_cod |
Default Resource Directory
| File/Directory | Description |
|---|---|
config.yml | Main configuration |
recipes/chopping_board/ | Chopping board recipes |
recipes/wok/ | Wok recipes |
recipes/grinder/ | Grinder recipes |
recipes/steamer/ | Steamer recipes |
gui/steamer.yml | Steamer GUI configuration |
item_adjustments/ | Item display adjustment configs |
lang/ | Language files |
data/stations/ | Runtime station state |
old/ | Legacy data directory |
backup/ | Import backup directory |
item_adjustments Format
Item display adjustment files are placed in the item_adjustments/ directory. Each file corresponds to a display override for a specific item source:
# item_adjustments/craftengine-custom_food.yml
source: "craftengine-custom_food"
# Global adjustment (shared across all stations)
adjustment:
offset:
x: 0.5
y: 1.1
z: 0.5
rotation:
x: 90
y: "0-360"
z: 0
scale: 0.4 # Scalar notation, uniform scaling on all three axes
# Station-level overrides (higher priority than adjustment)
stations:
chopping_board:
offset:
y: 1.0
scale: 0.3
wok:
rotation:
y: 45Tip
Each axis of rotation can be a fixed value (e.g., 90) or a range (e.g., "0-360"). The range notation randomly picks a value each time a display entity is spawned. scale supports scalar notation (uniform on all axes) or object notation (specifying x/y/z separately).