- Баллы
- 76
- Имя в Minecraft
- Qamulex
Может кому понадобится?
Способ применения:
Как это будет выглядеть в конфиге? Пожалуйста:
Дополнительные методы для отдельного превращения локаций в String и обратно.
Пригодится для сравнения локаций: if(strLocation1.equals(strLocation2))
Это самые рабочие(если подумать) методы, которые не проверялись.
Значения могут быть и не только 281,83,392, но и с точностью до десятичных(кроме мира, конечно): world,281.281235,83.289,392.9281884
Возможно, есть свои методы, которые есть в ядре, но я такие не видел.
Java:
// Запись локации в конфигурацию
public static void writeLocationToConfig(String path, Location location){
String x = String.valueOf(location.getX());
String y = String.valueOf(location.getY());
String z = String.valueOf(location.getZ());
String world = location.getWorld().getName();
String toConfig = world+","+x+","+y+","+z;
plugin.getConfig().set(path, toConfig);
}
// Получение локации из конфига
public static Location getLocationFromConfig(String path){
try {
String[] locationString = plugin.getConfig().getString(path).split(",");
World world = Bukkit.getWorld(locationString[0]);
double x = Double.valueOf(locationString[1]);
double y = Double.valueOf(locationString[2]);
double z = Double.valueOf(locationString[3]);
return new Location(world, x, y, z);
} catch (Exception exception) {
return null;
}
}
Java:
Location playerLocation = player.getLocation();
writeLocationToConfig("path.to.player.location", playerLocation);
// чё то там пробелы, всякая другая фигня ....
// ....
Location savedPlayerLocation = getLocationFromConfig("path.to.player.location");
// дальнейшие манипуляции....
YAML:
path:
to:
player:
location: world,231,46,837
Пригодится для сравнения локаций: if(strLocation1.equals(strLocation2))
Java:
// Превратить Location в String
// Пример вывода: world,281,83,392
public static String locationAsString(Location location){
return location.getWorld().getName() + ","
+ location.getX() + ","
+ location.getY() + ","
+ location.getZ();
}
// Превратить String в Location
public static Location stringAsLocation(String locationString){
String[] _locationString = locationString.split(",");
World world = Bukkit.getWorld(_locationString[0]);
double x = Double.valueOf(_locationString[1]);
double y = Double.valueOf(_locationString[2]);
double z = Double.valueOf(_locationString[3]);
return new Location(world, x, y, z);
}
Значения могут быть и не только 281,83,392, но и с точностью до десятичных(кроме мира, конечно): world,281.281235,83.289,392.9281884
Возможно, есть свои методы, которые есть в ядре, но я такие не видел.
Последнее редактирование: