Skip to content

Commit

Permalink
Add more precise data version for newer versions
Browse files Browse the repository at this point in the history
  • Loading branch information
Rubenicos committed Apr 30, 2024
1 parent 15f359b commit 7586c7e
Showing 1 changed file with 17 additions and 10 deletions.
27 changes: 17 additions & 10 deletions src/main/java/com/saicone/rtag/util/ServerInstance.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,18 +99,14 @@ public class ServerInstance {
}
FULL_VERSION = Integer.parseInt(String.join("", split));

DATA_VERSION = dataVersion(FULL_VERSION);
if (MAJOR_VERSION >= 13) {
DATA_VERSION = getDataVersion(serverPackage);
} else {
DATA_VERSION = dataVersion(FULL_VERSION);
}
} else {
// CraftBukkit without relocation detected, let's get data version first (only for +1.13 servers)
int data = Integer.MAX_VALUE;
try {
final Class<?> magicNumbersClass = Class.forName(serverPackage + ".util.CraftMagicNumbers");
final Object craftMagicNumbers = magicNumbersClass.getDeclaredField("INSTANCE").get(null);
data = (int) magicNumbersClass.getDeclaredMethod("getDataVersion").invoke(craftMagicNumbers);
} catch (Throwable t) {
t.printStackTrace();
}
DATA_VERSION = data;
DATA_VERSION = getDataVersion(serverPackage);

// Get all version values using data version
PACKAGE_VERSION = version(DATA_VERSION);
Expand All @@ -127,6 +123,17 @@ public class ServerInstance {
ServerInstance() {
}

private static int getDataVersion(String serverPackage) {
try {
final Class<?> magicNumbersClass = Class.forName(serverPackage + ".util.CraftMagicNumbers");
final Object craftMagicNumbers = magicNumbersClass.getDeclaredField("INSTANCE").get(null);
return (int) magicNumbersClass.getDeclaredMethod("getDataVersion").invoke(craftMagicNumbers);
} catch (Throwable t) {
t.printStackTrace();
return Integer.MAX_VALUE;
}
}

/**
* Server releases subclass with versions that introduces major changes.
*/
Expand Down

0 comments on commit 7586c7e

Please sign in to comment.