Помогите Как мне сделать проверку имени предмета на который игрок кликнул в инвентаре?

AguRChek_TV

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
AguRChek_TV
Раньше я проверял слоты на у меня много предметов с одинаковым именем и изменёнными текстурами которые образуют карта минирежима, и проверять нажатия на каждый из 16 слотоы не очень удобно.
 
Перепиши на русском, перечитал 3 раза, но ничего не понял.
Есть эвент InventoryClickEvent
https://helpch.at/docs/1.12.2/org/bukkit/event/inventory/InventoryClickEvent.html
public void onInventoryClick(InventoryClickEvent event) {
ItemStack item = event.getCurrentItem();
}
И дальше делаешь с предметом что надо
Хитро придумал: отвечать какой-то водой. Это никому не поможет. Просто фарманул одно сообщение в стату.
 
Перепиши на русском, перечитал 3 раза, но ничего не понял.

Хитро придумал: отвечать какой-то водой. Это никому не поможет. Просто фарманул одно сообщение в стату.
Ээ, нууу. Эвенты это такие события, которые вызывают определённые методы когда что-то происходит, в данном случае когда происходит клик в инвентаре вызывает этот метод. В них передаётся объект, который содержит всю информацию об событии. В данном случае это InventoryClickEvent event. Дальше я получил из переданной информации сам предмет на который кликнул с помощью event.getCurrentItem();
 
Ээ, нууу. Эвенты это такие события, которые вызывают определённые методы когда что-то происходит, в данном случае когда происходит клик в инвентаре вызывает этот метод. В них передаётся объект, который содержит всю информацию об событии. В данном случае это InventoryClickEvent event. Дальше я получил из переданной информации сам предмет на который кликнул с помощью event.getCurrentItem();
Воу-воу, полегче, я смог прочитать твои знания еще с прошлого поста, когда ты даже не загуглил саму ошибку. Это вода, т.к. у него это все уже есть, да и в целом, каждый может переписать, что ты кинул, по туториалу.

Вопрос, мне лично, до конца не ясен. Не знаю, поможет или нет, но у ItemStack есть метод, который называется isSimilar. В аргументы он принимает другой ItemStack; возвращает boolean: true, если предметы одинаковые (учитывает все, кроме количества: айди типа, дата, нбт).

Если что-то написал непонятно, читай тут.
 
Как мне сделать проверку имени предмета на который игрок кликнул в инвентаре?
Код:
ItemStack item = ...; // InventoryClickEvent#getClickedItem(); ?
ItemMeta meta = item.getItemMeta();
if ("CustomName".equals(meta.getDisplayName()) {
    // ...
}
 
Код:
ItemStack item = ...; // InventoryClickEvent#getClickedItem(); ?
ItemMeta meta = item.getItemMeta();
if ("CustomName".equals(meta.getDisplayName()) {
    // ...
}
Как-то я невнимательно поступил :|

Ну, в любом случае, будет полезно использовать ItemStack#isSimilar(ItemStack), т.к. это по-прежнему точнее.
 
Как-то я невнимательно поступил :|

Ну, в любом случае, будет полезно использовать ItemStack#isSimilar(ItemStack), т.к. это по-прежнему точнее.
Зависит от нужд же. isSimilar всю мету чекает, это не всегда нужно.
 
Назад
Верх