Skip to content

指令用法

LyAutoAttack 的主命令为 /laa。玩家可以手动切换自动攻击状态,OP 可以重载配置、控制在线玩家的自动攻击状态,或锁定玩家坐标。

指令列表

指令执行者说明
/laaOP查看插件内置指令帮助
/laa check玩家切换自己的自动攻击状态;已开启时关闭,未开启时开启
/laa reloadOP重新读取 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

插件会根据当前状态执行相反操作:

当前状态执行结果
未开启匹配分组并开启自动攻击
已开启停止攻击任务并关闭自动攻击

玩家开启自动攻击时,插件会立即完成以下处理:

  1. 从上到下检查 group 中的分组。
  2. 使用第一个满足全部条件的分组。
  3. 没有分组满足时使用 default-* 默认配置。
  4. 计算属性变量提供的范围、目标数量、攻速和抗击退加成。
  5. 记录本次启动使用的攻击范围、攻击间隔、最大目标数、抗击退和攻击模式。
  6. 发送开启消息并执行开启命令。
  7. 启动自动攻击任务与抗击退效果。
  8. 向安装了 LyAutoAttackMod 的客户端发送光环开启参数。

分组和最终攻击参数在每次开启时确定。玩家已经开启自动攻击后,即使装备、权限或 PlaceholderAPI 变量发生变化,当前记录的参数也不会自动重新计算。需要让新条件生效时,应先关闭再重新开启。

管理员控制玩家

强制开启

text
/laa enable <玩家>

该指令只会为当前未开启自动攻击的在线玩家执行开启流程。开启时仍然会正常匹配玩家当前分组,并计算属性变量加成。

强制关闭

text
/laa disable <玩家>

该指令只会关闭当前已经开启自动攻击的在线玩家。关闭时会执行该玩家启动时所匹配分组的停止消息和停止命令,同时向客户端发送光环关闭消息。

如果 persistent-knockbackfalse,关闭自动攻击时也会移除插件设置的抗击退属性;如果该配置为 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-attackfalse 时,处于原版受击冷却中的目标不会受到本次攻击;当其为 true 时,插件可以忽略该判断并继续发起攻击。

自动开启

插件可以在玩家进服、重生和跨世界后延迟检查条件,并自动开启攻击。对应功能必须先在 config.yml 中启用。

触发场景开关延迟配置条件配置
玩家进服join-auto-autoattack-enablejoin-auto-attack-delayjoin-auto-autoattack-condition
玩家重生respawn-auto-autoattack-enablerespawn-auto-attack-delayrespawn-auto-autoattack-condition
玩家跨世界changeworld-auto-autoattack-enablechangeworld-auto-attack-delaychangeworld-auto-autoattack-condition

延迟单位为 tick,20 tick 约为 1 秒。条件列表中的全部条件都通过后,插件才会调用开启流程。

自动开启调用与手动开启使用相同的分组匹配逻辑。如果触发时玩家已经开启,开启 API 会先关闭原任务,再根据当时的条件重新匹配分组并启动新任务。因此,成功触发自动开启也可以刷新玩家的分组和攻击参数。

自动关闭场景

场景处理方式
玩家退出服务器关闭自动攻击并移除网络包拦截器
玩家死亡关闭自动攻击
1.12.2 玩家切换为旁观模式关闭自动攻击
玩家跨世界,且 changeworld-auto-autoattack-enablefalse立即关闭自动攻击

当跨世界自动开启功能为 true 时,插件不会在世界切换事件中立即关闭攻击,而是等待配置的延迟后检查条件。条件全部通过时会重新开启并刷新分组;条件未通过时不会执行新的开启操作。

自动攻击期间的手动伤害控制

plugin-switch-nodamageticktrue 时,插件会在玩家开启自动攻击期间接管攻击伤害入口,避免自动攻击与玩家手动攻击叠加产生高频伤害。

接管范围包括:

  • 普通客户端发送的实体攻击包。
  • DragonCore Bukkit 插件消息中的攻击交互。
  • 1.12.2 DragonCore Forge 通道中的攻击交互。
  • 玩家直接造成的额外伤害事件。
  • 玩家发射物产生的伤害事件。

插件自身攻击上下文中的第一条有效伤害会被放行,后续重复伤害会被取消。带有 doing-skill-damage metadata 的伤害来源会直接放行,用于兼容对应的技能伤害。

关闭 plugin-switch-nodamagetick 后,插件不会执行上述攻击包与额外伤害拦截,玩家手动攻击可能与自动攻击同时生效。

攻击动作与动画

send-swap-handtrue 时,插件每次尝试攻击目标都会向玩家发送主手挥动动画。该功能通过 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 实体类型名称,例如 ZOMBIECOW

该功能适合确认自定义实体对应的类型,并据此配置 filter-entities。调试完成后建议关闭,避免持续产生聊天消息。