Custom item in custom recipe doesn't work !

Discussion in 'Plugin Development' started by BlaSfaiMe, May 4, 2020.

Thread Status:
Not open for further replies.
  1. Offline

    BlaSfaiMe

    Hi !
    I'm trying to create custom recipe with custom items, so I use PrepareItemCraftEvent, but with spigot 1.8, it's not working ! The event is call only when there is a specific recipe ! So how should I do ?
     
  2. Offline

    timtower Administrator Administrator Moderator

  3. Offline

    BlaSfaiMe

    There's my code
    Code:
    @EventHandler(priority = EventPriority.HIGHEST)
        public void craft(PrepareItemCraftEvent e){
            if(e.getInventory().getMatrix().length < 9) return;
            ItemStack[] craft = e.getInventory().getMatrix();
            if(craft[4].getType() == Material.DIAMOND) {
                if(craft[4].getItemMeta().getDisplayName().equals("§cRuby")) {
                    e.getRecipe().getResult().setType(Material.DIAMOND_BLOCK);
                    //e.getInventory().setResult(new ItemStack(Material.DIAMOND_BLOCK));
                }else{
                    e.getRecipe().getResult().setType(Material.AIR);
                }
            }
        }
    And the event is registered !
     
  4. Offline

    timtower Administrator Administrator Moderator

    @BlaSfaiMe And if you put a print before the first if statement? Does it run?
     
  5. Offline

    BlaSfaiMe

    Code:
    if(e.getInventory().getMatrix().length < 9) return;
    ?
    Or
    Code:
    if(craft[4].getType() == Material.DIAMOND) {
     
  6. Offline

    timtower Administrator Administrator Moderator

  7. Offline

    BlaSfaiMe

    So ! This thing is working !
    But when I add one if statement, it's doesn't work
    Code:
    @EventHandler(priority = EventPriority.HIGHEST)
        public void craft(PrepareItemCraftEvent e){
            if(e.getInventory().getMatrix().length < 9) return;
            ItemStack[] craft = e.getInventory().getMatrix();
            if(craft[4].getType() == Material.DIAMOND && craft[4].hasItemMeta()) {
                if(craft[1].getType() == Material.DIAMOND && craft[1].hasItemMeta()){
                    if(craft[4].getItemMeta().getDisplayName().equals("§cRuby") && craft[4].getItemMeta().getDisplayName().equals("§cRuby")){
                        e.getInventory().setResult(ItemsUtils.getTool(Material.DIAMOND_SWORD, "§cRuby Sword", 0, 5000, "§8Weapon", "§b§lRARE"));
                    } else {
                        e.getInventory().setResult(new ItemStack(Material.AIR));
                    }
                }
            }
        }
     
  8. Offline

    timtower Administrator Administrator Moderator

    @BlaSfaiMe Then it doesn't get past the statement.
     
Thread Status:
Not open for further replies.

Share This Page