= 创作分享 =
技术讨论
Fabric 开发教程之 Access Wideners 访问加宽器 ...
JIE

Fabric 开发教程之 Access Wideners 访问加宽器

JIE 于 2025-1-27 22:15 ( 3天前 ) 发表在 [教程] 分类。 [复制链接] [只看楼主] [打印]
97 0
虽然 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>
复制代码



该帖共收到 0 条回复!
百科目前不允许匿名发帖哦~ 请先 [ 登陆 ][ 注册 ] 吧~

本版积分规则

发新帖
  • 回复
  • 点评
  • 评分

[ MC百科(mcmod.cn) 除另有声明,所有开放公共编辑的内容均使用 BY-NC-SA 3.0 协议 ]

Minecraft百科CC协议
快速回复 返回顶部 返回列表