From 35ae072d7903019cf88effda5eb5a9b9b3e734ad Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 26 Aug 2020 20:58:49 +0200 Subject: [PATCH] fix some issues with connecting to a server with a forced version --- .../de/bixilon/minosoft/gui/main/ServerListCell.java | 2 +- .../de/bixilon/minosoft/protocol/network/Connection.java | 9 ++++++++- .../bixilon/minosoft/protocol/protocol/InByteBuffer.java | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java b/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java index 2a62d5842..d6001098f 100644 --- a/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java +++ b/src/main/java/de/bixilon/minosoft/gui/main/ServerListCell.java @@ -102,7 +102,7 @@ public class ServerListCell extends ListCell implements Initializable { icon.setImage(favicon); optionsConnect.setOnAction(e -> { Connection connection = new Connection(Connection.lastConnectionId++, server.getAddress(), new Player(Minosoft.accountList.get(0))); - connection.resolve(ConnectionReasons.CONNECT); + connection.resolve(ConnectionReasons.CONNECT, server.getDesiredVersion()); }); optionsEdit.setOnAction(e -> edit()); diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java b/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java index 625320446..951538516 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java +++ b/src/main/java/de/bixilon/minosoft/protocol/network/Connection.java @@ -82,13 +82,20 @@ public class Connection { network.connect(address); } - public void resolve(ConnectionReasons reason) { + public void resolve(ConnectionReasons reason, int protocolId) { address = addresses.get(0); this.nextReason = reason; Log.info(String.format("Trying to connect to %s", address)); + if (protocolId != -1) { + setVersion(Versions.getVersionById(protocolId)); + } resolve(address); } + public void resolve(ConnectionReasons reason) { + resolve(reason, -1); + } + public void resolve(ServerAddress address) { reason = ConnectionReasons.DNS; network.connect(address); diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java index f3db82a42..e702cae25 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java @@ -385,7 +385,7 @@ public class InByteBuffer { public EntityMetaData.MetaDataHashMap readMetaData() { EntityMetaData.MetaDataHashMap sets = new EntityMetaData.MetaDataHashMap(); - if (protocolId < 47) { + if (protocolId < 48) { byte item = readByte(); while (item != 0x7F) {