Unhandled exception executing command

Discussion in 'Plugin Development' started by Chipmunk9998, Jan 23, 2012.

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

    Chipmunk9998

    Hey, I'm trying to make my plugin check to see if the user has a file in the command sender's world, and if they do, call a method in another class. It works fine if the first argument I type in is my name, but if it's someone who's not on the server, like this,

    /spectate Notch

    I get this error:

    Code:
    22:57:30 [SEVERE] null
    org.bukkit.command.CommandException: Unhandled exception executing command 'spec
    tate' in plugin Spectate v1
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:42)
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:16
    8)
            at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:3
    82)
            at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.
    java:768)
            at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:728)
     
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:721)
            at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:33)
            at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:96)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
            at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:534)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:432)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:465)
    Caused by: java.lang.NullPointerException
            at com.Chipmunk9998.Spectate.Spectate.onCommand(Spectate.java:115)
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40)
            ... 12 more
    >
    Here's my class:

    (I'm fairly new to java and programming in general so don't yell at me if I put something in my code that could possibly blow up the universe. Just tell me that I've got something in my class that will cause the earth to cave in the next time I load up my server.)

    Code:java
    1. package com.Chipmunk9998.Spectate;
    2.  
    3. import java.io.File;
    4. import java.util.HashMap;
    5. import java.util.Map;
    6.  
    7. import org.bukkit.Bukkit;
    8. import org.bukkit.command.Command;
    9. import org.bukkit.command.CommandSender;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.Event;
    12. import org.bukkit.plugin.PluginManager;
    13. import org.bukkit.plugin.java.JavaPlugin;
    14.  
    15. public class Spectate extends JavaPlugin {
    16.  
    17. public Map<Player, Boolean> isSpectating = new HashMap<Player, Boolean>();
    18. public Map<Player, Player> target = new HashMap<Player, Player>();
    19. Player send;
    20. String cmdtarget;
    21. Player targetPlayer;
    22. File file;
    23. Player targ;
    24.  
    25. public Map<String, Integer> origX = new HashMap<String, Integer>();
    26. public Map<String, Integer> origY = new HashMap<String, Integer>();
    27. public Map<String, Integer> origZ = new HashMap<String, Integer>();
    28. public Map<String, Integer> origPitch = new HashMap<String, Integer>();
    29. public Map<String, Integer> origYaw = new HashMap<String, Integer>();
    30.  
    31. private final SpectatePlayerListener playerListener = new SpectatePlayerListener(this);
    32.  
    33. public void onDisable() {
    34.  
    35. for (Player player : Bukkit.getServer().getOnlinePlayers()) {
    36.  
    37. if (isSpectating.get(player.getName()) != null) {
    38.  
    39. if (isSpectating.get(player.getName())) {
    40.  
    41. player.getLocation().setX(origX.get(player));
    42. player.getLocation().setY(origY.get(player));
    43. player.getLocation().setZ(origZ.get(player));
    44. player.getLocation().setPitch(origPitch.get(player));
    45. player.getLocation().setYaw(origYaw.get(player));
    46.  
    47. player.sendMessage("§7You were forced to stop spectating due to a restart§f");
    48.  
    49. }
    50. }
    51. }
    52.  
    53. System.out.println("Spectate is disabled!");
    54.  
    55. }
    56.  
    57. public void onEnable() {
    58.  
    59. PluginManager pm = getServer().getPluginManager();
    60.  
    61. pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Event.Priority.Normal, this);
    62. pm.registerEvent(Event.Type.PLAYER_QUIT, playerListener, Event.Priority.Normal, this);
    63.  
    64. System.out.println("Spectate v1 enabled!");
    65.  
    66. }
    67.  
    68. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    69.  
    70. Player cmdsender = (Player) sender;
    71. send = cmdsender;
    72.  
    73. if (cmd.getName().equalsIgnoreCase("spectate")) {
    74.  
    75. origX.put(cmdsender.getName(), (int) cmdsender.getLocation().getX());
    76. origY.put(cmdsender.getName(), (int) cmdsender.getLocation().getY());
    77. origZ.put(cmdsender.getName(), (int) cmdsender.getLocation().getZ());
    78. origPitch.put(cmdsender.getName(), (int) cmdsender.getLocation().getPitch());
    79. origYaw.put(cmdsender.getName(), (int) cmdsender.getLocation().getYaw());
    80.  
    81. if (args.length == 1) {
    82.  
    83. if (args[0] == "off") {
    84.  
    85. if (origX.containsKey(cmdsender) && origY.containsKey(cmdsender) && origZ.containsKey(cmdsender) && origPitch.containsKey(cmdsender) && origYaw.containsKey(cmdsender)) {
    86.  
    87. if (isSpectating.get(cmdsender)) {
    88.  
    89. cmdsender.getLocation().setX(origX.get(cmdsender));
    90. cmdsender.getLocation().setY(origY.get(cmdsender));
    91. cmdsender.getLocation().setZ(origZ.get(cmdsender));
    92. cmdsender.getLocation().setPitch(origPitch.get(cmdsender));
    93. cmdsender.getLocation().setYaw(origYaw.get(cmdsender));
    94. return true;
    95.  
    96. }else {
    97.  
    98. cmdsender.sendMessage("§7You are currently not spectating anyone§f");
    99. return true;
    100.  
    101. }
    102.  
    103. }
    104.  
    105. }else {
    106.  
    107. cmdtarget = args[0];
    108. targetPlayer = Bukkit.getPlayer(cmdtarget);
    109. targ = targetPlayer;
    110. target.put(cmdsender, targetPlayer);
    111. System.out.println(cmdsender.getWorld().getName());
    112. System.out.println(args[0]);
    113.  
    114.  
    115. if (cmdsender.getName() == targetPlayer.getName()) {
    116.  
    117. cmdsender.sendMessage("§7You're already spectating yourself...");
    118. return true;
    119.  
    120. }
    121.  
    122. if (cmdsender.getWorld().getName() + "/players/" + targetPlayer.getName() + ".DAT" != null) {
    123.  
    124. file = new File(cmdsender.getWorld().getName() + "/players/" + targetPlayer.getName() + ".DAT");
    125.  
    126. if (!file.exists() && target.get(cmdsender.getName()).isOnline()) {
    127.  
    128. cmdsender.sendMessage("§7You must be in the same world as " + targetPlayer.getName() + " to spectate them");
    129. return true;
    130.  
    131. }
    132.  
    133. if (file.exists()) {
    134.  
    135. if (target.get(cmdsender.getName()).isOnline()) {
    136.  
    137. cmdsender.sendMessage("§7You are now spectating " + targetPlayer.getName());
    138. playerListener.setLoc();
    139. return true;
    140.  
    141. }
    142.  
    143. }
    144.  
    145. }
    146.  
    147. if (cmdsender.getWorld().getName() + "/players/" + targetPlayer.getName() + ".DAT" == null && target.get(cmdsender.getName()).isOnline()) {
    148.  
    149. cmdsender.sendMessage("§7You must be in the same world as " + targetPlayer.getName() + " to spectate them");
    150. return true;
    151.  
    152. }
    153.  
    154. cmdsender.sendMessage("§cError: Player is not online§f");
    155. return true;
    156.  
    157. }
    158. }
    159. }
    160. cmdsender.sendMessage("§cError: No player target§f");
    161. return true;
    162.  
    163. }
    164. }
    165.  
     
  2. Offline

    Seadragon91

    Code:
    Player targetPlayer = Bukkit.getPlayer("Notch");
    If there is no player with that name on the server, Bukkit.getPlayer("Notch") will return null.



    Question how can I make the code with java syntax? By Code=?
     
  3. Code:
    [syntax=java][/syntax]
     
  4. Offline

    Chipmunk9998

    Ah, thanks! I was looking for any variables that were null, that one just slipped by.
     
Thread Status:
Not open for further replies.

Share This Page