Add support for marking and processing web-originated chat messages.
This commit is contained in:
@@ -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> component = render(offlinePlayer, inputComponent).map(ComponentLike::asComponent);
|
||||
Optional<Component> component = render(offlinePlayer,
|
||||
inputComponent,
|
||||
isWebMessage
|
||||
).map(ComponentLike::asComponent);
|
||||
if (component.isEmpty()) {
|
||||
//Already logged
|
||||
return true;
|
||||
@@ -220,7 +224,7 @@ public class ChatMessageSender {
|
||||
}
|
||||
}
|
||||
|
||||
private Optional<ComponentLike> render(@NotNull OfflinePlayer offlinePlayer, @NotNull Component message) {
|
||||
private Optional<ComponentLike> 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)
|
||||
);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user