Plex-FAWE/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/util/BukkitReflectionUtils.java

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

59 lines
1.9 KiB
Java
Raw Normal View History

package com.boydti.fawe.bukkit.util;
import com.boydti.fawe.util.ReflectionUtils;
import org.bukkit.Bukkit;
import org.bukkit.Server;
2019-06-23 17:27:34 +00:00
import java.lang.reflect.Method;
public class BukkitReflectionUtils {
/**
2020-07-14 02:50:59 +00:00
* Prefix of Bukkit classes.
*/
private static volatile String preClassB = null;
/**
2020-07-14 02:50:59 +00:00
* Prefix of Minecraft classes.
*/
private static volatile String preClassM = null;
/**
2020-07-14 02:50:59 +00:00
* Check server version and class names.
*/
public static void init() {
final Server server = Bukkit.getServer();
final Class<?> bukkitServerClass = server.getClass();
String[] pas = bukkitServerClass.getName().split("\\.");
if (pas.length == 5) {
final String verB = pas[3];
preClassB = "org.bukkit.craftbukkit." + verB;
}
try {
final Method getHandle = bukkitServerClass.getDeclaredMethod("getHandle");
final Object handle = getHandle.invoke(server);
2020-02-14 19:29:08 +00:00
final Class<?> handleServerClass = handle.getClass();
pas = handleServerClass.getName().split("\\.");
if (pas.length == 5) {
final String verM = pas[3];
preClassM = "net.minecraft.server." + verM;
}
} catch (final Exception e) {
2019-06-27 00:14:00 +00:00
e.printStackTrace();
}
}
public static Class<?> getNmsClass(final String name) {
final String className = "net.minecraft.server." + getVersion() + "." + name;
return ReflectionUtils.getClass(className);
}
public static Class<?> getCbClass(final String name) {
final String className = "org.bukkit.craftbukkit." + getVersion() + "." + name;
return ReflectionUtils.getClass(className);
}
public static String getVersion() {
final String packageName = Bukkit.getServer().getClass().getPackage().getName();
return packageName.substring(packageName.lastIndexOf('.') + 1);
}
}