|
1 |
| -package io.github.ytg1234.packetignore.mixin;public class ClientConnectionMixin { |
| 1 | +package io.github.ytg1234.packetignore.mixin; |
| 2 | + |
| 3 | +import java.util.Random; |
| 4 | + |
| 5 | +import org.spongepowered.asm.mixin.Final; |
| 6 | +import org.spongepowered.asm.mixin.Mixin; |
| 7 | +import org.spongepowered.asm.mixin.Shadow; |
| 8 | +import org.spongepowered.asm.mixin.Unique; |
| 9 | +import org.spongepowered.asm.mixin.injection.At; |
| 10 | +import org.spongepowered.asm.mixin.injection.Redirect; |
| 11 | + |
| 12 | +import net.minecraft.network.ClientConnection; |
| 13 | +import net.minecraft.network.NetworkSide; |
| 14 | +import net.minecraft.network.Packet; |
| 15 | +import net.minecraft.network.listener.PacketListener; |
| 16 | +import net.minecraft.network.packet.c2s.handshake.HandshakeC2SPacket; |
| 17 | +import net.minecraft.network.packet.c2s.login.LoginHelloC2SPacket; |
| 18 | +import net.minecraft.network.packet.c2s.login.LoginKeyC2SPacket; |
| 19 | +import net.minecraft.network.packet.c2s.login.LoginQueryResponseC2SPacket; |
| 20 | +import net.minecraft.network.packet.s2c.login.LoginCompressionS2CPacket; |
| 21 | +import net.minecraft.network.packet.s2c.login.LoginDisconnectS2CPacket; |
| 22 | +import net.minecraft.network.packet.s2c.login.LoginQueryRequestS2CPacket; |
| 23 | +import net.minecraft.network.packet.s2c.login.LoginSuccessS2CPacket; |
| 24 | + |
| 25 | +@Mixin(ClientConnection.class) |
| 26 | +public abstract class ClientConnectionMixin { |
| 27 | + @Shadow @Final private NetworkSide side; |
| 28 | + @Unique |
| 29 | + private Random random = new Random(); |
| 30 | + |
| 31 | + @Redirect(method = "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/Packet;)V", |
| 32 | + at = @At(value = "INVOKE", |
| 33 | + target = "Lnet/minecraft/network/ClientConnection;handlePacket(Lnet/minecraft/network/Packet;Lnet/minecraft/network/listener/PacketListener;)V")) |
| 34 | + private void stuff(Packet<?> packet, PacketListener listener) { |
| 35 | + if (packet instanceof HandshakeC2SPacket || |
| 36 | + packet instanceof LoginHelloC2SPacket || |
| 37 | + packet instanceof LoginKeyC2SPacket || |
| 38 | + packet instanceof LoginQueryResponseC2SPacket) { |
| 39 | + handlePacket(packet, listener); |
| 40 | + System.out.println("Handshake or login received"); |
| 41 | + return; |
| 42 | + } |
| 43 | + if (side == NetworkSide.CLIENTBOUND) { |
| 44 | + handlePacket(packet, listener); |
| 45 | + return; |
| 46 | + } |
| 47 | + if (random.nextBoolean()) handlePacket(packet, listener); |
| 48 | + } |
| 49 | + |
| 50 | + @Shadow |
| 51 | + private static <T extends PacketListener> void handlePacket(Packet<T> packet, PacketListener listener) { |
| 52 | + } |
2 | 53 | }
|
0 commit comments