Zones

现代区域管理插件/模组

资源图片
# 区域 这个插件允许服务器管理员和玩家在其 Minecraft 世界中创建和管理受保护的区域。它提供了一种灵活的系统来定义区域、设置权限和控制区域内的互动。 ## 特性 * **区域创建:** 使用游戏内选择或手动坐标创建区域。 * **子区域:** 在现有区域内创建子区域,以实现更细粒度的控制。 * **权限管理:** 为区域内的玩家设置详细的权限,控制诸如破坏、放置、互动等操作。 * **成员管理:** 添加和移除区域成员,并为他们分配特定的权限。 * **区域重叠控制:** 配置区域是否可以重叠。 * **权限绕过:** 允许特定玩家绕过区域限制。 * **配置:** 通过配置文件自定义消息和区域设置。 * **信标可视化:** 使用临时信标可视化选定的区域。 ## 命令 该插件提供以下命令: * `/zone create`: 使用当前选择的位置创建一个新的区域。 * 用法:`/zone create` * 需要使用鼠标左键和右键选择两个位置,如果没有则开始选择。 * 如果新的区域会与现有区域重叠,则会阻止创建,除非设置了 `zones.create.overlap` 权限。 * `/zone subcreate`: 使用当前选择的位置在现有区域内创建一个新的子区域。 * 用法:`/zone subcreate [regionKey]` * `regionKey` 是可选的,如果未提供,将使用玩家所在位置的区域。 * 需要使用鼠标左键和右键选择两个位置,如果没有则开始选择。 * 玩家需要被视为区域管理员,或者拥有 `zones.subcreate.other` 权限 * `/zone delete`: 删除一个现有的区域。 * 用法:`/zone delete ` * 需要删除区域的 `regionKey`。 * 玩家需要是区域的所有者,或者拥有 `zones.delete.other` 权限 * `/zone expand`: 通过指定数量扩展一个现有的区域。 * 用法:`/zone expand [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 ` * `` 是区域的键。 * `` 要设置权限的对象。 * 例如:`Player1` - 用于创建或修改一个组,使用 `+group-GROUPNAME`,其中 GROUPNAME 可以是任何名称。 * `` 是要设置的权限 (例如:`role`, `break`, `place`, `interact`)。 * `` 是权限的值 ( * 例如:`owner`, `true`, `false`, `*`, `!*`, `GRASS_BLOCK`, `!GRASS_BLOCK`)。 * `/zone rename`: 重命名一个区域。 * 用法:`/zone rename ` * `` 是区域的键,`` 是区域的新名称。 * 玩家需要是区域的管理员,或者拥有 `zones.rename.other` 权限 * `/zone select`: 选择一个区域。 * 用法:`/zone select [regionKey]` * 如果未提供 `regionKey`,将使用玩家所在位置的区域。 * 使用粒子视觉上突出显示区域。 * 玩家需要是区域的成员,或者拥有 `zones.select.other` 权限 * `/zone mode`: 更改选择模式。 * 用法:`/zone mode ` * `` 是要设置的新模式。 * 例如:`3d` 用于 3D 选择模式,`2d` 用于 2D 选择模式。 * `/zone save`: 手动将所有区域保存到文件。 * 用法:`/zone save` * 仅限管理员,需要 `zones.save` 权限(默认未授予) * `/zone load`: 手动从文件加载所有区域。 * 用法:`/zone load` * 仅限管理员,需要 `zones.load` 权限(默认未授予) * `/zone import`: 从其他插件导入区域。 * 用法:`/zone import ` * 目前仅支持 WorldGuard。 * 仅限管理员,需要 `zones.import` 权限(默认未授予) ## 使用方法 ### 创建区域 1. 使用 `/zone create` 命令开始创建过程。 2. 使用鼠标左键点击一个方块来设置区域的第一角。 将会出现一个绿色的信标。 3. 使用鼠标右键点击一个方块来设置区域的第二角。 将会出现一个红色的信标。 4. 使用 `/zone create` 命令创建区域。 ### 创建子区域 1. 使用 `/zone subcreate` 命令开始创建过程。 2. 如前所述,选择子区域的两个角。 3. 使用 `/zone subcreate` 命令在您站立的区域内创建子区域或使用 `/zone subcreate ` 在指定的区域内创建子区域。 ### 设置权限 1. 使用 `/zone set ` 命令为区域成员设置权限。 * 示例:`/zone set Player1 break true` 允许 "Player1" 在指定的区域中破坏方块。 * 示例:`/zone set Player2 break GRASS_BLOCK` 允许 "Player2" 仅破坏 `GRASS_BLOCK` 方块 在指定的区域中。 * 示例:`/zone set Player3 interact !OAK_DOOR` 拒绝 "Player3" 与 `OAK_DOOR` 互动 在指定的区域中。 * 示例:`/zone set Player4 place *` 允许 "Player4" 在指定的区域中放置所有方块。 * 示例:`/zone set Player5 break !*` 拒绝 "Player5" 在指定的区域中破坏所有方块。 * 组: * 要分配一个组,将权限值设置为 `group` 为组名。 * 例如:`/zone set +group-some-group-name break true` * 例如:`/zone set ExamplePlayer group some-group-name` * ExamplePlayer 现在继承了来自 `some-group-name` 组的 `break` 权限 ### 查看区域信息 1. 使用 `/zone info` 命令查看您站立的区域的信息。 2. 使用 `/zone info ` 命令查看特定区域的信息。 ## 集成 ### WorldGuard 区域支持通过 `/zone import WorldGuard` 命令导入 WorldGuard 区域。 要使用此功能, 您必须安装并启用 WorldGuard。 区域将自动导入所有 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__%` ## 设计选择 * **YAML 配置:** 该插件使用 YAML 文件进行配置和存储,使其易于阅读和修改。 计划在未来版本中添加其他存储选项。 * **权限系统:** 权限系统设计具有灵活性和细粒度,允许对玩家互动进行精细控制。 * **事件驱动:** 该插件使用 Bukkit 的事件系统来处理玩家互动,使其高效且响应迅速。 * **缓存:** 该插件使用缓存系统来提高检查权限时的性能。 ## 贡献 欢迎对插件进行贡献! 如果您有任何关于新功能、错误修复或改进的想法,请随时提交拉取请求或打开问题。 ## 许可证 此插件采用 MIT 许可证进行分发。