25
25
26
26
import com .google .common .primitives .Ints ;
27
27
import org .bukkit .Bukkit ;
28
- import org .bukkit .OfflinePlayer ;
29
28
import org .jetbrains .annotations .NotNull ;
30
29
31
- import java .util .List ;
32
30
import java .util .regex .Matcher ;
33
31
import java .util .regex .Pattern ;
34
32
37
35
*/
38
36
public final class VersionHelper {
39
37
40
- public static final String NMS_VERSION = getNmsVersion ();
38
+ private static final String CRAFTBUKKIT_PACKAGE = Bukkit . getServer (). getClass (). getPackage (). getName ();
41
39
42
40
private static final int V1_17 = 1_17_0 ;
43
41
44
42
private static final int CURRENT_VERSION = getCurrentVersion ();
45
43
46
44
private static final boolean IS_PAPER = checkPaper ();
47
45
46
+ public static final String MINECRAFT_VERSION = getMinecraftVersion ();
48
47
public static final boolean IS_1_17_OR_HIGHER = CURRENT_VERSION >= V1_17 ;
49
48
50
49
/**
@@ -73,7 +72,7 @@ private static boolean checkPaper() {
73
72
*/
74
73
private static int getCurrentVersion () {
75
74
// No need to cache since will only run once
76
- final Matcher matcher = Pattern .compile ("(?<version>\\ d+\\ .\\ d+)(?<patch>\\ .\\ d+)?" ).matcher (Bukkit . getBukkitVersion () );
75
+ final Matcher matcher = Pattern .compile ("(?<version>\\ d+\\ .\\ d+)(?<patch>\\ .\\ d+)?" ).matcher (MINECRAFT_VERSION );
77
76
78
77
final StringBuilder stringBuilder = new StringBuilder ();
79
78
if (matcher .find ()) {
@@ -92,13 +91,23 @@ private static int getCurrentVersion() {
92
91
return version ;
93
92
}
94
93
95
- private static String getNmsVersion () {
94
+ private static String getMinecraftVersion () {
95
+ try {
96
+ // Paper method from 2020 - returns the version like 1.20.1
97
+ return Bukkit .getMinecraftVersion ();
98
+ } catch (NoSuchMethodError ignored ) {
99
+ // The version is formatted as 1.20.1-R0.1-SNAPSHOT
100
+ return Bukkit .getBukkitVersion ().split ("-" )[0 ];
101
+ }
102
+ }
103
+
104
+ public static String getNmsVersion () {
96
105
final String version = Bukkit .getServer ().getClass ().getPackage ().getName ();
97
106
return version .substring (version .lastIndexOf ('.' ) + 1 );
98
107
}
99
108
100
109
public static Class <?> craftClass (@ NotNull final String name ) throws ClassNotFoundException {
101
- return Class .forName ("org.bukkit.craftbukkit." + NMS_VERSION + "." + name );
110
+ return Class .forName (CRAFTBUKKIT_PACKAGE + "." + name );
102
111
}
103
112
104
113
}
0 commit comments