diff --git a/src/com/redstoner/modules/chat/Chat.cmd b/src/com/redstoner/modules/chat/Chat.cmd index 46cc5dc..180339f 100644 --- a/src/com/redstoner/modules/chat/Chat.cmd +++ b/src/com/redstoner/modules/chat/Chat.cmd @@ -34,4 +34,20 @@ command sayn { run sayn name message; help A replacement for the default say command to make the format be more consistant.; } +} + +command mute { + [string:player] { + perm utils.chat.admin; + run mute player; + help Mutes a player.; + } +} + +command unmute { + [string:player] { + perm utils.chat.admin; + run unmute player; + help Unmutes a player.; + } } \ No newline at end of file diff --git a/src/com/redstoner/modules/chat/Chat.java b/src/com/redstoner/modules/chat/Chat.java index 2d624b7..699bac3 100644 --- a/src/com/redstoner/modules/chat/Chat.java +++ b/src/com/redstoner/modules/chat/Chat.java @@ -1,5 +1,6 @@ package com.redstoner.modules.chat; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -15,72 +16,121 @@ import com.redstoner.coremods.moduleLoader.ModuleLoader; import com.redstoner.misc.CommandHolderType; import com.redstoner.misc.Utils; import com.redstoner.modules.Module; +import com.redstoner.modules.datamanager.DataManager; import com.redstoner.modules.ignore.Ignore; -import net.nemez.chatapi.ChatAPI; - @Commands(CommandHolderType.File) @AutoRegisterListener -@Version(major = 4, minor = 0, revision = 0, compatible = 4) -public class Chat implements Module, Listener{ +@Version(major = 4, minor = 0, revision = 1, compatible = 4) +public class Chat implements Module, Listener +{ + + @Override + public void firstLoad() + { + Module.super.firstLoad(); + DataManager.setConfig("chat", " %n §7→§r %m"); + DataManager.setConfig("me", " §7- %n §7⇦ %m"); + DataManager.setConfig("say", " §7[§9%n§7]:§r %m"); + DataManager.setConfig("shrug", " %n §7→§r %m ¯\\_(ツ)_/¯"); + } @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); - String msg = event.getMessage(); + String message = event.getMessage(); event.setCancelled(true); - - if (player.hasPermission("utils.chat")) - Utils.broadcast(" " + Utils.getName(player), " §7→§r " + ChatAPI.colorify(player, msg), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(player) : null); - else - player.sendMessage("§8[§cServer§8] You don't have permission to chat."); + broadcastFormatted("chat", player, message); } @Command(hook = "me") - public boolean me(CommandSender sender, String text) + public boolean me(CommandSender sender, String message) { - String name = Utils.getName(sender); - text = ChatAPI.colorify(sender, text); - Utils.broadcast(" §7- " + name + " §7⇦ ", text, - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + broadcastFormatted("me", sender, message); return true; } @Command(hook = "chat") public boolean chat(CommandSender sender, String message) { - String name = Utils.getName(sender); - Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + broadcastFormatted("chat", sender, message); return true; } @Command(hook = "say") public boolean say(CommandSender sender, String message) { - String name = Utils.getName(sender); - Utils.broadcast(" §7[§9" + name.replaceAll("[^0-9a-zA-Z§&\\[\\]]", "") + "§7]: ", - "§r" + ChatAPI.colorify(null, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + String name; + if (sender instanceof Player) + name = ((Player) sender).getName(); + else + name = "§9CONSOLE"; + broadcastFormatted("say", sender, message, name); return true; } @Command(hook = "sayn") public boolean say(CommandSender sender, String name, String message) { - Utils.broadcast(" §7[§9" + ChatAPI.colorify(sender, name) + "§7]: ", "§r" + ChatAPI.colorify(null, message), - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + broadcastFormatted("say", sender, message, name); return true; } @Command(hook = "shrug") public boolean shrug(CommandSender sender, String message) { - String name = Utils.getName(sender); - Utils.broadcast(" " + name, " §7→§r " + ChatAPI.colorify(sender, message) + " ¯\\_(ツ)_/¯", - ModuleLoader.exists("Ignore")? Ignore.getIgnoredBy(sender) : null); + broadcastFormatted("shrug", sender, message); + return true; + } + + @Command(hook = "mute") + public boolean mute(CommandSender sender, String player) + { + Player p = Bukkit.getPlayer(player); + if (p == null) + { + getLogger().message(sender, true, "That player couldn't be found!"); + return true; + } + DataManager.setData(p, "muted", true); + getLogger().message(sender, "Muted player &e" + Utils.getName(p) + "&7!"); + getLogger().message(p, "You have been &cmuted&7!"); + return true; + } + + @Command(hook = "unmute") + public boolean unmute(CommandSender sender, String player) + { + Player p = Bukkit.getPlayer(player); + if (p == null) + { + getLogger().message(sender, true, "That player couldn't be found!"); + return true; + } + DataManager.setData(p, "muted", false); + getLogger().message(sender, "Unmuted player &e" + Utils.getName(p) + "&7!"); + getLogger().message(p, "You have been &aunmuted&7!"); + return true; + } + + public boolean broadcastFormatted(String format, CommandSender sender, String message) + { + return broadcastFormatted(format, sender, message, Utils.getName(sender)); + } + + public boolean broadcastFormatted(String format, CommandSender sender, String message, String name) + { + if ((boolean) DataManager.getOrDefault(sender, "muted", false)) + { + Utils.noPerm(sender, "You have been muted!"); + getLogger().info(" &7User &e" + Utils.getName(sender) + " &7tried to &e" + format + " &7(&e" + message + + "&7) while being &cmuted&7."); + return false; + } + String raw = (String) DataManager.getConfigOrDefault(format, " %n §7→§r %m"); + String formatted = raw.replace("%n", name).replace("%m", message); + Utils.broadcast("", formatted, ModuleLoader.exists("Ignore") ? Ignore.getIgnoredBy(sender) : null); return true; } }