From 993c0831982c731638aa87e76a35235c7bc5a107 Mon Sep 17 00:00:00 2001 From: gnembon Date: Tue, 30 Jul 2019 23:01:36 -0300 Subject: [PATCH] antiCheat allows Elytra to deploy when lagging --- ...NetworkHandler_antiCheatDisabledMixin.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/main/java/carpet/mixins/ServerPlayNetworkHandler_antiCheatDisabledMixin.java b/src/main/java/carpet/mixins/ServerPlayNetworkHandler_antiCheatDisabledMixin.java index f3650563..9138fbf1 100644 --- a/src/main/java/carpet/mixins/ServerPlayNetworkHandler_antiCheatDisabledMixin.java +++ b/src/main/java/carpet/mixins/ServerPlayNetworkHandler_antiCheatDisabledMixin.java @@ -1,8 +1,11 @@ package carpet.mixins; import carpet.settings.CarpetSettings; +import net.minecraft.network.ClientConnection; import net.minecraft.server.network.ServerPlayNetworkHandler; import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.util.math.Vec3d; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -19,6 +22,10 @@ public abstract class ServerPlayNetworkHandler_antiCheatDisabledMixin @Shadow protected abstract boolean isServerOwner(); + @Shadow @Final public ClientConnection client; + + @Shadow public ServerPlayerEntity player; + @Inject(method = "tick", at = @At("HEAD")) private void restrictFloatingBits(CallbackInfo ci) { @@ -47,6 +54,28 @@ public abstract class ServerPlayNetworkHandler_antiCheatDisabledMixin return CarpetSettings.antiCheatDisabled || serverPlayerEntity.isInTeleportationState(); } + @Redirect(method = "onClientCommand", at = @At( + value = "INVOKE", + target = "Lnet/minecraft/server/network/ServerPlayerEntity;getVelocity()Lnet/minecraft/util/math/Vec3d;" + )) + private Vec3d getFallingVelocity(ServerPlayerEntity serverPlayerEntity) + { + if (CarpetSettings.antiCheatDisabled) + return new Vec3d(0,-1,0); + return serverPlayerEntity.getVelocity(); + } + + @Redirect(method = "onClientCommand", at = @At( + value = "FIELD", + target = "Lnet/minecraft/server/network/ServerPlayerEntity;onGround:Z" + )) + private boolean getNotOnGround(ServerPlayerEntity serverPlayerEntity) + { + if (CarpetSettings.antiCheatDisabled) + return false; + return serverPlayerEntity.onGround; + } + }