---
title: 重置默认值
hide_meta: true
---

# 重置默认值

当你需要用自定义规则替换 PMMO 的内置数据时，你首先需要一种清除默认值的方式。PmmoJS 提供两种方案：基于配置的批量重置和基于脚本的定向删除。

## 推荐方式：使用通用配置

从空白基线开始最干净的方法是 `config/pmmojs-common.toml`：

```toml
[disableDefaultSettings]
all = false
skills = false
perks = false
requirements = false
xpAwards = false
itemExtras = false
blockVeinData = false
```

每个开关控制一个类别：

| 开关 | 清除内容 |
|---|---|
| `all` | 下面列出的所有内容 |
| `skills` | PMMO 默认技能 |
| `perks` | PMMO 默认 Perk 条目 |
| `requirements` | 物品、方块和实体的需求数据 |
| `xpAwards` | 物品、方块和实体的 XP 奖励数据 |
| `itemExtras` | 物品加成、正面/负面效果、回收、矿脉数据 |
| `blockVeinData` | 方块矿脉挖掘数据 |

执行顺序保证你的脚本始终生效：

1. PmmoJS 读取通用配置
2. 启用的类别被清除
3. 你的 KubeJS 脚本运行并应用你的自定义数据

## 何时使用脚本代替

当你不需要清除整个类别，只需要定向控制时，使用 KubeJS：

- 清除一个需求族：`event.clearVanillaItemSettings()`
- 清除一个 Perk 事件列表：`event.clearPerks(EventType.SKILL_UP)`
- 移除单个 Perk：`event.removePerkType('pmmo:fireworks')`
- 通用配置清除后覆盖特定物品

## 重置后重建

### 技能

如果你清除了 `skills`，定义你的整合包实际使用的技能：

```js
PmmoJS.skillsConfig(event => {
  event
    .addSkill('endurance')
    .withColor(0x2f6fed)
    .withMaxLevel(100)
    .build()

  event
    .addSkill('smithing')
    .withColor(0xe08a25)
    .withMaxLevel(100)
    .build()
})
```

### Perk

如果你清除了 `perks`，只加回你需要的条目：

```js
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 奖励或物品附加数据：

```js
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, ...)`。

## 相关页面

- [PMMO 设置](./settings)
- [配置事件](./config)
- [运行时事件](./normal)
