package net.minecraft.util;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import java.io.IOException;
import net.minecraft.network.EnumConnectionState;
import net.minecraft.network.EnumPacketDirection;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.PacketBuffer;
import net.minecraft.network.play.server.S0CPacketSpawnPlayer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.MarkerManager;
public class MessageSerializer extends MessageToByteEncoder
{
private static final Logger logger = LogManager.getLogger();
private static final Marker RECEIVED_PACKET_MARKER = MarkerManager.getMarker("PACKET_SENT", NetworkManager.logMarkerPackets);
private final EnumPacketDirection direction;
private static final String __OBFID = "CL_00001253";
public MessageSerializer(EnumPacketDirection direction)
{
this.direction = direction;
}
protected void encode(ChannelHandlerContext p_encode_1_, Packet p_encode_2_, ByteBuf p_encode_3_) throws IOException
{
Integer var4 = ((EnumConnectionState)p_encode_1_.channel().attr(NetworkManager.attrKeyConnectionState).get()).getPacketId(this.direction, p_encode_2_);
if (logger.isDebugEnabled())
{
logger.debug(RECEIVED_PACKET_MARKER, "OUT: [{}:{}] {}", new Object[] {p_encode_1_.channel().attr(NetworkManager.attrKeyConnectionState).get(), var4, p_encode_2_.getClass().getName()});
}
if (var4 == null)
{
throw new IOException("Can\'t serialize unregistered packet");
}
else
{
PacketBuffer var5 = new PacketBuffer(p_encode_3_);
var5.writeVarIntToBuffer(var4.intValue());
try
{
if (p_encode_2_ instanceof S0CPacketSpawnPlayer)
{
p_encode_2_ = p_encode_2_;
}
p_encode_2_.writePacketData(var5);
}
catch (Throwable var7)
{
logger.error(var7);
}
}
}
protected void encode(ChannelHandlerContext p_encode_1_, Object p_encode_2_, ByteBuf p_encode_3_) throws IOException
{
this.encode(p_encode_1_, (Packet)p_encode_2_, p_encode_3_);
}
}