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

Помогите Открывание сундуков в Creative

Тема в разделе "Разработка плагинов для новичков", создана пользователем MrDevid, 12 ноя 2017.

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

    MrDevid Активный участник

    Баллы:
    61
    Имя в Minecraft:
    MrDevid
    Добрый день, такой вопрос, с помощью этого ивента (ниже код), я запретил открывать любой виртуальный инвентарь в творческом режиме, но при этом, игроки, имеющие creative, не могут открывать меню (то есть все вещи из ChestCommands), есть ли другой способ запретить открывать обычные сундуки/эндерсундуки/верстаки?

    @EventHandler(priority=EventPriority.HIGH, ignoreCancelled=true)
    public void onInventoryOpen(InventoryOpenEvent event)
    {
    if ((event.getPlayer().getGameMode() == GameMode.CREATIVE) &&
    (!event.getPlayer().hasPermission("123")))
    {
    event.setCancelled(true);
    }
    }
     
  2. HunterGaming

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

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Проверять тип инвентаря
     
  3. CriticaMobslps

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

    Баллы:
    76
    Имя в Minecraft:
    CriticaMobs
    +
     
  4. CriticaMobslps

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

    Баллы:
    76
    Имя в Minecraft:
    CriticaMobs
    Советую создать переменную игрока, Player p = e.getplayer();
     
  5. bristol

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

    Баллы:
    46
    Смотри, можно дать вирт. инвентарю особое имя по типу Виртуальный инвентарь и т.п
    А при ивенте делать проверку имени инвентаря, скину код ещё:
    Код:
        @EventHandler
        public void onInventory(InventoryOpenEvent e) {
            if(e.getPlayer().getGameMode() == GameMode.CREATIVE) {
                if(e.getInventory().getName() == "Виртуальный сундук" && !e.getPlayer().hasPermission("Lol")) {
                    e.setCancelled(true);
                }
            }
        }
        
     
  6. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Воспользуйся PlayrInteractEvent. Ну, либо проверяй Holder инвентаря (надеюсь, у ChestCommands они кастомные).
     
  7. Автор темы
    MrDevid

    MrDevid Активный участник

    Баллы:
    61
    Имя в Minecraft:
    MrDevid
    Спасибо за совет, да, в ChestCommands они кастомные, вот такой код получился.
    Код:
    @EventHandler
      public void onInventoryOpen(InventoryOpenEvent e)
      {
        Player p = (Player)e.getPlayer();
        if ((p.getGameMode() != GameMode.CREATIVE) || (p.hasPermission("1234")) ||
          (e.getInventory().getType() == InventoryType.PLAYER) ||
          (e.getInventory().getType() == InventoryType.CREATIVE) || ((e.getInventory().getHolder() != null) &&
          (e.getInventory().getHolder().getClass().getSimpleName().equals("MenuInventoryHolder")))) {
          return;
        }
        e.setCancelled(true);
        p.sendMessage("Вы не можете открывать данный вид инвентаря в творческом режиме.");
      }
     
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    [​IMG]
    instanceof не не слышал?
     

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