74 lines
2.1 KiB
Java
Executable File
74 lines
2.1 KiB
Java
Executable File
package me.TheBukor.SkStuff.util;
|
|
|
|
import java.lang.reflect.Constructor;
|
|
import java.lang.reflect.Field;
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
public class ReflectionUtils {
|
|
|
|
public static Class<?> getNMSClass(String classString) {
|
|
String version = getVersion();
|
|
String name = "net.minecraft.server." + version + classString;
|
|
Class<?> nmsClass = null;
|
|
try {
|
|
nmsClass = Class.forName(name);
|
|
} catch (ClassNotFoundException ex) {
|
|
Bukkit.getLogger().warning("Unable to get NMS class \'" + name + "\'! You are probably running an unsupported version!");
|
|
return null;
|
|
}
|
|
return nmsClass;
|
|
}
|
|
|
|
public static Class<?> getOBCClass(String classString) {
|
|
String version = Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3] + ".";
|
|
String name = "org.bukkit.craftbukkit." + version + classString;
|
|
Class<?> obcClass = null;
|
|
try {
|
|
obcClass = Class.forName(name);
|
|
} catch (ClassNotFoundException ex) {
|
|
Bukkit.getLogger().warning("Unable to get OBC class \'" + name + "\'! You are probably running an unsupported version!");
|
|
return null;
|
|
}
|
|
return obcClass;
|
|
}
|
|
|
|
public static Object getField(String field, Class<?> clazz, Object object) {
|
|
Field f = null;
|
|
Object obj = null;
|
|
try {
|
|
f = clazz.getDeclaredField(field);
|
|
f.setAccessible(true);
|
|
obj = f.get(object);
|
|
} catch (IllegalAccessException | NoSuchFieldException ex) {
|
|
ex.printStackTrace();
|
|
}
|
|
return obj;
|
|
}
|
|
|
|
public static void setField(String field, Class<?> clazz, Object object, Object toSet) {
|
|
Field f = null;
|
|
try {
|
|
f = clazz.getDeclaredField(field);
|
|
f.setAccessible(true);
|
|
f.set(object, toSet);
|
|
} catch (IllegalAccessException | IllegalArgumentException | NoSuchFieldException ex) {
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
|
|
public static Constructor<?> getConstructor(Class<?> clazz, Class<?> ... params) {
|
|
Constructor<?> constr = null;
|
|
try {
|
|
constr = clazz.getDeclaredConstructor(params);
|
|
constr.setAccessible(true);
|
|
} catch (NoSuchMethodException | SecurityException ex) {
|
|
ex.printStackTrace();
|
|
}
|
|
return constr;
|
|
}
|
|
|
|
public static String getVersion() {
|
|
return Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3] + ".";
|
|
}
|
|
} |