diff --git a/gradle.properties b/gradle.properties index c597c7b..b3dd17e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,4 +13,4 @@ modrinth_optional_dependencies=P7dR8mSH curseforge_id=482600 curseforge_optional_dependencies=fabric-api -commons_version=2022.6.7+11-38-13 \ No newline at end of file +commons_version=2022.6.7+17-43-1 \ No newline at end of file diff --git a/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/ArgumentTypesMixin.java b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/ArgumentTypesMixin.java new file mode 100644 index 0000000..2fcd386 --- /dev/null +++ b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/ArgumentTypesMixin.java @@ -0,0 +1,23 @@ +package io.gitlab.jfronny.libjf.devutil.mixin; + +import com.mojang.brigadier.arguments.*; +import net.minecraft.command.argument.*; +import net.minecraft.command.argument.serialize.*; +import net.minecraft.util.registry.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; + +@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/util/registry/Registry;)Lnet/minecraft/command/argument/serialize/ArgumentSerializer;", at = @At(value = "INVOKE", target = "Lnet/minecraft/command/argument/ArgumentTypes;register(Lnet/minecraft/util/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; + } +} diff --git a/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/CommandManagerMixin.java b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/CommandManagerMixin.java new file mode 100644 index 0000000..5b3a7f2 --- /dev/null +++ b/libjf-devutil-v0/src/main/java/io/gitlab/jfronny/libjf/devutil/mixin/CommandManagerMixin.java @@ -0,0 +1,14 @@ +package io.gitlab.jfronny.libjf.devutil.mixin; + +import com.mojang.brigadier.*; +import net.minecraft.server.command.*; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.*; + +@Mixin(CommandManager.class) +public class CommandManagerMixin { + @Redirect(method = "(Lnet/minecraft/server/command/CommandManager$RegistrationEnvironment;Lnet/minecraft/command/CommandRegistryAccess;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/command/TestCommand;register(Lcom/mojang/brigadier/CommandDispatcher;)V")) + private void register(CommandDispatcher dispatcher) { + // Ignored: would cause an issue + } +} diff --git a/libjf-devutil-v0/src/main/resources/libjf-devutil-v0.mixins.json b/libjf-devutil-v0/src/main/resources/libjf-devutil-v0.mixins.json index e7b5b77..e6160a6 100644 --- a/libjf-devutil-v0/src/main/resources/libjf-devutil-v0.mixins.json +++ b/libjf-devutil-v0/src/main/resources/libjf-devutil-v0.mixins.json @@ -4,6 +4,8 @@ "package": "io.gitlab.jfronny.libjf.devutil.mixin", "compatibilityLevel": "JAVA_16", "mixins": [ + "ArgumentTypesMixin", + "CommandManagerMixin" ], "client": [ "MinecraftClientMixin"