aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/shcm
diff options
context:
space:
mode:
authorSHsuperCM <shsupercm@gmail.com>2022-01-21 15:50:24 +0200
committerSHsuperCM <shsupercm@gmail.com>2022-01-21 17:43:35 +0200
commitc48e23a8949eaa89d06908201357b53fa7eaedbe (patch)
treeadd591602e2e2b93b702ed7e5c8e9fb3ea95e091 /src/main/java/shcm
parent897172bde9128da47181a6db6c1ff4885081ba8d (diff)
downloadCITResewn-c48e23a8949eaa89d06908201357b53fa7eaedbe.tar.gz
CITResewn-c48e23a8949eaa89d06908201357b53fa7eaedbe.tar.bz2
CITResewn-c48e23a8949eaa89d06908201357b53fa7eaedbe.zip
Added config/screen for defaults
Diffstat (limited to 'src/main/java/shcm')
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnConfigScreenFactory.java21
-rw-r--r--src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnModMenu.java9
-rw-r--r--src/main/java/shcm/shsupercm/util/logic/Loops.java60
3 files changed, 21 insertions, 69 deletions
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnConfigScreenFactory.java b/src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnConfigScreenFactory.java
index 33f4950..57ae2c3 100644
--- a/src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnConfigScreenFactory.java
+++ b/src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnConfigScreenFactory.java
@@ -3,12 +3,16 @@ package shcm.shsupercm.fabric.citresewn.config;
import me.shedaniel.clothconfig2.api.ConfigBuilder;
import me.shedaniel.clothconfig2.api.ConfigCategory;
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
+import net.fabricmc.loader.api.FabricLoader;
+import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.text.LiteralText;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Formatting;
+import java.util.function.Function;
+
public class CITResewnConfigScreenFactory {
public static Screen create(Screen parent) {
CITResewnConfig currentConfig = CITResewnConfig.INSTANCE, defaultConfig = new CITResewnConfig();
@@ -32,6 +36,21 @@ public class CITResewnConfigScreenFactory {
.setDefaultValue(defaultConfig.enabled)
.build());
+ class CurrentScreen { Screen screen; boolean prevToggle = false; } final CurrentScreen currentScreen = new CurrentScreen();
+ category.addEntry(entryBuilder.startBooleanToggle(new TranslatableText("config.citresewn.defaults.title"), false)
+ .setTooltip(new TranslatableText("config.citresewn.defaults.tooltip"))
+ .setYesNoTextSupplier((b) -> {
+ if (b != currentScreen.prevToggle) {
+ //noinspection unchecked
+ MinecraftClient.getInstance().setScreen((Screen) FabricLoader.getInstance().getEntrypoints("citresewn-defaults:config_screen", Function.class).stream().findAny().orElseThrow().apply(currentScreen.screen));
+
+ currentScreen.prevToggle = b;
+ }
+
+ return new TranslatableText("config.citresewn.configure");
+ })
+ .build());
+
category.addEntry(entryBuilder.startBooleanToggle(new TranslatableText("config.citresewn.mute_errors.title"), currentConfig.mute_errors)
.setTooltip(new TranslatableText("config.citresewn.mute_errors.tooltip"))
.setSaveConsumer(newConfig -> currentConfig.mute_errors = newConfig)
@@ -70,6 +89,6 @@ public class CITResewnConfigScreenFactory {
.requireRestart()
.build());
- return builder.build();
+ return currentScreen.screen = builder.build();
}
}
diff --git a/src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnModMenu.java b/src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnModMenu.java
index cf6d9bd..378350a 100644
--- a/src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnModMenu.java
+++ b/src/main/java/shcm/shsupercm/fabric/citresewn/config/CITResewnModMenu.java
@@ -11,15 +11,8 @@ public class CITResewnModMenu implements ModMenuApi {
@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
if (FabricLoader.getInstance().isModLoaded("cloth-config2"))
- return new ClothConfigOpenImpl().getModConfigScreenFactory();
+ return CITResewnConfigScreenFactory::create;
return parent -> new NoticeScreen(() -> MinecraftClient.getInstance().setScreen(parent), Text.of("CIT Resewn"), Text.of("CIT Resewn requires Cloth Config to be able to show the config."));
}
-
- private static class ClothConfigOpenImpl implements ModMenuApi {
- @Override
- public ConfigScreenFactory<?> getModConfigScreenFactory() {
- return CITResewnConfigScreenFactory::create;
- }
- }
}
diff --git a/src/main/java/shcm/shsupercm/util/logic/Loops.java b/src/main/java/shcm/shsupercm/util/logic/Loops.java
deleted file mode 100644
index 6c18244..0000000
--- a/src/main/java/shcm/shsupercm/util/logic/Loops.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package shcm.shsupercm.util.logic;
-
-import java.util.*;
-
-/**
- * This class(or class portion) is a part of SHCM's utilities. Feel free to use without credit.
- */
-public class Loops {
- /**
- * Creates a loop of T with linked intensities allowing for fading between the elements.
- * @param items list of items and pause durations(in time units) ordered as they are in the loop
- * @param fade time in units to fade between each item
- * @param ticks positive raising counter
- * @param tpu the amount of ticks per time unit
- * @param <T> element type
- * @return map of elements and their respective intensities(between 0.0f and 1.0f)
- */
- public static <T> Map<T, Float> statelessFadingLoop(List<Map.Entry<T, Float>> items, float fade, int ticks, int tpu) {
- Map<T, Float> itemValues = new HashMap<>();
-
- if (items == null || items.size() == 0)
- return itemValues;
-
- if (items.size() == 1) {
- itemValues.put(items.get(0).getKey(), 1f);
- return itemValues;
- }
-
- float totalUnitsInLoop = 0f;
- for (Map.Entry<T, Float> item : items) {
- itemValues.put(item.getKey(), 0f);
- totalUnitsInLoop += item.getValue() + fade;
- }
-
- float unitInLoop = (ticks % (tpu * totalUnitsInLoop)) / tpu;
-
- for (int i = 0; i < items.size(); i++) {
- Map.Entry<T, Float> item = items.get(i);
- if (unitInLoop < item.getValue()) {
- itemValues.put(item.getKey(), 1f);
- break;
- } else
- unitInLoop -= item.getValue();
-
- if (unitInLoop < fade) {
- Map.Entry<T, Float> nextItem = items.get(i + 1 >= items.size() ? 0 : i + 1);
-
- unitInLoop /= fade;
-
- itemValues.put(item.getKey(), 1f - unitInLoop);
- itemValues.put(nextItem.getKey(), unitInLoop);
-
- break;
- } else
- unitInLoop -= fade;
- }
-
- return itemValues;
- }
-} \ No newline at end of file