Solved modifying vanilla recipes results, I got a null pointer exception

Discussion in 'Plugin Development' started by Helldragger, Jul 5, 2014.

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

    Helldragger

    Hey there, Recently I've been working around with crafting recipes on one of my plugins (RolePlaySpeciality Weapons) and can't bear more an strange error that I can't aim! Here is my debug stuff at launching:

    Code:
    ...again and again....
    [12:30:12 WARN]: GOLD_LEGGINGS recipe cannot be added in shapelessrecipe form
    [12:30:12 ERROR]: reason:org.bukkit.craftbukkit.v1_7_R1.inventory.CraftShapedRec
    ipe cannot be cast to org.bukkit.inventory.ShapelessRecipe
    [12:30:12 WARN]: GOLD_BOOTS recipe cannot be added in shapedrecipe form
    [12:30:12 WARN]: java.lang.NullPointerException
    [12:30:12 WARN]:        at RolePlaySpecialityWeapons.RPSWPlugin.loadRecipes(RPSW
    Plugin.java:207)
    [12:30:12 WARN]:        at RolePlaySpecialityWeapons.RPSWPlugin.loadData(RPSWPlu
    gin.java:171)
    [12:30:12 WARN]:        at RolePlaySpecialityWeapons.RPSWPlugin.onEnable(RPSWPlu
    gin.java:80)
    [12:30:12 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlug
    in.java:250)
    [12:30:12 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(
    JavaPluginLoader.java:350)
    [12:30:12 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(Si
    mplePluginManager.java:389)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin
    (CraftServer.java:439)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlug
    ins(CraftServer.java:375)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(Cra
    ftServer.java:773)
    [12:30:12 WARN]:        at org.bukkit.Bukkit.reload(Bukkit.java:279)
    [12:30:12 WARN]:        at org.bukkit.command.defaults.ReloadCommand.execute(Rel
    oadCommand.java:23)
    [12:30:12 WARN]:        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCo
    mmandMap.java:175)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCo
    mmand(CraftServer.java:683)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchSe
    rverCommand(CraftServer.java:670)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.DedicatedServer.aw(Dedic
    atedServer.java:286)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.DedicatedServer.u(Dedica
    tedServer.java:251)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.MinecraftServer.t(Minecr
    aftServer.java:545)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.MinecraftServer.run(Mine
    craftServer.java:457)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.ThreadServerApplication.
    run(SourceFile:617)
    [12:30:12 WARN]: GOLD_BOOTS recipe cannot be added in shapelessrecipe form
    [12:30:12 ERROR]: reason:org.bukkit.craftbukkit.v1_7_R1.inventory.CraftShapedRec
    ipe cannot be cast to org.bukkit.inventory.ShapelessRecipe
    [12:30:12 WARN]: FISHING_ROD recipe cannot be added in shapedrecipe form
    [12:30:12 WARN]: java.lang.NullPointerException
    [12:30:12 WARN]:        at RolePlaySpecialityWeapons.RPSWPlugin.loadRecipes(RPSW
    Plugin.java:207)
    [12:30:12 WARN]:        at RolePlaySpecialityWeapons.RPSWPlugin.loadData(RPSWPlu
    gin.java:171)
    [12:30:12 WARN]:        at RolePlaySpecialityWeapons.RPSWPlugin.onEnable(RPSWPlu
    gin.java:80)
    [12:30:12 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlug
    in.java:250)
    [12:30:12 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(
    JavaPluginLoader.java:350)
    [12:30:12 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(Si
    mplePluginManager.java:389)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin
    (CraftServer.java:439)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlug
    ins(CraftServer.java:375)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(Cra
    ftServer.java:773)
    [12:30:12 WARN]:        at org.bukkit.Bukkit.reload(Bukkit.java:279)
    [12:30:12 WARN]:        at org.bukkit.command.defaults.ReloadCommand.execute(Rel
    oadCommand.java:23)
    [12:30:12 WARN]:        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCo
    mmandMap.java:175)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCo
    mmand(CraftServer.java:683)
    [12:30:12 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchSe
    rverCommand(CraftServer.java:670)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.DedicatedServer.aw(Dedic
    atedServer.java:286)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.DedicatedServer.u(Dedica
    tedServer.java:251)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.MinecraftServer.t(Minecr
    aftServer.java:545)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.MinecraftServer.run(Mine
    craftServer.java:457)
    [12:30:12 WARN]:        at net.minecraft.server.v1_7_R1.ThreadServerApplication.
    run(SourceFile:617)
    [12:30:12 WARN]: FISHING_ROD recipe cannot be added in shapelessrecipe form
    [12:30:12 ERROR]: reason:org.bukkit.craftbukkit.v1_7_R1.inventory.CraftShapedRec
    ipe cannot be cast to org.bukkit.inventory.ShapelessRecipe
    [12:30:12 ERROR]: these items has encountered problems while changing their reci
    pes:
    [12:30:12 ERROR]:  - IRON_PICKAXE
    [12:30:12 ERROR]:  - IRON_AXE
    [12:30:12 ERROR]:  - WOOD_PICKAXE
    [12:30:12 ERROR]:  - WOOD_AXE
    [12:30:12 ERROR]:  - STONE_PICKAXE
    [12:30:12 ERROR]:  - STONE_AXE
    [12:30:12 ERROR]:  - DIAMOND_PICKAXE
    [12:30:12 ERROR]:  - DIAMOND_AXE
    [12:30:12 ERROR]:  - GOLD_PICKAXE
    [12:30:12 ERROR]:  - GOLD_AXE
    [12:30:12 ERROR]:  - WOOD_HOE
    [12:30:12 ERROR]:  - STONE_HOE
    [12:30:12 ERROR]:  - IRON_HOE
    [12:30:12 ERROR]:  - DIAMOND_HOE
    [12:30:12 ERROR]:  - GOLD_HOE
    [12:30:12 ERROR]:  - LEATHER_HELMET
    [12:30:12 ERROR]:  - LEATHER_CHESTPLATE
    [12:30:12 ERROR]:  - LEATHER_LEGGINGS
    [12:30:12 ERROR]:  - LEATHER_BOOTS
    [12:30:12 ERROR]:  - CHAINMAIL_HELMET
    [12:30:12 ERROR]:  - CHAINMAIL_CHESTPLATE
    [12:30:12 ERROR]:  - CHAINMAIL_LEGGINGS
    [12:30:12 ERROR]:  - CHAINMAIL_BOOTS
    [12:30:12 ERROR]:  - IRON_HELMET
    [12:30:12 ERROR]:  - IRON_CHESTPLATE
    [12:30:12 ERROR]:  - IRON_LEGGINGS
    [12:30:12 ERROR]:  - IRON_BOOTS
    [12:30:12 ERROR]:  - DIAMOND_HELMET
    [12:30:12 ERROR]:  - DIAMOND_CHESTPLATE
    [12:30:12 ERROR]:  - DIAMOND_LEGGINGS
    [12:30:12 ERROR]:  - DIAMOND_BOOTS
    [12:30:12 ERROR]:  - GOLD_HELMET
    [12:30:12 ERROR]:  - GOLD_CHESTPLATE
    [12:30:12 ERROR]:  - GOLD_LEGGINGS
    [12:30:12 ERROR]:  - GOLD_BOOTS
    [12:30:12 ERROR]:  - FISHING_ROD
    [12:30:12 INFO]: RolePlayspeciality Weapons v0.52 by [Helldragger (RolePlaySpeci
    ality creator)] is now enabled!

    The last list is my debugging test that show which recipes bugged, and I replace every stuff of the vanilla minecrfat (axes, pickaxes, spades, hoes, rod, bow, weapons, armors.) but as you can see, some of them doesn't want to work,

    My work is currently to cpoy the original recipe but to change the result before replacing recipe, shepeless and shaped recipes are ok but not these items, there is the aim code:

    Code:java
    1. void loadRecipes()
    2. {
    3. List<Material> failedChanges = new ArrayList<Material>();
    4.  
    5. for(Material material : Material.values())
    6. {
    7. if(TypeChecker.isLevellable(material))
    8. {
    9. String itemName = material.name();
    10. ItemStack itemStack = new ItemStack( Material.getMaterial( itemName.toUpperCase().replace(" ", "_") ),1 );
    11. List<Recipe> itemRecipes = Bukkit.getRecipesFor( itemStack );
    12.  
    13. for(Recipe recipe : itemRecipes)
    14. {
    15. try
    16. {
    17. ShapedRecipe recipe2 = (ShapedRecipe) recipe;
    18. ShapedRecipe newRecipe = new ShapedRecipe(new LevelData(itemStack));
    19.  
    20. newRecipe.shape(recipe2.getShape());
    21.  
    22. for(char key : recipe2.getIngredientMap().keySet())
    23. {
    24. if (key != " ".charAt(0))
    25. newRecipe.setIngredient(key, recipe2.getIngredientMap().get(key).getData());
    26. }
    27.  
    28. removeRecipe(recipe2);
    29. Bukkit.addRecipe(newRecipe);
    30. log.info("item"+ itemStack.getType().name()+ "successflully changed.");
    31. }
    32. catch(Exception e)
    33. {
    34. log.warning(itemName+" recipe cannot be added in shapedrecipe form");
    35. if (e.getLocalizedMessage() != null)
    36. log.warning("reason :"+ e.getLocalizedMessage());
    37. else
    38. e.printStackTrace();
    39.  
    40. try
    41. {
    42. ShapelessRecipe recipe2 = (ShapelessRecipe) recipe;
    43. ShapelessRecipe newRecipe = new ShapelessRecipe(new LevelData(itemStack));
    44.  
    45. for(ItemStack ingredient : recipe2.getIngredientList())
    46. {
    47. newRecipe.addIngredient(ingredient.getData());
    48. }
    49.  
    50. removeRecipe(recipe2);
    51. Bukkit.addRecipe(newRecipe);
    52. log.info("item"+ itemStack.getType().name()+ "successflully changed.");
    53. }
    54. catch(Exception e2)
    55. {
    56. failedChanges.add(itemStack.getType());
    57. log.warning(itemName+" recipe cannot be added in shapelessrecipe form");
    58. log.severe("reason:"+ e2.getLocalizedMessage());
    59. }
    60. }
    61. }
    62. }
    63. }
    64. if (!failedChanges.isEmpty())
    65. {
    66. log.severe("these items has encountered problems while changing their recipes: ");
    67. Iterator<Material> it = failedChanges.iterator();
    68. while (it.hasNext())
    69. {
    70. Material itMaterial = it.next();
    71. log.severe(" - "+ itMaterial.name());
    72. }
    73. }
    74. }
    75.  
    76. public void removeRecipe(Recipe inputRecipe){
    77.  
    78. Iterator<Recipe> it = getServer().recipeIterator();
    79. Recipe recipe;
    80. while(it.hasNext())
    81. {
    82. recipe = it.next();
    83. if (recipe != null && recipe.getResult().getType() == inputRecipe.getResult().getType())
    84. {
    85. it.remove();
    86. log.info("recipe of "+recipe.getResult()+" successfully removed.");
    87. }
    88. }
    89. }


    EDIT Just forget what I just asked, I finally realized that I was doing minecraft server send a type of itemstack (LevelData) who is created by my plug in and that minecraft vanilla client hadn't reocgnize, I just made a fault by outrepassing plugin to mod limits. ^^' I solved it and changed the fonctionnement but I still need help to create a shapeless recipe, they are unusaable, when I use them, the result often doesn't appear....
     
Thread Status:
Not open for further replies.

Share This Page