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

Помогите Прицепить к Player данные (рантайм)

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

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

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Вот нужно с каждым игроком Player ассоциировать какой-то объект, пусть PlayerData. По-идее, делаем так:
    Код:
    class PlayerDatas {
        public static final Map<Player, PlayerData> = new ...
    }
    Но что-то я не хочу. Можно ли как-то прицепить непосредственно к Player что-нибудь своё?
    Сижу такой, смотрю src ChestCommands. Перед ними стояла задача -- проверить, открыл ли игрок созданный инвентарь. Я, как элитный кодер, сделал бы лист List<Player> игроков, открывших инвентарь. Оказалось, что разрабы поступили иначе: они сделали наследника от Inventory, и суют для открытия наследника, а не Inventory. И проверка -- простой instanceof. Гораздо красивей. Может, и в моём случае можно как-то по-другому?
     
  2. Хостинг MineCraft
    <
  3. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Metadata?
     
  4. Plasticable

    Plasticable Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    plasticable
    Имя в Minecraft:
    Plasticable
    +
     
  5. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Аж слезу смахнул, именно то, о чём я мечтал, спасибки. :oops:
     
  6. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Метадата не очищается при выходе игрока, так что удялять придётся вручную, не забывай это.
    (А всё из-за того что метадата - тупо хэшмап)
     
  7. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Тем лучше. Просто в плагине нужна работа с выделениями, топориками и регионами, а так как этой работы там немного, юзать целый WE не нужно, и приходится реализовывать самому. В метадате же сохраняю поставленные топориком точки.
     
  8. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А при рестарте сервера?
    Или метадата хранится в .dat файле игрока?
     
  9. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    При рестарте сервера убирается. А при выходе игрока - нет, так что можно схватить нехилую утечку памяти.
     
  10. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Каким образом? Например, я использую 1 ключ, перезапишу в него сотню объектов, и они все останутся в памяти?
     
  11. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А жалко, было бы неплохим вариантом для постоянного хранилища.
     
  12. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Всё равно без лишних карт. А сэйвинг не так ух сложно прикрутить.
     
  13. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Внутри это обычная HashMap<Entity, MetadataValue>. Если энтитя выйдет а вы метадату не удалите, то энтитя останется висеть в хэшмапе до рестарта сервера.
     
  14. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ну мне порой приходится ради сохранения маленькой информации реализовывать целое постоянное хранилище, а это доставляет
     
  15. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Всегда создаю врапперы. Врапперы ftw.
     
  16. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
  17. ql_Nik_lp

    ql_Nik_lp Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Грубо говоря то что вы описали под PlayerData, только если вы еще в середину запихнете сам объект игрока (что я не рекомендую) или же имя / UUID

    UPD:
    Выразился немного некорректно.
    Имел ввиду: https://ru.wikipedia.org/wiki/Декоратор_(шаблон_проектирования)
    Враппер - немного другое
     
  18. Автор темы
    saharNooby

    saharNooby Активный участник Девелопер Пользователь

    Баллы:
    78
    Имя в Minecraft:
    saharNooby
    Типа как я написал в посте под спойлером? Или как-то по другому? С декораторами знаком только по стримам.
     

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