From 99ac8ac1307781be6a112d213baf8c5f07d26e73 Mon Sep 17 00:00:00 2001 From: Vankka Date: Fri, 30 Aug 2024 23:11:40 +0300 Subject: [PATCH] Fix null input on FormattedText --- .../api/placeholder/format/FormattedText.java | 12 +++++++++++- .../result/ComponentResultStringifier.java | 2 +- .../common/feature/DiscordInviteModule.java | 2 +- .../game/MinecraftToDiscordChatModule.java | 2 +- .../discordsrv/common/util/GamePermissionUtil.java | 2 +- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/com/discordsrv/api/placeholder/format/FormattedText.java b/api/src/main/java/com/discordsrv/api/placeholder/format/FormattedText.java index 42d6b990..b381c619 100644 --- a/api/src/main/java/com/discordsrv/api/placeholder/format/FormattedText.java +++ b/api/src/main/java/com/discordsrv/api/placeholder/format/FormattedText.java @@ -23,16 +23,26 @@ package com.discordsrv.api.placeholder.format; +import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; /** * Represents content that doesn't need to be processed for the purposes of DiscordSRV's processing. */ public class FormattedText implements CharSequence { + @Contract(value = "null -> null; !null -> new", pure = true) + public static FormattedText of(@Nullable CharSequence text) { + if (text == null) { + return null; + } + return new FormattedText(text); + } + private final CharSequence text; - public FormattedText(CharSequence text) { + private FormattedText(@NotNull CharSequence text) { this.text = text; } diff --git a/common/src/main/java/com/discordsrv/common/core/placeholder/result/ComponentResultStringifier.java b/common/src/main/java/com/discordsrv/common/core/placeholder/result/ComponentResultStringifier.java index 7c7d227c..b460ca7d 100644 --- a/common/src/main/java/com/discordsrv/common/core/placeholder/result/ComponentResultStringifier.java +++ b/common/src/main/java/com/discordsrv/common/core/placeholder/result/ComponentResultStringifier.java @@ -49,7 +49,7 @@ public class ComponentResultStringifier implements PlaceholderResultMapper { case PLAIN: return discordSRV.componentFactory().plainSerializer().serialize(component); case DISCORD: - return new FormattedText(discordSRV.componentFactory().discordSerialize(component)); + return FormattedText.of(discordSRV.componentFactory().discordSerialize(component)); case ANSI: return discordSRV.componentFactory().ansiSerializer().serialize(component); case LEGACY: diff --git a/common/src/main/java/com/discordsrv/common/feature/DiscordInviteModule.java b/common/src/main/java/com/discordsrv/common/feature/DiscordInviteModule.java index e7c227b8..be1c43d4 100644 --- a/common/src/main/java/com/discordsrv/common/feature/DiscordInviteModule.java +++ b/common/src/main/java/com/discordsrv/common/feature/DiscordInviteModule.java @@ -197,6 +197,6 @@ public class DiscordInviteModule extends AbstractModule { @Placeholder("discord_invite") public CharSequence getInvite() { - return new FormattedText(invite != null ? invite : UNKNOWN_INVITE); + return FormattedText.of(invite != null ? invite : UNKNOWN_INVITE); } } diff --git a/common/src/main/java/com/discordsrv/common/feature/messageforwarding/game/MinecraftToDiscordChatModule.java b/common/src/main/java/com/discordsrv/common/feature/messageforwarding/game/MinecraftToDiscordChatModule.java index 3c476d58..d59444cd 100644 --- a/common/src/main/java/com/discordsrv/common/feature/messageforwarding/game/MinecraftToDiscordChatModule.java +++ b/common/src/main/java/com/discordsrv/common/feature/messageforwarding/game/MinecraftToDiscordChatModule.java @@ -177,7 +177,7 @@ public class MinecraftToDiscordChatModule extends AbstractGameMessageModule