mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-21 19:55:00 +00:00
59 lines
1.8 KiB
Java
59 lines
1.8 KiB
Java
package com.volmit.iris.util;
|
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import java.util.Optional;
|
|
|
|
/**
|
|
* Small reflection class to use CraftBukkit and NMS
|
|
*
|
|
* @author MrMicky
|
|
*/
|
|
public final class FastReflection {
|
|
|
|
public static final String OBC_PACKAGE = "org.bukkit.craftbukkit";
|
|
public static final String NMS_PACKAGE = "net.minecraft.server";
|
|
|
|
public static final String VERSION = Bukkit.getServer().getClass().getPackage().getName().substring(OBC_PACKAGE.length() + 1);
|
|
|
|
private FastReflection() {
|
|
throw new UnsupportedOperationException();
|
|
}
|
|
|
|
public static String nmsClassName(String className) {
|
|
return NMS_PACKAGE + '.' + VERSION + '.' + className;
|
|
}
|
|
|
|
public static Class<?> nmsClass(String className) throws ClassNotFoundException {
|
|
return Class.forName(nmsClassName(className));
|
|
}
|
|
|
|
public static Optional<Class<?>> nmsOptionalClass(String className) {
|
|
return optionalClass(nmsClassName(className));
|
|
}
|
|
|
|
public static String obcClassName(String className) {
|
|
return OBC_PACKAGE + '.' + VERSION + '.' + className;
|
|
}
|
|
|
|
public static Class<?> obcClass(String className) throws ClassNotFoundException {
|
|
return Class.forName(obcClassName(className));
|
|
}
|
|
|
|
public static Optional<Class<?>> obcOptionalClass(String className) {
|
|
return optionalClass(obcClassName(className));
|
|
}
|
|
|
|
public static Optional<Class<?>> optionalClass(String className) {
|
|
try {
|
|
return Optional.of(Class.forName(className));
|
|
} catch (ClassNotFoundException e) {
|
|
return Optional.empty();
|
|
}
|
|
}
|
|
|
|
@SuppressWarnings({"unchecked", "rawtypes"})
|
|
public static Object enumValueOf(Class<?> enumClass, String enumName) {
|
|
return Enum.valueOf((Class<Enum>) enumClass, enumName.toUpperCase());
|
|
}
|
|
} |