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

Помогите Восстановление предметов из модов из файла

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

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

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

    Баллы:
    68
    Всем привет, встала такая проблема: у меня плагин на аукцион, роль которого выполняет кастомный инвентарь. При запуске сервера все предметы восстанавливаются в него через yml файл, но некоторые предметы из модов (в основном ботания) восстанавливаются некорректно.
    Пример: в ботании есть планшет маны, у которого может быть разное количество маны. У меня он восстанавливается всегда пустой
    Пример 2: в той же ботании есть цветы с одинаковым id и без даты, при восстановлении появляется совсем не тот цветок что был выставлен на продажу.

    Понятно, что у них есть какие-то нестандартные атрибуты, но реально ли их как-то получить и записать при помощи плагина?
     
  2. Exception_Prototype

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

    Баллы:
    96
    Если аукцион сапомис(а даже если и нет), то можно перевести хранения предметов в формат NBT в файлы.
    Т.е. сериализировать предметы в файлы в их NBT представлении и восстанавливать по такой же схеме.
    Тогда они будут сохранять все параметры и атрибуты.
     
  3. alexandrage

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

    Баллы:
    173
  4. Автор темы
    Worrag

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

    Баллы:
    68
    Спасибо, обрадовали. Буду разбираться с NBT
     
  5. Автор темы
    Worrag

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

    Баллы:
    68
    Записывать в yml nbt я научился, а вот как правильно считать из него чет не могу додуматься
     
  6. Exception_Prototype

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

    Баллы:
    96
  7. Автор темы
    Worrag

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

    Баллы:
    68
    Может быть так оно есть, но там все предметы из инвентаря скомпанованы в один list, после чего идёт его запись в файл методом NBTCompressedStreamTools, и я так понимаю что ничего лишнего в файле нет. Поправьте, если я ошибаюсь.
    Я же записываю в один файл все предметы по мере добавления, причем у каждого итема в yml-секции 3 атрибута: цена, продавец, и сам NBT. Как достать этот nbt в таком случае я и не могу понять, ведь помимо него в файле ещё есть данные. Если бы в файле было только NBT я бы тем же NBTCompressedStreamTools(new FileInputStream(path)) легко бы всё вытащил..
    Можно конечно для каждого предмета создавать отдельный файл под nbt-теги, но идея с одним мне больше нравится )
     
  8. Exception_Prototype

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

    Баллы:
    96
    На NBTTagCompound тэг можно нацепить ещё теги, сделай так, чтобы древо из тегов были твоими путями.
     
  9. Автор темы
    Worrag

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

    Баллы:
    68
    Идею понял, попробую
     
  10. alexandrage

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

    Баллы:
    173
    NBT.set("one", one);
    NBT.set("two", two);
    NBT.getList("one", 10);
    NBT.getList("two", 10);
     
  11. Exception_Prototype

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

    Баллы:
    96
    Да и если у тебя уже предметы хранятся в nbt то и цену с продавцом там же храни, проще прост будет. Уж если разобрался как писать nbt предметов ну так и с примитивными данными разберёшься. И nbt не нужно хранить в yml, можно в "file.dat"(конечно это мало чего изменит, то так правильней).
     
  12. Автор темы
    Worrag

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

    Баллы:
    68
    У меня получилось! Всем спасибо, тему закрываю)
     
Статус темы:
Закрыта.

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