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

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);
                }
            }
        }
    }
 
Код не тестил, писал в блокноте, будут проблемы пиши:

Код:
@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);
   }
}
 
Код не тестил, писал в блокноте, будут проблемы пиши:

Код:
@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);
   }
}
курсор не очищается, версия 1.15.2
 
Назад
Верх