package hdvtdev.blockAndSeek; import hdvtdev.blockAndSeek.managers.ConfigManager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Collections; import java.util.Map; public class Localization { private static volatile Map> localization = Collections.unmodifiableMap(ConfigManager.getLocalization()); private static final MiniMessage miniMessage = MiniMessage.miniMessage(); private static final Component prefix = miniMessage.deserialize("[BlockAndSeek] "); public static void update() { localization = Collections.unmodifiableMap(ConfigManager.getLocalization()); } public static String get(@NotNull String key, String... replacements) { return getLang(null, key, replacements); } public static String getLang(@Nullable String lang, @NotNull String key, String... replacements) { lang = lang == null || !localization.containsKey(lang) ? "en-US" : lang; String s = localization.get(lang).get(key); if (s != null) { for (int i = 0; i < replacements.length; i += 2) { s = s.replace(replacements[i], replacements[i + 1]); } } else return "Unknown localization: " + key; return s; } public static Component getComponent(String key, String... replacements) { return getLangComponent(null, key, replacements); } public static Component getLangComponent(String lang, String key, String... replacements) { return miniMessage.deserialize(getLang(lang, key, replacements)); } public static Component getLangComponentWithPrefix(String lang, String key, String... replacements) { return prefix.append(getLangComponent(lang, key, replacements)); } public static Component getComponentWithPrefix(String key, String... replacements) { return prefix.append(getLangComponent(null, key, replacements)); } }