Clean up freeze movement logic

This commit is contained in:
IxPrumxI 2025-01-17 02:25:24 +03:00
parent 01287a37bd
commit aaa2b322ff

View File

@ -41,6 +41,7 @@ import net.minecraft.server.network.ServerConfigurationNetworkHandler;
import net.minecraft.server.network.ServerPlayNetworkHandler; import net.minecraft.server.network.ServerPlayNetworkHandler;
import net.minecraft.server.network.ServerPlayerEntity; import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.util.math.BlockPos;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@ -233,23 +234,16 @@ public class FabricRequiredLinkingModule extends ServerRequireLinkingModule<Fabr
return; return;
} }
double d = ServerPlayNetworkHandler.clampHorizontal(packet.getX(player.getX())); BlockPos from = player.getBlockPos();
double e = ServerPlayNetworkHandler.clampVertical(packet.getY(player.getY())); BlockPos to = new BlockPos((int) packet.getX(player.getX()), (int) packet.getY(player.getY()), (int) packet.getZ(player.getZ()));
double f = ServerPlayNetworkHandler.clampHorizontal(packet.getZ(player.getZ())); if(from.getX() == to.getX() && from.getY() >= to.getY() && from.getZ() == to.getZ()) {
double i = player.getX(); return;
double j = player.getY();
double k = player.getZ();
double l = d - player.networkHandler.lastTickX;
double m = e - player.networkHandler.lastTickY;
double n = f - player.networkHandler.lastTickZ;
// If the player last position is the same. Don't move the player
if (l * l + m * m + n * n > 0.0001) {
player.networkHandler.requestTeleport(i, j, k, player.getYaw(), player.getPitch());
IPlayer iPlayer = instance.discordSRV.playerProvider().player(player);
iPlayer.sendMessage(freezeReason);
} }
player.requestTeleport(from.getX() + 0.5, from.getY(), from.getZ() + 0.5);
IPlayer iPlayer = instance.discordSRV.playerProvider().player(player);
iPlayer.sendMessage(freezeReason);
ci.cancel(); ci.cancel();
} }