Fix getting locale in lower version client by delaying message sending

This commit is contained in:
Dreeam
2024-05-30 01:21:57 +08:00
parent fdc0d31632
commit 4e54d86712
2 changed files with 17 additions and 1 deletions
@@ -6,6 +6,8 @@ import fr.xephi.authme.message.Messages;
import fr.xephi.authme.permission.PermissionNode;
import fr.xephi.authme.permission.PermissionsManager;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.PluginSettings;
import fr.xephi.authme.util.Utils;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -22,6 +24,9 @@ public class CommonService {
@Inject
private Messages messages;
@Inject
private BukkitService bukkitService;
@Inject
private PermissionsManager permissionsManager;
@@ -46,6 +51,11 @@ public class CommonService {
* @param key the message key
*/
public void send(CommandSender sender, MessageKey key) {
if (Utils.majorVersion < 12 && settings.getProperty(PluginSettings.I18N_MESSAGES)) {
bukkitService.runTaskLater(() -> messages.send(sender, key), 35L);
return;
}
messages.send(sender, key);
}
@@ -57,6 +67,11 @@ public class CommonService {
* @param replacements the replacements to apply to the message
*/
public void send(CommandSender sender, MessageKey key, String... replacements) {
if (Utils.majorVersion < 12 && settings.getProperty(PluginSettings.I18N_MESSAGES)) {
bukkitService.runTaskLater(() -> messages.send(sender, key, replacements), 35L);
return;
}
messages.send(sender, key, replacements);
}
@@ -40,7 +40,8 @@ public class I18NUtils {
spigotGetLocaleMethod.setAccessible(true);
return ((String) spigotGetLocaleMethod.invoke(spigot)).toLowerCase();
} catch (Exception ignored) {
} catch (Exception e) {
e.printStackTrace();
return null;
}
}