Skip to content

LyAutoAttack

LyAutoAttack 是一款自动攻击类 Bukkit 插件。玩家开启杀戮后,插件会按当前分组的索敌范围、攻击间隔、目标上限和攻击模式扫描附近实体,并以玩家身份触发攻击。

插件适用于挂机刷怪、副本清场、职业属性联动和权限分档等玩法。不同玩家可以通过权限、PlaceholderAPI 表达式和指定槽位物品匹配不同分组,获得独立的攻击参数、抗击退效果、提示消息、命令、动作序列和客户端光环样式。

插件信息

项目内容
插件名LyAutoAttack
版本1.2.2
作者Liyuan
主命令/laa
Java 版本Java 8
声明的软依赖PlaceholderAPIProtocolLib
支持版本1.7.101.8.x1.12.2

服务端版本限制

插件会在启动阶段读取服务端版本。当前代码仅处理 Minecraft 1.71.81.12,其他版本会提示不受支持并停止启用。

依赖与兼容插件

插件或客户端用途说明
ProtocolLib攻击包拦截、摆臂动作plugin.yml 中声明为软依赖,但攻击接管逻辑会直接使用其 API,建议作为运行前置安装
PlaceholderAPI插件变量、条件表达式、属性加成plugin.yml 中声明为软依赖;缺少后无法完整使用分组条件、自动开启条件和属性加成
DragonCore槽位物品条件、玩家动作安装后可匹配龙核槽位,并自动播放动作序列中的动作
GermPlugin槽位物品条件、玩家动作安装后可匹配萌芽槽位;播放动作时优先使用萌芽动作接口
LyInventoryReload自定义背包物品条件用于读取指定背包和类型中的物品
YeeJewelry饰品槽位物品条件用于读取指定饰品背包槽位中的物品
LyAutoAttackMod客户端范围光环接收开启、关闭和命中消息,显示范围、颜色与命中渐变效果

PlaceholderAPI

插件即使在未检测到 PlaceholderAPI 时仍会继续启动,但配置中的 papi:{...} 条件、属性加成和 %laa_*% 变量依赖 PlaceholderAPI。需要使用这些功能时必须安装并正常加载 PlaceholderAPI。

核心功能

功能说明
自动索敌按配置间隔扫描玩家附近的生物实体,并优先处理距离最近的目标
水平范围限制使用配置范围搜索 X、Z 方向目标,并将垂直搜索高度限制为 3 格
两种攻击模式near 每次攻击最近目标;all 按距离攻击多个目标
分组匹配开启杀戮时从上到下检查分组,使用第一个满足全部条件的分组
默认分组没有自定义分组符合时,自动使用 default-* 配置组成的默认分组
条件表达式支持 PlaceholderAPI 比较、权限、反向权限和指定槽位物品名称条件
属性加成可读取数字变量,对攻击范围、目标数量、攻击间隔和抗击退数值进行增幅
受击冷却控制可无视目标受击冷却强制攻击,也可在杀戮期间屏蔽玩家额外手动伤害
普攻路径拦截开启伤害接管后,拦截原版攻击包、DragonCore 交互攻击和对应伤害事件
抗击退支持杀戮期间抗击退、进服持续抗击退和增强抗击退模式
实体过滤可按 Bukkit 实体类型排除目标;盔甲架与插件识别的坐骑实体会被内置过滤
自动开启支持玩家进服、重生和跨世界后延迟检查条件并自动开启杀戮
状态清理玩家死亡、退出时关闭杀戮;未启用跨世界自动开启时,跨世界会关闭杀戮
坐标锁定OP 可锁定在线玩家的 X、Y、Z 坐标,玩家仍可改变视角
动作序列攻击命中后按顺序轮播 DragonCore 或 GermPlugin 动作,支持毫秒延迟项
客户端光环向配套客户端发送攻击范围、颜色、线宽、高度、透明度和命中渐变参数
调试提示可在攻击命中时向 OP 显示本次目标的 Bukkit 实体类型
Java API提供开启、关闭、状态查询以及单独启用或关闭抗击退的方法
指令补全根据发送者身份补全可用子命令,并为管理指令补全在线玩家名

攻击机制

玩家开启杀戮时,插件会匹配分组并计算本次运行使用的参数。参数会保存到玩家运行数据中,直到杀戮关闭后清除。

目标按与玩家的距离从近到远排序。配置范围最大会被限制为 64,小于 0 时会修正为 0;最终攻击间隔不能低于 1 tick。

