Events
Cooking events are synchronous and fire only while the runtime owns the relevant player, location, or global transaction boundary.
| Event | Timing/thread | Cancellable | Mutable field | Cancellation/effect |
|---|---|---|---|---|
CookingRecipeCompleteEvent | Before output delivery and completion actions; global-region owner | Yes | dropResult | Stops output delivery and completion actions; dropResult selects drop versus inventory delivery. |
PlayerNutritionConsumeEvent | Before nutrition values and food-source actions are applied; player owner | Yes | None | Prevents all matching nutrition effects/actions. |
NutritionThresholdChangeEvent | After a single/combo threshold edge changes; player owner | No | None | Informational. Read Kind before interpreting type/value versus match counters. |
CookingStationInteractEvent | Before dispatch to station handling; relevant player/location owner | No | None | Informational; station handling decides the interaction and the event feeds catalog().recentStation. |
CookingRecipeCompleteEvent.getPlayer() can be null when an automatic station completes, so null-check it before use.
No event is synthesized while the API is unavailable or reloading. createOutputs and completion-condition queries are API operations, not recipe-completion event publishers.