Skip to content

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

ItemValue
Module version3.1.0
Main command/ecooking
Alias/ec
Hard dependencyEmakiCoreLib
Soft dependenciesPlaceholderAPI, CraftEngine, ItemsAdder, Nexo, PacketEvents
Main permissionsemakicooking.use, emakicooking.reload, emakicooking.inspect, emakicooking.admin

Seven station types

StationTypical use
Chopping Board chopping_boardCut an ingredient into another form.
Wok wokAdd ingredients, control heat, stir, and serve.
Grinder grinderGrind items into powders or other materials.
Steamer steamerGUI/station flow that uses fuel, moisture, and steam progress.
Oven ovenAdd fuel, maintain valid heat, advance baking, and resolve the baking stage.
Juicer juicerPress ingredients into fluid and bottle servings by container capacity.
Fermentation Barrel fermentation_barrelInsert multiple ingredients, seal and ferment, then collect early, normal, or over-fermented results.

Default configuration layout

text
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/
PathPurpose
recipes/Recipes grouped by station. Start with the target station folder.
gui/steamer.ymlSteamer GUI.
gui/oven.ymlOven GUI.
gui/juicer.ymlJuicer GUI.
gui/fermentation_barrel.ymlFermentation 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.ymlGlobal station recognition, interaction, restriction, display, fuel, and fluid settings.

World-state flow

  1. A player interacts with a station block.
  2. Cooking checks whether the block matches a configured station.
  3. The state for that world location is loaded.
  4. The module runs the operation according to the held item, permissions, container, fuel, and recipe.
  5. Station state is updated, such as input items, cuts, heat, burn time, steam, moisture, fluid amount, or fermentation progress.
  6. When requirements are met, the module gives results, bottles fluid, advances a stage, or runs actions.
  7. 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.