Class SimpleOption<T>
Option values
This class allows querying and storing of the option value via getValue()
and setValue(Object)
respectively. Option values are automatically validated,
and if the value is invalid, the value resets back to the default. Some validators will
coerce the invalid value (e.g. by clamping) into a valid one instead of failing; in this
case the new value is used.
Option values are serialized using codecs. Check DataFixerUpper code for the list of
available codecs. For serialization of enums, you can check the code in GameOptions
.
If the value has changed, the changeCallback
passed to the constructor will
trigger with the new value.
Callbacks
This class itself cannot be extended by default; instead, the behavior of the option,
such as validation or rendering of the ClickableWidget
associated with the
option, is customized by passing a SimpleOption.Callbacks
instance. There are
several existing callbacks that should cover most of the needs:
SimpleOption.PotentialValuesBasedCallbacks
: The most simple cycling option. Useful for enums.SimpleOption.AlternateValuesSupportingCyclingCallbacks
: An option with alternate potential values that are used only when certain conditions are met. This is used in vanilla to hide "Fabulous!" graphics option after the user cancelled the warning.SimpleOption.LazyCyclingCallbacks
: An option whose potential values are determined lazily.SimpleOption.MaxSuppliableIntCallbacks
: A cycling option with an integer value that has a fixed minimum value and a dynamic maximum value. Values outside the range are clamped. This is used in vanilla to implement the GUI Scale option.SimpleOption.DoubleSliderCallbacks
: A slider option of adouble
between0.0
and1.0
. Values outside this range are considered invalid.SimpleOption.ValidatingIntSliderCallbacks
: A slider option of anint
with a minimum and maximum values. Values outside this range are considered invalid.
See also several ofBoolean
methods for options using boolean values.
Modifiers
Slider option callbacks allow "modifiers" to be applied. The "slider progress value"
is the value used to calculate the slider's progress and must be linear. The real value,
simply called "value" in withModifier
methods, is the value used in
getValue()
and passed to textGetter
.
Text
Options themselves have names; the translation key of the option needs to be passed when constructing this class. This corresponds totext
. Options also have the
rendered text, composed of the option name and the value; the code obtains the value using
the valueTextGetter
in the constructor. The getter takes the option's name and the
current value, and returns the text. Several static methods in GameOptions
can
be used to format the name and the value. For options backed by an enum that implements
TranslatableOption
, enumValueText()
can be passed to valueTextGetter
to obtain the rendered text from the enum.
Options can also have a tooltip, specified by passing tooltipFactoryGetter
. If the
option has no tooltips, you can pass emptyTooltip()
, and if the option always
uses one tooltip, you can pass constantTooltip(Text)
.- Mappings:
Namespace Name official efx
intermediary net/minecraft/class_7172
named net/minecraft/client/option/SimpleOption
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic final record
A set of callbacks for a cycling option with alternate potential values that are used only when certain conditions are met.(package private) static interface
A set of callbacks to customize an option's behavior.(package private) static interface
static enum
A set of callbacks for a slider of values from0.0
to1.0
(both inclusive).(package private) static interface
static final record
A set of callbacks for a cycling option whose potential values are determined lazily.static final record
A set of callbacks for a cycling option with a fixed minimum value and a dynamic maximum value.private static final class
static final record
A set of callbacks for a cycling option.(package private) static interface
A set of callbacks for slider options.static interface
static interface
(package private) static interface
static final record
A set of callbacks for a slider of integer values with a fixed minimum and maximum values.static interface
-
Field Summary
Modifier and TypeFieldDescriptionstatic final SimpleOption.PotentialValuesBasedCallbacks<Boolean>
A set of callbacks for boolean options.private final SimpleOption.Callbacks<T>
private final com.mojang.serialization.Codec<T>
private final T
private static final Logger
(package private) final Text
private static final int
private final SimpleOption.TooltipFactoryGetter<T>
(package private) T
-
Constructor Summary
ConstructorDescriptionSimpleOption
(String key, SimpleOption.TooltipFactoryGetter<T> tooltipFactoryGetter, SimpleOption.ValueTextGetter<T> valueTextGetter, SimpleOption.Callbacks<T> callbacks, com.mojang.serialization.Codec<T> codec, T defaultValue, Consumer<T> changeCallback) SimpleOption
(String key, SimpleOption.TooltipFactoryGetter<T> tooltipFactoryGetter, SimpleOption.ValueTextGetter<T> valueTextGetter, SimpleOption.Callbacks<T> callbacks, T defaultValue, Consumer<T> changeCallback) -
Method Summary
Modifier and TypeMethodDescriptionstatic <T> SimpleOption.TooltipFactoryGetter<T>
constantTooltip
(Text text) Returns the getter for thetooltipFactoryGetter
parameter of the constructor to indicate constant tooltips.createButton
(GameOptions options, int x, int y, int width) static <T> SimpleOption.TooltipFactoryGetter<T>
Returns the getter for thetooltipFactoryGetter
parameter of the constructor to indicate empty tooltips.static <T extends TranslatableOption>
SimpleOption.ValueTextGetter<T>Returns the getter for thevalueTextGetter
parameter of the constructor to use the value's text as the option's rendered text.com.mojang.serialization.Codec<T>
getCodec()
getValue()
Returns the option's current value.static SimpleOption<Boolean>
Creates a boolean option.static SimpleOption<Boolean>
Creates a boolean option.static SimpleOption<Boolean>
ofBoolean
(String key, SimpleOption.TooltipFactoryGetter<Boolean> tooltipFactoryGetter, boolean defaultValue) Creates a boolean option.static SimpleOption<Boolean>
ofBoolean
(String key, SimpleOption.TooltipFactoryGetter<Boolean> tooltipFactoryGetter, boolean defaultValue, Consumer<Boolean> changeCallback) Creates a boolean option.void
Sets the option's value.toString()
protected static List<OrderedText>
wrapLines
(MinecraftClient client, Text text)
-
Field Details
-
LOGGER
- Mappings:
Namespace Name Mixin selector official b
Lefx;b:Lorg/slf4j/Logger;
intermediary field_37862
Lnet/minecraft/class_7172;field_37862:Lorg/slf4j/Logger;
named LOGGER
Lnet/minecraft/client/option/SimpleOption;LOGGER:Lorg/slf4j/Logger;
-
BOOLEAN
A set of callbacks for boolean options.- API Note:
- See also several
ofBoolean
methods in this class which provide easier ways of creating a boolean option. - Mappings:
Namespace Name Mixin selector official a
Lefx;a:Lefx$e;
intermediary field_38278
Lnet/minecraft/class_7172;field_38278:Lnet/minecraft/class_7172$class_7173;
named BOOLEAN
Lnet/minecraft/client/option/SimpleOption;BOOLEAN:Lnet/minecraft/client/option/SimpleOption$PotentialValuesBasedCallbacks;
-
TOOLTIP_WIDTH
private static final int TOOLTIP_WIDTH- See Also:
- Mappings:
Namespace Name Mixin selector official c
Lefx;c:I
intermediary field_38441
Lnet/minecraft/class_7172;field_38441:I
named TOOLTIP_WIDTH
Lnet/minecraft/client/option/SimpleOption;TOOLTIP_WIDTH:I
-
tooltipFactoryGetter
- Mappings:
Namespace Name Mixin selector official d
Lefx;d:Lefx$m;
intermediary field_37863
Lnet/minecraft/class_7172;field_37863:Lnet/minecraft/class_7172$class_7307;
named tooltipFactoryGetter
Lnet/minecraft/client/option/SimpleOption;tooltipFactoryGetter:Lnet/minecraft/client/option/SimpleOption$TooltipFactoryGetter;
-
textGetter
- Mappings:
Namespace Name Mixin selector official e
Lefx;e:Ljava/util/function/Function;
intermediary field_37864
Lnet/minecraft/class_7172;field_37864:Ljava/util/function/Function;
named textGetter
Lnet/minecraft/client/option/SimpleOption;textGetter:Ljava/util/function/Function;
-
callbacks
- Mappings:
Namespace Name Mixin selector official f
Lefx;f:Lefx$o;
intermediary field_37865
Lnet/minecraft/class_7172;field_37865:Lnet/minecraft/class_7172$class_7178;
named callbacks
Lnet/minecraft/client/option/SimpleOption;callbacks:Lnet/minecraft/client/option/SimpleOption$Callbacks;
-
codec
- Mappings:
Namespace Name Mixin selector official g
Lefx;g:Lcom/mojang/serialization/Codec;
intermediary field_38279
Lnet/minecraft/class_7172;field_38279:Lcom/mojang/serialization/Codec;
named codec
Lnet/minecraft/client/option/SimpleOption;codec:Lcom/mojang/serialization/Codec;
-
defaultValue
- Mappings:
Namespace Name Mixin selector official h
Lefx;h:Ljava/lang/Object;
intermediary field_37866
Lnet/minecraft/class_7172;field_37866:Ljava/lang/Object;
named defaultValue
Lnet/minecraft/client/option/SimpleOption;defaultValue:Ljava/lang/Object;
-
changeCallback
- Mappings:
Namespace Name Mixin selector official i
Lefx;i:Ljava/util/function/Consumer;
intermediary field_37867
Lnet/minecraft/class_7172;field_37867:Ljava/util/function/Consumer;
named changeCallback
Lnet/minecraft/client/option/SimpleOption;changeCallback:Ljava/util/function/Consumer;
-
text
- Mappings:
Namespace Name Mixin selector official j
Lefx;j:Lrq;
intermediary field_38280
Lnet/minecraft/class_7172;field_38280:Lnet/minecraft/class_2561;
named text
Lnet/minecraft/client/option/SimpleOption;text:Lnet/minecraft/text/Text;
-
value
T value- Mappings:
Namespace Name Mixin selector official k
Lefx;k:Ljava/lang/Object;
intermediary field_37868
Lnet/minecraft/class_7172;field_37868:Ljava/lang/Object;
named value
Lnet/minecraft/client/option/SimpleOption;value:Ljava/lang/Object;
-
-
Constructor Details
-
SimpleOption
public SimpleOption(String key, SimpleOption.TooltipFactoryGetter<T> tooltipFactoryGetter, SimpleOption.ValueTextGetter<T> valueTextGetter, SimpleOption.Callbacks<T> callbacks, T defaultValue, Consumer<T> changeCallback) - Mappings:
Namespace Name Mixin selector official <init>
Lefx;<init>(Ljava/lang/String;Lefx$m;Lefx$b;Lefx$o;Ljava/lang/Object;Ljava/util/function/Consumer;)V
intermediary <init>
Lnet/minecraft/class_7172;<init>(Ljava/lang/String;Lnet/minecraft/class_7172$class_7307;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Ljava/lang/Object;Ljava/util/function/Consumer;)V
named <init>
Lnet/minecraft/client/option/SimpleOption;<init>(Ljava/lang/String;Lnet/minecraft/client/option/SimpleOption$TooltipFactoryGetter;Lnet/minecraft/client/option/SimpleOption$ValueTextGetter;Lnet/minecraft/client/option/SimpleOption$Callbacks;Ljava/lang/Object;Ljava/util/function/Consumer;)V
-
SimpleOption
public SimpleOption(String key, SimpleOption.TooltipFactoryGetter<T> tooltipFactoryGetter, SimpleOption.ValueTextGetter<T> valueTextGetter, SimpleOption.Callbacks<T> callbacks, com.mojang.serialization.Codec<T> codec, T defaultValue, Consumer<T> changeCallback) - Mappings:
Namespace Name Mixin selector official <init>
Lefx;<init>(Ljava/lang/String;Lefx$m;Lefx$b;Lefx$o;Lcom/mojang/serialization/Codec;Ljava/lang/Object;Ljava/util/function/Consumer;)V
intermediary <init>
Lnet/minecraft/class_7172;<init>(Ljava/lang/String;Lnet/minecraft/class_7172$class_7307;Lnet/minecraft/class_7172$class_7303;Lnet/minecraft/class_7172$class_7178;Lcom/mojang/serialization/Codec;Ljava/lang/Object;Ljava/util/function/Consumer;)V
named <init>
Lnet/minecraft/client/option/SimpleOption;<init>(Ljava/lang/String;Lnet/minecraft/client/option/SimpleOption$TooltipFactoryGetter;Lnet/minecraft/client/option/SimpleOption$ValueTextGetter;Lnet/minecraft/client/option/SimpleOption$Callbacks;Lcom/mojang/serialization/Codec;Ljava/lang/Object;Ljava/util/function/Consumer;)V
-
-
Method Details
-
ofBoolean
public static SimpleOption<Boolean> ofBoolean(String key, boolean defaultValue, Consumer<Boolean> changeCallback) Creates a boolean option.- Mappings:
Namespace Name Mixin selector official a
Lefx;a(Ljava/lang/String;ZLjava/util/function/Consumer;)Lefx;
intermediary method_41751
Lnet/minecraft/class_7172;method_41751(Ljava/lang/String;ZLjava/util/function/Consumer;)Lnet/minecraft/class_7172;
named ofBoolean
Lnet/minecraft/client/option/SimpleOption;ofBoolean(Ljava/lang/String;ZLjava/util/function/Consumer;)Lnet/minecraft/client/option/SimpleOption;
-
ofBoolean
Creates a boolean option.- Mappings:
Namespace Name Mixin selector official a
Lefx;a(Ljava/lang/String;Z)Lefx;
intermediary method_42402
Lnet/minecraft/class_7172;method_42402(Ljava/lang/String;Z)Lnet/minecraft/class_7172;
named ofBoolean
Lnet/minecraft/client/option/SimpleOption;ofBoolean(Ljava/lang/String;Z)Lnet/minecraft/client/option/SimpleOption;
-
ofBoolean
public static SimpleOption<Boolean> ofBoolean(String key, SimpleOption.TooltipFactoryGetter<Boolean> tooltipFactoryGetter, boolean defaultValue) Creates a boolean option.- Mappings:
Namespace Name Mixin selector official a
Lefx;a(Ljava/lang/String;Lefx$m;Z)Lefx;
intermediary method_41749
Lnet/minecraft/class_7172;method_41749(Ljava/lang/String;Lnet/minecraft/class_7172$class_7307;Z)Lnet/minecraft/class_7172;
named ofBoolean
Lnet/minecraft/client/option/SimpleOption;ofBoolean(Ljava/lang/String;Lnet/minecraft/client/option/SimpleOption$TooltipFactoryGetter;Z)Lnet/minecraft/client/option/SimpleOption;
-
ofBoolean
public static SimpleOption<Boolean> ofBoolean(String key, SimpleOption.TooltipFactoryGetter<Boolean> tooltipFactoryGetter, boolean defaultValue, Consumer<Boolean> changeCallback) Creates a boolean option.- Mappings:
Namespace Name Mixin selector official a
Lefx;a(Ljava/lang/String;Lefx$m;ZLjava/util/function/Consumer;)Lefx;
intermediary method_41750
Lnet/minecraft/class_7172;method_41750(Ljava/lang/String;Lnet/minecraft/class_7172$class_7307;ZLjava/util/function/Consumer;)Lnet/minecraft/class_7172;
named ofBoolean
Lnet/minecraft/client/option/SimpleOption;ofBoolean(Ljava/lang/String;Lnet/minecraft/client/option/SimpleOption$TooltipFactoryGetter;ZLjava/util/function/Consumer;)Lnet/minecraft/client/option/SimpleOption;
-
emptyTooltip
Returns the getter for thetooltipFactoryGetter
parameter of the constructor to indicate empty tooltips.- Returns:
- the getter for the
tooltipFactoryGetter
parameter of the constructor to indicate empty tooltips - Mappings:
Namespace Name Mixin selector official a
Lefx;a()Lefx$m;
intermediary method_42399
Lnet/minecraft/class_7172;method_42399()Lnet/minecraft/class_7172$class_7307;
named emptyTooltip
Lnet/minecraft/client/option/SimpleOption;emptyTooltip()Lnet/minecraft/client/option/SimpleOption$TooltipFactoryGetter;
-
constantTooltip
Returns the getter for thetooltipFactoryGetter
parameter of the constructor to indicate constant tooltips.- Returns:
- the getter for the
tooltipFactoryGetter
parameter of the constructor to indicate constant tooltips - Mappings:
Namespace Name Mixin selector official a
Lefx;a(Lrq;)Lefx$m;
intermediary method_42717
Lnet/minecraft/class_7172;method_42717(Lnet/minecraft/class_2561;)Lnet/minecraft/class_7172$class_7307;
named constantTooltip
Lnet/minecraft/client/option/SimpleOption;constantTooltip(Lnet/minecraft/text/Text;)Lnet/minecraft/client/option/SimpleOption$TooltipFactoryGetter;
-
enumValueText
Returns the getter for thevalueTextGetter
parameter of the constructor to use the value's text as the option's rendered text.- Returns:
- the getter for the
valueTextGetter
parameter of the constructor to use the value's text as the option's rendered text - API Note:
- This requires the value to be an enum implementing
TranslatableOption
. - Mappings:
Namespace Name Mixin selector official b
Lefx;b()Lefx$b;
intermediary method_42720
Lnet/minecraft/class_7172;method_42720()Lnet/minecraft/class_7172$class_7303;
named enumValueText
Lnet/minecraft/client/option/SimpleOption;enumValueText()Lnet/minecraft/client/option/SimpleOption$ValueTextGetter;
-
wrapLines
- Mappings:
Namespace Name Mixin selector official a
Lefx;a(Lefu;Lrq;)Ljava/util/List;
intermediary method_42714
Lnet/minecraft/class_7172;method_42714(Lnet/minecraft/class_310;Lnet/minecraft/class_2561;)Ljava/util/List;
named wrapLines
Lnet/minecraft/client/option/SimpleOption;wrapLines(Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/text/Text;)Ljava/util/List;
-
createButton
- Mappings:
Namespace Name Mixin selector official a
Lefx;a(Lefy;III)Lehn;
intermediary method_18520
Lnet/minecraft/class_7172;method_18520(Lnet/minecraft/class_315;III)Lnet/minecraft/class_339;
named createButton
Lnet/minecraft/client/option/SimpleOption;createButton(Lnet/minecraft/client/option/GameOptions;III)Lnet/minecraft/client/gui/widget/ClickableWidget;
-
getValue
Returns the option's current value.- Returns:
- the option's current value
- Mappings:
Namespace Name Mixin selector official c
Lefx;c()Ljava/lang/Object;
intermediary method_41753
Lnet/minecraft/class_7172;method_41753()Ljava/lang/Object;
named getValue
Lnet/minecraft/client/option/SimpleOption;getValue()Ljava/lang/Object;
-
getCodec
- Mappings:
Namespace Name Mixin selector official d
Lefx;d()Lcom/mojang/serialization/Codec;
intermediary method_42404
Lnet/minecraft/class_7172;method_42404()Lcom/mojang/serialization/Codec;
named getCodec
Lnet/minecraft/client/option/SimpleOption;getCodec()Lcom/mojang/serialization/Codec;
-
toString
-
setValue
Sets the option's value.The behavior for invalid
value
varies; the validator can either coerce the passed value into a valid one by clamping etc, or fail the validation and reset to the default value.If the new value differs from the new value,
changeCallback
will trigger.- Mappings:
Namespace Name Mixin selector official a
Lefx;a(Ljava/lang/Object;)V
intermediary method_41748
Lnet/minecraft/class_7172;method_41748(Ljava/lang/Object;)V
named setValue
Lnet/minecraft/client/option/SimpleOption;setValue(Ljava/lang/Object;)V
-
getCallbacks
- Mappings:
Namespace Name Mixin selector official e
Lefx;e()Lefx$o;
intermediary method_41754
Lnet/minecraft/class_7172;method_41754()Lnet/minecraft/class_7172$class_7178;
named getCallbacks
Lnet/minecraft/client/option/SimpleOption;getCallbacks()Lnet/minecraft/client/option/SimpleOption$Callbacks;
-