I'm getting double No permission messages?

Discussion in 'Plugin Development' started by x_Jake_s, Feb 24, 2015.

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

    x_Jake_s

    Okay so i cant find where this has gone wrong ALL of my permissions work effectively on all of my many commands but yet when you have no permission it still servers its purpose but it duplicates the messages any ideas here is my source code (Plugin rights) :

    Main.class

    Code:
    package me.jake.chatadmin;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.logging.Logger;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.World;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class Main extends JavaPlugin {
    
        int maxCapsPercentage;
        int minLength;
        static String upperCase;
        private boolean stopChat;
    
        public ArrayList<String> kick = new ArrayList<String>();
        public ArrayList<String> mute = new ArrayList<String>();
    
        public boolean isStopChat() {
            return this.stopChat;
        }
    
        public static int capitalCount(String string) {
            char ch = string.charAt(0);
            int upperCaseCount = 0;
            for (int i = 0; i < string.length(); i++) {
                ch = string.charAt(i);
                if ((Character.isAlphabetic(ch)) && (Character.isUpperCase(ch))) {
                    upperCaseCount++;
                }
            }
            return upperCaseCount;
        }
    
        public SettingsManager settings = SettingsManager.getInstance();
        public ArrayList<String> plugins = new ArrayList<String>();
        public final ChatListener cl = new ChatListener(this);
        public final ChatListener clo = new ChatListener(this);
        public List<String> list = new ArrayList<String>();
        public Logger log = getLogger();
        private List<String> broadcasts = new ArrayList<String>();
        private int interval = 180;
        private int line = 0;
    
        public void onDisable() {
            getServer().getConsoleSender().sendMessage(
                    ChatColor.DARK_RED + "[ChatAdmin] " + ChatColor.GOLD
                            + "by Jake is Disabled");
        }
    
        public void onEnable() {
            // Updater updater = new Updater(this, 88113, this.getFile(),
            // Updater.UpdateType.DEFAULT, false);
            settings.setup(this);
            this.maxCapsPercentage = getConfig().getInt("max-caps-percentage");
            this.minLength = getConfig().getInt("min-message-length");
            upperCase = getConfig().getString("uppercase-characters");
            List<String> hiddenCommands = new ArrayList<String>();
            hiddenCommands.add("all");
            PluginManager pm = getServer().getPluginManager();
            pm.registerEvents(this.cl, this);
            getServer().getConsoleSender().sendMessage(
                    ChatColor.GREEN + "[ChatAdmin] " + ChatColor.GOLD
                            + "by Jake is Enabled");
            getConfig().options().copyDefaults(true);
            saveDefaultConfig();
            this.interval = getConfig().getInt("Interval");
            List<String> tempArray = getConfig().getStringList("Broadcasts");
            List<String> bList = new ArrayList<String>();
            for (String s : tempArray) {
                bList.add(ChatColor.translateAlternateColorCodes('&', s));
                this.stopChat = false;
            }
            this.broadcasts = bList;
            Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
                public void run() {
                    Main.this.broadcast();
                }
            }, 0L, this.interval * 20);
        }
    
        private void broadcast() {
            if (getConfig().getBoolean("EnableAutoBroadcasts") == true) {
                this.line += 1;
                if (this.line > this.broadcasts.size() - 1) {
                    this.line = 0;
                }
                Bukkit.broadcastMessage((String) this.broadcasts.get(this.line));
            } else {
                return;
            }
        }
    
        public boolean onCommand(CommandSender sender, Command command,
                String commandLable, String[] args) {
            String prefix = this.getConfig().getString("Prafix") + " ";
            String prafix = ChatColor.translateAlternateColorCodes('&', prefix);
            if (command.getName().equalsIgnoreCase("warplist")) {
                sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
                        "&8&m----- &6[ChatAdmin Warps]&8&m-----"));
                StringBuilder sb = new StringBuilder();
    
                for (String warpName : settings.getData()
                        .getConfigurationSection("warps").getKeys(false)) {
                    sb.append(warpName).append(", ");
                }
    
                sender.sendMessage(ChatColor.GOLD + "Warps: " + ChatColor.GREEN
                        + sb.substring(0, sb.length() - 2));
            }
    
            String noperm = this.getConfig().getString("NoPermission");
            String np = ChatColor.translateAlternateColorCodes('&', noperm);
            if (command.getName().equalsIgnoreCase("tp")) {
                Player player = (Player) sender;
                if (player.hasPermission("chatadmin.tp")) {
                    if (args.length == 0) {
                        player.sendMessage(ChatColor.RED
                                + "Invalid Arguments! Specify a player.");
                        player.sendMessage(ChatColor.RED + "Usage: /tp <player>");
                        return false;
                    }
    
                    Player target = Bukkit.getServer().getPlayer(args[0]);
                    if (target == null) {
                        player.sendMessage(ChatColor.RED + args[0]
                                + " is not online or does not exist!");
                        return false;
                    }
                    player.teleport(target.getLocation());
                    player.sendMessage(ChatColor.GOLD + "Teleporting...");
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
    
            if (command.getName().equalsIgnoreCase("setspawn")) {
                Player player = (Player) sender;
                if (player.hasPermission("chatadmin.setspawn")) {
                    settings.getData().set("spawn.world",
                            player.getLocation().getWorld().getName());
                    settings.getData().set("spawn.x", player.getLocation().getX());
                    settings.getData().set("spawn.y", player.getLocation().getY());
                    settings.getData().set("spawn.z", player.getLocation().getZ());
                    settings.saveData();
                    player.sendMessage(ChatColor.GOLD + "Spawn has been set.");
                    return false;
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
    
            if (command.getName().equalsIgnoreCase("spawn")) {
                Player player = (Player) sender;
                if (player.hasPermission("chatadmin.spawn")) {
    
                    if (settings.getData().getConfigurationSection("spawn") == null) {
                        player.sendMessage(ChatColor.RED + "Spawn = null");
                        return false;
                    }
                    World w = Bukkit.getServer().getWorld(
                            settings.getData().getString("spawn.world"));
                    double x = settings.getData().getDouble("spawn.x");
                    double y = settings.getData().getDouble("spawn.y");
                    double z = settings.getData().getDouble("spawn.z");
                    Location loc = new Location(w, x, y, z);
                    player.teleport(loc);
                    player.sendMessage(ChatColor.GOLD + "Warping to"
                            + ChatColor.GREEN + " Spawn" + ChatColor.GOLD + ".");
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
            if (command.getName().equalsIgnoreCase("delspawn")) {
                if (sender.hasPermission("chatadmin.delspawn")) {
                    settings.getData().set("spawn.world", null);
                    settings.getData().set("spawn.x", null);
                    settings.getData().set("spawn.y", null);
                    settings.getData().set("spawn.z", null);
                    settings.saveData();
                    sender.sendMessage(ChatColor.RED + "Spawn has been removed. ");
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
    
            if (command.getName().equalsIgnoreCase("setwarp")) {
                Player player = (Player) sender;
                if (player.hasPermission("chatadmin.setwarp")) {
                    if (args.length == 0) {
                        player.sendMessage(ChatColor.RED
                                + "Usage: /setwarp <warp.name>");
                        return false;
                    }
                    settings.getData().set("warps." + args[0] + ".world",
                            player.getLocation().getWorld().getName());
                    settings.getData().set("warps." + args[0] + ".x",
                            player.getLocation().getX());
                    settings.getData().set("warps." + args[0] + ".y",
                            player.getLocation().getY());
                    settings.getData().set("warps." + args[0] + ".z",
                            player.getLocation().getZ());
                    settings.saveData();
                    player.sendMessage(ChatColor.GREEN + "warp " + args[0]
                            + " set.");
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
    
            if (command.getName().equalsIgnoreCase("warp")) {
                Player player = (Player) sender;
                if (player.hasPermission("chatadmin.warp")) {
                    if (args.length == 0) {
                        player.sendMessage(ChatColor.RED
                                + "Usage: /warp <warp.name>");
                        return false;
                    }
                    if (settings.getData().getConfigurationSection(
                            "warps." + args[0]) == null) {
                        player.sendMessage(ChatColor.RED + "The warp " + args[0]
                                + " does not exist.");
                    }
                    World w = Bukkit.getServer().getWorld(
                            settings.getData().getString(
                                    "warps." + args[0] + ".world"));
                    double x = settings.getData().getDouble(
                            "warps." + args[0] + ".x");
                    double y = settings.getData().getDouble(
                            "warps." + args[0] + ".y");
                    double z = settings.getData().getDouble(
                            "warps." + args[0] + ".z");
                    player.teleport(new Location(w, x, y, z));
                    player.sendMessage(ChatColor.GOLD + "Warping to "
                            + ChatColor.GREEN + args[0] + ChatColor.GOLD + ".");
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
    
            if (command.getName().equalsIgnoreCase("delwarp")) {
                if (sender.hasPermission("chatadmin.delwarp")) {
                    if (args.length == 0) {
                        sender.sendMessage(ChatColor.RED
                                + "Usage: /delwarp <warp.name>");
                        return false;
                    }
                    if (settings.getData().getConfigurationSection(
                            "warps." + args[0]) == null) {
                        sender.sendMessage(ChatColor.RED + "The warp " + args[0]
                                + " does not exist.");
                    }
                    settings.getData().set("warps." + args[0], null);
                    settings.saveData();
                    sender.sendMessage(ChatColor.GOLD + "Removed warp "
                            + ChatColor.GREEN + args[0] + ChatColor.GOLD + ".");
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
    
            if (command.getName().equalsIgnoreCase("rules")) {
                this.getConfig().getStringList("Rules");
                List<String> messages = getConfig().getStringList("Rules");
                for (String m : messages) {
                    sender.sendMessage(ChatColor.translateAlternateColorCodes('&',
                            m));
                }
            }
    
            if (command.getName().equalsIgnoreCase("kick")) {
                if (args.length < 1) {
                    sender.sendMessage(prafix + ChatColor.WHITE
                            + "Usage: /kick <player> [Reason...]");
                    return false;
                }
                if (!sender.hasPermission("chatadmin.kick")) {
                    sender.sendMessage(prafix + np);
                    return false;
                }
                Player kick = this.getServer().getPlayer(args[0]);
                if ((kick == null) || kick.hasPermission("chatadmin.kick.bypass")) {
                    sender.sendMessage(prafix + args[0]
                            + " is not online or you cannot kick the player.");
                } else {
                    if (args.length < 2) {
                        sender.sendMessage(prafix
                                + "Invalid Arguments (Missing a Reason!)");
                        sender.sendMessage(prafix
                                + "Usage: /kick <player> [Reason...]");
                    } else {
    
                        String message = "";
                        if (args.length > 1) {
                            for (int i = 1; i < args.length; i++) {
                                message = message + args[i] + " ";
                            }
                        }
    
                        String reason = this.getConfig().getString("KickReason");
    
                        String kickMsg = prafix
                                + ChatColor.RED
                                + "You have been kicked from the server "
                                + (message != null ? ChatColor.WHITE + "Reason: "
                                        + ChatColor.RED + message : reason);
    
                        kick.kickPlayer(kickMsg);
    
                        Bukkit.broadcastMessage(sender.getName() + " Has kicked "
                                + kick.getName() + " Reason: " + message);
                        return true;
    
                    }
                }
    
            }
    
            if (command.getName().equalsIgnoreCase("mute")) {
                if (args.length < 1) {
                    sender.sendMessage(prafix + ChatColor.WHITE
                            + "Usage: /mute <player> [Reason...]");
                    return false;
                }
                if (!sender.hasPermission("chatadmin.mute")) {
                    sender.sendMessage(prafix + np);
                    return false;
                }
                Player p1 = Bukkit.getPlayer(args[0]);
                if ((p1 == null) || (p1.hasPermission("chatadmin.mute.bypass"))) {
                    sender.sendMessage(prafix + ChatColor.GREEN + args[0]
                            + ChatColor.RED
                            + " is not online or you cannot mute that player.");
                } else {
                    String message = "";
                    if (args.length > 1) {
                        for (int i = 1; i < args.length; i++) {
                            message = message + args[i] + " ";
    
                        }
                    }
                    if (this.mute.contains(p1.getName())) {
                        this.mute.remove(p1.getName());
                        p1.sendMessage(prafix + ChatColor.GREEN
                                + "You have been unmuted!");
    
                        Bukkit.broadcastMessage(prafix + ChatColor.AQUA
                                + sender.getName() + ChatColor.GREEN
                                + " has Unmuted " + ChatColor.AQUA + p1.getName()
                                + ".");
                    } else {
                        this.mute.add(p1.getName());
                        p1.sendMessage(prafix + ChatColor.GREEN
                                + "You have been Muted by " + sender.getName());
                        String Message = ChatColor.translateAlternateColorCodes(
                                '&', message);
                        Bukkit.broadcastMessage(prafix + ChatColor.AQUA
                                + sender.getName() + ChatColor.GREEN
                                + " has muted " + ChatColor.AQUA + p1.getName()
                                + ChatColor.GREEN + " Reason : ");
                        Bukkit.broadcastMessage(prafix + ChatColor.RED + Message);
                    }
                }
            }
    
            if ((command.getName().toLowerCase().equalsIgnoreCase("chatlock"))
                    && ((sender.hasPermission("chatadmin.chat.lock")) || (sender
                            .isOp()))) {
                if (this.stopChat) {
                    Bukkit.broadcastMessage(prafix
                            + "§bChat has been unlocked by §b" + sender.getName()
                            + ChatColor.DARK_AQUA + ".");
                    sender.sendMessage(prafix + ChatColor.RED
                            + "You have unlocked the chat!");
                    this.stopChat = false;
                    return true;
                }
                sender.sendMessage(prafix + ChatColor.RED
                        + "You have locked the chat!");
                Bukkit.broadcastMessage(prafix + "§bChat has been locked by §b"
                        + sender.getName() + ChatColor.DARK_AQUA + ".");
                sender.sendMessage(prafix + ChatColor.RED
                        + "You have locked the chat!");
                this.stopChat = true;
                return true;
            } else {
                sender.sendMessage(prafix + np);
            }
    
            if ((command.getName().toLowerCase().equalsIgnoreCase("careload"))) {
                if (sender.hasPermission("chatadmin.reload")) {
                    sender.sendMessage(prafix + ChatColor.GOLD + "is reloading.");
                    saveDefaultConfig();
                    reloadConfig();
                    setEnabled(false);
                    setEnabled(true);
                    sender.sendMessage(prafix + ChatColor.GOLD
                            + "has been reloaded.");
                    return true;
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
            if (command.getName().toLowerCase().equalsIgnoreCase("abc")) {
                if (sender.hasPermission("chatadmin.abc")) {
                    if (args.length < 1) {
                        sender.sendMessage(prafix + ChatColor.WHITE
                                + "Usage: /abc <message>");
                        return false;
                    }
                    String abc = "";
                    for (String str : args) {
                        abc = abc + str + " ";
                    }
                    Bukkit.broadcastMessage(ChatColor.AQUA
                            + ChatColor.translateAlternateColorCodes('&', abc));
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
            if ((command.getName().toLowerCase().equalsIgnoreCase("chatadmin"))
                    || (command.getName().toLowerCase().equalsIgnoreCase("ca"))) {
                sender.sendMessage(ChatColor.WHITE + " ");
                sender.sendMessage(ChatColor.GOLD + ". : | ----" + ChatColor.BLUE
                        + " ChatAdmin Help " + ChatColor.BOLD + ChatColor.GOLD
                        + "---- | : .");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/abc" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "broadcasts without a prefix.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/cabc" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "broadcasts with a prefix.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/chatclear" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "clears your own chat.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/chatclear all" + ChatColor.GOLD + " : "
                        + ChatColor.AQUA + "clears everyones chat.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/chatadmin|/ca" + ChatColor.GOLD + " : "
                        + ChatColor.AQUA + "displays the help page.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/careload" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "Reloads the config.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/chatlock" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "Locks or Unlocks the chat.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/mute" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "mutes a player w/ a reason.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/kick" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "kicks a player w/ a reason.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/warp" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "Warp to a set warp.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/setwarp" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "Set a warp.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/delwarp" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "Delete a warp.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/spawn" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "Teleports you to the spawn.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/setspawn" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "Sets a spawn.");
                sender.sendMessage(ChatColor.DARK_RED + "+ " + ChatColor.DARK_AQUA
                        + "/tp" + ChatColor.GOLD + " : " + ChatColor.AQUA
                        + "Tp to a player.");
                sender.sendMessage(ChatColor.WHITE + " ");
                return true;
            }
            if (command.getName().toLowerCase().equalsIgnoreCase("cabc")) {
                if (sender.hasPermission("chatadmin.cabc")) {
                    if (args.length < 1) {
                        sender.sendMessage(prafix + ChatColor.WHITE
                                + "Usage: /cabc <message>");
                        return false;
                    }
                    String abc = "";
                    for (String str : args) {
                        abc = abc + str + " ";
                    }
                    String prefix1 = getConfig().getString("Prefix");
                    String prefix2 = ChatColor.translateAlternateColorCodes('&',
                            prefix1);
                    Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes(
                            '&', prefix2)
                            + ChatColor.GREEN
                            + " "
                            + ChatColor.translateAlternateColorCodes('&', abc));
                    return true;
                } else {
                    sender.sendMessage(prafix + np);
                    return false;
                }
            }
            if (command.getName().toLowerCase().equalsIgnoreCase("chatclear")) {
                if (args.length == 0) {
                    if (sender.hasPermission("chatadmin.chat.clear")) {
                        for (int i = 0; i < 98; i++) {
                            sender.sendMessage("");
                        }
                        sender.sendMessage(prafix + ChatColor.RED
                                + "You have cleared your chat!");
                        sender.sendMessage("");
                    } else {
                        sender.sendMessage(prafix + ChatColor.DARK_RED + np);
                    }
                } else if (args[0].equalsIgnoreCase("all")) {
                    if (sender.hasPermission("chatadmin.chat.clearall")) {
    
                        for (int i = 0; i < 98; i++) {
                            Bukkit.broadcastMessage("");
                        }
                        Bukkit.broadcastMessage(prafix + ChatColor.GOLD
                                + "Chat has been cleared by " + ChatColor.GREEN
                                + sender.getName());
                        Bukkit.broadcastMessage("");
                        sender.sendMessage(prafix + ChatColor.RED
                                + "You have cleared everyone's chat!");
                    } else {
    
                        sender.sendMessage(prafix + np);
                        return false;
                    }
                }
            }
            return false;
        }
    }
    I dont know why i am getting double messages anyone have an opinion?
     
  2. Offline

    mine-care

    First of all you cast sender to player without checking. Big nono
    Secondy, you do the casting in each commands body individually...
    Thirdly it's too complex to read 50milion lines in your main class,.. If you have commands, use commandExdcutors to clean up your main and mabe tracing probs will be easier.
    Lastly, when does the message apears twice? What command?
     
  3. Offline

    x_Jake_s

    Okay isnt a command executor this:

    Code:
    @Override
    public void onEnable() {
    getServer().getPluginManager().registerEvents(new CommandName(), this);
    instance = this;
    new CommandName();
    CommandName cmdnm = new CommandName();
    getCommand("Command").setExecutor(cmdnm);
    }
    But i dont believe it is register events is it?

    *I am getting double messages from every command. but chatlock?

    i implemented the command executor so i can individually look at each of my commands in a single class and i seen that i had something doubled and it caused my messages to double send but its fixed now. so in a way thank you and i have fixed the checking if a sender is player, and as for your 2nd hint <Secondy, you do the casting in each commands body individually...> i assume your reffering to the Player player = (Player) sender; and i know i have it casted because some commands i want the console to do and this was just a simple way of doing it in my mind atleast whatever that section doesnt matter as it was intentional.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 13, 2016
  4. Offline

    mine-care

    Hmm your code above uses a command executor as listener too... And you create a instance for no reason...
    A command executor is a class implementing CommandExecutor only overriding onCommand method.


    @x_Jake_s
    Np=]
    And about multyple castings it doesn't matter. It is mostly to save you and your compiler some time.
     
  5. Offline

    x_Jake_s

    Yeah and that CommandExecutor was just a quick guess from my mind when i read your post i didnt know but i got it working like:

    Code:
     @Override
        public void onEnable() {
            //COMMANDS
            getCommand("kick").setExecutor(new kick(this));
    }
     
  6. Offline

    MajorSkillage

    Mark this as solved
     
Thread Status:
Not open for further replies.

Share This Page