Class SimpleOption<T>

java.lang.Object
net.minecraft.client.option.SimpleOption<T>

@Environment(CLIENT) public final class SimpleOption<T> extends Object
A class representing an option of a client. Exactly one instance of this class should be created per option. See below for how to create an instance.

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:

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 to text. 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
  • Field Details

    • LOGGER

      private static final Logger 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

      private final SimpleOption.TooltipFactoryGetter<T> 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

      final Function<T,Text> 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

      private final SimpleOption.Callbacks<T> 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

      private final com.mojang.serialization.Codec<T> 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

      private final T 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

      private final Consumer<T> 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

      final Text 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

      public static SimpleOption<Boolean> ofBoolean(String key, boolean defaultValue)
      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

      public static <T> SimpleOption.TooltipFactoryGetter<T> emptyTooltip()
      Returns the getter for the tooltipFactoryGetter 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

      public static <T> SimpleOption.TooltipFactoryGetter<T> constantTooltip(Text text)
      Returns the getter for the tooltipFactoryGetter 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

      public static <T extends TranslatableOption> SimpleOption.ValueTextGetter<T> enumValueText()
      Returns the getter for the valueTextGetter 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

      protected static List<OrderedText> wrapLines(MinecraftClient client, Text text)
      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

      public ClickableWidget createButton(GameOptions options, int x, int y, int width)
      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

      public T 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

      public com.mojang.serialization.Codec<T> 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

      public String toString()
      Overrides:
      toString in class Object
    • setValue

      public void setValue(T value)
      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

      public SimpleOption.Callbacks<T> 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;