Package org.bukkit

Class NamespacedKey

java.lang.Object
org.bukkit.NamespacedKey
All Implemented Interfaces:
Namespaced, Comparable<Key>, Key, Keyed, Namespaced, net.kyori.examination.Examinable

public final class NamespacedKey extends Object implements Key, Namespaced
Represents a String based key which consists of two components - a namespace and a key. Namespaces may only contain lowercase alphanumeric characters, periods, underscores, and hyphens.

Keys may only contain lowercase alphanumeric characters, periods, underscores, hyphens, and forward slashes.

  • Field Details

    • MINECRAFT

      public static final String MINECRAFT
      The namespace representing all inbuilt keys.
      See Also:
    • BUKKIT

      public static final String BUKKIT
      The namespace representing all keys generated by Bukkit for backwards compatibility measures.
      See Also:
  • Constructor Details

    • NamespacedKey

      public NamespacedKey(@NotNull @NotNull String namespace, @NotNull @NotNull String key)
      Create a key in a specific namespace.

      For most plugin related code, you should prefer using the NamespacedKey(Plugin, String) constructor.

      Parameters:
      namespace - namespace
      key - key
      See Also:
    • NamespacedKey

      public NamespacedKey(@NotNull @NotNull Plugin plugin, @NotNull @NotNull String key)
      Create a key in the plugin's namespace.

      Namespaces may only contain lowercase alphanumeric characters, periods, underscores, and hyphens.

      Keys may only contain lowercase alphanumeric characters, periods, underscores, hyphens, and forward slashes.

      Parameters:
      plugin - the plugin to use for the namespace
      key - the key to create
  • Method Details

    • getNamespace

      @NotNull public @NotNull String getNamespace()
      Description copied from interface: Namespaced
      Gets the namespace this resource is a part of

      This is contractually obligated to only contain lowercase alphanumeric characters, periods, underscores, and hyphens.

      Specified by:
      getNamespace in interface Namespaced
      Returns:
      resource namespace
    • getKey

      @NotNull public @NotNull String getKey()
      Description copied from interface: Namespaced
      Gets the key corresponding to this resource

      This is contractually obligated to only contain lowercase alphanumeric characters, periods, underscores, hyphens, and forward slashes.

      Specified by:
      getKey in interface Namespaced
      Returns:
      resource key
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

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

      @Internal @NotNull @Deprecated(since="1.20.5") public static @NotNull NamespacedKey randomKey()
      Deprecated.
      should never be used by plugins, for internal use only!!
      Return a new random key in the BUKKIT namespace.
      Returns:
      new key
    • minecraft

      @NotNull public static @NotNull NamespacedKey minecraft(@NotNull @NotNull String key)
      Get a key in the Minecraft namespace.
      Parameters:
      key - the key to use
      Returns:
      new key in the Minecraft namespace
    • fromString

      @Nullable public static @Nullable NamespacedKey fromString(@NotNull @NotNull String string, @Nullable @Nullable Plugin defaultNamespace)
      Get a NamespacedKey from the supplied string with a default namespace if a namespace is not defined. This is a utility method meant to fetch a NamespacedKey from user input. Please note that casing does matter and any instance of uppercase characters will be considered invalid. The input contract is as follows:
       fromString("foo", plugin) -> "plugin:foo"
       fromString("foo:bar", plugin) -> "foo:bar"
       fromString(":foo", null) -> "minecraft:foo"
       fromString("foo", null) -> "minecraft:foo"
       fromString("Foo", plugin) -> null
       fromString(":Foo", plugin) -> null
       fromString("foo:bar:bazz", plugin) -> null
       fromString("", plugin) -> null
       
      Parameters:
      string - the string to convert to a NamespacedKey
      defaultNamespace - the default namespace to use if none was supplied. If null, the minecraft namespace (minecraft(String)) will be used
      Returns:
      the created NamespacedKey. null if invalid key
      See Also:
    • fromString

      @Nullable public static @Nullable NamespacedKey fromString(@NotNull @NotNull String key)
      Get a NamespacedKey from the supplied string. The default namespace will be Minecraft's (i.e. minecraft(String)).
      Parameters:
      key - the key to convert to a NamespacedKey
      Returns:
      the created NamespacedKey. null if invalid
      See Also:
    • namespace

      @NotNull public @NotNull String namespace()
      Specified by:
      namespace in interface Key
      Specified by:
      namespace in interface Namespaced
    • value

      @NotNull public @NotNull String value()
      Specified by:
      value in interface Key
    • asString

      @NotNull public @NotNull String asString()
      Specified by:
      asString in interface Key