AimAssist
基于carpet 1.20的提前辅助瞄准
适用版本:1.20.x
目录结构
1 | ├── helpers |
基本处理逻辑
输入指令,标记为true
鼠标右键(mouseDown)发出射线追踪获取实体信息,如果为Mob类,添加到目标队列,并且高亮目标,再次右键同一目标,移出队列,取消高亮
鼠标右键(mouseOn),根据目标的坐标和速度,计算弹道,并将准心设置在预设点,
蓄力完毕后会持续跟踪,直到生物被移除目标队列
代码参考
carpet命令
carpet.commands.PlayerCommand
carpet.CarpetSettings
carpet.commands
使用mixin注入代码,检测玩家对于物品弓的使用事件
carpet检测玩家手持物品射线检测获取目标
carpet.script.utils.Tracer.rayTrace
net.minecraft.world.phys.EntityHitResult
net.minecraft.world.entity.Entity.getViewVector
添加到目标队列
// TODO获取目标坐标,速度等信息
net.minecraft.world.entity.getDeltaMovement
net.minecraft.world.entity.spawnSprintParticle
net.minecraft.world.entity.getYRotf
获取轨迹所经过的方块,添加到队列
package net.minecraft.world.entity.projectile.shoot
箭的运动
net.minecraft.world.entity.projectile.AbstractArrow.tick
tick级计算并获取计算后的角度和力度
// TODO方向控制
carpet.helpers.EntityPlayerActionPack.look
net.minecraft.world.entity.ai.control.LookControl.tick
net.minecraft.world.entity.Entity.setRot
火力控制
carpet.helpers.EntityPlayerActionPack.ActionType.USE
net.minecraft.world.item.SnowballItem.use
net.minecraft.world.entity.projectile.Projectile.shoot
net.minecraft.world.entity.projectile.Projectile.shootFromRotation
net.minecraft.world.item.BowItem.releaseUsing
检查弓物品的使用状态
net.minecraft.world.entity.ai.goal.RangedBowAttackGoal.isHoldingBow
图腾检测
net.minecraft.world.entity.LivingEntity.checkTotemDeathProtection
待研究
检测弓的使用*
net.minecraft.world.entity.LivingEntity.releaseUsingItem
结束阶段net.minecraft.world.entity.LivingEntity.updateUsingItem
可能是中期阶段,待验证实体
net.minecraft.world.entity.Entity.getOnPos
脚底方块net.minecraft.world.entity.Entity.getXRot
角度