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

Помогите Ошибка из ничего

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

Статус темы:
Закрыта.
  1. Автор темы
    yann1n

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

    Баллы:
    66
    В чём тут проблема?
    upload_2022-7-26_9-51-56.png
     
  2. Sturm_PT

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

    Баллы:
    76
    getTitle()
     
  3. Автор темы
    yann1n

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

    Баллы:
    66
    upload_2022-7-26_10-0-38.png
     
  4. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    На новых версиях ты никак не получишь название инвентаря.
    Это сделано для того, чтобы люди по-человечески сравнивали инвентари.
    По-человечески - это средствами InventoryHolder.
    Один из множества примеров использования:
     
  5. Автор темы
    yann1n

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

    Баллы:
    66
    Как я понял после instanceof должен находится класс с конструктором гуай меню?
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Да. только ты не сам инвентарь должен проверять, а его холдер
     
  7. Автор темы
    yann1n

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

    Баллы:
    66
    Холдер - это подразумиваются бочки, инвентари игроков или сундуки, как я понял?
     
  8. FeniksDEV

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

    Баллы:
    76
    Имя в Minecraft:
    Feniksovich
    Всегда проверял совпадение инвентаря так:
    Код:
        private boolean isThatInventory(Inventory inv) {
            return (Arrays.equals(inventory.getContents(), inv.getContents()) && inventory.getHolder().equals(inv.getHolder()));
        }
    
    inventory храню в классе меню, inv передается в метод из ивентов (InventoryCloseEvent, InventoryDragEvent, InventoryClickEvent).
    Уж не помню, почему я не ограничился только проверкой InventoryHolder'a, но, наверное, не без причины.
     
    Последнее редактирование: 26 июл 2022
  9. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Причина может быть только одна - если для разных инвентарей используется один и тот же холдер. Так делать не стоит. И уж тем более нет смысла сравнивать содержимое инвентарей, если можно просто сравнить ссылки на инвентари.

    Это не сами инвентарь. Это скорее объект, к которому принадлежит этот инвентарь.
    Смотрим метод Inventory#getHolder():
    https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/Inventory.html#getHolder()
    "Gets the block or entity belonging to the open inventory"
     
Статус темы:
Закрыта.

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