69 lines
2.7 KiB
Java
69 lines
2.7 KiB
Java
|
|
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<String, String> 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);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|