区域

区域

现代区域管理插件/模组

Zones

该插件允许服务器管理员和玩家在其 Minecraft 世界中创建和管理受保护区域。它提供了一套灵活的系统,用于定义区域、设置权限以及控制这些区域内的交互。

特性

  • 区域创建: 使用游戏内选择或手动坐标创建区域。
  • 子区域: 在现有区域中创建子区域以实现更细粒度的控制。
  • 权限管理: 为区域内的玩家设置详细权限,控制破坏、放置、交互等操作。
  • 成员管理: 以特定权限向区域添加或移除成员。
  • 区域重叠控制: 配置区域是否可以重叠。
  • 绕过权限: 允许特定玩家绕过区域限制。
  • 配置: 通过配置文件自定义消息和区域设置。
  • 信标可视化: 使用临时信标可视化选定的区域。

命令

该插件提供以下命令:

  • /zone create:使用当前选定的位置创建一个新区域。

    • 用法:/zone create
    • 需要使用左键和右键选择两个位置,如果尚未选择则开始选择。
    • 如果新区域会与现有区域重叠,则阻止创建,除非设置了 zones.create.overlap 权限。
  • /zone subcreate:使用当前选定的位置在现有区域中创建一个新的子区域。

    • 用法:/zone subcreate [regionKey]
    • regionKey 是可选的,如果未提供,则使用玩家所在位置的区域。
    • 需要使用左键和右键选择两个位置,如果尚未选择则开始选择。
    • 玩家需要被视为该区域的管理员,或拥有 zones.subcreate.other 权限
  • /zone delete:删除现有区域。

    • 用法:/zone delete <regionKey>
    • 需要要删除区域的 regionKey。
    • 玩家需要是该区域的所有者,或拥有 zones.delete.other 权限
  • /zone expand:将现有区域扩展指定量。

    • 用法:/zone expand <regionKey> <amount> [overlap]
    • 玩家需要是该区域的管理员,或拥有 zones.expand.other 权限
    • 如果 overlap 设置为 true 且玩家拥有 zones.expand.overlap 权限,
    • 即使该区域与其他区域重叠,也会扩展该区域。
  • /zone info:显示区域的信息。

    • 用法:/zone info [regionKey]
    • 如果未提供 regionKey,则使用玩家所在位置的区域。
    • 要显示区域成员,玩家需要是该区域的管理员,或拥有 zones.info.other 权限
  • /zone list:列出玩家作为成员加入的所有区域。

    • 用法:/zone list
    • 仅显示玩家作为成员加入的区域,除非玩家拥有 zones.list.other 权限
  • /zone cancel:取消当前区域选择。

    • 用法:/zone cancel
  • /zone set:为区域成员设置权限。

    • 用法:/zone set <regionKey> <who> <permission> <value>
    • <regionKey> 是区域的键。
    • <who> 要为谁设置权限。
      • 例如,Player1 - 要创建或修改组,请使用 +group-GROUPNAME,其中 GROUPNAME 可以是任意名称。
    • <permission> 是要设置的权限(例如 role、break、place、interact)。
    • <value> 是要为权限设置的值(
      • 例如,owner、true、false、*、!*、GRASS_BLOCK、!GRASS_BLOCK)。
  • /zone rename:重命名区域。

    • 用法:/zone rename <regionKey> <newName>
    • <regionKey> 是区域的键,<newName> 是区域的新名称。
    • 玩家需要是该区域的管理员,或拥有 zones.rename.other 权限
  • /zone select:选择一个区域。

    • 用法:/zone select [regionKey]
    • 如果未提供 regionKey,则使用玩家所在位置的区域。
    • 使用粒子在世界中视觉高亮该区域。
    • 玩家需要是该区域的成员,或拥有 zones.select.other 权限
  • /zone mode:更改选择模式。

    • 用法:/zone mode <mode>
    • <mode> 是要为玩家设置的新模式。
      • 例如,3d 表示 3D 选择模式,2d 表示 2D 选择模式。
  • /zone save:手动将所有区域保存到文件。

    • 用法:/zone save
    • 仅限管理员,需要 zones.save 权限(默认不授予)
  • /zone load:手动从文件加载所有区域。

    • 用法:/zone load
    • 仅限管理员,需要 zones.load 权限(默认不授予)
  • /zone import:从另一个插件导入区域。

    • 用法:/zone import <pluginName>
    • 目前仅支持 WorldGuard。
    • 仅限管理员,需要 zones.import 权限(默认不授予)

