package hdvtdev.blockAndSeek; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.ChatColor; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.Nullable; import java.io.*; import java.util.Map; import java.util.Objects; import java.util.concurrent.ConcurrentHashMap; public class Localization { private static final Map localization = new ConcurrentHashMap<>(); private static JavaPlugin javaPlugin; public static void reload() { File localizationFile = new File(javaPlugin.getDataFolder(), "messages.yml"); if (!localizationFile.exists()) javaPlugin.saveResource("messages.yml", false); YamlConfiguration locale = YamlConfiguration.loadConfiguration(localizationFile); YamlConfiguration defaultLocale = YamlConfiguration.loadConfiguration( new InputStreamReader(Objects.requireNonNull(javaPlugin.getResource("messages.yml")))); String prefix = locale.getString("prefix"); prefix = prefix == null ? defaultLocale.getString("prefix") : prefix; for (String defaultElement : defaultLocale.getKeys(false)) { String element = locale.getString(defaultElement); localization.put(defaultElement, String.format("%s%s", prefix, element == null ? defaultLocale.getString(defaultElement) : element)); } } public static void load(JavaPlugin plugin) { javaPlugin = plugin; File localizationFile = new File(plugin.getDataFolder(), "messages.yml"); if (!localizationFile.exists()) plugin.saveResource("messages.yml", false); YamlConfiguration locale = YamlConfiguration.loadConfiguration(localizationFile); YamlConfiguration defaultLocale = YamlConfiguration.loadConfiguration( new InputStreamReader(Objects.requireNonNull(plugin.getResource("messages.yml")))); String prefix = locale.getString("prefix"); prefix = prefix == null ? defaultLocale.getString("prefix") : prefix; for (String defaultElement : defaultLocale.getKeys(false)) { String element = locale.getString(defaultElement); localization.put(defaultElement, String.format("%s%s", prefix, element == null ? defaultLocale.getString(defaultElement) : element)); } } public static Component get(String key, String... replacements) { String s = localization.get(key); for (int i = 0; i < replacements.length; i+=2) { s = s.replace(replacements[i], replacements[i + 1]); } return MiniMessage.miniMessage().deserialize(s); } }