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

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем VladNotch, 1 июл 2023.

  1. Автор темы
    VladNotch

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

    Баллы:
    76
    Я перерыл весь интернет, но точного и толкового решения не нашел. Есть предположение через InventoryClickEvent, но как отличать, когда игрок забирает в свой инвентарь, или наоборот, кладет в сундук? Или может игрок просто держит этот предмет в своем курсоре? Все это запутано, поэтому решил написать сюда.
     
  2. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ну да, InventoryClickEvent + ещё InventoryDragEvent. По номерам слотов можно определять. Или же получать целевой инвентарь с сравнивать с полученным из view.
    Да, это всё достаточно нудно, но что поделать: в игре куча способов перемещения предметов из одного инвентаря в другой. Из того, что сходу вспомнил:
    1) Цифрами 1-9 на клавиатуре
    2) С зажатым шифтом
    3) На курсор/с курсора
    4) Растягиванием по нескольким слотам
     
  3. Автор темы
    VladNotch

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

    Баллы:
    76
    Может есть примеры из каких-нибудь плагинов? Я хочу повторить логику обычного сундука, но при этом чтобы отслеживать, есть ли в слоте предмет или нет.
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Примеров нет - сам можешь поискать исходники плагинов, которые тебе интересны.
    Но если задача контролировать один конкретный слот, то достаточно будет проверять InventoryClickEvent#getRawSlot() и InventoryDragEvent#getRawSlots()
     
  5. Автор темы
    VladNotch

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

    Баллы:
    76
    Все равно у меня вызывает трудности все это реализовать. Может в каком-нибудь форке, например Paper есть listener'ы, отвечающие за взятие или выкладывание предмета в инвентарь?
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    В чём конкретно сложность?

    Нет. InventoryClickEvent и InventoryDragEvent полностью покрывают все возможные варианты работы с инвентарём
     
  7. Автор темы
    VladNotch

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

    Баллы:
    76
    Да во всем. Путаюсь в его реализации в принципе.
     

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