How to add a name to a custom crafting recipe

Discussion in 'Plugin Development' started by Toastblock, Aug 5, 2013.

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

    Toastblock

    I have this for my explosive arrow
    public void onEnable() {
    // makes new recipe on server
    ItemStack explodingArrow = new ItemStack(Material.BLAZE_ROD, 1);
    ShapedRecipe recipe = new ShapedRecipe(explodingArrow);
    recipe.shape(new String[] { "s", "c" }).setIngredient('s', Material.STICK).setIngredient('c', Material.COAL);
    this.getServer().addRecipe(recipe);
    and i want to name it &7[&6Explosive Arrow&7]
    How do i accomplish this?
     
  2. Set the item meta of the result stack?
     
  3. Offline

    Toastblock

  4. Offline

    Axe2760

    It's simple, just do what tehbeard said. Put this in:​
    ItemStack explodingArrow = new ItemStack(Material.BLAZE_ROD, 1);​
    ItemMeta explodingMeta = explodingArrow.getItemMeta();​
    explodingMeta.setDisplayName("name");​
    explodingArrow.setItemMeta(explodingMeta);​
     
  5. Offline

    Toastblock

    Here is everything, can you add what I need?
    package me.Joey.MultiArrow;




    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.entity.Arrow;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Projectile;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.ChatColor;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerItemHeldEvent;
    import org.bukkit.event.entity.EntityShootBowEvent;
    import org.bukkit.event.entity.ProjectileHitEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.inventory.ShapedRecipe;
    import org.bukkit.plugin.java.JavaPlugin;

    public class MultiArrow extends JavaPlugin implements Listener {


    int ExplosiveArrow = 0;

    // Executed when the plugin is enabled (automatically at server startup).
    public void onEnable() {
    // makes new recipe on server
    ItemStack explodingArrow = new ItemStack(Material.BLAZE_ROD, 1);
    ShapedRecipe recipe = new ShapedRecipe(explodingArrow);
    recipe.shape(new String[] { "s", "c" }).setIngredient('s', Material.STICK).setIngredient('c', Material.COAL);
    this.getServer().addRecipe(recipe);

    // *
    getServer().getPluginManager().registerEvents(this, this);
    }


    @EventHandler
    public void onEntityShootBow(EntityShootBowEvent event) {

    this.ExplosiveArrow = 0;
    }

    @EventHandler
    public void onProjectileHit(ProjectileHitEvent event) {
    Projectile projectile = event.getEntity();

    Arrow arrow;
    Player player;

    // Just interesting in arrow
    try {
    arrow = (Arrow) projectile;
    } catch (ClassCastException e) {
    return;
    }

    // Just interested in player
    try {
    player = (Player) arrow.getShooter();
    } catch (ClassCastException e) {
    return;
    }

    // Player needs TNT in Inv for Explosive Arrow

    if (player.getInventory().contains(Material.BLAZE_ROD, 1) && player.getInventory().contains(Material.ARROW, 1)) {
    // Create an explosion less powerful than the creeper explosion
    // which has power 4
    arrow.getWorld().createExplosion(arrow.getLocation(), 2f);

    // Remove a arrow from player inventory.
    player.getInventory().removeItem(new ItemStack(Material.BLAZE_ROD, 1));

    }


    }


    @EventHandler(priority=EventPriority.HIGH)
    public void onPlayerItemHeld(PlayerItemHeldEvent event){
    Player p = event.getPlayer();
    if (this.ExplosiveArrow == 1) {
    // Arrow loaded but guy switched items and didnt shoot
    // Remove the arrow if not in creative
    if (p.getGameMode() != GameMode.CREATIVE) {
    p.getInventory().removeItem(new ItemStack(Material.ARROW, 1));
    }
    this.ExplosiveArrow = 0;
    }
    }

    @EventHandler(priority=EventPriority.HIGH)
    public void onPlayerUse(PlayerInteractEvent event){
    Player p = event.getPlayer();

    if(event.getAction().equals(Action.RIGHT_CLICK_AIR) &&
    this.ExplosiveArrow == 0 &&
    p.getItemInHand().getType() == Material.BOW &&
    p.getGameMode() != GameMode.CREATIVE && // No need for arrows in inventory in creative mode
    p.getInventory().contains(Material.BLAZE_ROD, 1)) // need at least one TNT in inventory for explosion
    {
    p.getInventory().addItem(new ItemStack(Material.ARROW, 1));
    this.ExplosiveArrow = 1;
    }
    }
    }
     
Thread Status:
Not open for further replies.

Share This Page