Make config wrapping possible to disable

This commit is contained in:
embeddedt 2023-06-20 09:42:44 -04:00
parent 41b71c5e59
commit c1acdf1bb4
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
2 changed files with 6 additions and 0 deletions

View File

@ -163,6 +163,9 @@ public class ModernFixEarlyConfig {
this.scanForAndBuildMixinOptions(); this.scanForAndBuildMixinOptions();
mixinOptions.addAll(DEFAULT_SETTING_OVERRIDES.keySet()); mixinOptions.addAll(DEFAULT_SETTING_OVERRIDES.keySet());
if(!isFabric) {
mixinOptions.add("mixin.bugfix.fix_config_crashes");
}
for(String optionName : mixinOptions) { for(String optionName : mixinOptions) {
boolean defaultEnabled = DEFAULT_SETTING_OVERRIDES.getOrDefault(optionName, true); boolean defaultEnabled = DEFAULT_SETTING_OVERRIDES.getOrDefault(optionName, true);
this.options.putIfAbsent(optionName, new Option(optionName, defaultEnabled, false)); this.options.putIfAbsent(optionName, new Option(optionName, defaultEnabled, false));

View File

@ -5,6 +5,7 @@ import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.common.ObfuscationReflectionHelper; import net.minecraftforge.fml.common.ObfuscationReflectionHelper;
import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.config.ModConfig;
import org.embeddedt.modernfix.ModernFix; import org.embeddedt.modernfix.ModernFix;
import org.embeddedt.modernfix.core.ModernFixMixinPlugin;
import java.util.Optional; import java.util.Optional;
import java.util.function.Consumer; import java.util.function.Consumer;
@ -17,6 +18,8 @@ public class ConfigFixer {
* Should have no noticeable performance impact as config handlers are virtually instant. * Should have no noticeable performance impact as config handlers are virtually instant.
*/ */
public static void replaceConfigHandlers() { public static void replaceConfigHandlers() {
if(!ModernFixMixinPlugin.instance.isOptionEnabled("bugfix.fix_config_crashes.ConfigFixerMixin"))
return;
ModList.get().forEachModContainer((id, container) -> { ModList.get().forEachModContainer((id, container) -> {
try { try {
Optional<Consumer<ModConfig.ModConfigEvent>> configOpt = ObfuscationReflectionHelper.getPrivateValue(ModContainer.class, container, "configHandler"); Optional<Consumer<ModConfig.ModConfigEvent>> configOpt = ObfuscationReflectionHelper.getPrivateValue(ModContainer.class, container, "configHandler");