This repository has been archived on 2023-04-08. You can view files and clone it, but cannot push or open issues/pull-requests.
minecraft-vanilla-tweaks/src/main/java/nl/kallestruik/vanillatweaks/fakeplayer/FakePlayerConnection.java

51 lines
1.4 KiB
Java

package nl.kallestruik.vanillatweaks.fakeplayer;
import net.minecraft.server.v1_16_R2.*;
import nl.kallestruik.vanillatweaks.util.ReflectionUtil;
import java.lang.reflect.Field;
public class FakePlayerConnection extends PlayerConnection {
public FakePlayerConnection(MinecraftServer minecraftserver, NetworkManager networkmanager, EntityPlayer entityplayer) {
super(minecraftserver, networkmanager, entityplayer);
}
@Override
public void tick() {
super.tick();
}
@Override
public void sendPacket(final Packet<?> packet) {
if (packet instanceof PacketPlayOutKeepAlive) {
PacketPlayOutKeepAlive ping = (PacketPlayOutKeepAlive) packet;
PacketPlayInKeepAlive pong = new PacketPlayInKeepAlive();
try {
Field pingId = ReflectionUtil.getField(PacketPlayOutKeepAlive.class, "a");
Field pongId = ReflectionUtil.getField(PacketPlayInKeepAlive.class, "a");
pingId.setAccessible(true);
pongId.setAccessible(true);
pongId.set(pong, pingId.get(ping));
} catch (Exception e) {
e.printStackTrace();
}
this.a(pong);
}
}
@Override
public void disconnect(String message) {
player.killEntity();
}
@Override
public void a(IChatBaseComponent text_1) {
super.a(text_1);
((FakeConnection) this.a()).open = false;
}
}