插件变量
LyAutoAttack 在 PlaceholderAPI 中注册的标识符为 laa,完整格式为 %laa_变量名%。
PlaceholderAPI 依赖
使用本页变量前,服务器必须安装并启用 PlaceholderAPI。PlaceholderAPI 未启动时,LyAutoAttack 不会注册 laa 变量扩展。
变量状态
%laa_status% 和 %laa_lock% 不要求玩家已开启自动攻击。攻击模式、目标数量、抗击退、索敌范围和攻击速度变量只能读取已经启动自动攻击的玩家数据,否则返回 §c错误。
变量列表
| 变量 | 返回示例 | 说明 | 未开启自动攻击时 |
|---|---|---|---|
%laa_status% | §a已启动 / §7未启动 | 当前玩家的自动攻击开启状态,文本由配置文件控制 | 正常返回关闭文本 |
%laa_lock% | §a已启动 / §7未启动 | 当前玩家的坐标锁定状态,文本与自动攻击状态共用配置 | 正常返回关闭文本 |
%laa_mode% | 最近目标 / 范围目标 | 当前攻击模式;near 返回 最近目标,all 返回 范围目标 | 返回 §c错误 |
%laa_max% | 1 / 3 | 当前最大攻击目标数;near 模式固定返回 1,all 模式返回实际目标上限 | 返回 §c错误 |
%laa_knockback% | 1格 | 当前生效的抗击退数值 | 返回 §c错误 |
%laa_range% | 3.5x | 当前生效的索敌范围 | 返回 §c错误 |
%laa_speed% | 每秒攻击4.0次 | 根据当前攻击间隔换算的每秒攻击次数 | 返回 §c错误 |
返回值说明
攻击模式
| 配置值 | %laa_mode% 返回值 | %laa_max% 返回值 |
|---|---|---|
near | 最近目标 | 固定为 1 |
all | 范围目标 | 当前实际最大攻击目标数 |
如果配置了无法识别的模式,模式和目标数量变量不会匹配到有效分支,最终返回 §c错误。
攻击速度
%laa_speed% 根据玩家开启自动攻击时记录的攻击间隔计算:
text
每秒攻击次数 = 20 / 攻击间隔攻击间隔单位为 tick,返回结果保留一位小数。例如攻击间隔为 5 tick 时,变量返回 每秒攻击4.0次。
属性加成计算完成后,最终攻击间隔最低为 1 tick,因此变量最多显示为 每秒攻击20.0次。
索敌范围
%laa_range% 返回玩家开启自动攻击时确定的最终范围,并在数值后附加 x。属性加成计算完成后,最终范围会被限制在 0 到 64 之间。
抗击退
%laa_knockback% 返回基础抗击退与属性加成相加后的数值,并在末尾附加 格。变量只反映玩家开启自动攻击时记录的抗击退参数,不说明当前是否启用了增强防击退模式。
状态文本配置
自动攻击状态和坐标锁定状态共用以下两个配置项:
yaml
autoattack-enable-placeholer: '§a已启动'
autoattack-disable-placeholer: '§7未启动'| 配置项 | 用途 |
|---|---|
autoattack-enable-placeholer | %laa_status% 或 %laa_lock% 处于开启状态时返回的文本 |
autoattack-disable-placeholer | %laa_status% 或 %laa_lock% 处于关闭状态时返回的文本 |
配置键中的 placeholer 是插件实际读取的名称,不要改成 placeholder。
状态文本支持使用 & 颜色代码,变量返回前会将 & 转换为 §:
yaml
autoattack-enable-placeholer: '&a已启动'
autoattack-disable-placeholer: '&7未启动'以上配置会分别返回 §a已启动 和 §7未启动。
条件表达式中的变量
自动开启条件和分组条件支持使用 papi:{表达式} 判断 PlaceholderAPI 变量。表达式中的占位符会先按当前玩家解析,再执行比较。
可使用的位置包括:
| 配置位置 | 触发时机 |
|---|---|
join-auto-autoattack-condition | 玩家进入服务器后自动开启攻击前 |
respawn-auto-autoattack-condition | 玩家重生后自动开启攻击前 |
changeworld-auto-autoattack-condition | 玩家切换世界后自动开启攻击前 |
group.<分组ID>.condition | 玩家开启自动攻击并匹配分组时 |
支持的运算符
| 类型 | 运算符 |
|---|---|
| 数值比较 | >、>=、<、<= |
| 相等比较 | ==、!= |
| 逻辑与 | && |
| 逻辑或 | ` |
| 数学计算 | +、-、*、/、(、) |
逻辑表达式会先按 || 分组,再处理每组中的 && 条件。
数值判断
yaml
join-auto-autoattack-condition:
- 'papi:{%player_level% >= 30}'多个条件可以写在同一个表达式中:
yaml
group:
'high-speed':
condition:
- 'papi:{%vault_eco_balance% >= 10000 && %player_level% >= 50}'
range: 6
max: 3
speed: 5
knockback: 1
mode: 'all'数值比较的两侧也支持基础数学表达式:
yaml
condition:
- 'papi:{(%player_level% + 10) >= 50}'字符串判断
字符串比较建议在两侧添加相同类型的引号:
yaml
condition:
- 'papi:{"%laa_status%" == "§a已启动"}'YAML 外层使用单引号后,表达式内部可以安全使用双引号。字符串比较区分实际文本内容,颜色符号也属于文本的一部分。
状态条件
在进入服务器、重生或切换世界后准备自动开启攻击时,%laa_status% 通常仍是关闭文本。将 %laa_status% == §a已启动 作为自动开启条件,会要求玩家在检查发生前已经处于开启状态。
权限条件
权限条件不是 PlaceholderAPI 变量,但可以和 papi:{...} 条件一起使用。条件列表中的每一项都必须通过:
yaml
join-auto-autoattack-condition:
- 'papi:{%player_level% >= 30}'
- 'permission:{vip.1}'
- 'nopermission:{example.blocked}'| 格式 | 通过条件 |
|---|---|
permission:{权限节点} | 玩家实际拥有该权限节点 |
nopermission:{权限节点} | 玩家实际不拥有该权限节点 |
插件检查 OP 玩家的权限条件时,会读取玩家的实际有效权限,不会仅因玩家是 OP 就自动通过任意权限节点。
属性加成变量
attribute-addition 可以读取 PlaceholderAPI 变量,并在玩家开启自动攻击时计算最终参数:
yaml
attribute-addition:
enable: true
range: '%player_level%'
max: '%some_amount%'
speed: '%some_speed_bonus%'
knockback: '%some_knockback_bonus%'| 配置项 | 变量含义 | 计算方式 |
|---|---|---|
attribute-addition.range | 范围百分比加成 | 基础范围 + 基础范围 × 变量值 ÷ 100 |
attribute-addition.max | 目标数量加成 | 基础数量 + 变量值的整数部分 |
attribute-addition.speed | 攻击速度百分比加成 | 基础攻击间隔 ÷ (1 + 变量值 ÷ 100) |
attribute-addition.knockback | 抗击退加成 | 基础抗击退 + 变量值的整数部分 |
例如范围变量返回 20,表示基础范围增加 20%;速度变量返回 100,表示最终攻击间隔变为基础值的二分之一。
数值要求
属性加成变量必须解析为纯数字。带单位、百分号或颜色代码的文本无法直接转为数值,例如 10点、10%、§a10。
如果变量无法解析为数字,插件会在控制台输出玩家名、变量内容和原始解析结果,并将本次加成按 0 处理。
属性加成在玩家开启自动攻击时计算。玩家开启后,即使外部变量发生变化,当前 %laa_range%、%laa_max%、%laa_speed% 和 %laa_knockback% 也不会立即重新计算;需要重新开启自动攻击后才会载入新的数值。
无效变量
出现以下情况时,变量会返回 §c错误:
- 请求的变量名不存在。
- 玩家对象或变量名为空。
- 玩家尚未开启自动攻击,却请求了模式、数量、抗击退、范围或速度变量。
- 当前攻击模式不是插件可识别的
near或all,导致模式或数量无法生成有效结果。
§c错误 是插件写死的返回文本,不能通过状态文本配置修改。