指令用法
LyAutoAttack 的主命令为 /laa。玩家可以手动切换自动攻击状态,OP 可以重载配置、控制在线玩家的自动攻击状态,或锁定玩家坐标。
指令列表
| 指令 | 执行者 | 说明 |
|---|---|---|
/laa | OP | 查看插件内置指令帮助 |
/laa check | 玩家 | 切换自己的自动攻击状态;已开启时关闭,未开启时开启 |
/laa reload | OP | 重新读取 config.yml,并重新载入默认参数与全部分组 |
/laa enable <玩家> | OP | 为指定在线玩家开启自动攻击;已经开启时不会重复启动 |
/laa disable <玩家> | OP | 关闭指定在线玩家的自动攻击;未开启时不执行操作 |
/laa lock <玩家> | OP | 切换指定在线玩家的坐标锁定状态 |
插件没有在 plugin.yml 中声明独立权限节点。管理指令直接检查执行者是否为 OP,/laa check 只要求执行者是玩家。
/laa enable、/laa disable 和 /laa lock 的目标必须是在线玩家,否则会提示“玩家不在线”。这些管理指令支持在线玩家名 Tab 补全。
玩家切换自动攻击
玩家执行:
text
/laa check插件会根据当前状态执行相反操作:
| 当前状态 | 执行结果 |
|---|---|
| 未开启 | 匹配分组并开启自动攻击 |
| 已开启 | 停止攻击任务并关闭自动攻击 |
玩家开启自动攻击时,插件会立即完成以下处理:
- 从上到下检查
group中的分组。 - 使用第一个满足全部条件的分组。
- 没有分组满足时使用
default-*默认配置。 - 计算属性变量提供的范围、目标数量、攻速和抗击退加成。
- 记录本次启动使用的攻击范围、攻击间隔、最大目标数、抗击退和攻击模式。
- 发送开启消息并执行开启命令。
- 启动自动攻击任务与抗击退效果。
- 向安装了 LyAutoAttackMod 的客户端发送光环开启参数。
分组和最终攻击参数在每次开启时确定。玩家已经开启自动攻击后,即使装备、权限或 PlaceholderAPI 变量发生变化,当前记录的参数也不会自动重新计算。需要让新条件生效时,应先关闭再重新开启。
管理员控制玩家
强制开启
text
/laa enable <玩家>该指令只会为当前未开启自动攻击的在线玩家执行开启流程。开启时仍然会正常匹配玩家当前分组,并计算属性变量加成。
强制关闭
text
/laa disable <玩家>该指令只会关闭当前已经开启自动攻击的在线玩家。关闭时会执行该玩家启动时所匹配分组的停止消息和停止命令,同时向客户端发送光环关闭消息。
如果 persistent-knockback 为 false,关闭自动攻击时也会移除插件设置的抗击退属性;如果该配置为 true,抗击退不会随自动攻击关闭而移除。
锁定玩家坐标
执行:
text
/laa lock <玩家>该指令会切换玩家的坐标锁定状态:
| 当前状态 | 执行结果 |
|---|---|
| 未锁定 | 记录为锁定状态 |
| 已锁定 | 解除锁定状态 |
目标玩家必须处于地面上,否则插件会提示“玩家不在地面”。锁定后,玩家移动事件中的目标 X、Y、Z 和世界会被改回移动前的位置,因此玩家无法通过普通移动离开当前位置。
坐标锁定与自动攻击是两个独立状态。锁定玩家不会自动开启攻击,关闭自动攻击也不会自动解除坐标锁定。
重载配置
执行:
text
/laa reload重载会重新读取 config.yml,清空已经载入的分组数据,然后按照配置文件中的 group 顺序重新载入分组,最后重新生成默认分组。
重载不会主动停止或重启已经运行的玩家攻击任务。已经开启自动攻击的玩家仍然使用启动时记录的攻击范围、攻速、目标数量和攻击模式。需要应用新参数时,应让玩家关闭后重新开启,或由 OP 依次执行:
text
/laa disable <玩家>
/laa enable <玩家>分组匹配时机
以下操作会执行完整的分组匹配:
| 场景 | 是否重新匹配 |
|---|---|
玩家执行 /laa check 从关闭切换为开启 | 是 |
OP 对未开启的玩家执行 /laa enable <玩家> | 是 |
| 进服自动开启成功触发 | 是 |
| 重生自动开启成功触发 | 是 |
| 跨世界自动开启成功触发 | 是 |
| 玩家已经开启时更换装备 | 否 |
| 玩家已经开启时权限发生变化 | 否 |
| 玩家已经开启时 PlaceholderAPI 变量变化 | 否 |
执行 /laa reload | 不会立即重新匹配在线玩家 |
分组按照 config.yml 中的顺序从上到下检查。一个分组内的所有条件都必须满足,插件才会使用该分组。OP 身份不会直接绕过 permission:{权限} 条件;插件会检查 OP 实际拥有的有效权限记录。
攻击模式
玩家开启后使用分组或默认配置中的 mode:
| 模式 | 说明 |
|---|---|
near | 每次触发时选择范围内最近的目标,最大目标数固定按 1 处理 |
all | 每次触发时按距离从近到远攻击范围内的多个目标,数量受 max 限制 |
目标搜索使用玩家周围的水平范围和固定的上下 3 格区域,并按与玩家的距离从近到远排序。超过配置攻击范围的实体不会被攻击。
插件会自动排除以下目标:
- 非生物实体。
- 盔甲架。
- 插件内置识别的离渊坐骑实体。
filter-entities中配置的实体类型。- 已经死亡或生命值为 0 的目标。
当 force-attack 为 false 时,处于原版受击冷却中的目标不会受到本次攻击;当其为 true 时,插件可以忽略该判断并继续发起攻击。
自动开启
插件可以在玩家进服、重生和跨世界后延迟检查条件,并自动开启攻击。对应功能必须先在 config.yml 中启用。
| 触发场景 | 开关 | 延迟配置 | 条件配置 |
|---|---|---|---|
| 玩家进服 | join-auto-autoattack-enable | join-auto-attack-delay | join-auto-autoattack-condition |
| 玩家重生 | respawn-auto-autoattack-enable | respawn-auto-attack-delay | respawn-auto-autoattack-condition |
| 玩家跨世界 | changeworld-auto-autoattack-enable | changeworld-auto-attack-delay | changeworld-auto-autoattack-condition |
延迟单位为 tick,20 tick 约为 1 秒。条件列表中的全部条件都通过后,插件才会调用开启流程。
自动开启调用与手动开启使用相同的分组匹配逻辑。如果触发时玩家已经开启,开启 API 会先关闭原任务,再根据当时的条件重新匹配分组并启动新任务。因此,成功触发自动开启也可以刷新玩家的分组和攻击参数。
自动关闭场景
| 场景 | 处理方式 |
|---|---|
| 玩家退出服务器 | 关闭自动攻击并移除网络包拦截器 |
| 玩家死亡 | 关闭自动攻击 |
| 1.12.2 玩家切换为旁观模式 | 关闭自动攻击 |
玩家跨世界,且 changeworld-auto-autoattack-enable 为 false | 立即关闭自动攻击 |
当跨世界自动开启功能为 true 时,插件不会在世界切换事件中立即关闭攻击,而是等待配置的延迟后检查条件。条件全部通过时会重新开启并刷新分组;条件未通过时不会执行新的开启操作。
自动攻击期间的手动伤害控制
当 plugin-switch-nodamagetick 为 true 时,插件会在玩家开启自动攻击期间接管攻击伤害入口,避免自动攻击与玩家手动攻击叠加产生高频伤害。
接管范围包括:
- 普通客户端发送的实体攻击包。
- DragonCore Bukkit 插件消息中的攻击交互。
- 1.12.2 DragonCore Forge 通道中的攻击交互。
- 玩家直接造成的额外伤害事件。
- 玩家发射物产生的伤害事件。
插件自身攻击上下文中的第一条有效伤害会被放行,后续重复伤害会被取消。带有 doing-skill-damage metadata 的伤害来源会直接放行,用于兼容对应的技能伤害。
关闭 plugin-switch-nodamagetick 后,插件不会执行上述攻击包与额外伤害拦截,玩家手动攻击可能与自动攻击同时生效。
攻击动作与动画
当 send-swap-hand 为 true 时,插件每次尝试攻击目标都会向玩家发送主手挥动动画。该功能通过 ProtocolLib 数据包实现。
1.12.2 支持按 animation-sequence 配置循环播放动作:
yaml
animation-sequence:
- '动作1'
- 'delay:2000'
- '动作2'delay:毫秒 用于推迟下一项动作的播放时间。普通动作项会根据服务器已安装的插件自动选择发送方式:
| 已安装插件 | 动作发送方式 |
|---|---|
| GermPlugin | 发送弯曲动作和模型动画 |
| 未安装 GermPlugin,但安装 DragonCore | 发送 DragonCore 玩家动画 |
| 两者均未安装 | 不播放配置动作 |
当 GermPlugin 和 DragonCore 同时安装时,插件优先使用 GermPlugin。
客户端光环状态
玩家开启自动攻击时,插件会通过 lyautoattack 插件消息通道向客户端发送以下内容:
- 本次攻击范围。
- 平常状态颜色。
- 命中状态颜色。
- 虚线线宽。
- 相对玩家脚底的高度偏移。
- 透明度。
- 命中颜色保持时间。
- 恢复平常颜色的渐变时间。
每次确认造成真实攻击后,插件会发送命中状态消息;关闭自动攻击时发送关闭状态消息。光环显示需要玩家客户端安装 LyAutoAttackMod,未安装客户端 Mod 不影响服务端自动攻击功能。
状态参数限制
开启自动攻击时,插件会对最终参数进行限制:
| 参数 | 限制 |
|---|---|
| 攻击范围 | 最低为 0,最高为 64 |
| 攻击间隔 | 最低为 1 tick |
near 模式目标数量 | 实际状态变量固定显示为 1 |
属性加成、分组参数和默认参数会先完成计算,再应用上述范围与攻速限制。
调试目标类型
将 debug-show-target-entity-type 设置为 true 后,OP 玩家每次由自动攻击命中目标时会收到目标的 Bukkit 实体类型名称,例如 ZOMBIE 或 COW。
该功能适合确认自定义实体对应的类型,并据此配置 filter-entities。调试完成后建议关闭,避免持续产生聊天消息。