PmmoJS.settings 是在 server_scripts/ 中为物品、方块、实体、生物群系和维度注册 PMMO 数据的主要方式。
把它理解为替代手动编辑 PMMO 的 JSON 配置文件。你改写成 JavaScript,数据通过 PMMO 的 API 干净地应用。
单个目标
当你需要逐个配置对象时使用:
PmmoJS.settings(event => {event.item('minecraft:diamond_sword').override(true).setRequirement(ReqType.WEAPON, 'combat', 10).setXp(EventType.CRAFT, 'smithing', 100)event.block('minecraft:diamond_ore').override(true).setRequirement(ReqType.BREAK, 'mining', 30).setXp(EventType.BLOCK_BREAK, 'mining', 200)event.entity('minecraft:zombie').override(true).setXp(EventType.DEATH, 'combat', 25)})
可用的目标方法:event.item(id)、event.block(id)、event.entity(id)、event.biome(id)、event.dimension(id)、event.generic(objectType, id)。
你可以传入注册表对象或字符串 ID。对于物品、方块和实体,两者都支持。
批量目标
将相同的配置一次应用到多个目标 —— 比重复相同的设置代码干净得多:
PmmoJS.settings(event => {event.items(['minecraft:diamond_sword','minecraft:netherite_sword','minecraft:trident'], setting => {setting.override(true)setting.setRequirement(ReqType.WEAPON, 'combat', 20)setting.setXp(EventType.CRAFT, 'smithing', 150)})event.entities(['minecraft:villager','minecraft:wandering_trader'], setting => {setting.override(true)setting.setRequirement(ReqType.ENTITY_INTERACT, 'charisma', 8)})})
可用的批量方法:event.items(targets, callback)、event.blocks(targets, callback)、event.entities(targets, callback)、event.biomes(targets, callback)、event.dimensions(targets, callback)、event.genericMany(objectType, targets, callback)。
targets 参数接受单个 ID 字符串、单个注册表对象、JS 数组或任何可迭代对象。
通用构建器方法
所有设置构建器共享这些方法:
setRequirement(reqType, skill, level)—— 要求某项技能达到指定等级才能使用该对象requirement(reqType, map)—— 一次性设置多个需求(例如{combat: 10, mining: 5})setXp(eventType, skill, amount)—— 为某项行为奖励 XPxp(eventType, map)—— 一次性设置多个 XP 奖励override(boolean)—— 设为true时,替换 PMMO 的默认数据而不是与它合并
各类型专属功能
根据构建器类型,你还能获得:
- 物品: 回收配置、矿脉挖掘设置、基于 NBT 的需求和 XP
- 实体: 伤害类型 XP 注册、正面/负面生物效果
- 方块: 矿脉挖掘数据、NBT 需求
- 位置: 生物群系和维度的生物修正
示例 —— 在物品上配置矿脉挖掘:
PmmoJS.settings(event => {event.item('minecraft:diamond_pickaxe').override(true).veinChargeCap(128).veinChargeRate(1.25).veinConsumeAmount(2)})
清除默认数据
如果你想清除 PMMO 的内置数据并从零开始,使用 config/pmmojs-common.toml:
[disableDefaultSettings]all = falseskills = falseperks = falserequirements = falsexpAwards = falseitemExtras = falseblockVeinData = false
重置发生在 KubeJS 脚本运行之前,所以你的自定义数据始终生效。
设置事件还有旧版辅助方法 clearVanillaItemSettings()、clearVanillaBlockSettings() 和 clearVanillaEntitySettings()。这些只重置需求数据 —— 不触及 XP 奖励、加成、效果、回收或矿脉数据。需要完整重置时使用通用配置。
枚举命名
PMMO 的枚举名称区分大小写,严格遵循 PMMO 源代码。一些容易踩坑的值:
ReqType.ENTITY_INTERACT存在,ReqType.ENTITY不存在EventType.BLOCK_BREAK存在,EventType.BREAK不存在EventType.DEATH存在,EventType.KILL不存在
如果你使用 ProbeJS,类型补全会自动显示正确的值。