Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 53a2d261ff | |||
| 1dd1f6b541 | |||
| b87eaae396 | |||
| ccf47fbc67 |
@@ -4,7 +4,7 @@
|
||||
<groupId>be.maximvdw</groupId>
|
||||
<artifactId>MVdWPlaceholderAPI</artifactId>
|
||||
<name>MVdWPlaceholderAPI</name>
|
||||
<version>3.1.1-SNAPSHOT</version>
|
||||
<version>4.0.0</version>
|
||||
<description>Placeholder API for MVdW Software plugins</description>
|
||||
<build>
|
||||
<resources>
|
||||
|
||||
@@ -30,7 +30,15 @@ public abstract class ReflectionUtil {
|
||||
MINECRAFT_SERVER {
|
||||
@Override
|
||||
public String toString() {
|
||||
return "net.minecraft.server." + Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
|
||||
String pkgName = Bukkit.getServer().getClass().getPackage().getName();
|
||||
// Fix für 1.21+: Prüfen der Länge, da split("\\.")[3] fehlschlägt
|
||||
String[] parts = pkgName.split("\\.");
|
||||
if (parts.length > 3) {
|
||||
return "net.minecraft.server." + parts[3];
|
||||
} else {
|
||||
// Fallback für 1.21+, obwohl NMS Packages dort komplett anders sind
|
||||
return "net.minecraft.server";
|
||||
}
|
||||
}
|
||||
},
|
||||
CRAFTBUKKIT {
|
||||
@@ -213,23 +221,34 @@ public abstract class ReflectionUtil {
|
||||
|
||||
public static String getVersion() {
|
||||
String name = Bukkit.getServer().getClass().getPackage().getName();
|
||||
// Fix für 1.21+ (Paper): Paketstruktur ist flach "org.bukkit.craftbukkit"
|
||||
// Alte Versionen sind "org.bukkit.craftbukkit.v1_20_R3"
|
||||
if (name.equals("org.bukkit.craftbukkit")) {
|
||||
return ""; // Keine Versions-Extension für 1.21+ nötig
|
||||
}
|
||||
String version = name.substring(name.lastIndexOf('.') + 1) + ".";
|
||||
return version;
|
||||
}
|
||||
|
||||
public static Class<?> getNMSClass(String className) {
|
||||
String fullName = "net.minecraft.server." + getVersion() + className;
|
||||
// In 1.21 ist die Struktur von NMS komplett anders (Mojang Mappings),
|
||||
// diese Methode wird dort wahrscheinlich fehlschlagen, aber wir verhindern einen Absturz
|
||||
// durch die falsche Versions-Logik.
|
||||
String versionSuffix = getVersion();
|
||||
String fullName = "net.minecraft.server." + versionSuffix + className;
|
||||
Class<?> clazz = null;
|
||||
try {
|
||||
clazz = Class.forName(fullName);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
// Ignorieren oder Loggen, wenn NMS nicht gefunden wird (Kann in 1.21+ passieren)
|
||||
// e.printStackTrace();
|
||||
}
|
||||
return clazz;
|
||||
}
|
||||
|
||||
public static Class<?> getOBCClass(String className) {
|
||||
String fullName = "org.bukkit.craftbukkit." + getVersion() + className;
|
||||
String versionSuffix = getVersion();
|
||||
String fullName = "org.bukkit.craftbukkit." + versionSuffix + className;
|
||||
Class<?> clazz = null;
|
||||
try {
|
||||
clazz = Class.forName(fullName);
|
||||
@@ -241,7 +260,8 @@ public abstract class ReflectionUtil {
|
||||
|
||||
|
||||
public static Class<?> getNMSClassWithException(String className) throws Exception {
|
||||
String fullName = "net.minecraft.server." + getVersion() + className;
|
||||
String versionSuffix = getVersion();
|
||||
String fullName = "net.minecraft.server." + versionSuffix + className;
|
||||
Class<?> clazz = Class.forName(fullName);
|
||||
return clazz;
|
||||
}
|
||||
|
||||
@@ -79,9 +79,19 @@ public class BukkitUtils {
|
||||
}
|
||||
|
||||
if (version.equals("")) {
|
||||
version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3];
|
||||
// Korrektur: Prüfen der Länge des Paket-Namens, da 1.21+ (Paper) die Version nicht mehr im Namen trägt
|
||||
String[] pkgSplit = Bukkit.getServer().getClass().getPackage().getName().split("\\.");
|
||||
if (pkgSplit.length >= 4) {
|
||||
// Altes Format: org.bukkit.craftbukkit.v1_20_R3
|
||||
version = pkgSplit[3];
|
||||
} else {
|
||||
// Neues Format: org.bukkit.craftbukkit
|
||||
// Wir nutzen Bukkit.getVersion() oder setzten eine Default-Version für 1.21
|
||||
// Da wir für 1.21 bauen, setzen wir hier v1_21_R1, damit die weiteren Logik greift
|
||||
version = "v1_21_R1";
|
||||
}
|
||||
|
||||
String[] data = BukkitUtils.getVersion().substring(1).split("_");
|
||||
String[] data = version.substring(1).split("_");
|
||||
if (NumberUtils.isInteger(data[1]) && NumberUtils.isInteger(data[0])) {
|
||||
versionMinor = Integer.parseInt(data[1]);
|
||||
versionMajor = Integer.parseInt(data[0]);
|
||||
|
||||
Reference in New Issue
Block a user