Solved Command not working?

Discussion in 'Plugin Development' started by TechAttax, Jul 8, 2014.

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

    TechAttax

    Hello, I was working on my project, FastLeave, when one of my commands stopped working! Please can you look at my code and tell me whats wrong?

    Main :
    Code:java
    1. package me.tomatogeek;
    2.  
    3. import org.bukkit.command.Command;
    4. import org.bukkit.command.CommandSender;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.plugin.java.JavaPlugin;
    7.  
    8. public class Main extends JavaPlugin {
    9.  
    10. @Override
    11. public void onEnable() {
    12. getConfig().options().copyDefaults(true);
    13. saveConfig();
    14. getLogger().info("FastLeave Enabled!");
    15. }
    16.  
    17. @Override
    18. public void onDisable() {
    19. getLogger().info("FastLeave Disbaled!");
    20.  
    21. }
    22.  
    23. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    24.  
    25. if (cmd.getName().equalsIgnoreCase("fastleavemessage")) {
    26. sender.sendMessage(getConfig().getString("leavemessage"));
    27. }
    28.  
    29. if (cmd.getName().equalsIgnoreCase("leave") && sender instanceof Player) {
    30.  
    31. Player player = (Player) sender;
    32.  
    33. player.kickPlayer(getConfig().getString("leavemessage"));
    34.  
    35.  
    36. if (cmd.getName().equalsIgnoreCase("setleavemessage")) {
    37. if (args.length == 0) {
    38. sender.sendMessage("Please specify a message!");
    39. return true;
    40. }
    41. StringBuilder str = new StringBuilder();
    42. for (int i = 0; i < args.length; i ++) {
    43. str.append(args[i] + " ");
    44. }
    45. String leave = str.toString();
    46. getConfig().set("leavemessage", leave);
    47. saveConfig();
    48. sender.sendMessage("Message set");
    49. }
    50.  
    51. }
    52.  
    53. return false;
    54.  
    55.  
    56. }
    57.  
    58. }
    59. [/i]

    Config:
    Code:
    leavemessage: FastLeave!
    plugin.yml
    Code:
    name: FastLeave
    main: me.tomatogeek.Main
    version: 0.1
    commands:
      leave:
        aliases: [fl]
        description: Leaves Server!
       
      setleavemessage:
        description: Sets Leave message!
     
      fastleavemessage:
        description: Displays Leave Message!
     
  2. Offline

    RenditionsRule

    Hello TechAttax. I assume the command that stopped working is the "setleavemessage" one.

    I noticed that you never closed off the previous command and as a result, you added it inside of the previous command's function list.

    Move this outside of it and you should be fine.

    Code:
     if (cmd.getName().equalsIgnoreCase("setleavemessage")) {
    if (args.length == 0) {
    sender.sendMessage("Please specify a message!");
    return true;
    }
    StringBuilder str = new StringBuilder();
    for (int i = 0; i < args.length; i ++) {
    str.append(args[i] + " ");
    }
    String leave = str.toString();
    getConfig().set("leavemessage", leave);
    saveConfig();
    sender.sendMessage("Message set");
    }
     
  3. Offline

    Cloaking_Ocean

    TechAttax

    Ok so you have nested in your third command into your second command.


    1. if (cmd.getName().equalsIgnoreCase("leave") && sender instanceof Player) {
    2. Player player = (Player) sender;
    3. player.kickPlayer(getConfig().getString("leavemessage"));
    4. if (cmd.getName().equalsIgnoreCase("setleavemessage")) {
    5. if (args.length == 0) {
    6. sender.sendMessage("Please specify a message!");
    7. return true;
    8. }
    9. StringBuilder str = new StringBuilder();
    10. for (int i = 0; i < args.length; i ++) {
    11. str.append(args[i] + " ");
    12. }
    13. String leave = str.toString();
    14. getConfig().set("leavemessage", leave);
    15. saveConfig();
    16. sender.sendMessage("Message set");
    17. }
    18. }
    What you would want to do is put a "}" right after the line where it says "player.kickPlayer(getConfig().getString("leavemessage"));

    tell me if this works

    EDIT:
    I don't know why it's showing up like that, just try highlighting it with your mouse
     
    TechAttax likes this.
  4. Offline

    TechAttax

    Thank you soooo much! <3
     
  5. Offline

    Cloaking_Ocean

Thread Status:
Not open for further replies.

Share This Page