Solved NullPointer? Why? I know the line, but not how to fix it. Thanks

Discussion in 'Plugin Development' started by MayoDwarf, Mar 14, 2014.

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

    MayoDwarf

    Code:java
    1. [16:47:11 ERROR]: Could not pass event PlayerInteractEvent to NextKits v1.0
    2. org.bukkit.event.EventException
    3. at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    4. at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    5. at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:486) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    6. at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:471) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    7. at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:195) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    8. at net.minecraft.server.v1_7_R1.PlayerInteractManager.interact(PlayerInteractManager.java:374) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    9. at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:628) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    10. at net.minecraft.server.v1_7_R1.PacketPlayInBlockPlace.a(SourceFile:60) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    11. at net.minecraft.server.v1_7_R1.PacketPlayInBlockPlace.handle(SourceFile:9) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    12. at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    13. at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    14. at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    15. at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    16. at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    17. at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    18. at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    19. Caused by: java.lang.NullPointerException
    20. at com.core.mayodwarf.Main.onInteract(Main.java:73) ~[?:?]
    21. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.6.0_65]
    22. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[?:1.6.0_65]
    23. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[?:1.6.0_65]
    24. at java.lang.reflect.Method.invoke(Method.java:597) ~[?:1.6.0_65]
    25. at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:318) ~[spigot.jar:git-Bukkit-1.7.2-R0.3-b3020jnks]
    26. ... 15 more

    ^ Error
    Code:java
    1. package com.core.mayodwarf;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.Material;
    5. import org.bukkit.block.Block;
    6. import org.bukkit.block.BlockState;
    7. import org.bukkit.block.Sign;
    8. import org.bukkit.configuration.file.FileConfiguration;
    9. import org.bukkit.event.EventHandler;
    10. import org.bukkit.event.Listener;
    11. import org.bukkit.event.block.Action;
    12. import org.bukkit.event.player.PlayerInteractEvent;
    13. import org.bukkit.inventory.ItemStack;
    14. import org.bukkit.plugin.java.JavaPlugin;
    15.  
    16. import java.util.ArrayList;
    17. import java.util.List;
    18.  
    19. import java.io.IOException;
    20.  
    21. /**
    22. * Created with IntelliJ IDEA.
    23. * User: MayoDwarf
    24. * Date: 2/25/14
    25. * Time: 9:35 PM
    26. * To change this template use File | Settings | File Templates.
    27. */
    28. public class Main extends JavaPlugin implements Listener {
    29. private FileConfiguration config;
    30. public void onEnable() {
    31. this.getConfig();
    32. this.saveDefaultConfig();
    33. this.getServer().getPluginManager().registerEvents(this, this);
    34. }
    35. public void onDisable() {}
    36. @EventHandler
    37. public void onInteract(PlayerInteractEvent evt) {
    38. if(evt.getAction() == Action.RIGHT_CLICK_BLOCK) {
    39. Block b = evt.getClickedBlock();
    40. BlockState bs = b.getState();
    41. if(bs instanceof Sign) {
    42. Sign s = (Sign) bs;
    43. if(s.getLine(0).equalsIgnoreCase("[SaveKit]")) {
    44. if(evt.getPlayer().hasPermission("Kits."+s.getLine(1))) {
    45. if(getConfig().contains("Players."+evt.getPlayer().getName()+"."+s.getLine(1)+".kit")) {
    46. List<ItemStack> list1 = (List<ItemStack>) this.getConfig().getList("Players." + evt.getPlayer().getName() + "." + s.getLine(1) + ".kit");
    47. list1.clear();
    48. }
    49. for(ItemStack items : evt.getPlayer().getInventory().getContents()) {
    50. if(items !=null) {
    51. List<ItemStack> list = (List<ItemStack>) this.getConfig().get("Players."+evt.getPlayer().getName()+"."+s.getLine(1)+".kit", new ArrayList<ItemStack>());
    52. list.add(items);
    53. getConfig().set("Players." + evt.getPlayer().getName() + "." + s.getLine(1) + ".kit", list);
    54. saveConfig();
    55. }
    56. }
    57. getConfig().set("Players."+evt.getPlayer().getName()+"."+s.getLine(1)+".armor", evt.getPlayer().getInventory().getArmorContents());
    58. saveConfig();
    59. evt.getPlayer().sendMessage(ChatColor.GREEN+"Kit "+ChatColor.RED+""+s.getLine(1)+ChatColor.GREEN+" has been saved!");
    60. }
    61. }
    62. else if(s.getLine(0).equalsIgnoreCase("[LoadKit]")) {
    63. if(evt.getPlayer().hasPermission("Kits."+s.getLine(1))) {
    64. if(getConfig().contains("Players."+evt.getPlayer().getName()+"."+s.getLine(1)+".kit")) {
    65. List<ItemStack> kit = (List<ItemStack>) this.getConfig().getList("Players."+evt.getPlayer().getName()+"."+s.getLine(1)+".kit");
    66. evt.getPlayer().getInventory().clear();
    67. evt.getPlayer().getInventory().setArmorContents(null);
    68. for(ItemStack stacks : kit) {
    69. evt.getPlayer().getInventory().addItem(stacks);
    70. }
    71. if(getConfig().contains("Players."+evt.getPlayer().getName()+"."+s.getLine(1).toString()+".armor")) {
    72. ArrayList<ItemStack[]> temp = new ArrayList<ItemStack[]>();
    73. for(ItemStack items : (List<ItemStack>) getConfig().getList("Players."+evt.getPlayer().getName()+"."+s.getLine(1)+".armor")) {
    74. temp.add(new ItemStack[] {items});
    75. }
    76.  
    77. for(ItemStack[] stacks : temp) {
    78. evt.getPlayer().getInventory().setArmorContents(stacks);
    79. }
    80. evt.getPlayer().sendMessage(ChatColor.AQUA+"Kit "+ChatColor.RED+""+s.getLine(1)+ChatColor.AQUA+" has been loaded!"); evt.getPlayer().updateInventory();
    81. }
    82. }
    83. }
    84. }
    85. }
    86. }
    87. }
    88. }

    ^ One Classer Code
    Thanks to whomever answers. :)
     
  2. Offline

    Borlea

    well, from looks.
    this is the error line
    for(ItemStack items : (List<ItemStack>) getConfig().getList("Players."+evt.getPlayer().getName()+"."+s.getLine(1)+".armor")) {

    Do a Broadcast message or or System.out.println everything that you use to get the list, check if anything is null.
    if nothing is null, then your list you're trying to grab isn't valid

    Edit: Also, Its not possible to save ItemStacks properly and then retrieve them in a config. you will have to save the name and metadata then retrieve that.
     
  3. Offline

    MayoDwarf

    Borlea
    Actually it is possible. They have a getItemStack() method just for it also. It may be that I am setting it as a ItemStack[] possibly?
     
  4. Offline

    Borlea

    Possible, not too familiar with saving ItemStacks
     
  5. Offline

    xize

    for a ItemStack[] you could do this for loading:

    Code:
    ItemStack[] items = ((List<ItemStack>)con.get("inventory.survival.inv")).toArray(new ItemStack[0]);
    
    and saving is just like:
    con.set("items", p.getInventory().getContents());

    however its not my code ive found it randomly here on the forums but thought it whas pretty neat credits to the person whoever came on the idea.
     
  6. Offline

    MayoDwarf

    xize That won't work. Just tried it.
     
  7. Offline

    Newby

    @staff spigot
     
  8. Offline

    MayoDwarf

    Newby
    If you don't understand the code, let me explain. The jar is named spigot.jar. The version the plugin comes after is a bukkit build. I was too lazy to change the start_server batch to run the file named bukkit.jar instead of spigot.jar... It makes no difference. Also I fixed this also. Thanks for your worthless post. Next time use the report button ;).
     
Thread Status:
Not open for further replies.

Share This Page