71 lines
3.8 KiB
Java
71 lines
3.8 KiB
Java
package io.gitlab.jfronny.respackopts.integration;
|
|
|
|
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
|
|
import com.terraformersmc.modmenu.api.ModMenuApi;
|
|
import io.gitlab.jfronny.respackopts.util.MetaCache;
|
|
import io.gitlab.jfronny.respackopts.Respackopts;
|
|
import io.gitlab.jfronny.respackopts.model.ConfigFile;
|
|
import io.gitlab.jfronny.respackopts.model.enums.PackReloadType;
|
|
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;
|
|
|
|
public class ModMenuCompat implements ModMenuApi {
|
|
@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(() -> {
|
|
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();
|
|
}
|
|
});
|
|
//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)
|
|
.setDefaultValue(defaultConfig.debugCommands)
|
|
.setSaveConsumer(b -> Respackopts.CONFIG.debugCommands = b)
|
|
.build()
|
|
);
|
|
mainConfig.addEntry(
|
|
entryBuilder.startBooleanToggle(new TranslatableText("respackopts.mainconfig.debugLogs"), Respackopts.CONFIG.debugLogs)
|
|
.setDefaultValue(defaultConfig.debugLogs)
|
|
.setSaveConsumer(b -> Respackopts.CONFIG.debugLogs = b)
|
|
.build()
|
|
);
|
|
mainConfig.addEntry(
|
|
entryBuilder.startBooleanToggle(new TranslatableText("respackopts.mainconfig.dashloaderCompat"), Respackopts.CONFIG.dashloaderCompat)
|
|
.requireRestart()
|
|
.setDefaultValue(defaultConfig.dashloaderCompat)
|
|
.setSaveConsumer(b -> Respackopts.CONFIG.dashloaderCompat = b)
|
|
.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, "");
|
|
});
|
|
return builder.build();
|
|
}
|
|
catch (Throwable t) {
|
|
t.printStackTrace();
|
|
return new FatalErrorScreen(new TranslatableText("respackopts.loadFailed"), new TranslatableText("respackopts.loadError"));
|
|
}
|
|
};
|
|
}
|
|
}
|