Skip to content

Regions 区域保护

依赖

依赖是否必须用途
ArcartX✅ 必须UI 面板渲染 + 数据包通信
Essentials 模块可选世界规则禁飞/禁交互的 bypass 权限联动

核心特性

分类功能
区域管理创建/删除/重定义/传送/列表/信息查看
选区工具木斧左/右键设置两点选区
标志系统40+ 区域保护标志,三态(allow/deny/none)
成员管理所有者/成员,按优先级和继承生效
子区域父区域继承,支持多层嵌套
世界规则按世界级别的禁飞/禁活塞/禁交互
UI 面板玩家区域菜单 + 管理员面板(需 ArcartX 客户端)
数据迁移支持 SQLite ↔ MySQL 迁移(/axs migrate
数据清理支持 /axs purge 清理玩家区域数据

UI 面板

Regions 模块提供两个 ArcartX UI 面板,需要玩家安装 ArcartX 客户端 mod。

玩家区域菜单

命令:/rg menu

页面功能
当前区域显示玩家所在区域的名称/世界/优先级/成员数/标志列表
我的区域玩家拥有或参与的区域列表,点击查看详情
区域详情范围坐标/体积/父区域/所有者/成员/标志详情

管理员面板

命令:/rg admin
权限:axs.regions.admin

页面功能
区域列表所有区域(ID/世界/优先级/体积)+ 编辑/删除按钮
区域编辑成员管理(移除)+ 40+ 标志快速切换(允许/拒绝/清除三态)

前置要求

UI 面板需要玩家安装 ArcartX 客户端 mod。未安装时命令会提示"UI 功能不可用"。


命令

主入口:/axs regions <子命令>,或使用缩写 /rg <子命令>

两种写法完全等价,例如 /rg define myregion = /axs regions define myregion

UI

命令说明权限
/rg menu打开区域查看菜单
/rg admin打开区域管理面板axs.regions.admin

区域 CRUD

命令说明权限
/rg define <名称>用当前选区创建区域axs.regions.select
/rg remove <名称>删除区域所有者或 axs.regions.admin
/rg redefine <名称>用新选区重定义区域范围所有者或 admin
/rg list [世界]列出区域axs.regions.admin
/rg info <名称>查看区域详细信息所有人
/rg tp <名称>传送到区域中心axs.regions.admin

选区

命令说明权限
/rg pos1将当前位置设为点1axs.regions.select
/rg pos2将当前位置设为点2axs.regions.select
木斧左键设置点1(自动识别选区工具)axs.regions.select
木斧右键设置点2axs.regions.select

标志管理

命令说明权限
/rg flag <区域> <标志> <allow|deny> [数据]设置区域标志所有者或 admin
/rg removeflag <区域> <标志>移除区域标志所有者或 admin
/rg flags <区域>查看区域所有标志所有人

成员管理

命令说明权限
/rg addowner <区域> <玩家>添加所有者所有者或 admin
/rg removeowner <区域> <玩家>移除所有者admin
/rg addmember <区域> <玩家>添加成员所有者或 admin
/rg removemember <区域> <玩家>移除成员所有者或 admin

其他

命令说明权限
/rg priority <区域> <数字>设置区域优先级所有者或 admin
/rg parent <区域> <父区域|none>设置/清除父区域admin

标志系统

共 50+ 个保护标志,按分类如下(代码来源 RegionFlag 枚举):

战斗类

标志说明默认
pvp玩家间伤害DENY
mob-damage怪物对玩家伤害ALLOW
damage-animals玩家伤害动物DENY
invincibility玩家无敌NONE
fall-damage摔落伤害ALLOW

方块类

标志说明默认
block-break方块破坏DENY
block-place方块放置DENY
use右键交互(门/按钮/拉杆等)ALLOW
chest-access容器访问DENY
trample踩踏耕地DENY
vehicle-destroy破坏矿车/船DENY
vehicle-place放置矿车/船ALLOW

环境类

标志说明默认
tntTNT 爆炸DENY
creeper-explosion苦力怕爆炸DENY
other-explosion其他爆炸(末影水晶等)DENY
fire-spread火焰蔓延DENY
lava-fire岩浆点火DENY
lightning雷击起火DENY
snow-fall雪覆盖ALLOW
snow-melt雪融化ALLOW
ice-form冰生成ALLOW
ice-melt冰融化DENY
leaf-decay树叶腐烂ALLOW
grass-spread草方块蔓延ALLOW
mushroom-spread蘑菇蔓延ALLOW
vine-growth藤蔓生长ALLOW
crop-growth作物生长ALLOW
water-flow水流动ALLOW
lava-flow岩浆流动DENY
pistons活塞移动ALLOW
soil-dry耕地干燥ALLOW

生物类

标志说明默认
mob-spawning怪物生成ALLOW
animal-spawning动物生成ALLOW
enderman-grief末影人搬方块DENY
ghast-fireball恶魂火球DENY
wither-damage凋灵破坏DENY

玩家行为类

标志说明默认
entry玩家进入ALLOW
exit玩家离开ALLOW
enderpearl末影珍珠传送ALLOW
chorus-fruit紫颂果传送ALLOW
item-drop丢弃物品ALLOW
item-pickup拾取物品ALLOW
exp-drop经验球掉落ALLOW
hunger饥饿消耗ALLOW
heal自然恢复ALLOW
fly允许飞行ALLOW
ride骑乘实体ALLOW
sleep使用床ALLOW
respawn-anchors重生锚ALLOW

杂项类

标志说明默认
notify-enter进入时通知区域成员NONE
notify-exit离开时通知区域成员NONE
greeting进入消息(自定义文本)NONE
farewell离开消息(自定义文本)NONE
potion-splash药水瓶投掷ALLOW
send-chat发送聊天ALLOW
receive-chat接收聊天ALLOW

标志状态

每个标志有三种状态:

  • ALLOW — 允许该行为
  • DENY — 禁止该行为
  • NONE — 不设置(继承父区域或全局默认)

配置结构

ArcartXRegions.yml

yaml
config-version: 1

debug: false

# 选区工具
selection:
  wand-item: WOODEN_AXE
  max-volume: 500000
  max-regions-per-player: 20

# 区域默认设置
defaults:
  priority: 0
  global-region-id: "__global__"

# 进入/离开提示
notifications:
  show-actionbar: true
  display-mode: actionbar    # actionbar / chat / title

# 世界规则(按世界级别的限制,不依赖区域选区)
world-rules:
  no-fly-worlds:
    - "world_pvp"
  no-fly-action: cancel
  no-fly-message: "&c此世界禁止飞行。"
  no-piston-worlds: []
  disabled-interactions:
    world_spawn:
      - ENDER_CHEST
      - ANVIL

# 存储
storage:
  dialect: sqlite            # sqlite / mysql
  sqlite-file: "regions.db"
  host: "127.0.0.1"
  port: 3306
  database: "arcartxsuite"
  username: "root"
  password: ""
  table-prefix: "axs_rg_"
  pool-size: 3

子目录文件

文件说明
arcartx/ui/regions_menu.yml玩家区域查看菜单 UI
arcartx/ui/regions_admin.yml管理员区域编辑面板 UI
messages.yml模块消息文件(前缀、帮助、错误提示等)

世界规则

不依赖区域选区的全局世界级别限制:

yaml
world-rules:
  # 禁止飞行的世界列表
  no-fly-worlds:
    - "world_pvp"
  no-fly-action: cancel
  no-fly-message: "&c此世界禁止飞行。"
  # 禁止活塞推动的世界列表
  no-piston-worlds: []
  # 禁止交互的物品/方块类型 (按世界配置)
  disabled-interactions:
    world_spawn:
      - ENDER_CHEST
      - ANVIL
功能说明绕过权限
禁飞指定世界禁止飞行,进入时自动取消axs.essentials.fly.bypass
禁活塞指定世界所有活塞推拉无效
禁交互指定世界中特定方块类型不可交互axs.essentials.interact.bypass

选区工具

默认选区工具为木斧WOODEN_AXE),可在配置中修改。

  • 左键方块 → 设置点 1
  • 右键方块 → 设置点 2
  • 两点设置完成后自动显示选区体积
