当你需要用自定义规则替换 PMMO 的内置数据时,你首先需要一种清除默认值的方式。PmmoJS 提供两种方案:基于配置的批量重置和基于脚本的定向删除。
推荐方式:使用通用配置
从空白基线开始最干净的方法是 config/pmmojs-common.toml:
[disableDefaultSettings]all = falseskills = falseperks = falserequirements = falsexpAwards = falseitemExtras = falseblockVeinData = false
每个开关控制一个类别:
| 开关 | 清除内容 |
|---|---|
all | 下面列出的所有内容 |
skills | PMMO 默认技能 |
perks | PMMO 默认 Perk 条目 |
requirements | 物品、方块和实体的需求数据 |
xpAwards | 物品、方块和实体的 XP 奖励数据 |
itemExtras | 物品加成、正面/负面效果、回收、矿脉数据 |
blockVeinData | 方块矿脉挖掘数据 |
执行顺序保证你的脚本始终生效:
- PmmoJS 读取通用配置
- 启用的类别被清除
- 你的 KubeJS 脚本运行并应用你的自定义数据
何时使用脚本代替
当你不需要清除整个类别,只需要定向控制时,使用 KubeJS:
- 清除一个需求族:
event.clearVanillaItemSettings() - 清除一个 Perk 事件列表:
event.clearPerks(EventType.SKILL_UP) - 移除单个 Perk:
event.removePerkType('pmmo:fireworks') - 通用配置清除后覆盖特定物品
重置后重建
技能
如果你清除了 skills,定义你的整合包实际使用的技能:
PmmoJS.skillsConfig(event => {event.addSkill('endurance').withColor(0x2f6fed).withMaxLevel(100).build()event.addSkill('smithing').withColor(0xe08a25).withMaxLevel(100).build()})
Perk
如果你清除了 perks,只加回你需要的条目:
PmmoJS.perksConfig(event => {event.addPerk(EventType.SKILL_UP, 'pmmo:attribute', 'endurance').asAttributePerk().withAttribute(Java.loadClass('net.minecraft.world.entity.ai.attributes.Attributes').MAX_HEALTH).withPerLevel(1).withMaxBoost(10).build()})
物品设置
如果你清除了需求、XP 奖励或物品附加数据:
PmmoJS.settings(event => {event.items(['minecraft:diamond_pickaxe','minecraft:netherite_pickaxe'], setting => {setting.override(true)setting.setRequirement(ReqType.TOOL, 'mining', 20)setting.setXp(EventType.BLOCK_BREAK, 'mining', 12)})})
旧版需求辅助方法
设置事件还保留了以下辅助方法用于向后兼容:
event.clearVanillaItemSettings()event.clearVanillaBlockSettings()event.clearVanillaEntitySettings()
这些只重置各自对象类型的需求数据。它们不触及 XP 奖励、加成、效果、回收或矿脉数据。需要完整重置时请使用通用配置。
通用配置不覆盖的内容
生物群系和维度的设置没有批量禁用开关。这是有意为之 —— 位置数据通常需要整合包作者的显式控制。
对于位置覆盖,使用定向调用:event.biome(id, ...)、event.biomes(ids, ...)、event.dimension(id, ...)、event.dimensions(ids, ...)。