mirror of
https://e.coding.net/circlecloud/YumCore.git
synced 2024-11-22 01:48:50 +00:00
feat: 添加本地化工具
Signed-off-by: 502647092 <admin@yumc.pw>
This commit is contained in:
parent
8ad3e181c9
commit
0c7a71e138
127
src/main/java/pw/yumc/YumCore/misc/L10N.java
Normal file
127
src/main/java/pw/yumc/YumCore/misc/L10N.java
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
package pw.yumc.YumCore.misc;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.material.SpawnEgg;
|
||||||
|
|
||||||
|
import pw.yumc.YumCore.bukkit.Log;
|
||||||
|
import pw.yumc.YumCore.config.FileConfig;
|
||||||
|
import pw.yumc.YumCore.config.YumConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 本地化工具类
|
||||||
|
*
|
||||||
|
* @since 2015年12月14日 下午1:33:52
|
||||||
|
* @author 喵♂呜
|
||||||
|
*/
|
||||||
|
public class L10N {
|
||||||
|
private static String CONFIG_NAME = "Item_zh_CN.yml";
|
||||||
|
private static FileConfig custom;
|
||||||
|
private static Map<String, String> content;
|
||||||
|
|
||||||
|
static {
|
||||||
|
content = new HashMap<>();
|
||||||
|
Log.info("异步初始化本地化工具...");
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取物品完整汉化名称(包括原版)
|
||||||
|
*
|
||||||
|
* @param i
|
||||||
|
* 物品实体
|
||||||
|
* @return 物品名称
|
||||||
|
*/
|
||||||
|
public static final String getItemFullName(final ItemStack i) {
|
||||||
|
return getItemName(getItemType(i)) + (i.hasItemMeta() && i.getItemMeta().hasDisplayName() ? "§r(" + i.getItemMeta().getDisplayName() + "§r)" : "");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取物品汉化名称
|
||||||
|
*
|
||||||
|
* @param i
|
||||||
|
* 物品实体
|
||||||
|
* @return 物品名称
|
||||||
|
*/
|
||||||
|
public static final String getItemName(final ItemStack i) {
|
||||||
|
return i.hasItemMeta() && i.getItemMeta().hasDisplayName() ? i.getItemMeta().getDisplayName() : getItemName(getItemType(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 重载LocalUtil
|
||||||
|
*/
|
||||||
|
public static void reload() {
|
||||||
|
Log.info("异步重载本地化工具...");
|
||||||
|
content.clear();
|
||||||
|
load();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取物品汉化名称
|
||||||
|
*
|
||||||
|
* @param iname
|
||||||
|
* 物品类型名称
|
||||||
|
* @return 物品名称
|
||||||
|
*/
|
||||||
|
private static final String getItemName(final String iname) {
|
||||||
|
String aname = content.get(iname);
|
||||||
|
if (aname == null) {
|
||||||
|
aname = iname;
|
||||||
|
if (custom != null) {
|
||||||
|
custom.set(iname, iname);
|
||||||
|
custom.save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return aname;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取物品类型名称
|
||||||
|
*
|
||||||
|
* @param i
|
||||||
|
* 物品实体
|
||||||
|
* @return 物品类型
|
||||||
|
*/
|
||||||
|
private static final String getItemType(final ItemStack i) {
|
||||||
|
String name = i.getType().name();
|
||||||
|
String dura = "";
|
||||||
|
if (i.getType() == Material.MONSTER_EGG) {
|
||||||
|
name = ((SpawnEgg) i.getData()).getSpawnedType().name();
|
||||||
|
} else {
|
||||||
|
final int dur = i.getDurability();
|
||||||
|
dura = (i.getMaxStackSize() != 1 && dur != 0) ? Integer.toString(dur) : "";
|
||||||
|
}
|
||||||
|
return (name + (dura.isEmpty() ? "" : "-" + dura)).toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 载入数据
|
||||||
|
*/
|
||||||
|
private static void load() {
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
final Map<String, String> local = (Map<String, String>) YumConfig.getLocal(CONFIG_NAME).getContentMap();
|
||||||
|
final Map<String, String> remote = (Map<String, String>) YumConfig.getRemote(CONFIG_NAME).getContentMap();
|
||||||
|
if (local != null) {
|
||||||
|
Log.info("本地汉化文件词条数量: " + local.size());
|
||||||
|
content.putAll(local);
|
||||||
|
}
|
||||||
|
if (remote != null) {
|
||||||
|
Log.info("远程汉化文件词条数量: " + remote.size());
|
||||||
|
content.putAll(remote);
|
||||||
|
}
|
||||||
|
Log.info("本地化工具初始化完毕...");
|
||||||
|
} catch (final Exception e) {
|
||||||
|
Log.warning(String.format("本地化工具初始化失败: %s %s", e.getClass().getName(), e.getMessage()));
|
||||||
|
Log.debug(CONFIG_NAME, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user