diff options
Diffstat (limited to 'bukkit/src/main')
| -rw-r--r-- | bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java index 4f5ded3c..e667acc3 100644 --- a/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java +++ b/bukkit/src/main/java/com/leonardobishop/quests/bukkit/util/chat/MiniMessageParser.java @@ -5,12 +5,34 @@ import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + public final class MiniMessageParser { private final MiniMessage miniMessage; public MiniMessageParser() { - this.miniMessage = MiniMessage.miniMessage(); + Method miniMessageGetter; + + try { + miniMessageGetter = MiniMessage.class.getMethod("miniMessage"); + } catch (final NoSuchMethodException e) { + try { + // For some reason on latest Purpur 1.17.1 there is no MiniMessage#miniMessage method + // https://github.com/LMBishop/Quests/issues/756 + //noinspection JavaReflectionMemberAccess + miniMessageGetter = MiniMessage.class.getMethod("get"); + } catch (final NoSuchMethodException e2) { + throw new IllegalStateException("could not find MiniMessage getter"); + } + } + + try { + this.miniMessage = (MiniMessage) miniMessageGetter.invoke(null); + } catch (final IllegalAccessException | InvocationTargetException e) { + throw new IllegalStateException("could not get MiniMessage instance", e); + } } public void send(final @NotNull CommandSender who, final @NotNull String message) { |
