From 3604add18a53d081e7921dc7dcf3b3570ffed734 Mon Sep 17 00:00:00 2001 From: Business Goose Date: Wed, 4 May 2022 16:29:25 +0100 Subject: [PATCH] Add getting text from component to PlexUtils --- .../dev/plex/listener/impl/ChatListener.java | 3 +- .../main/java/dev/plex/util/PlexUtils.java | 35 +++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) 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 285ef8f..c600dda 100644 --- a/server/src/main/java/dev/plex/listener/impl/ChatListener.java +++ b/server/src/main/java/dev/plex/listener/impl/ChatListener.java @@ -60,7 +60,8 @@ public class ChatListener extends PlexListener @Override public @NotNull Component render(@NotNull Player source, @NotNull Component sourceDisplayName, @NotNull Component message, @NotNull Audience viewer) { - String text = ((TextComponent)message).content(); + String text = PlexUtils.getTextFromComponent(message); + Component component = Component.empty(); if (hasPrefix) diff --git a/server/src/main/java/dev/plex/util/PlexUtils.java b/server/src/main/java/dev/plex/util/PlexUtils.java index 40e75d5..137dd4a 100644 --- a/server/src/main/java/dev/plex/util/PlexUtils.java +++ b/server/src/main/java/dev/plex/util/PlexUtils.java @@ -13,6 +13,7 @@ import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.text.minimessage.tag.standard.StandardTags; @@ -166,6 +167,40 @@ public class PlexUtils implements PlexBase return f; } + + public static String getTextFromComponent(Component component) + { + try + { + return ((TextComponent)component).content(); + } + catch (Exception e) + { + PlexLog.warn("Unable to get text of component", e.getLocalizedMessage()); + return ""; + } + } + + public static String getTextFromComponents(Component... components) + { + try + { + StringBuilder builder = new StringBuilder(); + + for (Component component : components) + { + builder.append(getTextFromComponent(component)); + } + + return builder.toString(); + } + catch (Exception e) + { + PlexLog.warn("Unable to get text of components", e.getLocalizedMessage()); + return ""; + } + } + public static List getPlayerNameList() { return Bukkit.getOnlinePlayers().stream().map(Player::getName).collect(Collectors.toList());