Packet version info now sends a senderIsServer boolean to differentiate between client and server when throwing MismatchedVersionException. Hopefully fixed mod version pattern.

This commit is contained in:
2022-01-17 15:41:14 +00:00
parent e1868ac200
commit de2b214bc7
4 changed files with 13 additions and 9 deletions

View File

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

View File

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

View File

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

View File

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