xmsc
为什么@Shadow不能映射到继承自父类的字段。
  1.     @Shadow
  2.     protected int backgroundHeight;
  3. -------------------
  4. @Shadow field backgroundWidth was not located in the target class net.minecraft.client.gui.screen.ingame.BrewingStandScreen.
复制代码



洞穴夜莺
继承父类的字段拿来直接用,不需要声明

xmsc
洞穴夜莺 发表于 2022-7-31 16:05
继承父类的字段拿来直接用,不需要声明

什么意思?

洞穴夜莺
本帖最后由 洞穴夜莺 于 2022-7-31 16:28 编辑

就是不需要声明变量,直接在你的代码里用
  1. package mypackage;

  2. import ... // 此处省略

  3. @Mixin(Target.class)
  4. public abstract class TargetMixin extends ParentClassOfTarget {
  5.     @Inject(method="methodToInject", at = @At("HEAD"))
  6.     public void onMethodToInject(CallbackInfo ci) {
  7.         backGroundHeight = MyClass.getBackGroundHeight(); // 这里直接引用目标类父类的backGroundHeight,不需要声明backGroundHeight变量
  8.     }
  9. }
复制代码

xmsc
洞穴夜莺 发表于 2022-7-31 16:27
就是不需要声明变量,直接在你的代码里用

MyClass是什么类

洞穴夜莺
xmsc 发表于 2022-7-31 16:37
MyClass是什么类

你可以理解为foo.bar

xmsc
本帖最后由 xmsc 于 2022-7-31 16:49 编辑
洞穴夜莺 发表于 2022-7-31 16:27
就是不需要声明变量,直接在你的代码里用

如果父类中是 protected final T handler; 呢?
子类引用
  1. (BrewingStandScreenHandler)this.handler
复制代码



洞穴夜莺
xmsc 发表于 2022-7-31 16:46
如果父类中是 protected final T handler; 呢?
子类引用

那你应当去Mixin它的父类

xmsc
洞穴夜莺 发表于 2022-7-31 16:50
那你应当去Mixin它的父类

用Accessor?

xmsc
我发现mc有内置接口

第一页 上一页 下一页 最后一页