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 这种格式
最终成品
<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中文模组百科