Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Опять не работает конфиг. (set)

Discussion in 'Разработка плагинов для новичков' started by EnderBro3D, Nov 29, 2016.

Thread Status:
Not open for further replies.
  1. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    EnderBro3D
    Дело в том что опять не работает конфиг, теперь проверял через
    Code:
    if(config == null) {
    //Тут код
    return false;
    }
    P.S В методе onCommand
    проходит проверку, конфиг не null.
    Но, когда я пишу /atl (adminToLoc) create <locName> (например 1)
    то пишет что локация создалась, кто не понял это плагин для телепортации на локацию (как /warp)
    и в итоге у меня после /toLoc <locName> (например опять-же 1) выдаёт ошибку
    если написать /toLoc <несуществующаяЛокация>, то напишет: этой локации нету
    список локаций... и в списке нету локации которую мы ранее создали.
    Полный код http://pastebin.com/acSwjBgK
    P.S Я новичёк в создании плагинов, если я сильно накосячил - скажите где.
     
  2. Хостинг MineCraft
    <
  3. IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    IcedwinterZ
    На условие посмотри, если конфиг нулл то у тебя выполняется код сделай условие такое config != null
     
  4. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    EnderBro3D
    Код который выполняется:

    Code:
                    if(config == null) {
                        s.sendMessage(">> \u00a7cОшибка с конфигурацией, config = null");
                        return false;
                    }
     
  5. IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    IcedwinterZ
    Тфу блин :D[DOUBLEPOST=1480439386,1480439352][/DOUBLEPOST]В консоли ошибку скинь
     
  6. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    EnderBro3D
    Окей, вот: http://pastebin.com/RPrkvshr[DOUBLEPOST=1480439537,1480439496][/DOUBLEPOST]
    Code:
                double x = config.getDouble("Locations." + args[0] + ".x");
                int y = config.getInt("Locations." + args[0] + ".y");
                double z = config.getDouble("Locations." + args[0] + ".z");
                World world = Bukkit.getServer().getWorld(config.getString("Locations." + args[0] + ".world"));
                Location loc = new Location(world, x, y, z);
                Player sender = (Player) s;
                sender.teleport(loc); //82
    [DOUBLEPOST=1480439573][/DOUBLEPOST]Как я понял, после создания локация не записывается, и взять координату из конфига не возможно
     
  7. IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    IcedwinterZ
    Проверяй именно кординату в конфиге, после ввода команды
     
  8. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    EnderBro3D
    Прости но я говорю что я новичёк, как проверять? config.<что тут?>[DOUBLEPOST=1480440602,1480440261][/DOUBLEPOST]config.isConfigurationSection()?
    config.isSet()?
     
  9. IcedwinterZ

    IcedwinterZ Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    IcedwinterZ
    Проверяй строку которая тебе нужна на нулл
     
  10. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    EnderBro3D
    Code:
                double x = config.getDouble("Locations." + args[0] + ".x");
                double y = config.getDouble("Locations." + args[0] + ".y");
                double z = config.getDouble("Locations." + args[0] + ".z");
                World world = Bukkit.getServer().getWorld(config.getString("Locations." + args[0] + ".world"));
                if(x == 0 || y == 0 || z == 0 || world == null) {
                   
                }
    ?[DOUBLEPOST=1480441684,1480441444][/DOUBLEPOST]Окей, сделал так, выводит 2016-11-29_22.46.35.png
     
  11. Fenix78563

    Fenix78563 Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    А сохранить конфиг после занесения туда новых данных не судьба?

    plugin.getConfig().save(путь до файла);
     
  12. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    Он же в хеше, не обязательно сейвить в файл на каждом ходу.
     
  13. Fenix78563

    Fenix78563 Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    Не факт. До тех пор пока я не угнался за оптимизацией, у меня файлы погружались в требуемых мне событиях а не в onEnable. Так что кто его знает
     
  14. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    EnderBro3D
    Проверю способ Fenix'а[DOUBLEPOST=1480482625,1480481518][/DOUBLEPOST]Эх, опять не работает, пробывал .save'ть. Не помогло, пишет ошибку (в чат).
    Потом попробовал .save'ть и перезапускать конфиг, тоже-самое, только теперь пишет что локации нету
     
  15. Fenix78563

    Fenix78563 Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    напиши код которым сейвил. скорее всего в адресе файла ошибка
     
  16. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    EnderBro3D
    Code:
                    config.set("Locations." + newLoc + ".world", sender.getLocation().getWorld().toString());
                   config.save("config.yml");
                    s.sendMessage(">> \u00a7aЛокация \u00a73" + newLoc + ", \u00a7aуспешно установлена.");
                    return true;
     
  17. Fenix78563

    Fenix78563 Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    Ну ты конечно молодец.
    Адрес конфига указан не верно, отсюда и вся проблема.

    нужно использовать config.save (getDataFolder()+ File.separator + "Файл.yml")

    getDataFolder() - указывает путь до папки плагина.
    File.separator - тот слеш между названиями папок, использовать лучше именно его а не просто символ, т.к. в разных системах этот знак разный.
    Если у тебя есть какие-то подпапки в главной папке конфига то config.save(getDataFolder()+ File.separator + "папка" + File.separator + "Файл.yml")

    Если твой config задан методами defaultconfig, то можно просто saveDefaultConfig();
     
  18. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    EnderBro3D
    Эхххх, почему вы никогда не читаете это: http://pastebin.com/acSwjBgK
    Code:
    protected static YamlConfiguration config;
     
        public static YamlConfiguration getConfig(JavaPlugin pl, String configName) {
            File file = new File(pl.getDataFolder(), configName);
            if (file.isDirectory()) {
                file.delete();
            }
            if (!file.exists()) {
                try (InputStream i = pl.getClass().getClassLoader().getResourceAsStream(configName)) {
                    FileUtils.copyInputStreamToFile(i, file);
                } catch (IOException e) {
                     pl.getLogger().log(Level.WARNING, "Ошибка при создании файла " + configName);
                }
                return new YamlConfiguration();
            }
            return YamlConfiguration.loadConfiguration(file);
        }
    [DOUBLEPOST=1480502679,1480502400][/DOUBLEPOST]Стоп... Кажется я понял, getConfig() реализовывает только то чтобы подключить конфиг, он не реализовывает config.save. Получается мне надо писать config.save(getDataFolder() + File.separator + "config.yml");[DOUBLEPOST=1480502974][/DOUBLEPOST]
    Code:
        public static void save(JavaPlugin pl, YamlConfiguration conf, String configName) throws IOException {
            File file = new File(pl.getDataFolder() + File.separator + configName);
                try {
                    conf.save(file);
                } catch (IOException ex) {
                    pl.getLogger().log(Level.WARNING, "Ошибка при сохранении файла " + configName);
                }
        }
    ?
     
  19. Fenix78563

    Fenix78563 Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    ага
     
  20. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    EnderBro3D
    Спасибо, помогло[DOUBLEPOST=1480503924,1480503865][/DOUBLEPOST]И ещё 1 вопрос, как мне перезагружать конфиг если config.reload - нету?
     
  21. Fenix78563

    Fenix78563 Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    заново вызвать config.load
    У меня довольно много конфигов и чтобы с этим не мучатся я просто вызываю методы
    Code:
    OnDisable();
    OnEnable();
    Но это будет работать только если вызов всех конфигов происходит оттуда
     
Thread Status:
Not open for further replies.

Share This Page