diff --git a/pom.xml b/pom.xml index 45416419..f0abed64 100644 --- a/pom.xml +++ b/pom.xml @@ -463,6 +463,18 @@ com.alessiodp.libby fr.xephi.authme.libs.com.alessiodp.libby + + net.kyori.adventure + fr.xephi.authme.libs.net.kyori.adventure + + + net.kyori.examination + fr.xephi.authme.libs.net.kyori.examination + + + net.kyori.option + fr.xephi.authme.libs.net.kyori.option + @@ -539,6 +551,12 @@ https://repo.opencollab.dev/maven-snapshots/ + + + sonatype-oss-snapshots1 + https://s01.oss.sonatype.org/content/repositories/snapshots/ + + apache-snapshots @@ -807,14 +825,14 @@ junit junit - - bungeecord-chat - net.md-5 - com.googlecode.json-simple json-simple + + bungeecord-chat + net.md-5 + @@ -882,6 +900,23 @@ + + + net.kyori + adventure-text-minimessage + 4.17.0 + + + net.kyori + adventure-platform-bukkit + 4.3.2 + + + net.kyori + adventure-text-serializer-gson + 4.17.0 + + net.luckperms diff --git a/src/main/java/fr/xephi/authme/listener/PlayerListener.java b/src/main/java/fr/xephi/authme/listener/PlayerListener.java index 2af84523..41277d79 100644 --- a/src/main/java/fr/xephi/authme/listener/PlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/PlayerListener.java @@ -21,6 +21,7 @@ import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.SecuritySettings; import fr.xephi.authme.util.TeleportUtils; +import fr.xephi.authme.util.message.MiniMessageUtils; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.HumanEntity; @@ -220,7 +221,7 @@ public class PlayerListener implements Listener{ String customJoinMessage = settings.getProperty(RegistrationSettings.CUSTOM_JOIN_MESSAGE); if (!customJoinMessage.isEmpty()) { - customJoinMessage = ChatColor.translateAlternateColorCodes('&', customJoinMessage); + customJoinMessage = ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(customJoinMessage)); event.setJoinMessage(customJoinMessage .replace("{PLAYERNAME}", player.getName()) .replace("{DISPLAYNAME}", player.getDisplayName()) diff --git a/src/main/java/fr/xephi/authme/message/Messages.java b/src/main/java/fr/xephi/authme/message/Messages.java index 1989fddd..8a5b65bb 100644 --- a/src/main/java/fr/xephi/authme/message/Messages.java +++ b/src/main/java/fr/xephi/authme/message/Messages.java @@ -5,6 +5,7 @@ import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.mail.EmailService; import fr.xephi.authme.output.ConsoleLoggerFactory; import fr.xephi.authme.util.expiring.Duration; +import fr.xephi.authme.util.message.MiniMessageUtils; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -126,7 +127,7 @@ public class Messages { displayName = ((Player) sender).getDisplayName(); } - return ChatColor.translateAlternateColorCodes('&', message) + return ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(message)) .replace(NEWLINE_TAG, "\n") .replace(USERNAME_TAG, sender.getName()) .replace(DISPLAYNAME_TAG, displayName); @@ -142,7 +143,7 @@ public class Messages { private String retrieveMessage(MessageKey key, String name) { String message = messagesFileHandler.getMessage(key.getKey()); - return ChatColor.translateAlternateColorCodes('&', message) + return ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(message)) .replace(NEWLINE_TAG, "\n") .replace(USERNAME_TAG, name) .replace(DISPLAYNAME_TAG, name); diff --git a/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java b/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java new file mode 100644 index 00000000..c8f59afd --- /dev/null +++ b/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java @@ -0,0 +1,23 @@ +package fr.xephi.authme.util.message; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; + +public class MiniMessageUtils { + private static final MiniMessage miniMessage = MiniMessage.miniMessage(); + + /** + * Parse a MiniMessage string into a legacy string. + * + * @param message The message to parse. + * @return The parsed message. + */ + public static String parseMiniMessageToLegacy(String message) { + Component component = miniMessage.deserialize(message); + return LegacyComponentSerializer.legacyAmpersand().serialize(component); + } + + private MiniMessageUtils() { + } +}