diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/BootstrapClientMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/BootstrapClientMixin.java new file mode 100644 index 00000000..d1706ba7 --- /dev/null +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/core/BootstrapClientMixin.java @@ -0,0 +1,22 @@ +package org.embeddedt.modernfix.forge.mixin.core; + +import net.minecraft.client.renderer.RenderType; +import net.minecraft.server.Bootstrap; +import org.embeddedt.modernfix.annotation.ClientOnlyMixin; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +@Mixin(Bootstrap.class) +@ClientOnlyMixin +public class BootstrapClientMixin { + /** + * Hack to workaround RenderStateShard deadlock (by loading it early on a single thread). We use validate + * here to ensure Forge registries are initialized. + */ + @Inject(method = "validate", at = @At("HEAD")) + private static void loadClientClasses(CallbackInfo ci) { + RenderType.solid(); + } +}