Local

基本信息

属性 值
类名 myessentials.localization.api.Local
类型 class,1 个 public static final String + 4 个方法
默认语言 en_US(defaultLocalization)
启用版本 Minecraft 1.7.10

功能

加载并查询单个 .lang 文件,提供「外部文件 → jar 内资源 → en_US 兜底」三级查找。

构造器

public Local(String filePath, String lang, String classPath, Class clazz)
参数 本 mod 的实参
filePath config/MyEssentials-Core/localization/
lang Config.instance.localization.get()(默认 en_US)
classPath /myessentials/localization/
clazz MyEssentialsCore.class

实现要点

  • getReader() 的三级回退:
    1. new File(filePath + lang + ".lang") 存在且非目录 → FileInputStream;
    2. 否则 clazz.getResourceAsStream(classPath + lang + ".lang");
    3. 仍为 null → clazz.getResourceAsStream(classPath + "en_US.lang"), 并 LOG.warn("Reverting to en_US.lang because {} does not exist!", ...)。
  • 三级全失败时返回的 InputStream 为 null, 随后 new InputStreamReader(null) 抛 NullPointerException—— 源码没有对这种情况的保护。
  • 本 mod 实际提供了 src/main/resources/myessentials/localization/en_US.lang, 故第 3 级在本 mod 中总能找到。
  • 内部用 HashMap<String, String> 缓存解析结果, 以 BufferedReader + InputStreamReader 逐行读取。
  • 4 个方法包含构造器、getReader(private)、load(private)与 1 个查询方法。

相关条目