No redirect on super calls (#177)

This commit is contained in:
IzzelAliz 2021-02-28 15:39:27 +08:00
parent 6c17585071
commit 3f5ae63382
2 changed files with 8 additions and 1 deletions

View File

@ -36,7 +36,7 @@ public abstract class ItemStackMixin extends CapabilityProvider<ItemStack> imple
@Shadow @Deprecated private Item item;
@Shadow private int count;
@Shadow(remap = false) private CompoundNBT capNBT;
@Mutable @Shadow @Final private IRegistryDelegate<Item> delegate;
@Mutable @Shadow(remap = false) @Final private IRegistryDelegate<Item> delegate;
// @formatter:on
protected ItemStackMixin(Class<ItemStack> baseClass) {

View File

@ -42,6 +42,7 @@ import java.util.Arrays;
import java.util.Collection;
import java.util.ListIterator;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
public class ArclightRedirectAdapter implements PluginTransformer {
@ -162,6 +163,12 @@ public class ArclightRedirectAdapter implements PluginTransformer {
for (AbstractInsnNode insnNode : methodNode.instructions) {
if (insnNode instanceof MethodInsnNode) {
MethodInsnNode from = (MethodInsnNode) insnNode;
if (from.getOpcode() == Opcodes.INVOKESPECIAL
&& Objects.equals(from.owner, classNode.superName)
&& Objects.equals(from.name, methodNode.name)
&& Objects.equals(from.desc, methodNode.desc)) {
continue;
}
process(from, methodNode.instructions, remapper, classNode);
} else if (insnNode.getOpcode() == Opcodes.INVOKEDYNAMIC) {
InvokeDynamicInsnNode invokeDynamic = (InvokeDynamicInsnNode) insnNode;