Class NumberField.Builder<N extends Number>

java.lang.Object
dev.xichil.mvui.Entry.Builder<NumberField.Builder<N>>
dev.xichil.mvui.NumberField.Builder<N>
Type Parameters:
N - the number type
Enclosing class:
NumberField<N extends Number>

public static final class NumberField.Builder<N extends Number> extends Entry.Builder<NumberField.Builder<N>>
Builds a NumberField; from NumberField.ofInt(String) or NumberField.ofDouble(String). Also has the options every entry has (Entry.Builder).
  • Method Details

    • label

      public NumberField.Builder<N> label(Supplier<Text> label)
      The text above the field, re-read on every refresh. Required.
      Parameters:
      label - read on refresh
      Returns:
      this builder
    • label

      public NumberField.Builder<N> label(Text label)
      A fixed label; see label(Supplier).
      Parameters:
      label - the label
      Returns:
      this builder
    • initial

      public NumberField.Builder<N> initial(N initial)
      The number the field starts with, usually the mod's current value. Required. Shown without trailing zeros (2.50 as 2.5); not checked against the range or passed to onChange.
      Parameters:
      initial - the starting number
      Returns:
      this builder
    • range

      public NumberField.Builder<N> range(N min, N max)
      The allowed range, both ends inclusive; either may be null for no bound. Unbounded by default (apart from the int range for NumberField.ofInt(String)).
      Parameters:
      min - the smallest allowed number, or null
      max - the largest allowed number, or null; not less than min
      Returns:
      this builder
    • maxLength

      public NumberField.Builder<N> maxLength(int maxLength)
      The most characters the field accepts; 32 by default.
      Parameters:
      maxLength - the limit, positive
      Returns:
      this builder
    • validator

      public NumberField.Builder<N> validator(Function<? super N, Text> validator)
      An extra check for numbers that already passed parsing and the range: returns an error text, or null if the number is valid. E.g. n -> n % 2 == 0 ? null : Text.literal("Must be even"). Optional.
      Parameters:
      validator - maps an in-range number to an error, or null
      Returns:
      this builder
    • onChange

      public NumberField.Builder<N> onChange(Consumer<? super N> onChange)
      Receives the number after each edit that leaves the text valid, on the main thread. Required.
      Parameters:
      onChange - receives valid numbers
      Returns:
      this builder
    • build

      public NumberField<N> build()
      Builds the field.
      Returns:
      the field
      Throws:
      IllegalStateException - if label, initial or onChange is missing, initial, min or max is NaN or infinite, min > max, or maxLength is not positive