Comand arguments

Discussion in 'BungeeCord Plugin Development' started by LeonTheDev, Oct 18, 2020 at 6:25 PM.

  1. When I put 2 arguments after /sc it only sends the first one, does anyone know why?
     
  2. Code:
    Code (Java):
    public class StaffChatCommand extends Command
    {
       
        public StaffChatCommand()
        {
            super("staffchat", "staffchat.use", "sc");
        }
       
        public void execute(CommandSender sender, String[] args)
        {
           
            ProxiedPlayer player = (ProxiedPlayer) sender;
           
            if (args.length == 0)
            {
                player.sendMessage(new TextComponent(ChatColor.DARK_RED + "Usage: /sc <message>"));
                return;
            }
           
            if (player.hasPermission("rank.admin"))
            {
                for (ProxiedPlayer all : BungeeCord.getInstance().getPlayers())
                {
                    if (all.hasPermission("rank.admin") || (all.hasPermission("rank.mod")))
                    {
                        String msg = "";
                        for (String str : args)
                        {
                            msg = String.valueOf(msg) + str + " ";
                            all.sendMessage(new TextComponent(ChatColor.translateAlternateColorCodes('&', "&b&lStaffChat &c&lAdmin &r" +
                                player.getName() + ": " + msg)));
                            return;
                        }
                    }
                }
            }
           
            else if (player.hasPermission("rank.mod"))
            {
                for (ProxiedPlayer all : BungeeCord.getInstance().getPlayers())
                {
                    if (all.hasPermission("rank.mod") || (all.hasPermission("rank.admin")))
                    {
                        String msg = "";
                        for (String str : args)
                        {
                            msg = String.valueOf(msg) + str + " ";
                            all.sendMessage(new TextComponent(ChatColor.translateAlternateColorCodes('&', "&b&lStaffChat &d&lMod &r" +
                                    player.getName() + ": " + msg)));
                            return;
                        }
                    }
                }
            }
           
        }
       
    }
     
  3. Hello,

    i write your code and tried it and then i find a way that this code will work

    U wrote:

    Code (Text):
                        String msg = "";
                        for (String str : args)
                        {
                            msg = String.valueOf(msg) + str + " ";
                            all.sendMessage(new TextComponent(ChatColor.translateAlternateColorCodes('&', "&b&lStaffChat &c&lAdmin &r" +
                                player.getName() + ": " + msg)));
                            return;
                        }
    I wrote:

    Code (Java):
                            StringBuilder message = new StringBuilder();
                            for (String str : args) {
                                message.append(str).append(" ");
                            }
                            all.sendMessage(//your message);
                            return;
    this should work
     
    #3 Chaotisch3r, Oct 18, 2020 at 7:19 PM
    Last edited: Oct 18, 2020 at 7:24 PM
  4. Still not working, code:
    Code (Java):
    public class StaffChatCommand extends Command
    {
       
        public StaffChatCommand()
        {
            super("staffchat", "staffchat.use", "sc");
        }
       
        public void execute(CommandSender sender, String[] args)
        {
           
            ProxiedPlayer player = (ProxiedPlayer) sender;
           
            if (args.length == 0)
            {
                player.sendMessage(new TextComponent(ChatColor.DARK_RED + "Usage: /sc <message>"));
                return;
            }
           
            if (player.hasPermission("rank.admin"))
            {
                for (ProxiedPlayer all : BungeeCord.getInstance().getPlayers())
                {
                    if (all.hasPermission("rank.admin") || (all.hasPermission("rank.mod")))
                    {
                        StringBuilder message = new StringBuilder();
                        for (String str : args)
                        {
                            message.append(str).append(" ");
                            all.sendMessage(new TextComponent(ChatColor.translateAlternateColorCodes('&', "&b&lStaffChat &c&lAdmin &r" +
                                player.getName() + ": " + message.toString())));
                            return;
                        }
                    }
                }
            }
           
            else if (player.hasPermission("rank.mod"))
            {
                for (ProxiedPlayer all : BungeeCord.getInstance().getPlayers())
                {
                    if (all.hasPermission("rank.mod") || (all.hasPermission("rank.admin")))
                    {
                        StringBuilder message = new StringBuilder();
                        for (String str : args)
                        {
                            message.append(str).append(" ");
                            all.sendMessage(new TextComponent(ChatColor.translateAlternateColorCodes('&', "&b&lStaffChat &d&lMod &r" +
                                player.getName() + ": " + message)));
                            return;
                        }
                    }
                }
            }
           
        }
       
    }
     
  5. NickCloud

    NickCloud Previously TheNickSkater

    Remove the return in your loop (At least try it). Also, any errors or still just 1 argument parsing?
     
  6. Yeah your
    Code (Java):
    all.sendMessage();
    and your
    Code (Java):
     return;
    shouldn't be in the for-each loop