У меня есть, я на локал сервере даже сижу и он видит повороты. Мне кажется что расчет неверный просто
package me.deqes.mixin;
import me.deqes.Client;
import me.deqes.event.impl.EventMotion;
import me.deqes.module.impl.combat.Aura;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;
import net.minecraft.client.network.ClientPlayerEntity;
import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket;
import net.minecraft.util.math.MathHelper;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import static me.deqes.util.Wrapper.mc;
@Mixin(ClientPlayerEntity.class)
public abstract class ClientPlayerEntityMixin {
@Shadow
protected abstract void sendSprintingPacket();
@Shadow
protected abstract boolean isCamera();
@Shadow
private double lastX;
@Shadow
private double lastBaseY;
@Shadow
private double lastZ;
@Shadow
private int ticksSinceLastPositionPacketSent;
@Shadow
@FINAL
public ClientPlayNetworkHandler networkHandler;
@Shadow
private boolean lastOnGround;
@Shadow
private boolean lastHorizontalCollision;
@Shadow
private boolean autoJumpEnabled;
@Shadow
@FINAL
protected MinecraftClient client;
@Shadow
private float lastYaw;
@Shadow
private float lastPitch;
/**
*
@Author deqes
*
@Reason vi vse gavno! mi vse gavno! gavno dolzhno govorit gromche!!! MI VSE GOVNO!!!
*/
@Overwrite
private void sendMovementPackets() {
this.sendSprintingPacket();
if (Client.getInstance().getModuleManager().getModule(Aura.class).isToggled()) {
if (this.isCamera()) {
double d = mc.player.getX() - this.lastX;
double e = mc.player.getY() - this.lastBaseY;
double f = mc.player.getZ() - this.lastZ;
double g = Aura.yawToSend - this.lastYaw;
double h = Aura.pitchToSend - this.lastPitch;
++this.ticksSinceLastPositionPacketSent;
boolean bl = MathHelper.squaredMagnitude(d, e, f) > MathHelper.square(2.0E-4) || this.ticksSinceLastPositionPacketSent >= 20;
boolean bl2 = g != (double)0.0F || h != (double)0.0F;
if (bl && bl2) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.Full(mc.player.getX(), mc.player.getY(), mc.player.getZ(), Aura.yawToSend, Aura.pitchToSend, mc.player.isOnGround(), mc.player.horizontalCollision));
} else if (bl) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.isOnGround(), mc.player.horizontalCollision));
} else if (bl2) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.LookAndOnGround(Aura.yawToSend, Aura.pitchToSend, mc.player.isOnGround(), mc.player.horizontalCollision));
} else if (this.lastOnGround != mc.player.isOnGround() || this.lastHorizontalCollision != mc.player.horizontalCollision) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(mc.player.isOnGround(), mc.player.horizontalCollision));
}
Aura.packetsSended = true;
if (bl) {
this.lastX = mc.player.getX();
this.lastBaseY = mc.player.getY();
this.lastZ = mc.player.getZ();
this.ticksSinceLastPositionPacketSent = 0;
}
if (bl2) {
this.lastYaw = Aura.yawToSend;
this.lastPitch = Aura.pitchToSend;
}
this.lastOnGround = mc.player.isOnGround();
this.lastHorizontalCollision = mc.player.horizontalCollision;
this.autoJumpEnabled = this.client.options.getAutoJump().getValue();
}
} else {
if (this.isCamera()) {
double d = mc.player.getX() - this.lastX;
double e = mc.player.getY() - this.lastBaseY;
double f = mc.player.getZ() - this.lastZ;
double g = mc.player.getYaw() - this.lastYaw;
double h = mc.player.getPitch() - this.lastPitch;
++this.ticksSinceLastPositionPacketSent;
boolean bl = MathHelper.squaredMagnitude(d, e, f) > MathHelper.square(2.0E-4) || this.ticksSinceLastPositionPacketSent >= 20;
boolean bl2 = g != (double)0.0F || h != (double)0.0F;
if (bl && bl2) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.Full(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.getYaw(), mc.player.getPitch(), mc.player.isOnGround(), mc.player.horizontalCollision));
} else if (bl) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(mc.player.getX(), mc.player.getY(), mc.player.getZ(), mc.player.isOnGround(), mc.player.horizontalCollision));
} else if (bl2) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.LookAndOnGround(mc.player.getYaw(), mc.player.getPitch(), mc.player.isOnGround(), mc.player.horizontalCollision));
} else if (this.lastOnGround != mc.player.isOnGround() || this.lastHorizontalCollision != mc.player.horizontalCollision) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(mc.player.isOnGround(), mc.player.horizontalCollision));
}
if (bl) {
this.lastX = mc.player.getX();
this.lastBaseY = mc.player.getY();
this.lastZ = mc.player.getZ();
this.ticksSinceLastPositionPacketSent = 0;
}
if (bl2) {
this.lastYaw = mc.player.getYaw();
this.lastPitch = mc.player.getPitch();
}
this.lastOnGround = mc.player.isOnGround();
this.lastHorizontalCollision = mc.player.horizontalCollision;
this.autoJumpEnabled = this.client.options.getAutoJump().getValue();
}
}
}
}