Skip to content

Commit

Permalink
add support to get language by player uuid
Browse files Browse the repository at this point in the history
  • Loading branch information
LordTuxn committed Nov 8, 2023
1 parent 2f96eb7 commit 9dd354a
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,18 +26,18 @@ public static void register(Plugin plugin, LanguageFile[] langFiles) {
Bukkit.getConsoleSender().sendMessage(Component.text("Registered plugin " + plugin.getName() + " to the language system"));
}

public static String getPlayerLang(Player player) {
String lang = playerLocale.get(player.getUniqueId());
public static String getPlayerLang(UUID playerUUID) {
String lang = playerLocale.get(playerUUID);
if (lang != null) return lang;
else {
try (ResultSet rsUser = DatabaseConnection.createStatement("SELECT uuid, lang FROM langUsers WHERE uuid = ?").setValue(player.getUniqueId().toString()).executeQuery()) {
try (ResultSet rsUser = DatabaseConnection.createStatement("SELECT uuid, lang FROM langUsers WHERE uuid = ?").setValue(playerUUID.toString()).executeQuery()) {
if (rsUser.next()) playerLocale.put(UUID.fromString(rsUser.getString(1)),rsUser.getString(2));
DatabaseConnection.closeResultSet(rsUser);
} catch (SQLException e) {
Bukkit.getLogger().log(Level.SEVERE, "A SQL error occurred!", e);
}
}
return playerLocale.get(player.getUniqueId());
return playerLocale.get(playerUUID);
}

public static void setPlayerLang(Player player, String lang) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@

import java.util.Arrays;
import java.util.List;
import java.util.UUID;

public class LanguageUtil extends YamlFileFactory {
private static final String CONFIG_VERSION_PATH = "config-version";
private final static String LANG_HEAD_ID_PATH = "lang.head-id";
public LanguageFile[] languageFiles;

public LanguageUtil(Plugin plugin) {
Expand All @@ -28,23 +28,43 @@ public LanguageUtil(Plugin plugin) {
}

public String get(CommandSender sender, String key) {
return (sender instanceof Player ? getLanguageFileByPlayer((Player) sender) : languageFiles[0]).getTranslation(key);
return (sender instanceof Player ? getLanguageFileByPlayer(((Player) sender).getUniqueId()) :
languageFiles[0]).getTranslation(key);
}

public String get(UUID playerUUID, String key) {
return getLanguageFileByPlayer(playerUUID).getTranslation(key);
}

public String get(CommandSender sender, String key, String... args) {
return (sender instanceof Player ? getLanguageFileByPlayer((Player) sender) : languageFiles[0]).getTranslation(key, args);
return (sender instanceof Player ? getLanguageFileByPlayer(((Player) sender).getUniqueId()) :
languageFiles[0]).getTranslation(key, args);
}

public String get(UUID playerUUID, String key, String... args) {
return getLanguageFileByPlayer(playerUUID).getTranslation(key, args);
}

public List<String> getList(CommandSender sender, String key) {
return (sender instanceof Player ? getLanguageFileByPlayer((Player) sender) : languageFiles[0]).getTranslations(key);
return (sender instanceof Player ? getLanguageFileByPlayer(((Player) sender).getUniqueId()) :
languageFiles[0]).getTranslations(key);
}

public List<String> getList(UUID playerUUID, String key) {
return getLanguageFileByPlayer(playerUUID).getTranslations(key);
}

public List<String> getList(CommandSender sender, String key, String... args) {
return (sender instanceof Player ? getLanguageFileByPlayer((Player) sender) : languageFiles[0]).getTranslations(key, args);
return (sender instanceof Player ? getLanguageFileByPlayer(((Player) sender).getUniqueId()) :
languageFiles[0]).getTranslations(key, args);
}

public List<String> getList(UUID playerUUID, String key, String... args) {
return getLanguageFileByPlayer(playerUUID).getTranslations(key, args);
}

public LanguageFile getLanguageFileByPlayer(Player player) {
String locale = LangLibAPI.getPlayerLang(player);
public LanguageFile getLanguageFileByPlayer(UUID playerUUID) {
String locale = LangLibAPI.getPlayerLang(playerUUID);

return Arrays.stream(languageFiles)
.filter(lang -> lang.getLanguage().toString().equalsIgnoreCase(locale))
Expand Down

0 comments on commit 9dd354a

Please sign in to comment.