Interface Key

All Superinterfaces:
Comparable<Key>, Keyed, Namespaced

public interface Key extends Comparable<Key>, 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 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

      static Key key(@KeyPattern 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

      static Key key(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

      static Key key(Namespaced namespaced, @Value 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

      static Key key(@Namespace String namespace, @Value 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

      static 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 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(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

      static OptionalInt checkNamespace(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(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

      static OptionalInt checkValue(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 String namespace()
      Gets the namespace.
      Specified by:
      namespace in interface Namespaced
      Returns:
      the namespace
      Since:
      4.0.0
    • value

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

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

      default 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
    • compareTo

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

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