Placeholder Reference
PlaceholderAPI Placeholders
Expansion identifier: emakicooking
When PlaceholderAPI is installed, EmakiCooking registers the following placeholders.
| Placeholder | Description | Example |
|---|---|---|
%emakicooking_recipe_count% | Total recipe count across all stations. | 42 |
%emakicooking_recipe_count_chopping_board% | Chopping board recipe count. | 8 |
%emakicooking_recipe_count_wok% | Wok recipe count. | 12 |
%emakicooking_recipe_count_grinder% | Grinder recipe count. | 5 |
%emakicooking_recipe_count_steamer% | Steamer recipe count. | 6 |
%emakicooking_recipe_count_oven% | Oven recipe count. | 4 |
%emakicooking_recipe_count_juicer% | Juicer recipe count. | 3 |
%emakicooking_recipe_count_fermentation_barrel% | Fermentation barrel recipe count. | 4 |
Nutrition placeholders
Nutrition placeholders also use the emakicooking identifier. See Nutrition System for the gameplay.
| Placeholder | Description | Example |
|---|---|---|
%emakicooking_nutrition_<type>% | Current value of a player's nutrition type. | 60 |
%emakicooking_nutrition_<type>_max% | Upper bound of a nutrition type. | 100 |
%emakicooking_nutrition_<type>_min% | Lower bound of a nutrition type. | 0 |
%emakicooking_nutrition_combo_count_<ruleId>% | Number of nutrition types currently qualifying for a combo threshold rule. | 3 |
<type> is a nutrition type id (such as fruit or protein), and <ruleId> is a combo threshold rule id. Nutrition placeholders depend on player state and require an online player context.
Station Runtime Placeholders
Station runtime placeholders read the live state of the player's currently associated station, also using the emakicooking identifier. There are two forms:
%emakicooking_station_<field>%: automatically uses the player's currently associated station.%emakicooking_station_<type>_<field>%: only returns a value when the player's associated station matches the given type, otherwise an empty string. The type is a folder name (chopping_board,wok,grinder,steamer,oven,juicer,fermentation_barrel).
Association order: the player's most recently used station first (the player must still be in the same world and within a built-in distance limit), then the station GUI session the player currently has open (steamer / oven / juicer / fermentation barrel). Returns an empty string when the player has no associated station or the station is empty.
| Field | Description | Example |
|---|---|---|
type | Station type (folder name). | chopping_board |
type_name | Station display name. | Chopping Board |
world | Station world name. | world |
x | Station block X coordinate. | 100 |
y | Station block Y coordinate. | 64 |
z | Station block Z coordinate. | -200 |
location | Combined coordinate string world,x,y,z for whole-string matching. | world,100,64,-200 |
block | Station block id (custom block id or vanilla Material name). | minecraft:oak_log |
heat_block | Heat source block id (below the station; empty when none). | minecraft:furnace |
burning | Whether the heat source is burning. | true |
burning_seconds | Remaining burn seconds of the heat source. | 40 |
heat | Heat (oven) / heat level (wok). | 60 |
moisture | Moisture (steamer). | 80 |
steam | Steam (steamer). | 30 |
input | Plain text name of the main input item. | Apple |
input_source | Main input item source shorthand. | minecraft-apple |
input_amount | Main input item amount. | 16 |
ingredient_count | Number of input item types. | 3 |
recipe | Display name of the matched / in-progress recipe. | Apple Juice |
recipe_id | Current recipe id. | apple_juice |
progress | Current progress value. | 2 |
progress_target | Target progress value. | 5 |
progress_percent | Progress percentage (one decimal place). | 40.0 |
completed | Whether it is completed (collectable). | false |
fluid | Fluid name (juicer). | Apple Juice |
fluid_amount | Fluid amount in ml (juicer). | 500 |
player | Operating / viewing player name. | Steve |
Fields that do not apply to the current station return an empty string or 0 (for example a chopping board has no heat source, so heat_block is empty and burning is false).
Condition Recipe Gameplay Example
Combined with a recipe's availability_condition / condition, station coordinates can distinguish specific stations of the same type. For example, place two identical chopping boards and let only the one at a specific coordinate complete a recipe (the combined coordinate string contains commas, so quote it for string comparison):
availability_condition:
type: all_of
entries:
- '%emakicooking_station_location% == "world,100,64,-200"'You can also match a single coordinate field:
availability_condition:
type: all_of
entries:
- '%emakicooking_station_x% == 100'
- '%emakicooking_station_z% == -200'See Condition System for the full condition block syntax (type / entries / on_fail, etc.).
Usage Example
lore:
- '<gray>Total recipes: <white>%emakicooking_recipe_count%'
- '<gray>Wok recipes: <white>%emakicooking_recipe_count_wok%'Internal Template Variables
The following variables are available in recipe structured_presentation (name and lore action templates) using the %variable% format.
| Variable | Description | Example |
|---|---|---|
%recipe_id% | Recipe ID. | grilled_steak |
%recipe_name% | Recipe display name. | Grilled Steak |
%station_type% | Station type (folder name). | oven |
%phase% | Current cooking phase. | cooking |
%output_source% | Output item source shorthand. | minecraft-cooked_beef |
%output_amount% | Output amount. | 1 |
%output_chance% | Output chance. | 100% |
%output_amount_min% | Minimum of output amount range. Present only when the outcome declares amount_range. | 1 |
%output_amount_max% | Maximum of output amount range. Present only when the outcome declares amount_range. | 3 |
%output_source% uses the CoreLib ItemSource shorthand form, for example minecraft-cooked_beef.
Template Example
structured_presentation:
lore_actions:
- action: "append"
content:
- ""
- "<gray>Recipe: <white>%recipe_name%"
- "<gray>Station: <white>%station_type%"
- "<gray>Output: <white>%output_amount%x %output_source%"Action Context Variables
When cooking reward actions (CookingRewardService) are triggered, the following variables are injected into the action context:
| Variable | Description | Example |
|---|---|---|
%player% | Player name. | Steve |
%player_uuid% | Player UUID. | 00000000-0000-0000-0000-000000000000 |
%world% | World name. | world |
%x% | Station block X coordinate. | 100 |
%y% | Station block Y coordinate. | 64 |
%z% | Station block Z coordinate. | -200 |
%recipe_id% | Current recipe ID. | grilled_steak |
%recipe_name% | Recipe display name. | Grilled Steak |
%station_type% | Station type (folder name). | oven |
%cooking_recipe_id% | Prefixed form of %recipe_id%. | grilled_steak |
%cooking_recipe_name% | Prefixed form of %recipe_name%. | Grilled Steak |
%cooking_station_type% | Prefixed form of %station_type%. | oven |
%input_count% | Number of input ingredient entries in this settlement. | 3 |
Some stations inject additional variables when they settle a result:
| Variable | Injected by | Description |
|---|---|---|
%outcome% | Wok | The matched outcome branch name. |
%slot_index% | Oven, steamer, juicer | The slot index being settled. |
Output-level templates (structured_presentation) additionally receive %phase%, %output_source%, %output_amount%, %output_chance%, %output_amount_min%, and %output_amount_max%.
Action Example
Recipe outcome actions are CoreLib action strings:
actions:
- 'sendmessage text="<green>%player% finished cooking %recipe_id% at the %station_type%!</green>"'Notes
- PAPI placeholders do not depend on player state for the
recipe_countseries, which are global values suitable for admin panels or scoreboards. Nutrition placeholders require an online player context. - CoreLib built-in context variables (
%player_name%,%player_uuid%, etc.) are also available.