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

Помогите Как сохранить более одного параметра для игрока в config.yml

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

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

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    Привет)
    Для моего плагина мне нужно сохранять несколько индивидуальных параметров для каждого игрока в .yml и что бы они выдавались ему при заходе на сервер. Я смог реализовать подобную вещь с кастомным здоровьем. Например в игрока 256хп но сердец по стандарту 20 и когда игрок получает урон то отнимаються 256хп а не 20 сердец. Надеюсь вы поняли). Если нет лучше переспросите. Так вот, мне кроме кастомного ХП ещё нужно несколько параметров:
    Максимальное здоровье
    Регенирация (по стандарту за раз регенерируеться 1хп а мне нужно например 10)
    Уровень
    Количество опыта на новый уровень

    Такими функциями у меня реализовано сохранение кастомного здоровья и его возврат игроку, когда он заходит на сервер.
    Код:
    public void saveHealth() {
            for(Map.Entry<String, Integer> entry : playerhealth.entrySet()) {
                this.getConfig().set("data." + entry.getKey(), entry.getValue());
            }
            this.saveConfig();
        }
        
        public void restoreHealth() {
            this.getConfig().getConfigurationSection("data").getKeys(false).forEach(key ->{
                Integer content = (Integer) this.getConfig().get("data." + key);
                playerhealth.put(key, content);
            });
        }
    Как я могу сохранять несколько параметров об игроке, а потом возвращать их всех при заходе игрока на сервер? Например что бы было так:
    data:
    slime_j: 56(количество здоровья), 100(максимальное количество здоровья), 10(регенерация), и тд.
    "Повторюсь, систему для сохранения и возврата данных для одного параметра я реализовал. Теперь просто нехватает знаний. Поэтому прошу помощи. Спасибо)"
     
  2. Sergeo

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

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    String str = кфг.getString(section).split(",")[тут номер значения]

    Номер значения

    [0] - кол-во здоровья
    [1] - макс кол-во здоровья
    [2] - регенерация

    Если значений больше, то с ними та же история

    Вроде так
     
  3. Автор темы
    slime_j

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    А могу ли я вот так записывать и если да, то как? Что бы для каждого значения был разный HashMap
    data:
    slime_j:
    56(количество здоровья)
    100(максимальное количество здоровья)
    10(регенерация)
     
  4. Sergeo

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

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    Не проще сделать так:

    Код:
    data:
     slime_j:
      Hp: 56
      MaxHp: 100
      Regen: 10
     
  5. Автор темы
    slime_j

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

    Баллы:
    36
    Имя в Minecraft:
    slime_j
    Да, выглядит понятливей. Просто хочу узнать как)
     
  6. Sergeo

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

    Баллы:
    76
    Имя в Minecraft:
    Solomka
    В каком плане "как"?
     
  7. deadanykey

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

    Баллы:
    96
    Сюда так и просится сериализация/десериализация. К тому же тут только числовые значения.
     
  8. MySoR

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

    Баллы:
    76
    Имя в Minecraft:
    MySoR
    Config#set("data."+playerName+".Hp", value);
     
Статус темы:
Закрыта.

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