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

В разработке Запрет на получение некоторых блоков из креатива

NiceWorksYouDo

Активный участник
Баллы
61
Хочу сделать чтобы некоторые блоки в креативе были доступны только донатерам. Для этого мне надо как-то отслеживать когда игроки берут эти блоки, а как это сделать я не знаю :( Подскажите, какое событие вызывается при этом и как его грамотно отменить для игроков без пермишена.
 
Хмм... Если это действительно так то можно как-нибудь контролировать весь инвентарь? К примеру каждый раз когда в нём что-то меняется проверять, и если там запрещённые предметы - удалять?
Я не уверен, что это заработает, но по идеи так. У меня сомнения на счет того, получится ли сравнить, что инвентарь является инвентарем игрока без самого экземпляра игрока.
PHP:
public class InventoryEventListener implements Listener {

    @EventHandler
    public void onInventory(@NotNull InventoryEvent event) {

        Inventory inv = event.getInventory();
        List<Material> materials = Arrays.asList(Material.DIAMOND_BLOCK, Material.GOLD_BLOCK); // Любые другие материалы, можно даже из конфига брать

        if (inv.getHolder() instanceof PlayerInventory)
            for (Material material : materials)
                if (inv.contains(material))
                    inv.remove(material);

    }

}
 
Я не уверен, что это заработает, но по идеи так. У меня сомнения на счет того, получится ли сравнить, что инвентарь является инвентарем игрока без самого экземпляра игрока.
PHP:
public class InventoryEventListener implements Listener {

    @EventHandler
    public void onInventory(@NotNull InventoryEvent event) {

        Inventory inv = event.getInventory();
        List<Material> materials = Arrays.asList(Material.DIAMOND_BLOCK, Material.GOLD_BLOCK); // Любые другие материалы, можно даже из конфига брать

        if (inv.getHolder() instanceof PlayerInventory)
            for (Material material : materials)
                if (inv.contains(material))
                    inv.remove(material);

    }

}
Не поможет твой костыль, в креативе свой отдельный ивент срабатывает, писал выше.
 

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

Назад
Верх