为什么@Shadow不能映射到继承自父类的字段。
复制代码
- @Shadow
- protected int backgroundHeight;
- -------------------
- @Shadow field backgroundWidth was not located in the target class net.minecraft.client.gui.screen.ingame.BrewingStandScreen.
继承父类的字段拿来直接用,不需要声明
洞穴夜莺 发表于 2022-7-31 16:05
继承父类的字段拿来直接用,不需要声明
什么意思?
本帖最后由 洞穴夜莺 于 2022-7-31 16:28 编辑
就是不需要声明变量,直接在你的代码里用
复制代码
xmsc 发表于 2022-7-31 16:18
什么意思?
就是不需要声明变量,直接在你的代码里用
- package mypackage;
- import ... // 此处省略
- @Mixin(Target.class)
- public abstract class TargetMixin extends ParentClassOfTarget {
- @Inject(method="methodToInject", at = @At("HEAD"))
- public void onMethodToInject(CallbackInfo ci) {
- backGroundHeight = MyClass.getBackGroundHeight(); // 这里直接引用目标类父类的backGroundHeight,不需要声明backGroundHeight变量
- }
- }
洞穴夜莺 发表于 2022-7-31 16:27
就是不需要声明变量,直接在你的代码里用
MyClass是什么类
xmsc 发表于 2022-7-31 16:37
MyClass是什么类
你可以理解为foo.bar
本帖最后由 xmsc 于 2022-7-31 16:49 编辑
如果父类中是 protected final T handler; 呢?
子类引用复制代码
洞穴夜莺 发表于 2022-7-31 16:27
就是不需要声明变量,直接在你的代码里用
如果父类中是 protected final T handler; 呢?
子类引用
- (BrewingStandScreenHandler)this.handler
xmsc 发表于 2022-7-31 16:46
如果父类中是 protected final T handler; 呢?
子类引用
那你应当去Mixin它的父类
洞穴夜莺 发表于 2022-7-31 16:50
那你应当去Mixin它的父类
用Accessor?
我发现mc有内置接口