From f25ecf337dfaca458df1abe88c9564218c0358a7 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Tue, 30 Jan 2024 15:34:19 -0500 Subject: [PATCH 1/2] Update NeoForge version --- gradle.properties | 2 +- .../mixin/perf/dynamic_resources/ForgeHooksClientMixin.java | 2 +- neoforge/src/main/resources/META-INF/mods.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 002eea63..75eb5a18 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ mixinextras_version=0.3.2 mod_id=modernfix minecraft_version=1.20.4 enabled_platforms=fabric,neoforge -forge_version=20.4.70-beta +forge_version=20.4.132-beta # parchment_version=2023.07.09 refined_storage_version=4392788 jei_version=16.0.0.28 diff --git a/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/perf/dynamic_resources/ForgeHooksClientMixin.java b/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/perf/dynamic_resources/ForgeHooksClientMixin.java index 0eb15bc4..01ee682b 100644 --- a/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/perf/dynamic_resources/ForgeHooksClientMixin.java +++ b/neoforge/src/main/java/org/embeddedt/modernfix/neoforge/mixin/perf/dynamic_resources/ForgeHooksClientMixin.java @@ -34,7 +34,7 @@ public class ForgeHooksClientMixin { Method acceptEv = ObfuscationReflectionHelper.findMethod(ModContainer.class, "acceptEvent", Event.class); ModList.get().forEachModContainer((id, mc) -> { Map newRegistry = helper.wrapRegistry(id); - ModelEvent.ModifyBakingResult postedEvent = new ModelEvent.ModifyBakingResult(newRegistry, bakeEvent.getModelBakery()); + ModelEvent.ModifyBakingResult postedEvent = new ModelEvent.ModifyBakingResult(newRegistry, bakeEvent.getTextureGetter(), bakeEvent.getModelBakery()); Stopwatch timer = Stopwatch.createStarted(); try { acceptEv.invoke(mc, postedEvent); diff --git a/neoforge/src/main/resources/META-INF/mods.toml b/neoforge/src/main/resources/META-INF/mods.toml index 17114291..84fd1d64 100644 --- a/neoforge/src/main/resources/META-INF/mods.toml +++ b/neoforge/src/main/resources/META-INF/mods.toml @@ -47,7 +47,7 @@ modId = "neoforge" #mandatory # Does this dependency have to exist - if not, ordering below must be specified type = "required" #mandatory # The version range of the dependency -versionRange = "[20.4.70-beta,)" #mandatory +versionRange = "[20.4.132-beta,)" #mandatory # An ordering relationship for the dependency - BEFORE or AFTER required if the relationship is not mandatory ordering = "NONE" # Side this dependency is applied on - BOTH, CLIENT or SERVER From 2c963888b5cd1c14c434b50d1678a509a7ba0577 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Tue, 30 Jan 2024 15:47:16 -0500 Subject: [PATCH 2/2] Don't run mappings clearer on FL 0.15+, it's not needed Related: #329 --- .../fabric/mappings/MappingsClearer.java | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mappings/MappingsClearer.java b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mappings/MappingsClearer.java index 75341b3f..30af2701 100644 --- a/fabric/src/main/java/org/embeddedt/modernfix/fabric/mappings/MappingsClearer.java +++ b/fabric/src/main/java/org/embeddedt/modernfix/fabric/mappings/MappingsClearer.java @@ -1,7 +1,6 @@ package org.embeddedt.modernfix.fabric.mappings; -import net.fabricmc.loader.api.FabricLoader; -import net.fabricmc.loader.api.MappingResolver; +import net.fabricmc.loader.api.*; import net.fabricmc.loader.impl.launch.FabricLauncherBase; import net.fabricmc.loader.impl.launch.MappingConfiguration; import net.fabricmc.mapping.tree.TinyMappingFactory; @@ -10,16 +9,34 @@ import org.embeddedt.modernfix.util.CommonModUtil; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.util.Map; +import java.util.Optional; /** * Designed for Fabric Loader 0.14.x, probably has issues on other versions. The entire thing is wrapped in a try-catch * so it should never cause crashes, just fail to work. */ public class MappingsClearer { + private static final Version LOADER_015; + + static { + try { + LOADER_015 = Version.parse("0.15.0"); + } catch (VersionParsingException e) { + throw new RuntimeException(e); + } + } + @SuppressWarnings("unchecked") public static void clear() { if(FabricLoader.getInstance().isDevelopmentEnvironment()) return; // never do this in dev + + Optional loaderVersion = FabricLoader.getInstance().getModContainer("fabricloader").map(m -> m.getMetadata().getVersion()); + if(!loaderVersion.isPresent() || LOADER_015.compareTo(loaderVersion.get()) < 0) { + // Fabric Loader is probably too new, abort + return; + } + CommonModUtil.runWithoutCrash(() -> { // For now, force the mapping resolver to be initialized. Fabric Loader 0.14.23 stops initializing it early, // which means that we actually need to keep the TinyMappingFactory tree around for initialization to work