From af63b3ed1147af98686365427892f80ec32751d7 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 11 Feb 2023 12:26:45 -0500 Subject: [PATCH] Suppress exception stacktraces for datapack reloads by default --- .../core/config/ModernFixEarlyConfig.java | 1 + .../LootTableManagerMixin.java | 16 ++++++++++++++++ .../RecipeManagerMixin.java | 15 +++++++++++++++ src/main/resources/modernfix.mixins.json | 2 ++ 4 files changed, 34 insertions(+) create mode 100644 src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/LootTableManagerMixin.java create mode 100644 src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/RecipeManagerMixin.java diff --git a/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java b/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java index a5a17c42..f1b5a714 100644 --- a/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java +++ b/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java @@ -41,6 +41,7 @@ public class ModernFixEarlyConfig { this.addMixinRule("perf.cache_blockstate_cache_arrays", true); this.addMixinRule("perf.faster_baking", true); this.addMixinRule("perf.cache_model_materials", true); + this.addMixinRule("perf.datapack_reload_exceptions", true); /* Keep this off if JEI isn't installed to prevent breaking vanilla gameplay */ this.addMixinRule("perf.blast_search_trees", FMLLoader.getLoadingModList().getModFileById("jei") != null); this.addMixinRule("safety", true); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/LootTableManagerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/LootTableManagerMixin.java new file mode 100644 index 00000000..80c8279b --- /dev/null +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/LootTableManagerMixin.java @@ -0,0 +1,16 @@ +package org.embeddedt.modernfix.mixin.perf.datapack_reload_exceptions; + +import net.minecraft.loot.LootTableManager; +import org.apache.logging.log4j.Logger; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(LootTableManager.class) +public class LootTableManagerMixin { + @Redirect(method = "*(Lnet/minecraft/resources/IResourceManager;Lcom/google/common/collect/ImmutableMap$Builder;Lnet/minecraft/util/ResourceLocation;Lcom/google/gson/JsonElement;)V", + at = @At(value = "INVOKE", target = "Lorg/apache/logging/log4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V")) + private void logWithoutStacktrace(Logger instance, String s, Object location, Object exc) { + instance.error(s + ": {}", location, exc.toString()); + } +} diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/RecipeManagerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/RecipeManagerMixin.java new file mode 100644 index 00000000..035d4df6 --- /dev/null +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/datapack_reload_exceptions/RecipeManagerMixin.java @@ -0,0 +1,15 @@ +package org.embeddedt.modernfix.mixin.perf.datapack_reload_exceptions; + +import net.minecraft.item.crafting.RecipeManager; +import org.apache.logging.log4j.Logger; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +@Mixin(RecipeManager.class) +public class RecipeManagerMixin { + @Redirect(method = "apply(Ljava/util/Map;Lnet/minecraft/resources/IResourceManager;Lnet/minecraft/profiler/IProfiler;)V", at = @At(value = "INVOKE", target = "Lorg/apache/logging/log4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V")) + private void silenceException(Logger instance, String s, Object location, Object exc) { + instance.error(s + ": {}", location, exc.toString()); + } +} diff --git a/src/main/resources/modernfix.mixins.json b/src/main/resources/modernfix.mixins.json index 9b30ecfa..84103317 100644 --- a/src/main/resources/modernfix.mixins.json +++ b/src/main/resources/modernfix.mixins.json @@ -25,6 +25,8 @@ "perf.compress_biome_container.MixinBiomeContainer", "perf.nuke_empty_chunk_sections.MixinChunk", "perf.cache_blockstate_cache_arrays.AbstractBlockStateCacheMixin", + "perf.datapack_reload_exceptions.LootTableManagerMixin", + "perf.datapack_reload_exceptions.RecipeManagerMixin", "feature.measure_time.BootstrapMixin" ], "client": [