Войти или зарегистрироваться

Не получается сделать такое

  • Автор темы Автор темы Tyzun
  • Дата начала Дата начала

Tyzun

Старожил
Баллы
153
Имя в Minecraft
_Tyzun_
Вот написал код, которым хотел заблочит разрушение рамки в сурвивале.
Код:
 @EventHandler
      public void onBreak(HangingBreakByEntityEvent event)
      {
        Player entity = (Player)event.getRemover();
 
 
          if (!hasPerm(entity, "cl.if") && entity.getGameMode() == GameMode.SURVIVAL);
          {
            entity.sendMessage("Перейдите в креатив режим чтоб разрушить это");
            event.setCancelled(true);
          }
        }
Но оно не дает разрушить ни в креате, ни в сурвивале.

И еще, каким образом блокируется ложение определенных вещей в сундук с использованием Shiftа, и почему делая вот так
Код:
    @EventHandler
      public void onInventoryClick(InventoryClickEvent event)
      {
        Player player = (Player)event.getWhoClicked();
 
        if ((event.getInventory().getType().equals(InventoryType.CHEST)) || (event.getInventory().getType().equals(InventoryType.FURNACE)) || (event.getInventory().getType().equals(InventoryType.DISPENSER)) || (event.getInventory().getType().equals(InventoryType.DROPPER)) || (event.getInventory().getType().equals(InventoryType.HOPPER)) || (event.getInventory().getType().equals(InventoryType.BREWING))){
            if (!hasPerm(player, "cl.inventories")) {
            if(event.getCursor().getType().equals(Material.EXP_BOTTLE)){
            player.sendMessage("Вам нельзя ложить это в данный контейнер");
            event.setCancelled(true);
            }
            }
        }
При многократных попытках положить вещь в контейнер наступает момент когда получается это сделать(раз с 20-30 в один слот жмеш и жмеш и в один момент вещь всетаки остается в слоту)?
 
Код:
    @EventHandler
    public void EntityInteractEvent (PlayerInteractEntityEvent event)
    {
        Entity entity = event.getRightClicked();
        Player player = event.getPlayer();
     
        if ( entity.getType() == EntityType.ITEM_FRAME ) {
            player.sendMessage("Перейдите в креатив режим чтоб разрушить это");
 
            event.setCancelled(true);
 
        }
    }
 
Вот написал код, которым хотел заблочит разрушение рамки в сурвивале.
Код:
 @EventHandler
      public void onBreak(HangingBreakByEntityEvent event)
      {
        Player entity = (Player)event.getRemover();
 
 
          if (!hasPerm(entity, "cl.if") && entity.getGameMode() == GameMode.SURVIVAL);
          {
            entity.sendMessage("Перейдите в креатив режим чтоб разрушить это");
            event.setCancelled(true);
          }
        }
Но оно не дает разрушить ни в креате, ни в сурвивале.


if (!hasPerm(entity, "cl.if") && entity.getGameMode() == GameMode.SURVIVAL);
точку с запятой убери в конце. ей ты оторвал if от всего остального, что за ним, и оно выполняется в любом случае.
 
Спасибо, незаметил.
А на второй вопрос про контейнеры ответа все же не нашел.
 
Спасибо, незаметил.
А на второй вопрос про контейнеры ответа все же не нашел.

ты уверен, что она на самом деле там остается? это может быть визуальный глюк только на стороне игрока.
 
Я проверил, и это не визуальный баг, и что же с этим делать
Можно инвентарь обновлять, но будет ещё страшнее. Можно проверять содержимое сундука(или иного инвентаря)
 
невыходит все же, быстрым кликом за 30 секунд выложил в сундук стак алмов
 
И еще, каким образом блокируется ложение определенных вещей в сундук с использованием Shiftа, и почему делая вот так
Код:
    @EventHandler
      public void onInventoryClick(InventoryClickEvent event)
      {
        Player player = (Player)event.getWhoClicked();
 
        if ((event.getInventory().getType().equals(InventoryType.CHEST)) || (event.getInventory().getType().equals(InventoryType.FURNACE)) || (event.getInventory().getType().equals(InventoryType.DISPENSER)) || (event.getInventory().getType().equals(InventoryType.DROPPER)) || (event.getInventory().getType().equals(InventoryType.HOPPER)) || (event.getInventory().getType().equals(InventoryType.BREWING))){
            if (!hasPerm(player, "cl.inventories")) {
            if(event.getCursor().getType().equals(Material.EXP_BOTTLE)){
            player.sendMessage("Вам нельзя ложить это в данный контейнер");
            event.setCancelled(true);
            }
            }
        }
При многократных попытках положить вещь в контейнер наступает момент когда получается это сделать(раз с 20-30 в один слот жмеш и жмеш и в один момент вещь всетаки остается в слоту)?


может getInventory().getType() тебе возвращает не инвентарь сундука или еще чего, а инвентарь игрока? поэтому условие не срабатывает и ничего не происходит.
 
Незнаю, оно срабатывает, но на каждые 10-15 попыток дает осечку
Код:
@EventHandler
    public void onInventoryClick(InventoryClickEvent event)
    {
          if ((event.getInventory().getType().equals(InventoryType.CHEST)) || (event.getInventory().getType().equals(InventoryType.FURNACE)) || (event.getInventory().getType().equals(InventoryType.DISPENSER)) || (event.getInventory().getType().equals(InventoryType.DROPPER)) || (event.getInventory().getType().equals(InventoryType.HOPPER)) || (event.getInventory().getType().equals(InventoryType.BREWING)) || (event.getInventory().getType().equals(InventoryType.DROPPER))){
              Player player = (Player)event.getWhoClicked();
              boolean noput = false;
           
              if (event.getRawSlot() < event.getInventory().getSize()) {
                  if((event.getCursor().getType().equals(Material.ВЕЩЬ)) || event.isShiftClick()){
                  noput = true;
                  }
              }
         
          if(noput && !(hasPerm(player, "cl.inventories"))){
              event.getInventory().setItem(event.getRawSlot(), new ItemStack(Material.AIR));
              event.getWhoClicked().getInventory().addItem(new ItemStack[] { new ItemStack(event.getCursor().getType(), event.getCursor().getAmount()) });
              event.getCursor().setAmount(0);
              event.setCursor(new ItemStack(Material.AIR));
              player.updateInventory();
              return;
          }
      }
    }
Вроде нашел решение, хоть и сложное
Не подскажите хороший урок по созданию конфигов(желательно не видео), а то я задолблюсь вписывать все нужные вещи и инвентари.
Да блин, что ж за неудача, протестил этот вариант: добиться того. чтоб вещь осталась теперь сложнее, но все же возможно.
+ второй вариант лишает зачара вещей
Алилуйя, уже аж голова болит, но у меня вышло это
Код:
 public void onInventoryClick(InventoryClickEvent event)
    {
      Player player = (Player)event.getWhoClicked();
      ItemStack holding = event.getCurrentItem();
      Inventory inv = event.getInventory();
      if ((inv.getType().equals(InventoryType.CHEST)) || (inv.getType().equals(InventoryType.FURNACE)) || (inv.getType().equals(InventoryType.DISPENSER)) || (inv.getType().equals(InventoryType.DROPPER)) || (inv.getType().equals(InventoryType.HOPPER)) || (inv.getType().equals(InventoryType.BREWING))){
          if (!hasPerm(player, "cl.inventories")) {
          if((holding.getType().equals(Material.ВЕЩЬ))){
          player.sendMessage("Вам нельзя ложить это в данный контейнер");
          event.setCancelled(true);
          }
          }
          }
      }
 
Назад
Верх