• 欢迎加入MineBBS QQ讨论群:点击查看所有的官方讨论群
  • 我们将于近期对服务器进行迁移,服务可能中断至多2日。请各位安排好自己的访问计划,造成不便敬请谅解!
  • MineBBS入站考试已经上线!想要成为【正式会员】解锁更多功能吗?快来参与吧!【点我去看】
EmakiCooking | 烹饪工作站

原创 开源 游戏模式 EmakiCooking | 烹饪工作站 4.2.0

完成注册/登录后下载
[MD] ### 动作语法迁移 - **动作写法整体换新, 但你不需要自己动手改。** 首次启动时 CoreLib 会自动把 `plugins/` 下所有 Emaki 插件的配置文件改写成新写法, 只做一次, 之后不再重复。每个被改过的文件旁边都会留一份 `.legacy-backup` 后缀的原文件备份。万一某一行转换不成功, 插件不会拿这行去覆盖你的配置, 而是单独写到一个 `.v2-failed` 文件里、原配置保持不动, 控制台也会列出是哪个文件的哪一行, 方便你自己看一眼。 - **只有营养相关的七个动作要你手工改一下名字**, 自动改写不包括它们。名字规则是加下划线分词 (`emakicooking*` → `cooking_*`): - `emakicookingaddnutrition` → `cooking_add_nutrition` - `emakicookingremovenutrition` → `cooking_remove_nutrition` - `emakicookingsetnutrition` → `cooking_set_nutrition` - `emakicookingclearnutrition` → `cooking_clear_nutrition` - `emakicookingresetnutrition` → `cooking_reset_nutrition` - `emakicookingrechecknutritionthreshold` → `cooking_recheck_nutrition_threshold` - `emakicookingrunrecipereward` → `cooking_run_recipe_reward` - 旧名字不再保留, 升级后还写旧名字的话, 控制台会提示找不到这个动作。 - **原先用 JS 脚本发奖励的配方需要重写。** JS 脚本功能整体取消了, 也没有自动转换的办法, 请改用配置文件里的动作来实现同样的奖励。随包的示例脚本 `scripts/examples/cooking_reward.js` 一并删除。 - 如果你用过营养循环 (在 CoreLib 里配 `action.loop.templates` 那种), 这部分也要手工改: `loopsync`/`cancelloop` 换成 `start_task`/`stop_task`, `%player_name%` 换成 `%caster.uuid%`, `mode=replace` 换成 `on_conflict=replace`, `stop_if_offline` 换成 `stop_when_offline`。config.yml 里营养阈值那段的注释已经写成新格式了, 照着改就行。另外 `start_task` 的重复次数受 CoreLib 的 `action.pipeline.max_repeat_times` 限制 (默认 `100` 次), 想让循环持续更久就把这个值调大。 ### 工位修复 - **修复工位用一段时间后彻底失灵**, 影响砧板、炒锅、研磨机、榨汁机。表现为: 炒锅炒好了却盛不出来、放进去的食材凭空消失或被后放的覆盖、砧板既切不动也取不下东西、研磨机进度条卡住不动。这些其实是同一个毛病, 插件在读取工位内容时会不断给它的存档记录累加编号, 一旦某次没保存成功, 这个工位在插件眼里就等于空的, 之后不管怎么操作都找不回来。现在已经不会再出现这种累加, 保存失败也会退回原样。 - **修复流水线自动流转卡住**, 只影响 Folia 服务端。原先一道菜从上一个工位流转到下一个工位时, 中途出错会让这个工位彻底停摆, 后面所有菜都推不动, 只能重启服务器。现在出错也会自动恢复, 不再卡死。 - **修复配方条件没通过却照样扣东西**, 影响炒锅和榨汁机。原先配方里写了 `condition` 条件时, 插件会先把碗或容器从玩家背包里扣掉, 再去判断条件, 条件不通过也已经扣完了, 还会提示制作成功。现在改成先判断再动手: 条件不通过就不扣任何物品, 不提示成功, 只执行 `on_fail` 里配置的动作。 - **修复取材料时可能在莫名其妙的时候扣物品**。需要从玩家背包取材料的配方, 原先取不到就一直反复重试, 可能等玩家走远了、换了物品之后才突然扣走。现在最多尝试 5 次, 都失败就放开工位, 不扣物品。 - **修复榨汁机方块挖不掉**。榨汁机里有液体时, 查看操作占用了左键, 结果生存和创造模式都没法正常破坏这个方块。现在查看操作默认改成右键。同时修复了手上没拿容器时反复弹错误提示刷屏的问题, 现在只有手持容器才会尝试盛取。 - **修复工位拆掉后地上还留着悬浮文字**。七种工位在被破坏时, 如果插件读不到它的内容, 会直接跳过清理, 把悬浮文字和展示物品留在原地。现在无论能不能读到内容, 都会先清干净再拆。 ### 配置清理 - 榨汁机的查看操作默认从左键改成了右键。新的 config.yml 已经是右键, 如果你沿用旧配置文件, 建议把 `stations.juicer` 下的 `inspect` 改成 `right_click`, 否则挖不掉榨汁机方块。 - 删掉了两个一直没有实际作用的配置项: `stations.juicer.drop_completed_result_on_break` 和 `stations.fermentation_barrel.require_sealed`。它们以前就写在配置文件里, 但插件从来没读过, 不管填什么都没效果, 现在直接删了, 你的配置里有也可以放心删掉。 ### 开发者相关 - `EmakiCookingApiProvider` 已移除, 直接使用 `EmakiCookingApi` 的静态方法。 - `EmakiCookingApi.available()`、`apiVersion()`、`pluginName()`、`isReady()` 全部移除, 由 `EmakiCookingApi.status()` 统一替代 (返回 `ApiStatus`, 提供 `usable()`、`ready()`、版本与插件名字段)。 - 新增三层公开 API: `EmakiCookingApi.nutrition()` (营养值读写)、`EmakiCookingApi.catalog()` (配方与工位只读查询, 含 `recentStation(UUID)`)、`EmakiCookingApi.operations()` (状态变更操作)。这三层在插件未加载时返回空实现, 不再抛异常。 - `EmakiCookingApi.Bridge` 改为 `@ApiStatus.NonExtendable`, 第三方插件不得实现。 - 事件类补齐线程语义说明: 各事件均为同步事件, 仅在运行时持有对应区域/实体所有权时触发, 监听器需遵守相同的 Paper/Folia 线程约束。 ### 升级说明 - 需要先把 EmakiCoreLib 升到 `4.7.0`。 - **升级前请备份 `plugins/EmakiCooking/` 整个目录。** - 大部分动作写法由插件自动改写, 但下面三处要你自己动手: - 营养相关的七个动作要改名 (对照上面的清单)。 - 用 JS 脚本发奖励的配方要改成用动作实现。 - 营养循环的配置要换成 `start_task`/`stop_task` 写法。 - 沿用旧配置文件的话, 记得把榨汁机的 `inspect` 改成 `right_click`。 - 玩家的营养数据和世界里已经摆好的工位都不受影响, 不需要迁移。配方文件里的动作写法会被自动改写, 配方本身的结构没变。 [/MD]
[MD] ### 【必读】升级前必须完成的两件事 - **不处理会静默清空玩家营养数据。** 营养数据键由 `values:` 改为 `nutrition:`,没有兼容旧键的回退读取,也没有提升数据版本号,因此旧的 `data/nutrition/<uuid>.yml` 会被判定为空并按各营养类型默认值重建。**升级前必须先备份 `data/nutrition/`,并把每个玩家文件中的 `values:` 段改名为 `nutrition:`**,否则所有玩家营养数据都会丢失。 - **营养动作短别名已移除。** `ecaddnutrition`、`cookingaddnutrition`、`ecremovenutrition`、`ectakenutrition`、`cookingremovenutrition`、`ecsetnutrition`、`cookingsetnutrition` 全部不再存在,只保留 `emakicookingaddnutrition`、`emakicookingremovenutrition`、`emakicookingsetnutrition`。**升级前必须检索所有配置与脚本,把短别名替换为完整的 `emakicooking*` 动作名**,否则使用短别名的动作链会报动作未注册。 ### 工位数据未被破坏 - 工位状态存储主体迁移到方块 PDC,但旧的 YAML 仍会被扫描并自动归档到 `data/stations-legacy-backup/`;没有方块实体的方块继续走 YAML 回退。 - 配方文件、`stations.*` 结构与权限键均未改变。 ### 破坏性变更:移除 Web Console - 浏览器端 Web Console 层已整体移除,包含 `web-console.yml`、GUI 界面的网页扩展与配套前端项目;原先依赖该网页界面完成的运维操作需要改用配置文件或命令。 ### 世界黑名单与工位占位符 - 新增全局与按工位的世界黑名单:`station.disabled_worlds: []` 与 `stations.<type>.disabled_worlds: []`。在黑名单世界中,插件不接管相关事件,保留原版方块行为。 - 新增工位占位符族 `%emakicooking_station_*%`,解析玩家最近交互的工位:`type`、`type_name`、`world`、`x`、`y`、`z`、`location`、`block`、`heat_block`、`burning`、`burning_seconds`、`heat`、`moisture`、`steam`、`input`、`input_source`、`input_amount`、`ingredient_count`、`recipe`、`recipe_id`、`progress`、`progress_target`、`progress_percent`、`completed`、`fluid`、`fluid_amount`、`player`。另有 `station_<name>_<field>` 形式用于指定某一工位类型。 - 新增公开的工位交互事件,第三方插件可以据此做联动。 ### 命令、动作与预检 - 新增命令 `/ecooking station reindex`(需要 `emakicooking.admin`),用于重建工位状态索引。 - 新增 `/ecooking inspect block`(此前只有 `inspect hand`),可查看工位类型、来源、方块、方块状态、是否为方块实体、存储后端、PDC 状态、索引状态、索引后端、是否存在旧版 YAML,以及是否被世界黑名单禁用交互。 - 新增营养动作:`emakicookingclearnutrition`、`emakicookingresetnutrition`、`emakicookingrechecknutritionthreshold`、`emakicookingrunrecipereward`。 - 配置预检新增配方目录与工位状态目录提示,并按工位给出存储后端提示。 - 新增本地化工位名称与错误提示键。 ### 修复 - 修复工位悬浮文本丢失原版物品译名的问题:此前文本会被拍平成旧式字符串,客户端无法本地化可翻译组件。现在保留组件结构,原版物品名按客户端语言显示。 - 修复默认 `config.yml` 中示例动作行无效、从不触发的问题:它们使用了未注册的动作 id。默认值已修正,开箱示例(砧板、炒锅、研磨机、蒸锅、烤炉、榨汁机、发酵桶的音效与粒子反馈,以及营养过量反馈)现在可以真正生效。 ### 其他改进 - 插件描述文件由 `plugin.yml` 更名为 `paper-plugin.yml`,改用结构化依赖(必需 EmakiCoreLib;可选 PlaceholderAPI / CraftEngine / ItemsAdder / Nexo / Oraxen / PacketEvents / MMOItems / NeigeItems)。全部 25 个权限键及其默认值保持不变;`/ecooking`(别名 `ec`)改为代码注册,别名保留。 - 工位状态主要存放在方块 PDC 并带版本账本,配合索引恢复与完成事务恢复,崩服或强制关服后工位进度与产出更不容易丢失或重复发放。 - 消息前缀更换为新的品牌渐变样式。 - 第三方物品 / 家具接入范围保持不变。 ### 升级说明 - 需要 EmakiCoreLib `4.6.0`。 - **升级前请依次完成:备份 `data/nutrition/`,把各玩家文件的 `values:` 改名为 `nutrition:`,再检索配置与脚本替换全部营养动作短别名。** - `api-version` 由 `1.21` 提升到 `1.21.8`,构建基线由 spigot-api 改为 paper-api;`folia-supported: true` 与 Java 25 目标保持不变。 - 新增配置键 `station.disabled_worlds` 与按工位的 `disabled_worlds` 默认为空列表,即不禁用任何世界,不填写则行为不变。 - 升级后建议用 `/ecooking inspect block` 抽查若干已放置工位,确认存储与索引状态正常,并检查一次玩家营养数值是否符合预期。 [/MD]
[MD] ### 新增 - 新增营养系统(类膳食均衡 Diet),默认开启、开箱即用: - 营养类型可在 `nutrition/<id>.yml` 自定义,默认提供水果、蔬菜、蛋白质、糖分、谷物五类,可自由增删,每类有上下限和默认值。 - 进食加营养:在 `nutrition.food_sources` 配置「物品来源 → 营养增量」。原版、CraftEngine、ItemsAdder、Nexo、Oraxen 食物走原版食用事件;MMOItems、NeigeItems 的消耗品通过各自接入识别(缺失对应插件时静默跳过)。 - 阈值动作(边沿触发,不会重复执行):单类型阈值可在某营养达到条件时触发动作、跌回时触发恢复动作;组合阈值可在「达标营养类型数量」满足条件时触发,可还原「五大营养全满后反胃」这类玩法。 - 配合 CoreLib 循环动作实现持续衰减、持续增益等效果,配置注释中提供了可直接粘贴到 CoreLib 的循环模板示例。 - 新增动作 `emakicookingaddnutrition` / `emakicookingremovenutrition` / `emakicookingsetnutrition`,可在任意动作链中调整玩家营养。 - 新增命令 `/ecooking nutrition get|set|add|remove`,新增权限 `emakicooking.nutrition.use`(默认开启)与 `emakicooking.nutrition.admin`(默认 OP)。 - 新增 PlaceholderAPI 占位符 `%emakicooking_nutrition_<类型>%` 及其 `_max` / `_min`,以及组合规则达标数量占位符。 - 玩家营养值会持久化保存,保存间隔可通过 `nutrition.save_interval_seconds` 配置(默认 300 秒)。 - 新增对 Oraxen 的兼容:烹饪工位的方块和家具来源现在支持 Oraxen 自定义方块与家具交互。 - 新增公开 Bukkit 事件:`PlayerNutritionConsumeEvent`(进食获得营养前触发,可取消)、`NutritionThresholdChangeEvent`(营养阈值边沿变化通知)、`CookingRecipeCompleteEvent`(烹饪配方完成时触发,可取消、可改产物)。 - 新增 JavaScript 脚本扩展:可注册烹饪结果规则与完成钩子,入口 `emaki.module("cooking")`。 - 接入配置预检:启动和重载时检查 Cooking 配置并在控制台给出明确提示。 ### 修复 - 修复在 Folia 上关闭工位容器时可能出现卡顿的问题(涉及发酵桶、榨汁机、烤箱、蒸锅等工位界面)。 ### 注意事项 - 【破坏性】烹饪配方条件仅读取 `availability_condition`,不再回退旧的根级条件字段,请把旧条件写法迁移到 `availability_condition`。 - 营养系统新增软依赖 Oraxen、MMOItems(含 MythicLib)、NeigeItems,均为可选;未安装时对应接入会自动跳过,不影响插件启动。 - 营养系统默认开启,如不需要可在 `nutrition.enabled` 关闭。 - 更新前建议备份 `recipes/`、`item_adjustments/`、`nutrition/` 和已放置工位数据。 [/MD]
[MD] ### 新增 - 新增 Cooking JavaScript 模块入口,可通过 `emaki.module("cooking")` 判断 Cooking 是否可用并读取基础模块信息。 - 新增 Cooking 默认脚本示例由 Cooking 自己释放,不再由 CoreLib 代管业务示例。 - 新增统一配方结果结构:推荐使用 `result.<分支>.outputs/actions` 表达普通、完美、过熟、提前收取等分支结果。 - 新增砧板输入数量语义:使用 `input.amount` 表示一次切割需要消耗的输入数量。 - 新增 Web Console Cooking 配置注册结构,配方、GUI、物品调整和工位配置更适合网页端维护。 ### 修复 - 修复砧板累计输入数量和展示物品数量语义不清,容易导致取回或破坏时数量处理不直观的问题。 - 修复部分工位在 CraftEngine、ItemsAdder、Nexo 等来源下匹配和交互行为不统一的问题。 - 修复旧配方结果字段分散在多个位置,导致输出和动作配置容易混淆的问题。 - 修复烹饪结果产物与 CoreLib Assembly 物品重建链路不够统一的问题。 - 修复 Web Console 烹饪 GUI 编辑器仍保留部分旧槽位字段的问题。 ### 重构 - 重构 Cooking API 获取方式,使用静态门面 + Bridge,第三方插件不再依赖实现类实例。 - 重构配方结果解析流程,统一读取 `result.<branch>.outputs/actions`。 - 重构工位交互模型,统一普通方块、自定义方块和外部方块来源的交互上下文。 - 重构砧板、研磨机、榨汁机、蒸锅、烤箱、炒锅、发酵桶等工位运行服务的物品处理逻辑。 - 重构 Cooking Web Console 前端入口,将注册逻辑拆分到独立文件。 ### 优化 - 优化默认示例配方,让新服务器可以直接参考当前推荐结构。 - 优化取回物品、破坏工位、掉落剩余物品时的数量拆分和自定义元数据保留。 - 优化物品来源显示名,配方预览中更容易看到友好的物品名称。 - 优化 Web Console 中 Cooking 配方、GUI 和动作列表编辑体验。 - 优化与 CoreLib 条件系统、动作系统和 Assembly 预览链路的集成。 ### 注意事项 - 如果你维护了旧配方,请重点检查 `result.<分支>.outputs/actions` 和 `input.amount`。 - 更新前建议备份 `recipes/`、`item_adjustments/` 和已放置工位数据。 - 建议与 CoreLib v4.3.0 一起更新。 [/MD]
后退
顶部 底部