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

Помогите Как проверить, что игрок взял или наоборот, положил в сундук?

VladNotch

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Frontalvlad
Я перерыл весь интернет, но точного и толкового решения не нашел. Есть предположение через InventoryClickEvent, но как отличать, когда игрок забирает в свой инвентарь, или наоборот, кладет в сундук? Или может игрок просто держит этот предмет в своем курсоре? Все это запутано, поэтому решил написать сюда.
 
Ну да, InventoryClickEvent + ещё InventoryDragEvent. По номерам слотов можно определять. Или же получать целевой инвентарь с сравнивать с полученным из view.
Да, это всё достаточно нудно, но что поделать: в игре куча способов перемещения предметов из одного инвентаря в другой. Из того, что сходу вспомнил:
1) Цифрами 1-9 на клавиатуре
2) С зажатым шифтом
3) На курсор/с курсора
4) Растягиванием по нескольким слотам
 
Ну да, InventoryClickEvent + ещё InventoryDragEvent. По номерам слотов можно определять. Или же получать целевой инвентарь с сравнивать с полученным из view.
Да, это всё достаточно нудно, но что поделать: в игре куча способов перемещения предметов из одного инвентаря в другой. Из того, что сходу вспомнил:
1) Цифрами 1-9 на клавиатуре
2) С зажатым шифтом
3) На курсор/с курсора
4) Растягиванием по нескольким слотам
Может есть примеры из каких-нибудь плагинов? Я хочу повторить логику обычного сундука, но при этом чтобы отслеживать, есть ли в слоте предмет или нет.
 
Может есть примеры из каких-нибудь плагинов? Я хочу повторить логику обычного сундука, но при этом чтобы отслеживать, есть ли в слоте предмет или нет.
Примеров нет - сам можешь поискать исходники плагинов, которые тебе интересны.
Но если задача контролировать один конкретный слот, то достаточно будет проверять InventoryClickEvent#getRawSlot() и InventoryDragEvent#getRawSlots()
 
Примеров нет - сам можешь поискать исходники плагинов, которые тебе интересны.
Но если задача контролировать один конкретный слот, то достаточно будет проверять InventoryClickEvent#getRawSlot() и InventoryDragEvent#getRawSlots()
Все равно у меня вызывает трудности все это реализовать. Может в каком-нибудь форке, например Paper есть listener'ы, отвечающие за взятие или выкладывание предмета в инвентарь?
 
Все равно у меня вызывает трудности все это реализовать.
В чём конкретно сложность?

Может в каком-нибудь форке, например Paper есть listener'ы, отвечающие за взятие или выкладывание предмета в инвентарь?
Нет. InventoryClickEvent и InventoryDragEvent полностью покрывают все возможные варианты работы с инвентарём
 
В чём конкретно сложность?


Нет. InventoryClickEvent и InventoryDragEvent полностью покрывают все возможные варианты работы с инвентарём
Да во всем. Путаюсь в его реализации в принципе.
 

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

Назад
Верх