tutorial:accesswideners
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
tutorial:accesswideners [2020/06/15 05:53] – explain how to remap the access widener in Loom with custom task wornitskeyitem | tutorial:accesswideners [2023/02/01 17:59] – modmuss50 | ||
---|---|---|---|
Line 3: | Line 3: | ||
Access wideners provide a way to loosen the access limits of classes, methods or fields. Access wideners are similar to the commonly known Access Transformers. | Access wideners provide a way to loosen the access limits of classes, methods or fields. Access wideners are similar to the commonly known Access Transformers. | ||
- | Access wideners | + | Access wideners |
+ | * Needing to access a (package) private class, especially for the purpose of shadowing or accessing a field or method in a mixin. | ||
+ | * Being able to override final methods or subclass final classes. | ||
+ | * If you want to subclass a class with only (package) private constructors, | ||
+ | |||
+ | In order for access widener changes | ||
===== Requirements ===== | ===== Requirements ===== | ||
* Fabric-loader 0.8.0 or higher | * Fabric-loader 0.8.0 or higher | ||
* Loom 0.2.7 or higher | * Loom 0.2.7 or higher | ||
- | |||
===== File format ===== | ===== File format ===== | ||
A specific file format is used to define the access changes included in your mod. To aid IDE's you should use the '' | A specific file format is used to define the access changes included in your mod. To aid IDE's you should use the '' | ||
- | The file must start with the following header, '' | + | The file must start with the following header. '' |
<code [enable_line_numbers=" | <code [enable_line_numbers=" | ||
accessWidener v1 < | accessWidener v1 < | ||
</ | </ | ||
+ | |||
+ | **Once again, the namespace should be '' | ||
Access widener files can have blank lines and comments starting with # | Access widener files can have blank lines and comments starting with # | ||
<code [enable_line_numbers=" | <code [enable_line_numbers=" | ||
- | # Comments like this are supported, as well at the end of the line | + | # Comments like this are supported, as well as at the end of the line |
</ | </ | ||
Line 51: | Line 57: | ||
- access can be // | - access can be // | ||
- | - classname | + | - className |
- methodName is the method name | - methodName is the method name | ||
- | - methodDesc is the method | + | - methodDesc is the method |
== Fields == | == Fields == | ||
Line 94: | Line 100: | ||
* Fields have final removed | * Fields have final removed | ||
+ | |||
+ | If you want to make a private final field both accessible //and// mutable, you need to use two directives, one for each change. | ||
===== Specifying file location ===== | ===== Specifying file location ===== | ||
- | The access widener file location must be specified in your build.gradle and in your fabric.mod.json file. It should be stored in the resources as it needs to be included in the exported jar file. | + | The access widener file location must be specified in your build.gradle and in your fabric.mod.json file. It should be stored in the resources as it needs to be included in the exported jar file. (Replace " |
+ | |||
+ | Loom 0.9 or higher: | ||
<code groovy [enable_line_numbers=" | <code groovy [enable_line_numbers=" | ||
- | minecraft | + | loom { |
- | accessWidener | + | accessWidenerPath = file(" |
} | } | ||
</ | </ | ||
+ | |||
+ | Loom 0.8 or lower: | ||
+ | |||
+ | <code groovy [enable_line_numbers=" | ||
+ | loom { | ||
+ | accessWidener = file(" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | fabric.mod.json: | ||
<code json [enable_line_numbers=" | <code json [enable_line_numbers=" | ||
... | ... | ||
- | " | + | " |
... | ... | ||
</ | </ | ||
+ | |||
+ | ===== Validating the file ===== | ||
+ | By default, accesswidener entries that don't exist are ignored. | ||
+ | On recent versions of Loom, you can run '' | ||
+ | |||
+ | The error messages can be a little cryptic. For example, if you make a mistake in specifying a field, the error doesn' |
tutorial/accesswideners.txt · Last modified: 2024/04/29 21:00 by ayutac