Помогите Нормальное создание инвентарей

MLG_Coder

Активный участник
Баллы
61
Имя в Minecraft
MLG_Coder
1.12.2. Мне нужно создать меню так, чтобы клики регало только при нажатии по самому меню. Конечно, можно сравнить инвентари по тайтлу, но тогда регает и клики в инвентаре игрока.
 
Используй InventoryHolder и проверяй по нему
 
С одной стороны плюсую, с другой же на Spigot 1.17 кастомные IH больше не поддерживаются (хотя Paper вернули их поддержку у себя).
И что предлагается использовать вместо IH? Явно не тайтлы
 
С одной стороны плюсую, с другой же на Spigot 1.17 кастомные IH больше не поддерживаются (хотя Paper вернули их поддержку у себя).
Только что проверил, все работает. Да и информации о том, что IH больше не поддерживается, я не нашел.
PHP:
    @EventHandler
    public void onClick(InventoryClickEvent e) {
        if (e.getClickedInventory() == null) return;
        if (e.getClickedInventory().getHolder() == null) return;
        if (e.getClickedInventory().getHolder() instanceof CustomHolder)
            e.getWhoClicked().sendMessage("123");
    }
 
Только что проверил, все работает. Да и информации о том, что IH больше не поддерживается, я не нашел.
PHP:
    @EventHandler
    public void onClick(InventoryClickEvent e) {
        if (e.getClickedInventory() == null) return;
        if (e.getClickedInventory().getHolder() == null) return;
        if (e.getClickedInventory().getHolder() instanceof CustomHolder)
            e.getWhoClicked().sendMessage("123");
    }
md_5 и ко. всегда были против использования IH для выявления кастомных инвентарей, но по какой-то причине оно всё ещё как-то да работает/работало. Патч Paper. Вот какая-никакая официальная позиция. Плюс проблемы с кастомными IH закрываются/игнорируются.
И что предлагается использовать вместо IH? Явно не тайтлы
Вероятно, хранить их самому? Что-то вроде Set<Inventory> invs = Collections.newSetFromMap(new IdentityHashMap<>()), да добавлять/удалять при соответствующих действиях. Не знаю, что именно у них на уме - доступа к их сташу не имею.
 
md_5 и ко. всегда были против использования IH для выявления кастомных инвентарей, но по какой-то причине оно всё ещё как-то да работает/работало. Патч Paper. Вот какая-никакая официальная позиция. Плюс проблемы с кастомными IH закрываются/игнорируются.

Вероятно, хранить их самому? Что-то вроде Set<Inventory> invs = Collections.newSetFromMap(new IdentityHashMap<>()), да добавлять/удалять при соответствующих действиях. Не знаю, что именно у них на уме - доступа к их сташу не имею.
Подниму пожалуй тему. В принципе, как альтернативу, можно использовать InventoryView. Если уберут возможность использовать IH для кастомных инвентарей, то InventoryView вполне подойдет в качестве замены.
 
Подниму пожалуй тему. В принципе, как альтернативу, можно использовать InventoryView. Если уберут возможность использовать IH для кастомных инвентарей, то InventoryView вполне подойдет в качестве замены.
(это я создал тему со второго акка, потому что этот на 4 месяца банили на неправильную категорию вопроса). Всё легче в 1000 раз. Была проблема с тем, что инвентарь игрока так же клики считывал. Я просто сравнил inventoryholder, а потом кликнутый инвентарь и инвентарь игрока. В первый раз хз почему, но тупил и не мог догадаться. Тема закрыта если что
 
Подниму пожалуй тему. В принципе, как альтернативу, можно использовать InventoryView. Если уберут возможность использовать IH для кастомных инвентарей, то InventoryView вполне подойдет в качестве замены.
Tо бишь, также кастомно реализовать IV, и открывать игроку уже его?
 
Tо бишь, также кастомно реализовать IV, и открывать игроку уже его?
Ага. А проверку можно примерно такую делать
PHP:
    @EventHandler
    public void onClick(InventoryClickEvent e) {
        if (e.getClickedInventory() == null) return;
        if (e.getWhoClicked().getOpenInventory() instanceof CustomInventoryView) {
            if (e.getClickedInventory().getHolder() != null && e.getClickedInventory().getHolder() instanceof Player) return;
            e.getWhoClicked().sendMessage("You clicked in custom inventory. Slot: " + e.getSlot());
        }
    }
 
Подниму пожалуй тему. В принципе, как альтернативу, можно использовать InventoryView. Если уберут возможность использовать IH для кастомных инвентарей, то InventoryView вполне подойдет в качестве замены.
Да ничего там не уберут, не ссы. В спиготе были некоторые проблемы с инвентарами вида наковальни, в бумаге сделали свою реализацию и все.
 
Последнее редактирование:
Назад
Верх