45 lines
1.8 KiB
Java
45 lines
1.8 KiB
Java
/*
|
|
* Copyright (c) Shadow client, 0x150, Saturn5VFive 2022. All rights reserved.
|
|
*/
|
|
|
|
package net.shadow.client.mixin;
|
|
|
|
import io.netty.channel.ChannelHandlerContext;
|
|
import net.minecraft.network.ClientConnection;
|
|
import net.minecraft.network.Packet;
|
|
import net.minecraft.network.listener.PacketListener;
|
|
import net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket;
|
|
import net.shadow.client.feature.module.ModuleRegistry;
|
|
import net.shadow.client.feature.module.impl.misc.AntiPacketKick;
|
|
import net.shadow.client.helper.event.EventType;
|
|
import net.shadow.client.helper.event.Events;
|
|
import net.shadow.client.helper.event.events.PacketEvent;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.injection.At;
|
|
import org.spongepowered.asm.mixin.injection.Inject;
|
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
|
|
@Mixin(ClientConnection.class)
|
|
public class ClientConnectionMixin {
|
|
@Inject(method = "handlePacket", at = @At("HEAD"), cancellable = true)
|
|
private static <T extends PacketListener> void dispatchPacketGet(Packet<T> packet, PacketListener listener, CallbackInfo ci) {
|
|
if (Events.fireEvent(EventType.PACKET_RECEIVE, new PacketEvent(packet))) {
|
|
ci.cancel();
|
|
}
|
|
}
|
|
|
|
@Inject(method = "exceptionCaught", at = @At("HEAD"), cancellable = true)
|
|
public void catchException(ChannelHandlerContext context, Throwable ex, CallbackInfo ci) {
|
|
if (ModuleRegistry.getByClass(AntiPacketKick.class).isEnabled()) {
|
|
ci.cancel();
|
|
}
|
|
}
|
|
|
|
@Inject(method = "send(Lnet/minecraft/network/Packet;)V", cancellable = true, at = @At("HEAD"))
|
|
public void dispatchPacketSend(Packet<?> packet, CallbackInfo ci) {
|
|
if (Events.fireEvent(EventType.PACKET_SEND, new PacketEvent(packet))) {
|
|
ci.cancel();
|
|
}
|
|
}
|
|
|
|
}
|