package org.mctourney.autoreferee.util; import org.bukkit.Location; import org.bukkit.World; public abstract class LocationUtil { public static String toBlockCoords(Location loc) { return String.format("%d,%d,%d", loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); } public static String toBlockCoordsWithYaw(Location loc) { return String.format("%s,%d", toBlockCoords(loc), (int)loc.getYaw()); } public static String toCoords(Location loc) { return String.format("%.3f,%.3f,%.3f", loc.getX(), loc.getY(), loc.getZ()); } public static Location fromCoords(World world, String coords) { try { String[] values = coords.split(","); Location ret = new Location(world, parseDouble(values[0]), parseDouble(values[1]), parseDouble(values[2])); if (values.length > 3) ret.setYaw(Float.parseFloat(values[3])); if (values.length > 4) ret.setPitch(Float.parseFloat(values[4])); return ret; } catch (NumberFormatException e) { return null; } } // simply here for utility private static double parseDouble(String v) { if (v.endsWith("oo") || v.endsWith("inf")) return v.startsWith("-") ? Double.NEGATIVE_INFINITY : Double.POSITIVE_INFINITY; return Double.parseDouble(v); } }