模式行为
near每轮选择距离最近的一个目标,目标数量固定表现为 1
all每轮按距离攻击多个有效目标,数量受当前 max 限制

攻击目标必须是存活的 LivingEntity,并通过实体过滤规则。默认配置额外过滤 COWPLAYER,服务器可以在 filter-entities 中修改列表。

伤害模式

attack-mode 用于选择 Minecraft 1.12.2 下的攻击实现。

配置注释中的用途实际行为
1兼容动作大师伤害屏蔽清除目标受击冷却,并以 NMS 伤害源造成 1 点伤害
2原版模拟伤害清除目标受击冷却,并通过 Bukkit API 造成 0.01 点伤害
3原版 MM 造成伤害通过 Bukkit API 造成 1 点伤害,不主动清除受击冷却
4兼容 SX 伤害清除目标受击冷却,并调用玩家原版 NMS 攻击

Minecraft 1.7.10 和 1.8.x 使用对应版本的原版 NMS 玩家攻击方法,不读取上述四种分支。

伤害接管

开启 plugin-switch-nodamagetick 后,玩家处于杀戮状态时,插件会拦截普通攻击数据包和额外伤害事件,只放行本插件当前攻击上下文中的首条真实伤害。

该机制还处理以下攻击路径:

  • 原版 USE_ENTITY 攻击包。
  • DragonCore 的 dragoncore:main 交互消息。
  • Minecraft 1.12.2 Forge 连接中的 DragonCore 攻击消息。
  • 玩家发射的弹射物伤害事件。
  • 带有 doing-skill-damage metadata 的伤害会直接放行。

force-attack 开启后,即使目标仍有受击冷却,自动攻击也会继续触发。关闭后,仅攻击受击冷却为 0 的目标。

分组与条件

自定义分组位于 config.ymlgroup 节点。插件按配置顺序从上到下匹配,首个满足全部条件的分组立即生效,不再检查后续分组。

