Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

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

Discussion in 'Разработка плагинов для новичков' started by Tyzun, Sep 8, 2013.

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

    Tyzun Старожил

    Trophy Points:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    Вот написал код, которым хотел заблочит разрушение рамки в сурвивале.
    Code:
     @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а, и почему делая вот так
    Code:
        @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 в один слот жмеш и жмеш и в один момент вещь всетаки остается в слоту)?
     
    Оригинало_о likes this.
  2. Хостинг MineCraft
    <
  3. tOshKa

    tOshKa Активный участник Заблокирован

    Trophy Points:
    88
    Skype:
    antloginov
    Имя в Minecraft:
    MegaFlary
    Code:
        @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);
     
            }
        }
     
  4. Code

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

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo

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

    Tyzun Старожил

    Trophy Points:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    Спасибо, незаметил.
    А на второй вопрос про контейнеры ответа все же не нашел.
     
  6. Code

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

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo
    ты уверен, что она на самом деле там остается? это может быть визуальный глюк только на стороне игрока.
     
  7. Автор темы
    Tyzun

    Tyzun Старожил

    Trophy Points:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    возможно, но я всеравно неразобрался как блочить шифт
     
  8. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Code:
    if(event.isShiftClick())
    event.setCancelled();
     
  9. Автор темы
    Tyzun

    Tyzun Старожил

    Trophy Points:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    Я проверил, и это не визуальный баг, и что же с этим делать
     
  10. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Trophy Points:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Можно инвентарь обновлять, но будет ещё страшнее. Можно проверять содержимое сундука(или иного инвентаря)
     
  11. Автор темы
    Tyzun

    Tyzun Старожил

    Trophy Points:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    невыходит все же, быстрым кликом за 30 секунд выложил в сундук стак алмов
     
  12. Code

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

    Trophy Points:
    123
    Имя в Minecraft:
    _Gizmo

    может getInventory().getType() тебе возвращает не инвентарь сундука или еще чего, а инвентарь игрока? поэтому условие не срабатывает и ничего не происходит.
     
  13. Автор темы
    Tyzun

    Tyzun Старожил

    Trophy Points:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    Незнаю, оно срабатывает, но на каждые 10-15 попыток дает осечку[DOUBLEPOST=1378752039,1378750098][/DOUBLEPOST]
    Code:
    @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;
              }
          }
        }
    Вроде нашел решение, хоть и сложное[DOUBLEPOST=1378752106][/DOUBLEPOST]Не подскажите хороший урок по созданию конфигов(желательно не видео), а то я задолблюсь вписывать все нужные вещи и инвентари.[DOUBLEPOST=1378752250][/DOUBLEPOST]Да блин, что ж за неудача, протестил этот вариант: добиться того. чтоб вещь осталась теперь сложнее, но все же возможно.[DOUBLEPOST=1378752501][/DOUBLEPOST]+ второй вариант лишает зачара вещей[DOUBLEPOST=1378755299][/DOUBLEPOST]Алилуйя, уже аж голова болит, но у меня вышло это
    Code:
     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);
              }
              }
              }
          }
     

Share This Page