1.20.1forge版本,是public static final int的,该怎么写
- @Redirect(
- method = "<cinit>",
- at = @At(value = "FIELD", target = "自己写", opcode = Opcodes.PUTSTATIC)
- )
- private void redirect_awa(int qwq) {
- qwq=2;
- }
- @Mixin(PressingBehaviour.class)
- public class PressingMixin {
- @Redirect(
- method = "<cinit>",
- at = @At(value = "FIELD", target = "Lcom/simibubi/create/content/kinetics/press/PressingBehaviour;CYCLE:I", opcode = Opcodes.PUTSTATIC)
- )
- private void redirect_awa(int qwq) {
- qwq=2;
- }
- }
<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 ...
等等,不止一句,得加好多句
- @Mixin(PressingBehaviour.class, remap = false)
- public class PressingMixin {
- @Redirect(
- method = "<cinit>",
- at = @At(value = "FIELD", target = "Lcom/simibubi/create/content/kinetics/press/PressingBehaviour;CYCLE:I", opcode = Opcodes.PUTSTATIC, remap = false),
- remap = false
- )
- private void redirect_awa(int qwq) {
- qwq=2;
- }
- }