[devutil] Fix issue when running serverside

This commit is contained in:
Johannes Frohnmeyer 2022-06-07 19:51:00 +02:00
parent 1695679e3d
commit c63d637d1f
Signed by: Johannes
GPG Key ID: E76429612C2929F4
4 changed files with 40 additions and 1 deletions

View File

@ -13,4 +13,4 @@ modrinth_optional_dependencies=P7dR8mSH
curseforge_id=482600
curseforge_optional_dependencies=fabric-api
commons_version=2022.6.7+11-38-13
commons_version=2022.6.7+17-43-1

View File

@ -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 <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");
}
@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 <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;
}
}

View File

@ -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 = "<init>(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
}
}

View File

@ -4,6 +4,8 @@
"package": "io.gitlab.jfronny.libjf.devutil.mixin",
"compatibilityLevel": "JAVA_16",
"mixins": [
"ArgumentTypesMixin",
"CommandManagerMixin"
],
"client": [
"MinecraftClientMixin"