EmakiStrengthen
EmakiStrengthen 是装备强化模块,提供星级强化、锻印 temper、保护材料、里程碑、属性写入、强化层重建和公开 API。它适合制作"装备从 +0 到 +N 逐步成长"的玩法。
NOTE
部分命令仍使用 crack 等历史命名(如 clearcrack),在玩法描述中统一称为"锻印"或"强化痕迹"。
基本信息
| 项目 | 值 |
|---|---|
| 模块版本 | 4.8.0 |
| 主命令 | /emakistrengthen |
| 别名 | /estrengthen |
| 硬依赖 | EmakiCoreLib |
| 软依赖 | EmakiItem、EmakiAttribute、PlaceholderAPI |
| 主要权限 | emakistrengthen.use、emakistrengthen.reload、emakistrengthen.debug、emakistrengthen.admin |
功能页面
| 页面 | 内容 |
|---|---|
| 命令与权限 | 打开强化 GUI、检查主手装备、刷新展示、设置星级与发放材料。 |
| 强化配方 | recipes/*.yml 的成功率、材料消耗、失败惩罚、效果与动作。 |
| 流程说明 | 从配方匹配到 PDC 写入与展示刷新的完整强化流程。 |
| 分支树系统 | 按星级段划分的强化路线,以及不同路线给出的属性、技能与展示。 |
| 广播系统 | 首次达到指定星级时向周围或全服发送通知。 |
| 占位符 | PlaceholderAPI 输出。 |
| CoreLib 动作 | 主手强化层的重建与修改动作。 |
| API 接入 | 通过 EmakiStrengthenApi 读取状态、预览与执行强化。 |
| 事件 API | 强化流程的 Bukkit 事件与拦截点。 |
核心概念
| 概念 | 说明 |
|---|---|
| 强化星级 | 装备当前强化等级,例如 +1、+2、+10。 |
| 强化配方 | 定义哪些装备能强化、需要哪些材料、成功率和结果。 |
| 材料计划 | 判断并消耗强化材料、保护材料和锻印材料。 |
| 锻印(temper) | 失败时累积的等级,按 temper_chance_bonus_per_level 提升后续成功率。 |
| 失败降星 | 目标星级 ≥ 6 且未使用保护材料时,失败会降 1 星。 |
| 保护材料 | protection: true 的材料,失败时阻止降星。 |
| 分支树 | 在指定星级后分叉为不同强化路线。 |
| 强化层 | 写入装备的 strengthen namespace layer,由 CoreLib 重建展示。 |
默认配置目录
text
plugins/EmakiStrengthen/
├── config.yml
├── recipes/
│ ├── example_recipe.yml
│ └── example_branch_recipe.yml
├── gui/
│ └── strengthen_gui.yml
└── lang/
├── zh_CN.yml
└── en_US.ymlrecipes/ 决定不同装备的强化规则,gui/strengthen_gui.yml 决定强化界面布局。
config.yml 主配置
success_rates 见流程说明,local_broadcast_radius 与 broadcast.* 见广播系统。其余字段如下:
| 字段 | 类型 | 默认 | 说明 |
|---|---|---|---|
version | string | 4.8.0 | 配置结构版本标记;默认资源版本由资源同步流程维护。源码内部另有两个不同用途的常量:该键为空时回退到 4.5.9,完全没有配置文件时 AppConfig.defaults() 用 4.2.9。都不要当作发布版本号。 |
language | string | zh_CN | 使用 lang/<language>.yml 语言文件。 |
release_default_data | boolean | true | 缺失时是否释放内置默认配方、GUI 与语言资源。 |
affix.max_level | integer | 10 | 词缀单条上限等级;负值按 0 处理。 |
affix.capacity_max | integer | 100 | 词缀容量上限;负值按 0 处理。 |
affix.capacity_cost_per_level | integer | 10 | 每级词缀占用的容量;负值按 0 处理。 |
affix.bonus_per_level | double | 1.0 | 每级词缀提供的加成量;非有限值按 0 处理。 |
enhancement.reject_container_target | boolean | false | 是否拒绝把容器类物品作为强化目标。 |
enhancement.reject_container_material | boolean | false | 是否拒绝把容器类物品作为强化材料。 |
enhancement.min_success_rate | double | 0.0 | 成功率下限,用于兜住各类衰减后的结果。 |
enhancement.diminishing_returns.per_level | double | 0.0 | 达到 start_level 后每级递减的成功率。 |
enhancement.diminishing_returns.start_level | integer | 1 | 开始应用递减的起始等级。 |
enhancement.cost_growth.per_level | double | 0.0 | 每级消耗增长系数。 |
enhancement.cost_growth.max_multiplier | double | 0.0 | 消耗增长的倍率上限。 |
enhancement.failure_demotion.levels | integer | 0 | 失败时降低的等级数。 |
enhancement.failure_demotion.floor_level | integer | 0 | 失败降级不会低于该等级。 |
enhancement.pity_retry.interval_ticks | integer | 0 | 保底计数落盘失败后的重试间隔,单位 tick。 |
enhancement.pity_retry.max_attempts | integer | 0 | 保底计数落盘的最大重试次数。 |
enhancement.mastery.exp_per_attempt | double | 0.0 | 每次强化尝试给予的熟练度经验。 |
enhancement.mastery.exp_per_success | double | 0.0 | 每次强化成功额外给予的熟练度经验。 |
enhancement.mastery.soft_cap | integer | 0 | 熟练度软上限。 |
典型强化流程
- 玩家用
/estrengthen open打开强化 GUI。 - 放入目标装备、强化材料和可选保护材料。
- 模块按配方顶层的
matcher与slot_groups等字段匹配可用强化配方。 - 检查条件、材料、经济费用和当前星级上限。
- 计算成功率:目标星级基础成功率 + 锻印加成,并钳制到
success_chance_cap。 - 触发
StrengthenPreAttemptEvent,允许外部改写成功率或取消。 - 执行随机判定并扣除材料与费用。
- 成功时星级 +1,写入强化层,执行该星级的
actions.success。 - 失败时按规则累积锻印并可能降星,执行
actions.failure。 - CoreLib 重建装备展示;首次达到广播星级时发送本地或全服广播。
与 Attribute 的关系
Strengthen 可以仅作为展示和成长系统运行。配置 ea_attribute 效果并安装 EmakiAttribute 后,每个星级可以提供真实属性加成:属性通过 EmakiAttribute 的权威 API 写入结构化 PDC layer,参与真实战斗计算。
EmakiAttribute 未安装时走 no-op 路径,强化照常完成但不写入属性。
与 Item 的关系
安装 EmakiItem 时,Strengthen 会在其条件加载的 integration 包中通过 EmakiItemApi 注册物品层预览提供者,让 EmakiItem 侧能够预览强化层内容。EmakiItem 未安装或被禁用时该注册自动跳过或释放,不影响强化功能。