区域机制
区域机制允许你定义空间区域,并在玩家进入、离开或驻留时触发脚本。区域支持长方体和球体两种形状,可以附加药水效果和自定义变量。
区域定义
每个区域通过 RegionDefinition 描述:
| 字段 | 说明 |
|---|---|
id | 区域 ID,全局唯一 |
shape | 区域形状(Cuboid 或 Sphere) |
onEnterScript | 玩家进入时执行的脚本 ID |
onLeaveScript | 玩家离开时执行的脚本 ID |
onStayScript | 玩家驻留时周期执行的脚本 ID |
stayIntervalTicks | 驻留脚本执行间隔,默认 20(1 秒) |
effects | 区域内的药水效果列表 |
variables | 区域自定义变量(键值对) |
区域形状
Cuboid(长方体)
用两个对角点定义的长方体区域。
| 字段 | 说明 |
|---|---|
world | 世界名称 |
minX | 最小 X 坐标 |
minY | 最小 Y 坐标 |
minZ | 最小 Z 坐标 |
maxX | 最大 X 坐标 |
maxY | 最大 Y 坐标 |
maxZ | 最大 Z 坐标 |
Sphere(球体)
用中心点和半径定义的球形区域。
| 字段 | 说明 |
|---|---|
world | 世界名称 |
centerX | 中心 X 坐标 |
centerY | 中心 Y 坐标 |
centerZ | 中心 Z 坐标 |
radius | 半径 |
区域效果
区域可以附加药水效果,玩家在区域内时自动获得这些效果。
| 字段 | 说明 |
|---|---|
type | 药水效果类型(如 SPEED、REGENERATION) |
amplifier | 效果等级(0 = I 级,1 = II 级,以此类推) |
ambient | 是否为环境效果(粒子更淡) |
区域服务
RegionService 提供区域的注册和查询功能:
| 操作 | 说明 |
|---|---|
register | 注册一个区域定义 |
getRegionsAt | 获取指定位置所在的所有区域 |
isInRegion | 检查玩家是否在指定区域内 |
getPlayersInRegion | 获取指定区域内的所有玩家 |
提示
区域脚本执行时,上下文中会自动注入区域的 variables 变量,你可以在脚本中直接使用这些变量来实现区域特定的逻辑。