110 lines
3.2 KiB
Java
110 lines
3.2 KiB
Java
package me.konsolas.aac.compat.nms;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import me.konsolas.aac.protocol.ProtocolVersion;
|
|
import org.bukkit.Bukkit;
|
|
|
|
public final class MinecraftReflection {
|
|
|
|
public static String craftBukkitPackage = Bukkit.getServer().getClass().getPackage().getName();
|
|
|
|
public static String minecraftPackage = craftBukkitPackage.replace("org.bukkit.craftbukkit", "net.minecraft.server");
|
|
|
|
private static final Map classCache = new HashMap();
|
|
|
|
private MinecraftReflection() {
|
|
throw new AssertionError();
|
|
}
|
|
|
|
private static Class resolveClass(String text) {
|
|
try {
|
|
if (classCache.containsKey(text)) {
|
|
return (Class) classCache.get(text);
|
|
} else {
|
|
Class classValue = Class.forName(text);
|
|
classCache.put(text, classValue);
|
|
return classValue;
|
|
}
|
|
} catch (ClassNotFoundException classNotFoundException) {
|
|
throw new IllegalArgumentException("Class not found: " + text, classNotFoundException);
|
|
}
|
|
}
|
|
|
|
public static Class getNmsClass(String text) {
|
|
String text2 = minecraftPackage + '.' + text;
|
|
String text3 = text2;
|
|
return resolveClass(text3);
|
|
}
|
|
|
|
public static Class getCraftClass(String text) {
|
|
String text2 = craftBukkitPackage + '.' + text;
|
|
String text3 = text2;
|
|
return resolveClass(text3);
|
|
}
|
|
|
|
public static Class getCraftPlayerClass() {
|
|
return getCraftClass((String) "entity.CraftPlayer");
|
|
}
|
|
|
|
public static Class getCraftWorldClass() {
|
|
return getCraftClass((String) "CraftWorld");
|
|
}
|
|
|
|
public static Class getCraftBlockClass() {
|
|
return getCraftClass((String) "block.CraftBlock");
|
|
}
|
|
|
|
public static Class getEntityClass() {
|
|
return getNmsClass((String) "Entity");
|
|
}
|
|
|
|
public static Class getEntityPlayerClass() {
|
|
return getNmsClass((String) "EntityPlayer");
|
|
}
|
|
|
|
public static Class getEntityHumanClass() {
|
|
return getNmsClass((String) "EntityHuman");
|
|
}
|
|
|
|
public static Class getWorldClass() {
|
|
return getNmsClass((String) "World");
|
|
}
|
|
|
|
public static Class getBlockClass() {
|
|
return getNmsClass((String) "Block");
|
|
}
|
|
|
|
public static Class getMovingObjectPositionClass() {
|
|
ProtocolVersion serverVersion = ProtocolVersion.getServerVersion();
|
|
ProtocolVersion version = ProtocolVersion.V1_14;
|
|
Class classValue;
|
|
if (serverVersion.isAtLeast(version)) {
|
|
classValue = getNmsClass((String) "MovingObjectPositionBlock");
|
|
} else {
|
|
classValue = getNmsClass((String) "MovingObjectPosition");
|
|
}
|
|
return classValue;
|
|
}
|
|
|
|
public static Class getBlockPositionClass() {
|
|
return getNmsClass((String) "BlockPosition");
|
|
}
|
|
|
|
public static Class getIBlockDataClass() {
|
|
return getNmsClass((String) "IBlockData");
|
|
}
|
|
|
|
public static Class getIBlockAccessClass() {
|
|
return getNmsClass((String) "IBlockAccess");
|
|
}
|
|
|
|
public static Class getVec3DClass() {
|
|
return getNmsClass((String) "Vec3D");
|
|
}
|
|
|
|
public static Class getVoxelShapeCollisionClass() {
|
|
return getNmsClass((String) "VoxelShapeCollision");
|
|
}
|
|
}
|