EmakiCooking
EmakiCooking runs world-based cooking stations: chopping board, wok, grinder, steamer, oven, juicer, and fermentation barrel. It is separate from equipment progression. Focus on block interaction, coordinate state, ingredient input, staged progress, fluids, and result branches.
Basic information
| Item | Value |
|---|---|
| Module version | 3.1.0 |
| Main command | /ecooking |
| Alias | /ec |
| Hard dependency | EmakiCoreLib |
| Soft dependencies | PlaceholderAPI, CraftEngine, ItemsAdder, Nexo, PacketEvents |
| Main permissions | emakicooking.use, emakicooking.reload, emakicooking.inspect, emakicooking.admin |
Seven station types
| Station | Typical use |
|---|---|
Chopping Board chopping_board | Cut an ingredient into another form. |
Wok wok | Add ingredients, control heat, stir, and serve. |
Grinder grinder | Grind items into powders or other materials. |
Steamer steamer | GUI/station flow that uses fuel, moisture, and steam progress. |
Oven oven | Add fuel, maintain valid heat, advance baking, and resolve the baking stage. |
Juicer juicer | Press ingredients into fluid and bottle servings by container capacity. |
Fermentation Barrel fermentation_barrel | Insert multiple ingredients, seal and ferment, then collect early, normal, or over-fermented results. |
Default configuration layout
plugins/EmakiCooking/
├── config.yml
├── recipes/
│ ├── chopping_board/
│ ├── wok/
│ ├── grinder/
│ ├── steamer/
│ ├── oven/
│ ├── juicer/
│ └── fermentation_barrel/
├── gui/
│ ├── steamer.yml
│ ├── oven.yml
│ ├── juicer.yml
│ └── fermentation_barrel.yml
├── item_adjustments/
├── data/
│ └── stations/
└── lang/| Path | Purpose |
|---|---|
recipes/ | Recipes grouped by station. Start with the target station folder. |
gui/steamer.yml | Steamer GUI. |
gui/oven.yml | Oven GUI. |
gui/juicer.yml | Juicer GUI. |
gui/fermentation_barrel.yml | Fermentation barrel GUI. |
item_adjustments/ | Extra adjustments for input or output items. |
data/stations/ | Persistent world station state. Check this when station state is lost after restart. |
config.yml | Global station recognition, interaction, restriction, display, fuel, and fluid settings. |
World-state flow
- A player interacts with a station block.
- Cooking checks whether the block matches a configured station.
- The state for that world location is loaded.
- The module runs the operation according to the held item, permissions, container, fuel, and recipe.
- Station state is updated, such as input items, cuts, heat, burn time, steam, moisture, fluid amount, or fermentation progress.
- When requirements are met, the module gives results, bottles fluid, advances a stage, or runs actions.
- State is saved under
data/stations/and restored after restart.
External block plugins
Cooking can recognize custom blocks and items through CraftEngine, ItemsAdder, and Nexo. If those plugins are not installed, the related custom stations do not work, but vanilla block/item setups can still run.
Display entities are controlled by display_entities.backend:
auto: use virtual display entities through PacketEvents when available, otherwise fall back to Bukkit ItemDisplay.packet_events: prefer PacketEvents and fall back to Bukkit if loading fails.bukkit: always use real Bukkit ItemDisplay entities.
Configuration tips
- Start with vanilla blocks before connecting CraftEngine / ItemsAdder / Nexo.
- Add one minimal recipe per station first to verify the interaction chain.
- Test persistence after server restart for every stateful station.
- For ovens, test low heat, valid heat, high heat, and overbaking.
- For juicers, test fluid capacity, serving capacity, mixed-fluid protection, and block breaking behavior.
- For fermentation barrels, test early collection, normal completion, over-fermentation, GUI pause behavior, and sealing requirements.
- Focus anti-dupe testing on fast clicking, full inventories, item switching, and block breaking.
Troubleshooting
Station not recognized
Check the block source type, external block plugin, station id, and player permission.
Recipe does not trigger
Check input item source, amount, station type, current state, container, fuel, and permission.
Oven does not progress
Check whether the heat is within heat.min and heat.max, whether fuel time remains, and whether bake_time_seconds is valid.
Juicer cannot serve
Check whether the current fluid amount reaches serving_ml, whether the player is holding an allowed container, and whether the station already contains another fluid type.
Fermentation barrel cannot collect
Check fermentation progress, sealing state, early collection ratio, and whether the recipe has already moved into the over-fermented branch.
State lost after restart
Check whether data/stations/ is writable, whether shutdown saved state correctly, and whether data files were removed manually.