56 lines
2.0 KiB
Java
56 lines
2.0 KiB
Java
package carpet.mixins;
|
|
|
|
import carpet.settings.CarpetSettings;
|
|
import carpet.helpers.TickSpeed;
|
|
import net.minecraft.server.network.ServerPlayNetworkHandler;
|
|
import net.minecraft.server.network.ServerPlayerEntity;
|
|
import net.minecraft.server.network.packet.PlayerInputC2SPacket;
|
|
import net.minecraft.server.network.packet.PlayerMoveC2SPacket;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
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.Redirect;
|
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
|
|
@Mixin(ServerPlayNetworkHandler.class)
|
|
public class ServerPlayNetworkHandlerMixin
|
|
{
|
|
@Shadow public ServerPlayerEntity player;
|
|
|
|
@Shadow private double lastTickX;
|
|
|
|
@Shadow private double lastTickY;
|
|
|
|
@Inject(method = "onPlayerInput", at = @At(value = "RETURN"))
|
|
private void checkMoves(PlayerInputC2SPacket p, CallbackInfo ci)
|
|
{
|
|
if (p.getSideways() != 0.0F || p.getForward() != 0.0F || p.isJumping() || p.isSneaking())
|
|
{
|
|
TickSpeed.reset_player_active_timeout();
|
|
}
|
|
}
|
|
|
|
@Inject(method = "onPlayerMove", at = @At(
|
|
value = "INVOKE",
|
|
target = "Lnet/minecraft/server/network/ServerPlayerEntity;isSleeping()Z",
|
|
shift = At.Shift.BEFORE
|
|
))
|
|
private void checkMove(PlayerMoveC2SPacket p, CallbackInfo ci)
|
|
{
|
|
if (p.getX(player.x) - lastTickX > 0.0001D || p.getY(player.y) - lastTickY > 0.0001D || p.getY(player.y) - lastTickY > 0.0001D)
|
|
{
|
|
TickSpeed.reset_player_active_timeout();
|
|
}
|
|
}
|
|
|
|
@Redirect(method = "onPlayerMove", at = @At(
|
|
value = "INVOKE",
|
|
target = "Lnet/minecraft/server/network/ServerPlayerEntity;isInTeleportationState()Z"))
|
|
private boolean relaxMoveRestrictions(ServerPlayerEntity serverPlayerEntity)
|
|
{
|
|
return serverPlayerEntity.isInTeleportationState() || CarpetSettings.antiCheatSpeed;
|
|
}
|
|
|
|
}
|