LogoArcartX Doc

ArcartXAreaManager:区域管理器

区域管理器API

ArcartXAreaManager

  • 区域管理器负责管理ArcartX的自定义区域,支持区域的增删查操作。
  • 通过 ArcartXAPI.getAreaManager() 获取。
  • 内部使用Chunk索引优化查询性能,支持区域优先级。

worldKey(worldName)

  • 计算世界名对应的区域索引键。对以 dungeon_ 开头的世界名会做归一化处理(截取中间段并转小写),其余情况直接转小写返回。
  • 参数worldName: String — 世界名称
  • 返回值String — 归一化后的世界索引键
  • 调用示例
String key = ArcartXAPI.getAreaManager().worldKey(player.getWorld().getName());

indexArea(area)

  • 将一个区域按其覆盖的 Chunk 范围加入内部索引,供后续按位置快速查询。通常在区域加载时由内部调用,一般无需手动调用。
  • 参数area: Area — 要建立索引的区域对象
  • 返回值:无
  • 调用示例
ArcartXAPI.getAreaManager().indexArea(area);

getArea(location)

  • 获取指定位置所在的区域,如果有多个重叠区域则返回优先级最高的
  • 参数location: Location — Bukkit位置对象
  • 返回值Area? — 区域对象,可能为null
  • 调用示例
Area area = ArcartXAPI.getAreaManager().getArea(player.getLocation());
if (area != null) {
    // 玩家在某个区域内
}

getArea(name)

  • 按名称获取区域
  • 参数name: String — 区域名称
  • 返回值Area? — 区域对象,可能为null
  • 调用示例
Area area = ArcartXAPI.getAreaManager().getArea("spawn_area");

addArea(name, loc1, loc2)

  • 添加一个新区域,两个位置必须在同一个世界
  • 参数
    • name: String — 区域名称
    • loc1: Location — 对角位置1
    • loc2: Location — 对角位置2
  • 返回值:无
  • 调用示例
ArcartXAPI.getAreaManager().addArea("my_area", loc1, loc2);

如果两个位置不在同一个世界,或者已存在同名区域,会抛出 IllegalArgumentException

addArea(player, name, loc1, loc2)

  • 添加一个新区域,带玩家消息反馈
  • 参数
    • player: Player — 接收反馈消息的玩家
    • name: String — 区域名称
    • loc1: Location — 对角位置1
    • loc2: Location — 对角位置2
  • 返回值:无
  • 调用示例
ArcartXAPI.getAreaManager().addArea(player, "my_area", loc1, loc2);

removeArea(name)

  • 移除指定名称的区域,同时删除对应的配置文件
  • 参数name: String — 区域名称
  • 返回值:无
  • 调用示例
ArcartXAPI.getAreaManager().removeArea("my_area");

On this page