附魔计算器

附魔计算器

客户端模组,用于计算最优附魔路径,以在附魔装备、工具、武器和盔甲时节省经验值和等级。

装备

概述

Enchantment Calculator 是一个客户端模组,可帮助你找到在物品上合并附魔最具性价比的方式。

本模组基于此网站所提供的功能。

本模组支持通过自定义资源包进行定制。GUI 元素位于: assets/enchantmentcalculator/textures/gui

你可以在 GitHub 上查看源代码中的原始纹理

如果你有通过重绘元素或修改代码来改进界面的想法,我将不胜感激。

已知漏洞

  • 在使用 UI 缩放 4 时,界面会溢出屏幕(我不知道怎么修复这个 :P)

漏洞报告与功能请求

发现了漏洞、计算错误,或有建议?请在我们的 GitHub Issues 页面上报告。

使用方法

  1. 将物品放入铁砧中
  2. 从左侧面板中选择附魔
  3. 点击 Calculate 以找到最优顺序
  4. 按照右侧面板中显示的步骤操作
  5. 使用箭头按钮浏览各个步骤

截图

image

技术算法概述

优化算法

Enchantment Calculator 使用一种复杂的基于树的优化算法来找到最具性价比的附魔顺序。

核心算法步骤:

1. 树结构生成

对于 n 个附魔,生成所有可能的二叉组合树
- 每个叶子 = 附魔书或基础物品
- 每个内部节点 = 一次铁砧合并操作
- 树深度决定最大先前工作惩罚

2. 成本计算模型

本模组使用 Minecraft 精确的铁砧机制来计算成本:

总成本 = 附魔成本 + 先前工作惩罚

其中:

  • 附魔成本:基于附魔稀有度权重
  • 先前工作惩罚:MULTIPLIERS[left_uses] + MULTIPLIERS[right_uses]
  • 乘数:[1023]

3. 树剪枝优化

算法不是测试所有可能的树,而是:

  • 按最大深度(铁砧使用次数)对树进行分组
  • 计算每棵树的加权贡献总和
  • 每个深度级别只保留最佳树
  • 将复杂度从 O(n!) 降低到 O(n²)

4. 物品放置优化

对于每种树结构:

1. 按成本对附魔书排序(最贵的在前)
2. 计算每个位置的叶子贡献值
3. 将昂贵物品放在贡献最低的位置
4. 最小化总加权成本

5. 多模式优化

支持两种优化目标:

  • 等级模式:最小化铁砧总等级成本
  • 经验模式:最小化总 XP 消耗

数学基础

先前工作惩罚计算:

penalty = MULTIPLIERS[left_item_uses] + MULTIPLIERS[right_item_uses]

经验成本换算:

if (levels ≤ 16): xp = levels² + 6×levels
if (levels ≤ 31): xp = 2.5×levels² - 40.5×levels + 360
if (levels > 31): xp = 4.5×levels² - 162.5×levels + 2220

树贡献加权:

对于每个树位置 i:
contribution[i] = depth_from_root
weighted_sum = Σ(i × contribution[i])

算法复杂度

  • 时间复杂度:O(n² × 2^n),其中 n = 附魔数量
  • 空间复杂度:O(n × 2^n),用于树存储
  • 实际性能:对于典型的 5-7 个附魔,小于 100ms

附魔权重系统

本模组使用与 Minecraft 内部成本相匹配的经验确定权重:

Weight 1: protection, sharpness, efficiency, unbreaking, power
Weight 2: fire_aspect, looting, fortune, punch, flame
Weight 4: mending, silk_touch, infinity, curse_of_binding

树搜索策略

  1. 生成所有可能的二叉树结构
  2. 按最大深度过滤以缩小搜索空间
  3. 使用加权贡献分析对每棵树评分
  4. 为每个深度级别选择最优树
  5. 为每棵选定的树测试物品放置
  6. 返回全局最优解

边界情况处理

  • 单个附魔:直接应用(成本 = 权重 × 等级)
  • 两个附魔:简单合并,无需树搜索
  • 不兼容的附魔:在选择阶段被过滤掉
  • 最大铁砧使用次数:上限为 6 次使用(成本 = 1023 级)

此算法可确保你获得数学上最优的附魔顺序,同时保持适合实时游玩的快速性能。