From b56765831883328305f58ebe898f0931bcd12f64 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 14 Oct 2023 13:18:44 -0400 Subject: [PATCH 1/4] Disable async_jei by default, to match newer versions There have been a couple isolated reports of weird JEI behavior, and this might be why --- .../embeddedt/modernfix/core/config/ModernFixEarlyConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 5d971877..7cf6deac 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 { private static final ImmutableMap DEFAULT_SETTING_OVERRIDES = new DefaultSettingMapBuilder() .put("mixin.perf.dynamic_resources", false) + .putConditionally(() -> !isFabric, "mixin.perf.async_jei", false) .put("mixin.perf.dynamic_sounds", false) .put("mixin.perf.reuse_datapacks", false) .put("mixin.perf.dynamic_block_codecs", false) @@ -210,7 +211,6 @@ public class ModernFixEarlyConfig { /* Mod compat */ disableIfModPresent("mixin.perf.thread_priorities", "smoothboot", "threadtweak"); disableIfModPresent("mixin.perf.boost_worker_count", "smoothboot", "threadtweak"); - disableIfModPresent("mixin.perf.async_jei", "modernui"); disableIfModPresent("mixin.perf.compress_biome_container", "chocolate", "betterendforge" ,"skyblockbuilder", "modern_beta"); disableIfModPresent("mixin.bugfix.mc218112", "performant"); disableIfModPresent("mixin.bugfix.remove_block_chunkloading", "performant"); From a5b57339652a29a62fffb074122ad035a04681dd Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Sat, 14 Oct 2023 13:24:26 -0400 Subject: [PATCH 2/4] Change permanentOverrides to ConcurrentHashMap Should help address thread contention noted while profiling --- .../DynamicBakedModelProvider.java | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java index 456ceea7..36215779 100644 --- a/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java +++ b/common/src/main/java/org/embeddedt/modernfix/dynamicresources/DynamicBakedModelProvider.java @@ -2,7 +2,6 @@ package org.embeddedt.modernfix.dynamicresources; import com.google.common.collect.ImmutableSet; import com.mojang.math.Transformation; -import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.ItemOverrides; import net.minecraft.client.renderer.block.model.ItemTransforms; @@ -22,6 +21,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.BiFunction; import java.util.stream.Collectors; @@ -85,7 +85,7 @@ public class DynamicBakedModelProvider implements Map, BakedModel> cache) { this.bakery = bakery; this.bakedCache = cache; - this.permanentOverrides = Collections.synchronizedMap(new Object2ObjectOpenHashMap<>()); + this.permanentOverrides = new ConcurrentHashMap<>(); if(currentInstance == null) currentInstance = this; } @@ -109,12 +109,12 @@ public class DynamicBakedModelProvider implements Map Date: Sat, 14 Oct 2023 19:17:00 -0700 Subject: [PATCH 3/4] Dynamic sounds code cleanup (#264) --- .../perf/dynamic_sounds/SoundBufferLibraryMixin.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_sounds/SoundBufferLibraryMixin.java b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_sounds/SoundBufferLibraryMixin.java index 921da3ef..6d5da6f6 100644 --- a/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_sounds/SoundBufferLibraryMixin.java +++ b/common/src/main/java/org/embeddedt/modernfix/common/mixin/perf/dynamic_sounds/SoundBufferLibraryMixin.java @@ -37,11 +37,11 @@ public abstract class SoundBufferLibraryMixin { if(notification.getCause() == RemovalCause.REPLACED && notification.getValue() == cache.get(notification.getKey())) return; notification.getValue().thenAccept(SoundBuffer::discardAlBuffer); - if(debugDynamicSoundLoading) { - K k = notification.getKey(); - if(k == null) - return; - ModernFix.LOGGER.warn("Evicted sound {}", k); - } + if(!debugDynamicSoundLoading) + return; + K k = notification.getKey(); + if(k == null) + return; + ModernFix.LOGGER.warn("Evicted sound {}", k); } } From 6740857274367ae67f5876941596c55dc15db77a Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Tue, 24 Oct 2023 12:45:13 -0400 Subject: [PATCH 4/4] Fix unsanitized input being passed to TinyFD --- .../WorldGenSettingsComponentMixin.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/file_dialog_title/WorldGenSettingsComponentMixin.java diff --git a/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/file_dialog_title/WorldGenSettingsComponentMixin.java b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/file_dialog_title/WorldGenSettingsComponentMixin.java new file mode 100644 index 00000000..c273d3eb --- /dev/null +++ b/forge/src/main/java/org/embeddedt/modernfix/forge/mixin/bugfix/file_dialog_title/WorldGenSettingsComponentMixin.java @@ -0,0 +1,18 @@ +package org.embeddedt.modernfix.forge.mixin.bugfix.file_dialog_title; + +import net.minecraft.client.gui.screens.worldselection.WorldGenSettingsComponent; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(WorldGenSettingsComponent.class) +public class WorldGenSettingsComponentMixin { + /** + * @author embeddedt + * @reason Do not provide resource pack-controlled string to TinyFD + */ + @ModifyArg(method = "*", at = @At(value = "INVOKE", target = "Lorg/lwjgl/util/tinyfd/TinyFileDialogs;tinyfd_openFileDialog(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Lorg/lwjgl/PointerBuffer;Ljava/lang/CharSequence;Z)Ljava/lang/String;", remap = false), index = 0) + private CharSequence sanitizeTitleString(CharSequence original) { + return "Select settings file (.json)"; + } +}