Respackopts/src/main/java/io/gitlab/jfronny/respackopts/integration/ModMenuCompat.java

71 lines
3.8 KiB
Java
Raw Normal View History

2020-12-28 12:12:59 +01:00
package io.gitlab.jfronny.respackopts.integration;
2020-11-24 22:04:13 +01:00
2021-02-15 11:44:59 +01:00
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import io.gitlab.jfronny.respackopts.util.MetaCache;
2020-12-28 12:12:59 +01:00
import io.gitlab.jfronny.respackopts.Respackopts;
2021-11-14 15:37:01 +01:00
import io.gitlab.jfronny.respackopts.model.ConfigFile;
import io.gitlab.jfronny.respackopts.model.enums.PackReloadType;
2020-11-24 22:04:13 +01:00
import me.shedaniel.clothconfig2.api.ConfigBuilder;
import me.shedaniel.clothconfig2.api.ConfigCategory;
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
import net.minecraft.client.gui.screen.FatalErrorScreen;
import net.minecraft.text.TranslatableText;
2020-12-28 12:12:59 +01:00
public class ModMenuCompat implements ModMenuApi {
2020-11-24 22:04:13 +01:00
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return parent -> {
try {
ConfigBuilder builder;
builder = ConfigBuilder.create()
.setParentScreen(parent)
.setTitle(new TranslatableText("respackopts.mainconfig"));
ConfigEntryBuilder entryBuilder = builder.entryBuilder();
PackReloadType.Aggregator agg = new PackReloadType.Aggregator();
builder.setSavingRunnable(() -> {
2021-10-21 18:06:09 +02:00
if (Respackopts.CONFIG.debugLogs) Respackopts.LOGGER.info("ModMenuCompat SavingRunnable " + agg.get());
Respackopts.CONFIG.save();
MetaCache.save();
if (agg.get() == PackReloadType.Resource) {
DashLoaderCompat.requestForceReload();
Respackopts.forceReloadResources();
}
});
2021-09-15 18:37:07 +02:00
//Respackopts config screen
ConfigFile defaultConfig = new ConfigFile();
ConfigCategory mainConfig = builder.getOrCreateCategory(new TranslatableText("respackopts.mainconfig"));
mainConfig.addEntry(
entryBuilder.startBooleanToggle(new TranslatableText("respackopts.mainconfig.debugCommands"), Respackopts.CONFIG.debugCommands)
2021-09-15 18:37:07 +02:00
.setDefaultValue(defaultConfig.debugCommands)
.setSaveConsumer(b -> Respackopts.CONFIG.debugCommands = b)
2021-09-15 18:37:07 +02:00
.build()
);
mainConfig.addEntry(
entryBuilder.startBooleanToggle(new TranslatableText("respackopts.mainconfig.debugLogs"), Respackopts.CONFIG.debugLogs)
2021-09-15 18:37:07 +02:00
.setDefaultValue(defaultConfig.debugLogs)
.setSaveConsumer(b -> Respackopts.CONFIG.debugLogs = b)
2021-09-15 18:37:07 +02:00
.build()
);
mainConfig.addEntry(
entryBuilder.startBooleanToggle(new TranslatableText("respackopts.mainconfig.dashloaderCompat"), Respackopts.CONFIG.dashloaderCompat)
2021-09-15 18:37:07 +02:00
.requireRestart()
.setDefaultValue(defaultConfig.dashloaderCompat)
.setSaveConsumer(b -> Respackopts.CONFIG.dashloaderCompat = b)
2021-09-15 18:37:07 +02:00
.build()
);
//Pack config screens
MetaCache.forEach((id, conf) -> {
ConfigCategory config = builder.getOrCreateCategory(new TranslatableText((MetaCache.getMeta(id).version >= 5 ? "rpo." : "respackopts.title.") + id));
Respackopts.GUI_FACTORY.buildCategory(conf, id, config::addEntry, agg, entryBuilder, "");
2020-11-24 22:04:13 +01:00
});
return builder.build();
}
catch (Throwable t) {
t.printStackTrace();
return new FatalErrorScreen(new TranslatableText("respackopts.loadFailed"), new TranslatableText("respackopts.loadError"));
}
};
}
}