Why does the mute the whole server?

Discussion in 'Plugin Development' started by jamw, Jun 9, 2012.

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

    jamw

    Hey there, i post alot on this forum, mainly because i'm kind of teaching myself how to code, but with the help of you guys... if that makes sense. Anyway, I recently made a Mute plugin, but when you mute someone, it mute's the whole server for some unknown reason. Can you help me out here?

    Code:
    public class Mute extends JavaPlugin implements Listener {
        public static Mute plugin;
        public boolean Muted;
        public Player targetPlayer;
        public Player mutedPlayer;
        public final Logger log = Logger.getLogger("Minecraft");
        HashMap<Player, String> muted = new HashMap<Player, String>();
     
        public void onEnable() {
            getServer().getPluginManager().registerEvents(this, this);
        }
     
        public void onDisable() {
        }
     
        public boolean onCommand(CommandSender sender, Command cmd,
                String cmdlabel, String[] args) {
            Player player = (Player) sender;
            if (cmdlabel.equalsIgnoreCase("mute")) {
                if(player.hasPermission("mute.others")){
                if (args.length == 0) {
                    player.sendMessage(ChatColor.GREEN
                            + "/mute (PlayerName) or /mutecheck (PlayerName)");
                 
             
                //When they mute a player 
     
                } else if (args.length == 1) {
                    targetPlayer = player.getServer().getPlayerExact(args[0]);
                    mutedPlayer = targetPlayer;
                    String input = args[0];
                    //if the player is online
                    if (targetPlayer == null) {
                        player.sendMessage(ChatColor.GREEN + input + " is offline");
                    } else {
                        if (muted.containsKey(targetPlayer)) {
                            player.sendMessage(ChatColor.GREEN
                                    + targetPlayer.getName() + " unmuted!");
                            muted.remove(targetPlayer);
                            targetPlayer
                                    .sendMessage(ChatColor.GREEN
                                            + "You have been unmuted. Please follow the rules");
                        } else {
                            muted.put(targetPlayer, null);
                            player.sendMessage(ChatColor.GREEN
                                    + targetPlayer.getName() + " muted!");
                            targetPlayer
                                    .sendMessage(ChatColor.GREEN
                                            + "You have been muted! Follow the rules next time.");
     
                        }
                    }
                } else if (args.length >= 2) {
                    player.sendMessage(ChatColor.GREEN + "Too many arguments");
                }
                }else{
                    player.sendMessage(ChatColor.RED +"No permission!");
                }
                 
            } else if (cmdlabel.equalsIgnoreCase("mutecheck")) {
                if(player.hasPermission("mute.check")){
                if (args.length == 0) {
                    player.sendMessage(ChatColor.GREEN
                            + "/mute (PlayerName) or /mutecheck (PlayerName)");
                } else if (args.length == 1) {
                    Player ismuted = player.getServer().getPlayer(args[0]);
                    if(ismuted != null){
                        if(muted.containsKey(mutedPlayer)){
                            player.sendMessage(ChatColor.GREEN + "" + ismuted.getName() + " Is muted.");
                        }else{
                            player.sendMessage(ChatColor.GREEN + "" + ismuted.getName() + " Isn't muted.");
                        }
                    }else{
                        String input = args[0];
                        player.sendMessage(ChatColor.GREEN +input + " is not online.");
                    }
                }else if(args.length > 1){
                    player.sendMessage(ChatColor.GREEN + "Too many arguments!");
                }
     
            }else{
                player.sendMessage(ChatColor.RED +"No permission!");
            }
            }
            return true;
     
        }
     
        @EventHandler
        public void cancelChat(PlayerChatEvent event) {
            if (muted.containsKey(mutedPlayer)) {
                event.setCancelled(true);
                event.getPlayer().sendMessage(ChatColor.GREEN + "You are muted.");
            }else{
             
            }
        }
    }
    
     
  2. Offline

    LucasEmanuel

    In this one:
    Code:java
    1.  
    2. @EventHandler
    3. public void cancelChat(PlayerChatEvent event) {
    4. if (muted.containsKey(mutedPlayer)) {
    5. event.setCancelled(true);
    6. event.getPlayer().sendMessage(ChatColor.GREEN + "You are muted.");
    7. }else{
    8.  
    9. }
    10. }
    11.  


    Dont use "muted.containxKey(mutedPlayer)" use "muted.containsKey(event.getPlayer())" instead.

    Also you dont need to use a HashMap to store a list of muted player, use a List object instead like ArrayList or something. :)
     
  3. And don't ever store Player, store player's name... but for contains() I belive a set is better.
    Code:
    Set<String> mutedPlayers = new HashSet<String>();
    
    //...
    
    mutedPlayers.add(player.getName());
    //...
    mutedPlayers.remove(player.getName());
    
    //...
    
    if(mutedPlayers.contains(event.getPlayer.getName()))
    {
         //...
    }
     
    ferrybig likes this.
Thread Status:
Not open for further replies.

Share This Page