帕皮瑞斯
一个为 Fabric 加载器 MappingResolver 提供各种命名映射的模组
Papyrus
Papyrus 为 Fabric 加载器的 MappingResolver 提供了多种命名映射。这使得在运行时访问映射对开发者更友好,例如在反射中使用命名类而不是 intermediary。
Papyrus 在任意给定版本首次运行时下载映射,并将缓存映射以 tiny v2 格式存储在
${game_dir}/cache/papyrus/${mapping}_${version}.tiny
使用 Papyrus
要使用 Papyrus,只需将托管 Papyrus 的 Maven 仓库添加到你的 Gradle 构建脚本中:
# Kotlin DSL
repositories {
maven("https://maven.nelind.dk/releases") {
name = "Nelind Maven"
}
}
# Groovy DSL
repositories {
maven {
name 'Nelind Maven'
url 'https://maven.nelind.dk/releases'
}
}
然后使用标准的 loom "include" Gradle 配置将 Papyrus 作为 JIJ 包含进来:
# Kotlin DSL
modRuntimeOnly(include("dk.nelind:papyrus:(version)")!!)
# Groovy DSL
modRuntimeOnly include("dk.nelind:papyrus:(version)")
你也可以选择不将 Papyrus 作为 JIJ 包含进来,这种情况下请确保在 fabric.mod.json 中手动将 Papyrus 添加为依赖项。如果你需要访问 Papyrus 的内部实现,也可以使用 modApi 配置代替 modRuntimeOnly 配置来添加 Papyrus。
然后,在你的 fabric.mod.json 中需要告诉 Papyrus 你需要访问哪些映射及其版本:
{
...
"custom": {
"papyrus": {
"mappings": [
"mojmap",
"yarn:build.1"
]
}
}
}
然后使用任意已添加的映射命名空间获取并使用 MappingResolver:
MappingResolver mappingResolver = FabricLoader.getInstance().getMappingResolver();
String runtimeClassNameFromYarnName = mappingResolver.mapClassName("yarn:build.1", yarnClassName);
String runtimeClassNameFromMojmapName = mappingResolver.mapClassname("mojmap", mojmapClassName);
使用说明:
Papyrus 在
preLaunch阶段注入所添加的映射,因此你只应在此之后使用 Papyrus。 如果这里和那里谈到可能的未来 Fabric 加载器插件,那么在有意义让 Papyrus 成为加载器插件的地方它就会成为。 希望届时能在preLaunch阶段提供额外的映射。Mojmap 处理继承的类成员的方式与 Intermediary 和 Yarn 不同! Intermediary 和 Yarn 仅在该类的映射定义中为直接在该类中定义的成员提供映射,而 Mojmap 为类拥有的所有成员提供名称,无论是否继承。在实践中,这意味着如果你向映射解析器询问某个类中的 Mojmap 方法名称,而该类继承了该方法,同时运行时映射是 Intermediary 或 Yarn,你将得到
null,因为解析器能够找到该名称(在 Mojmap 中),但该方法的名称在运行时映射中没有定义。这对你意味着什么? 如果你使用 Mojmap 名称作为映射解析器的输入,你应该使用方法或字段所声明在的类的类名,而不是你想要修改的类。或者,你可以进行 null 检查并以编程方式查找类的超类,然后以该超类作为所属类向映射解析器询问成员名称。
提供的映射
| 映射 | 映射解析器中使用的命名空间 |
|---|---|
| Mojang 映射 | mojmap |
| Yarn | yarn |
关于版本号的说明
由于 Papyrus 几乎完全独立于游戏本身的版本。模组版本表示该构建所对应的 Java 版本。例如 Papyrus x.y.z+java.17 是针对 Java 17 构建的,因此支持同样针对 Java 17 构建的任何游戏版本(即从 1.18 到 1.20.4 之间的任何版本,含首尾)。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。