tcr/java/src/game/network/PacketEncoder.java

48 lines
1.4 KiB
Java
Raw Normal View History

2025-03-11 00:23:54 +01:00
package game.network;
import java.io.IOException;
import game.log.Log;
2025-03-16 17:40:47 +01:00
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
2025-03-11 00:23:54 +01:00
public class PacketEncoder extends MessageToByteEncoder<Packet>
{
private final boolean client;
public PacketEncoder(boolean client)
{
this.client = client;
}
protected void encode(ChannelHandlerContext p_encode_1_, Packet p_encode_2_, ByteBuf p_encode_3_) throws IOException, Exception
{
Integer integer = ((PacketRegistry)p_encode_1_.channel().attr(NetConnection.ATTR_STATE).get()).getId(this.client, p_encode_2_);
// if (Log.isTraceEnabled())
// {
// Log.debug("AUS: [" + p_encode_1_.channel().attr(NetConnection.ATTR_STATE).get() + ":" + integer + "] " + p_encode_2_.getClass().getName());
// }
if (integer == null)
{
throw new IOException("Kann nicht registriertes Paket nicht serialisieren");
}
else
{
PacketBuffer packetbuffer = new PacketBuffer(p_encode_3_);
packetbuffer.writeVarIntToBuffer(integer.intValue());
try
{
p_encode_2_.writePacketData(packetbuffer);
}
catch (Throwable throwable)
{
Log.JNI.error(throwable, "Fehler beim Schreiben der Paketdaten");
}
}
}
}