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

  • Автор темы Автор темы 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);
}
}
 
Добрый день, такой вопрос, с помощью этого ивента (ниже код), я запретил открывать любой виртуальный инвентарь в творческом режиме, но при этом, игроки, имеющие 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);
}
}
Проверять тип инвентаря
 
Добрый день, такой вопрос, с помощью этого ивента (ниже код), я запретил открывать любой виртуальный инвентарь в творческом режиме, но при этом, игроки, имеющие 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);
}
}
Советую создать переменную игрока, Player p = e.getplayer();
 
Смотри, можно дать вирт. инвентарю особое имя по типу Виртуальный инвентарь и т.п
А при ивенте делать проверку имени инвентаря, скину код ещё:
Код:
    @EventHandler
    public void onInventory(InventoryOpenEvent e) {
        if(e.getPlayer().getGameMode() == GameMode.CREATIVE) {
            if(e.getInventory().getName() == "Виртуальный сундук" && !e.getPlayer().hasPermission("Lol")) {
                e.setCancelled(true);
            }
        }
    }
 
Воспользуйся PlayrInteractEvent. Ну, либо проверяй Holder инвентаря (надеюсь, у ChestCommands они кастомные).
 
Спасибо за совет, да, в 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("Вы не можете открывать данный вид инвентаря в творческом режиме.");
  }
Воспользуйся PlayrInteractEvent. Ну, либо проверяй Holder инвентаря (надеюсь, у ChestCommands они кастомные).
 
Спасибо за совет, да, в 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("Вы не можете открывать данный вид инвентаря в творческом режиме.");
  }
226679318_81a547b3ee233bffa1417205741fb2f2_800.gif

instanceof не не слышал?
 
Назад
Верх