Simple onCommend does't work.

Discussion in 'Plugin Development' started by AntuaPL, Aug 17, 2012.

  1. Offline

    AntuaPL

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Code:java
    1. @Override
    2. public boolean onCommand(CommandSender sender, Command cmd, String label,String[] args){
    3. if(args.length==0){
    4. sender.sendMessage(plugin.getConfig().getString("Broadcast.Prefix"));
    5. return true;
    6. }
    7. if(args[0] == "prefix"){
    8. if(args.length==2){
    9. plugin.getConfig().set("Broadcast.Prefix", args[1]);
    10. sender.sendMessage("You changed prefix to ->" + plugin.getConfig().getString("Broadcast.Prefix"));
    11. return true;
    12. }
    13. else if(args.length==1){
    14. sender.sendMessage(plugin.getConfig().getString("Broadcast.Prefix"));
    15. return true;
    16. }
    17. }
    18. return false;
    19. }

    When I type in console "broadcast prefix" it doesn't work.
    1. I put command in plugin.yml
    2.This onCommand for sure is activated when I type command "broadcast".
    3.Eclipse doesn't show anything wrong.
    4.When I type "broadcast" command it processes lines from 3-7 correctly. But both "if" statments isn't.
    5. I checked if the args are read correctly. They are.

    I also noticed that when i change my code to
    Code:java
    1. @Override
    2. public boolean onCommand(CommandSender sender, Command cmd, String label,String[] args){
    3. sender.sendMessage(Integer.toString(args.length));
    4. if(args.length==0){
    5. sender.sendMessage(plugin.getConfig().getString("Broadcast.Prefix"));
    6. return true;
    7. }
    8. if(args[0] == "prefix"){
    9. sender.sendMessage(Integer.toString(args.length));
    10. if(args.length==2){
    11. plugin.getConfig().set("Broadcast.Prefix", args[1]);
    12. sender.sendMessage("You changed prefix to ->" + plugin.getConfig().getString("Broadcast.Prefix"));
    13. return true;
    14. }
    15. sender.sendMessage(Integer.toString(args.length));
    16. if(args.length==1){
    17. sender.sendMessage(plugin.getConfig().getString("Broadcast.Prefix"));
    18. return true;
    19. }
    20. }
    21. sender.sendMessage(Integer.toString(args.length));
    22. return false;
    23. }

    It is only sending two of four (in lines 3rd and 21th but no in 9th and 15th line) args.lenght value. So if statment (this from 8-20) do something bad (doesnt run)? I don't think that is big problem. I just don't see something.

    Or if someone can tell me better way to execute subcommands (like "prefix" here) it would be great.

    This post has been edited 1 time. It was last edited by AntuaPL Aug 17, 2012.
  2. Online

    evilmidget38 BukkitDev Staff

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    @AntuaPL You have to use .equals or .equalsIgnoreCase when comparing strings.
  3. Offline

    AntuaPL

    dev.bukkit.org profile:
    CFUSERNAME
    My Plugins (CFCOUNT)
    Thanks, that worked. ;)

Share This Page