Tki_sor
1.20.1forge版本,是public static final int的,该怎么写

无敌三脚猫
  1. @Redirect(
  2.       method = "<cinit>",
  3.       at = @At(value = "FIELD", target = "自己写", opcode = Opcodes.PUTSTATIC)
  4.   )
  5.   private void redirect_awa(int qwq) {
  6.     qwq=2;
  7.   }
复制代码

Tki_sor
  1. @Mixin(PressingBehaviour.class)
  2. public class PressingMixin {
  3.     @Redirect(
  4.             method = "<cinit>",
  5.             at = @At(value = "FIELD", target = "Lcom/simibubi/create/content/kinetics/press/PressingBehaviour;CYCLE:I", opcode = Opcodes.PUTSTATIC)
  6.     )
  7.     private void redirect_awa(int qwq) {
  8.         qwq=2;
  9.     }
  10. }
复制代码
@Redirect注解会报Cannot resolve any target instructions in target class
<cinit>会报Invalid member reference
target报Cannot resolve target reference 'Lcom/simibubi/create/content/kinetics/press/PressingBehaviour;CYCLE:I'

无敌三脚猫
Tki_sor 发表于 2023-11-12 11:40
@Redirect注解会报Cannot resolve any target instructions in target class
会报Invalid member reference ...

啊?你用mixin修改mod的类啊
一般都是修改原版的类的嘛,我不知道怎么修改mod的类,但感觉应该不像修改原版类那么简单,说不定得自定义一个IMixinConfigPlugin什么的……至少,mod的类不在反混淆表里,需要加一句remap=false
其实这个值可以在你的mod启动的时候用Unsafe来改https://www.mcbbs.net/thread-1211948-1-1.html,不过static final说不定被内联了,那时候改了不一定有效……
你开发的mod如果是forge版本的可以用coremod来改

无敌三脚猫
Tki_sor 发表于 2023-11-12 11:40
@Redirect注解会报Cannot resolve any target instructions in target class
会报Invalid member reference ...

等等,不止一句,得加好多句
  1. @Mixin(PressingBehaviour.class, remap = false)
  2. public class PressingMixin {
  3.     @Redirect(
  4.             method = "<cinit>",
  5.             at = @At(value = "FIELD", target = "Lcom/simibubi/create/content/kinetics/press/PressingBehaviour;CYCLE:I", opcode = Opcodes.PUTSTATIC, remap = false),
  6.             remap = false
  7.     )
  8.     private void redirect_awa(int qwq) {
  9.         qwq=2;
  10.     }
  11. }
复制代码

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