majority of bug fixes
This commit is contained in:
@@ -3,53 +3,107 @@ package hdvtdev.blockAndSeek;
|
||||
import hdvtdev.blockAndSeek.managers.ConfigManager;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
import net.kyori.adventure.title.Title;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
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<String, Map<String, String>> localization = Collections.unmodifiableMap(ConfigManager.getLocalization());
|
||||
|
||||
private static final MiniMessage miniMessage = MiniMessage.miniMessage();
|
||||
private static final PlainTextComponentSerializer plainText = PlainTextComponentSerializer.plainText();
|
||||
private static final Component prefix = miniMessage.deserialize("<gold>[<bold><blue>BlockAndSeek<reset><gold>] ");
|
||||
private static final Component empty = Component.empty();
|
||||
|
||||
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 ItemStack translateItem(@NotNull Player player, @NotNull ItemStack itemStack, @NotNull String... replacements) {
|
||||
ItemStack translatedItem = itemStack.clone();
|
||||
ItemMeta itemMeta = translatedItem.getItemMeta();
|
||||
String key = plainText.serialize(itemMeta.displayName());
|
||||
itemMeta.displayName(getComponent(player.locale().toLanguageTag(), key, replacements));
|
||||
translatedItem.setItemMeta(itemMeta);
|
||||
return translatedItem;
|
||||
}
|
||||
|
||||
public static String getLang(@Nullable String lang, @NotNull String key, String... replacements) {
|
||||
lang = lang == null || !localization.containsKey(lang) ? "en-US" : lang;
|
||||
public static void sendMessage(@NotNull Iterable<Player> players, boolean addPrefix, @NotNull String key, @NotNull String... replacements) {
|
||||
for (Player player : players) {
|
||||
sendMessage(player, addPrefix, key, replacements);
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendMessage(@NotNull Player player, boolean addPrefix, @NotNull String key, @NotNull String... replacements) {
|
||||
Component component = getComponent(player.locale().toLanguageTag(), key, replacements);
|
||||
player.sendMessage(addPrefix ? prefix.append(component) : component);
|
||||
}
|
||||
|
||||
public static void sendActionBar(@NotNull Iterable<Player> players, boolean addPrefix, @NotNull String key, @NotNull String... replacements) {
|
||||
for (Player player : players) {
|
||||
sendActionBar(player, addPrefix, key, replacements);
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static String get(String a) {
|
||||
return "";
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static Component getComponent(String a) {
|
||||
return empty;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static Component getComponentWithPrefix(String... a) {
|
||||
return empty;
|
||||
}
|
||||
|
||||
|
||||
String s = localization.get(lang).get(key);
|
||||
public static void sendActionBar(@NotNull Player player, boolean addPrefix, @NotNull String key, @NotNull String... replacements) {
|
||||
Component component = getComponent(player.locale().toLanguageTag(), key, replacements);
|
||||
player.sendActionBar(addPrefix ? prefix.append(component) : component);
|
||||
}
|
||||
|
||||
public static void sendTitle(@NotNull Iterable<Player> players, boolean addPrefix, @NotNull String key, @NotNull String... replacements) {
|
||||
for (Player player : players) {
|
||||
sendTitle(player, addPrefix, key, replacements);
|
||||
}
|
||||
}
|
||||
|
||||
public static void sendTitle(@NotNull Player player, boolean addPrefix, @NotNull String key, @NotNull String... replacements) {
|
||||
Component component = getComponent(player.locale().toLanguageTag(), key, replacements);
|
||||
player.showTitle(Title.title(addPrefix ? prefix.append(component) : component, empty));
|
||||
}
|
||||
|
||||
public static @NotNull Component getComponent(@NotNull Player p, @NotNull String key, @NotNull String... replacements) {
|
||||
return getComponent(p.locale().toLanguageTag(), key, replacements);
|
||||
}
|
||||
|
||||
public static @NotNull Component getComponent(@NotNull String lang, @NotNull String key, @NotNull String... replacements) {
|
||||
return miniMessage.deserialize(get(lang, key, replacements));
|
||||
}
|
||||
|
||||
public static @NotNull String get(@NotNull String lang, @NotNull String key, @NotNull String... replacements) {
|
||||
|
||||
String s = localization.getOrDefault(lang, localization.get("en-US")).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));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user