Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

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

Метки:
Теги Теги
spigot
Статус
Закрыто для дальнейших ответов.

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
 
Ну создавать отдельное меню для каждого игрока, логично ведь. Если надо его сохранять - помещаешь меню в HashMap
 
Создал GUI, но если меню открывает несколько человек, то оно перестает правильно работать.
В чём заключается некорректность? Судя по коду, для каждого игрока создаётся свой набор инвентарей. Это нормально.
Если у тебя что-то работает некорректно, то, скорее всего, из-за кривой обработки InventoryClickEvent и InventoryDragEvent. Я не вижу у тебя использования InventoryHolder. Проверяешь правильность инвентаря при клике по его названию?

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


Какую переменную? Ты можешь создать класс, в котором будешь хранить игрока и всю другую необходимую информацию для работы с его инвентарями.
Но это уже скорее вопрос по джаве, а не по баккиту. Если хочешь научиться в этом разбираться - советую почитать материалы по ООП в Java или посмотреть видосы. Всё станет гораздо проще
Смотри.
Игрок 1 открывает инвентарь, может везде кликать и переключаться по меню, но если игрок 2 откроет инвентарь, то у игрока 1 перестает все нажиматься и обрабатываться нажатия. А у игрока 2 все нормально
 
Ну создавать отдельное меню для каждого игрока, логично ведь. Если надо его сохранять - помещаешь меню в HashMap
Окей. Оно создается единожды для одного игрока? Т.е если в hashmap будет уже меню для игрока 1, то если он еще раз откроет это меню - просто откроется уже готовое или как? И надо ли после закрытия инвентаря очищать поле мапы?
 
Окей. Оно создается единожды для одного игрока? Т.е если в hashmap будет уже меню для игрока 1, то если он еще раз откроет это меню - просто откроется уже готовое или как? И надо ли после закрытия инвентаря очищать поле мапы?
Советую прислушаться к предыдущему оратору - тебе учить джаву надо.
А вообще тебе надо создать мапу и помещать туда UUID игрока как ключ и твой класс как значение, а при открытии проверять, есть ли у игрока менюшка или надо создать новую
 
Советую прислушаться к предыдущему оратору - тебе учить джаву надо.
А вообще тебе надо создать мапу и помещать туда UUID игрока как ключ и твой класс как значение, а при открытии проверять, есть ли у игрока менюшка или надо создать новую
Весь код, который ты увидел выше - я написал сам, просто я не понимаю эту идиотскую систему. Я же и так открываю инвентарь для определенного игрока, каждый инвентарь - новый объект. Почему так происходит?
 
Весь код, который ты увидел выше - я написал сам, просто я не понимаю эту идиотскую систему. Я же и так открываю инвентарь для определенного игрока, каждый инвентарь - новый объект. Почему так происходит?
Выучи java и все идиотские системы поймешь сразу.
 
Ты же даже не сказал, что именно у тебя не работает
Смотри.
Игрок 1 открывает инвентарь, может везде кликать и переключаться по меню, но если игрок 2 откроет инвентарь, то у игрока 1 перестает все нажиматься и обрабатываться нажатия. А у игрока 2 все нормально
 
Выучи java и все идиотские системы поймешь сразу.
Почему я прошу помощь конкретно с гуи, а меня отправляют учить джаву, которую я и так знаю на достаточном уровне, я прошу помочь мне с этой проблемой, указать на то, что может быть причиной такой фигни.

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

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

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

А так ты себя просто выставляешь козой горной породы с длинными ушами, хотя даже вилл более снисходителен
Ну, не стоит на личности переходить. Познаний в java и программировании в целом никогда не бывает много. Ну, и если в принципе у тебя возникает какой-то вопрос, это значит, что чего-то в твоих знаниях да не хватает.

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

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

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

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

Да, спасибо. Использовал inventoryholder и все заработало как надо. Спасибо всем, кто пытался помочь и alexandrage за пустую болтовню
 
Как тебе помогать, если ты не хочешь обучаться? Твои проблемы в явном не понимании программирования на java. Твой уровень знаний не достаточный. Тебе уже указали на все твои ошибки выше, но ты все равно не поймешь, для тебя это темный лес, завтра же вернешься с подобной проблемой в другом месте.
если честно у тебя очень странный образ мышления. Почему в условной школе если у ученика возникает вопрос - более опытный человек или учитель отвечает на него? Я с баккитом почти не работал, я привык к кузнице и много сделал именно там. Хоть и говорят, что плагины проще - пока что некоторые места мне кажутся крайне странными.
 
если честно у тебя очень странный образ мышления. Почему в условной школе если у ученика возникает вопрос - более опытный человек или учитель отвечает на него? Я с баккитом почти не работал, я привык к кузнице и много сделал именно там. Хоть и говорят, что плагины проще - пока что некоторые места мне кажутся крайне странными.
У этого джентельмена присутсвует нотка ЧСВшности, привыкай.
 
если честно у тебя очень странный образ мышления. Почему в условной школе если у ученика возникает вопрос - более опытный человек или учитель отвечает на него? Я с баккитом почти не работал, я привык к кузнице и много сделал именно там. Хоть и говорят, что плагины проще - пока что некоторые места мне кажутся крайне странными.
У этого джентельмена присутсвует нотка ЧСВшности, привыкай.
Совет и правда был несколько абстрактным, но вопрос действительно больше касался базовых вещей Java как таковой, нежели Bukkit - послать учить матчасть решение понятное.
 
Совет и правда был несколько абстрактным, но вопрос действительно больше касался базовых вещей Java как таковой, нежели Bukkit - послать учить матчасть решение понятное.
Смотря как посмотреть, если InventoryHolder ему помог, то, видимо он клики по названию инвентаря проверял (?), или ещё как. А InventoryHolder как раз - Bukkit.
Замечу, что Dymeth выше задал правильный вопрос про обработку. ТС не дал нужный ответ, но это не повод слать учить матчасть жавы.
 
но это не повод слать учить матчасть жавы.
Так мы не на баккитовские штуки заагрились. Человек каждый раз сохранял инвентарь в переменную и спрашивал, почему она изменяется. Естественно, все отправили его учить, что такое переменная и как сделать их много
 
Так мы не на баккитовские штуки заагрились. Человек каждый раз сохранял инвентарь в переменную и спрашивал, почему она изменяется. Естественно, все отправили его учить, что такое переменная и как сделать их много
Да чел вообще в неадеквате, дали совет подучить java, сразу агриться стал.
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх