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

原创 开源 游戏模式 EmakiStrengthen | 装备星级强化 4.7.0

完成注册/登录后下载
[MD] ### 动作写法迁移 - **动作写法整体换新, 但你不需要自己动手改。** 首次启动时 CoreLib 会自动把 `plugins/` 下所有 Emaki 插件的配置文件改写成新写法, 只做一次, 之后不再重复。每个被改过的文件旁边都会留一份 `.legacy-backup` 后缀的原文件备份。万一某一行转换不成功, 插件不会拿这行去覆盖你的配置, 而是单独写到一个 `.v2-failed` 文件里、原配置保持不动, 控制台也会列出是哪个文件的哪一行, 方便你自己看一眼。 - **强化自己的六个动作要你手工改一下名字**, 自动改写不包括它们。把 `emakistrengthen` 前缀换成 `strengthen`: - `emakistrengthen_set_star` → `strengthen_set_star` - `emakistrengthen_add_star` → `strengthen_add_star` - `emakistrengthen_remove_star` → `strengthen_remove_star` - `emakistrengthen_reset_star` → `strengthen_reset_star` - `emakistrengthen_clear_layer` → `strengthen_clear_layer` - `emakistrengthen_rerender` → `strengthen_rerender` - 旧名字不再保留, 升级后还写旧名字的话, 控制台会提示找不到这个动作。 - **配方里 `actions:` 下面用到的强化变量要加 `var.` 前缀**, 这一步也要手工改。以前写 `%star%`, 现在写 `%var.star%`。可用的变量有 `star`、`temper`、`was_star`、`dropped`、`protected`、`operation_id`, 以及 `strengthen_star`、`strengthen_temper`、`strengthen_recipe`、`strengthen_recipe_id`、`strengthen_max_star`、`strengthen_success_rate`、`strengthen_show_item`、`strengthen_result_slot`、`strengthen_operation_id`。原来的 `%show_item%` 取消了, 改用 `%var.strengthen_show_item%`。 - **配方里其他地方的占位符不用动。** `lore_actions`、`name_actions` 里的 `%star%`、`%temper%`、`%max_temper%`、`%temper_color%`, 以及 `economy` 下 `cost_formula` 里的 `%base_cost%`、`%star%` 都照旧, 只有 `actions:` 里的动作行才要加前缀。改错了反而会失效。 - **原先用 JS 脚本改成功率或接强化结果的配置需要重写。** JS 脚本功能整体取消了, 也没有自动转换的办法。原来能用脚本注册成功率规则 (`registerChanceRule`) 和结果回调 (`onResult`), 现在这两个入口都不存在了, 请改用配方里的 `condition` 与 `actions` 实现同样的效果。随包的示例脚本 `scripts/examples/strengthen_success.js` 一并删除。 ### 强化界面 - **修复强化界面里预览、强化值状态、确认按钮三个格子只显示死板文字**, 成功率、花费、失败惩罚、材料清单、当前强化值全都看不到。原因是这三个格子在 `gui/strengthen_gui.yml` 里写了自己的名字和 lore, 插件算好的内容会被这份配置整个盖掉, 于是玩家永远只看到配置里那两行提示。现在改成由插件把内容填进占位符, 版式还是你在配置里定的, 内容则按当前状态实时给。 - **修复确认按钮在条件不满足时还是铁砧图标**, 看上去像能点。现在会按预期换成 BARRIER, 标题也改成「无法强化」。 - **材料清单不是新做的, 是原来就在算、但一直被上面那个毛病吞掉。** 修好之后你才第一次看得见它: 预览格子逐条列出这一星级需要的材料, 每条按「已放入 GUI 的量 / 需要的量」计数, 数量够了显示绿色、不够显示红色; 已经放进 GUI 的其他材料另起一段列出来。 - **沿用旧 `gui/strengthen_gui.yml` 的话要改三处**, 否则还是看不到内容: - `preview_display` 的 `custom_name` 改成 `%preview_title%`, `lore` 改成只有一行 `%preview_lines%`。 - `temper_display` 的 `lore` 改成只有一行 `%temper_lines%`, 标题可以保持你自己写的文字。 - `confirm` 的 `custom_name` 改成 `%confirm_title%`, `lore` 改成只有一行 `%confirm_lines%`。 - 这三个占位符每一项各占一行自动展开, 你不需要预留多行。具体文案在 lang 文件的 `gui.preview.*`、`gui.temper.*`、`gui.confirm.*` 里, 想改字直接改那边。 ### 配方与配置 - **配方里的 `gui_template` 现在真的生效了。** 这个键一直能填, 但插件从来没读它, 不管填什么都只会打开 `strengthen_gui`。现在会按你手里物品命中的配方去打开它指定的界面, 填的模板不存在时退回 `strengthen_gui`。想给不同装备做不同界面的话, 现在可以了。 - **配置有问题时不会再套用一半。** 以前 `/emakistrengthen reload` 遇到配置写错, 可能语言文件已经换了、配方却没加载成功, 服务器就停在一个半新半旧的状态。现在会先整体检查一遍, 没通过就整套保持原样, 控制台说明是哪个文件哪一行的问题。 - 控制台里配置检查的问题行按严重级别整行着色, 警告是黄色、错误是红色, 一眼能分出哪条要紧。 ### 名称调整 - **「锻印」和「裂纹」统一改叫「强化值」**, 英文从 `Crack` 改成 `Temper`。涉及界面标题、`/emakistrengthen clearcrack` 的提示与帮助文字、强化失败提示、示例配方注释与 lore。命令名 `clearcrack`、权限、配置键 (`max_temper`、`temper_chance_bonus_per_level`、`temper_boost`) 和占位符名字都没变, 只是给玩家看的文案换了说法。你自己改过 lang 文件的话不受影响。 [/MD]
[MD] ### 破坏性变更与必要迁移 - 【破坏性】GUI 槽位物品结构改为嵌套组件:原 `item: "<MATERIAL>"` 搭配 `display_name`、`lore`、`hidden_components: [tooltip]`,现改为 `item.source` 搭配 `item.components.custom_name`、`item.components.lore`、`item.components.tooltip_display.hide_tooltip`。自定义 `gui/strengthen_gui.yml` 必须迁移。 - 【破坏性】插件描述文件迁移到 `paper-plugin.yml`,其中的 `commands:` 段已移除,必须使用 Paper 系服务端。 - 【破坏性】`AttemptContext` 与 `AttemptResult` 从 Java record 改为 final 类:访问器方法名保持不变,但 record 模式解构不再可用,依赖 record 语义的反射或序列化使用方需要调整。 - 【移除】浏览器端 Web Console 层整体移除:`web-console.yml`、`web-extensions/`、对应的 CSS 资源以及 `web-console/` 前端项目。 - 【移除】强化路线预览能力整体移除。它此前只有浏览器端入口,没有游戏内命令或 GUI,因此影响范围仅限 Web Console 用户。 ### 新增功能 - 新增配置项 `release_default_data`(默认 `true`);设为 `false` 后不再释放自带的示例强化配方与脚本示例。 - 新增六个可配置手持物品动作:`emakistrengthen_set_star`、`emakistrengthen_add_star`、`emakistrengthen_remove_star`、`emakistrengthen_reset_star`、`emakistrengthen_clear_layer`、`emakistrengthen_rerender`。 - 配置预检文本可本地化,加载类型名称可翻译。 - 公开 API 新增 `AttemptOutcome` 枚举(`NOT_COMMITTED`、`COMMITTED_SUCCESS`、`COMMITTED_FAILURE`、`COMPENSATION_PENDING`),把「判定成功」与「事务已提交」区分开。 - 公开 API 新增幂等键 `operationId`,通过 `AttemptContext`、`AttemptResult`(`operationId()`、`outcome()`、`committed()`、`compensationPending()`)以及强化尝试相关事件暴露。 - 新增对 EmakiItem 的可选软依赖;未安装该插件时,EmakiAttribute 对接会降级运行,不再直接失败。 ### API 行为调整 - `StrengthenPreAttemptEvent.getTargetItem()` 改为返回防御性副本,修改它不再影响真正的强化输入;成功率会被限制在 0–100,非有限数值按 0 处理。 - `AttemptContext.materialInputs` 现在保留 null 占位,使列表下标可以继续作为稳定的 GUI 槽位标识。此前假设「列表长度等于材料数量」的调用方会受影响。 - API 不再修改通过 `AttemptContext` 传入的物品堆:调用方需要自己应用 `AttemptResult.resultItem()`,并自行处理外部背包中的材料消耗。 ### 结算与会话可靠性 - 经济扣费失败的处理从直接退款改为「回滚加待补偿」:物品与货币分别回滚,未完成的回滚会被报告为待补偿,而不是当作已退款。 - 结算后返还剩余材料时会同时清理对应的会话槽位状态,关闭 GUI 只会关闭当前会话。 - 消息前缀更换为新的品牌渐变配色。 ### 修复 - 强化结果消息路径存在空指针,导致该情况下玩家收不到结果反馈;现已补上缺失的空值检查。 - `/emakistrengthen reload` 的回复改为在发送者自身的执行域上送达,这是 Folia 上的正确行为所必需的。 ### 运行环境与兼容性 - `api-version` 由 `1.21` 提升到 `1.21.8`;构建基座由 spigot-api 改为 paper-api,使用本插件 API 的开发者需要同步切换编译基座。 - Java 目标版本仍为 25,`folia-supported: true` 保持不变,权限集与子命令集保持不变(inspect/refresh/setstar/clearstate/clearcrack/givecatalyst)。 ### 升级说明 - 需要 EmakiCoreLib `4.6.0`。 - 升级前请备份 `gui/strengthen_gui.yml` 并按上述结构迁移;如不希望再释放示例数据,可将 `release_default_data` 设为 `false`。 - 升级后建议执行一次 `/emakistrengthen reload`,并验证强化流程、材料返还与结果提示是否正常。 [/MD]
[MD] ### 新增 - 新增公开 Bukkit 事件:`StrengthenPreAttemptEvent`(强化尝试前触发,可取消、可改写成功率)和 `StrengthenAttemptEvent`(强化尝试后通知),第三方插件可监听这些事件介入强化流程或做联动统计。 - 新增 JavaScript 脚本扩展:可注册强化概率规则和强化结果钩子,用脚本动态干预强化成功率与结果处理。 - 接入配置预检:启动和重载时检查 Strengthen 配置并在控制台给出明确提示。 ### 修复 - 修复打开强化界面时在特定情况下崩溃的问题(强化材料槽位为空时触发的空指针)。 - 修复物品强化后名称丢失可翻译文本的问题:带后缀(如 `[+1]`)的强化名此前会把可本地化的物品基础名拍平成原始文本,现在会保留基础名的可翻译效果。 ### 注意事项 - 强化相关的旧版兼容字段已统一收敛(技能效果只读取 `es_skills`、分支节点只读取 `stars`),如果你还在用更早的旧写法,请迁移到当前结构。 [/MD]
[MD] ### 新增 - 新增强化路线预览:Web Console 中可以直接查看强化路线、星级阶段、分支路线和关键消耗信息。 - 新增强化物品分层预览:在 Item 最终预览中可以查看强化层对物品名称、Lore、属性和技能的影响。 - 新增星级阶段 name/lore 动作支持:强化到指定星级后,可以按阶段追加或修改物品名称与 Lore。 - 新增分支星级展示能力:分支强化路线可以在预览中更清楚地展示当前分支和已达到的星级效果。 - 新增 Strengthen Web Console 扩展样式,用于强化路线预览和配置编辑界面。 ### 修复 - 修复强化阶段配置中的 `name_action` / `lore_action` 没有参与最终物品展示重建的问题。 - 修复 Item 最终预览中强化层只显示顶层动作、没有正确叠加已达到星级阶段动作的问题。 - 修复分支强化写入属性和技能时不够分支感知的问题。 - 修复示例强化配方过于宽泛匹配武器来源,导致示例物品在预览中容易被错误命中强化配方的问题。 - 修复强化配方下拉展示信息过多,不方便服务器管理员直接确认配方 ID 的问题。 ### 重构 - 重构 Strengthen API 的 `StarStage` 数据,加入阶段动作载荷和累计读取方法。 - 重构强化配方解析逻辑,明确读取星级与分支星级的阶段效果配置。 - 重构强化重建流程,让顶层动作、星级阶段动作和分支星级动作按最终展示顺序参与物品重建。 - 重构 Strengthen Web Console 入口,拆分注册逻辑和路线预览组件。 - 重构强化层预览 Provider,使其通过 CoreLib 的通用物品分层预览接口对外提供数据。 ### 优化 - 优化强化配方选择体验,Item 预览中可更明确地选择和查看当前强化配方 ID。 - 优化强化路线预览界面,服务器管理员可以更快判断路线分支、星级阶段和配置结果是否符合预期。 - 优化强化示例配置,使默认示例更接近推荐写法。 - 优化 Strengthen 与 CoreLib / Item / Gem 的最终预览联动,减少只看单一插件配置时的误判。 ### 注意事项 - 如果你使用了星级阶段 `effects`,建议重点检查 `name_action`、`lore_action`、分支星级和最终物品展示效果。 - 如果你使用自定义强化配方匹配规则,建议检查 `source_ids` 等物品来源匹配字段是否符合当前预期。 - 如果需要在 Item 编辑器中预览强化后的最终物品,请同时更新 CoreLib v4.3.0 [/MD]
后退
顶部 底部