- Баллы
- 76
Если имеете ввиду получение мира из конфига, то это странная ситуация. При создании варпа создаётся поле world: <world>.Мир не может быть пустым.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Если имеете ввиду получение мира из конфига, то это странная ситуация. При создании варпа создаётся поле world: <world>.Мир не может быть пустым.
//Возвращает файл с варпами
public static FileConfiguration Warps(){
return Main.warps;
}
//Сохранение конфига
public static void saveWarpConfig(){
try {
Warps().save(Main.fileWarps);
}
catch (IOException e){
e.printStackTrace();
}
}
//Создаёт варп, при условии, что у игрока уже были варпы
protected static void saveWarp( String nameWarp, String name, Location loc){
Main.Warps().set(name + ".countOfWarps", getCountOfPlayerWarps(name) + 1);
Main.Warps().set(name + "." + nameWarp + ".World", loc.getWorld().getName());
Main.Warps().set(name + "." + nameWarp + ".X", loc.getX());
Main.Warps().set(name + "." + nameWarp + ".Y", loc.getY());
Main.Warps().set(name + "." + nameWarp + ".Z", loc.getZ());
Main.Warps().set(name + "." + nameWarp + ".Yaw", loc.getYaw());
Main.Warps().set(name + "." + nameWarp + ".Pitch", loc.getPitch());
Main.Warps().set(name + "." + nameWarp + ".Private", true);
Main.saveWarpConfig();
}
//Получить Location варпа
protected static Location getWarp(String name){
Location loc = new Location(Bukkit.getWorld(Main.Warps().getString(name + ".world")),
Main.Warps().getDouble(name + ".X"), Main.Warps().getDouble(name + ".Y"), Main.Warps().getDouble(name + ".Z"), Main.Warps().getInt(name + ".Yaw"), Main.Warps().getInt(name + ".Pitch"));
return loc;
}
if (args.length == 1) {
for (String key : Main.Warps().getKeys(false)) {
for (String warpName : Main.Warps().getConfigurationSection(key).getKeys(false)) {
if (warpName.equalsIgnoreCase(arg)) {
Location warp = warpUtils.getWarp(warpName);
p.teleport(warp);
p.sendMessage("Телепортирован");
return true;
}
}
}
}
Хрена ты сложный, локация же и так сериализуется сама.Код://Возвращает файл с варпами public static FileConfiguration Warps(){ return Main.warps; } //Сохранение конфига public static void saveWarpConfig(){ try { Warps().save(Main.fileWarps); } catch (IOException e){ e.printStackTrace(); } }Код://Создаёт варп, при условии, что у игрока уже были варпы protected static void saveWarp( String nameWarp, String name, Location loc){ Main.Warps().set(name + ".countOfWarps", getCountOfPlayerWarps(name) + 1); Main.Warps().set(name + "." + nameWarp + ".World", loc.getWorld().getName()); Main.Warps().set(name + "." + nameWarp + ".X", loc.getX()); Main.Warps().set(name + "." + nameWarp + ".Y", loc.getY()); Main.Warps().set(name + "." + nameWarp + ".Z", loc.getZ()); Main.Warps().set(name + "." + nameWarp + ".Yaw", loc.getYaw()); Main.Warps().set(name + "." + nameWarp + ".Pitch", loc.getPitch()); Main.Warps().set(name + "." + nameWarp + ".Private", true); Main.saveWarpConfig(); } //Получить Location варпа protected static Location getWarp(String name){ Location loc = new Location(Bukkit.getWorld(Main.Warps().getString(name + ".world")), Main.Warps().getDouble(name + ".X"), Main.Warps().getDouble(name + ".Y"), Main.Warps().getDouble(name + ".Z"), Main.Warps().getInt(name + ".Yaw"), Main.Warps().getInt(name + ".Pitch")); return loc; }
Код:if (args.length == 1) { for (String key : Main.Warps().getKeys(false)) { for (String warpName : Main.Warps().getConfigurationSection(key).getKeys(false)) { if (warpName.equalsIgnoreCase(arg)) { Location warp = warpUtils.getWarp(warpName); p.teleport(warp); p.sendMessage("Телепортирован"); return true; } } } }
this.getConfig().set(name, location);
location = this.getConfig().getObject(name, Location.class);
Не знал)локация же и так сериализуется сама
В данной ситуации это не столь важно. Это я уже подправил, однако результат всё тот жеЗаписывается в ключ "World", а читаем из "world"?
А ведь точно! Я подумал, что цикл с warpName уже просматривает подуровни. Огромнейшее вам спасибо!Вы пытаетесь прочитать несуществующие ключи. Само собой, getString возвращает null.
В warp исправьте:
Location warp = warpUtils.getWarp(warpName);
на
Location warp = warpUtils.getWarp(key + "." + warpName);
Я параноик, поэтому я бы всё-таки проверку на null прикрутил. Даже если она избыточна.А ведь точно! Я подумал, что цикл с warpName уже просматривает подуровни. Огромнейшее вам спасибо!![]()
На существование варпа что ли?Я параноик, поэтому я бы всё-таки проверку на null прикрутил. Даже если она избыточна.
На существование варпа что ли?