Solved Custom recipe not working

Discussion in 'Plugin Development' started by Ozeir, Jul 22, 2014.

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

    Ozeir

    Hi!
    I was making a custom item plugin, but the custom recipe isn't working

    This is my code:

    Code:java
    1. package me.braedenh.orcaxe;
    2.  
    3. import java.util.Arrays;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Material;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.enchantments.Enchantment;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.EventHandler;
    12. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    13. import org.bukkit.inventory.ItemStack;
    14. import org.bukkit.inventory.ShapedRecipe;
    15. import org.bukkit.inventory.meta.ItemMeta;
    16. import org.bukkit.plugin.java.JavaPlugin;
    17. import org.bukkit.potion.PotionEffect;
    18. import org.bukkit.potion.PotionEffectType;
    19.  
    20. public class Main extends JavaPlugin {
    21.  
    22. @EventHandler
    23. public void onDamageEvent(EntityDamageByEntityEvent e) {
    24. if(e.getEntity() instanceof Player && e.getDamager() instanceof Player) {
    25. Player damager = (Player) e.getDamager();
    26. Player damaged = (Player) e.getEntity();
    27.  
    28. if(damager.getItemInHand().getItemMeta().getLore().equals(ChatColor.DARK_GREEN + "The Brutalizer")) {
    29. damaged.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 50, 1));
    30. }
    31.  
    32. }
    33. }
    34.  
    35. public void onEnable() {
    36.  
    37. }
    38.  
    39. public boolean onCommand(CommandSender sender, Command cmd, String Label, String [] args) {
    40. if(cmd.getName().equalsIgnoreCase("OrcAxe")) {
    41. if(sender.hasPermission("orcaxe")) {
    42. Player player = (Player) sender;
    43. player.sendMessage(ChatColor.GREEN + "You've got the powerful Axe of the Orcs");
    44.  
    45. ItemStack axe = new ItemStack(Material.DIAMOND_AXE);
    46. ItemMeta meta = axe.getItemMeta();
    47. meta.setDisplayName(ChatColor.DARK_GREEN + "The Brutalizer");
    48. meta.setLore(Arrays.asList(ChatColor.GRAY + "-----------------", ChatColor.GOLD + "The Powerful Orc's Axe"));
    49. axe.setItemMeta(meta);
    50. axe.addUnsafeEnchantment(Enchantment.DURABILITY, 5);
    51. axe.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 6);
    52. axe.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, 4);
    53.  
    54. player.getInventory().addItem(axe);
    55.  
    56. }
    57. return true;
    58. }else {
    59. sender.sendMessage("You do not have permission to that command!");
    60. }
    61.  
    62. axerecipe();
    63.  
    64. return true;
    65. }
    66.  
    67.  
    68.  
    69. private void axerecipe() {
    70. ItemStack axe = new ItemStack(Material.DIAMOND_AXE);
    71. ItemMeta meta = axe.getItemMeta();
    72. meta.setDisplayName(ChatColor.DARK_GREEN + "The Brutalizer");
    73. meta.setLore(Arrays.asList(ChatColor.GRAY + "-----------------", ChatColor.GOLD + "The Powerful Orc's Axe"));
    74. axe.setItemMeta(meta);
    75. axe.addUnsafeEnchantment(Enchantment.DURABILITY, 5);
    76. axe.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 6);
    77. axe.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, 4);
    78.  
    79. ShapedRecipe s = new ShapedRecipe(axe);
    80. s.shape("dfd",
    81. "dbd",
    82. " b ");
    83. s.setIngredient('d', Material.DIAMOND_BLOCK);
    84. s.setIngredient('b', Material.BLAZE_ROD);
    85. s.setIngredient('f', Material.FERMENTED_SPIDER_EYE);
    86. getServer().addRecipe(s);
    87.  
    88. }
    89.  
    90.  
    91. public void onDisable() {
    92.  
    93. }
    94.  
    95.  
    96.  
    97. }


    I tried:

    Code:java
    1. ShapedRecipe s = new ShapedRecipe(axe);
    2. s.shape("dfd",
    3. "dbd",
    4. "aba");
    5. s.setIngredient('d', Material.DIAMOND_BLOCK);
    6. s.setIngredient('b', Material.BLAZE_ROD);
    7. s.setIngredient('f', Material.FERMENTED_SPIDER_EYE);
    8. s.setIngredient('a', Material.AIR);
    9. getServer().addRecipe(s);
    10.  
    11. }
     
  2. Offline

    Saladoc

    What exactly does happen? I once encountered the problem that after defining a custom recipe, I could craft it yet it appeared to be broken because the result slot in the crafting inventory seemed empty, but wasnt. The item's icon just wasnt displayed right.
     
  3. Offline

    Ozeir

    yea the item isn't displayed, but it doesn't give anything..
     
  4. Offline

    Saladoc

    Anything in the server log? errors? Are you sure your recipe gets added?
     
  5. Offline

    Ozeir

    Nothing in the log.
    Yes, it has to.
     
  6. Offline

    Saladoc

    Ozeir
    Okay, I'm blind.
    try moving the call "axerecipe()" from the command event to the onEnable event.
    You want your Recipe being added when the plugin is enabled, not after someone has used the command.
     
  7. Offline

    Ozeir

    Lol yeah it worked thanks man!

    Hey, I got the custom recipe working but the permissions and potion effect aren't working

    Code:
    Code:java
    1. package me.braedenh.orcaxe;
    2.  
    3. import java.util.Arrays;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Material;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.enchantments.Enchantment;
    10. import org.bukkit.entity.LivingEntity;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.event.EventHandler;
    13. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    14. import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
    15. import org.bukkit.event.inventory.InventoryClickEvent;
    16. import org.bukkit.inventory.ItemStack;
    17. import org.bukkit.inventory.ShapedRecipe;
    18. import org.bukkit.inventory.meta.ItemMeta;
    19. import org.bukkit.plugin.java.JavaPlugin;
    20. import org.bukkit.potion.PotionEffect;
    21. import org.bukkit.potion.PotionEffectType;
    22.  
    23. public class Main extends JavaPlugin {
    24.  
    25. @EventHandler
    26. public void onInventoryClick(InventoryClickEvent event){
    27. Player player = (Player) event.getWhoClicked();
    28.  
    29. if (player.hasPermission("orcaxe.craft")) return;
    30.  
    31. if(event.getSlot() == 0){
    32. if(event.getCurrentItem().getItemMeta().getLore().equals(ChatColor.DARK_GREEN + "The Brutalizer")){
    33. player.sendMessage("You do not have permission to craft the powerful Brutalizer!");
    34. event.setCancelled(true);
    35. }
    36. }
    37. }
    38. @EventHandler
    39. public void onDamageEvent(EntityTargetLivingEntityEvent e) {
    40. if(e.getEntity() instanceof Player && e.getTarget() instanceof LivingEntity) {
    41. Player damager = (Player) e.getTarget();
    42. LivingEntity damaged = (LivingEntity) e.getEntity();
    43.  
    44. if(damager.getItemInHand().getItemMeta().getLore().equals(ChatColor.DARK_GREEN + "The Brutalizer")) {
    45. damaged.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 50, 2));
    46. }
    47.  
    48. }
    49. }
    50.  
    51. @EventHandler
    52. public void onDamageEvent(EntityDamageByEntityEvent e) {
    53. if(e.getEntity() instanceof Player && e.getDamager() instanceof Player) {
    54. Player damager = (Player) e.getDamager();
    55. Player damaged = (Player) e.getEntity();
    56.  
    57. if(damager.getItemInHand().getItemMeta().getLore().equals(ChatColor.DARK_GREEN + "The Brutalizer")) {
    58. damaged.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 50, 2));
    59. }
    60.  
    61. }
    62. }
    63.  
    64. public void onEnable() {
    65.  
    66. axerecipe();
    67.  
    68. }
    69.  
    70. public boolean onCommand(CommandSender sender, Command cmd, String Label, String [] args) {
    71. if(cmd.getName().equalsIgnoreCase("OrcAxe")) {
    72. if(sender.hasPermission("orcaxe")) {
    73. Player player = (Player) sender;
    74. player.sendMessage(ChatColor.GREEN + "You've got the powerful Axe of the Orcs");
    75.  
    76. ItemStack axe = new ItemStack(Material.DIAMOND_AXE);
    77. ItemMeta meta = axe.getItemMeta();
    78. meta.setDisplayName(ChatColor.DARK_GREEN + "The Brutalizer");
    79. meta.setLore(Arrays.asList(ChatColor.GRAY + "-----------------", ChatColor.GOLD + "The Powerful Orc's Axe"));
    80. axe.setItemMeta(meta);
    81. axe.addUnsafeEnchantment(Enchantment.DURABILITY, 5);
    82. axe.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 6);
    83. axe.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, 4);
    84.  
    85. player.getInventory().addItem(axe);
    86.  
    87. }
    88. return true;
    89. }else {
    90. sender.sendMessage("You do not have permission to that command!");
    91. }
    92.  
    93.  
    94. return true;
    95. }
    96.  
    97.  
    98.  
    99. private void axerecipe() {
    100. ItemStack axe = new ItemStack(Material.DIAMOND_AXE);
    101. ItemMeta meta = axe.getItemMeta();
    102. meta.setDisplayName(ChatColor.DARK_GREEN + "The Brutalizer");
    103. meta.setLore(Arrays.asList(ChatColor.RED + "Poison II", ChatColor.GRAY + "-----------------", ChatColor.GOLD + "The Powerful Orc's Axe"));
    104. axe.setItemMeta(meta);
    105. axe.addUnsafeEnchantment(Enchantment.DURABILITY, 5);
    106. axe.addUnsafeEnchantment(Enchantment.DAMAGE_ALL, 6);
    107. axe.addUnsafeEnchantment(Enchantment.LOOT_BONUS_MOBS, 4);
    108.  
    109. ShapedRecipe s = new ShapedRecipe(axe);
    110. s.shape("dfd",
    111. "dbd",
    112. " b ");
    113. s.setIngredient('d', Material.DIAMOND_BLOCK);
    114. s.setIngredient('b', Material.BLAZE_ROD);
    115. s.setIngredient('f', Material.FERMENTED_SPIDER_EYE);
    116. getServer().addRecipe(s);
    117. }
    118.  
    119.  
    120. public void onDisable() {
    121.  
    122. }
    123.  
    124.  
    125.  
    126. }


    Or is it possible to add permissions for using the axe?
    If you don't have the permissions it will do a normal axe damage

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 9, 2016
Thread Status:
Not open for further replies.

Share This Page