用法

创建区域

  1. 使用 /zone create 命令开始创建流程。
  2. 左键点击一个方块以设置区域的第一个角。会出现一个绿色信标。
  3. 右键点击一个方块以设置区域的第二个角。会出现一个红色信标。
  4. 使用 /zone create 命令创建区域。

创建子区域

  1. 使用 /zone subcreate 命令开始创建流程。
  2. 按上述方法选择子区域的两个角。
  3. 使用 /zone subcreate 命令在你所在的区域内创建子区域,或 使用 /zone subcreate <regionKey> 在指定区域内创建子区域。

设置权限

  1. 使用 /zone set <regionKey> <player> <permission> <value> 命令为区域成员设置权限。
  • 示例:/zone set <key> Player1 break true 允许 "Player1" 在指定区域内破坏方块。
  • 示例:/zone set <key> Player2 break GRASS_BLOCK 允许 "Player2" 在指定区域内仅破坏 GRASS_BLOCK 方块。
  • 示例:/zone set <key> Player3 interact !OAK_DOOR 拒绝 "Player3" 在指定区域内与 OAK_DOOR 交互。
  • 示例:/zone set <key> Player4 place * 允许 "Player4" 在指定区域内放置所有方块。
  • 示例:/zone set <key> Player5 break !* 拒绝 "Player5" 在指定区域内破坏所有方块。
  • 组:
    • 要分配组,请将权限 group 的值设置为组名。
    • 例如:创建组并分配权限:/zone set <regionKey> +group-some-group-name break true
    • 例如 /zone set <regionKey> ExamplePlayer group some-group-name
    • ExamplePlayer 现在从组 some-group-name 继承权限 break

查看区域信息

  1. 使用 /zone info 命令查看你所在区域的信息。
  2. 使用 /zone info <regionKey> 命令查看特定区域的信息。

集成

WorldGuard

Zones 支持通过 /zone import WorldGuard 命令导入 WorldGuard 区域。要使用此功能, 你必须安装并启用 WorldGuard。Zones 将自动导入所有 Cuboid 区域,包括其成员。

WorldEdit

只有在执行玩家被允许手动修改区域时,才能使用 WorldEdit 修改区域中的方块。

PlaceholderAPI

Zones 提供多个占位符以配合 PlaceholderAPI 插件使用,显示玩家所在区域的信息。它目前支持以下占位符:

  • %zones_get_name%
  • %zones_get_key%
  • %zones_get_members%
  • %zones_get_owner%
  • %zones_get_min%
  • %zones_get_min_x%
  • %zones_get_min_y%
  • %zones_get_min_z%
  • %zones_get_max%
  • %zones_get_max_x%
  • %zones_get_max_y%
  • %zones_get_max_z%
  • %zones_is_member%
  • %zones_can_place_hand%
  • %zones_can_break_target%
  • %zones_can_<action>_<type>%

设计选择

  • YAML 配置: 该插件使用 YAML 文件进行配置和存储,使其易于阅读和修改。 未来版本计划提供额外的存储选项。
  • 权限系统: 权限系统设计灵活且细致,允许对玩家交互进行细粒度控制。
  • 事件驱动: 该插件使用 Bukkit 的事件系统来处理玩家交互,使其高效且响应迅速。
  • 缓存: 该插件使用缓存系统来提高检查权限时的性能。

贡献

欢迎为该插件做贡献!如果你对新功能、bug 修复或改进有任何想法,请随时提交拉取请求或打开 issue。

许可证

该插件在 MIT 许可证下分发。