From 5df695cbbbe05d8b908068c87a1662c31c3978e3 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 4 Mar 2023 22:14:35 -0500 Subject: [PATCH 1/5] Add YUNG's Better Strongholds compat --- .../modernfix/structure/logic/EnderEyeItemLogic.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/embeddedt/modernfix/structure/logic/EnderEyeItemLogic.java b/src/main/java/org/embeddedt/modernfix/structure/logic/EnderEyeItemLogic.java index d60fce6f..97c38111 100644 --- a/src/main/java/org/embeddedt/modernfix/structure/logic/EnderEyeItemLogic.java +++ b/src/main/java/org/embeddedt/modernfix/structure/logic/EnderEyeItemLogic.java @@ -2,6 +2,7 @@ package org.embeddedt.modernfix.structure.logic; import com.google.common.collect.ImmutableSet; import net.minecraft.advancements.CriteriaTriggers; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.stats.Stats; @@ -9,6 +10,8 @@ import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.projectile.EyeOfEnder; import net.minecraft.world.item.EnderEyeItem; import net.minecraft.world.level.levelgen.feature.StructureFeature; +import net.minecraftforge.fml.ModList; +import net.minecraftforge.registries.ForgeRegistries; import org.embeddedt.modernfix.mixin.perf.async_locator.EyeOfEnderAccess; import org.embeddedt.modernfix.structure.AsyncLocator; @@ -16,9 +19,14 @@ public class EnderEyeItemLogic { private EnderEyeItemLogic() {} public static void locateAsync(ServerLevel level, Player player, EyeOfEnder eyeOfEnder, EnderEyeItem enderEyeItem) { + StructureFeature targetFeature; + if(ModList.get().isLoaded("betterstrongholds")) + targetFeature = ForgeRegistries.STRUCTURE_FEATURES.getValue(new ResourceLocation("betterstrongholds", "stronghold")); + else + targetFeature = StructureFeature.STRONGHOLD; AsyncLocator.locateChunkGen( level, - ImmutableSet.of(StructureFeature.STRONGHOLD), + ImmutableSet.of(targetFeature), player.blockPosition(), 100, false From 7a2b57221e99ba5bb632830a456687a053cae4c2 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 6 Mar 2023 09:12:04 -0500 Subject: [PATCH 2/5] Return to baking models on the main thread Mods... as usual. --- .../perf/faster_baking/ModelManagerMixin.java | 43 ++----------------- 1 file changed, 3 insertions(+), 40 deletions(-) diff --git a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelManagerMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelManagerMixin.java index 1a2283fc..3e485c35 100644 --- a/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelManagerMixin.java +++ b/src/main/java/org/embeddedt/modernfix/mixin/perf/faster_baking/ModelManagerMixin.java @@ -31,47 +31,10 @@ import java.util.Map; @Mixin(ModelManager.class) public class ModelManagerMixin { - @Shadow @Nullable private AtlasSet atlases; - @Shadow private Map bakedRegistry; - - @Shadow private Object2IntMap modelGroups; - - @Shadow @Final private TextureManager textureManager; - - @Shadow private BakedModel missingModel; - - @Shadow @Final private BlockModelShaper blockModelShaper; - - @Inject(method = "prepare(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)Lnet/minecraft/client/resources/model/ModelBakery;", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiling/ProfilerFiller;endTick()V"), locals = LocalCapture.CAPTURE_FAILHARD) - private void fireModelBakeEvent(ResourceManager pResourceManager, ProfilerFiller pProfiler, CallbackInfoReturnable cir, ModelLoader pObject) { - pProfiler.push("modelevent"); - if (this.atlases != null) { - Minecraft.getInstance().executeBlocking(() -> { - this.atlases.close(); - }); - } - this.atlases = ((IExtendedModelBakery)(Object)pObject).getUnfinishedAtlasSet(); - this.bakedRegistry = pObject.getBakedTopLevelModels(); - this.modelGroups = pObject.getModelGroups(); - this.missingModel = this.bakedRegistry.get(ModelBakery.MISSING_MODEL_LOCATION); - net.minecraftforge.client.ForgeHooksClient.onModelBake((ModelManager)(Object)this, this.bakedRegistry, pObject); - pProfiler.popPush("cache"); - this.blockModelShaper.rebuildCache(); - pProfiler.pop(); - } - - /** - * @author embeddedt - * @reason most of the code is moved to prepare() - */ - @Overwrite - protected void apply(ModelBakery pObject, ResourceManager pResourceManager, ProfilerFiller pProfiler) { - pProfiler.startTick(); - pProfiler.push("upload"); - this.atlases = pObject.uploadTextures(this.textureManager, pProfiler); - pProfiler.pop(); + @Inject(method = "apply(Lnet/minecraft/client/resources/model/ModelBakery;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V", + at = @At(value = "RETURN")) + private void allowBake(ModelBakery pObject, ResourceManager pResourceManager, ProfilerFiller pProfiler, CallbackInfo ci) { LazyBakedModel.allowBakeForFlags = true; - pProfiler.endTick(); } } From cb23ee5a54ffa5d0e611f1c89bd1d90dd1c9a1f7 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 6 Mar 2023 13:06:15 -0500 Subject: [PATCH 3/5] Add debug tool for weird crashes, off by default --- .../core/config/ModernFixEarlyConfig.java | 1 + .../direct_stack_trace/CrashReportMixin.java | 22 +++++++++++++++++++ src/main/resources/modernfix.mixins.json | 1 + 3 files changed, 24 insertions(+) create mode 100644 src/main/java/org/embeddedt/modernfix/mixin/feature/direct_stack_trace/CrashReportMixin.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 43baf26b..c6895807 100644 --- a/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java +++ b/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java @@ -20,6 +20,7 @@ public class ModernFixEarlyConfig { this.addMixinRule("feature.branding", true); this.addMixinRule("feature.measure_time", true); this.addMixinRule("feature.reduce_loading_screen_freezes", false); + this.addMixinRule("feature.direct_stack_trace", false); this.addMixinRule("perf.fast_registry_validation", true); this.addMixinRule("perf.use_integrated_resources", true); this.addMixinRule("perf.remove_biome_temperature_cache", true); diff --git a/src/main/java/org/embeddedt/modernfix/mixin/feature/direct_stack_trace/CrashReportMixin.java b/src/main/java/org/embeddedt/modernfix/mixin/feature/direct_stack_trace/CrashReportMixin.java new file mode 100644 index 00000000..2457a5b8 --- /dev/null +++ b/src/main/java/org/embeddedt/modernfix/mixin/feature/direct_stack_trace/CrashReportMixin.java @@ -0,0 +1,22 @@ +package org.embeddedt.modernfix.mixin.feature.direct_stack_trace; + +import net.minecraft.CrashReport; +import net.minecraft.CrashReportCategory; +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(CrashReport.class) +public class CrashReportMixin { + @Shadow @Final private Throwable exception; + + @Inject(method = "addCategory(Ljava/lang/String;I)Lnet/minecraft/CrashReportCategory;", at = @At(value = "INVOKE", target = "Ljava/io/PrintStream;println(Ljava/lang/String;)V")) + private void dumpStacktrace(String s, int i, CallbackInfoReturnable cir) { + new Exception("ModernFix crash stacktrace").printStackTrace(); + if(this.exception != null) + this.exception.printStackTrace(); + } +} diff --git a/src/main/resources/modernfix.mixins.json b/src/main/resources/modernfix.mixins.json index d42fa2d3..63666d7b 100644 --- a/src/main/resources/modernfix.mixins.json +++ b/src/main/resources/modernfix.mixins.json @@ -44,6 +44,7 @@ "feature.measure_time.SimpleReloadableResourceManagerMixin", "feature.measure_time.ProfiledReloadInstanceMixin", "feature.branding.BrandingControlMixin", + "feature.direct_stack_trace.CrashReportMixin", "perf.kubejs.TagIngredientJSMixin", "perf.kubejs.TagWrapperMixin", "perf.kubejs.RecipeEventJSMixin", From 50b11b0e1f96f7219f2ac061c65c859b61fafea2 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Mon, 6 Mar 2023 13:06:55 -0500 Subject: [PATCH 4/5] Turn off faster texture stitching by default, has random bugs --- .../embeddedt/modernfix/core/config/ModernFixEarlyConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c6895807..90744504 100644 --- a/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java +++ b/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java @@ -53,7 +53,7 @@ public class ModernFixEarlyConfig { this.addMixinRule("perf.cache_model_materials", true); this.addMixinRule("perf.datapack_reload_exceptions", true); this.addMixinRule("perf.async_locator", true); - this.addMixinRule("perf.faster_texture_stitching", true); + this.addMixinRule("perf.faster_texture_stitching", false); this.addMixinRule("perf.kubejs", true); this.addMixinRule("perf.faster_singleplayer_load", false); /* Keep this off if JEI isn't installed to prevent breaking vanilla gameplay */ From 519e9d40f89b9c2f7b9503b3787517f0edc28acf Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Tue, 7 Mar 2023 09:38:54 -0500 Subject: [PATCH 5/5] Turn off two features when incompatible mods are present Fixes BetterEnd crash Fixes #35 --- .../embeddedt/modernfix/core/config/ModernFixEarlyConfig.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 90744504..97881fa5 100644 --- a/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java +++ b/src/main/java/org/embeddedt/modernfix/core/config/ModernFixEarlyConfig.java @@ -65,8 +65,9 @@ public class ModernFixEarlyConfig { /* Mod compat */ disableIfModPresent("mixin.perf.thread_priorities", "smoothboot"); disableIfModPresent("mixin.perf.async_jei", "modernui"); - disableIfModPresent("mixin.perf.compress_biome_container", "chocolate"); + disableIfModPresent("mixin.perf.compress_biome_container", "chocolate", "betterendforge"); disableIfModPresent("mixin.bugfix.mc218112", "performant"); + disableIfModPresent("mixin.perf.faster_baking", "touhou_little_maid"); } private void disableIfModPresent(String configName, String... ids) {