]> git.lizzy.rs Git - LightOverlay.git/blob - fabric/src/main/java/me/shedaniel/lightoverlay/fabric/LOModMenuEntry.java
1.16
[LightOverlay.git] / fabric / src / main / java / me / shedaniel / lightoverlay / fabric / LOModMenuEntry.java
1 package me.shedaniel.lightoverlay.fabric;
2
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.text.LiteralText;
12 import net.minecraft.text.Text;
13 import net.minecraft.text.TranslatableText;
14 import net.minecraft.util.math.MathHelper;
15
16 import java.util.Optional;
17
18 public class LOModMenuEntry implements ModMenuApi {
19     @Override
20     public ConfigScreenFactory<?> getModConfigScreenFactory() {
21         return this::getConfigScreenByCloth;
22     }
23     
24     public Screen getConfigScreenByCloth(Screen parent) {
25         ConfigBuilder builder = ConfigBuilder.create().setParentScreen(parent).setTitle(new TranslatableText("key.lightoverlay.category"));
26         
27         ConfigEntryBuilder eb = builder.entryBuilder();
28         ConfigCategory general = builder.getOrCreateCategory(new TranslatableText("config.lightoverlay.general"));
29         general.addEntry(eb.startTextDescription(Text.method_30163("ยง7" + I18n.translate("description.lightoverlay.caching"))).build());
30         general.addEntry(eb.startBooleanToggle(new TranslatableText("config.lightoverlay.caching"), LightOverlay.caching).setDefaultValue(false).setSaveConsumer(bool -> LightOverlay.caching = bool).build());
31         general.addEntry(eb.startIntSlider(new TranslatableText("config.lightoverlay.reach"), LightOverlay.reach, 1, 64).setDefaultValue(12).setTextGetter(integer -> Text.method_30163("Reach: " + integer + " Blocks")).setSaveConsumer(integer -> LightOverlay.reach = integer).build());
32         IntegerSliderEntry crossLevel = eb.startIntSlider(new TranslatableText("config.lightoverlay.crossLevel"), LightOverlay.crossLevel, 0, 15).setDefaultValue(7).setTextGetter(integer -> Text.method_30163("Cross Level: " + integer)).setSaveConsumer(integer -> LightOverlay.crossLevel = integer).build();
33         general.addEntry(crossLevel);
34         general.addEntry(eb.startIntSlider(new TranslatableText("config.lightoverlay.secondaryLevel"), LightOverlay.secondaryLevel, -1, 15)
35                 .setErrorSupplier(integer -> {
36                     if (integer >= 0 && integer >= crossLevel.getValue()) return Optional.of(new LiteralText("Secondary Level cannot be higher than Cross Level!"));
37                     return Optional.empty();
38                 }).setDefaultValue(-1).setTextGetter(integer -> new LiteralText(integer < 0 ? "Off" : "Level: " + integer)).setSaveConsumer(integer -> LightOverlay.secondaryLevel = integer).build());
39         general.addEntry(eb.startBooleanToggle(new TranslatableText("config.lightoverlay.showNumber"), LightOverlay.showNumber).setDefaultValue(false).setSaveConsumer(bool -> LightOverlay.showNumber = bool).build());
40         general.addEntry(eb.startBooleanToggle(new TranslatableText("config.lightoverlay.smoothLines"), LightOverlay.smoothLines).setDefaultValue(true).setSaveConsumer(bool -> LightOverlay.smoothLines = bool).build());
41         general.addEntry(eb.startBooleanToggle(new TranslatableText("config.lightoverlay.underwater"), LightOverlay.underwater).setDefaultValue(false).setSaveConsumer(bool -> LightOverlay.underwater = bool).build());
42         general.addEntry(eb.startIntSlider(new TranslatableText("config.lightoverlay.lineWidth"), MathHelper.floor(LightOverlay.lineWidth * 100), 100, 700).setDefaultValue(100).setTextGetter(integer -> new LiteralText("Light Width: " + LightOverlay.FORMAT.format(integer / 100d))).setSaveConsumer(integer -> LightOverlay.lineWidth = integer / 100f).build());
43         general.addEntry(eb.startColorField(new TranslatableText("config.lightoverlay.yellowColor"), LightOverlay.yellowColor).setDefaultValue(0xFFFF00).setSaveConsumer(color -> LightOverlay.yellowColor = color).build());
44         general.addEntry(eb.startColorField(new TranslatableText("config.lightoverlay.redColor"), LightOverlay.redColor).setDefaultValue(0xFF0000).setSaveConsumer(color -> LightOverlay.redColor = color).build());
45         general.addEntry(eb.startColorField(new TranslatableText("config.lightoverlay.secondaryColor"), LightOverlay.secondaryColor).setDefaultValue(0x0000FF).setSaveConsumer(color -> LightOverlay.secondaryColor = color).build());
46         
47         return builder.setSavingRunnable(() -> {
48             try {
49                 LightOverlay.saveConfig(LightOverlay.configFile);
50             } catch (Exception e) {
51                 e.printStackTrace();
52             }
53             LightOverlay.loadConfig(LightOverlay.configFile);
54         }).build();
55     }
56 }