1 package me.shedaniel.lightoverlay.fabric;
3 import io.github.prospector.modmenu.api.ConfigScreenFactory;
4 import io.github.prospector.modmenu.api.ModMenuApi;
5 import me.shedaniel.clothconfig2.api.ConfigBuilder;
6 import me.shedaniel.clothconfig2.api.ConfigCategory;
7 import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
8 import me.shedaniel.clothconfig2.gui.entries.IntegerSliderEntry;
9 import net.minecraft.client.gui.screen.Screen;
10 import net.minecraft.client.resource.language.I18n;
11 import net.minecraft.util.math.MathHelper;
13 import java.util.Optional;
15 public class LOModMenuEntry implements ModMenuApi {
17 public String getModId() {
18 return "lightoverlay";
22 public ConfigScreenFactory<?> getModConfigScreenFactory() {
23 return this::getConfigScreenByCloth;
26 public Screen getConfigScreenByCloth(Screen parent) {
27 ConfigBuilder builder = ConfigBuilder.create().setParentScreen(parent).setTitle("key.lightoverlay.category");
29 ConfigEntryBuilder eb = builder.entryBuilder();
30 ConfigCategory general = builder.getOrCreateCategory("config.lightoverlay.general");
31 general.addEntry(eb.startTextDescription("ยง7" + I18n.translate("description.lightoverlay.caching")).build());
32 general.addEntry(eb.startBooleanToggle("config.lightoverlay.caching", LightOverlay.caching).setDefaultValue(false).setSaveConsumer(bool -> LightOverlay.caching = bool).build());
33 general.addEntry(eb.startIntSlider("config.lightoverlay.reach", LightOverlay.reach, 1, 64).setDefaultValue(12).setTextGetter(integer -> "Reach: " + integer + " Blocks").setSaveConsumer(integer -> LightOverlay.reach = integer).build());
34 IntegerSliderEntry crossLevel = eb.startIntSlider("config.lightoverlay.crossLevel", LightOverlay.crossLevel, 0, 15).setDefaultValue(7).setTextGetter(integer -> "Cross Level: " + integer).setSaveConsumer(integer -> LightOverlay.crossLevel = integer).build();
35 general.addEntry(crossLevel);
36 general.addEntry(eb.startIntSlider("config.lightoverlay.secondaryLevel", LightOverlay.secondaryLevel, -1, 15)
37 .setErrorSupplier(integer -> {
38 if (integer >= 0 && integer >= crossLevel.getValue()) return Optional.of("Secondary Level cannot be higher than Cross Level!");
39 return Optional.empty();
40 }).setDefaultValue(-1).setTextGetter(integer -> integer < 0 ? "Off" : "Level: " + integer).setSaveConsumer(integer -> LightOverlay.secondaryLevel = integer).build());
41 general.addEntry(eb.startBooleanToggle("config.lightoverlay.showNumber", LightOverlay.showNumber).setDefaultValue(false).setSaveConsumer(bool -> LightOverlay.showNumber = bool).build());
42 general.addEntry(eb.startBooleanToggle("config.lightoverlay.smoothLines", LightOverlay.smoothLines).setDefaultValue(true).setSaveConsumer(bool -> LightOverlay.smoothLines = bool).build());
43 general.addEntry(eb.startBooleanToggle("config.lightoverlay.underwater", LightOverlay.underwater).setDefaultValue(false).setSaveConsumer(bool -> LightOverlay.underwater = bool).build());
44 general.addEntry(eb.startIntSlider("config.lightoverlay.lineWidth", MathHelper.floor(LightOverlay.lineWidth * 100), 100, 700).setDefaultValue(100).setTextGetter(integer -> "Light Width: " + LightOverlay.FORMAT.format(integer / 100d)).setSaveConsumer(integer -> LightOverlay.lineWidth = integer / 100f).build());
45 general.addEntry(eb.startColorField("config.lightoverlay.yellowColor", LightOverlay.yellowColor).setDefaultValue(0xFFFF00).setSaveConsumer(color -> LightOverlay.yellowColor = color).build());
46 general.addEntry(eb.startColorField("config.lightoverlay.redColor", LightOverlay.redColor).setDefaultValue(0xFF0000).setSaveConsumer(color -> LightOverlay.redColor = color).build());
47 general.addEntry(eb.startColorField("config.lightoverlay.secondaryColor", LightOverlay.secondaryColor).setDefaultValue(0x0000FF).setSaveConsumer(color -> LightOverlay.secondaryColor = color).build());
49 return builder.setSavingRunnable(() -> {
51 LightOverlay.saveConfig(LightOverlay.configFile);
52 } catch (Exception e) {
55 LightOverlay.loadConfig(LightOverlay.configFile);