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

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

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

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

    Tyzun Старожил

    Баллы:
    153
    Skype:
    tyzun1997
    Имя в 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 в один слот жмеш и жмеш и в один момент вещь всетаки остается в слоту)?
     
    Оригинало_о нравится это.
  2. tOshKa

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

    Баллы:
    88
    Skype:
    antloginov
    Имя в Minecraft:
    MegaFlary
    Код:
        @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);
     
            }
        }
     
  3. Code

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo

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

    Tyzun Старожил

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

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

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

    Tyzun Старожил

    Баллы:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    возможно, но я всеравно неразобрался как блочить шифт
     
    ВремяПриключений нравится это.
  7. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Код:
    if(event.isShiftClick())
    event.setCancelled();
     
  8. Автор темы
    Tyzun

    Tyzun Старожил

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

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

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

    Tyzun Старожил

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

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

    Баллы:
    123
    Имя в Minecraft:
    _Gizmo

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

    Tyzun Старожил

    Баллы:
    153
    Skype:
    tyzun1997
    Имя в Minecraft:
    _Tyzun_
    Незнаю, оно срабатывает, но на каждые 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);
              }
              }
              }
          }
     

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