There is any error?
@EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = {Dist.CLIENT})
public class AkuariumHelper {
@SuppressWarnings("resource")
@SubscribeEvent(priority = EventPriority.NORMAL, receiveCanceled = true)
public static void mouseEvent(InputEvent.MouseInputEvent event) {
if (Minecraft.getInstance().level == null || Minecraft.getInstance().screen == null || Minecraft.getInstance().isPaused())
return;
KeyMapping keyAttack = Minecraft.getInstance().options.keyAttack;
if (event.getButton() == keyAttack.getKey().getValue() && event.getAction() == 1 && ForgeMod.REACH_DISTANCE.isPresent())
checkForReachAttack();
}
@SuppressWarnings("unused")
private static HitResult getEntityMouseOverExtended(float reach) {
BlockHitResult blockRayTraceResult = null;
HitResult result = null;
Minecraft mc = Minecraft.getInstance();
Entity viewEntity = mc.crosshairPickEntity;
if (viewEntity != null) {
double d0 = reach;
HitResult rayTrace = viewEntity.pick(d0, 0.0F, false);
Vec3 eyePos = viewEntity.getEyePosition(0.0F);
boolean flag = false;
double d1 = d0;
if (mc.gameMode.hasFarPickRange() && d1 < 6.0D) {
d1 = 6.0D;
d0 = d1;
} else if (d0 > reach) {
flag = true;
}
d1 *= d1;
if (rayTrace != null)
d1 = rayTrace.getLocation().distanceToSqr(eyePos);
Vec3 lookVec = viewEntity.getEyePosition(1.0F);
Vec3 attackVec = eyePos.add(lookVec.x * d0, lookVec.y * d0, lookVec.z * d0);
AABB expBounds = viewEntity.getBoundingBox().expandTowards(lookVec.scale(d0)).inflate(1.0D, 1.0D, 1.0D);
EntityHitResult entityRayTrace = ProjectileUtil.getEntityHitResult(viewEntity, eyePos, attackVec, expBounds, entity ->
(!entity.isSpectator() && entity.canBeCollidedWith()), d1);
if (entityRayTrace != null) {
Vec3 hitVec = entityRayTrace.getLocation();
double d2 = eyePos.distanceToSqr(hitVec);
if (flag && d2 > (reach * reach)) {
blockRayTraceResult = BlockHitResult.miss(hitVec, Direction.getNearest(lookVec.x, lookVec.y, lookVec.z), new BlockPos(hitVec));
} else if (d2 < d1 || blockRayTraceResult == null) {
EntityHitResult entityRayTraceResult = entityRayTrace;
}
} else {
blockRayTraceResult = BlockHitResult.miss(attackVec, Direction.getNearest(lookVec.x, lookVec.y, lookVec.z), new BlockPos(attackVec));
}
}
return (HitResult)blockRayTraceResult;
}
private static void checkForReachAttack() {
Minecraft mc = Minecraft.getInstance();
LocalPlayer clientPlayerEntity = mc.player;
if (clientPlayerEntity == null || clientPlayerEntity.isSpectator())
return;
double reach = (float)clientPlayerEntity.getAttributeValue(ForgeMod.REACH_DISTANCE.get());
if (reach == ForgeMod.REACH_DISTANCE.get().getDefaultValue())
return;
HitResult rayTrace = getEntityMouseOverExtended((float)reach);
if (!(rayTrace instanceof EntityHitResult))
return;
EntityHitResult entityRayTrace = (EntityHitResult)rayTrace;
Entity entityHit = entityRayTrace.getEntity();
if (entityHit != null && entityHit.invulnerableTime == 0 && entityHit != clientPlayerEntity && entityHit != clientPlayerEntity.getControllingPassenger()) {
float velocity = 0.0F;
if (clientPlayerEntity.getControllingPassenger() != null) {
Entity riding = clientPlayerEntity.getControllingPassenger();
Vec3 vec = riding.getDeltaMovement();
velocity = (float)vec.length();
}
PacketHandler.sendPacketToServer(new LongReachAttackPacket(entityHit.getId(), velocity));
}
}
}