package com.w67clement.mineapi.utils;
import com.w67clement.mineapi.api.ReflectionAPI;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import org.bukkit.util.EulerAngle;
public class MC_Utils
{
public static class EulerAngleUtils
{
public static EulerAngle fromNms(Object vector3f)
{
if (vector3f.getClass().equals(ReflectionAPI.getNmsClass("Vector3f")))
{
Method getX = ReflectionAPI.getMethod(vector3f, "getX", new Class<?>[] {});
Method getY = ReflectionAPI.getMethod(vector3f, "getY", new Class<?>[] {});
Method getZ = ReflectionAPI.getMethod(vector3f, "getZ", new Class<?>[] {});
double x = Math.toRadians((double) ReflectionAPI.invokeMethod(vector3f, getX, new Object[] {}));
double y = Math.toRadians((double) ReflectionAPI.invokeMethod(vector3f, getY, new Object[] {}));
double z = Math.toRadians((double) ReflectionAPI.invokeMethod(vector3f, getZ, new Object[] {}));
return new EulerAngle(x, y, z);
}
return null;
}
public static Object toNms(EulerAngle eulerAngle)
{
Class<?> clazz = ReflectionAPI.getNmsClass("Vector3f");
Constructor<?> constructor = ReflectionAPI.getConstructor(clazz, Float.class, Float.class, Float.class);
return ReflectionAPI.newInstance(constructor, (float) Math.toDegrees(eulerAngle.getX()),
(float) Math.toDegrees(eulerAngle.getY()), (float) Math.toDegrees(eulerAngle.getZ()));
}
}
}