diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/feature/disable_unihex_font/UnihexProviderDefinitionMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/feature/disable_unihex_font/UnihexProviderDefinitionMixin.java new file mode 100644 index 00000000..bb5aebb7 --- /dev/null +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/feature/disable_unihex_font/UnihexProviderDefinitionMixin.java @@ -0,0 +1,35 @@ +package org.embeddedt.modernfix.common.mixin.feature.disable_unihex_font; + +import com.mojang.blaze3d.font.GlyphProvider; +import com.mojang.datafixers.util.Either; +import net.minecraft.client.gui.font.CodepointMap; +import net.minecraft.client.gui.font.providers.GlyphProviderDefinition; +import net.minecraft.client.gui.font.providers.UnihexProvider; +import net.minecraft.server.packs.resources.ResourceManager; +import org.embeddedt.modernfix.ModernFix; +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.CallbackInfoReturnable; + +import java.io.IOException; +import java.lang.reflect.Constructor; + +@Mixin(UnihexProvider.Definition.class) +public class UnihexProviderDefinitionMixin { + @Inject(method = "unpack", at = @At("HEAD"), cancellable = true) + private void disableProvider(CallbackInfoReturnable> cir) { + cir.setReturnValue(Either.left(this::mfix$loadEmpty)); + } + + private GlyphProvider mfix$loadEmpty(ResourceManager resourceManager) throws IOException { + try { + ModernFix.LOGGER.warn("Unihex provider is disabled, a number of Unicode characters will likely not render"); + Constructor constructor = UnihexProvider.class.getDeclaredConstructor(CodepointMap.class); + constructor.setAccessible(true); + return constructor.newInstance(new CodepointMap<>(Object[]::new, Object[][]::new)); + } catch(ReflectiveOperationException e) { + throw new IOException("Failed to create empty loader", e); + } + } +} diff --git a/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java b/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java index cc515a34..a3553563 100644 --- a/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java +++ b/common/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java @@ -161,6 +161,7 @@ public class ModernFixEarlyConfig { .put("mixin.feature.integrated_server_watchdog", true) .put("mixin.perf.faster_item_rendering", false) .put("mixin.feature.spam_thread_dump", false) + .put("mixin.feature.disable_unihex_font", false) .put("mixin.feature.snapshot_easter_egg", true) .put("mixin.feature.warn_missing_perf_mods", true) .put("mixin.feature.spark_profile_launch", false)