Use direct buffer for framed packets

This commit is contained in:
themode 2021-03-20 11:59:02 +01:00
parent a9a0a672f0
commit cd273b4d99
2 changed files with 11 additions and 4 deletions

View File

@ -1,7 +1,6 @@
package net.minestom.server.network.player;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.Channel;
import io.netty.channel.ChannelFuture;
import io.netty.channel.socket.SocketChannel;
@ -153,10 +152,13 @@ public class NettyPlayerConnection extends PlayerConnection {
write(new FramedPacket(timedBuffer.getBuffer()));
}
} else
} else {
write(serverPacket);
} else
}
} else {
// Player is probably not logged yet
writeAndFlush(serverPacket);
}
}
}

View File

@ -49,7 +49,7 @@ public final class PacketUtils {
// Send grouped packet...
final boolean success = PACKET_LISTENER_MANAGER.processServerPacket(packet, players);
if (success) {
final ByteBuf finalBuffer = createFramedPacket(packet, false);
final ByteBuf finalBuffer = createFramedPacket(packet, true);
final FramedPacket framedPacket = new FramedPacket(finalBuffer);
// Send packet to all players
@ -62,6 +62,8 @@ public final class PacketUtils {
if (playerValidator != null && !playerValidator.isValid(player))
continue;
finalBuffer.retain();
final PlayerConnection playerConnection = player.getPlayerConnection();
if (playerConnection instanceof NettyPlayerConnection) {
final NettyPlayerConnection nettyPlayerConnection = (NettyPlayerConnection) playerConnection;
@ -69,7 +71,10 @@ public final class PacketUtils {
} else {
playerConnection.sendPacket(packet);
}
finalBuffer.release();
}
finalBuffer.release(); // Release last reference
}
} else {
// Write the same packet for each individual players