Получить значения из "под уровня" конфига

  • Автор темы Автор темы ToBlEzZ
  • Дата начала Дата начала

Вложения

  • image_2020-11-24_142512.png
    image_2020-11-24_142512.png
    12,1 КБ · Просмотры: 5
Код:
//Возвращает файл с варпами
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);
P.s в динозаврах нет getObject, просто кастом.
 
Последнее редактирование:
Записывается в ключ "World", а читаем из "world"?
 
Вы пытаетесь прочитать несуществующие ключи. Само собой, getString возвращает null.

В warp исправьте:
Location warp = warpUtils.getWarp(warpName);
на
Location warp = warpUtils.getWarp(key + "." + warpName);
 
Вы пытаетесь прочитать несуществующие ключи. Само собой, getString возвращает null.

В warp исправьте:
Location warp = warpUtils.getWarp(warpName);
на
Location warp = warpUtils.getWarp(key + "." + warpName);
А ведь точно! Я подумал, что цикл с warpName уже просматривает подуровни. Огромнейшее вам спасибо! :good:
 
А ведь точно! Я подумал, что цикл с warpName уже просматривает подуровни. Огромнейшее вам спасибо! :good:
Я параноик, поэтому я бы всё-таки проверку на null прикрутил. Даже если она избыточна.
 
На существование варпа что ли?

protected static Location getWarp(String name){
World world = Bukkit.getWorld(Main.Warps().getString(name + ".world")
if (world != null) {
Location loc = new Location(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;
}

}

Впрочем, решайте сами, как лучше.
 
Назад
Верх