CurseForge1 天前Advanced Mob Leveling是 Daripher 制作的 Auto Leveling 模组的一个非官方衍生版和延续版本,适用于 Minecraft Forge 1.20.1。它增加了基于公式的精确属性缩放、KubeJS 等级控制、LootJS 兼容性以及重新设计的配置系统。
该模组保留了 autoleveling 的模组 ID,因此现有世界和数据包仍可兼容。本项目与原作者无关,亦未获得原作者认可。
高级等级系统 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 服务端脚本替换或增加:
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 的添加与 autoleveling:gameplay/leveled_mobs 战利品表可同时使用,而不会产生意外的重复掉落。
高级等级系统是 Auto Leveling(作者 Daripher)的非官方衍生版。原始部分仍归 Daripher 及原始贡献者所有。本分支不代表原作者认可。
发布的 jar 文件内嵌了 YiRanExpressionLib,该库同样以 GNU AGPLv3 许可发布。
CurseForge1 天前Advanced Mob Leveling是 Daripher 制作的 Auto Leveling 模组的一个非官方衍生版和延续版本,适用于 Minecraft Forge 1.20.1。它增加了基于公式的精确属性缩放、KubeJS 等级控制、LootJS 兼容性以及重新设计的配置系统。
该模组保留了 autoleveling 的模组 ID,因此现有世界和数据包仍可兼容。本项目与原作者无关,亦未获得原作者认可。
高级等级系统 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 服务端脚本替换或增加:
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 的添加与 autoleveling:gameplay/leveled_mobs 战利品表可同时使用,而不会产生意外的重复掉落。
高级等级系统是 Auto Leveling(作者 Daripher)的非官方衍生版。原始部分仍归 Daripher 及原始贡献者所有。本分支不代表原作者认可。
发布的 jar 文件内嵌了 YiRanExpressionLib,该库同样以 GNU AGPLv3 许可发布。