Solved Multiple argument commands

Discussion in 'Plugin Development' started by Kend2000, May 10, 2014.

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

    Kend2000

    I am having an issue with using commands with multiple arguments. This command is designed to send a player a message from another player but it always results in a error. Can anyone help me?

    Code:java
    1. if (label.equalsIgnoreCase("msg")){
    2. if (args.length == 2){
    3. Player target = Bukkit.getServer().getPlayer(args[1]);
    4. if (target.isOnline() == true){
    5. target.sendMessage("[" + ChatColor.GOLD + player.getName() + " > " + target.getName() + "] " + ChatColor.YELLOW + args[2]);
    6. player.sendMessage(prefix + ChatColor.GRAY + "Sent message to " + target.getName());
    7. }else{
    8. player.sendMessage(prefix + ChatColor.RED + "Cannot find player!");
    9. }
    10. }
    11. }


    Error:
    [19:33:04] [Server thread/INFO]: Kend2000 issued server command: /msg Kend200 hi
    [19:33:04] [Server thread/WARN]: Failed to handle packet for /68.58.55.248:64514
    java.lang.NullPointerException
    at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:101) ~[craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:425) ~[craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:406) ~[craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:367) [craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at org.apache.logging.log4j.core.Logger.log(Logger.java:110) [craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at org.apache.logging.log4j.spi.AbstractLogger.error(AbstractLogger.java:609) [craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at org.bukkit.craftbukkit.v1_7_R2.util.ForwardLogHandler.publish(ForwardLogHandler.java:33) ~[craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at java.util.logging.Logger.log(Unknown Source) ~[?:1.7.0_21]
    at java.util.logging.Logger.doLog(Unknown Source) ~[?:1.7.0_21]
    at java.util.logging.Logger.log(Unknown Source) ~[?:1.7.0_21]
    at net.minecraft.server.v1_7_R2.PlayerConnection.handleCommand(PlayerConnection.java:957) ~[craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.PlayerConnection.a(PlayerConnection.java:814) ~[craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.PacketPlayInChat.a(PacketPlayInChat.java:28) ~[craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.PacketPlayInChat.handle(PacketPlayInChat.java:47) ~[craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.NetworkManager.a(NetworkManager.java:147) ~[craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.ServerConnection.c(SourceFile:134) [craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.MinecraftServer.v(MinecraftServer.java:657) [craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.DedicatedServer.v(DedicatedServer.java:250) [craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.MinecraftServer.u(MinecraftServer.java:548) [craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.MinecraftServer.run(MinecraftServer.java:459) [craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
    at net.minecraft.server.v1_7_R2.ThreadServerApplication.run(SourceFile:618) [craftbukkit-1.7.5-R0.1-20140408.020329-16.jar:git-Bukkit-1.7.2-R0.3-14-g8f8716c-b3042jnks]
     
  2. Offline

    SnipsRevival

    I believe the getPlayer method will return null if the player you are trying to find is offline. Therefore, in your if statement you should do this:

    Code:
    if(target != null) {
        //player is online
    }
    else {
        //player is offline
    }
    
     
  3. Offline

    xTigerRebornx

    Kend2000 You want to call Bukkit#getPlayer() on args[0], not args[1]. Array's indexing starts at 0, not 1.
     
  4. Offline

    Kend2000

    Thank you both!
     
  5. Kend2000
    There are a few things wrong here, mainly dealing with your arguments.

    1. In Java, counting always starts at 0. So if you have a command like "/go boom <player>", the length of that is 2. The argument "boom" is arg[0] and the player is arg[1]. You need to apply this concept to your code.

    2. In Java you can simply put a boolean in an if-statement. For example "if (player.isOnline())". This is equivalent to "if (player.isOnline() == true)". If you want it to be false, you just simply add ! in front of the boolean, which means "not true".

    3. If you want to send a message with more than one word, you need to use a StringBuilder.

    Code:java
    1. StringBuilder str = new StringBuilder();
    2.  
    3. for (int i = 0; i < args.length; i++){
    4. str.append(args[i] + " ");
    5. }
    6. //change i to the arg where you want the msg to start[/i]
     
  6. Offline

    Kend2000

    Thank you!
     
Thread Status:
Not open for further replies.

Share This Page