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

Помогите Как проверять предмет в курсоре, и предмет на который кликают.

Тема в разделе "Разработка плагинов для новичков", создана пользователем YoungHefner_, 17 май 2020.

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

    YoungHefner_ Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    golyb_
    Нужно сделать так, чтобы если игрок кликает например стрелой на предмет, то с определённым шансом на предмет накладываются кастомные зачарования. Накалякал тут код, но у меня полный бред получился, да и нерабочий.

    Код:
    @EventHandler
        public void nindj(InventoryClickEvent e) {
            
            Player p = (Player) e.getWhoClicked();
            ItemStack item = e.getCurrentItem();
            ItemStack itemG = e.getCursor();
            
            int a = 1;
            int b = 10;
            
            int change = a + (int) (Math.random() * b);
            
            ItemStack nindja = new ItemStack(Material.DIAMOND_CHESTPLATE);
            ItemMeta nind = nindja.getItemMeta();
            List<String> lore = new ArrayList<String>();
            lore.add("§3Ниндзя II");
            nind.setLore(lore);
            nindja.setItemMeta(nind);
            
            
            if(!(item.getType().equals(Material.DIAMOND_CHESTPLATE))) {
                if(itemG.getType().equals(Material.ARROW)) {
                    if(change<=5) {
                        itemG.setType(Material.AIR);
                        p.sendMessage("§cК сожалению, книга не наложилась.");
                        return;
                    } else if(change>5){
                        itemG.setType(Material.AIR);
                        p.sendMessage("§aПоздравляем! Вы успешно наложили книгу на предмет!");
                        item.setType(Material.AIR);;
                        p.getInventory().addItem(nindja);
                    }
                }
            }
        }
     
  2. WhileInside

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

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    Код не тестил, писал в блокноте, будут проблемы пиши:

    Код:
    @EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
      ItemStack clickedItem = event.getCurrentItem();
      ItemStack clickedWith = event.getCursor();
     
      if (clickedItem == null || clickedWith == null) {
        return;
      }
    
      Player player = (Player) event.getWhoClicked();
     
      if(clickedItem.getType() == Material.DIAMOND_CHESTPLATE
              && clickedWith.getType() == Materia.ARROW) {
          // очищаем курсор
          event.setCursor(null);
    
          float chance = Math.random();
    
          if(change < 0.5F) { // с шансом 50% не получится наложить книгу на предмет
            player.sendMessage("§cК сожалению, книга не наложилась.");
            return;
          }
          
          player.sendMessage("§aПоздравляем! Вы успешно наложили книгу на предмет!");
    
          ItemMeta clickedItemMeta = clickedItem.getItemMeta();
          clickedItemMeta.setLore(Arrays.asList("§3Ниндзя II"));
          clickedItem.setItemMeta(clickedItemMeta);
       }
    }
    
     
  3. Автор темы
    YoungHefner_

    YoungHefner_ Ньюби Пользователь

    Баллы:
    1
    Имя в Minecraft:
    golyb_
    курсор не очищается, версия 1.15.2
     
  4. WhileInside

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

    Баллы:
    66
    Имя в Minecraft:
    WhileInside
    уф, попробуй заменить event.setCursor(null) на clickedWith.setType(Material.AIR);
     

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