ClientLanguage.java

net.minecraft.client.resources.language.ClientLanguage

信息

  • 全限定名:net.minecraft.client.resources.language.ClientLanguage
  • 类型:public class
  • 包:net.minecraft.client.resources.language
  • 源码路径:src/main/java/net/minecraft/client/resources/language/ClientLanguage.java
  • 起始行号:L22
  • 继承:Language
  • 职责:

    TODO

字段/常量

  • LOGGER

    • 类型: Logger
    • 修饰符: private static final
    • 源码定位: L23
    • 说明:

      TODO

  • storage

    • 类型: Map<String,String>
    • 修饰符: private final
    • 源码定位: L24
    • 说明:

      TODO

  • defaultRightToLeft

    • 类型: boolean
    • 修饰符: private final
    • 源码定位: L25
    • 说明:

      TODO

内部类/嵌套类型

构造器

private ClientLanguage(Map<String,String> storage, boolean defaultRightToLeft) @ L27

  • 构造器名:ClientLanguage
  • 源码定位:L27
  • 修饰符:private

参数:

  • storage: Map<String,String>
  • defaultRightToLeft: boolean

说明:

TODO

方法

下面的方法块按源码顺序生成。

public static ClientLanguage loadFrom(ResourceManager resourceManager, List<String> languageStack, boolean defaultRightToLeft) @ L32

  • 方法名:loadFrom
  • 源码定位:L32
  • 返回类型:ClientLanguage
  • 修饰符:public static

参数:

  • resourceManager: ResourceManager
  • languageStack: List
  • defaultRightToLeft: boolean

说明:

TODO

private static void appendFrom(String languageCode, List<Resource> resources, Map<String,String> translations) @ L52

  • 方法名:appendFrom
  • 源码定位:L52
  • 返回类型:void
  • 修饰符:private static

参数:

  • languageCode: String
  • resources: List
  • translations: Map<String,String>

说明:

TODO

public String getOrDefault(String key, String defaultValue) @ L62

  • 方法名:getOrDefault
  • 源码定位:L62
  • 返回类型:String
  • 修饰符:public

参数:

  • key: String
  • defaultValue: String

说明:

TODO

public boolean has(String key) @ L67

  • 方法名:has
  • 源码定位:L67
  • 返回类型:boolean
  • 修饰符:public

参数:

  • key: String

说明:

TODO

public boolean isDefaultRightToLeft() @ L72

  • 方法名:isDefaultRightToLeft
  • 源码定位:L72
  • 返回类型:boolean
  • 修饰符:public

参数:

说明:

TODO

public FormattedCharSequence getVisualOrder(FormattedText logicalOrderText) @ L77

  • 方法名:getVisualOrder
  • 源码定位:L77
  • 返回类型:FormattedCharSequence
  • 修饰符:public

参数:

  • logicalOrderText: FormattedText

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class ClientLanguage extends Language {
    private static final Logger LOGGER = LogUtils.getLogger();
    private final Map<String, String> storage;
    private final boolean defaultRightToLeft;
 
    private ClientLanguage(Map<String, String> storage, boolean defaultRightToLeft) {
        this.storage = storage;
        this.defaultRightToLeft = defaultRightToLeft;
    }
 
    public static ClientLanguage loadFrom(ResourceManager resourceManager, List<String> languageStack, boolean defaultRightToLeft) {
        Map<String, String> translations = new HashMap<>();
 
        for (String languageCode : languageStack) {
            String path = String.format(Locale.ROOT, "lang/%s.json", languageCode);
 
            for (String namespace : resourceManager.getNamespaces()) {
                try {
                    Identifier location = Identifier.fromNamespaceAndPath(namespace, path);
                    appendFrom(languageCode, resourceManager.getResourceStack(location), translations);
                } catch (Exception var10) {
                    LOGGER.warn("Skipped language file: {}:{} ({})", namespace, path, var10.toString());
                }
            }
        }
 
        DeprecatedTranslationsInfo.loadFromDefaultResource().applyToMap(translations);
        return new ClientLanguage(Map.copyOf(translations), defaultRightToLeft);
    }
 
    private static void appendFrom(String languageCode, List<Resource> resources, Map<String, String> translations) {
        for (Resource resource : resources) {
            try (InputStream inputStream = resource.open()) {
                Language.loadFromJson(inputStream, translations::put);
            } catch (IOException var10) {
                LOGGER.warn("Failed to load translations for {} from pack {}", languageCode, resource.sourcePackId(), var10);
            }
        }
    }
 
    @Override
    public String getOrDefault(String key, String defaultValue) {
        return this.storage.getOrDefault(key, defaultValue);
    }
 
    @Override
    public boolean has(String key) {
        return this.storage.containsKey(key);
    }
 
    @Override
    public boolean isDefaultRightToLeft() {
        return this.defaultRightToLeft;
    }
 
    @Override
    public FormattedCharSequence getVisualOrder(FormattedText logicalOrderText) {
        return FormattedBidiReorder.reorder(logicalOrderText, this.defaultRightToLeft);
    }
}

引用的其他类