@@ -0,0 +1,1577 @@
+package com.elmakers.mine.bukkit.utility;%0A%0Apublic class Mercator %7B%0A    final private static double R_MAJOR = 6378137.0;%0A    final private static double R_MINOR = 6356752.3142;%0A%0A    public static double%5B%5D merc(double x, double y) %7B%0A        return new double%5B%5D %7BmercX(x), mercY(y)%7D;%0A    %7D%0A%0A    public static double  mercX(double lon) %7B%0A        return R_MAJOR * Math.toRadians(lon);%0A    %7D%0A%0A    public static double mercY(double lat) %7B%0A        if (lat %3E 89.5) %7B%0A            lat = 89.5;%0A        %7D%0A        if (lat %3C -89.5) %7B%0A            lat = -89.5;%0A        %7D%0A        double temp = R_MINOR / R_MAJOR;%0A        double es = 1.0 - (temp * temp);%0A        double eccent = Math.sqrt(es);%0A        double phi = Math.toRadians(lat);%0A        double sinphi = Math.sin(phi);%0A        double con = eccent * sinphi;%0A        double com = 0.5 * eccent;%0A        con = Math.pow(((1.0-con)/(1.0+con)), com);%0A        double ts = Math.tan(0.5 * ((Math.PI*0.5) - phi))/con;%0A        double y = 0 - R_MAJOR * Math.log(ts);%0A        return y;%0A    %7D%0A%0A    public static double y2lat(double aY) %7B%0A        return Math.toDegrees(2* Math.atan(Math.exp(Math.toRadians(aY))) - Math.PI/2);%0A    %7D%0A%0A    public static double lat2y(double aLat) %7B%0A        return Math.toDegrees(Math.log(Math.tan(Math.PI/4+Math.toRadians(aLat)/2)));%0A    %7D%0A%0A    public static double x2lon(double aX) %7B%0A        return Math.toDegrees(2 * Math.atan(Math.exp(Math.toRadians(aX))) - Math.PI / 2);%0A    %7D%0A%0A    public static double lon2x(double aLon) %7B%0A        return Math.toDegrees(Math.log(Math.tan(Math.PI / 4 + Math.toRadians(aLon) / 2)));%0A    %7D%0A%7D

Add Mercator projection utility.