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

Помогите [1.19.2] Как правильно создать gui?

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

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

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
    Создал GUI, но если меню открывает несколько человек, то оно перестает правильно работать. Как мне создавать интерфейс для каждого игрока отдельно не помещая переменную в тело класса? Вообще не пойму если честно

    upload_2022-10-24_17-28-28.png

    upload_2022-10-24_17-28-50.png

    upload_2022-10-24_17-29-6.png

    upload_2022-10-24_17-29-17.png

    sender - игрок, который ввел команду
    upload_2022-10-24_17-29-39.png
     
  2. Sturm_PT

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

    Баллы:
    76
    Ну создавать отдельное меню для каждого игрока, логично ведь. Если надо его сохранять - помещаешь меню в HashMap
     
  3. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В чём заключается некорректность? Судя по коду, для каждого игрока создаётся свой набор инвентарей. Это нормально.
    Если у тебя что-то работает некорректно, то, скорее всего, из-за кривой обработки InventoryClickEvent и InventoryDragEvent. Я не вижу у тебя использования InventoryHolder. Проверяешь правильность инвентаря при клике по его названию?

    Какую переменную? Ты можешь создать класс, в котором будешь хранить игрока и всю другую необходимую информацию для работы с его инвентарями.
    Но это уже скорее вопрос по джаве, а не по баккиту. Если хочешь научиться в этом разбираться - советую почитать материалы по ООП в Java или посмотреть видосы. Всё станет гораздо проще
     
  4. Автор темы
    neverlessy

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
    Смотри.
    Игрок 1 открывает инвентарь, может везде кликать и переключаться по меню, но если игрок 2 откроет инвентарь, то у игрока 1 перестает все нажиматься и обрабатываться нажатия. А у игрока 2 все нормально
     
  5. Автор темы
    neverlessy

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
    Окей. Оно создается единожды для одного игрока? Т.е если в hashmap будет уже меню для игрока 1, то если он еще раз откроет это меню - просто откроется уже готовое или как? И надо ли после закрытия инвентаря очищать поле мапы?
     
  6. Sturm_PT

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

    Баллы:
    76
    Советую прислушаться к предыдущему оратору - тебе учить джаву надо.
    А вообще тебе надо создать мапу и помещать туда UUID игрока как ключ и твой класс как значение, а при открытии проверять, есть ли у игрока менюшка или надо создать новую
     
  7. Автор темы
    neverlessy

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
    Весь код, который ты увидел выше - я написал сам, просто я не понимаю эту идиотскую систему. Я же и так открываю инвентарь для определенного игрока, каждый инвентарь - новый объект. Почему так происходит?
     
  8. alexandrage

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

    Баллы:
    173
    Выучи java и все идиотские системы поймешь сразу.
     
  9. Sturm_PT

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

    Баллы:
    76
    Как происходит? Ты же даже не сказал, что именно у тебя не работает
    п.с. александраге выдал базу, советую слушать его
     
  10. Автор темы
    neverlessy

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
     
  11. Автор темы
    neverlessy

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
    Почему я прошу помощь конкретно с гуи, а меня отправляют учить джаву, которую я и так знаю на достаточном уровне, я прошу помочь мне с этой проблемой, указать на то, что может быть причиной такой фигни.

    В моем понимании два разных объекта лежат в разных участках памяти и я не понимаю почему при открытии инвентаря два разных объекта как-то пересекаются, если объяснишь - буду рад.

    А так ты себя просто выставляешь козой горной породы с длинными ушами, хотя даже вилл более снисходителен
     
  12. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Ну, не стоит на личности переходить. Познаний в java и программировании в целом никогда не бывает много. Ну, и если в принципе у тебя возникает какой-то вопрос, это значит, что чего-то в твоих знаниях да не хватает.

    Хотелось бы посмотреть, как ты обрабатываешь нажатия, но на первый взгляд, у тебя тут типичный случай static abuse. Переменная guiMainMenu у тебя объявлена как static, так что каждый раз, когда ты открываешь игроку инвентарь, она перезаписывается. Судя по подписке "26 usages", предположу, что ты её также используешь для работы с инвентарями. Если ты используешь эту переменную, чтобы определять, твой ли это инвентарь, то ничего удивительно, ибо этого инвентаря там, очевидно, уже не будет. (для определения лучше в принципе воспользоваться InventoryHolder)
    Что-то дальше уже сложно сказать - нужно видеть код.
     
  13. alexandrage

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

    Баллы:
    173
    Как тебе помогать, если ты не хочешь обучаться? Твои проблемы в явном не понимании программирования на java. Твой уровень знаний не достаточный. Тебе уже указали на все твои ошибки выше, но ты все равно не поймешь, для тебя это темный лес, завтра же вернешься с подобной проблемой в другом месте.
     
    Последнее редактирование: 24 окт 2022
  14. Автор темы
    neverlessy

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
    Да, спасибо. Использовал inventoryholder и все заработало как надо. Спасибо всем, кто пытался помочь и alexandrage за пустую болтовню
     
  15. Автор темы
    neverlessy

    neverlessy Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    neverlessy
    если честно у тебя очень странный образ мышления. Почему в условной школе если у ученика возникает вопрос - более опытный человек или учитель отвечает на него? Я с баккитом почти не работал, я привык к кузнице и много сделал именно там. Хоть и говорят, что плагины проще - пока что некоторые места мне кажутся крайне странными.
     
  16. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    У этого джентельмена присутсвует нотка ЧСВшности, привыкай.
     
  17. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    Совет и правда был несколько абстрактным, но вопрос действительно больше касался базовых вещей Java как таковой, нежели Bukkit - послать учить матчасть решение понятное.
     
  18. OJIEKCAHDP

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

    Баллы:
    76
    Имя в Minecraft:
    OJIEKCAHDP
    Смотря как посмотреть, если InventoryHolder ему помог, то, видимо он клики по названию инвентаря проверял (?), или ещё как. А InventoryHolder как раз - Bukkit.
    Замечу, что Dymeth выше задал правильный вопрос про обработку. ТС не дал нужный ответ, но это не повод слать учить матчасть жавы.
     
  19. Sturm_PT

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

    Баллы:
    76
    Так мы не на баккитовские штуки заагрились. Человек каждый раз сохранял инвентарь в переменную и спрашивал, почему она изменяется. Естественно, все отправили его учить, что такое переменная и как сделать их много
     
  20. alexandrage

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

    Баллы:
    173
    Да чел вообще в неадеквате, дали совет подучить java, сразу агриться стал.
     
Статус темы:
Закрыта.

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