Compare commits

4 Commits
4.0.0 ... main

Author SHA1 Message Date
53a2d261ff Upload dependency-reduced-pom.xml via GUI 2026-01-15 12:34:30 +00:00
1dd1f6b541 Update from Git Manager GUI 2026-01-15 13:34:29 +01:00
b87eaae396 Upload pom.xml via GUI 2026-01-15 12:34:28 +00:00
ccf47fbc67 Upload plugin.yml via GUI 2026-01-15 12:34:27 +00:00
3 changed files with 388 additions and 358 deletions

View File

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

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