LibJF/libjf-devutil/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/ArgumentTypesMixin.java

26 lines
1.7 KiB
Java
Raw Normal View History

package io.gitlab.jfronny.libjf.devutil.mixin;
2023-03-11 21:24:59 +01:00
import com.mojang.brigadier.arguments.ArgumentType;
import net.minecraft.command.argument.*;
2023-03-11 21:24:59 +01:00
import net.minecraft.command.argument.serialize.ArgumentSerializer;
2022-12-07 19:54:35 +01:00
import net.minecraft.registry.Registry;
2023-03-11 21:24:59 +01:00
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 <A extends ArgumentType<?>, T extends ArgumentSerializer.ArgumentTypeProperties<A>> ArgumentSerializer<A, T> register(Registry<ArgumentSerializer<?, ?>> registry, String id, Class<? extends A> clazz, ArgumentSerializer<A, T> serializer) {
throw new RuntimeException("Mixin not applied properly");
}
2022-12-07 19:54:35 +01:00
@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 <A extends ArgumentType<?>, T extends ArgumentSerializer.ArgumentTypeProperties<A>> ArgumentSerializer<A, T> libjf$redirectRegister(Registry<ArgumentSerializer<?, ?>> registry, String id, Class<? extends A> clazz, ArgumentSerializer<A, T> serializer) {
if (clazz != TestFunctionArgumentType.class && clazz != TestClassArgumentType.class)
return register(registry, id, clazz, serializer);
return null;
}
}