Open dima-dencep opened 3 days ago
Can you show your original code?
.transformParams(builder -> builder
.targetType(ParamTransformTarget.INJECTION_POINT)
.inject(0, Type.getObjectType("net/minecraft/world/entity/Entity"))
.inject(1, Type.getObjectType("net/minecraft/world/item/ItemStack"))
.inject(4, Type.getObjectType("net/minecraft/world/entity/EquipmentSlot"))
)
I know what causes the error of injecting a parameter with 0 index, and I fixed it in the adapter
But now I encounter an error when trying to inject a parameter with index 1:
Caused by: java.util.NoSuchElementException
at java.base/java.util.ArrayList.getLast(ArrayList.java:454)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/org.sinytra.adapter.patch.transformer.operation.param.ParamTransformationUtil.lambda$extractWrapOperation$0(ParamTransformationUtil.java:198)
at java.base/java.util.HashMap.forEach(HashMap.java:1429)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/org.sinytra.adapter.patch.transformer.operation.param.ParamTransformationUtil.extractWrapOperation(ParamTransformationUtil.java:165)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/org.sinytra.adapter.patch.transformer.operation.param.InjectParameterTransform.apply(InjectParameterTransform.java:76)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/org.sinytra.adapter.patch.transformer.operation.param.TransformParameters.apply(TransformParameters.java:54)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/org.sinytra.adapter.patch.PatchInstance.apply(PatchInstance.java:72)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/org.sinytra.connector.transformer.MixinPatchTransformer.process(MixinPatchTransformer.java:219)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/reloc.net.minecraftforge.fart.internal.EntryImpl$ClassEntry.process(EntryImpl.java:58)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/reloc.net.minecraftforge.fart.internal.EntryImpl$ClassEntry.process(EntryImpl.java:36)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/reloc.net.minecraftforge.fart.internal.RenamerImpl.processEntry(RenamerImpl.java:215)
at LAYER SERVICE/org.sinytra.connector@2.0.0-beta.3+1.21.1+dev-g6ae9c7f-full/reloc.net.minecraftforge.fart.internal.AsyncHelper.lambda$null$2(AsyncHelper.java:40)
at java.base/java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1456)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
Looks like it's mistakenly trying to get the last element of an empty list.
It is, but I don't know how to fix it
Is there any progress? I can't write a mod because it is delayed by this bug... I'd also like to throw a pr that is also delayed because of this 😢
I will have a look as soon as I have time. If you'd like to speed things up, contributions are always welcome 😊
I'd like to, but I don't understand how to fix it
I need to add a parameter with index 0 (at the very beginning), but when I do this I get an error:
So I thought a great solution would be to use swap, and my code started to look like this:
It works, but the order of the arguments in WrapOperation hasn't changed, so I think the code that adds the parameters there works, but it can't swap them around: