Skip to content

EmakiStrengthen

EmakiStrengthen 是装备强化模块,提供星级强化、锻印 temper、保护材料、里程碑、属性写入、强化层重建和公开 API。它适合制作"装备从 +0 到 +N 逐步成长"的玩法。

NOTE

部分命令仍使用 crack 等历史命名(如 clearcrack),在玩法描述中统一称为"锻印"或"强化痕迹"。

基本信息

项目
模块版本4.8.0
主命令/emakistrengthen
别名/estrengthen
硬依赖EmakiCoreLib
软依赖EmakiItem、EmakiAttribute、PlaceholderAPI
主要权限emakistrengthen.useemakistrengthen.reloademakistrengthen.debugemakistrengthen.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.yml

recipes/ 决定不同装备的强化规则,gui/strengthen_gui.yml 决定强化界面布局。

config.yml 主配置

success_rates流程说明local_broadcast_radiusbroadcast.*广播系统。其余字段如下:

字段类型默认说明
versionstring4.8.0配置结构版本标记;默认资源版本由资源同步流程维护。源码内部另有两个不同用途的常量:该键为空时回退到 4.5.9,完全没有配置文件时 AppConfig.defaults()4.2.9。都不要当作发布版本号。
languagestringzh_CN使用 lang/<language>.yml 语言文件。
release_default_databooleantrue缺失时是否释放内置默认配方、GUI 与语言资源。
affix.max_levelinteger10词缀单条上限等级;负值按 0 处理。
affix.capacity_maxinteger100词缀容量上限;负值按 0 处理。
affix.capacity_cost_per_levelinteger10每级词缀占用的容量;负值按 0 处理。
affix.bonus_per_leveldouble1.0每级词缀提供的加成量;非有限值按 0 处理。
enhancement.reject_container_targetbooleanfalse是否拒绝把容器类物品作为强化目标。
enhancement.reject_container_materialbooleanfalse是否拒绝把容器类物品作为强化材料。
enhancement.min_success_ratedouble0.0成功率下限,用于兜住各类衰减后的结果。
enhancement.diminishing_returns.per_leveldouble0.0达到 start_level 后每级递减的成功率。
enhancement.diminishing_returns.start_levelinteger1开始应用递减的起始等级。
enhancement.cost_growth.per_leveldouble0.0每级消耗增长系数。
enhancement.cost_growth.max_multiplierdouble0.0消耗增长的倍率上限。
enhancement.failure_demotion.levelsinteger0失败时降低的等级数。
enhancement.failure_demotion.floor_levelinteger0失败降级不会低于该等级。
enhancement.pity_retry.interval_ticksinteger0保底计数落盘失败后的重试间隔,单位 tick。
enhancement.pity_retry.max_attemptsinteger0保底计数落盘的最大重试次数。
enhancement.mastery.exp_per_attemptdouble0.0每次强化尝试给予的熟练度经验。
enhancement.mastery.exp_per_successdouble0.0每次强化成功额外给予的熟练度经验。
enhancement.mastery.soft_capinteger0熟练度软上限。

典型强化流程

  1. 玩家用 /estrengthen open 打开强化 GUI。
  2. 放入目标装备、强化材料和可选保护材料。
  3. 模块按配方顶层的 matcherslot_groups 等字段匹配可用强化配方。
  4. 检查条件、材料、经济费用和当前星级上限。
  5. 计算成功率:目标星级基础成功率 + 锻印加成,并钳制到 success_chance_cap
  6. 触发 StrengthenPreAttemptEvent,允许外部改写成功率或取消。
  7. 执行随机判定并扣除材料与费用。
  8. 成功时星级 +1,写入强化层,执行该星级的 actions.success
  9. 失败时按规则累积锻印并可能降星,执行 actions.failure
  10. CoreLib 重建装备展示;首次达到广播星级时发送本地或全服广播。

与 Attribute 的关系

Strengthen 可以仅作为展示和成长系统运行。配置 ea_attribute 效果并安装 EmakiAttribute 后,每个星级可以提供真实属性加成:属性通过 EmakiAttribute 的权威 API 写入结构化 PDC layer,参与真实战斗计算。

EmakiAttribute 未安装时走 no-op 路径,强化照常完成但不写入属性。

与 Item 的关系

安装 EmakiItem 时,Strengthen 会在其条件加载的 integration 包中通过 EmakiItemApi 注册物品层预览提供者,让 EmakiItem 侧能够预览强化层内容。EmakiItem 未安装或被禁用时该注册自动跳过或释放,不影响强化功能。