diff --git a/commons/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java b/commons/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java index d9f3c926..ef762ac4 100644 --- a/commons/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java +++ b/commons/src/main/java/me/totalfreedom/totalfreedommod/ChatManager.java @@ -1,15 +1,15 @@ package me.totalfreedom.totalfreedommod; import com.google.common.base.Strings; +import io.papermc.paper.chat.ChatRenderer; import io.papermc.paper.event.player.AsyncChatEvent; import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.api.event.AdminChatEvent; import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.player.FPlayer; -import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.rank.Displayable; -import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FUtil; +import net.kyori.adventure.audience.Audience; import net.kyori.adventure.key.Key; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TextComponent; @@ -24,6 +24,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; @@ -74,12 +75,6 @@ public class ChatManager extends FreedomService return; } - // Tag - Component tag = fPlayer.getTag().append(Component.space()); - - // Nickname - Component nickname = player.displayName(); - // Splitter Component splitter = Component.text("ยป", NamedTextColor.DARK_GRAY); @@ -92,23 +87,6 @@ public class ChatManager extends FreedomService steamrolled = steamrolled.substring(0, 256); } - // Pinging - Arrays.stream(steamrolled.split(" ")).filter(string -> string.startsWith("@")).forEach(possiblePlayer -> - { - Player potential = server.getPlayer(possiblePlayer.replace("@", "")); - - // Ping only that particular player - if (potential != null) - { - ping(player); - } - // Ping everyone (if the person pinging is an admin) - else if (possiblePlayer.equalsIgnoreCase("@everyone") && plugin.al.isAdmin(player)) - { - server.getOnlinePlayers().forEach(this::ping); - } - }); - // Did this because sonarlint was complaining about doing the unboxing in the if statement. // Something about returning null because it was boxed... I'm not sure. boolean unboxed = ConfigEntry.FOURCHAN_ENABLED.getBoolean(); @@ -133,12 +111,31 @@ public class ChatManager extends FreedomService // This simply filters out shit like &k in a simple but stupid way. Component filtered = FUtil.miniMessage(FUtil.miniMessage(message.build())); - event.setCancelled(true); - server.broadcast(FUtil.miniMessage(" ", - Placeholder.component("tag", tag), - Placeholder.component("nickname", nickname), + // Pinging + String steamrolledFiltered = FUtil.steamroll(filtered); + Arrays.stream(steamrolledFiltered.split(" ")).filter(string -> string.startsWith("@")).forEach(possiblePlayer -> + { + Player potential = server.getPlayer(possiblePlayer.replace("@", "")); + + // Ping only that particular player + if (potential != null) + { + ping(potential); + } + // Ping everyone (if the person pinging is an admin) + else if (possiblePlayer.equalsIgnoreCase("@everyone") && plugin.al.isAdmin(player)) + { + server.getOnlinePlayers().forEach(this::ping); + } + }); + + event.message(filtered); + + event.renderer((source, displayName, msg, viewer) -> FUtil.miniMessage(" ", + Placeholder.component("tag", plugin.pl.getPlayer(source).getTag().append(Component.space())), + Placeholder.component("nickname", displayName), Placeholder.component("splitter", splitter), - Placeholder.component("message", filtered))); + Placeholder.component("message", msg))); } @EventHandler