Solved Group creator command

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

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

    timtower Administrator Administrator Moderator

    You know if it is correct when you test it.
     
  2. Offline

    djbomber36

    I'm away from home so I was thinking if it is correct
     
  3. Offline

    timtower Administrator Administrator Moderator

    Nobody is in a rush so just test it when you are able to.
     
  4. Offline

    djbomber36

    command now working but two problems:
    1- if putting arg lenght giving errors
    2- if putting an else statement giving errors

    My code
    Code:
    package chat;
    
    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.player.AsyncPlayerChatEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin {
    
        public void onEnable() {
            this.getConfig().options().copyDefaults(true);
            this.saveConfig();
    
        }
    
        @EventHandler
        public void onChat(AsyncPlayerChatEvent event) {
            Player p = event.getPlayer();
            for (String Groups : getConfig().getConfigurationSection("Groups").getKeys(false)) {
                String Permission = getConfig().getString("Groups." + Groups + ".Permission");
                String Prefix = getConfig().getString("Groups." + Groups + ".Prefix");
                if (p.hasPermission(Permission))
                    event.setFormat(ChatColor.translateAlternateColorCodes('&',
                            Prefix + p.getDisplayName() + "&7>> " + event.getMessage()));
            }
    
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (cmd.getName().equalsIgnoreCase("ChatX")) {
                if (args.length == 0) {
                    sender.sendMessage(ChatColor.RED + "Invalid Syntax! " + ChatColor.GRAY + "Try use /chatx help");
                    return true;
                } else if (args[0].equalsIgnoreCase("help")) {
                    sender.sendMessage(
                            ChatColor.translateAlternateColorCodes('&', "&a-------------Help For ChatX-------------"));
                    sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
                            "&7You can visit &1bukkit.com/ChatX &7for an helpfull guide"));
                    sender.sendMessage(
                            ChatColor.translateAlternateColorCodes('&', "&6chatx help: &fOpen this guide of the commands"));
                    sender.sendMessage(
                            ChatColor.translateAlternateColorCodes('&', "&6chatx reload: &fReload the configuration file"));
                    sender.sendMessage(
                            ChatColor.translateAlternateColorCodes('&', "&c-------------Group Commands-------------"));
                    sender.sendMessage(
                            ChatColor.translateAlternateColorCodes('&', "&6Group commands will be available soon"));
                    return true;
                } else 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("group")) {
                    if (args[1].equalsIgnoreCase("add")) {
                        sender.sendMessage(args[2]);
                        return true;
                    }
                }
            }
            return false;
        }
    }
     
  5. Online

    KarimAKL

    You aren't checking for the length of 'args' here.
     
  6. Offline

    djbomber36

    @KarimAKL you're right but can tell me how to fix the problems with that I wrote before
     
  7. Offline

    timtower Administrator Administrator Moderator

    Where does it throw the errors? What are the errors?
     
  8. Offline

    djbomber36

    Here's the code
    Code:
    else if (args[0].equalsIgnoreCase("group")) {
                    if (args[1].equalsIgnoreCase("add")) {
                        if (args.length >= 2) {
                            sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
                                    "&cToo Many Arguments! &7Usage: /chatx group add <group>"));
                        }
    
                        else if (args.length == 2) {
                            sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
                                    "&6[ChatX]&7Group &a" + args[2] + " &7created"));
                            return true;
                        } else {
                            sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
                                    "&cInvalid Syntax! &7Usage: /chatx group add <group>"));
                        }
    
                    }
                }
    The problem is that when i type in chat "/chatx group add example", it always say me "&cToo Many Arguments! &7Usage: /chatx group add <group>" and after "/chatx", also when not writing the group name
     
  9. Offline

    timtower Administrator Administrator Moderator

    @djbomber36 That is because you check for >= 2 instead of > 2
     
  10. Offline

    djbomber36

    Always getting the problem waht I explained to you early
     
  11. Offline

    timtower Administrator Administrator Moderator

    @djbomber36 Then let me ask the same question again:
     
  12. Offline

    djbomber36

    Code
    Code:
    else if (args[0].equalsIgnoreCase("group")) {
                    if (args[1].equalsIgnoreCase("add")) {
                        if (args.length > 2) {
                            sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
                                    "&cToo Many Arguments! &7Usage: /chatx group add <group>"));
                        }
    
                        else if (args.length == 2) {
                            sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
                                    "&6[ChatX]&7Group &a" + args[2] + " &7created"));
                            return true;
                        } else if (args.length < 2) {
                            sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
                                    "&cInvalid Syntax! &7Usage: /chatx group add <group>"));
                        }
    
                    }
                }
    If writing "chatx group add example" and "chatx group add example example" getting:"&cToo Many Arguments! &7Usage: /chatx group add <group>"

    If writing "chatx group add" getting:
    [18:29:09 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'chatx' in plugin ChatX v1.0
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:139) ~[spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at org.bukkit.craftbukkit.v1_13_R2.CraftServer.dispatchCommand(CraftServer.java:702) ~[spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at net.minecraft.server.v1_13_R2.PlayerConnection.handleCommand(PlayerConnection.java:1641) ~[spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at net.minecraft.server.v1_13_R2.PlayerConnection.a(PlayerConnection.java:1476) ~[spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at net.minecraft.server.v1_13_R2.PacketPlayInChat.a(PacketPlayInChat.java:45) ~[spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at net.minecraft.server.v1_13_R2.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at net.minecraft.server.v1_13_R2.PlayerConnectionUtils.a(SourceFile:10) ~[spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_212]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_212]
    at net.minecraft.server.v1_13_R2.SystemUtils.a(SourceFile:199) [spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at net.minecraft.server.v1_13_R2.MinecraftServer.b(MinecraftServer.java:895) [spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at net.minecraft.server.v1_13_R2.DedicatedServer.b(DedicatedServer.java:417) [spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at net.minecraft.server.v1_13_R2.MinecraftServer.a(MinecraftServer.java:830) [spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at net.minecraft.server.v1_13_R2.MinecraftServer.run(MinecraftServer.java:728) [spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_212]
    Caused by: java.lang.ArrayIndexOutOfBoundsException: 2
    at chat.Main.onCommand(Main.java:76) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spigot-1.13.2.jar:git-Spigot-518206a-a5b9c7b]
    ... 15 more
     
  13. Offline

    timtower Administrator Administrator Moderator

    @djbomber36 First check needs to be > 3 in that case. And your == 2 check also == 3 and < 3 stuffs.
     
  14. Offline

    djbomber36

    @timtower Thanks now it's working!
    A last question: how do I get a user team prefix? The team prefix is the prefix of the teams in mc vanilla
    Code:
    Code:
    package chat;
    
    import org.bukkit.ChatColor;
    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 ChatServer extends JavaPlugin implements Listener {
    
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
    
        }
    
        @EventHandler
        public void onChat(AsyncPlayerChatEvent event) {
            Player p = event.getPlayer();
            event.setFormat(ChatColor.translateAlternateColorCodes('&', p.getDisplayName() + "&7>> " + event.getMessage()));
        }
    
    }
    [EDIT]I forgot this question: now how I add strings to config.yml? Also sub strings? Like
    Code:
    Example:
         ExaplePrefix: ''
         ExamplePermission: ''
     
    Last edited by a moderator: Jul 1, 2019
  15. Offline

    timtower Administrator Administrator Moderator

    @djbomber36 Don't know about the team prefix, scoreboards is not something I work with.
    Configuration is config.set(path, value)
     
  16. Offline

    djbomber36

    So it will be
    Code:
    config.set("Groups", args[2])
     
  17. Offline

    timtower Administrator Administrator Moderator

    @djbomber36 config.set("Groups."+groupName+".Prefix", prefix)
     
  18. Offline

    djbomber36

    And what about the permission
     
  19. Offline

    timtower Administrator Administrator Moderator

    @djbomber36 You make a second line that has Permission instead of Prefix.
     
  20. Offline

    djbomber36

    It's working!!!
    I used getConfig().set(path, value) instead of Config.set(path, value) because don't recognize "config"
     
  21. Offline

    timtower Administrator Administrator Moderator

    I often write code that can't be copy pasted so the user still needs to pay attention to it.
     
  22. Offline

    djbomber36

    timtower likes this.
  23. Offline

    timtower Administrator Administrator Moderator

    Don't tell my boss :p
    If you don't have any more issues then please mark the thread as solved.
    If you do have more issues: how can we help?
     
  24. Offline

    djbomber36

    How I delete something from the config.yml?
     
  25. Offline

    timtower Administrator Administrator Moderator

    You set it to null.
    So in your case config.set("Groups."+groupName, null)
     
  26. Offline

    djbomber36

    Thanks

    How I mark the thread as solved?
     
  27. Offline

    timtower Administrator Administrator Moderator

    Marked it as solved for you, my interface is different then yours so it is difficult to explain.
     
  28. Offline

    djbomber36

    I forget this problem:
    I want that in the config.yml when I create a group I see Prefix: '<groupname>'
     
  29. Offline

    timtower Administrator Administrator Moderator

    Then you need to set the Prefix option with the groupname.
     
  30. Offline

    djbomber36

    But if I do
    Code:
    getConfig().set("Groups." + args[2] + ".Prefix", "'"+ args[2] + "'");
    It show me '''<groupname>'''
     
Thread Status:
Not open for further replies.

Share This Page