Eae galera, venho continuar essa nova série de tópicos com métodos úteis para plugins de vários gêneros.
São métodos simples porém bem úteis, podem ser ou não para você!
OBS; Caso não sirva, por favor não reclame, como disse, são métodos simples!
Método:
Simplificar o armazenamento de Location's
public static String serializeLocation(Location l) {
String s = "";
s += "@w;" + l.getWorld().getName();
s += ":@x;" + l.getBlockX();
s += ":@y;" + l.getBlockY();
s += ":@z;" + l.getBlockZ();
s += ":@p;" + l.getPitch();
s += ":@ya;" + l.getYaw();
return s;
}
public static Location deserializeLocation(String s) {
try {
Location l = new Location(Bukkit.getWorlds().get(0), 0, 0, 0);
String[] att = s.split(":");
for (String attribute : att) {
String[] split = attribute.split(";");
if (split[0].equalsIgnoreCase("@w"))
l.setWorld(Bukkit.getWorld(split[1]));
if (split[0].equalsIgnoreCase("@x"))
l.setX(Double.parseDouble(split[1]));
if (split[0].equalsIgnoreCase("@y"))
l.setY(Double.parseDouble(split[1]));
if (split[0].equalsIgnoreCase("@z"))
l.setZ(Double.parseDouble(split[1]));
if (split[0].equalsIgnoreCase("@p"))
l.setPitch(Float.parseFloat(split[1]));
if (split[0].equalsIgnoreCase("@ya"))
l.setYaw(Float.parseFloat(split[1]));
}
return l;
} catch (Exception e) {
return null;
}
}
Uso:
Location l=new Location(Bukkit.getWorld("world"), 3, 3, 3);
String s=serializeLocation(l);
// Retornará:
// @w;world:@x;3:@y;3:@z;3:@p;0.0@ya;0.0
Location loc=deserializeLocation(s);
// Retornará o local original