From 1e4b4389d5549dffd19affc59b14f4a3a398b8c1 Mon Sep 17 00:00:00 2001 From: Nanit Date: Sat, 30 Oct 2021 20:19:28 +0300 Subject: [PATCH] Fixed warning about unsipported version --- .../nanit/limbo/connection/ClientConnection.java | 5 +++-- .../limbo/connection/pipeline/PacketDecoder.java | 1 + .../ru/nanit/limbo/protocol/ByteMessage.java | 2 ++ .../limbo/protocol/packets/PacketHandshake.java | 8 ++++++-- .../ru/nanit/limbo/protocol/registry/State.java | 2 +- .../nanit/limbo/protocol/registry/Version.java | 8 ++++---- src/main/resources/dimension_codec.nbt | Bin 2840 -> 0 bytes 7 files changed, 17 insertions(+), 9 deletions(-) delete mode 100644 src/main/resources/dimension_codec.nbt diff --git a/src/main/java/ru/nanit/limbo/connection/ClientConnection.java b/src/main/java/ru/nanit/limbo/connection/ClientConnection.java index 362f27e..16cfe0f 100644 --- a/src/main/java/ru/nanit/limbo/connection/ClientConnection.java +++ b/src/main/java/ru/nanit/limbo/connection/ClientConnection.java @@ -101,6 +101,7 @@ public class ClientConnection extends ChannelInboundHandlerAdapter { if (packet instanceof PacketHandshake) { PacketHandshake handshake = (PacketHandshake) packet; clientVersion = handshake.getVersion(); + updateStateAndVersion(handshake.getNextState(), clientVersion); Logger.debug("Pinged from %s [%s]", address, clientVersion.toString()); @@ -134,8 +135,8 @@ public class ClientConnection extends ChannelInboundHandlerAdapter { return; } - if (clientVersion.equals(Version.UNDEFINED)) { - disconnectLogin("Incompatible client version"); + if (!clientVersion.isSupported()) { + disconnectLogin("Unsupported client version"); return; } diff --git a/src/main/java/ru/nanit/limbo/connection/pipeline/PacketDecoder.java b/src/main/java/ru/nanit/limbo/connection/pipeline/PacketDecoder.java index 1359dc2..5589121 100644 --- a/src/main/java/ru/nanit/limbo/connection/pipeline/PacketDecoder.java +++ b/src/main/java/ru/nanit/limbo/connection/pipeline/PacketDecoder.java @@ -30,6 +30,7 @@ public class PacketDecoder extends MessageToMessageDecoder { if (packet != null) { try { + Logger.debug("Received packet %s", packet.toString()); packet.decode(msg, version); } catch (Exception e) { Logger.warning("Cannot decode packet 0x%s: %s", Integer.toHexString(packetId), e.getMessage()); diff --git a/src/main/java/ru/nanit/limbo/protocol/ByteMessage.java b/src/main/java/ru/nanit/limbo/protocol/ByteMessage.java index a083704..3805c9b 100644 --- a/src/main/java/ru/nanit/limbo/protocol/ByteMessage.java +++ b/src/main/java/ru/nanit/limbo/protocol/ByteMessage.java @@ -47,6 +47,8 @@ public class ByteMessage extends ByteBuf { } } + buf.readBytes(maxRead); + throw new IllegalArgumentException("Cannot read VarInt"); } diff --git a/src/main/java/ru/nanit/limbo/protocol/packets/PacketHandshake.java b/src/main/java/ru/nanit/limbo/protocol/packets/PacketHandshake.java index 784c362..51721bf 100644 --- a/src/main/java/ru/nanit/limbo/protocol/packets/PacketHandshake.java +++ b/src/main/java/ru/nanit/limbo/protocol/packets/PacketHandshake.java @@ -1,7 +1,6 @@ package ru.nanit.limbo.protocol.packets; import ru.nanit.limbo.protocol.ByteMessage; -import ru.nanit.limbo.protocol.Packet; import ru.nanit.limbo.protocol.PacketIn; import ru.nanit.limbo.protocol.registry.State; import ru.nanit.limbo.protocol.registry.Version; @@ -31,7 +30,12 @@ public class PacketHandshake implements PacketIn { @Override public void decode(ByteMessage msg, Version version) { - this.version = Version.of(msg.readVarInt()); + try { + this.version = Version.of(msg.readVarInt()); + } catch (IllegalArgumentException e) { + this.version = Version.UNDEFINED; + } + this.host = msg.readString(); this.port = msg.readUnsignedShort(); this.nextState = State.getById(msg.readVarInt()); diff --git a/src/main/java/ru/nanit/limbo/protocol/registry/State.java b/src/main/java/ru/nanit/limbo/protocol/registry/State.java index e194bda..5478852 100644 --- a/src/main/java/ru/nanit/limbo/protocol/registry/State.java +++ b/src/main/java/ru/nanit/limbo/protocol/registry/State.java @@ -172,7 +172,7 @@ public enum State { private final Map registry = new HashMap<>(); public PacketRegistry getRegistry(Version version) { - return registry.get(version); + return registry.getOrDefault(version, registry.get(getMin())); } public void register(Supplier packet, Mapping... mappings) { diff --git a/src/main/java/ru/nanit/limbo/protocol/registry/Version.java b/src/main/java/ru/nanit/limbo/protocol/registry/Version.java index 8dde6f9..de6fecc 100644 --- a/src/main/java/ru/nanit/limbo/protocol/registry/Version.java +++ b/src/main/java/ru/nanit/limbo/protocol/registry/Version.java @@ -83,14 +83,14 @@ public enum Version { return this.protocolNumber <= another.protocolNumber; } - public boolean between(Version min, Version max) { - return this.protocolNumber > min.protocolNumber && this.protocolNumber < max.protocolNumber; - } - public boolean fromTo(Version min, Version max) { return this.protocolNumber >= min.protocolNumber && this.protocolNumber <= max.protocolNumber; } + public boolean isSupported() { + return this != UNDEFINED; + } + public static Version getMin() { return V1_8; } diff --git a/src/main/resources/dimension_codec.nbt b/src/main/resources/dimension_codec.nbt deleted file mode 100644 index c38a8569792a187baf26071ab8df3a0a0d536a2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2840 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