diff options
Diffstat (limited to 'src/main/java/com/redstoner/modules/chat/Chat.java')
-rw-r--r-- | src/main/java/com/redstoner/modules/chat/Chat.java | 76 |
1 files changed, 53 insertions, 23 deletions
diff --git a/src/main/java/com/redstoner/modules/chat/Chat.java b/src/main/java/com/redstoner/modules/chat/Chat.java index ebe2d07..7472ced 100644 --- a/src/main/java/com/redstoner/modules/chat/Chat.java +++ b/src/main/java/com/redstoner/modules/chat/Chat.java @@ -1,5 +1,6 @@ package com.redstoner.modules.chat; +import java.lang.reflect.Method; import java.util.HashMap; import java.util.HashSet; import java.util.Map; @@ -7,6 +8,7 @@ import java.util.Set; import java.util.UUID; import org.bukkit.Bukkit; +import org.bukkit.Sound; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; @@ -29,24 +31,23 @@ import com.redstoner.modules.datamanager.DataManager; import com.redstoner.modules.ignore.Ignore; import net.nemez.chatapi.ChatAPI; -import net.nemez.chatapi.click.Message; @Commands(CommandHolderType.File) @AutoRegisterListener -@Version(major = 5, minor = 0, revision = 0, compatible = 4) +@Version(major = 5, minor = 1, revision = 1, compatible = 4) public class Chat implements Module, Listener { private final Map<String, String> defaults = new HashMap<>(); private Set<UUID> chatonly = new HashSet<>(); public Chat() { - defaults.put("chat", " %n %c§7→§r %m"); + defaults.put("chat", " %n %c%w→§r %m"); defaults.put("me", " §7- %n %c§7⇦ %m"); defaults.put("action", " §7- %n %c§7⇦ %m"); - defaults.put("say", " §7[§9%n§7]%c§7:§r %m"); - defaults.put("shrug", " %n %c§7→§r %m ¯\\_(ツ)_/¯"); + defaults.put("say", " §7[§9%n§7]%c%w:§r %m"); + defaults.put("shrug", " %n %c%w→§r %m ¯\\_(ツ)_/¯"); defaults.put("print", "%m"); defaults.put("%c", "§c*"); - defaults.put("%c-hover", "§cChat Only"); + defaults.put("%w-default", "§7"); } @Override @@ -58,9 +59,15 @@ public class Chat implements Module, Listener { DataManager.setConfig("shrug", defaults.get("shrug")); DataManager.setConfig("print", defaults.get("print")); DataManager.setConfig("%c", defaults.get("%c")); - DataManager.setConfig("%c-hover", defaults.get("%c-hover")); + DataManager.setConfig("%w-default", defaults.get("§7")); } + @Command(hook = "reset_formatting") + public void resetFormatting(CommandSender sender) { + firstLoad(); + sender.sendMessage("Chat Formats have been reset to defaults."); + } + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onPlayerChat(AsyncPlayerChatEvent event) { Player player = event.getPlayer(); @@ -203,28 +210,51 @@ public class Chat implements Module, Listener { } String raw = (String) DataManager.getConfigOrDefault(format, defaults.get(format)); - String formatted = raw.replace("%n", name).replace("%m", message); + String formatted = raw.replace("%n", name); BroadcastFilter filter = wrap(ModuleLoader.exists("Ignore") ? Ignore.getIgnoredBy(sender) : null, event); - if (isChatOnly) { - - String part1 = formatted.substring(0, formatted.indexOf("%c")); - String part2 = formatted.substring(formatted.indexOf("%c") + 2); - String indicatior = (String) DataManager.getConfigOrDefault("%c", defaults.get("%c")); - String indicatiorHover = (String) DataManager.getConfigOrDefault("%c-hover", defaults.get("%c-hover")); + formatted = !isChatOnly? formatted.replaceAll("%c", "") : formatted.replace("%c", (String) DataManager.getConfigOrDefault("%c", defaults.get("%c"))); + + + if (sender instanceof Player) + formatted = formatted.replace("%w", (String) DataManager.getConfigOrDefault(((Player)sender).getWorld().getName() + ".%w", + (String) DataManager.getConfigOrDefault("%w-default", defaults.get("%w-default")))); + else + formatted = formatted.replace("%w", ""); + + if (ModuleLoader.exists("Mentio")) { + for (Player player : Bukkit.getOnlinePlayers()) + if (filter.sendTo(player)) { + ChatAPI.createMessage(player, sender).appendText(getMentioMessage(sender, player, formatted, message)).send(); + } + Bukkit.getConsoleSender().sendMessage(ChatAPI.colorify(sender, formatted.replace("%m", message))); - Message msg = ChatAPI.createMessage(null) - .appendText(part1) - .appendTextHover(indicatior, indicatiorHover) - .appendText(part2); - Utils.broadcast("", msg, filter); - return true; } - - Utils.broadcast("", ChatAPI.colorify(sender, formatted.replace("%c", "")), filter); - + else + Utils.broadcast("", ChatAPI.colorify(sender, formatted.replace("%m", message)), filter); + return true; } + + private String getMentioMessage(CommandSender sender, Player player, String format, String message) { + try { + Module mod = ModuleLoader.getModule("Mentio"); + Method m = mod.getClass().getDeclaredMethod("modifyMessageWithMentio", CommandSender.class, Player.class, String.class); + m.setAccessible(true); + + String msg = (String) m.invoke(mod, sender, player, message); + + if (msg != null) { + player.playSound(player.getLocation(), Sound.ENTITY_CHICKEN_EGG, 1, 1); + return format.replace("%m", msg); + } + else + return format.replace("%m", message); + + } catch (Exception e) { + return format.replace("%m", message); + } + } public BroadcastFilter wrap(BroadcastFilter filter, AsyncPlayerChatEvent event) { if (event == null) return filter; |