# AntiNetherite 插件
AntiNetherite 是一个高度可配置的 Minecraft 插件,旨在从玩家的物品栏中移除下界合金物品,并防止使用下界合金物品进行合成、装备和攻击。 插件的每个方面都可以启用、禁用或进行细微调整,以满足您服务器的需求。
该插件提供破坏性和非破坏性两种模式。 在破坏模式(默认)下,它将从物品栏中移除物品并删除掉落的物品。 在非破坏模式下,它只会阻止下界合金物品的使用,而不会销毁它们,使其更加用户友好,同时仍然强制执行服务器规则。
## 功能
- **完全可配置的保护系统** - 每个功能都可以单独启用或禁用
- **提供非破坏性模式** - 选择移除物品或仅阻止其使用
- 定期从玩家物品栏中移除下界合金物品
- 取消合成下界合金物品
- 阻止装备下界合金盔甲
- 阻止使用下界合金武器攻击
- 阻止拾取下界合金物品
- 移除掉落的下界合金物品
- 阻止物品栏中移动下界合金物品
- 阻止活塞(hopper)自动转移下界合金物品(可配置,默认禁用,因为会影响性能)
- 阻止活塞(hopper)自动转移下界合金物品(可配置,默认禁用,因为会影响性能)
- 挖掘或生成时将远古残骸替换为下界岩石
- **性能优化** - 控制是否在插件禁用时恢复替换后的远古残骸
- **细粒度控制** - 提供内存使用、日志记录等高级设置
- 可定制的下界合金物品检测
- **创造/旁观模式排除** - 可选地忽略创造或旁观模式下的玩家
- **可配置的玩家通知** - 控制是否通知玩家已阻止的操作
- 完全兼容 Folia 1.21.4,使用区域感知的调度器
- 游戏内命令用于管理所有设置
- 配置文件更改支持热重载,无需服务器重启
## 配置
插件行为的每个方面都可以通过 `config.yml` 文件进行自定义。 可以单独启用或禁用所有功能,从而允许您创建满足您服务器需求的精确保护系统:
```yaml
# 主插件设置
anti-netherite:
# ==============================
# 全局设置
# ==============================
global:
# 是否启用破坏性操作?
# 如果为 true,插件将在适当情况下删除/移除物品
# 如果为 false,插件将仅取消事件而不销毁物品,从而更友好地执行有害操作
# 这会影响物品掉落、物品栏清除和其他破坏性操作
enable-destructive-actions: false
# ==============================
# 物品栏保护设置
# ==============================
inventory:
# 是否清除玩家物品栏中的下界合金物品?
# 此功能与 Folia 使用区域感知的调度器兼容
clear: false
# 是否阻止在物品栏中移动下界合金物品?
# 这会阻止玩家在其物品栏中移动下界合金物品
cancel-move: true
# 是否阻止活塞(hopper、活塞矿车等)容器之间
# 的下界合金物品自动转移?
# 这会阻止玩家将下界合金物品通过容器进行管道传输
# 警告:当活塞/容器很多时,这可能会影响服务器性能
# 只有当您需要此额外的保护层时才启用
cancel-container-transfer: false
# ==============================
# 物品交互设置
# ==============================
interaction:
# 是否取消合成下界合金物品?
# 这会阻止玩家合成任何包含下界合金的物品
cancel-craft: true
# 是否取消装备下界合金物品?
# 这会阻止玩家装备下界合金盔甲
cancel-equip: true
# 是否取消使用下界合金物品攻击?
# 这会阻止玩家使用下界合金武器攻击
cancel-attack: true
# ==============================
# 物品拾取/掉落设置
# ==============================
item-handling:
# 是否取消拾取下界合金物品?
# 这会阻止玩家在地面上拾取下界合金物品
cancel-pickup: true
# 是否在掉落时移除下界合金物品?
# 这会删除玩家掉落的下界合金物品
remove-dropped: false
# ==============================
# 远古残骸设置
# ==============================
ancient-debris:
# 挖掘时是否将远古残骸替换为下界岩石?
# 这会阻止玩家获得远古残骸
replace-when-mined: true
# chunks加载时是否将远古残骸替换为下界岩石?
# 阻止世界中生成远古残骸
# 这可能会导致第一次加载时出现延迟
replace-on-chunk-load: false
# 是否仅在已生成的 chunks 中替换远古残骸?
# 如果为 true,则只处理已生成的 chunks
# 如果为 false,则无论其生成状态,都会处理所有 chunks
only-replace-generated-chunks: true
# 尝试替换远古残骸时是否应加载 chunks?
# 如果为 true,将加载未加载的 chunks
# 如果为 false,则只处理已加载的 chunks
ensure-chunks-loaded: false
# 是否保存替换后的远古残骸位置?
# 如果为 true,插件将跟踪和保存替换后的远古残骸位置
# 如果为 false,则将替换远古残骸,但不跟踪或保存
# 将此设置为 false 将防止恢复远古残骸
save-replaced-locations: false
# ==============================
# 性能设置
# ==============================
performance:
# 插件禁用时是否恢复远古残骸?
# 警告:如果有很多替换的方块,这可能会导致显著的延迟
# 如果为 false,插件禁用时远古残骸将保持为下界岩石
restore-debris-on-disable: false
# 配置文件更改时是否恢复远古残骸?
# 警告:如果有很多替换的方块,这可能会导致显著的延迟
# 如果为 false,配置文件更改时远古残骸将保持为下界岩石
restore-debris-on-config-change: false
# 每个 chunks 中替换的远古残骸的最大数量,以防止延迟
# 更高的值可能会导致更多延迟,但会替换更多远古残骸
# 更低的值将减少延迟,但可能会遗留一些远古残骸
# 设置为 -1 以完全删除限制(不建议用于性能)
max-replacements-per-chunk: 50
# ==============================
# 高级设置
# ==============================
advanced:
# 每个世界中存储的替换后的古老残骸位置的最大数量
# 更高的值使用更多内存,但允许跟踪更多替换的块
# 更低的值使用更少的内存,但可能会限制可以恢复的块数量
# 设置为 -1 以完全删除限制(不建议用于大型世界)
max-locations-per-world: 10000
# 命令执行之间的冷却时间(秒)
# 这可以防止命令垃圾邮件和潜在的性能问题
command-cooldown-seconds: 1
# 是否将远古残骸替换记录到控制台?
# 如果为 true,则每次替换远古残骸时都会记录一条消息
# 如果为 false,则只会记录摘要消息
log-debris-replacements: true
# 是否将从物品栏中移除的下界合金物品记录到控制台?
# 如果为 true,则每次从物品栏中移除下界合金物品时都会记录一条消息
# 如果为 false,则只会记录摘要消息
log-inventory-removals: true
# 是否忽略创造或旁观模式下的玩家?
# 如果为 true,创造或旁观模式下的玩家将不受插件影响
# 如果为 false,所有玩家将不受影响,无论游戏模式如何
ignore-creative-spectator: true
# 是否向玩家发送通知信息?
# 如果为 true,当插件阻止玩家执行操作时,会向玩家发送通知
# 如果为 false,玩家只会收到摧毁操作(物品移除等)的通知
notify-players: true
# ==============================
# 检测设置
# ==============================
detection:
# 是否使用名称匹配来检测下界合金物品?
# 如果为 true,任何名称包含 “NETHERITE” 的物品将被视为下界合金物品
# 如果为 false,仅列表中的物品将被视为下界合金物品
use-name-matching: true
# 要考虑为下界合金物品的物品列表
# 这些是 Bukkit Material 枚举名称
# 如有需要,您可以在这里添加自定义物品
# 物品名称遵循 Bukkit Material 枚举的格式
items:
- NETHERITE_SWORD
- NETHERITE_PICKAXE
- NETHERITE_AXE
- NETHERITE_SHOVEL
- NETHERITE_HOE
- NETHERITE_HELMET
- NETHERITE_CHESTPLATE
- NETHERITE_LEGGINGS
- NETHERITE_BOOTS
- NETHERITE_BLOCK
- NETHERITE_INGOT
- NETHERITE_SCRAP
- ANCIENT_DEBRIS
# ==============================
# 定时设置
# ==============================
timing:
# 物品栏检查之间的延迟(秒)
# 更高的值可减少服务器负载,但可能会让玩家在更长的时间内保留下界合金物品
delay: 1
# 将此数字乘以延迟,以获得实际延迟(滴答声)
# 20 滴答声 = 1 秒,因此默认值为 1 秒之间的检查
# 此用于 Bukkit 和 Folia 调度器
multiplier: 20
```
## 命令
该插件提供全面的游戏内命令来管理所有设置:
- `/antinetherite reload` - 重新加载配置文件
- `/antinetherite restore-debris [世界]` - 恢复所有替换的远古残骸(可选在特定世界中)
- `/antinetherite debris-info` - 显示有关存储的远古残骸位置的信息
- `/antinetherite get <设置>` - 获取配置值
- `/antinetherite set <设置> <值>` - 设置配置值
配置文件中的每个设置都可以通过这些命令进行调整。 可用设置按类别组织:
**全局设置:**
- `global.enable-destructive-actions` - 启用/禁用破坏性操作,例如移除物品(true/false)
**物品栏设置:**
- `inventory.clear` - 启用/禁用清除物品栏中的下界合金物品(true/false)
- `inventory.cancel-move` - 启用/禁用防止移动下界合金物品(true/false)
- `inventory.cancel-container-transfer` - 启用/禁用阻止活塞/容器自动传输下界合金物品(true/false,默认禁用,因为会影响性能)
- `inventory.cancel-container-transfer` - 启用/禁用阻止活塞/容器自动传输下界合金物品(true/false)
**交互设置:**
- `interaction.cancel-craft` - 启用/禁用取消合成下界合金物品(true/false)
- `interaction.cancel-equip` - 启用/禁用防止装备下界合金盔甲(true/false)
- `interaction.cancel-attack` - 启用/禁用防止使用下界合金武器攻击(true/false)
**物品处理设置:**
- `item-handling.cancel-pickup` - 启用/禁用防止拾取下界合金物品(true/false)
- `item-handling.remove-dropped` - 启用/禁用在掉落时移除下界合金物品(true/false)
**远古残骸设置:**
- `ancient-debris.replace-when-mined` - 启用/禁用在挖掘时将远古残骸替换为下界岩石(true/false)
- `ancient-debris.replace-on-chunk-load` - 启用/禁用在 chunks 加载时将远古残骸替换为下界岩石(true/false)
- `ancient-debris.only-replace-generated-chunks` - 启用/禁用仅在已生成的 chunks 中替换远古残骸(true/false)
- `ancient-debris.ensure-chunks-loaded` - 启用/禁用确保在替换远古残骸时加载 chunks(true/false)
- `ancient-debris.save-replaced-locations` - 启用/禁用保存替换后的远古残骸位置(true/false)
**性能设置:**
- `performance.restore-debris-on-disable` - 启用/禁用在插件禁用时恢复远古残骸(true/false)
- `performance.restore-debris-on-config-change` - 启用/禁用在配置更改时恢复远古残骸(true/false)
- `performance.max-replacements-per-chunk` - 设置每个 chunks 中替换的远古残骸的最大数量(整数,-1 表示无限制)
**高级设置:**
- `advanced.max-locations-per-world` - 设置每个世界中存储的替换后古老残骸位置的最大数量(整数,-1 表示无限制)
- `advanced.command-cooldown-seconds` - 设置命令执行之间的冷却时间(整数)
- `advanced.log-debris-replacements` - 启用/禁用将远古残骸替换记录到控制台(true/false)
- `advanced.log-inventory-removals` - 启用/禁用将物品栏中的下界合金物品移除记录到控制台(true/false)
- `advanced.ignore-creative-spectator` - 启用/禁用忽略创造或旁观模式下的玩家(true/false)
- `advanced.notify-players` - 启用/禁用向玩家发送通知信息(true/false)
**检测设置:**
- `detection.use-name-matching` - 启用/禁用基于名称的下界合金物品检测(true/false)
**定时设置:**
- `timing.delay` - 设置物品栏检查之间的延迟(秒)
- `timing.multiplier` - 设置滴答声倍数(20 = 1 秒)
用于管理下界合金物品列表的特殊命令:
- `/antinetherite get detection.items` - 列出所有被认为是下界合金物品的物品
- `/antinetherite set detection.items add <物品>` - 将物品添加到下界合金物品列表
- `/antinetherite set detection.items remove <物品>` - 从下界合金物品列表中删除物品
## 权限
- `antinetherite.manage` - 允许使用`/antinetherite`命令(默认:op)
- `antinetherite.bypass` - 允许玩家绕过下界合金物品移除(默认:op)
## 用法
1. 将构建好的 JAR 文件放入服务器的 `plugins` 文件夹中。
2. 启动或重新启动您的 Minecraft 服务器。
3. 如果需要,在 `plugins/AntiNetherite/config.yml` 中配置插件设置。
4. 使用游戏内命令来调整设置。
## 下界合金物品检测
该插件提供了两种完全可配置的检测下界合金物品的方法:
1. **名称匹配**:任何类型名称包含“NETHERITE”的物品将被视为下界合金物品。 这是默认行为。
2. **自定义列表**:您可以定义一个自定义的物品列表,以便将其视为下界合金物品。 这对于想要添加自定义物品或仅阻止特定下界合金物品的情况很有用。
您可以使用 `detection.use-name-matching` 设置在这些方法之间切换。 如果设置为 `false`,则只有自定义列表中的物品才会被视为下界合金物品。
## 下界合金物品保护
该插件可以通过多种方式阻止玩家使用下界合金物品:
1. **破坏性与非破坏性模式**:全局设置 `enable-destructive-actions` 控制插件如何处理下界合金物品:
- 在破坏模式(默认)下,物品将从物品栏中移除,并且掉落的物品将被删除
- 在非破坏模式下,事件将被取消,但物品将不会被销毁,这更友好于玩家,同时仍然强制执行服务器规则
2. **物品栏保护**:该插件可以阻止玩家在他们的物品栏中拥有下界合金物品:
- 定期清除物品栏中的下界合金物品
- 阻止在物品栏中移动下界合金物品
- 阻止活塞(hopper)容器之间自动传输下界合金物品(默认禁用,因为会影响性能)
- 阻止在地面上拾取下界合金物品
- 移除或防止掉落下界合金物品
3. **用法预防**:该插件可以阻止玩家使用下界合金物品:
- 取消合成下界合金物品
- 阻止装备下界合金盔甲
- 阻止使用下界合金武器攻击
所有这些功能都可以单独配置,以创建满足您服务器需求的精确保护系统。
## 远古残骸替换
该插件可以通过两种独立可配置的方式阻止玩家获取远古残骸:
1. **挖掘预防**:当玩家开始挖掘远古残骸时,它会被立即替换为下界岩石,并且不会给出掉落物。
2. **生成预防**:当生成新的 chunks 时,这些 chunks 中任何远古残骸都会自动被替换为下界岩石。
可以使用 `ancient-debris.replace-when-mined` 和 `ancient-debris.replace-on-chunk-load` 设置切换这些功能。
### 可逆性
该插件会跟踪已替换为下界岩石的所有远古残骸。 默认情况下,替换后的远古残骸不会在插件禁用或配置文件更改时自动恢复。 可以通过性能设置控制此行为:
- `performance.restore-debris-on-disable`: 控制插件禁用时是否恢复远古残骸
- `performance.restore-debris-on-config-change`: 控制配置更改时是否恢复远古残骸
您还可以使用 `/antinetherite restore-debris` 命令手动恢复所有替换后的远古残骸。
### 性能考虑
远古残骸替换系统包含多个性能优化:
- **可配置的恢复**:默认情况下,插件禁用或配置文件更改时不会恢复远古残骸,以防止潜在的延迟峰值
- **替换限制**:`performance.max-replacements-per-chunk` 设置限制每个 chunks 中替换的块的数量,以防止延迟
- **内存管理**:`advanced.max-locations-per-world` 设置控制每个世界中跟踪的替换块的数量
- **日志控制**:`advanced.log-debris-replacements` 和 `advanced.log-inventory-removals` 设置允许您减少控制台垃圾邮件
- **选择性处理**:只处理下界维度中自然生成的 chunks
- **Chunk 生成检查**:可以配置为仅处理已经生成的 chunks
- **Chunk 加载控制**:可以配置为在替换或恢复远古残骸时加载 chunks
**容器传输保护**:自动容器传输阻止功能 (`inventory.cancel-container-transfer`) 默认情况下是禁用的,因为可能会影响性能。 此功能会监控所有活塞和容器物品移动,这可能会在拥有许多自动化系统的服务器上增加额外的开销。 只有当您专门需要防止玩家使用活塞绕过物品栏限制时才启用此功能。
### 安全措施
远古残骸替换系统包含多个安全措施:
- **线程安全**:使用线程安全的集合来防止并发修改问题
- **错误处理**:捕获并记录异常,而不使插件崩溃
- **异步处理**:异步执行恢复操作以防止服务器延迟
- **冷却系统**:通过可配置的冷却周期来防止命令垃圾邮件
- **世界特定恢复**:允许在特定世界中恢复远古残骸
- **存储限制**:通过限制存储的位置数量来防止过度使用内存
- **持久性存储**:将替换位置保存到磁盘,以便在服务器重新启动后恢复