MC百科社群

标题: Fabric 开发教程之 Access Wideners 访问加宽器 [打印本页]

作者: QQ酱984469    时间: 4 天前
标题: Fabric 开发教程之 Access Wideners 访问加宽器
虽然 Fabric Wiki 上的教程已经足够详细了,但是我认为需要补充一些
Access Wideners 可以访问和修改 final 和 private,在模组开发中很常用
举个例子,在 Mojang 的官方映射下,EntityRenderers 类的 register 方法是用来注册实体自定义渲染器的,但是访问权限却是 private
这时候就需要用到 Access Wideners 了
首先需要在 src/main/resources/ 目录下创建 xxx.accesswidener 文件,xxx一般情况下为你模组的modid,当然这并不是必须的访问加宽文件位置必须在 build.gradle 和 fabric.mod.json 文件中指定
Fabric Wiki
文件的第一行应为: accessWidener 版本 命名空间
版本可以为 v1 或 v2,在 v2 版本中,添加了以 transitive-* 为前缀的关键字,作用为依赖此模组的模组也会访问加宽同样的内容
命名空间可以为 named 或 intermediary ,named 为映射后的命名空间,intermediary 为中间命名空间
1.20.1,客户端的主类的名称,Mojang 的官方映射下为 Minecraft ,在 yarn 映射下为 MinecraftClient ,而 intermediary 则为 class_310 ,是不是和天书一样
所以命名空间一般情况都是 named
这里第一行为 accessWidener v2 named
格式和访问权限见 Fabric Wiki
重点为类名和方法描述符
类名应为内部名称/全限定名,既 net/minecraft/client/renderer/entity/EntityRenderers 这种格式
方法描述符需要对描述符有一定了解,可以在网络找到详细教程
既 (Lnet/minecraft/world/entity/EntityType;Lnet/minecraft/client/renderer/entity/EntityRendererProvider;)V 这种格式
最终成品
  1. <div>accessWidener v2 named</div><div>transitive-accessible method net/minecraft/client/renderer/entity/EntityRenderers register (Lnet/minecraft/world/entity/EntityType;Lnet/minecraft/client/renderer/entity/EntityRendererProvider;)V</div>
复制代码








欢迎光临 MC百科社群 (https://bbs.mcmod.cn/) MC百科|最大的MineCraft中文模组百科