diff --git a/api/src/main/java/com/alttd/chat/objects/ChatUser.java b/api/src/main/java/com/alttd/chat/objects/ChatUser.java index 3d4ee4d..3c04c40 100755 --- a/api/src/main/java/com/alttd/chat/objects/ChatUser.java +++ b/api/src/main/java/com/alttd/chat/objects/ChatUser.java @@ -3,7 +3,10 @@ package com.alttd.chat.objects; import com.alttd.chat.database.Queries; import com.alttd.chat.objects.channels.Channel; import com.alttd.chat.util.Utility; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.ComponentLike; +import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.format.NamedTextColor; import java.util.ArrayList; import java.util.List; @@ -89,9 +92,15 @@ public class ChatUser { return Utility.getStaffPrefix(uuid); } - public ComponentLike getPrefixAll() { + public ComponentLike getPrefixAll(boolean isWebMessage) { //return prefixAll; - return Utility.getPrefix(uuid, false); + ComponentLike prefix = Utility.getPrefix(uuid, false); + if (isWebMessage) { + //TODO [Stijn] [2026-08-08]: Check icon + TextComponent webIcon = Component.text("\uD83D\uDEDC").color(NamedTextColor.DARK_AQUA); + prefix = webIcon.append(prefix); + } + return prefix; } public String getReplyTarget() { diff --git a/galaxy/src/main/java/com/alttd/chat/chat_web/ChatMessageSender.java b/galaxy/src/main/java/com/alttd/chat/chat_web/ChatMessageSender.java index 9e2308e..a19774e 100644 --- a/galaxy/src/main/java/com/alttd/chat/chat_web/ChatMessageSender.java +++ b/galaxy/src/main/java/com/alttd/chat/chat_web/ChatMessageSender.java @@ -50,27 +50,28 @@ public class ChatMessageSender { private final MiniMessage miniMessage = MiniMessage.miniMessage(); public void sendMessage(UUID sender, String message) { + //TODO [Stijn] [2026-08-02]: Mark as from website OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(sender); Component component = miniMessage.deserialize(message); - sendMessage(offlinePlayer, component); + sendMessage(offlinePlayer, component, true); } - public void sendMessage(@NotNull OfflinePlayer offlinePlayer, Component message) { + public void sendMessage(@NotNull OfflinePlayer offlinePlayer, Component message, boolean isFromWeb) { UUID uuid = offlinePlayer.getUniqueId(); if (luckPerms.getUserManager().isLoaded(uuid)) { User user = luckPerms.getUserManager().getUser(uuid); - sendMessage(user, offlinePlayer, message); + sendMessage(user, offlinePlayer, message, isFromWeb); } else { luckPerms.getUserManager().loadUser(uuid).whenComplete((user, throwable) -> { if (throwable != null) { ALogger.error("Failed to load user: " + uuid, throwable); } - sendMessage(user, offlinePlayer, message); + sendMessage(user, offlinePlayer, message, isFromWeb); }); } } - private void sendMessage(User user, OfflinePlayer offlinePlayer, Component message) { + private void sendMessage(User user, OfflinePlayer offlinePlayer, Component message, boolean isFromWeb) { if (offlinePlayer == null) { ALogger.error("OfflinePlayer is null"); return; @@ -87,7 +88,7 @@ public class ChatMessageSender { ModifiableString modifiableString = new ModifiableString(inputComponent); - if (parseMessage(offlinePlayer, uuid, modifiableString, inputComponent)) { + if (parseMessage(offlinePlayer, uuid, modifiableString, inputComponent, isFromWeb)) { //Parse message failed likely due to something the player said, already logged return; } @@ -142,7 +143,7 @@ public class ChatMessageSender { return false; } - private boolean parseMessage(OfflinePlayer offlinePlayer, UUID uuid, ModifiableString modifiableString, Component inputComponent) { + private boolean parseMessage(OfflinePlayer offlinePlayer, UUID uuid, ModifiableString modifiableString, Component inputComponent, boolean isWebMessage) { // todo a better way for this if (!RegexManager.filterText(offlinePlayer.getName(), uuid, modifiableString, true, "chat", filterType -> punishOnlinePlayer(filterType, uuid, modifiableString) @@ -152,7 +153,10 @@ public class ChatMessageSender { "" ); String originalMessage = PlainTextComponentSerializer.plainText().serialize(inputComponent); - Optional component = render(offlinePlayer, inputComponent).map(ComponentLike::asComponent); + Optional component = render(offlinePlayer, + inputComponent, + isWebMessage + ).map(ComponentLike::asComponent); if (component.isEmpty()) { //Already logged return true; @@ -220,7 +224,7 @@ public class ChatMessageSender { } } - private Optional render(@NotNull OfflinePlayer offlinePlayer, @NotNull Component message) { + private Optional render(@NotNull OfflinePlayer offlinePlayer, @NotNull Component message, boolean isWebMessage) { if (offlinePlayer.getName() == null) { ALogger.error("Invalid offline player"); return Optional.empty(); @@ -231,7 +235,7 @@ public class ChatMessageSender { Placeholder.component("sender", user.getDisplayName()), Placeholder.parsed("sendername", offlinePlayer.getName()), Placeholder.component("prefix", user.getPrefix()), - Placeholder.component("prefixall", user.getPrefixAll()), + Placeholder.component("prefixall", user.getPrefixAll(isWebMessage)), Placeholder.component("staffprefix", user.getStaffPrefix()), Placeholder.component("message", message) ); diff --git a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java index 09ba4b2..c5433e1 100755 --- a/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java +++ b/galaxy/src/main/java/com/alttd/chat/listeners/ChatListener.java @@ -70,7 +70,7 @@ public class ChatListener implements Listener { toggleable.sendMessage(event.getPlayer(), event.message()); return; } - chatMessageSender.sendMessage(event.getPlayer(), event.message()); + chatMessageSender.sendMessage(event.getPlayer(), event.message(), false); } private ComponentLike parseMessageContent(Player player, String rawMessage) {