From de2b214bc73d224bbbaa8044fd37b2224baf03ca Mon Sep 17 00:00:00 2001 From: Micle Date: Mon, 17 Jan 2022 15:41:14 +0000 Subject: [PATCH] Packet version info now sends a senderIsServer boolean to differentiate between client and server when throwing MismatchedVersionException. Hopefully fixed mod version pattern. --- .../network/ChangeTargetPacket.java | 2 +- .../network/ChargeTotemPacket.java | 2 +- .../micle/totemofreviving/network/Network.java | 16 ++++++++++------ .../network/ReviveTargetPacket.java | 2 +- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main/java/dev/micle/totemofreviving/network/ChangeTargetPacket.java b/src/main/java/dev/micle/totemofreviving/network/ChangeTargetPacket.java index 4432b93..1c1b1a9 100644 --- a/src/main/java/dev/micle/totemofreviving/network/ChangeTargetPacket.java +++ b/src/main/java/dev/micle/totemofreviving/network/ChangeTargetPacket.java @@ -21,7 +21,7 @@ public class ChangeTargetPacket { } public static void encode(final ChangeTargetPacket packet, final PacketBuffer buffer) { - Network.writeVersionInfo(buffer); + Network.writeVersionInfo(buffer, false); buffer.writeEnum(packet.hand); } diff --git a/src/main/java/dev/micle/totemofreviving/network/ChargeTotemPacket.java b/src/main/java/dev/micle/totemofreviving/network/ChargeTotemPacket.java index 8194758..2a88b48 100644 --- a/src/main/java/dev/micle/totemofreviving/network/ChargeTotemPacket.java +++ b/src/main/java/dev/micle/totemofreviving/network/ChargeTotemPacket.java @@ -19,7 +19,7 @@ public class ChargeTotemPacket { } public static void encode(final ChargeTotemPacket packet, final PacketBuffer buffer) { - Network.writeVersionInfo(buffer); + Network.writeVersionInfo(buffer, false); buffer.writeEnum(packet.hand); } diff --git a/src/main/java/dev/micle/totemofreviving/network/Network.java b/src/main/java/dev/micle/totemofreviving/network/Network.java index 48e4caf..538a132 100644 --- a/src/main/java/dev/micle/totemofreviving/network/Network.java +++ b/src/main/java/dev/micle/totemofreviving/network/Network.java @@ -12,7 +12,7 @@ import java.util.regex.Pattern; public class Network { public static final String VERSION = TotemOfReviving.MOD_ID + "-net-1"; private static final Pattern NET_VERSION_PATTERN = Pattern.compile(TotemOfReviving.MOD_ID + "-net-\\d+$"); - private static final Pattern MOD_VERSION_PATTERN = Pattern.compile("^\\d+\\.\\d+\\.\\d+$"); + private static final Pattern MOD_VERSION_PATTERN = Pattern.compile("Forge-^\\d+\\.\\d+\\.\\d+$-^\\d+\\.\\d+\\.\\d+$"); public static SimpleChannel channel; @@ -41,21 +41,25 @@ public class Network { .add(); } - public static void writeVersionInfo(PacketBuffer buffer) { + public static void writeVersionInfo(PacketBuffer buffer, boolean senderIsServer) { + buffer.writeBoolean(senderIsServer); buffer.writeUtf(VERSION); buffer.writeUtf(TotemOfReviving.getVersion()); } public static void checkVersion(PacketBuffer buffer) { - String serverNetVersion = readNetVersion(buffer); - String serverModVersion = readModVersion(buffer); + boolean senderIsServer = buffer.readBoolean(); + String serverNetVersion = (senderIsServer) ? readNetVersion(buffer) : VERSION; + String serverModVersion = (senderIsServer) ? readModVersion(buffer) : TotemOfReviving.getVersion(); + String clientNetVersion = (senderIsServer) ? VERSION : readNetVersion(buffer); + String clientModVersion = (senderIsServer) ? TotemOfReviving.getVersion() : readModVersion(buffer); - if (!VERSION.equals(serverNetVersion) || !TotemOfReviving.getVersion().equals(serverModVersion)) { + if (!serverNetVersion.equals(clientNetVersion) || !serverModVersion.equals(clientModVersion)) { throw new MismatchedVersionException( String.format("The server and client are running different versions of [Micle's Totem of Reviving]." + "Try updating this mod on either the client and or the server." + "Client version is %s (%s). Server version is %s (%s)", - TotemOfReviving.getVersion(), VERSION, + clientModVersion, clientNetVersion, serverModVersion, serverNetVersion) ); } diff --git a/src/main/java/dev/micle/totemofreviving/network/ReviveTargetPacket.java b/src/main/java/dev/micle/totemofreviving/network/ReviveTargetPacket.java index b7e0c35..f998eb7 100644 --- a/src/main/java/dev/micle/totemofreviving/network/ReviveTargetPacket.java +++ b/src/main/java/dev/micle/totemofreviving/network/ReviveTargetPacket.java @@ -24,7 +24,7 @@ public class ReviveTargetPacket { } public static void encode(final ReviveTargetPacket packet, final PacketBuffer buffer) { - Network.writeVersionInfo(buffer); + Network.writeVersionInfo(buffer, false); buffer.writeEnum(packet.hand); }