Multiple commands help?

Discussion in 'Plugin Development' started by yewtree8, Jan 27, 2014.

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

    yewtree8

    Hey guys recently i have just got back into developing and am just making a small couple of plugins for my friends server, but when i do multiple commands i come up with this bug:

    i will do the second command and both messages will be sent to the user, i've tried everything i can think of
    Code:java
    1. package me.mat.jangoinfo;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.command.Command;
    5. import org.bukkit.command.CommandSender;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.player.PlayerJoinEvent;
    10. import org.bukkit.event.player.PlayerQuitEvent;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12.  
    13. public class Main extends JavaPlugin implements Listener{
    14.  
    15.  
    16.  
    17.  
    18. public void onEnable() {
    19.  
    20. System.out.println("[JangoInfo] JangoInfo Is Working");
    21.  
    22. }
    23.  
    24. public void onDisable() {
    25.  
    26. System.out.println("[JangoInfo] JangoInfo Shut Down");
    27.  
    28. }
    29.  
    30. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    31. if(cmd.getName().equalsIgnoreCase("jranks"));
    32. Player player = (Player) sender; {
    33.  
    34. player.sendMessage(ChatColor.RED + "===========================================");
    35. player.sendMessage(ChatColor.AQUA + ">" + ChatColor.GREEN + " Welcome To JangoCraft! - Ranks Info");
    36. player.sendMessage(ChatColor.RED + "===========================================");
    37. player.sendMessage(ChatColor.AQUA + ">");
    38. player.sendMessage(ChatColor.AQUA + "> " + ChatColor.GOLD + "Ranks" + ChatColor.AQUA + " <");
    39. player.sendMessage(ChatColor.AQUA + ">" + ChatColor.YELLOW + " C " + ChatColor.AQUA + "<");
    40. player.sendMessage(ChatColor.AQUA + ">" + ChatColor.GREEN + " B " + ChatColor.AQUA + "<");
    41. player.sendMessage(ChatColor.AQUA + ">" + ChatColor.DARK_AQUA + " A " + ChatColor.AQUA + "<");
    42. player.sendMessage(ChatColor.AQUA + ">" + ChatColor.LIGHT_PURPLE + " FREE " + ChatColor.AQUA + "<");
    43. player.sendMessage(ChatColor.AQUA + ">" + ChatColor.DARK_AQUA + " Citizen " + ChatColor.AQUA + "<");
    44. player.sendMessage(ChatColor.AQUA + ">" + ChatColor.RED + " VETERAN " + ChatColor.AQUA + "<");
    45. player.sendMessage(ChatColor.RED + "===========================================");
    46.  
    47.  
    48. }
    49.  
    50.  
    51. if(cmd.getName().equalsIgnoreCase("jinfo")) {
    52.  
    53. player.sendMessage(ChatColor.RED + "This Second Command Has Worked");
    54.  
    55. return true;
    56. }
    57.  
    58.  
    59.  
    60.  
    61.  
    62. return false;
    63. }
    64.  
    65.  





    and when i try to put else behind the second if, it won't work, any help?
     
  2. Offline

    rangersmash

    Code:
    package me.mat.jangoinfo;
     
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class Main extends JavaPlugin implements Listener{
       
        public void onEnable() {
            System.out.println("[JangoInfo] JangoInfo Is Working");
        }
     
        public void onDisable() {
            System.out.println("[JangoInfo] JangoInfo Shut Down");
        }
     
        public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
            Player player = (Player) sender;
            if(cmd.getName().equalsIgnoreCase("jranks")){
                player.sendMessage(ChatColor.RED + "===========================================");
                player.sendMessage(ChatColor.AQUA + ">" + ChatColor.GREEN + "  Welcome To JangoCraft! - Ranks Info");
                player.sendMessage(ChatColor.RED + "===========================================");
                player.sendMessage(ChatColor.AQUA + ">");
                player.sendMessage(ChatColor.AQUA + "> " + ChatColor.GOLD + "Ranks" + ChatColor.AQUA + " <");
                player.sendMessage(ChatColor.AQUA + ">" + ChatColor.YELLOW + " C " + ChatColor.AQUA + "<");
                player.sendMessage(ChatColor.AQUA + ">" + ChatColor.GREEN + " B " + ChatColor.AQUA + "<");
                player.sendMessage(ChatColor.AQUA + ">" + ChatColor.DARK_AQUA + " A " + ChatColor.AQUA + "<");
                player.sendMessage(ChatColor.AQUA + ">" + ChatColor.LIGHT_PURPLE + " FREE " + ChatColor.AQUA + "<");
                player.sendMessage(ChatColor.AQUA + ">" + ChatColor.DARK_AQUA + " Citizen " + ChatColor.AQUA + "<");
                player.sendMessage(ChatColor.AQUA + ">" + ChatColor.RED + " VETERAN " + ChatColor.AQUA + "<");
                player.sendMessage(ChatColor.RED + "===========================================");
            }
            if(cmd.getName().equalsIgnoreCase("jinfo")) {
                player.sendMessage(ChatColor.RED + "This Second Command Has Worked");
                return true;
            }
        }
    }
    
     
  3. Offline

    DeGambler

    yewtree8
    Well, you can't have multiple commands within one method like you're doing, you'd need to create an individual class/command, and then register them in your onEnable().
    Show Spoiler

    Like so:
    Code:java
    1.  
    2. getCommand("COMMAND").setExecutor(new CLASSNAME(this)); // Replace classname with whatever your class is then called, same with "COMMAND"

     
  4. Offline

    Sagacious_Zed Bukkit Docs

    Bukkit by default uses your JavaPlugin as the default CommandExectuor for all the commands in your plugin. That having been said, In most cases it is better to have one CommandExecutor per command.

    In fact, if if you use custom CommandExectuors for only one command, you can skip checking which command was called.
     
Thread Status:
Not open for further replies.

Share This Page