Update from Git Manager GUI

This commit is contained in:
2026-01-15 13:34:29 +01:00
parent b87eaae396
commit 1dd1f6b541
2 changed files with 279 additions and 249 deletions

View File

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

View File

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