高级怪物等级提升

高级怪物等级提升

非官方自动升级续作,特色为基于公式的属性、KubeJS等级控制、LootJS兼容性及改进的配置格式。

高级升级(Advanced Leveling)

高级升级是 Daripher 为 Minecraft Forge 1.20.1 开发的 自动升级(Auto Leveling) 模组的非官方衍生及延续版本。它增加了基于公式的精确属性缩放、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 已内嵌,无需单独安装

来源与许可

高级升级是 Daripher 的 自动升级(Auto Leveling) 的非官方衍生版本。原始部分仍归功于 Daripher 及原始贡献者。此分支不代表原作者的认可。

分发的 jar 文件内嵌了同样以 GNU AGPLv3 许可的 YiRanExpressionLib。