QDResLoader

QDResLoader

一个极简资源加载器,复用现有功能。

工具

你可能知道,QSL 里其实有一套非常优秀、久经实战考验且高效的资源加载系统吧?每个模组都在用它。如果能直接复用它,而不是依赖一个臃肿、需要 Architectury、动不动就崩的过度设计混合物,那岂不是很好?

这正是本模组所做的。1.0 版本只有 10 行 Java 代码,包括格式化在内:

new File("resources").mkdirs();
for (var t : ResourceType.values()) {
    ResourceLoader.get(t).getRegisterTopResourcePackEvent().register((ctx) -> {
        ctx.addResourcePack(new ModNioResourcePack(
            "QDResLoader resources", mod.metadata(), null, ResourcePackActivationType.ALWAYS_ENABLED,
            new File("resources").toPath(), t, null
        ));
    });
}

自 1.0 版本以来,为了让你用得更顺手并增加一些额外功能,又加入了一些新特性,但模组依旧保持小巧;只是不再“小到能直接把整个模组塞进描述里”那样迷你而已。

尽情利用 QSL 资源加载器的力量,去处理 resources 目录吧。你已经知道格式了:数据放在 data,资源放在 assets。也许你有一些不想解压的 zip 文件,或者你在用 Packwiz 管理别人维护的整合包?没问题,把它们丢进 packs 即可。

首次运行时,resources 目录下会生成一个 QDResLoader-README.txt 文件,快速告诉你如何使用本模组。以下是其中的内容:

此目录由 QDResLoader 创建并管理。只要出现以下任何情况,你就可以删除这个 README。

此目录本身会同时作为数据包和资源包加载,因此任何 pack.mcmeta 都会被识别(若缺失,将使用 QSL 提供的默认值),并且 data 中的任何数据,以及客户端 assets 中的资源,都会被加载。

你还可以创建 packs 目录,把目录、zip 或 jar 文件放进去,它们都会作为资源包加载。为了方便整理,你也可以创建 datapacks 或 resourcepacks 目录——放在这些目录里的资源包只会按对应的类型加载,而不是两者兼有。

主目录中的资源无法被用户禁用,但会出现在“资源包”和“数据包”菜单中,并且可以调整顺序。三个资源包目录中的资源包都可以由用户自行禁用,但默认均为启用。

JAR 文件会被视为资源包,因此你可以拿“数据包兼模组”的 JAR,把它们放到这里而不是 mods 文件夹中——如果你愿意这么做的话。