
附魔进度
通过按其预期用途直接使用,实现物品附魔的动态升级
Enchantment Progression (Forge 1.20.1)
Enchantment Progression 彻底改造了 Minecraft 的附魔机制。不再通过基础交易或铁砧合并来瞬间获得最高等级的装备,附魔会随着你在世界中不断使用装备而动态地变得更强。
每一次挥击、每一支箭矢、每一个被破坏的方块、每一次吸收的伤害,以及每一秒的飞行,都会将经验直接注入到你当前使用的装备中。附魔通过游戏过程自然地升级,让你的装备成为随你的旅程不断演化的专属神器。
核心特性
有机升级机制: 附魔在战斗、采矿、探索和生存中被主动使用时升级。
专属动态触发器: 内置对近战、远程武器、护甲类型、三叉戟、钓鱼竿、盾牌和鞘翅飞行的追踪。
铁砧经验回收: 在铁砧上合并相同附魔会转移已存储的经验和基于等级的额外经验,而不是通过瞬间提升等级来绕过升级曲线。
简洁的可视化提示: 按住 Shift 悬停物品时会显示清晰的进度条、当前经验和下一等级的要求。
完全数据驱动: 每个附魔的经验需求、倍率、最大等级和触发条件都可以通过主配置 TOML 文件和 JSON 配置进行调整。
KubeJS 集成: 原生事件钩子(
EnchantmentProgressionEvents.xpGain)和脚本绑定(EnchProgression.addXp(...))允许进行完整的整合包自动化。
工作原理
获取经验
当物品上的附魔仍可升级时,相关的游戏行为会直接将附魔经验授予该物品。
当存储的经验达到当前等级所需的阈值时,附魔等级会自动提升。玩家会在动作栏中收到升级通知,并伴随声音和粒子效果。
支持的升级触发器
| 类别 | 附魔 | 所需行为 |
|---|---|---|
| 近战 | 锋利、亡灵杀手、节肢杀手、击退、横扫之刃、火焰附加、抢夺 | 击杀敌人、击中特定生物类别(亡灵/节肢动物)、疾跑击退命中、横扫攻击以及击中燃烧目标。 |
| 弓箭与弩 | 力量、冲击、火矢、穿透、快速装填 | 远程弓箭射击、射击飞行目标(恶魂、幻翼、末影龙)、用单发弹射物穿透多个生物,以及近距离弩战斗。 |
| 三叉戟 | 穿刺、忠诚、激流 | 在水中或雨中击中水生生物或潮湿目标、远程三叉戟投掷命中,以及在水或雨中用激流发射。 |
| 工具 | 效率、时运、精准采集 | 使用正确的工具挖掘有效方块(经验根据方块硬度缩放)。 |
| 钓鱼 | 饵钓、海之眷顾 | 钓到鱼以及钓起宝藏/垃圾战利品。 |
| 护甲与防御 | 保护、爆炸/火焰/弹射物保护、荆棘、摔落保护 | 承受生物伤害、在爆炸中存活、吸收火焰伤害、通过荆棘反弹攻击,以及从高处坠落存活。 |
| 特殊功能 | 水下呼吸、水下速掘、迅捷潜行、灵魂疾行、冰霜行者、深海探索者 | 潜入水下、在黑暗/敌对环境中潜行、在灵魂沙/灵魂土上疾跑、在结冰的冰面上行走,以及游泳。 |
| 盾牌与鞘翅 | 耐久 | 用盾牌格挡大量来袭伤害;用鞘翅持续滑翔穿越天空。 |
铁砧合并与经验转移
在原版 Minecraft 中,合并两个具有相同附魔等级的物品会立即获得下一等级。Enchantment Progression 用经验转移系统取代了这一机制:
目标物品(左侧槽位): 保留其当前等级作为起始基础。
牺牲物品(右侧槽位): 转移其存储的一部分进度,并根据其等级提供额外经验。
公式
授予经验 = (牺牲物品存储的经验 × combine_xp_percent)+(牺牲物品等级 × combine_xp_per_level)
如果合并后的经验超过下一等级的需求,目标物品会在铁砧上立即升级。多余的经验会结转到新等级。
配置与数据包
该模组中的每一个数值都可以在不接触任何 Java 代码的情况下进行配置。
全局配置(config/enchantment_progression/_default.js)
控制当特定附魔文件没有覆盖某项设置时的回退默认行为:
{
"base_xp": 100.0, // 从等级 1 -> 2 所需的基础经验
"level_multiplier": 2.0, // 每级的指数缩放因子
"max_level_override": 0, // 覆盖最大附魔等级(0 = 使用原版最大值)
"enabled": true, // 该附魔的升级是否启用
"combine_xp_per_level": 50.0, // 铁砧上每个牺牲物品等级提供的固定额外经验
"combine_xp_percent": 0.25, // 铁砧上转移的牺牲物品存储经验百分比(0.25 = 25%)
"trigger_xp": 1.0, // 触发条件中省略时的回退经验值
"trigger_xp_multiplier": 1.0 // 触发条件中省略时的回退倍率
}
公式
物品从当前等级升到下一等级所需的经验量:阈值 = base_xp × current_level^level_multiplier
特定行为(击中、采矿、飞行等)授予的经验量:增加的经验 = trigger.xp × (baseAmount × trigger.xp_multiplier)
自定义附魔 JSON(data/enchantment_progression/enchantment_progression/<name>.js)
你可以在数据包中或直接在 config/enchantment_progression/ 内覆盖或创建自定义文件。
示例:sharpness.js
{
"enchantment": "minecraft:sharpness",
"base_xp": 120.0,
"level_multiplier": 2.5,
"max_level_override": 5,
"enabled": true,
"combine_xp_per_level": 60.0,
"combine_xp_percent": 0.30,
"triggers": [
{
"type": "deal_damage",
"xp": 1.0,
"xp_multiplier": 1.0
},
{
"type": "kill_entity",
"xp": 5.0,
"xp_multiplier": 1.5
}
]
}
支持的触发器筛选键:
"type":行为的标识符(deal_damage、kill_entity、break_block、shield_block、elytra_flight、take_damage等)。"block_tag"/"specific_block":匹配特定的方块标签或注册表 ID。"item_tag":筛选钓到的鱼/战利品。"entity_type_tag":筛选实体(minecraft:undead、minecraft:arthropods等)。"damage_type_tag":筛选伤害来源(minecraft:is_explosion、minecraft:is_fire等)。"min_distance":远程命中或投掷所需的最小距离。"target_flying":要求目标处于飞行状态。"target_on_fire":要求目标正在燃烧。"in_water_or_rain":要求实体处于潮湿状态。
KubeJS 支持(kubejs/server_scripts/<name>.js)
如果安装了 KubeJS,Enchantment Progression 会注册自定义事件和脚本绑定。
监听与修改经验获取
示例:xp_modifier.js
EnchantmentProgressionEvents.xpGain(event => {
let player = event.player;
let item = event.itemStack;
let ench = event.enchantmentId; // 例如 "minecraft:sharpness"
// 如果玩家在下界,则双倍锋利经验
if (ench === 'minecraft:sharpness' && player.level.dimension === 'minecraft:the_nether') {
event.xp = event.xp * 2.0;
}
// 在自定义条件下完全取消经验获取:
// event.cancel();
});
手动添加经验(Curios / 自定义物品栏集成)
你可以从外部脚本为任何物品授予经验。
示例:manual_xp_addition.js
// 直接为物品的耐久附魔进度添加 50 经验
EnchProgression.addXp(player, itemStack, 'minecraft:unbreaking', 50.0);
测试命令
快速生成初始附魔装备(lvl:1)以测试升级机制:
武器
/give @p netherite_sword{Enchantments:[{id:"minecraft:sharpness",lvl:1s},{id:"minecraft:looting",lvl:1s},{id:"minecraft:unbreaking",lvl:1s}]} 1
弓与弩
/give @p bow{Enchantments:[{id:"minecraft:power",lvl:1s},{id:"minecraft:unbreaking",lvl:1s}]} 1
/give @p crossbow{Enchantments:[{id:"minecraft:piercing",lvl:1s},{id:"minecraft:quick_charge",lvl:1s}]} 1
三叉戟
/give @p trident{Enchantments:[{id:"minecraft:loyalty",lvl:1s},{id:"minecraft:impaling",lvl:1s}]} 1
护甲与盾牌
/give @p netherite_chestplate{Enchantments:[{id:"minecraft:protection",lvl:1s},{id:"minecraft:thorns",lvl:1s}]} 1
/give @p shield{Enchantments:[{id:"minecraft:unbreaking",lvl:1s}]} 1
/give @p elytra{Enchantments:[{id:"minecraft:unbreaking",lvl:1s}]} 1
兼容性
Minecraft 版本: 1.20.1
模组加载器: Minecraft Forge (47.1.0+)
客户端 / 服务端: 客户端和服务端均需要(同步提示信息和升级逻辑)。
模组附魔: 带有已定义类别的模组附魔会自动回退到平衡的默认曲线,并可以通过各自的 JSON 定义完全自定义。
已知问题
穿刺和忠诚在三叉戟投掷使用时不会获得进度。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。