Interface Key

All Superinterfaces:
Comparable<Key>, net.kyori.examination.Examinable, Keyed, Namespaced

public interface Key extends Comparable<Key>, net.kyori.examination.Examinable, Namespaced, Keyed
An identifying object used to fetch and/or store unique objects.

A key consists of:

namespace
in most cases this should be your plugin or organization name
value
what this key leads to, e.g "translations" or "entity.firework_rocket.blast"

Valid characters for namespaces are [a-z0-9_.-].

Valid characters for values are [a-z0-9/._-].

Some examples of possible custom keys:

  • my_plugin:translations
  • my_plugin:weapon.amazing-weapon_damage-attribute
  • my_organization:music.song_1
  • my_organization:item.magic_button
Since:
4.0.0
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final char
    The default namespace and value separator.
    static final String
    The namespace for Minecraft.
  • Method Summary

    Modifier and Type
    Method
    Description
    static boolean
    allowedInNamespace(char character)
    Checks if value is a valid character in a namespace.
    static boolean
    allowedInValue(char character)
    Checks if value is a valid character in a value.
    default @NotNull String
    Returns the string representation of this key in minimal form.
    @NotNull String
    Returns the string representation of this key.
    static @NotNull OptionalInt
    checkNamespace(@NotNull String namespace)
    Checks if value is a valid namespace.
    static @NotNull OptionalInt
    checkValue(@NotNull String value)
    Checks if value is a valid value.
    static @NotNull Comparator<? super Key>
    Gets the comparator.
    default int
    compareTo(@NotNull Key that)
     
    default @NotNull Stream<? extends net.kyori.examination.ExaminableProperty>
     
    default @NotNull Key
    key()
    Gets the key.
    static @NotNull Key
    key(@NotNull String string)
    Creates a key.
    static @NotNull Key
    key(@NotNull String string, char character)
    Creates a key.
    static @NotNull Key
    key(@NotNull String namespace, @NotNull String value)
    Creates a key.
    static @NotNull Key
    key(@NotNull Namespaced namespaced, @NotNull String value)
    Creates a key.
    @NotNull String
    Gets the namespace.
    static boolean
    parseable(@Nullable String string)
    Checks if string can be parsed into a Key.
    static boolean
    parseableNamespace(@NotNull String namespace)
    Checks if value is a valid namespace.
    static boolean
    parseableValue(@NotNull String value)
    Checks if value is a valid value.
    @NotNull String
    Gets the value.

    Methods inherited from interface net.kyori.examination.Examinable

    examinableName, examine
  • Field Details

    • MINECRAFT_NAMESPACE

      static final String MINECRAFT_NAMESPACE
      The namespace for Minecraft.
      Since:
      4.0.0
      See Also:
    • DEFAULT_SEPARATOR

      static final char DEFAULT_SEPARATOR
      The default namespace and value separator.
      Since:
      4.12.0
      See Also:
  • Method Details

    • key

      @NotNull static @NotNull Key key(@KeyPattern @NotNull @NotNull String string)
      Creates a key.

      This will parse string as a key, using : as a separator between the namespace and the value.

      The namespace is optional. If you do not provide one (for example, if you provide just player or :player as the string) then MINECRAFT_NAMESPACE will be used as a namespace and string will be used as the value, removing the colon if necessary.

      Parameters:
      string - the string
      Returns:
      the key
      Throws:
      InvalidKeyException - if the namespace or value contains an invalid character
      Since:
      4.0.0
    • key

      @NotNull static @NotNull Key key(@NotNull @NotNull String string, char character)
      Creates a key.

      This will parse string as a key, using character as a separator between the namespace and the value.

      The namespace is optional. If you do not provide one (for example, if you provide player or character + "player" as the string) then MINECRAFT_NAMESPACE will be used as a namespace and string will be used as the value, removing the provided separator character if necessary.

      Parameters:
      string - the string
      character - the character that separates the namespace from the value
      Returns:
      the key
      Throws:
      InvalidKeyException - if the namespace or value contains an invalid character
      Since:
      4.0.0
    • key

      @NotNull static @NotNull Key key(@NotNull @NotNull Namespaced namespaced, @Value @NotNull @NotNull String value)
      Creates a key.
      Parameters:
      namespaced - the namespace source
      value - the value
      Returns:
      the key
      Throws:
      InvalidKeyException - if the namespace or value contains an invalid character
      Since:
      4.4.0
    • key

      @NotNull static @NotNull Key key(@Namespace @NotNull @NotNull String namespace, @Value @NotNull @NotNull String value)
      Creates a key.
      Parameters:
      namespace - the namespace
      value - the value
      Returns:
      the key
      Throws:
      InvalidKeyException - if the namespace or value contains an invalid character
      Since:
      4.0.0
    • comparator

      @NotNull static @NotNull Comparator<? super Key> comparator()
      Gets the comparator.

      The value is compared first, followed by the namespace.

      Returns:
      a comparator for keys
      Since:
      4.10.0
    • parseable

      static boolean parseable(@Nullable @Nullable String string)
      Checks if string can be parsed into a Key.
      Parameters:
      string - the input string
      Returns:
      true if string can be parsed into a Key, false otherwise
      Since:
      4.12.0
    • parseableNamespace

      static boolean parseableNamespace(@NotNull @NotNull String namespace)
      Checks if value is a valid namespace.
      Parameters:
      namespace - the string to check
      Returns:
      true if value is a valid namespace, false otherwise
      Since:
      4.12.0
    • checkNamespace

      @NotNull static @NotNull OptionalInt checkNamespace(@NotNull @NotNull String namespace)
      Checks if value is a valid namespace.
      Parameters:
      namespace - the string to check
      Returns:
      OptionalInt.empty() if value is a valid namespace, otherwise an OptionalInt containing the index of an invalid character
      Since:
      4.14.0
    • parseableValue

      static boolean parseableValue(@NotNull @NotNull String value)
      Checks if value is a valid value.
      Parameters:
      value - the string to check
      Returns:
      true if value is a valid value, false otherwise
      Since:
      4.12.0
    • checkValue

      @NotNull static @NotNull OptionalInt checkValue(@NotNull @NotNull String value)
      Checks if value is a valid value.
      Parameters:
      value - the string to check
      Returns:
      OptionalInt.empty() if value is a valid value, otherwise an OptionalInt containing the index of an invalid character
      Since:
      4.14.0
    • allowedInNamespace

      static boolean allowedInNamespace(char character)
      Checks if value is a valid character in a namespace.
      Parameters:
      character - the character to check
      Returns:
      true if value is a valid character in a namespace, false otherwise
      Since:
      4.12.0
    • allowedInValue

      static boolean allowedInValue(char character)
      Checks if value is a valid character in a value.
      Parameters:
      character - the character to check
      Returns:
      true if value is a valid character in a value, false otherwise
      Since:
      4.12.0
    • namespace

      @Namespace @NotNull @NotNull String namespace()
      Gets the namespace.
      Specified by:
      namespace in interface Namespaced
      Returns:
      the namespace
      Since:
      4.0.0
    • value

      @Value @NotNull @NotNull String value()
      Gets the value.
      Returns:
      the value
      Since:
      4.0.0
    • asString

      @NotNull @NotNull String asString()
      Returns the string representation of this key.
      Returns:
      the string representation
      Since:
      4.0.0
    • asMinimalString

      @NotNull default @NotNull String asMinimalString()
      Returns the string representation of this key in minimal form.

      If the namespace() of this key is MINECRAFT_NAMESPACE, only the value() will be returned.

      Returns:
      the string representation
      Since:
      4.15.0
    • examinableProperties

      @NotNull default @NotNull Stream<? extends net.kyori.examination.ExaminableProperty> examinableProperties()
      Specified by:
      examinableProperties in interface net.kyori.examination.Examinable
    • compareTo

      default int compareTo(@NotNull @NotNull Key that)
      Specified by:
      compareTo in interface Comparable<Key>
    • key

      @NotNull default @NotNull Key key()
      Description copied from interface: Keyed
      Gets the key.
      Specified by:
      key in interface Keyed
      Returns:
      the key