LanguageManager.java
net.minecraft.client.resources.language.LanguageManager
信息
- 全限定名:net.minecraft.client.resources.language.LanguageManager
- 类型:public class
- 包:net.minecraft.client.resources.language
- 源码路径:src/main/java/net/minecraft/client/resources/language/LanguageManager.java
- 起始行号:L24
- 实现:ResourceManagerReloadListener
- 职责:
TODO
字段/常量
-
LOGGER- 类型:
Logger - 修饰符:
private static final - 源码定位:
L25 - 说明:
TODO
- 类型:
-
DEFAULT_LANGUAGE- 类型:
LanguageInfo - 修饰符:
private static final - 源码定位:
L26 - 说明:
TODO
- 类型:
-
languages- 类型:
Map<String,LanguageInfo> - 修饰符:
private - 源码定位:
L27 - 说明:
TODO
- 类型:
-
currentCode- 类型:
String - 修饰符:
private - 源码定位:
L28 - 说明:
TODO
- 类型:
-
reloadCallback- 类型:
Consumer<ClientLanguage> - 修饰符:
private final - 源码定位:
L29 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public LanguageManager(String languageCode, Consumer<ClientLanguage> reloadCallback) @ L31
- 构造器名:LanguageManager
- 源码定位:L31
- 修饰符:public
参数:
- languageCode: String
- reloadCallback: Consumer
说明:
TODO
方法
下面的方法块按源码顺序生成。
private static Map<String,LanguageInfo> extractLanguages(Stream<PackResources> resourcePacks) @ L36
- 方法名:extractLanguages
- 源码定位:L36
- 返回类型:Map<String,LanguageInfo>
- 修饰符:private static
参数:
- resourcePacks: Stream
说明:
TODO
public void onResourceManagerReload(ResourceManager resourceManager) @ L51
- 方法名:onResourceManagerReload
- 源码定位:L51
- 返回类型:void
- 修饰符:public
参数:
- resourceManager: ResourceManager
说明:
TODO
public void setSelected(String code) @ L71
- 方法名:setSelected
- 源码定位:L71
- 返回类型:void
- 修饰符:public
参数:
- code: String
说明:
TODO
public String getSelected() @ L75
- 方法名:getSelected
- 源码定位:L75
- 返回类型:String
- 修饰符:public
参数:
- 无
说明:
TODO
public SortedMap<String,LanguageInfo> getLanguages() @ L79
- 方法名:getLanguages
- 源码定位:L79
- 返回类型:SortedMap<String,LanguageInfo>
- 修饰符:public
参数:
- 无
说明:
TODO
public LanguageInfo getLanguage(String code) @ L83
- 方法名:getLanguage
- 源码定位:L83
- 返回类型:LanguageInfo
- 修饰符:public
参数:
- code: String
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class LanguageManager implements ResourceManagerReloadListener {
private static final Logger LOGGER = LogUtils.getLogger();
private static final LanguageInfo DEFAULT_LANGUAGE = new LanguageInfo("US", "English", false);
private Map<String, LanguageInfo> languages = ImmutableMap.of("en_us", DEFAULT_LANGUAGE);
private String currentCode;
private final Consumer<ClientLanguage> reloadCallback;
public LanguageManager(String languageCode, Consumer<ClientLanguage> reloadCallback) {
this.currentCode = languageCode;
this.reloadCallback = reloadCallback;
}
private static Map<String, LanguageInfo> extractLanguages(Stream<PackResources> resourcePacks) {
Map<String, LanguageInfo> result = Maps.newHashMap();
resourcePacks.forEach(resourcePack -> {
try {
LanguageMetadataSection languageMetadataSection = resourcePack.getMetadataSection(LanguageMetadataSection.TYPE);
if (languageMetadataSection != null) {
languageMetadataSection.languages().forEach(result::putIfAbsent);
}
} catch (Exception var3) {
LOGGER.warn("Unable to parse language metadata section of resourcepack: {}", resourcePack.packId(), var3);
}
});
return ImmutableMap.copyOf(result);
}
@Override
public void onResourceManagerReload(ResourceManager resourceManager) {
this.languages = extractLanguages(resourceManager.listPacks());
List<String> languageStack = new ArrayList<>(2);
boolean defaultRightToLeft = DEFAULT_LANGUAGE.bidirectional();
languageStack.add("en_us");
if (!this.currentCode.equals("en_us")) {
LanguageInfo currentLanguage = this.languages.get(this.currentCode);
if (currentLanguage != null) {
languageStack.add(this.currentCode);
defaultRightToLeft = currentLanguage.bidirectional();
}
}
ClientLanguage locale = ClientLanguage.loadFrom(resourceManager, languageStack, defaultRightToLeft);
I18n.setLanguage(locale);
Language.inject(locale);
this.reloadCallback.accept(locale);
}
public void setSelected(String code) {
this.currentCode = code;
}
public String getSelected() {
return this.currentCode;
}
public SortedMap<String, LanguageInfo> getLanguages() {
return new TreeMap<>(this.languages);
}
public @Nullable LanguageInfo getLanguage(String code) {
return this.languages.get(code);
}
}引用的其他类
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
ClientLanguage.loadFrom()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
I18n.setLanguage()
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
LanguageInfo()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Language.inject()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
实现
- 引用位置: