Fabric 教程
安装
- 启用 log4j 调试信息(英文)
基础
- 约定和术语
- 注册
- 开发工具
物品
方块和方块实体
数据生成
世界生成
命令
事件
实体
流体
Mixin 和 ASM
杂项
Yarn
贡献 Fabric
- FabLabs - 在提交 PR 之前起草新功能的试验场
访问加宽(Access wideners)提供了一种放宽类、方法、字段访问权限的方式。访问加宽类似于著名的 Access Transformers.
访问加宽应该仅在使用 Mixin 无法实现时使用。目前只有以下两种情景 Mixin 无法做到:
为了让 access widener 造成的的变化显示在反编译的源代码中,请运行 genSources
gradle任务。
需要在你的模组里包含一个声明修改访问权限的特殊文件,为了帮助,你应该在IDE中使用 .accesswidener
文件扩展名。
该文件首行应该遵循下述格式,命名空间
应该与你模组源码使用混淆命名空间匹配,通常是 named
。 Loom 将会为你重新映射 access widener 文件,使其更改为 intermediary
。如果你使用自定义的 RemapJarTask
,设置 remapAccessWidener
为 true
来确保上述行为发生。
accessWidener v1 <命名空间>
再次提醒,命名空间应该在你使用 yarn 命名时设置为 named
, 使用中间名命名时设置为 intermediary
。
Access widener 文件允许使用空行和和以 # 开头的注释。
# 这样的注释是支持的,当它被放在行尾也是这样的
任何空白字符都作为 access widener 文件的分隔符,推荐制表符 tab。
类名应该使用 / 分隔,而不是 .
对于内部类,你应该使用 $
来代替 /
类的访问权限可以通过指定 访问权 和 类的名称 来改变,就像第一行定义命名空间那样。
<访问权> class <类名>
可以通过指定访问权限、类名称、方法名称和方法描述符来改变方法访问权,就像上面定义的映射命名空间一样。
<access> method <className> <methodName> <methodDesc>
字段的访问权可以通过指定访问权、类名称、字段名称和字段描述符来修改,就像上面定义的映射命名空间一样。
<access> field <className> <fieldName> <fieldDesc>
需要继承最终类或者覆盖最终方法时,用 extendable。
将方法改为 extendable 的同时也会使类变为 extendable。
需要访问另一个类的类、字段或方法时,用 accessible。
将方法或者字段改为 accessible 将会使得类也 accessible。
需要修改常量字段时,用 mutable。
访问加宽文件位置必须在 build.gradle 和 fabric.mod.json 文件中指定。该文件应该存在 resources 中,且需要包括在导出的 jar 文件中。
Loom 0.9 或更高版本:
loom { accessWidenerPath = file("src/main/resources/modid.accesswidener") }
Loom 0.8 或更低版本:
loom { accessWidener = file("src/main/resources/modid.accesswidener") }
fabric.mod.json:
... "accessWidener" : "modid.accesswidener", ...