package com.bergerkiller.bukkit.common.reflection.classes; import org.bukkit.util.Vector; import com.bergerkiller.bukkit.common.bases.IntVector2; import com.bergerkiller.bukkit.common.bases.IntVector3; import com.bergerkiller.bukkit.common.internal.CommonNMS; import net.minecraft.server.ChunkCoordIntPair; import net.minecraft.server.ChunkCoordinates; import net.minecraft.server.ChunkPosition; import net.minecraft.server.Vec3D; /** * All NMS Vector related classes can be used here. * ChunkCoordIntPair, ChunkCoordinates, ChunkPosition and Vec3D are supported. */ public class VectorRef { public static Object newVec(double x, double y, double z) { return CommonNMS.newVec3D(x, y, z); } public static Vector getVec(Object vec3D) { Vec3D vec = (Vec3D) vec3D; return new Vector(vec.a, vec.b, vec.c); } public static double getVecX(Object vec3D) { return ((Vec3D) vec3D).a; } public static double getVecY(Object vec3D) { return ((Vec3D) vec3D).b; } public static double getVecZ(Object vec3D) { return ((Vec3D) vec3D).c; } public static boolean isVec(Object vec3D) { return vec3D instanceof Vec3D; } public static Object newPair(int x, int z) { return new ChunkCoordIntPair(x, z); } public static IntVector2 getPair(Object chunkCoordIntPair) { ChunkCoordIntPair pair = (ChunkCoordIntPair) chunkCoordIntPair; return new IntVector2(pair.x, pair.z); } public static int getPairX(Object chunkCoordIntPair) { return ((ChunkCoordIntPair) chunkCoordIntPair).x; } public static int getPairZ(Object chunkCoordIntPair) { return ((ChunkCoordIntPair) chunkCoordIntPair).z; } public static boolean isPair(Object chunkCoordIntPair) { return chunkCoordIntPair instanceof ChunkCoordIntPair; } public static Object newCoord(int x, int y, int z) { return new ChunkCoordinates(x, y, z); } public static IntVector3 getCoord(Object chunkCoordinates) { ChunkCoordinates coord = (ChunkCoordinates) chunkCoordinates; return new IntVector3(coord.x, coord.y, coord.z); } public static int getCoordX(Object chunkCoordinates) { return ((ChunkCoordinates) chunkCoordinates).x; } public static int getCoordY(Object chunkCoordinates) { return ((ChunkCoordinates) chunkCoordinates).y; } public static int getCoordZ(Object chunkCoordinates) { return ((ChunkCoordinates) chunkCoordinates).z; } public static boolean isCoord(Object chunkCoordinates) { return chunkCoordinates instanceof ChunkCoordinates; } public static Object newPosition(int x, int y, int z) { return new ChunkPosition(x, y, z); } public static IntVector3 getPosition(Object chunkPosition) { ChunkPosition position = (ChunkPosition) chunkPosition; return new IntVector3(position.x, position.y, position.z); } public static int getPositionX(Object chunkPosition) { return ((ChunkPosition) chunkPosition).x; } public static int getPositionY(Object chunkPosition) { return ((ChunkPosition) chunkPosition).y; } public static int getPositionZ(Object chunkPosition) { return ((ChunkPosition) chunkPosition).z; } public static boolean isPosition(Object chunkPosition) { return chunkPosition instanceof ChunkPosition; } }