From 58f8176dae4807ec5bb09a500e2904fbd967d588 Mon Sep 17 00:00:00 2001 From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> Date: Mon, 22 Jul 2024 14:29:02 +0800 Subject: [PATCH] Bukkit Audience --- src/main/java/fr/xephi/authme/AuthMe.java | 16 +++++++++ .../xephi/authme/listener/PlayerListener.java | 3 +- .../fr/xephi/authme/message/Messages.java | 11 +++--- .../authme/service/AdventureService.java | 35 +++++++++++++++++++ .../authme/util/message/MiniMessageUtils.java | 12 +++++++ 5 files changed, 71 insertions(+), 6 deletions(-) create mode 100644 src/main/java/fr/xephi/authme/service/AdventureService.java diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index fd51e70f..bad299b6 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -31,6 +31,7 @@ import fr.xephi.authme.listener.ServerListener; import fr.xephi.authme.mail.EmailService; import fr.xephi.authme.output.ConsoleLoggerFactory; import fr.xephi.authme.security.crypts.Sha256; +import fr.xephi.authme.service.AdventureService; import fr.xephi.authme.service.BackupService; import fr.xephi.authme.service.BukkitService; import fr.xephi.authme.service.MigrationService; @@ -81,6 +82,7 @@ public class AuthMe extends JavaPlugin { private EmailService emailService; private CommandHandler commandHandler; private static TaskScheduler scheduler; + private static AdventureService adventureService; @Inject public static Settings settings; private DataSource database; @@ -139,6 +141,13 @@ public class AuthMe extends JavaPlugin { return scheduler; } + /** + * Get the AdventureService + */ + public static AdventureService getAdventureService() { + return adventureService; + } + /** * The library manager */ @@ -153,6 +162,8 @@ public class AuthMe extends JavaPlugin { loadPluginInfo(getDescription().getVersion()); scheduler = UniversalScheduler.getScheduler(this); libraryManager = new BukkitLibraryManager(this); + adventureService = new AdventureService(this); + adventureService.init(); // Set the Logger instance and log file path ConsoleLogger.initialize(getLogger(), new File(getDataFolder(), LOG_FILENAME)); @@ -403,6 +414,11 @@ public class AuthMe extends JavaPlugin { // Wait for tasks and close data source new TaskCloser(database).run(); + // Close AdventureService + if (adventureService != null) { + adventureService.close(); + } + // Disabled correctly Consumer infoLogMethod = logger == null ? getLogger()::info : logger::info; infoLogMethod.accept("AuthMe " + this.getDescription().getVersion() + " is unloaded successfully!"); diff --git a/src/main/java/fr/xephi/authme/listener/PlayerListener.java b/src/main/java/fr/xephi/authme/listener/PlayerListener.java index b24da9da..2a0f8a02 100644 --- a/src/main/java/fr/xephi/authme/listener/PlayerListener.java +++ b/src/main/java/fr/xephi/authme/listener/PlayerListener.java @@ -21,7 +21,6 @@ import fr.xephi.authme.settings.properties.RegistrationSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.util.TeleportUtils; import fr.xephi.authme.util.message.I18NUtils; -import fr.xephi.authme.util.message.MiniMessageUtils; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.entity.HumanEntity; @@ -219,7 +218,7 @@ public class PlayerListener implements Listener { String customJoinMessage = settings.getProperty(RegistrationSettings.CUSTOM_JOIN_MESSAGE); if (!customJoinMessage.isEmpty()) { - customJoinMessage = ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(customJoinMessage)); + customJoinMessage = ChatColor.translateAlternateColorCodes('&', 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 0d7ec317..4ae0e8f2 100644 --- a/src/main/java/fr/xephi/authme/message/Messages.java +++ b/src/main/java/fr/xephi/authme/message/Messages.java @@ -1,9 +1,11 @@ package fr.xephi.authme.message; import com.google.common.collect.ImmutableMap; +import fr.xephi.authme.AuthMe; import fr.xephi.authme.ConsoleLogger; import fr.xephi.authme.mail.EmailService; import fr.xephi.authme.output.ConsoleLoggerFactory; +import fr.xephi.authme.service.AdventureService; import fr.xephi.authme.util.expiring.Duration; import fr.xephi.authme.util.message.I18NUtils; import fr.xephi.authme.util.message.MiniMessageUtils; @@ -44,6 +46,7 @@ public class Messages { private final ConsoleLogger logger = ConsoleLoggerFactory.get(EmailService.class); private MessagesFileHandler messagesFileHandler; + private static final AdventureService adventureService = AuthMe.getAdventureService(); /* * Constructor. @@ -62,7 +65,7 @@ public class Messages { public void send(CommandSender sender, MessageKey key) { String[] lines = retrieve(key, sender); for (String line : lines) { - sender.sendMessage(line); + adventureService.send(sender, MiniMessageUtils.parseMiniMessage(line)); } } @@ -78,7 +81,7 @@ public class Messages { public void send(CommandSender sender, MessageKey key, String... replacements) { String message = retrieveSingle(sender, key, replacements); for (String line : message.split("\n")) { - sender.sendMessage(line); + adventureService.send(sender, MiniMessageUtils.parseMiniMessage(line)); } } @@ -131,7 +134,7 @@ public class Messages { displayName = ((Player) sender).getDisplayName(); } - return ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(message)) + return ChatColor.translateAlternateColorCodes('&', message) .replace(NEWLINE_TAG, "\n") .replace(USERNAME_TAG, sender.getName()) .replace(DISPLAYNAME_TAG, displayName); @@ -147,7 +150,7 @@ public class Messages { private String retrieveMessage(MessageKey key, String name) { String message = messagesFileHandler.getMessage(key.getKey()); - return ChatColor.translateAlternateColorCodes('&', MiniMessageUtils.parseMiniMessageToLegacy(message)) + return ChatColor.translateAlternateColorCodes('&', message) .replace(NEWLINE_TAG, "\n") .replace(USERNAME_TAG, name) .replace(DISPLAYNAME_TAG, name); diff --git a/src/main/java/fr/xephi/authme/service/AdventureService.java b/src/main/java/fr/xephi/authme/service/AdventureService.java new file mode 100644 index 00000000..ddb7c633 --- /dev/null +++ b/src/main/java/fr/xephi/authme/service/AdventureService.java @@ -0,0 +1,35 @@ +package fr.xephi.authme.service; + +import fr.xephi.authme.AuthMe; +import net.kyori.adventure.platform.bukkit.BukkitAudiences; +import net.kyori.adventure.text.Component; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class AdventureService { + private final AuthMe plugin; + public BukkitAudiences adventure; + public AdventureService(AuthMe plugin) { + this.plugin = plugin; + } + + public void init() { + adventure = BukkitAudiences.create(plugin); + } + + public void close() { + if (adventure != null) { + adventure.close(); + adventure = null; + } + } + + public void send(CommandSender sender, Component component) { + adventure.sender(sender).sendMessage(component); + } + + public void send(Player player, Component component) { + adventure.player(player).sendMessage(component); + } + +} diff --git a/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java b/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java index 36756c62..b404d44a 100644 --- a/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java +++ b/src/main/java/fr/xephi/authme/util/message/MiniMessageUtils.java @@ -1,6 +1,7 @@ package fr.xephi.authme.util.message; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; @@ -17,6 +18,17 @@ public class MiniMessageUtils { Component component = miniMessage.deserialize(message); return LegacyComponentSerializer.legacyAmpersand().serialize(component); } + + /** + * Parse a MiniMessage string into a component. + * + * @param message The message to parse. + * @return The parsed message. + */ + public static Component parseMiniMessage(String message) { + TextComponent component = LegacyComponentSerializer.legacySection().deserialize(message); + return miniMessage.deserialize(miniMessage.serialize(component)); + } private MiniMessageUtils() { } }