2021-01-03 07:21:15 +00:00
|
|
|
package dev.plex.listener.impl;
|
2020-10-28 19:07:02 +00:00
|
|
|
|
2021-01-03 07:21:15 +00:00
|
|
|
import dev.plex.cache.PlayerCache;
|
|
|
|
import dev.plex.listener.PlexListener;
|
|
|
|
import dev.plex.player.PlexPlayer;
|
2022-02-25 03:56:28 +00:00
|
|
|
import dev.plex.rank.enums.Rank;
|
|
|
|
import dev.plex.util.PlexUtils;
|
2022-01-27 09:00:50 +00:00
|
|
|
import io.papermc.paper.chat.ChatRenderer;
|
|
|
|
import io.papermc.paper.event.player.AsyncChatEvent;
|
|
|
|
import net.kyori.adventure.audience.Audience;
|
|
|
|
import net.kyori.adventure.text.Component;
|
|
|
|
import net.kyori.adventure.text.format.NamedTextColor;
|
|
|
|
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
2022-02-25 03:56:28 +00:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.command.CommandSender;
|
2022-01-27 09:00:50 +00:00
|
|
|
import org.bukkit.entity.Player;
|
2020-10-28 19:07:02 +00:00
|
|
|
import org.bukkit.event.EventHandler;
|
2022-01-27 09:00:50 +00:00
|
|
|
import org.jetbrains.annotations.NotNull;
|
2020-10-28 19:07:02 +00:00
|
|
|
|
2020-10-31 08:55:27 +00:00
|
|
|
public class ChatListener extends PlexListener
|
2020-10-28 19:07:02 +00:00
|
|
|
{
|
2022-01-27 09:03:48 +00:00
|
|
|
private final PlexChatRenderer renderer = new PlexChatRenderer();
|
|
|
|
|
2020-10-28 19:07:02 +00:00
|
|
|
@EventHandler
|
2022-01-27 09:00:50 +00:00
|
|
|
public void onChat(AsyncChatEvent event)
|
2020-10-28 19:07:02 +00:00
|
|
|
{
|
|
|
|
PlexPlayer plexPlayer = PlayerCache.getPlexPlayerMap().get(event.getPlayer().getUniqueId());
|
2022-01-27 09:00:50 +00:00
|
|
|
|
2022-02-22 04:51:05 +00:00
|
|
|
String prefix = plugin.getRankManager().getPrefix(plexPlayer);
|
|
|
|
if (!prefix.isEmpty())
|
2020-10-28 19:07:02 +00:00
|
|
|
{
|
2022-01-27 09:00:50 +00:00
|
|
|
renderer.hasPrefix = true;
|
2022-02-22 04:51:05 +00:00
|
|
|
renderer.prefix = prefix;
|
2022-02-25 07:09:55 +00:00
|
|
|
} else {
|
|
|
|
renderer.hasPrefix = false;
|
|
|
|
renderer.prefix = null;
|
2020-11-06 01:29:38 +00:00
|
|
|
}
|
2022-01-27 09:00:50 +00:00
|
|
|
event.renderer(renderer);
|
|
|
|
}
|
|
|
|
|
2022-02-25 03:56:28 +00:00
|
|
|
public static void adminChat(CommandSender sender, String message)
|
|
|
|
{
|
|
|
|
for (Player player : Bukkit.getOnlinePlayers())
|
|
|
|
{
|
|
|
|
if (plugin.getSystem().equalsIgnoreCase("ranks"))
|
|
|
|
{
|
|
|
|
PlexPlayer plexPlayer = PlayerCache.getPlexPlayerMap().get(player.getUniqueId());
|
|
|
|
if (plexPlayer.getRankFromString().isAtLeast(Rank.ADMIN))
|
|
|
|
{
|
2022-02-25 07:09:55 +00:00
|
|
|
player.sendMessage(PlexUtils.messageComponent("adminChatFormat", sender.getName(), message));
|
2022-02-25 03:56:28 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (plugin.getSystem().equalsIgnoreCase("permissions"))
|
|
|
|
{
|
|
|
|
if (player.hasPermission("plex.adminchat"))
|
|
|
|
{
|
2022-02-25 07:09:55 +00:00
|
|
|
player.sendMessage(PlexUtils.messageComponent("adminChatFormat", sender.getName(), message));
|
2022-02-25 03:56:28 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-02-25 07:09:55 +00:00
|
|
|
plugin.getServer().getConsoleSender().sendMessage(PlexUtils.messageComponent("adminChatFormat", sender.getName(), message));
|
2022-02-25 03:56:28 +00:00
|
|
|
}
|
|
|
|
|
2022-01-27 09:00:50 +00:00
|
|
|
public static class PlexChatRenderer implements ChatRenderer
|
|
|
|
{
|
|
|
|
public boolean hasPrefix;
|
|
|
|
public String prefix;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public @NotNull Component render(@NotNull Player source, @NotNull Component sourceDisplayName, @NotNull Component message, @NotNull Audience viewer)
|
|
|
|
{
|
|
|
|
if (hasPrefix)
|
|
|
|
{
|
2022-02-22 06:55:59 +00:00
|
|
|
return Component.empty().append(LegacyComponentSerializer.legacyAmpersand().deserialize(prefix))
|
2022-01-27 09:00:50 +00:00
|
|
|
.append(Component.space())
|
|
|
|
.append(sourceDisplayName)
|
|
|
|
.append(Component.space())
|
|
|
|
.append(Component.text("»").color(NamedTextColor.GRAY))
|
|
|
|
.append(Component.space())
|
|
|
|
.append(message);
|
|
|
|
}
|
|
|
|
return Component.empty()
|
|
|
|
.append(sourceDisplayName)
|
|
|
|
.append(Component.space())
|
|
|
|
.append(Component.text("»").color(NamedTextColor.GRAY))
|
|
|
|
.append(Component.space())
|
|
|
|
.append(message);
|
2021-06-20 08:02:07 +00:00
|
|
|
}
|
2020-10-28 19:07:02 +00:00
|
|
|
}
|
|
|
|
}
|