UnsafeEnchantment error

Discussion in 'Plugin Development' started by DefineCoding, Jul 14, 2014.

Thread Status:
Not open for further replies.
  1. Hi, I just finished a kitpvp plugin and tested the kits, I saw that when I did /archer there was an internal error and it gives me nothing, I think this is because of the armor because in the console there was a long error about UnsafeEnchantments, here is my armor code:
    Code:
    ItemStack lboots = new ItemStack(Material.LEATHER_BOOTS);
    lboots.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
    p.getInventory().setBoots(new ItemStack( lboots ));
     
  2. DefineCoding Please show us the error

    Edit: Wait, why are you creating a new itemstack? lboots IS and itemstack.
     
  3. Offline

    Necrodoom

    Paste full class and console error.
     
  4. Offline

    Aventium

    Try this
    Code:java
    1. ItemStack lboots = new ItemStack(Material.LEATHER_BOOTS);
    2. lboots.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
    3. p.getInventory().setBoots(lboots);
     
  5. Aventium
    Tried it, still the same error
    Necrodoom
    Here's the class:
    Code:java
    1. package me.Tim.OverLordKits;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.Material;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandExecutor;
    7. import org.bukkit.command.CommandSender;
    8. import org.bukkit.enchantments.Enchantment;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.inventory.ItemStack;
    11.  
    12. public class Archer implements CommandExecutor {
    13.  
    14. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel,String[] args) {
    15. Player p = (Player) sender;
    16. if(cmd.getName().equalsIgnoreCase("archer")) {
    17. p.getInventory().clear();
    18. p.sendMessage(ChatColor.YELLOW + "NoxiousPvP > "+ ChatColor.WHITE + "You have chosen the " + ChatColor.YELLOW + " Archer " + ChatColor.WHITE + "kit!");
    19. ItemStack isword = new ItemStack(Material.IRON_SWORD);
    20. ItemStack bow = new ItemStack(Material.BOW);
    21. isword.addEnchantment(Enchantment.KNOCKBACK, 2);
    22. isword.addEnchantment(Enchantment.ARROW_INFINITE, 1);
    23. bow.addEnchantment(Enchantment.ARROW_DAMAGE, 3);
    24. p.getInventory().addItem(new ItemStack[] { isword });
    25. p.getInventory().addItem(new ItemStack[] { bow });
    26. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    27. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    28. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    29. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    30. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    31. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    32. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    33. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    34. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    35. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    36. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    37. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    38. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    39. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    40. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    41. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    42. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    43. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    44. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    45. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    46. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    47. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    48. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    49. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    50. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    51. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    52. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    53. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    54. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    55. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    56. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    57. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    58. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP));
    59. p.getInventory().addItem(new ItemStack(Material.ARROW));
    60. ItemStack lboots = new ItemStack(Material.LEATHER_BOOTS);
    61. lboots.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
    62. ItemStack lleggings = new ItemStack(Material.LEATHER_LEGGINGS);
    63. lleggings.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
    64. ItemStack lchestplate = new ItemStack(Material.LEATHER_CHESTPLATE);
    65. lchestplate.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
    66. ItemStack lhelmet = new ItemStack(Material.LEATHER_HELMET);
    67. lhelmet.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
    68. p.getInventory().setBoots(new ItemStack( lboots ));
    69. p.getInventory().setLeggings(new ItemStack( lleggings ));
    70. p.getInventory().setChestplate(new ItemStack( lchestplate ));
    71. p.getInventory().setHelmet(new ItemStack( lhelmet ));
    72.  
    73. }
    74. return false;
    75. }
    76. }
    77.  

    Console Error:

    [11:03:26] [Server thread/INFO]: Define_PvP issued server command: /archer
    [11:03:26] [Server thread/ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'archer' in plugin OverLordKits v2.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:175) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:683) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:952) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:814) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    Caused by: java.lang.IllegalArgumentException: Specified enchantment cannot be applied to this itemstack
    at org.bukkit.inventory.ItemStack.addEnchantment(ItemStack.java:432) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    at me.Tim.OverLordKits.Archer.onCommand(Archer.java:22) ~[?:?]
     
  6. Offline

    L33m4n123

    Well read the stacktrace. It tells you that in line 22 you add an enchantment not made for this item. And if you check your line 22 you add to your IRON_SWORD the Enchantment ARROW_INFINITE .. thats were you would need to use UnsafeEnchatnments OR switch it out with the bow as what you prolly wanted to do
     
  7. Offline

    Necrodoom

    DefineCoding That code has so many errors.
    1. You cast sender to player before checking if its a player
    2. Line 22 - isword.addEnchantment(Enchantment.ARROW_INFINITE, 1); That enchantment is not a sword one.
    3. You take an existing itemstack, and make an identical itemstack to add to inventory, why? You also do it more uselessly above when you make an item stack array of one itemstack for absolutely no reason at all.
    4. Put that soup adding in a loop.
     
Thread Status:
Not open for further replies.

Share This Page