mirror of
https://github.com/plexusorg/Plex.git
synced 2024-12-28 19:14:15 +00:00
fix prefixes
This commit is contained in:
parent
2a2152603b
commit
c51d8da5b7
6 changed files with 48 additions and 18 deletions
|
@ -5,11 +5,14 @@ import dev.plex.command.PlexCommand;
|
|||
import dev.plex.command.annotation.CommandParameters;
|
||||
import dev.plex.command.annotation.CommandPermissions;
|
||||
import dev.plex.command.source.RequiredCommandSource;
|
||||
import dev.plex.hook.VaultHook;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import dev.plex.util.minimessage.SafeMiniMessage;
|
||||
import dev.plex.util.redis.MessageUtil;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
@ -43,12 +46,13 @@ public class AdminChatCMD extends PlexCommand
|
|||
if (playerSender != null)
|
||||
{
|
||||
player = plugin.getPlayerCache().getPlexPlayer(playerSender.getUniqueId());
|
||||
prefix = player.getPrefix();
|
||||
prefix = PlexUtils.mmSerialize(VaultHook.getPrefix(player));
|
||||
}
|
||||
else
|
||||
{
|
||||
prefix = messageString(LegacyComponentSerializer.legacyAmpersand().serialize(mmString("<dark_gray>[<dark_purple>Console<dark_gray]")));
|
||||
prefix = "<dark_gray>[<dark_purple>Console<dark_gray>]";
|
||||
}
|
||||
PlexLog.debug("admin chat prefix: {0}", prefix);
|
||||
String message = StringUtils.join(args, " ");
|
||||
plugin.getServer().getConsoleSender().sendMessage(messageComponent("adminChatFormat", sender.getName(), prefix, message));
|
||||
MessageUtil.sendStaffChat(sender, SafeMiniMessage.mmDeserialize(message), PlexUtils.adminChat(sender.getName(), prefix, message).toArray(UUID[]::new));
|
||||
|
|
|
@ -1,17 +1,18 @@
|
|||
package dev.plex.hook;
|
||||
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.meta.PlayerMeta;
|
||||
import dev.plex.player.PlexPlayer;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import dev.plex.util.minimessage.SafeMiniMessage;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
|
||||
import net.milkbowl.vault.chat.Chat;
|
||||
import net.milkbowl.vault.permission.Permission;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.plugin.RegisteredServiceProvider;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class VaultHook
|
||||
{
|
||||
private static Chat CHAT;
|
||||
|
@ -53,20 +54,36 @@ public class VaultHook
|
|||
return PERMISSIONS;
|
||||
}
|
||||
|
||||
public static Component getPrefix(UUID uuid)
|
||||
{
|
||||
return getPrefix(Bukkit.getOfflinePlayer(uuid));
|
||||
}
|
||||
|
||||
public static Component getPrefix(PlexPlayer plexPlayer)
|
||||
{
|
||||
return getPrefix(Bukkit.getOfflinePlayer(plexPlayer.getUuid()));
|
||||
}
|
||||
|
||||
public static Component getPrefix(OfflinePlayer player)
|
||||
{
|
||||
if (VaultHook.getChat() == null || VaultHook.getPermission() == null)
|
||||
{
|
||||
return null;
|
||||
return Component.empty();
|
||||
}
|
||||
if (PlexUtils.DEVELOPERS.contains(plexPlayer.getUuid().toString()))
|
||||
if (PlexUtils.DEVELOPERS.contains(player.getUniqueId().toString()))
|
||||
{
|
||||
return PlexUtils.mmDeserialize("<dark_gray>[<dark_purple>Developer<dark_gray>]");
|
||||
return PlexUtils.mmDeserialize("<dark_gray>[<dark_purple>Developer</dark_gray>]");
|
||||
}
|
||||
Player bukkitPlayer = Bukkit.getPlayer(plexPlayer.getUuid());
|
||||
String group = VaultHook.getPermission().getPrimaryGroup(bukkitPlayer);
|
||||
String vaultPrefix = VaultHook.getChat().getGroupPrefix(bukkitPlayer.getWorld(), group);
|
||||
return LegacyComponentSerializer.legacyAmpersand().deserialize(vaultPrefix);
|
||||
String group = VaultHook.getPermission().getPrimaryGroup(null, player);
|
||||
if (group == null || group.isEmpty()) {
|
||||
return Component.empty();
|
||||
}
|
||||
String vaultPrefix = VaultHook.getChat().getGroupPrefix((String) null, group);
|
||||
if (vaultPrefix == null || vaultPrefix.isEmpty()) {
|
||||
return Component.empty();
|
||||
}
|
||||
PlexLog.debug("prefix: {0}", PlexUtils.legacyToMiniString(vaultPrefix).replace("<", "\\<"));
|
||||
return SafeMiniMessage.mmDeserializeWithoutEvents(PlexUtils.legacyToMiniString(vaultPrefix));
|
||||
}
|
||||
|
||||
public static Permission getPermission()
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package dev.plex.listener.impl;
|
||||
|
||||
import dev.plex.hook.VaultHook;
|
||||
import dev.plex.listener.PlexListener;
|
||||
import dev.plex.listener.annotation.Toggleable;
|
||||
import dev.plex.meta.PlayerMeta;
|
||||
|
@ -11,6 +12,7 @@ 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.TextComponent;
|
||||
import net.kyori.adventure.text.TextReplacementConfig;
|
||||
import net.kyori.adventure.text.event.ClickEvent;
|
||||
import net.kyori.adventure.text.format.NamedTextColor;
|
||||
|
@ -43,8 +45,9 @@ public class ChatListener extends PlexListener
|
|||
PlexPlayer plexPlayer = plugin.getPlayerCache().getPlexPlayerMap().get(event.getPlayer().getUniqueId());
|
||||
if (plexPlayer.isStaffChat())
|
||||
{
|
||||
MessageUtil.sendStaffChat(event.getPlayer(), event.message(), PlexUtils.adminChat(event.getPlayer().getName(), plexPlayer.getPrefix(), SafeMiniMessage.mmSerialize(event.message())).toArray(UUID[]::new));
|
||||
plugin.getServer().getConsoleSender().sendMessage(PlexUtils.messageComponent("adminChatFormat", event.getPlayer().getName(), SafeMiniMessage.mmSerialize(event.message())).replaceText(URL_REPLACEMENT_CONFIG));
|
||||
String prefix = PlexUtils.mmSerialize(VaultHook.getPrefix(event.getPlayer())); // Don't use PlexPlayer#getPrefix because that returns their custom set prefix and not their group's
|
||||
MessageUtil.sendStaffChat(event.getPlayer(), event.message(), PlexUtils.adminChat(event.getPlayer().getName(), prefix, SafeMiniMessage.mmSerialize(event.message())).toArray(UUID[]::new));
|
||||
plugin.getServer().getConsoleSender().sendMessage(PlexUtils.messageComponent("adminChatFormat", event.getPlayer().getName(), prefix, PlexUtils.legacyToMiniString(SafeMiniMessage.mmSerializeWithoutEvents(event.message()))).replaceText(URL_REPLACEMENT_CONFIG));
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -192,6 +192,11 @@ public class PlexUtils implements PlexBase
|
|||
return MINI_MESSAGE.deserialize(input);
|
||||
}
|
||||
|
||||
public static String mmSerialize(Component input)
|
||||
{
|
||||
return MINI_MESSAGE.serialize(input);
|
||||
}
|
||||
|
||||
public static Component mmCustomDeserialize(String input, TagResolver... resolvers)
|
||||
{
|
||||
return MiniMessage.builder().tags(TagResolver.builder().resolvers(resolvers).build()).build().deserialize(input);
|
||||
|
|
|
@ -3,6 +3,7 @@ package dev.plex.util.redis;
|
|||
import com.google.common.reflect.TypeToken;
|
||||
import com.google.gson.Gson;
|
||||
import dev.plex.Plex;
|
||||
import dev.plex.hook.VaultHook;
|
||||
import dev.plex.util.PlexLog;
|
||||
import dev.plex.util.PlexUtils;
|
||||
import dev.plex.util.minimessage.SafeMiniMessage;
|
||||
|
@ -41,7 +42,7 @@ public class MessageUtil
|
|||
{
|
||||
}.getType());
|
||||
String sender = object.getString("sender").isEmpty() ? "CONSOLE" : object.getString("sender");
|
||||
PlexUtils.adminChat(sender, plugin.getPlayerCache().getPlexPlayer(Bukkit.getPlayer(sender).getUniqueId()).getPrefix(), object.getString("message"), ignore);
|
||||
PlexUtils.adminChat(sender, !sender.equals("CONSOLE") ? PlexUtils.mmSerialize(VaultHook.getPrefix(UUID.fromString(sender))) : "<dark_gray>[<dark_purple>Console<dark_gray>]", object.getString("message"), ignore);
|
||||
String[] server = object.getString("server").split(":");
|
||||
if (!Bukkit.getServer().getIp().equalsIgnoreCase(server[0]) || Bukkit.getServer().getPort() != Integer.parseInt(server[1]))
|
||||
{
|
||||
|
@ -77,7 +78,7 @@ public class MessageUtil
|
|||
|
||||
String miniMessage = SafeMiniMessage.mmSerialize(message);
|
||||
JSONObject object = new JSONObject();
|
||||
object.put("sender", sender instanceof Player player ? player.getName() : "");
|
||||
object.put("sender", sender instanceof Player player ? player.getUniqueId().toString() : "");
|
||||
object.put("message", miniMessage);
|
||||
object.put("ignore", GSON.toJson(ignore));
|
||||
object.put("server", String.format("%s:%s", Bukkit.getServer().getIp(), Bukkit.getServer().getPort()));
|
||||
|
|
|
@ -130,7 +130,7 @@ toggleCommandSpy: "<gray>CommandSpy has been"
|
|||
enabled: "<gray>enabled."
|
||||
disabled: "<gray>disabled."
|
||||
# 0 - The admin / staff member
|
||||
# 1 - The player's prefix
|
||||
# 1 - The player's group's prefix if any
|
||||
# 2 - The message
|
||||
adminChatFormat: '<dark_gray>[<blue>AdminChat<dark_gray>] <dark_red>{0} {1} <gray>» <gold>{2}'
|
||||
# 0 - Whether it was toggled on or off
|
||||
|
|
Loading…
Reference in a new issue