diff --git a/src/main/java/ru/nanit/limbo/connection/ClientConnection.java b/src/main/java/ru/nanit/limbo/connection/ClientConnection.java index 898f0a7..eba80ea 100644 --- a/src/main/java/ru/nanit/limbo/connection/ClientConnection.java +++ b/src/main/java/ru/nanit/limbo/connection/ClientConnection.java @@ -7,7 +7,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInboundHandlerAdapter; import ru.nanit.limbo.LimboConstants; import ru.nanit.limbo.protocol.ByteMessage; -import ru.nanit.limbo.protocol.PreRenderedPacket; +import ru.nanit.limbo.protocol.PreEncodedPacket; import ru.nanit.limbo.protocol.packets.login.*; import ru.nanit.limbo.protocol.packets.play.*; import ru.nanit.limbo.connection.pipeline.PacketDecoder; @@ -34,14 +34,14 @@ import java.util.concurrent.ThreadLocalRandom; public class ClientConnection extends ChannelInboundHandlerAdapter { - private static PreRenderedPacket PACKET_LOGIN_SUCCESS; - private static PreRenderedPacket PACKET_JOIN_GAME; - private static PreRenderedPacket PACKET_PLAYER_ABILITIES; - private static PreRenderedPacket PACKET_PLAYER_INFO; - private static PreRenderedPacket PACKET_DECLARE_COMMANDS; - private static PreRenderedPacket PACKET_PLAYER_POS; - private static PreRenderedPacket PACKET_JOIN_MESSAGE; - private static PreRenderedPacket PACKET_BOSS_BAR; + private static PreEncodedPacket PACKET_LOGIN_SUCCESS; + private static PreEncodedPacket PACKET_JOIN_GAME; + private static PreEncodedPacket PACKET_PLAYER_ABILITIES; + private static PreEncodedPacket PACKET_PLAYER_INFO; + private static PreEncodedPacket PACKET_DECLARE_COMMANDS; + private static PreEncodedPacket PACKET_PLAYER_POS; + private static PreEncodedPacket PACKET_JOIN_MESSAGE; + private static PreEncodedPacket PACKET_BOSS_BAR; private final LimboServer server; private final Channel channel; @@ -318,26 +318,26 @@ public class ClientConnection extends ChannelInboundHandlerAdapter { PacketDeclareCommands declareCommands = new PacketDeclareCommands(); declareCommands.setCommands(Collections.singletonList("limbo")); - PACKET_LOGIN_SUCCESS = PreRenderedPacket.of(loginSuccess); - PACKET_JOIN_GAME = PreRenderedPacket.of(joinGame); - PACKET_PLAYER_ABILITIES = PreRenderedPacket.of(playerAbilities); - PACKET_PLAYER_POS = PreRenderedPacket.of(positionAndLook); - PACKET_PLAYER_INFO = PreRenderedPacket.of(info); - PACKET_DECLARE_COMMANDS = PreRenderedPacket.of(declareCommands); + PACKET_LOGIN_SUCCESS = PreEncodedPacket.of(loginSuccess); + PACKET_JOIN_GAME = PreEncodedPacket.of(joinGame); + PACKET_PLAYER_ABILITIES = PreEncodedPacket.of(playerAbilities); + PACKET_PLAYER_POS = PreEncodedPacket.of(positionAndLook); + PACKET_PLAYER_INFO = PreEncodedPacket.of(info); + PACKET_DECLARE_COMMANDS = PreEncodedPacket.of(declareCommands); if (server.getConfig().isUseJoinMessage()){ PacketChatMessage joinMessage = new PacketChatMessage(); joinMessage.setJsonData(server.getConfig().getJoinMessage()); joinMessage.setPosition(PacketChatMessage.Position.CHAT); joinMessage.setSender(UUID.randomUUID()); - PACKET_JOIN_MESSAGE = PreRenderedPacket.of(joinMessage); + PACKET_JOIN_MESSAGE = PreEncodedPacket.of(joinMessage); } if (server.getConfig().isUseBossBar()){ PacketBossBar bossBar = new PacketBossBar(); bossBar.setBossBar(server.getConfig().getBossBar()); bossBar.setUuid(UUID.randomUUID()); - PACKET_BOSS_BAR = PreRenderedPacket.of(bossBar); + PACKET_BOSS_BAR = PreEncodedPacket.of(bossBar); } } } diff --git a/src/main/java/ru/nanit/limbo/connection/pipeline/PacketEncoder.java b/src/main/java/ru/nanit/limbo/connection/pipeline/PacketEncoder.java index fe958ff..05a3c84 100644 --- a/src/main/java/ru/nanit/limbo/connection/pipeline/PacketEncoder.java +++ b/src/main/java/ru/nanit/limbo/connection/pipeline/PacketEncoder.java @@ -5,7 +5,7 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.MessageToByteEncoder; import ru.nanit.limbo.protocol.ByteMessage; import ru.nanit.limbo.protocol.Packet; -import ru.nanit.limbo.protocol.PreRenderedPacket; +import ru.nanit.limbo.protocol.PreEncodedPacket; import ru.nanit.limbo.protocol.registry.State; import ru.nanit.limbo.util.Logger; @@ -24,8 +24,8 @@ public class PacketEncoder extends MessageToByteEncoder { ByteMessage msg = new ByteMessage(out); int packetId; - if (packet instanceof PreRenderedPacket){ - packetId = registry.getPacketId(((PreRenderedPacket)packet).getWrappedPacket().getClass()); + if (packet instanceof PreEncodedPacket){ + packetId = registry.getPacketId(((PreEncodedPacket)packet).getWrappedPacket().getClass()); } else { packetId = registry.getPacketId(packet.getClass()); } diff --git a/src/main/java/ru/nanit/limbo/protocol/PreEncodedPacket.java b/src/main/java/ru/nanit/limbo/protocol/PreEncodedPacket.java new file mode 100644 index 0000000..1b19487 --- /dev/null +++ b/src/main/java/ru/nanit/limbo/protocol/PreEncodedPacket.java @@ -0,0 +1,32 @@ +package ru.nanit.limbo.protocol; + +public class PreEncodedPacket implements PacketOut { + + private final PacketOut packet; + private byte[] message; + + public PreEncodedPacket(PacketOut packet) { + this.packet = packet; + } + + public PacketOut getWrappedPacket() { + return packet; + } + + public PreEncodedPacket encodePacket() { + ByteMessage encodedMessage = ByteMessage.create(); + packet.encode(encodedMessage); + this.message = encodedMessage.toByteArray(); + encodedMessage.release(); + return this; + } + + @Override + public void encode(ByteMessage msg) { + msg.writeBytes(message); + } + + public static PreEncodedPacket of(PacketOut packet) { + return new PreEncodedPacket(packet).encodePacket(); + } +} diff --git a/src/main/java/ru/nanit/limbo/protocol/PreRenderedPacket.java b/src/main/java/ru/nanit/limbo/protocol/PreRenderedPacket.java deleted file mode 100644 index 493573d..0000000 --- a/src/main/java/ru/nanit/limbo/protocol/PreRenderedPacket.java +++ /dev/null @@ -1,32 +0,0 @@ -package ru.nanit.limbo.protocol; - -public class PreRenderedPacket implements PacketOut { - - private final PacketOut packet; - private byte[] message; - - public PreRenderedPacket(PacketOut packet){ - this.packet = packet; - } - - public PacketOut getWrappedPacket(){ - return packet; - } - - public PreRenderedPacket render(){ - ByteMessage renderedMessage = ByteMessage.create(); - packet.encode(renderedMessage); - this.message = renderedMessage.toByteArray(); - renderedMessage.release(); - return this; - } - - @Override - public void encode(ByteMessage msg) { - msg.writeBytes(message); - } - - public static PreRenderedPacket of(PacketOut packet){ - return new PreRenderedPacket(packet).render(); - } -}