How to add CustomItem to a Crafting Reward?

Discussion in 'Plugin Development' started by ZmazaniStone, Mar 18, 2020.

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

    ZmazaniStone

    I am pretty new with bukkit coding. So I created a custom item called AXE OF ZEUS. I want, that everytime someone craft it, he gets like xp or message, but I dont know how to add that item to another class. Here is the code.
    Code:
    package me.mateo.tutorial.Items;
    
    import me.mateo.tutorial.Tutorial1;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.inventory.ItemFlag;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.ShapedRecipe;
    import org.bukkit.inventory.ShapelessRecipe;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.Plugin;
    
    import java.util.ArrayList;
    
    public class CustomItems implements Listener {
    
    
    
    private Plugin plugin = Tutorial1.getPlugin(Tutorial1.class);
    
    
    
    
    public void customRecipe(){
    ItemStack item = new ItemStack(Material.DIAMOND_AXE,1);
    ItemMeta meta = item.getItemMeta();
    meta.setDisplayName(ChatColor.AQUA + " AXE OF ZEUS");
    ArrayList<String> lore = new ArrayList<String>();
    lore.add(ChatColor.WHITE + "Used by Zeus in the great god battle");
    meta.setLore(lore);
    meta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); // Briše 9 Attack Damage 1 Attack Speed s AXEA //
    item.setItemMeta(meta);
    ShapedRecipe r = new ShapedRecipe(item);
    r.shape("#% ","#$ "," $ ");
    r.setIngredient('#',Material.DIAMOND);
    r.setIngredient('%',Material.IRON_INGOT);
    r.setIngredient('$',Material.STICK);
    plugin.getServer().addRecipe(r);
    }
    
    public void unshaped(){
    ItemStack item = new ItemStack(Material.BLAZE_POWDER,1);
    ShapelessRecipe slr = new ShapelessRecipe(item);
    slr.addIngredient(3,Material.LAVA_BUCKET);
    slr.addIngredient(3,Material.FLINT);
    plugin.getServer().addRecipe(slr);
    
    }
    
    
    }
    Code:
    package me.mateo.tutorial.Events;
    
    
    import me.mateo.tutorial.Items.CustomItems;
    import me.mateo.tutorial.Tutorial1;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.CraftItemEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.Plugin;
    
    
    
    
    public class EventsClass implements Listener {
    
    private Plugin plugin = Tutorial1.getPlugin(Tutorial1.class);
    
    @EventHandler
    public void craftingReward(CraftItemEvent event) {
    Player player = (Player) event.getWhoClicked();
    ItemStack item = event.getCurrentItem();
    Inventory inv = event.getInventory();
    if (item.getType().equals()) {
    player.sendMessage(ChatColor.RED + "You have crafted" + ChatColor.GREEN + item.getType().toString());
    player.giveExp(100);
    plugin.getServer().broadcastMessage(player.getName() + "crafted AXE OF ZEUS");
    for(Player online : plugin.getServer().getOnlinePlayers()){
    online.getWorld().playSound(online.getLocation(), Sound.ENTITY_LIGHTNING_BOLT_THUNDER,1,1);
    
    }
    }
    }
    
    
    
    }
     
    Last edited by a moderator: Mar 18, 2020
  2. Offline

    bowlerguy66

    What I do when I want to use custom items is make them in a static method. Like this:
    Code:
    public static ItemStack getItem() {
      ItemStack item = new ItemStack(Material.DIAMOND_SWORD);
      return item;
    }
    Then you can access that method from wherever you want:
    Code:
    CustomItems.getItem();
     
  3. Offline

    ZmazaniStone


    Thank you so much bro!
     
  4. Offline

    bowlerguy66

    Anytime :) Also, make sure to mark the thread as solved
     
Thread Status:
Not open for further replies.

Share This Page