Skip to content

占位符参考 ​

EmakiCooking 的三类占位符及其含义如下: PlaceholderAPI 占位符, 配方模板变量和动作上下文变量, 各自的生效位置见对应小节

PlaceholderAPI 占位符 ​

扩展标识符: emakicooking

安装 PlaceholderAPI 后, EmakiCooking 会自动注册以下占位符

占位符说明示例
%emakicooking_recipe_count%所有烹饪站配方总数42
%emakicooking_recipe_count_chopping_board%砧板配方数量8
%emakicooking_recipe_count_wok%炒锅配方数量12
%emakicooking_recipe_count_grinder%研磨机配方数量5
%emakicooking_recipe_count_steamer%蒸锅配方数量6
%emakicooking_recipe_count_oven%烤箱配方数量4
%emakicooking_recipe_count_juicer%榨汁机配方数量3
%emakicooking_recipe_count_fermentation_barrel%发酵桶配方数量4

营养占位符 ​

营养相关占位符同样使用 emakicooking 标识符. 营养玩法见 营养系统

占位符说明示例
%emakicooking_nutrition_<type>%玩家某营养类型当前值60
%emakicooking_nutrition_<type>_max%营养类型上限100
%emakicooking_nutrition_<type>_min%营养类型下限0
%emakicooking_nutrition_combo_count_<ruleId>%指定组合阈值规则当前达标的营养类型数量3

<type> 为营养类型 id (如 fruit, protein), <ruleId> 为组合阈值规则 id. 营养占位符依赖玩家状态, 需要在线玩家上下文

工位运行态占位符 ​

工位运行态占位符用来读取玩家当前关联工位 (世界里用来做菜的那块方块) 的实时状态, 同样使用 emakicooking 标识符. 有两种写法:

  • %emakicooking_station_<字段>%: 自动取玩家当前关联的工位
  • %emakicooking_station_<工位类型>_<字段>%: 仅当玩家关联工位与指定类型一致时才返回, 否则返回空串. 工位类型为文件夹名 (chopping_board, wok, grinder, steamer, oven, juicer, fermentation_barrel)

工位关联方式: 优先取玩家最近一次交互的工位 (玩家要还在同一个世界, 且距离不超过内置上限), 其次取玩家正打开的工位界面会话 (蒸锅 / 烤炉 / 榨汁机 / 发酵桶). 玩家没有关联工位, 或工位是空态时返回空串

字段说明示例
type工位类型 (文件夹名)chopping_board
type_name工位显示名砧板
world工位所在世界名world
x工作方块 X 坐标100
y工作方块 Y 坐标64
z工作方块 Z 坐标-200
location工位坐标合并串 世界,x,y,z, 便于整串匹配world,100,64,-200
block工作方块 id (自定义方块 id 或原版 Material 名)minecraft:oak_log
heat_block热源方块 id (工作方块下方, 无热源为空)minecraft:furnace
burning热源是否正在燃烧true
burning_seconds热源剩余燃烧秒数40
heat热度 (烤炉) / 火力等级 (炒锅)60
moisture水分 (蒸锅)80
steam蒸汽 (蒸锅)30
input主输入物品纯文本名苹果
input_source主输入物品来源简写minecraft-apple
input_amount主输入物品数量16
ingredient_count输入物品种类数3
recipe当前匹配 / 进行中的配方显示名苹果汁
recipe_id当前配方 idapple_juice
progress进度当前值2
progress_target进度目标值5
progress_percent进度百分比 (保留 1 位小数)40.0
completed是否已完成 (可收取)false
fluid流体名 (榨汁机)苹果汁
fluid_amount流体毫升量 (榨汁机)500
player操作 / 查看玩家名Steve

不适用于当前工位的字段返回空串或 0 (例如砧板没有热源, heat_block 为空, burning 为 false)

条件配方玩法示例 ​

配合配方的 availability_condition / condition, 可以用工位坐标区分同种工位的具体个体. 例如摆放两个相同砧板, 只让特定坐标的砧板能完成某配方 (坐标合并串含逗号, 作字符串比较需加引号):

yaml
availability_condition:
  type: all_of
  entries:
    - '%emakicooking_station_location% == "world,100,64,-200"'

也可以只用单个坐标字段匹配:

yaml
availability_condition:
  type: all_of
  entries:
    - '%emakicooking_station_x% == 100'
    - '%emakicooking_station_z% == -200'

条件块的完整语法 (type / entries / on_fail 等) 见 条件系统

使用示例 ​

yaml
lore:
  - '<gray>总配方数: <white>%emakicooking_recipe_count%'
  - '<gray>炒锅配方: <white>%emakicooking_recipe_count_wok%'

内部模板变量 ​

以下变量可用于配方的 structured_presentation (名称与 Lore 操作模板) 中, 使用 %variable% 格式

变量说明示例
%recipe_id%配方 IDgrilled_steak
%recipe_name%配方显示名烤牛排
%station_type%工位类型 (文件夹名)oven
%phase%当前烹饪阶段cooking
%output_source%产出物品来源简写minecraft-cooked_beef
%output_amount%产出数量1
%output_chance%产出概率100%
%output_amount_min%产出数量范围最小值. 仅在结果写了 amount_range 时存在1
%output_amount_max%产出数量范围最大值. 仅在结果写了 amount_range 时存在3

%output_source% 使用 CoreLib ItemSource 简写形式, 例如 minecraft-cooked_beef

模板示例 ​

yaml
structured_presentation:
  lore_actions:
    - action: "append"
      content:
        - ""
        - "<gray>配方: <white>%recipe_name%"
        - "<gray>工位: <white>%station_type%"
        - "<gray>产出: <white>%output_amount%x %output_source%"

动作上下文变量 ​

烹饪奖励动作 (CookingRewardService) 触发时, 以下变量会注入到 Action 上下文中:

变量说明示例
%player%玩家名称Steve
%player_uuid%玩家 UUID00000000-0000-0000-0000-000000000000
%world%世界名称world
%x%工位方块 X 坐标100
%y%工位方块 Y 坐标64
%z%工位方块 Z 坐标-200
%recipe_id%当前配方 IDgrilled_steak
%recipe_name%配方显示名烤牛排
%station_type%工位类型 (文件夹名)oven
%cooking_recipe_id%%recipe_id% 的带前缀写法grilled_steak
%cooking_recipe_name%%recipe_name% 的带前缀写法烤牛排
%cooking_station_type%%station_type% 的带前缀写法oven
%input_count%本次参与结算的输入种类数3

部分工位在完成结算时还会额外注入自己的变量:

变量注入方说明
%outcome%炒锅命中的结果分支名
%slot_index%烤炉, 蒸锅, 榨汁机本次结算的槽位索引

产物级模板 (structured_presentation) 在上述变量基础上再追加 %phase%, %output_source%, %output_amount%, %output_chance%, %output_amount_min%, %output_amount_max%

动作示例 ​

配方结果分支中的 actions 是 CoreLib 动作字符串列表:

yaml
actions:
  - 'send_message text="<green>%player% 在 %station_type% 完成了 %recipe_id% 的烹饪!</green>"'

说明 ​

  • PAPI 占位符不依赖玩家状态, recipe_count 系列为全局值, 适合用于管理面板或计分板
  • CoreLib 的内置上下文变量 (%player_name%, %player_uuid% 等) 同样可用