From 4450427d4e7fa44809527cc90bf1ea4ac1e31021 Mon Sep 17 00:00:00 2001 From: Taah Date: Sat, 7 May 2022 17:11:19 -0700 Subject: [PATCH] add the ability to override the chat safe serialize minimessage methods --- .../dev/plex/listener/impl/ChatListener.java | 3 +-- .../plex/util/minimessage/SafeMiniMessage.java | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/server/src/main/java/dev/plex/listener/impl/ChatListener.java b/server/src/main/java/dev/plex/listener/impl/ChatListener.java index 05c92da..3d5e305 100644 --- a/server/src/main/java/dev/plex/listener/impl/ChatListener.java +++ b/server/src/main/java/dev/plex/listener/impl/ChatListener.java @@ -25,7 +25,6 @@ import org.jetbrains.annotations.NotNull; public class ChatListener extends PlexListener { private final static TextReplacementConfig URL_REPLACEMENT_CONFIG = TextReplacementConfig.builder().match("(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]").replacement((matchResult, builder) -> Component.empty().content(matchResult.group()).clickEvent(ClickEvent.openUrl(matchResult.group()))).build(); - @EventHandler public void onChat(AsyncChatEvent event) { @@ -72,7 +71,7 @@ public class ChatListener extends PlexListener component = component.append(prefix); } - return component.append(Component.space()).append(PlexUtils.mmDeserialize(plugin.config.getString("chat.name-color", "") + MiniMessage.builder().tags(TagResolver.resolver(StandardTags.color(), StandardTags.rainbow(), StandardTags.decorations(), StandardTags.gradient(), StandardTags.transition())).build().serialize(sourceDisplayName))).append(Component.space()).append(Component.text("»").color(NamedTextColor.GRAY)).append(Component.space()).append(SafeMiniMessage.mmDeserializeWithoutEvents(text)).replaceText(URL_REPLACEMENT_CONFIG); + return component.append(Component.space()).append(PlexUtils.mmDeserialize(plugin.config.getString("chat.name-color", "") + MiniMessage.builder().tags(TagResolver.resolver(StandardTags.color(), StandardTags.rainbow(), StandardTags.decorations(), StandardTags.gradient(), StandardTags.transition())).build().serialize(sourceDisplayName))).append(Component.space()).append(Component.text("»").color(NamedTextColor.GRAY)).append(Component.space()).append(SafeMiniMessage.mmSerializeWithoutEvents(text)).replaceText(URL_REPLACEMENT_CONFIG); } } } diff --git a/server/src/main/java/dev/plex/util/minimessage/SafeMiniMessage.java b/server/src/main/java/dev/plex/util/minimessage/SafeMiniMessage.java index 3a76bac..24ee80e 100644 --- a/server/src/main/java/dev/plex/util/minimessage/SafeMiniMessage.java +++ b/server/src/main/java/dev/plex/util/minimessage/SafeMiniMessage.java @@ -1,7 +1,6 @@ package dev.plex.util.minimessage; import com.google.common.collect.ImmutableList; -import java.util.List; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.Context; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -12,6 +11,8 @@ import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.List; + public class SafeMiniMessage { public static final MiniMessage MINI_MESSAGE = MiniMessage.builder().tags(new SafeMiniMessageTagResolver()).build(); @@ -23,9 +24,17 @@ public class SafeMiniMessage public static Component mmDeserializeWithoutEvents(String text) { - return mmDeserialize(text) - .clickEvent(null) - .hoverEvent(null); + return mmDeserialize(text).clickEvent(null).hoverEvent(null); + } + + public static String mmSerialize(Component component) + { + return MINI_MESSAGE.serialize(component); + } + + public static String mmSerializeWithoutEvents(Component component) + { + return mmSerialize(component.clickEvent(null).hoverEvent(null)); } public static class SafeMiniMessageTagResolver implements TagResolver