条件格式用途
papi:{表达式}解析 PlaceholderAPI 变量并判断表达式结果
permission:{权限节点}玩家必须实际拥有指定权限
nopermission:{权限节点}玩家必须没有指定权限
name:{来源#槽位@物品名}指定槽位中的物品显示名必须完全一致

papi 表达式支持 ><>=<===!=,并可使用 &&|| 组合条件。数值部分支持 +-*/ 和括号;字符串相等比较可以使用单引号或双引号包裹。

权限条件不会因为玩家是 OP 而自动通过。OP 玩家必须在有效权限列表中实际拥有对应节点。

物品名称条件为完整名称匹配,配置中的 & 会转换为 Minecraft 颜色符号。

可匹配的物品来源

来源格式
DragonCore 槽位DragonCore#槽位名
GermPlugin 槽位GermPlugin#槽位名
LyInventoryReload 背包LyInventoryReload#背包ID#类型
YeeJewelry 饰品槽位YeeJewelry#背包ID#槽位ID
原版背包槽位Minecraft#槽位ID
主手Origin#MainHand
副手Origin#OffHand
头盔Origin#Helmet
胸甲Origin#ChestPlate
护腿Origin#Legging
靴子Origin#Boots

配置文件注释还列出了 APInventoryPXRPG 格式,但当前提供的分组匹配代码中没有对应处理分支,不能确认其在此版本可用。

属性加成

启用 attribute-addition.enable 后,插件会在玩家开启杀戮时解析四个 PlaceholderAPI 数字变量。变量解析失败时会在控制台输出玩家名、变量和原始解析值,并按 0 处理。

属性计算方式
范围基础范围 + 基础范围 × 变量值 × 0.01
数量基础数量 + 变量整数部分
攻击间隔基础间隔 ÷ (1 + 变量值 × 0.01)
抗击退基础抗击退 + 变量整数部分

配置中的属性变量必须返回纯数字。范围最终限制在 064,攻击间隔最终最低为 1 tick。near 模式的变量显示和实际单轮目标数量仍为 1

自动开启规则

插件可以在以下事件发生后,延迟检查条件并开启杀戮:

事件开关延迟配置条件列表
玩家进服join-auto-autoattack-enablejoin-auto-autoattack-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 秒。条件列表支持 papipermissionnopermission,所有条件都满足后才会开启。

如果关闭跨世界自动开启,玩家跨世界时会直接停止当前杀戮。玩家死亡和退出服务器时也会停止杀戮。Minecraft 1.12.2 玩家切换到旁观模式时会立即停止,并且旁观模式下无法开启杀戮。

抗击退

配置说明
default-knockback / group.*.knockback当前分组的抗击退数值
strengthen-knockbak-mode通过取消玩家速度事件实现增强抗击退
persistent-knockback玩家进服时启用抗击退,关闭杀戮后不清除

普通模式会修改玩家的原版击退抗性属性。增强模式开启且当前抗击退值大于 0 时,会取消玩家速度变化并将速度设为零,因此可能同时影响技能位移、翻滚或其他插件施加的速度效果。

动作与客户端光环

动作序列

default-animation-sequencegroup.*.animation-sequence 用于设置命中动作。动作按列表顺序循环播放,列表为空时不执行。

延迟项格式为 delay:毫秒。读取到延迟项后,插件会等待指定毫秒数,再处理序列中的下一项。

Minecraft 1.12.2 下,动作播放顺序为:

  1. 已安装 GermPlugin 时,向同世界玩家发送萌芽弯曲动作和模型动作。
  2. 未安装 GermPlugin、但已安装 DragonCore 时,发送龙核玩家动画。
  3. 两者都未安装时,不播放动作。

当前攻击任务仅在 Minecraft 1.12.2 分支中处理动作序列。

光环效果

安装配套 LyAutoAttackMod 后,服务端会在杀戮开启时发送当前范围和光环参数,在真实攻击命中时发送变色消息,在杀戮关闭时发送停止消息。

参数说明
off-color未命中时的颜色
on-color命中后的高亮颜色
line-width光环虚线宽度
offset-y光环距离玩家脚底的高度
alpha透明度参数
hit-hold-ms命中颜色保持时间,单位毫秒
fade-back-ms渐变回普通颜色的时间,单位毫秒

每个分组可以使用 group.*.arua-effect 覆盖默认效果。缺少的字段会回退到 default-arua-effect。配置键中的 arua 是插件当前实际使用的拼写,不能改为 aura

指令

插件没有在 plugin.yml 中声明固定权限节点。管理指令直接检查发送者是否为 OP,玩家开关指令不需要固定权限。

指令使用者说明
/laaOP显示插件指令帮助
/laa check玩家根据当前状态开启或关闭自己的杀戮
/laa reloadOP重载 config.yml 并重新读取全部分组
/laa enable 玩家名OP为在线玩家强制开启杀戮;已开启时不重复执行
/laa disable 玩家名OP为在线玩家强制关闭杀戮;未开启时不重复执行
/laa lock 玩家名OP锁定或解锁在线玩家坐标,目标必须站在地面上

enabledisablelock 支持在线玩家名补全。普通玩家仅会补全 check,OP 会补全全部管理子命令。

PlaceholderAPI 变量

变量标识符为 laa

变量返回内容可用条件
%laa_status%已启动或未启动文本始终可用
%laa_lock%坐标已锁定或未锁定文本始终可用
%laa_mode%最近目标范围目标杀戮已开启
%laa_max%当前目标上限;near 模式固定返回 1杀戮已开启
%laa_knockback%当前抗击退值,例如 1格杀戮已开启
%laa_range%当前索敌范围,例如 5.0x杀戮已开启
%laa_speed%每秒攻击次数,例如 每秒攻击4.0次杀戮已开启

状态文本由以下配置控制:

  • autoattack-enable-placeholer
  • autoattack-disable-placeholer

配置键中的 placeholer 是插件当前实际使用的拼写。请求不存在的变量,或者在杀戮未开启时请求运行参数变量,会返回红色的“错误”文本。

Java API

插件主类通过 getAPI() 提供 LyAutoAttackAPI 实例。

方法用途
enableAttack(Player player)为玩家匹配分组、计算属性并开启自动攻击
disableAttack(Player player)停止任务并清理玩家运行数据
isEnable(Player player)查询玩家是否存在正在运行的自动攻击任务
enableKnockback(Player player)按当前分组和属性加成单独启用抗击退
disableKnockback(Player player)将玩家原版击退抗性重置为 0

外部插件调用开启方法时,如果玩家已经开启,插件会先关闭旧任务,再重新匹配分组和计算参数。

页面导航

页面内容
配置说明config.yml 配置键、分组条件、属性加成、动作和光环参数
指令用法玩家指令、管理指令、执行条件和补全行为
插件变量PlaceholderAPI 变量、返回值和可用状态
常见问题版本、依赖、攻击伤害、条件、动作和客户端效果排查
更新日志文档整理记录