yaml
selection:
  wand-item: WOODEN_AXE
  max-volume: 500000
  max-regions-per-player: 20

存储

支持 SQLite(默认)和 MySQL。

yaml
storage:
  dialect: sqlite
  sqlite-file: "regions.db"
  host: "127.0.0.1"
  port: 3306
  database: "arcartxsuite"
  username: "root"
  password: ""
  table-prefix: "axs_rg_"
  pool-size: 3

数据表:

  • regions — 区域元数据(id/world/bounds/priority/parent)
  • region_flags — 区域标志(region_id/flag/state/data)
  • region_members — 成员关系(region_id/uuid/role)

优先级与继承

  • 优先级:数值越大越优先。玩家处于多个重叠区域时,优先级最高的区域的标志生效。
  • 父区域继承:当某标志状态为 NONE 时,向父区域递归查询直到找到明确设置。
  • 成员豁免:区域所有者和成员默认豁免方块破坏/放置/容器访问等保护标志。
  • 全局区域__global__ 作为所有世界的保底规则,无任何区域覆盖时生效。

权限汇总

权限说明默认
axs.regions.select使用选区工具true
axs.regions.admin管理所有区域op
axs.regions.bypass绕过所有区域保护op
axs.regions.bypass.limit绕过区域数量限制op

跨模块联动

能力接口方向说明
EventBusCapability订阅区域保护事件可通过 EventBus 发布给 EventPacket 等模块
DatabaseMigratable提供支持 /axs migrate regions 进行 SQLite ↔ MySQL 数据迁移
PlayerDataPurgeable提供支持 /axs purge 清理指定玩家的区域成员数据
Essentials 模块联动世界规则的禁飞/禁交互 bypass 权限由 Essentials 模块提供

基于 GPL-3.0 许可发布