aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/api/Controller.java
diff options
context:
space:
mode:
authorxander <xander@isxander.dev>2022-09-01 11:58:49 +0100
committerxander <xander@isxander.dev>2022-09-01 11:58:49 +0100
commit4d977cc9764ecf0073650f126700f6ff638fa06b (patch)
tree883e68bbd80874c048b3e34db59bf0aa926b489b /src/main/java/dev/isxander/yacl/api/Controller.java
parente63a3c989e3a899bdc81558dd2e4c5cc2c659bde (diff)
downloadYetAnotherConfigLib-4d977cc9764ecf0073650f126700f6ff638fa06b.tar.gz
YetAnotherConfigLib-4d977cc9764ecf0073650f126700f6ff638fa06b.tar.bz2
YetAnotherConfigLib-4d977cc9764ecf0073650f126700f6ff638fa06b.zip
javadoc!
added LongSliderController renamed Control -> Controller add minecraft simple option binding constructor
Diffstat (limited to 'src/main/java/dev/isxander/yacl/api/Controller.java')
-rw-r--r--src/main/java/dev/isxander/yacl/api/Controller.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/dev/isxander/yacl/api/Controller.java b/src/main/java/dev/isxander/yacl/api/Controller.java
new file mode 100644
index 0000000..2c0a5e1
--- /dev/null
+++ b/src/main/java/dev/isxander/yacl/api/Controller.java
@@ -0,0 +1,30 @@
+package dev.isxander.yacl.api;
+
+import dev.isxander.yacl.api.utils.Dimension;
+import dev.isxander.yacl.gui.controllers.ControllerWidget;
+import net.minecraft.client.gui.screen.Screen;
+import net.minecraft.text.Text;
+import org.jetbrains.annotations.ApiStatus;
+
+/**
+ * Provides a widget to control the option.
+ */
+public interface Controller<T> {
+ /**
+ * Gets the dedicated {@link Option} for this controller
+ */
+ Option<T> option();
+
+ /**
+ * Gets the formatted value based on {@link Option#pendingValue()}
+ */
+ Text formatValue();
+
+ /**
+ * Provides a widget to display
+ *
+ * @param screen parent screen
+ */
+ @ApiStatus.Internal
+ ControllerWidget<?> provideWidget(Screen screen, Dimension<Integer> widgetDimension);
+}