diff --git a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java index 3908bcc34..fbd2ff6ca 100644 --- a/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java +++ b/Essentials/src/com/earth2me/essentials/EssentialsPlayerListener.java @@ -356,6 +356,12 @@ public class EssentialsPlayerListener implements Listener { public void onPlayerCommandPreprocess(final PlayerCommandPreprocessEvent event) { final Player player = event.getPlayer(); final String cmd = event.getMessage().toLowerCase(Locale.ENGLISH).split(" ")[0].replace("/", "").toLowerCase(Locale.ENGLISH); + if (ess.getUser(player).isMuted() && (ess.getSettings().getMuteCommands().contains(cmd) || ess.getSettings().getMuteCommands().contains("*"))) { + event.setCancelled(true); + player.sendMessage(tl("voiceSilenced")); + LOGGER.info(tl("mutedUserSpeaks", player.getName())); + return; + } if (ess.getSettings().getSocialSpyCommands().contains(cmd) || ess.getSettings().getSocialSpyCommands().contains("*")) { for (User spyer : ess.getOnlineUsers()) { if (spyer.isSocialSpyEnabled() && !player.equals(spyer.getBase())) { diff --git a/Essentials/src/com/earth2me/essentials/ISettings.java b/Essentials/src/com/earth2me/essentials/ISettings.java index 4b1d97263..b595d2ff3 100644 --- a/Essentials/src/com/earth2me/essentials/ISettings.java +++ b/Essentials/src/com/earth2me/essentials/ISettings.java @@ -48,6 +48,8 @@ public interface ISettings extends IConf { Set getSocialSpyCommands(); + Set getMuteCommands(); + Map getKit(String name); ConfigurationSection getKits(); diff --git a/Essentials/src/com/earth2me/essentials/Settings.java b/Essentials/src/com/earth2me/essentials/Settings.java index a111de471..ba3a57281 100644 --- a/Essentials/src/com/earth2me/essentials/Settings.java +++ b/Essentials/src/com/earth2me/essentials/Settings.java @@ -254,6 +254,24 @@ public class Settings implements net.ess3.api.ISettings { return socialSpyCommands; } + private Set muteCommands = new HashSet(); + + private Set _getMuteCommands() { + Set muteCommands = new HashSet(); + if(config.isList("mute-commands")) { + for(String s : config.getStringList("mute-commands")) { + muteCommands.add(s.toLowerCase(Locale.ENGLISH)); + } + } + + return muteCommands; + } + + @Override + public Set getMuteCommands() { + return muteCommands; + } + private String nicknamePrefix = "~"; private String _getNicknamePrefix() { @@ -489,6 +507,7 @@ public class Settings implements net.ess3.api.ISettings { isCustomJoinMessage = !customJoinMessage.equals("none"); customQuitMessage = _getCustomQuitMessage(); isCustomQuitMessage = !customQuitMessage.equals("none"); + muteCommands = _getMuteCommands(); } private List itemSpawnBl = new ArrayList(); diff --git a/Essentials/src/config.yml b/Essentials/src/config.yml index c00e9f005..af28abc16 100644 --- a/Essentials/src/config.yml +++ b/Essentials/src/config.yml @@ -138,6 +138,16 @@ socialspy-commands: - ewhisper - pm +# Mute Commands +# These commands will be disabled when a player is muted. +# Use '*' to disable every command. +# Essentials already disabled Essentials messaging commands by default. +# It only cars about the root command, not args after that (it sees /f chat the same as /f) +mute-commands: + - f + - kittycannon + # - '*' + # If you do not wish to use a permission system, you can define a list of 'player perms' below. # This list has no effect if you are using a supported permissions system. # If you are using an unsupported permissions system, simply delete this section.