Skip to content

CoreLib 动作

EmakiCooking 启用后会向 CoreLib 动作注册表追加营养值、阈值复查和配方奖励段。它们可用于其他模块的动作列表、CoreLib 管道模板,或第三方通过 CoreLib 管道引擎触发的管道。

NOTE

本页只记录 EmakiCooking 注册的段;CoreLib 自带通用段见 CoreLib 动作系统。当前段 ID 只使用下表中的规范名,不再提供历史别名入口。旧的 emakicookingaddnutrition 现在写作 cooking_add_nutrition,其余同理。

段 ID

七个段的目标要求都是 REQUIRED_ENTITY,非玩家目标会跳过。

段 ID操作说明
cooking_add_nutrition增加营养值增加指定营养类型当前值。
cooking_remove_nutrition扣除营养值扣除指定营养类型当前值。
cooking_set_nutrition设置营养值设置指定营养类型当前值。
cooking_clear_nutrition清空营养值将指定类型或全部类型设为各自 min
cooking_reset_nutrition重置营养值将指定类型或全部类型设为各自 default
cooking_recheck_nutrition_threshold复查阈值重新评估目标玩家的单项与组合营养阈值。
cooking_run_recipe_reward执行配方奖励通过 CookingRewardService 执行已加载配方的某个结果分支。

「作用于谁」由 source 决定,不再有 target 参数:作用于执行者自己写 self,指定玩家用 player_by_name

营养增减与设置

cooking_add_nutritioncooking_remove_nutritioncooking_set_nutrition 共用同一组参数。

参数类型必填默认值说明
typeSTRING营养类型 ID。
amountEXPRESSION营养数值,可写 CoreLib 表达式。
yaml
actions:
  - 'self | cooking_add_nutrition type=satiety amount=5'
  - 'self | cooking_remove_nutrition type=hydration amount=3'
  - 'player_by_name name=PlayerName | cooking_set_nutrition type=hydration amount=80'
  # amount 写成表达式
  - 'self | cooking_add_nutrition type=satiety amount=%var.base%*1.5'

成功时输出 typeold_valuenew_valuetype 写成空白会在运行时以 INVALID_CONFIG 失败;营养服务拒绝这次操作时以 REJECTED 失败并带上原因。

清空与重置营养

cooking_clear_nutrition 把营养值设为对应类型的 mincooking_reset_nutrition 设为对应类型的 default。两者的区别在语义上:一个把玩家饿到底,一个把玩家还原到中性状态。

参数类型必填默认值说明
typeSTRING""营养类型 ID;为空时处理全部已注册类型。
yaml
actions:
  - 'self | cooking_clear_nutrition type=hydration'
  - 'player_by_name name=PlayerName | cooking_reset_nutrition'

type 指向未注册的类型时以 INVALID_CONFIG 失败;没有任何已注册类型时跳过。遇到第一个失败的类型就停止,不会留下改了一半的营养记录。

阈值复查

cooking_recheck_nutrition_threshold 重新评估目标玩家的营养阈值。无参数。

yaml
actions:
  - 'self | cooking_recheck_nutrition_threshold'
  - 'player_by_name name=PlayerName | cooking_recheck_nutrition_threshold'

营养系统未启用或该玩家还没有缓存记录时按跳过处理,这两种情况都不算故障。

配方奖励

cooking_run_recipe_reward 会查找已加载配方,并通过 CookingRewardService 的统一出口发放产物、执行结果动作。它不会临时构造新配方;recipe 必须已经由对应工位加载器加载。

参数类型必填默认值说明
recipeSTRING配方 ID。
stationSTRING""工位目录名;为空时遍历所有工位加载器。
outcomeSTRINGsuccess结果名或路径,如 successperfectresult.success。不含 . 时自动补成 result.<名字>
drop_resultBOOLEANfalse是否把产物掉落在目标位置,而不是进入背包。
include_outputsBOOLEANtrue是否发放结果分支中的 outputs
include_actionsBOOLEANtrue是否执行结果分支中的 actions
phaseSTRING""记录在嵌套动作上的阶段名;为空时自动生成为 cooking.action.recipe.<配方 ID>
yaml
actions:
  - 'player_by_name name=PlayerName | cooking_run_recipe_reward recipe=apple_pie station=oven outcome=success'
  - 'self | cooking_run_recipe_reward recipe=tea outcome=result.perfect drop_result=true include_actions=false'

recipe 为空、station 不是已知工位、配方查不到,都会以 INVALID_CONFIG 失败。结果分支既没有 outputs 也没有 actions(或两个开关都关掉)时按跳过处理。成功时输出 recipestationoutcomeoutputsactionstarget

奖励链是异步且不等待结果的,所以这个段成功只代表发放已提交,不代表已完成。嵌套的配方动作运行在这个段没有构建的上下文里,管道的上下文声明检查不会延伸进去。

使用提示

  • amount 声明为 EXPRESSION,参数文本里的占位符会先被渲染再交给表达式引擎求值,所以 %var.*%、模块写入的上下文占位符与 PlaceholderAPI 占位符都能直接参与运算。
  • 营养服务或配方奖励服务未就绪时,对应段以 MISSING_CONTEXT 失败而不是静默跳过。
  • 嵌套配方动作可见的占位符包括 recipe_idrecipe_namestation_type,以及带 cooking_ 前缀的同名写法和 cooking_outcome