Lua 脚本:枚举与值
本页链接到 EliteMobs Lua 方法使用的每个枚举类型的 Spigot Javadocs。在 Lua 代码中使用精确的枚举常量名称(如 "FLAME"、"ZOMBIE"、"STONE")作为字符串。
- 拼写必须与枚举常量名称完全匹配
- 大小写通常在内部标准化,但为了安全起见请匹配 Javadoc 的拼写
- 无效值的处理方式取决于具体方法:有些会记录警告,有些会返回
nil或不执行任何操作,带有输入校验的 API 则可能引发 Lua 错误
枚举参考
| 枚举 | 用途 | Javadoc |
|---|---|---|
BarColor | Boss 血条颜色 | BarColor |
BarStyle | Boss 血条样式 | BarStyle |
DamageCause | 伤害原因过滤 | EntityDamageEvent.DamageCause |
EnderDragon.Phase | 末影龙阶段控制 | EnderDragon.Phase |
EntityEffect | 实体视觉效果 | EntityEffect |
EntityType | 实体生成 | EntityType |
EquipmentSlot | 实体装备槽位 | EquipmentSlot |
FireworkEffect.Type | 烟花形状 | FireworkEffect.Type |
Material | 方块与物品 | Material |
Particle | 粒子效果 | Particle -- 另请参阅有效粒子列表了解旧版名称转换 |
PotionEffectType | 药水效果 | PotionEffectType |
Sound | 声音播放 | Sound |
每一个 Lua 声音辅助方法(boss:play_sound_at_self、entity:play_sound_at_entity、world:play_sound_at_location)都分两步解析该字符串:先尝试 Spigot Sound 枚举名(会转为大写,因此 "entity_blaze_shoot" 可用),若失败则把该字符串当作带命名空间的声音键处理(会转为小写,因此 "entity.blaze.shoot" 和你自己的资源包键 "mypack:boss.roar" 都可用)。
这意味着你不再需要在两种格式之间做选择 —— 但任一形式中的拼写错误都会被静默忽略,因为回退路径无法区分错误的枚举名和一个只是尚未安装的自定义资源包声音。
非 Spigot 值
这些值是 EliteMobs 特有的,不在 Spigot Javadocs 中:
区域形状
用于原生区域定义(kind 字段)和脚本工具区域规格(shape 字段)。
原生 (kind) | 脚本工具 (shape) |
|---|---|
sphere | SPHERE |
dome | DOME |
cylinder | CYLINDER |
cuboid | CUBOID |
cone | CONE |
static_ray | STATIC_RAY |
rotating_ray | ROTATING_RAY |
translating_ray | TRANSLATING_RAY |
实体过滤器
用于 context.zones 和 context.entities 查询选项。不区分大小写,且每一项都有一个复数别名。
| 过滤器 | 匹配对象 |
|---|---|
player / players | 仅玩家 |
elite / elites | 仅精英怪物 |
mob / mobs | 非玩家生物实体 |
living | 所有生物实体,包括玩家(默认) |
all / entities | 所有实体,包括非生物实体。仅 context.entities:get_nearby_entities 能识别 |
不属于上述任何字符串的值会退化为 living 行为而不会报错,因此像 "playr" 这样的拼写错误会静默地返回所有生物实体。
context.script:zone({...}) 使用另一套大写的过滤器(PLAYER、ELITE、LIVING),因为它运行的是 EliteScript 引擎。
天气值
用于 context.world:set_weather(weather)。
| 值 | 效果 |
|---|---|
CLEAR | 晴天 |
RAIN | 下雨 |
THUNDER | 雷暴 |
目标类型
用于 context.script:target() 规格。
| 值 | 解析为 |
|---|---|
SELF | Boss 实体自身 |
SELF_SPAWN | Boss 的出生位置 |
DIRECT_TARGET | 当前事件中涉及的实体 |
NEARBY_PLAYERS | Boss range 范围内的玩家 |
NEARBY_MOBS | range 范围内的非玩家怪物 |
NEARBY_ELITES | range 范围内的精英怪物 |
ALL_PLAYERS | 所有在线玩家 |
WORLD_PLAYERS | Boss 所在世界的所有玩家 |
ZONE_FULL | 区域体积内的实体/位置 |
ZONE_BORDER | 区域边界上的实体/位置 |
LOCATION | 来自规格 location 字段的特定位置 |
LOCATIONS | 来自规格 locations 列表的若干特定位置 |
LANDING_LOCATION | 下落方块或召唤实体的落点 |
ACTION_TARGET | 继承外层 EliteScript 动作的目标 |
INHERIT_SCRIPT_TARGET | 继承调用方 EliteScript 的目标 |
INHERIT_SCRIPT_ZONE_FULL | 位于调用方 EliteScript 区域内部 |
INHERIT_SCRIPT_ZONE_BORDER | 位于调用方 EliteScript 区域的边界上 |
最后四项只有在存在可供继承的外层 EliteScript 时才会解析,因此从 Lua 使用它们意义不大。完整语义参见 EliteScript 目标 —— context.script 使用的正是那套实现。
