
io.github.thewebcode.yplugin.networking.MessageOutboundHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of YPlugin Show documentation
Show all versions of YPlugin Show documentation
The Original Y Project by TheWebcode
package io.github.thewebcode.yplugin.networking;
import io.github.thewebcode.yplugin.utils.PacketDataUtil;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOutboundHandlerAdapter;
import io.netty.channel.ChannelPipeline;
import io.netty.handler.codec.MessageToMessageDecoder;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.protocol.game.PacketPlayInCustomPayload;
import net.minecraft.server.level.EntityPlayer;
import net.minecraft.server.network.PlayerConnection;
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftPlayer;
import org.bukkit.entity.Player;
import java.lang.reflect.Field;
import java.util.List;
import java.util.NoSuchElementException;
import java.util.UUID;
public class MessageOutboundHandler extends ChannelOutboundHandlerAdapter {
public static final String NAME = "io.github.thewebcode.y:outbound_handler";
private final Player player;
private final UUID playerUUID;
public MessageOutboundHandler(Player player) {
this.player = player;
this.playerUUID = player.getUniqueId();
attach(player);
}
private void detach(Player player){
try{
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
PlayerConnection connection = entityPlayer.c;
Field field = connection.getClass().getField("h");
NetworkManager networkManager = (NetworkManager) field.get(connection);
ChannelPipeline pipeline = networkManager.m.pipeline();
pipeline.remove(NAME);
} catch (NoSuchFieldException | IllegalAccessException e){
e.printStackTrace();
} catch (NoSuchElementException ignored) {}
}
private void attach(Player player) {
try {
EntityPlayer entityPlayer = ((CraftPlayer) player).getHandle();
PlayerConnection connection = entityPlayer.c;
Field field = connection.getClass().getField("h");
NetworkManager networkManager = (NetworkManager) field.get(connection);
ChannelPipeline pipeline = networkManager.m.pipeline();
detach(player);
pipeline.addAfter("decoder", NAME, new MessageToMessageDecoder() {
@Override
protected void decode(ChannelHandlerContext channelHandlerContext, PacketPlayInCustomPayload packetPlayInCustomPayload, List
© 2015 - 2025 Weber Informatics LLC | Privacy Policy