command help

Discussion in 'Plugin Development' started by drillzy, May 25, 2017.

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

    drillzy

    hello guys, i need some help with my command. what i am trying to do is when a player runs /joke submit <joke> it will add <joke> to config and send a msg to the player that the msg has been added. when i do /joke submit it still works, but when i do /joke submit <joke> it doesnt send me anything as if the code doesnt exist. i dont know if i am checking the args wrong or what. help plz! here is the code for the submit arg:

    Code:
          if(args[0].equalsIgnoreCase("submit")){
    
                  if(p.hasPermission("jokes.submit")){
    
                   
    
        if(args.length == 1){
    
                    p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit Msg Fail")));
    
                    cooldowns.remove(p.getName());
    
                    return true;
    
        }
    
       
    
       
    
              final int cooldownTime = sm.getConfig().getInt("Cooldown Time");
    
                if(cooldowns.containsKey(p.getName())) {
    
                    long secondsLeft = ((cooldowns.get(p.getName())/1000)+cooldownTime) - (System.currentTimeMillis()/1000);
    
                    if(secondsLeft>0) {
    
                   
    
                        p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lJokes &8» &cYou have to wait for &6" + secondsLeft + " &cmore second(s)!" ));
    
                        return true;
    
                    }
    
                }
    
               
    
                cooldowns.put(p.getName(), System.currentTimeMillis());
    
                                   
    
    
    
        List<String> list = sm.getConfig().getStringList("Jokes");
    
       
    
                  if(args.length >= 1){
    
                  StringBuilder sb = new StringBuilder();
    
                   
    
                  for(int i = 0; i < args.length; i++) {
    
                  sb.append(args[i]+" ");
    
                  }
    
                   
    
                   
    
                  sb.append(ChatColor.translateAlternateColorCodes('&', " &8- &3BY: &e&o") + p.getName());
    
                   
    
                  list.add(ChatColor.translateAlternateColorCodes('&', "&2" + sb.toString()));
    
                   
    
                   
    
                   
    
                  p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit Msg")));           
    
    
    
        sm.getConfig().set("Jokes", list);
    
                    sm.saveConfig();
    
                    reloadConfig();
    
                  }
    
                   
    
                  }
    
               
    
                    else {
    
                  p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit No Perm")));
    
                  cooldowns.remove(p.getName());
    
                  }
    
          }
    
     
  2. Offline

    Zombie_Striker

    @drillzy
    Have you debugged? Do you know where it stops reading your code/ if it does? Try printing out lines at key sections until it is no longer being printed out.
     
  3. Offline

    drillzy

    @Zombie_Striker
    this is all it runs:

    Code:
     if(args[0].equalsIgnoreCase("submit")){
    
                if(p.hasPermission("jokes.submit")){
    
    
    
      if(args.length == 1){
    
                  p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit Msg Fail")));
    
                  cooldowns.remove(p.getName());
    
                  return true;
    
      }
    
    the rest it just as if it is not there.
     
  4. Offline

    Zombie_Striker

    @drillzy
    If that is the case, it is detecting that args is equal to 1 (which it should not be if you also added a joke to the command). Either that, or this is not the full code. Try printing out the args length before the if statement, to make sure it is greater than 1.

    If, for some reason, it is still not working and it is greater than 1, format your code and post the full class.
     
  5. Offline

    drillzy

    @Zombie_Striker
    yea i just tried and it still didnt affect it. here is my full class.

    Code:
    package me.drillzy.jokes;
    
    
    
    import java.util.HashMap;
    import java.util.List;
    
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import net.md_5.bungee.api.ChatColor;
    
    public class Jokes extends JavaPlugin {
    private SettingsManager sm = SettingsManager.getInstance();
    
    public void onEnable(){
    
    System.out.print("---------------------------------");
    System.out.print("-                               -");
    System.out.print("-   [Jokes] Has been Enabled    -");
    System.out.print("-                               -");
    System.out.print("---------------------------------");
    
    final FileConfiguration config = this.getConfig();
    
    
    config.options().copyDefaults(true);
    saveConfig();
    
    sm.setup(this);
    }
    
    
    public void onDisable(){
    
    System.out.print("---------------------------------");
    System.out.print("-                               -");
    System.out.print("-  [Jokes] Has been Disabled    -");
    System.out.print("-                               -");
    System.out.print("---------------------------------");
    }
    
    
    public HashMap<String, Long> cooldowns = new HashMap<String, Long>();
    private int i = 0;
    
    
    
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            CommandSender p = sender;
          if(label.equalsIgnoreCase("joke")) {
          if(args.length == 0){
          {
    
            List<String> list = sm.getConfig().getStringList("Jokes");
            if(list == null || list.isEmpty()) {
            p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lJokes &8» &cNo Jokes SetUp! Create one by doing: &3/jokesubmit <joke>"));
            return true;
            }
            i++;
            if(i >= list.size())
              i = 0;
            p.sendMessage(ChatColor.translateAlternateColorCodes('&', list.get(i)));
            return true;
    
          }
    
    
    
        }
    
          if(args.length == 1){
      if(args[0].equalsIgnoreCase("featured")){
            if(sm.getConfig().getBoolean("Jokes Featured enabled") == true){
                List<String> jokeOTW = sm.getConfig().getStringList("Jokes Featured");
                if(jokeOTW == null || jokeOTW.isEmpty()) {
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lJokes &8» &cThere are no Featured Jokes Here yet! Do &3/joke submit <joke> &cto possibly make it into the featured list of jokes!"));
                return true;
    
                }
                i++;
                if(i >= jokeOTW.size())
                  i = 0;
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', jokeOTW.get(i)));
                return true;         
    
      }else{
      p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cThat feature has been disabled"));
      }
    
      }
    
         
    
      if(args[0].equalsIgnoreCase("submit")){
                if(p.hasPermission("jokes.submit")){
    
      if(args.length == 1){
                  p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit Msg Fail")));
                  cooldowns.remove(p.getName());
                  return true;
    
      }
    
            final int cooldownTime = sm.getConfig().getInt("Cooldown Time");
              if(cooldowns.containsKey(p.getName())) {
                  long secondsLeft = ((cooldowns.get(p.getName())/1000)+cooldownTime) - (System.currentTimeMillis()/1000);
                  if(secondsLeft>0) {
    
                      p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lJokes &8» &cYou have to wait for &6" + secondsLeft + " &cmore second(s)!" ));
                      return true;
                  }
              }
    
              cooldowns.put(p.getName(), System.currentTimeMillis());
    
      List<String> list = sm.getConfig().getStringList("Jokes");
    
    
    
                if(args.length >= 1){
                StringBuilder sb = new StringBuilder();
    
                for(int i = 0; i < args.length; i++) {
                sb.append(args[i]+" ");
                }
    
    
    
                sb.append(ChatColor.translateAlternateColorCodes('&', " &8- &3BY: &e&o") + p.getName());
                list.add(ChatColor.translateAlternateColorCodes('&', "&2" + sb.toString()));
    
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit Msg")));
                sm.getConfig().set("Jokes", list);
                  sm.saveConfig();
                  reloadConfig();
                }
                }
                  else {
    
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit No Perm")));
                cooldowns.remove(p.getName());
                }
        }
    
    
    if(args[0].equalsIgnoreCase("help")){
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3&l=--=--=--=--=--=--=--=--=--=--="));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "                       &c&lJokes"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', " "));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aCommands: --"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', " "));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3/joke submit &6Submit a joke to the Server's list"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3/joke &6View a Joke from the Server's list"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3/joke featured &6View the Featured Jokes list"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3/joke reload &6Reload the Jokes Config"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', " "));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&aPermissions: --"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', " "));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cjokes.submit &8- &3/joke submit"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cjokes.reload &8- &3/joke reload"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cNo Permission &8- &3/joke"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cNo Permission &8- &3/joke featured"));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', " "));
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&3&l=--=--=--=--=--=--=--=--=--=--="));
    
    }
    
         
    
         
    
         
    
    
    if(args[0].equalsIgnoreCase("reload")){
    
    if(p.hasPermission("jokes.reload")){
    
    reloadConfig();
    
    cooldowns.remove(p.getName());
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Yes Reload Perm")));
    
    }else{
    
    p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("No Reload Perm")));
    
              cooldowns.remove(p.getName());
    
              return true;
    
    }
    
            }
    
          }
    
          }
    
           
    
    
    
            if(p.hasPermission("jokes.bypasstime")){
    
            cooldowns.remove(p.getName());
    
            }
    
           
    
       
    
       
    
    
              return true;
    
    }
    
    }
    
     
  6. Offline

    Zombie_Striker

    @drillzy
    So? Is the args length greater than 1?

    What happens if you remove that if statement? Does that temperately fix the problem?
     
  7. Offline

    Horsey

    This is your problem:
    Code:Java
    1.  
    2. if(args.length == 1){
    3. // You are checking if the command is '/joke submit', not '/joke submit <joke>'
    4.  

    You should replace it with this:
    This is your problem:
    Code:Java
    1.  
    2. if(args.length > 0){
    3. // This checks if the command you send has more than one argument, so that /joke submit <joke> would work
    4.  
     
  8. Offline

    RithikVaderX3

    args.length will return the number of elements in the array args. So, if there are no elements in that, it will return 0. If you call "/joke submit", submit is the 0th element and args.length will return 1. The command's args will be split after EACH space.
    If you submit a joke, for example like this: "/joke submit This is a random joke", there will be more than 2 args. By that, I mean args[0] = submit, args[1] = This, args[2] = is, and so on. So you should use
    Code:java
    1.  
    2. if(args.length >= 2){
    3. //Concatenate all args after submit (element 0) with space as a separator and assign it to a new string.
    4. }
    5.  
     
  9. Offline

    drillzy

    @Horsey @RithikVaderX3

    i tried of your guys' solutions but its still the same... here is the code so far for the submiting part:

    Code:
     if(args[0].equalsIgnoreCase("submit")){
                if(p.hasPermission("jokes.submit")){
    
    
    
      if(args.length > 0){
                  p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit Msg Fail")));
                  cooldowns.remove(p.getName());
                  return true;
      }
    
      if(args.length >= 2){
    
          final int cooldownTime = sm.getConfig().getInt("Cooldown Time");
          if(cooldowns.containsKey(p.getName())) {
              long secondsLeft = ((cooldowns.get(p.getName())/1000)+cooldownTime) - (System.currentTimeMillis()/1000);
              if(secondsLeft>0) {
    
                  p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c&lJokes &8» &cYou have to wait for &6" + secondsLeft + " &cmore second(s)!" ));
                  return true;
              }
          }
    
          cooldowns.put(p.getName(), System.currentTimeMillis());
          List<String> list = sm.getConfig().getStringList("Jokes");
    
                StringBuilder sb = new StringBuilder();
    
                for(int i = 0; i < args.length; i++) {
                sb.append(args[i]+" ");
                }
    
                sb.append(ChatColor.translateAlternateColorCodes('&', " &8- &3BY: &e&o") + p.getName());
                list.add(ChatColor.translateAlternateColorCodes('&', "&2" + sb.toString()));
    
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit Msg")));
                sm.getConfig().set("Jokes", list);
                  sm.saveConfig();
                  reloadConfig();
    
                }
                }
                  else {
                p.sendMessage(ChatColor.translateAlternateColorCodes('&', sm.getConfig().getString("Joke Submit No Perm")));
                cooldowns.remove(p.getName());
                }
        }
    
     
  10. Offline

    RithikVaderX3

    @drillzy
    You are checking if the args.length is greater than 0 and returning true if it is true. When this returns true, the next if statement, that is
    Code:
    if(args.length >= 2)
    
    is NEVER run. You might want to remove the part where you are returning true, or move the code in that if statement into an else statement for
    Code:
    if(args[0].equalsIgnoreCase("submit")){
    if(p.hasPermission("jokes.submit")){
    
     
Thread Status:
Not open for further replies.

Share This Page