Advanced Mob Leveling
Advanced Mob Leveling 是 Daripher 制作的 Auto Leveling 模组的一个非官方衍生版和延续版本,适用于 Minecraft Forge 1.20.1。它增加了基于公式的精确属性缩放、KubeJS 等级控制、LootJS 兼容性以及重新设计的配置系统。
该模组保留了 autoleveling 的模组 ID,因此现有世界和数据包仍可兼容。本项目与原作者无关,亦未获得原作者认可。
功能特性
- 基于距离、深度、时间、维度及实体设置的生物等级
- 数值型与表达式型的属性缩放
- 线性、指数、条件及分段增长曲线
- 通过 KubeJS 控制每个维度的等级加成
- 兼容 LootJS 的额外等级生物战利品
- 实体黑名单、白名单、命名空间通配符及隐藏等级列表
- 属性及实体列表的 JSON 格式美化输出
- 兼容原 Auto Leveling 的现有世界和数据包
配置文件
高级等级系统 1.0.1 使用三个配置文件:
config/advancedleveling-common.toml:通用服务器及等级设置config/advancedleveling-client.toml:客户端显示设置config/advancedleveling.json:属性及实体列表
旧的 autoleveling-common.toml 和 autoleveling-client.toml 文件不会被读取或迁移。请手动将您仍需要的设置移至新文件。
advancedleveling.json 示例:
{
"attributes": {
"minecraft:generic.movement_speed": 0.001,
"minecraft:generic.flying_speed": 0.001,
"minecraft:generic.attack_damage": "level <= 10 ? base + (level - 1) * 2 : base + 18 + (level - 10) * 5",
"minecraft:generic.armor": 0.1,
"minecraft:generic.max_health": "base * (1.05 ^ (level - 1))",
"autoleveling:monster.projectile_damage_bonus": 0.1,
"autoleveling:monster.explosion_damage_bonus": 0.1
},
"mobs": {
"blacklist": [
"minecraft:ender_dragon",
"minecraft:wither"
],
"whitelist": [],
"hidden_levels": []
}
}
实体列表接受精确 ID(如 minecraft:zombie)以及命名空间通配符(如 minecraft:*)。当白名单不为空时,仅匹配的实体可以升级。黑名单优先级高于白名单。更改会在重启或执行 /reload 后加载。
属性表达式
数值型值保持原有行为,为高于 1 级的每一级应用 MULTIPLY_BASE 加成:
"minecraft:generic.max_health": 0.05
带引号的表达式返回最终的目标属性值:
"minecraft:generic.max_health": "base + (level - 1) * 10"
可用变量:
base:实体原始的属性基础值level:显示的生物等级,从 1 开始
指数增长使用 ^:
"minecraft:generic.max_health": "base * (1.05 ^ (level - 1))"
条件表达式可创建分段增长曲线:
"minecraft:generic.attack_damage": "level <= 10 ? base + (level - 1) * 2 : base + 18 + (level - 10) * 5"
数据包中的 attribute_modifiers 也支持表达式:
{
"attribute": "minecraft:generic.max_health",
"expression": "base + (level - 1) * 10"
}
KubeJS 集成
每个维度保存的等级加成可通过 KubeJS 服务端脚本替换或增加:
const ServerLifecycleHooks = Java.loadClass(
'net.minecraftforge.server.ServerLifecycleHooks'
)
const WorldLevelingData = Java.loadClass(
'daripher.autoleveling.saveddata.WorldLevelingData'
)
let server = ServerLifecycleHooks.getCurrentServer()
let level = server.getLevel(dimension)
if (level != null) {
let levelingData = WorldLevelingData.get(level)
levelingData.setLevelBonus(25)
levelingData.addLevelBonus(5)
}
setLevelBonus(value) 替换维度的保存加成,addLevelBonus(value) 在当前加成上累加。两种方法都会自动标记数据为待保存状态。
LootJS 兼容性
通过 LootJS 实体修改器添加的战利品,不会再导致高级等级系统的可选额外战利品表执行多次。LootJS 的添加与 autoleveling:gameplay/leveled_mobs 战利品表可同时使用,而不会产生意外的重复掉落。
需求与兼容性
- Minecraft 1.20.1
- Minecraft Forge 47 或更新版本
- Java 17
- KubeJS 和 LootJS 为可选依赖
- YiRanExpressionLib 已内嵌,无需单独安装
署名与许可
高级等级系统是 Auto Leveling(作者 Daripher)的非官方衍生版。原始部分仍归 Daripher 及原始贡献者所有。本分支不代表原作者认可。
- 原始项目:https://www.curseforge.com/minecraft/mc-mods/auto-leveling
- 源代码:https://github.com/QLNPLUS/Advanced-Leveling
- 许可证:GNU AGPLv3
发布的 jar 文件内嵌了 YiRanExpressionLib,该库同样以 GNU AGPLv3 许可发布。



