Skip to content

作用

WorldProtect 用于按世界限制玩家的基础方块操作,包括:

  • 破坏方块
  • 放置方块
  • 与方块交互

默认配置:GroovyConfig/WorldProtect.yml

如果你在 config.yml -> feature-scripts.config-directory 中改过脚本配置目录,请以实际目录为准。

配置示例

yml
# 是否启用该脚本
enabled: true

# 受保护的世界列表
# 只有在这里列出的世界才会应用保护
# 示例:
# worlds:
#   - world
#   - world_nether
worlds:
  - world

# 是否阻止破坏方块
prevent-break: true

# 是否阻止放置方块
prevent-place: true

# 是否阻止与方块交互
# 例如箱子、工作台、按钮、拉杆等
prevent-interact: true

# 拥有该权限的玩家可绕过保护
# 留空 '' 表示无人可绕过(OP 也不会自动绕过,需脚本内另外处理)
bypass-permission: hncore.scripts.worldprotect.bypass

# 破坏方块时的提示消息
# 支持颜色符号,如 &a &c
# 留空 '' 表示不发送消息
break-message: '&c此世界禁止破坏方块!'

# 放置方块时的提示消息
place-message: '&c此世界禁止放置方块!'

# 交互方块时的提示消息
interact-message: '&c此世界禁止交互!'

关键项说明

worlds

指定要保护的世界列表。

这是一个按“世界”工作的保护脚本,不是按区域工作的脚本。

prevent-break

是否阻止玩家破坏方块。

prevent-place

是否阻止玩家放置方块。

prevent-interact

是否阻止玩家与方块交互。

这项会影响箱子、工作台、按钮、拉杆等可交互方块,所以如果你发现玩家连箱子都打不开,优先检查这里。

bypass-permission

设置绕过保护的权限节点。

当前实现里,只要玩家:

  • 拥有这个权限,或
  • 是 OP

都可以绕过保护。

实际行为

当前实现分别监听:

  • BlockBreakEvent
  • BlockPlaceEvent
  • PlayerInteractEvent

其中交互限制只会拦截:

  • 主手触发
  • RIGHT_CLICK_BLOCK
  • 且目标方块本身是可交互方块

所以它不是“所有点击都拦”,而是更精确地针对常见交互方块。

启用与重载

修改这个脚本的配置文件后,通常执行:

text
/hncore reload scripts

如果你改的是 config.yml 中的脚本目录名、脚本系统总开关等核心配置,则应执行:

text
/hncore reload

联动说明

注意事项

  • 它保护的是整个世界,不是单独区域
  • 如果你仍需要玩家在主城使用部分交互方块,应谨慎处理 prevent-interact
  • bypass-permission 留空时,只有配置了权限节点或 OP 绕过的逻辑会失效

HN 系列插件文档