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

Помогите Как сделать приватное GUI

Тема в разделе "Помощь", создана пользователем diego070202, 17 июл 2019.

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

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Вопрос таков:
    Есть GUI, но оно ОБЩЕЕ для ВСЕХ игроков.
    А как сделать для КАЖДОГО игрока СВОЕ gui?
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    С чем гуи-то будет?
     
  3. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    с определенными точками для спавна (каждый игрок сам указывает точку, не важно как)
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Если это какая-то уникальная задумка - то, скорее всего, придется писать или заказывать плагин
     
  5. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    я итак пишу плагин... я и думаю, как это реализовать
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну так если плагин пишешь - тему нужно создавать в разделе Разработка плагинов для новичков )

    У тебя тут два варианта:
    1) Хранить инвентарь каждого игрока и по запросу его открывать
    2) По каждому запросу создавать новый инвентарь

    Возьмём первый вариант.
    У тебя есть Map<Player, MyInventory> inventories = new HashMap<>();
    MyInventory должен реализовать InventoryHolder.
    При запросе инвентаря пытаешься получить его из мапы. Если запись отсутствует - генерируешь новый инвентарь и добавляешь в мапу.
    При выходе запись игрока тоже удаляешь.
    При изменении своей информации (точек спауна) не забудь обновлять содержимое инвентаря. Либо используй плейсхолдеры, но тут я ХЗ.
    При действиях с инвентарём проверяешь принадлежность инвентаря к твоему MyInventory. Если это так - кастуешь и делаешь уже, что нужно.
     
  7. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Понял. Огромное спасибо. Посмотрим что из этого всего выйдет :D
     
  8. alexandrage

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

    Баллы:
    173
    Ручками.
     
  9. alexandrage

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

    Баллы:
    173
    Menu menu = new Menu(this.plugin, player);
    player.openInventory(menu.getInventory());
     
  10. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Не до конца понял. Как я создам новый инвентарь(гуиху) для каждого то?
     
  11. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Ну, также, как ты создаешь обычно, только для одного игрока.
     
  12. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    В лс можешь конкретнее расписать? Буду очень благодарен
     
  13. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Не вижу большого смысла в ЛС писать, да и может пригодится кому.
    По первому варианту выше - при входе игрока (или при первом открытии меню) достаешь данные и создаешь инвентарь как ты обычно создаешь инвентарь. Далее, запихиваешь его в мапу - inventories.put(player, inv), где player - твой игрок и inv - созданный тобою инвентарь. При необходимости(например, изменение данных) - обновляешь. При выходе игрока удаляешь его и инвентарь из мапы inventories.remove(player).
    Иначе, по второму варианту - каждый раз при открытии меню достаешь данные и опять же создаешь инвентарь.

    Так или иначе, смысл в том, что ты не создаешь один инвентарь при старте плагина и хранишь его, а создаешь каждый раз новые.
     
    Последнее редактирование: 17 июл 2019
  14. Автор темы
    diego070202

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

    Баллы:
    66
    Имя в Minecraft:
    PoZDnyak
    Теперь все предельно понятно.
    Большое спасибо.
    Все утро ломал голову.
    И через конфиг уже пытался(че к чему...)
     
  15. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Видимо хреновый из меня получился бы учитель :D
     

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