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

Помогите Не работает сохранение ключей хеша в конфиг

Тема в разделе "Разработка плагинов для новичков", создана пользователем Lisenochek, 16 авг 2016.

Статус темы:
Закрыта.
  1. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Краши пропали, но не работает сохранение.
     
  2. Хостинг MineCraft
    <
  3. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Зачем вы ему помогаете? Таких code-monkey'ев не должно быть.
    Пусть пару книг прочитает что ли или хотя бы пол книги хорстмана, 1 том.
    Этот код ужасен. Мне даже стыдно говорить, что он ужасен, он же хуже!
    И не надо писать "НИМОЖАШЬПОМОЧЬНИПАМАГАЙ".
     
  4. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Я не такой агрошкольник, как некоторые особы (без обид). Я в конфигах не шарю.
     
  5. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    >Агрошкольник
    >Оскорбления
    >Конфиги
    Для начала начни ходить в школу.
    Дело не в конфигах, а в твоём мерзком коде. Нормальные люди постыдились бы показывать такой код.
     
  6. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Я жабкой занимаюсь не так давно, так что мне не привыкать.

    P.S немножко обидно
     
  7. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Потому что я, при всём том числе языков на которых писал, за всю жизнь не прочитал ни одной полноценной книги. Только msdn, интернет, stackoverflow и форумы. Но и вопросы, надо отметить, задавал не другим, а себе.

    Но данному субъекту помогать уже надоело :)
     
  8. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Я читаю книги для того, чтобы знать, как можно, а не как надо. В будущем это сохранит мне 100500 времени и я не буду костылять структуры и часами искать информацию.

    И если ты так не любишь книги - напиши ему небольшую статью на эту тему.
     
  9. Автор темы
    Lisenochek

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

    Баллы:
    76
    Имя в Minecraft:
    Lisenochek
    Я начал просто переписывать код, не знаю, что я там сделал, но он начал сохранять ключи хешов в файлик, но плагин их обратно не достает.

    Недокод:
    Код:
    package com.realistic.config;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    
    import com.realistic.api.API;
    
    public class configData {
    
        public static API plugin;
    
        public configData(API main) {
            this.plugin = main;
        }
    
        public static File dataFolder = new File("plugins/Realistic/", "data.yml");
        public static FileConfiguration dataConfig = YamlConfiguration.loadConfiguration(dataFolder);
    
        public void onEnable() {
    
            if (!dataFolder.exists()) {
    
                try {
                    dataFolder.createNewFile();
    
                    if (dataConfig.isConfigurationSection("Blooding_Players")) {
                        for (String s : dataConfig.getConfigurationSection("Blooding_Players").getKeys(false)) {
                            plugin.ml.bloodingPlayers.put(s, dataConfig.getBoolean("Blooding_Players." + s));
                            dataConfig.set("Blooding_Players." + s, null);
                        }
                    }
    
                    try {
                        dataConfig.save(dataFolder);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    
        public static void onDisable() {
    
            for (String s : plugin.ml.bloodingPlayers.keySet()) {
                dataConfig.set("Blooding_Players." + s, plugin.ml.bloodingPlayers.get(s));
            }
    
            try {
                dataConfig.save(dataFolder);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    
     
  10. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Код:
    package com.realistic.config;
    
    import com.realistic.api.API;
    import java.io.File;
    import java.io.IOException;
    import java.util.logging.Level;
    import org.bukkit.Bukkit;
    import org.bukkit.configuration.ConfigurationSection;
    import org.bukkit.configuration.file.YamlConfiguration;
    
    public class ConfigData {
    
        private static ConfigData singleton;
    
        private final File dataFile;
        private final YamlConfiguration dataConfig;
        private final API plugin;
    
        public ConfigData(API plugin) {
            this.dataFile = new File(plugin.getDataFolder(), "data.yml");
            this.dataConfig = YamlConfiguration.loadConfiguration(this.dataFile);
            this.plugin = plugin;
        }
    
        public void loadSettings() {
            if (!this.dataFile.exists()) {
                this.plugin.ml.bloodingPlayers.clear();
                return;
            }
    
            ConfigurationSection cs = this.dataConfig.getConfigurationSection("Blooding_Players");
            for (String key : cs.getKeys(false)) {
                plugin.ml.bloodingPlayers.put(key, cs.getBoolean(key));
            }
        }
    
        public void saveSettings() {
            this.dataConfig.set("Blooding_Players", plugin.ml.bloodingPlayers);
    
            try {
                this.dataConfig.save(this.dataFile);
            } catch (IOException ex) {
                this.plugin.getLogger().log(Level.WARNING, "Failed to save \"data.yml\" to file!", ex);
            }
        }
    
        /**
         * Прекращай пользоваться этим.
         * @param plugin
         * @deprecated скажи нет синглтонам! Используй ООП.
         */
        @Deprecated
        public static void onEnable(API plugin) {
            if (ConfigData.singleton == null) {
                ConfigData.singleton = new ConfigData(plugin);
            }
    
            ConfigData.singleton.loadSettings();
        }
    
        /**
         * Прекращай пользоваться этим.
         * @param plugin
         * @deprecated скажи нет синглтонам! Используй ООП.
         */
        @Deprecated
        public static void onDisable(API plugin) {
            if (ConfigData.singleton == null) {
                Bukkit.getLogger().log(Level.WARNING, "[{0}] Calling \"onDisable\" when singleton == null!", ConfigData.class.toString());
                ConfigData.singleton = new ConfigData(plugin);
            }
    
            ConfigData.singleton.saveSettings();
        }
    }
    Можешь скопипастить.
    Лучше потрать месяц на обучение, чем два на гугление, если тебе не даётся логика и эвристика.
     
    Последнее редактирование: 17 авг 2016
  11. Dymeth

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

    Баллы:
    76
    #оффтоп
    Как же мне нравится, как Reality_SC всё объясняет. Прям аж самому интересно наблюдать за тредами, которые он берёт на себя.
     
  12. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Причем тут логика? Книга - можно сказать, краткий javadoc, хорошо скомпонованный.
    Книга - это сборник граблей, на которые лучше не наступать. + советы.
    Я же не говорю про книги, где написано про то, как настроить eclipse и сделать hello world проект или же книги, где написано, что такое for и почему в java не принято использовать goto.
     
  13. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Книга всегда есть хорошо, но можно и без неё. Конечно, время изучения ЯП возрастёт, но кому то так даже интереснее.
    Я про логику в коде.
    Почему только в java? Почти везде не принято такое и считается моветоном.
     
  14. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    Взгляни на "видео-туториалы". Смотрел к примеру тутор по JSF, просто чтобы узнать, что это за монстр такой, а там учат проект создавать в eclipse.
    Also, купил книгу "Философия Java", там введение в язык Java есть, неплохое.

    Я вот понимаю, что говорят, "без книг научился". Мне это самому интересно, но зачем об этом везде писать?
    Я вот везде книги пихаю, ибо это явно почти решение говнокода.
    Это когда есть ОТО, но ты говоришь, что нееет, я лучше сам всё открою заново. Зачем?
     
  15. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Потому что так интереснее, наверно?
    Главная проблема кник - в них нет объёмных примеров. В основном встречаются две-три строчки, иногда можно увидеть целый метод. Но в них почти не встречаются полные классы. А если ты хочешь, чтобы не было говнокода, то надо показать как "правильно" писать.
     
  16. Larin

    Larin Старожил Пользователь

    Баллы:
    103
    1. Не нужно всем говорить это
    2. Есть много книг, где в процессе обучения создаётся 1 большой проект. Не те книги читаете, товарищ.
    Показывать, как правильно? А не легче посмотреть 1,5 проекта на github'е? Это ведь интереснее, чем читать сухую теорию.
     
  17. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    У меня случилось бы +10 к счастью, если бы такие треды брало на себя немного больше людей ;)
    Оффтоп, но небольшая просьба — время от времени убивать в себе оверквоттера.
    Я, например, это написал тебе, потому что ты обращался с предложением по книгам мне:
    • upload_2016-8-17_13-16-12.png
    Сказал бы ты ТСу "Читай книги!", я оказался бы неудел со своей фразой. Ну а так-то это наш с тобой диалог получился, don't it?
     
    Последнее редактирование: 17 авг 2016
Статус темы:
Закрыта.

Поделиться этой страницей