IndexedAssetSource.java

net.minecraft.client.resources.IndexedAssetSource

信息

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

    TODO

字段/常量

  • LOGGER

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

      TODO

  • PATH_SPLITTER

    • 类型: Splitter
    • 修饰符: public static final
    • 源码定位: L24
    • 说明:

      TODO

内部类/嵌套类型

构造器

方法

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

public static Path createIndexFs(Path assetsDirectory, String index) @ L26

  • 方法名:createIndexFs
  • 源码定位:L26
  • 返回类型:Path
  • 修饰符:public static

参数:

  • assetsDirectory: Path
  • index: String

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class IndexedAssetSource {
    private static final Logger LOGGER = LogUtils.getLogger();
    public static final Splitter PATH_SPLITTER = Splitter.on('/');
 
    public static Path createIndexFs(Path assetsDirectory, String index) {
        Path objectsDirectory = assetsDirectory.resolve("objects");
        LinkFileSystem.Builder builder = LinkFileSystem.builder();
        Path indexFile = assetsDirectory.resolve("indexes/" + index + ".json");
 
        try (BufferedReader reader = Files.newBufferedReader(indexFile, StandardCharsets.UTF_8)) {
            JsonObject root = GsonHelper.parse(reader);
            JsonObject objects = GsonHelper.getAsJsonObject(root, "objects", null);
            if (objects != null) {
                for (Entry<String, JsonElement> entry : objects.entrySet()) {
                    JsonObject object = (JsonObject)entry.getValue();
                    String filename = entry.getKey();
                    List<String> path = PATH_SPLITTER.splitToList(filename);
                    String hash = GsonHelper.getAsString(object, "hash");
                    Path file = objectsDirectory.resolve(hash.substring(0, 2) + "/" + hash);
                    builder.put(path, file);
                }
            }
        } catch (JsonParseException var17) {
            LOGGER.error("Unable to parse resource index file: {}", indexFile);
        } catch (IOException var18) {
            LOGGER.error("Can't open the resource index file: {}", indexFile);
        }
 
        return builder.build("index-" + index).getPath("/");
    }
}

引用的其他类

  • LinkFileSystem

    • 引用位置: 方法调用
    • 关联成员: LinkFileSystem.builder()
  • GsonHelper

    • 引用位置: 方法调用
    • 关联成员: GsonHelper.getAsJsonObject(), GsonHelper.getAsString(), GsonHelper.parse()