1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Хранение данных.

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

  1. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Доброго времени суток, форумчане.
    Я - начинающий "Девелопер" если можно таким называться.
    Пишу пару месяцев на Bukkit API.
    И в последнее время, появилась частая необходимость хранить данные без их грубо говоря потери.
    Пример: сохранить локацию игрока или его инвентарь.
    Делал все это, через конфиг, но думаю это какой-то вандализм.
    Так вот вопрос:
    как можно хранить данные(на подобии инвентаря), что-бы в любой момент можно было обратиться к ним(даже после перезагрузки и т.п)
     
  2. alexandrage

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

    Баллы:
    173
    Да хватит простого файла на каждого игрока. Собстно так оно и работает в самом майне.
     
  3. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Просто часто в плагинах вижу, что никаких файлов нет, а данные откуда-то берутся. Думал есть какой-то способ специальный
     
  4. alexandrage

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

    Баллы:
    173
    Магия наверное ага. Или кто то слепой.
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Возможно, из базы данных загружаются. Смотри уроки по работе с MySQL
     
  6. alexandrage

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

    Баллы:
    173
    Для инвентарей идеальное решение(нет).
     
  7. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Зависит от задач. Хотя в целом не вижу ничего плохого в хранении инвентарей в БД
     
  8. alexandrage

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

    Баллы:
    173
    Ну и хорошего в этом ничего нет.
     
  9. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Если надо синхронизировать между несколькими серверами - почему нет? Или всё в редисе вечно хранить? )
     
  10. alexandrage

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

    Баллы:
    173
    Ну тогда имеет смысл.
     
  11. alexandrage

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

    Баллы:
    173
    А что ты имеешь против редиса?
     
  12. Deawilld

    Deawilld Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Deawilld
    Хранишь в любой структуре данных в каком-нибудь классе, а при перезагрузке сохраняешь в файл, потом загружаешь. Самое простое и очевидное решение
     
  13. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Я искал как индивидуальный файл для каждого создавать, но не нашел. Не подкинешь статейку?
     
  14. CoolBoy

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

    Баллы:
    96
    Имя в Minecraft:
    Xezard
    Если у тебя есть специализированный класс для тех данных что тебе нужно сохранить, то пройтись по всем объектам этого класса и засейвить каждый из них в определённый файл, к примеру - не проблема.
     
  15. Deawilld

    Deawilld Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    Deawilld
    https://bukkit.org/threads/bukkits-yaml-configuration-tutorial.42770/
    Если я правильно понял, ты затрудняешься, как создать отдельные файлы. С помощью метода YamlConfiguration.loadConfiguration(file) можно получить yaml конфиг из любого обьекта File. Конечно, может это и не самый лучший вариант использовать yaml для хранения, но я пока больше ничего не могу посоветовать.
    Файл можно получить например так:
    new File(Plugin#getDataFolder().getPath()+"/storage", player.getName()+".yml");
    там папку сам выберешь
     
  16. alexandrage

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

    Баллы:
    173
    Как то так.
    Код:
    public class CustomConfig {
    
        private YamlConfiguration yml;
        private File file;
    
        CustomConfig(String name, Plugin plugin) {
            this.file = new File(plugin.getDataFolder(), name + ".yml");
            this.yml = YamlConfiguration.loadConfiguration(this.file);
            this.file.getParentFile().mkdirs();
        }
    
        public FileConfiguration get() {
            return this.yml;
        }
    
        public void save() {
            try {
                this.yml.save(this.file);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public void reload() {
            try {
                this.yml.load(this.file);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public static boolean exist(String name, Plugin plugin) {
            File file = new File(plugin.getDataFolder(), name + ".yml");
            return file.exists();
        }
    }
     
  17. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Благодарствую
     

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