package io.gitlab.jfronny.libjf.devutil.mixin; import com.mojang.brigadier.arguments.ArgumentType; import net.minecraft.command.argument.*; import net.minecraft.command.argument.serialize.ArgumentSerializer; import net.minecraft.registry.Registry; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; @Mixin(ArgumentTypes.class) public abstract class ArgumentTypesMixin { @Shadow private static , T extends ArgumentSerializer.ArgumentTypeProperties> ArgumentSerializer register(Registry> registry, String id, Class clazz, ArgumentSerializer serializer) { throw new RuntimeException("Mixin not applied properly"); } @Redirect(method = "register(Lnet/minecraft/registry/Registry;)Lnet/minecraft/command/argument/serialize/ArgumentSerializer;", at = @At(value = "INVOKE", target = "Lnet/minecraft/command/argument/ArgumentTypes;register(Lnet/minecraft/registry/Registry;Ljava/lang/String;Ljava/lang/Class;Lnet/minecraft/command/argument/serialize/ArgumentSerializer;)Lnet/minecraft/command/argument/serialize/ArgumentSerializer;")) private static , T extends ArgumentSerializer.ArgumentTypeProperties> ArgumentSerializer libjf$redirectRegister(Registry> registry, String id, Class clazz, ArgumentSerializer serializer) { if (clazz != TestFunctionArgumentType.class && clazz != TestClassArgumentType.class) return register(registry, id, clazz, serializer); return null; } }