aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXander <xander@isxander.dev>2022-12-09 16:31:25 +0000
committerGitHub <noreply@github.com>2022-12-09 16:31:25 +0000
commite4856a17133b0567d09cb6db3821674491d57e64 (patch)
tree0c59597708b3ea9f402ba119490537b5c18fdb93
parente1f6d190d862dd86c251fdd5726efe99f8ec1baf (diff)
parent49ff470de36e719d5b963de405de891eca2b69d1 (diff)
downloadYetAnotherConfigLib-e4856a17133b0567d09cb6db3821674491d57e64.tar.gz
YetAnotherConfigLib-e4856a17133b0567d09cb6db3821674491d57e64.tar.bz2
YetAnotherConfigLib-e4856a17133b0567d09cb6db3821674491d57e64.zip
Merge pull request #38 from isXander/update/1.19.3
-rw-r--r--README.md2
-rw-r--r--build.gradle.kts26
-rw-r--r--changelogs/2.0.0.md7
-rw-r--r--gradle.properties5
-rw-r--r--src/client/java/dev/isxander/yacl/api/Binding.java (renamed from src/main/java/dev/isxander/yacl/api/Binding.java)2
-rw-r--r--src/client/java/dev/isxander/yacl/api/ButtonOption.java (renamed from src/main/java/dev/isxander/yacl/api/ButtonOption.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/api/ConfigCategory.java (renamed from src/main/java/dev/isxander/yacl/api/ConfigCategory.java)1
-rw-r--r--src/client/java/dev/isxander/yacl/api/Controller.java (renamed from src/main/java/dev/isxander/yacl/api/Controller.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/api/NameableEnum.java (renamed from src/main/java/dev/isxander/yacl/api/NameableEnum.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/api/Option.java (renamed from src/main/java/dev/isxander/yacl/api/Option.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/api/OptionFlag.java (renamed from src/main/java/dev/isxander/yacl/api/OptionFlag.java)8
-rw-r--r--src/client/java/dev/isxander/yacl/api/OptionGroup.java (renamed from src/main/java/dev/isxander/yacl/api/OptionGroup.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/api/PlaceholderCategory.java (renamed from src/main/java/dev/isxander/yacl/api/PlaceholderCategory.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/api/YetAnotherConfigLib.java (renamed from src/main/java/dev/isxander/yacl/api/YetAnotherConfigLib.java)15
-rw-r--r--src/client/java/dev/isxander/yacl/api/utils/OptionUtils.java (renamed from src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/AbstractWidget.java (renamed from src/main/java/dev/isxander/yacl/gui/AbstractWidget.java)10
-rw-r--r--src/client/java/dev/isxander/yacl/gui/CategoryListWidget.java (renamed from src/main/java/dev/isxander/yacl/gui/CategoryListWidget.java)22
-rw-r--r--src/client/java/dev/isxander/yacl/gui/CategoryWidget.java (renamed from src/main/java/dev/isxander/yacl/gui/CategoryWidget.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/ElementListWidgetExt.java152
-rw-r--r--src/client/java/dev/isxander/yacl/gui/LowProfileButtonWidget.java (renamed from src/main/java/dev/isxander/yacl/gui/LowProfileButtonWidget.java)10
-rw-r--r--src/client/java/dev/isxander/yacl/gui/OptionListWidget.java (renamed from src/main/java/dev/isxander/yacl/gui/OptionListWidget.java)133
-rw-r--r--src/client/java/dev/isxander/yacl/gui/RequireRestartScreen.java (renamed from src/main/java/dev/isxander/yacl/gui/RequireRestartScreen.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/SearchFieldWidget.java (renamed from src/main/java/dev/isxander/yacl/gui/SearchFieldWidget.java)2
-rw-r--r--src/client/java/dev/isxander/yacl/gui/TextScaledButtonWidget.java (renamed from src/main/java/dev/isxander/yacl/gui/TextScaledButtonWidget.java)11
-rw-r--r--src/client/java/dev/isxander/yacl/gui/TooltipButtonWidget.java (renamed from src/main/java/dev/isxander/yacl/gui/TooltipButtonWidget.java)4
-rw-r--r--src/client/java/dev/isxander/yacl/gui/YACLScreen.java (renamed from src/main/java/dev/isxander/yacl/gui/YACLScreen.java)39
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/ActionController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/ActionController.java)4
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/BooleanController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/BooleanController.java)14
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/ColorController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/ColorController.java)27
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/ControllerWidget.java)4
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/LabelController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/LabelController.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/TickBoxController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/TickBoxController.java)11
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/cycling/CyclingControllerElement.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/cycling/CyclingControllerElement.java)8
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/cycling/CyclingListController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/cycling/CyclingListController.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/cycling/EnumController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/cycling/EnumController.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/cycling/ICyclingController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/cycling/ICyclingController.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/package-info.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/package-info.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/DoubleSliderController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/slider/DoubleSliderController.java)2
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/FloatSliderController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/slider/FloatSliderController.java)2
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/ISliderController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/slider/ISliderController.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/IntegerSliderController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/slider/IntegerSliderController.java)2
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/LongSliderController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/slider/LongSliderController.java)2
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/slider/SliderControllerElement.java)6
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/slider/package-info.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/slider/package-info.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/IStringController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/string/IStringController.java)12
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/StringController.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/string/StringController.java)5
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java (renamed from src/main/java/dev/isxander/yacl/gui/controllers/string/StringControllerElement.java)117
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/DoubleFieldController.java105
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/FloatFieldController.java105
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/IntegerFieldController.java109
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/LongFieldController.java109
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/NumberFieldController.java69
-rw-r--r--src/client/java/dev/isxander/yacl/gui/controllers/string/number/package-info.java10
-rw-r--r--src/client/java/dev/isxander/yacl/impl/ButtonOptionImpl.java (renamed from src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/impl/ConfigCategoryImpl.java (renamed from src/main/java/dev/isxander/yacl/impl/ConfigCategoryImpl.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/impl/GenericBindingImpl.java (renamed from src/main/java/dev/isxander/yacl/impl/GenericBindingImpl.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/impl/OptionGroupImpl.java (renamed from src/main/java/dev/isxander/yacl/impl/OptionGroupImpl.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/impl/OptionImpl.java (renamed from src/main/java/dev/isxander/yacl/impl/OptionImpl.java)1
-rw-r--r--src/client/java/dev/isxander/yacl/impl/PlaceholderCategoryImpl.java (renamed from src/main/java/dev/isxander/yacl/impl/PlaceholderCategoryImpl.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/impl/YetAnotherConfigLibImpl.java (renamed from src/main/java/dev/isxander/yacl/impl/YetAnotherConfigLibImpl.java)0
-rw-r--r--src/client/java/dev/isxander/yacl/mixin/client/SimpleOptionAccessor.java (renamed from src/main/java/dev/isxander/yacl/mixin/SimpleOptionAccessor.java)2
-rw-r--r--src/client/resources/yet-another-config-lib.client.mixins.json (renamed from src/main/resources/yet-another-config-lib.mixins.json)2
-rw-r--r--src/main/java/dev/isxander/yacl/config/ConfigInstance.java14
-rw-r--r--src/main/java/dev/isxander/yacl/gui/controllers/EnumController.java35
-rw-r--r--src/main/resources/fabric.mod.json12
-rw-r--r--src/testmod/java/dev/isxander/yacl/test/GuiTest.java (renamed from src/testmod/java/dev/isxander/yacl/test/ModMenuIntegration.java)191
-rw-r--r--src/testmod/java/dev/isxander/yacl/test/config/ConfigData.java4
-rw-r--r--src/testmod/java/dev/isxander/yacl/test/config/Entrypoint.java3
-rw-r--r--src/testmod/java/dev/isxander/yacl/test/mixins/TitleScreenMixin.java26
-rw-r--r--src/testmod/resources/fabric.mod.json13
-rw-r--r--src/testmod/resources/yet-another-config-lib.test.mixins.json11
71 files changed, 1085 insertions, 401 deletions
diff --git a/README.md b/README.md
index e7882ee..f6b2bf8 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ Yet Another Config Lib, like, what were you expecting?
This mod was made to fill a hole in this area of Fabric modding. The existing main config libraries don't achieve what I want from them:
-- **[Cloth Config API](https://modrinth.com/mod/cloth-config)**:<br/>**It's stale.** The developer of cloth has clarified that they are likely not going to add any more features. They don't want to touch it.
+- **[Cloth Config API](https://modrinth.com/mod/cloth-config)**:<br/>**It's stale.** The developer of cloth has clarified that they are likely not going to add any more features. They don't want to touch it. ([citation](https://user-images.githubusercontent.com/43245524/206530322-3ae46008-5356-468e-9a73-63b859364d4e.png))
- **[SpruceUI](https://github.com/LambdAurora/SpruceUI)**:<br/>**It isn't designed for configuration.** In this essence the design feels cluttered. Further details available in [this issue](https://github.com/isXander/Zoomify/issues/85).
- **[MidnightLib](https://modrinth.com/mod/midnightlib)**:<br/>**It has cosmetics among other utilities.** It may not be large but some players (including me) wouldn't want cosmetics out of nowhere.
- **[OwoLib](https://modrinth.com/mod/owo-lib)**:<br/>**It's content focused.** It does a lot of other things as well as config, adding to the size.
diff --git a/build.gradle.kts b/build.gradle.kts
index 6655cbb..7fa93c3 100644
--- a/build.gradle.kts
+++ b/build.gradle.kts
@@ -2,7 +2,7 @@ plugins {
java
id("fabric-loom") version "1.0.+"
- id("io.github.juuxel.loom-quiltflower") version "1.7.+"
+ id("io.github.juuxel.loom-quiltflower") version "1.8.+"
id("com.modrinth.minotaur") version "2.4.+"
id("me.hypherionmc.cursegradle") version "2.+"
@@ -16,14 +16,27 @@ plugins {
val ciRun = System.getenv().containsKey("GITHUB_ACTIONS")
group = "dev.isxander"
-version = "1.7.1"
+version = "2.0.0"
if (ciRun)
version = "$version+${grgit.branch.current().name}-SNAPSHOT"
+loom {
+ splitEnvironmentSourceSets()
+
+ mods {
+ register("yet-another-config-lib") {
+ sourceSet(sourceSets["main"])
+ sourceSet(sourceSets["client"])
+ }
+ }
+}
+
val testmod by sourceSets.registering {
compileClasspath += sourceSets.main.get().compileClasspath
runtimeClasspath += sourceSets.main.get().runtimeClasspath
+ compileClasspath += sourceSets["client"].compileClasspath
+ runtimeClasspath += sourceSets["client"].runtimeClasspath
}
loom {
@@ -48,18 +61,17 @@ repositories {
val minecraftVersion: String by project
val fabricLoaderVersion: String by project
+val yarnBuild: String by project
dependencies {
minecraft("com.mojang:minecraft:$minecraftVersion")
- mappings("net.fabricmc:yarn:$minecraftVersion+build.+:v2")
+ mappings("net.fabricmc:yarn:$minecraftVersion+build.$yarnBuild:v2")
modImplementation("net.fabricmc:fabric-loader:$fabricLoaderVersion")
- modImplementation(fabricApi.module("fabric-resource-loader-v0", "0.66.0+1.19.2"))
+ "modClientImplementation"(fabricApi.module("fabric-resource-loader-v0", "0.68.1+1.19.3"))
"testmodImplementation"(sourceSets.main.get().output)
- "modTestmodImplementation"("com.terraformersmc:modmenu:4.0.6") {
- exclude(module = "fabric-loader")
- }
+ "testmodImplementation"(sourceSets["client"].output)
}
java {
diff --git a/changelogs/2.0.0.md b/changelogs/2.0.0.md
new file mode 100644
index 0000000..b56d0b1
--- /dev/null
+++ b/changelogs/2.0.0.md
@@ -0,0 +1,7 @@
+- Update to 1.19.3
+- Colour field controllers
+- Better carot positioning when clicking in text fields
+- Better text selection for text fields
+- Smooth scrolling for category list
+- Fix category list scrollbar appearing under option list background in-game
+- Fix tick box name text length limiting
diff --git a/gradle.properties b/gradle.properties
index 0f0b15f..292f0c1 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,7 +1,8 @@
org.gradle.jvmargs=-Xmx3G
-minecraftVersion=1.19.2
-fabricLoaderVersion=0.14.10
+minecraftVersion=1.19.3
+fabricLoaderVersion=0.14.11
+yarnBuild=1
modId=yet-another-config-lib
modName=YetAnotherConfigLib
diff --git a/src/main/java/dev/isxander/yacl/api/Binding.java b/src/client/java/dev/isxander/yacl/api/Binding.java
index 395beb2..91158d3 100644
--- a/src/main/java/dev/isxander/yacl/api/Binding.java
+++ b/src/client/java/dev/isxander/yacl/api/Binding.java
@@ -1,7 +1,7 @@
package dev.isxander.yacl.api;
import dev.isxander.yacl.impl.GenericBindingImpl;
-import dev.isxander.yacl.mixin.SimpleOptionAccessor;
+import dev.isxander.yacl.mixin.client.SimpleOptionAccessor;
import net.minecraft.client.option.SimpleOption;
import org.apache.commons.lang3.Validate;
diff --git a/src/main/java/dev/isxander/yacl/api/ButtonOption.java b/src/client/java/dev/isxander/yacl/api/ButtonOption.java
index 1124a9a..1124a9a 100644
--- a/src/main/java/dev/isxander/yacl/api/ButtonOption.java
+++ b/src/client/java/dev/isxander/yacl/api/ButtonOption.java
diff --git a/src/main/java/dev/isxander/yacl/api/ConfigCategory.java b/src/client/java/dev/isxander/yacl/api/ConfigCategory.java
index 27c3e95..e9755dd 100644
--- a/src/main/java/dev/isxander/yacl/api/ConfigCategory.java
+++ b/src/client/java/dev/isxander/yacl/api/ConfigCategory.java
@@ -11,7 +11,6 @@ import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.function.Function;
/**
* Separates {@link Option}s or {@link OptionGroup}s into multiple distinct sections.
diff --git a/src/main/java/dev/isxander/yacl/api/Controller.java b/src/client/java/dev/isxander/yacl/api/Controller.java
index 7bf7e7f..7bf7e7f 100644
--- a/src/main/java/dev/isxander/yacl/api/Controller.java
+++ b/src/client/java/dev/isxander/yacl/api/Controller.java
diff --git a/src/main/java/dev/isxander/yacl/api/NameableEnum.java b/src/client/java/dev/isxander/yacl/api/NameableEnum.java
index 793b230..793b230 100644
--- a/src/main/java/dev/isxander/yacl/api/NameableEnum.java
+++ b/src/client/java/dev/isxander/yacl/api/NameableEnum.java
diff --git a/src/main/java/dev/isxander/yacl/api/Option.java b/src/client/java/dev/isxander/yacl/api/Option.java
index 772c816..772c816 100644
--- a/src/main/java/dev/isxander/yacl/api/Option.java
+++ b/src/client/java/dev/isxander/yacl/api/Option.java
diff --git a/src/main/java/dev/isxander/yacl/api/OptionFlag.java b/src/client/java/dev/isxander/yacl/api/OptionFlag.java
index 203a674..7a5c23f 100644
--- a/src/main/java/dev/isxander/yacl/api/OptionFlag.java
+++ b/src/client/java/dev/isxander/yacl/api/OptionFlag.java
@@ -11,14 +11,10 @@ import java.util.function.Consumer;
*/
@FunctionalInterface
public interface OptionFlag extends Consumer<MinecraftClient> {
- /**
- * Warns the user that a game restart is required for the changes to take effect
- */
+ /** Warns the user that a game restart is required for the changes to take effect */
OptionFlag GAME_RESTART = client -> client.setScreen(new RequireRestartScreen(client.currentScreen));
- /**
- * Reloads chunks upon applying (F3+A)
- */
+ /** Reloads chunks upon applying (F3+A) */
OptionFlag RELOAD_CHUNKS = client -> client.worldRenderer.reload();
OptionFlag WORLD_RENDER_UPDATE = client -> client.worldRenderer.scheduleTerrainUpdate();
diff --git a/src/main/java/dev/isxander/yacl/api/OptionGroup.java b/src/client/java/dev/isxander/yacl/api/OptionGroup.java
index 3364bdf..3364bdf 100644
--- a/src/main/java/dev/isxander/yacl/api/OptionGroup.java
+++ b/src/client/java/dev/isxander/yacl/api/OptionGroup.java
diff --git a/src/main/java/dev/isxander/yacl/api/PlaceholderCategory.java b/src/client/java/dev/isxander/yacl/api/PlaceholderCategory.java
index de7441c..de7441c 100644
--- a/src/main/java/dev/isxander/yacl/api/PlaceholderCategory.java
+++ b/src/client/java/dev/isxander/yacl/api/PlaceholderCategory.java
diff --git a/src/main/java/dev/isxander/yacl/api/YetAnotherConfigLib.java b/src/client/java/dev/isxander/yacl/api/YetAnotherConfigLib.java
index a69ae4e..ae6c060 100644
--- a/src/main/java/dev/isxander/yacl/api/YetAnotherConfigLib.java
+++ b/src/client/java/dev/isxander/yacl/api/YetAnotherConfigLib.java
@@ -1,6 +1,7 @@
package dev.isxander.yacl.api;
import com.google.common.collect.ImmutableList;
+import dev.isxander.yacl.config.ConfigInstance;
import dev.isxander.yacl.gui.YACLScreen;
import dev.isxander.yacl.impl.YetAnotherConfigLibImpl;
import net.minecraft.client.gui.screen.Screen;
@@ -12,6 +13,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.function.BiFunction;
import java.util.function.Consumer;
/**
@@ -53,6 +55,14 @@ public interface YetAnotherConfigLib {
return new Builder();
}
+ /**
+ * Creates an instance using a {@link ConfigInstance} which autofills the save() builder method.
+ * This also takes an easy functional interface that provides defaults and config to help build YACL bindings.
+ */
+ static <T> YetAnotherConfigLib create(ConfigInstance<T> configInstance, ConfigBackedBuilder<T> builder) {
+ return builder.build(configInstance.getDefaults(), configInstance.getConfig(), createBuilder().save(configInstance::save)).build();
+ }
+
class Builder {
private Text title;
private final List<ConfigCategory> categories = new ArrayList<>();
@@ -133,4 +143,9 @@ public interface YetAnotherConfigLib {
return new YetAnotherConfigLibImpl(title, ImmutableList.copyOf(categories), saveFunction, initConsumer);
}
}
+
+ @FunctionalInterface
+ interface ConfigBackedBuilder<T> {
+ YetAnotherConfigLib.Builder build(T defaults, T config, YetAnotherConfigLib.Builder builder);
+ }
}
diff --git a/src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java b/src/client/java/dev/isxander/yacl/api/utils/OptionUtils.java
index ab46b5b..ab46b5b 100644
--- a/src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java
+++ b/