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); }