Solved How i register a multiple arguments command?

Discussion in 'Plugin Development' started by djbomber36, Jun 19, 2019.

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

    djbomber36

    Hello!
    I'm having troubles registering a command in the main class

    This is the main class

    Code:
    package chat;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin implements Listener{
       
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
            this.getConfig().options().copyDefaults(true);
            this.saveConfig();
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
            getCommand("ChatX").setExecutor(this);
            this.getCommand("chatx_help");
           
        }
       
    
        @EventHandler
        public void onChat(AsyncPlayerChatEvent event) {
            Player p = event.getPlayer();
            String Prefix1 = getConfig().getString("Owner.Prefix");
            String Permission1 = getConfig().getString("Owner.Permission");
            String Prefix2 = getConfig().getString("Head-Admin.Prefix");
            String Permission2 = getConfig().getString("Head-Admin.Permission");
            String Prefix3 = getConfig().getString("Admin.Prefix");
            String Permission3 = getConfig().getString("Admin.Permission");
            String Prefix4 = getConfig().getString("Builder.Prefix");
            String Permission4 = getConfig().getString("Builder.Permission");
            String Prefix5 = getConfig().getString("Head-Mod.Prefix");
            String Permission5 = getConfig().getString("Head-Mod.Permission");
            String Prefix6 = getConfig().getString("Mod.Prefix");
            String Permission6 = getConfig().getString("Mod.Permission");
            String Prefix7 = getConfig().getString("Dev.Prefix");
            String Permission7 = getConfig().getString("Dev.Permission");
            String Prefix8 = getConfig().getString("Helper.Prefix");
            String Permission8 = getConfig().getString("Helper.Permission");
            String Prefix9 = getConfig().getString("User.Prefix");
            String Permission9 = getConfig().getString("User.Permission");
           
            if(p.hasPermission(Permission1))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix1 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission2))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix2 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission3))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix3 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission4))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix4 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission5))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix5 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission6))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix6 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission7))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix7 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission8))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix8 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission9))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix9 + p.getDisplayName() + "&7>> " + event.getMessage()));
            else
                event.setFormat(p.getDisplayName() + ChatColor.GRAY + ": " + ChatColor.GRAY + event.getMessage());
           
            }
       
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(cmd.getName().equalsIgnoreCase("ChatX")) {
                if(args.length == 0) {
                    if(sender.hasPermission("chatx.basic")) {
                        sender.sendMessage(ChatColor.RED + "Invalid Syntax! " + ChatColor.GRAY + "Try use /ChatX help");
                        return true;
                    }
                }
                if((args.length == 1) && (args[0].equalsIgnoreCase("reload"))) {
                    if(sender.hasPermission("chatx.reload")) {
                        reloadConfig();
                        sender.sendMessage(ChatColor.GREEN + "ChatX reloaded successfully");
                        return true;
                
                    }
                }
            }
            return true;
       
                    }
        }
    And here's my Listener Class

    Code:
    package chat;
    
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Help extends JavaPlugin implements Listener, CommandExecutor{
       
        Main plugin;
       
        public Help(Main passedPlugin) {
            this.plugin = passedPlugin;
        }
       
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(cmd.getName().equalsIgnoreCase("ChatX")) {
                if(args.length == 0) {
                    if(sender.hasPermission("chatx.basic")) {
                        sender.sendMessage(ChatColor.RED + "Invalid Syntax! " + ChatColor.GRAY + "Try use /ChatX help");
                        return true;
                    }
                }
                if((args.length == 1) && (args[0].equalsIgnoreCase("help"))) {
                        sender.sendMessage(ChatColor.GREEN + "---------Help For ChatX---------");
                        sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7You can visit &1bukkit.com/ChatX &7for an helpfull guide"));
                        return true;
                    }
                }
           
            return true;
        }
    
    }
    I'm newbie so...
    Thank you in advance for your help.
     
  2. Online

    timtower Administrator Administrator Moderator

    @djbomber36 You can only have 1 class extending JavaPlugin.
    And you need to make the difference in args[0] yourself.
     
  3. Offline

    djbomber36

    But can I use boolean without extending JavaPlugin? and how can I execute the command from the Help class?

    [EDIT]I make the difference in args[0], but i'm having troubles with runnin /chatx help.
    I don't get errors in the console, but when i run the command nothing happends.
     
    Last edited: Jun 19, 2019
  4. Online

    timtower Administrator Administrator Moderator

    @djbomber36 boolean is a basic java type.
    The onCommand is handled by the implements CommandExecutor.
    And you need to register the class as CommandExecutor ad you did with the main class.
     
  5. Offline

    djbomber36

    Can you explain how to register the class? Because all tutorials didn't helped me
     
  6. Online

    timtower Administrator Administrator Moderator

    Quote from your code:
    getCommand("ChatX").setExecutor(this);
     
  7. Offline

    djbomber36

    So where i have to put that? Did I have to put that in the Help.java?

    [EDIT]p.s If you see grammaticals errors I'm italian and I'm 12
     
  8. Online

    timtower Administrator Administrator Moderator

    Stick to 1 command class for now, might be easier.
     
  9. Offline

    djbomber36

    In 1 command class I'm having troubles creating an another args[0] under the reload command
     
  10. Online

    timtower Administrator Administrator Moderator

    Then please post the code that you are using for it.
     
  11. Offline

    djbomber36

    Main.java
    Code:
    package chat;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin implements Listener{
      
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
            this.getConfig().options().copyDefaults(true);
            this.saveConfig();
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
            getCommand("ChatX").setExecutor(this);
            this.getCommand("chatx_help");
          
        }
      
    
        @EventHandler
        public void onChat(AsyncPlayerChatEvent event) {
            Player p = event.getPlayer();
            String Prefix1 = getConfig().getString("Owner.Prefix");
            String Permission1 = getConfig().getString("Owner.Permission");
            String Prefix2 = getConfig().getString("Head-Admin.Prefix");
            String Permission2 = getConfig().getString("Head-Admin.Permission");
            String Prefix3 = getConfig().getString("Admin.Prefix");
            String Permission3 = getConfig().getString("Admin.Permission");
            String Prefix4 = getConfig().getString("Builder.Prefix");
            String Permission4 = getConfig().getString("Builder.Permission");
            String Prefix5 = getConfig().getString("Head-Mod.Prefix");
            String Permission5 = getConfig().getString("Head-Mod.Permission");
            String Prefix6 = getConfig().getString("Mod.Prefix");
            String Permission6 = getConfig().getString("Mod.Permission");
            String Prefix7 = getConfig().getString("Dev.Prefix");
            String Permission7 = getConfig().getString("Dev.Permission");
            String Prefix8 = getConfig().getString("Helper.Prefix");
            String Permission8 = getConfig().getString("Helper.Permission");
            String Prefix9 = getConfig().getString("User.Prefix");
            String Permission9 = getConfig().getString("User.Permission");
          
            if(p.hasPermission(Permission1))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix1 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission2))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix2 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission3))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix3 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission4))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix4 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission5))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix5 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission6))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix6 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission7))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix7 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission8))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix8 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission9))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix9 + p.getDisplayName() + "&7>> " + event.getMessage()));
            else
                event.setFormat(p.getDisplayName() + ChatColor.GRAY + ": " + ChatColor.GRAY + event.getMessage());
          
            }
      
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(cmd.getName().equalsIgnoreCase("ChatX")) {
                if(args.length == 0) {
                    if(sender.hasPermission("chatx.basic")) {
                        sender.sendMessage(ChatColor.RED + "Invalid Syntax! " + ChatColor.GRAY + "Try use /ChatX help");
                        return true;
                    }
                }
                if(args[0].equalsIgnoreCase("reload")) {
                    if(sender.hasPermission("chatx.reload")) {
                        reloadConfig();
                        sender.sendMessage(ChatColor.GREEN + "ChatX reloaded successfully");
                        return true;
               
                    }
                }
            }
            return true;
      
                    }
        }
    
    Help.java
    Code:
    package chat;
    
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.event.Listener;
    
    public class Help implements Listener, CommandExecutor{
      
        Main plugin;
      
        public Help(Main passedPlugin) {
            this.plugin = passedPlugin;
        }
      
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(cmd.getName().equalsIgnoreCase("ChatX")) {
                if(args.length == 0) {
                    if(sender.hasPermission("chatx.basic")) {
                        sender.sendMessage(ChatColor.RED + "Invalid Syntax! " + ChatColor.GRAY + "Try use /ChatX help");
                        return true;
                    }
                }
                if(args[0].equalsIgnoreCase("help")) {
                        sender.sendMessage(ChatColor.GREEN + "---------Help For ChatX---------");
                        sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7You can visit &1bukkit.com/ChatX &7for an helpfull guide"));
                        return true;
                         
               
                    }
            }
          
            return true;
        }
    
    
    }
    
    I don't think you need to rewatch the Help class because you said to work on one class

    [EDIT]If I create an else under the if he give me an error in eclipse that the method must return a result of type boolean
     
  12. Online

    timtower Administrator Administrator Moderator

    @djbomber36 The method always needs to return something, so after your checks you need to return.
    I asked to post your code where you have the help command in the main class. Please do so and post your new code.
     
  13. Offline

    djbomber36

    Sorry!! Here's the code.

    Code:
    package chat;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.AsyncPlayerChatEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin implements Listener{
      
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
            this.getConfig().options().copyDefaults(true);
            this.saveConfig();
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
            getCommand("ChatX").setExecutor(this);
            this.getCommand("chatx_help");
          
        }
      
    
        @EventHandler
        public void onChat(AsyncPlayerChatEvent event) {
            Player p = event.getPlayer();
            String Prefix1 = getConfig().getString("Owner.Prefix");
            String Permission1 = getConfig().getString("Owner.Permission");
            String Prefix2 = getConfig().getString("Head-Admin.Prefix");
            String Permission2 = getConfig().getString("Head-Admin.Permission");
            String Prefix3 = getConfig().getString("Admin.Prefix");
            String Permission3 = getConfig().getString("Admin.Permission");
            String Prefix4 = getConfig().getString("Builder.Prefix");
            String Permission4 = getConfig().getString("Builder.Permission");
            String Prefix5 = getConfig().getString("Head-Mod.Prefix");
            String Permission5 = getConfig().getString("Head-Mod.Permission");
            String Prefix6 = getConfig().getString("Mod.Prefix");
            String Permission6 = getConfig().getString("Mod.Permission");
            String Prefix7 = getConfig().getString("Dev.Prefix");
            String Permission7 = getConfig().getString("Dev.Permission");
            String Prefix8 = getConfig().getString("Helper.Prefix");
            String Permission8 = getConfig().getString("Helper.Permission");
            String Prefix9 = getConfig().getString("User.Prefix");
            String Permission9 = getConfig().getString("User.Permission");
          
            if(p.hasPermission(Permission1))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix1 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission2))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix2 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission3))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix3 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission4))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix4 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission5))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix5 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission6))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix6 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission7))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix7 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission8))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix8 + p.getDisplayName() + "&7>> " + event.getMessage()));
            if(p.hasPermission(Permission9))
                event.setFormat(ChatColor.translateAlternateColorCodes('&', Prefix9 + p.getDisplayName() + "&7>> " + event.getMessage()));
            else
                event.setFormat(p.getDisplayName() + ChatColor.GRAY + ": " + ChatColor.GRAY + event.getMessage());
          
            }
      
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if(cmd.getName().equalsIgnoreCase("ChatX")) {
                if(args.length == 0) {
                    if(sender.hasPermission("chatx.basic")) {
                        sender.sendMessage(ChatColor.RED + "Invalid Syntax! " + ChatColor.GRAY + "Try use /ChatX help");
                        return true;
                    }
                }
                if(args[0].equalsIgnoreCase("reload")) {
                    if(sender.hasPermission("chatx.reload")) {
                        reloadConfig();
                        sender.sendMessage(ChatColor.GREEN + "ChatX reloaded successfully");
                        return true;
               
                    }
                    else if(args[0].equalsIgnoreCase("help")) {
                        sender.sendMessage(ChatColor.GREEN + "---------Help For ChatX---------");
                        sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7You can visit &1bukkit.com/ChatX &7for an helpfull guide"));
                        return true;
                }
            }
            return true;
      
                    }
            return false;
        }}
    [EDIT]I tested it but no messages in the output

    Wait a moment! Did I have to write the args in the plugin.yml?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 19, 2019
  14. Online

    timtower Administrator Administrator Moderator

    @djbomber36 Your else if for help is the else statement for the permissions check.
    And no, you can't put arguments in the plugin.yml
     
  15. Offline

    djbomber36

    So how can I resolve this?
     
  16. Online

    timtower Administrator Administrator Moderator

    @djbomber36 Hit ctrl+shift+f, if you are using eclipse then it should format the code. Might show what I mean.
    For the rest is this a basic java issue in my opinion. That is not something I will help with.
     
  17. Offline

    djbomber36

    @timtower Ok thaks for the help!!
    I fixed it. Basically I moved the help code 1 bracket further, and now it works!!
    Thank you so much you helped me a lot!
     
  18. Online

    timtower Administrator Administrator Moderator

    @djbomber36 Keep working, keep programming, you will get there ;)
     
  19. Offline

    djbomber36

Thread Status:
Not open for further replies.

Share This Page