Помогите Как сравнивать динамические ItemStack'и

Energy warrior

Активный участник
Пользователь
Баллы
76
Наверное, скоро меня забанят за спам темами, но у меня опять проблема! Когда я кликаю на предмет он определяется с помощью isSimilar и происходит действие. В этом действии у меня в тегах меняется значение из-за чего действие больше не происходит! Как мне сравнивать предметы?
 
Опиши подробнее что за айтемстаки и как клик на предмет определяется с помощью isSimilar? Не легче ли ивентом InventoryClickEvent определять клик?
 
Наверное, скоро меня забанят за спам темами, но у меня опять проблема! Когда я кликаю на предмет он определяется с помощью isSimilar и происходит действие. В этом действии у меня в тегах меняется значение из-за чего действие больше не происходит! Как мне сравнивать предметы?
Потому что сравнивать предмет по isSimilar для выполнение клика в меню это бред, определяй все по слоту.
 
Опиши подробнее что за айтемстаки и как клик на предмет определяется с помощью isSimilar? Не легче ли ивентом InventoryClickEvent определять клик?
Берём PlayerInteractEvent обрабатываем клик через isSimilar то есть
Код:
customitem.isSimilar(hand)
Потом создаём Объект предмета, в нём вызываем действие, в котором этот предмет меняется. Теперь когда когда кликаешь снова, создаётся новый экземпляр в котором нет этих изменений. Казалось бы, просто добавь к конструктор эти значения, а как я пойму что это именно тот предмет из которого нужно брать значения?

UPD: Можно навешать NBT тегов и сделать енумы для красоты. Но может есть другие варианты?
 
Последнее редактирование:
Берём PlayerInteractEvent обрабатываем клик через isSimilar то есть
Код:
customitem.isSimilar(hand)
Потом создаём Объект предмета, в нём вызываем действие, в котором этот предмет меняется. Теперь когда когда кликаешь снова, создаётся новый экземпляр в котором нет этих изменений. Казалось бы, просто добавь к конструктор эти значения, а как я пойму что это именно тот предмет из которого нужно брать значения?
Лол, я подумал ты в гуи обработать хочешь, для PlayerInteractEvent можно по слоту, если предмет нельзя перемещать, если же можно, то храни заранее сгенерированный для предмета UUID в нбт тегах и по этому UUID Уже храни объект Consumer<Player> к примеру. При клике достаешь UUID из нбт, если он есть у этого предмета и дистаешь из мапы действие для него и выполняешь. Вместо Consumer можно свой класс сделать с дополнительными штуками если есть в этом необходимость.
 
Лол, я подумал ты в гуи обработать хочешь, для PlayerInteractEvent можно по слоту, если предмет нельзя перемещать, если же можно, то храни заранее сгенерированный для предмета UUID в нбт тегах и по этому UUID Уже храни объект Consumer<Player> к примеру. При клике достаешь UUID из нбт, если он есть у этого предмета и дистаешь из мапы действие для него и выполняешь. Вместо Consumer можно свой класс сделать с дополнительными штуками если есть в этом необходимость.
Предметов предполагается много, не только по типам, но и пользователей которые всё это будут юзать. Я думаю мапы будут лагать.
 
Предметов предполагается много, не только по типам, но и пользователей которые всё это будут юзать. Я думаю мапы будут лагать.
Че? Ты знаешь хотя бы как HashMap работает? Какая временная сложность у get?
 
Наверное, скоро меня забанят за спам темами, но у меня опять проблема! Когда я кликаю на предмет он определяется с помощью isSimilar и происходит действие. В этом действии у меня в тегах меняется значение из-за чего действие больше не происходит! Как мне сравнивать предметы?
Проверять по какому то статическому тегу.
 
Блин, а как мне сделать так, можно было с помощью instanceof проверить? и делать вот такую запись
Код:
CustomItem item =(CustomItem) event.getItem();
Я когда пытаюсь это сделать мне ClassCastException вылетает!
 
Блин, а как мне сделать так, можно было с помощью instanceof проверить? и делать вот такую запись
Код:
CustomItem item =(CustomItem) event.getItem();
Я когда пытаюсь это сделать мне ClassCastException вылетает!
После добавления в инвентарь очевидно твой кастомный класс сотрется, ItemStack всего лишь обертка, лол.
Я тебе написал лучшее решение, чего ты костыли какие-то выдумываешь.
 
Назад
Верх