Package org.bukkit

Class NamespacedKey

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

public final class NamespacedKey extends Object implements net.kyori.adventure.key.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 Summary

    Fields
    Modifier and Type
    Field
    Description
    static final String
    The namespace representing all keys generated by Bukkit for backwards compatibility measures.
    static final String
    The namespace representing all inbuilt keys.

    Fields inherited from interface net.kyori.adventure.key.Key

    DEFAULT_SEPARATOR, MINECRAFT_NAMESPACE
  • Constructor Summary

    Constructors
    Constructor
    Description
    NamespacedKey(@NotNull String namespace, @NotNull String key)
    Create a key in a specific namespace.
    NamespacedKey(@NotNull Plugin plugin, @NotNull String key)
    Create a key in the plugin's namespace.
  • Method Summary

    Modifier and Type
    Method
    Description
    @NotNull String
     
    boolean
     
    static @Nullable NamespacedKey
    fromString(@NotNull String key)
    Get a NamespacedKey from the supplied string.
    static @Nullable NamespacedKey
    fromString(@NotNull String string, @Nullable Plugin defaultNamespace)
    Get a NamespacedKey from the supplied string with a default namespace if a namespace is not defined.
    @NotNull String
    Gets the key corresponding to this resource
    @NotNull String
    Gets the namespace this resource is a part of
    int
     
    static @NotNull NamespacedKey
    minecraft(@NotNull String key)
    Get a key in the Minecraft namespace.
    @NotNull String
     
    static @NotNull NamespacedKey
    Deprecated.
    should never be used by plugins, for internal use only!!
     
    @NotNull String
     

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait

    Methods inherited from interface net.kyori.examination.Examinable

    examinableName, examine

    Methods inherited from interface net.kyori.adventure.key.Key

    asMinimalString, compareTo, examinableProperties, key
  • 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 net.kyori.adventure.key.Key
      Specified by:
      namespace in interface net.kyori.adventure.key.Namespaced
    • value

      @NotNull public @NotNull String value()
      Specified by:
      value in interface net.kyori.adventure.key.Key
    • asString

      @NotNull public @NotNull String asString()
      Specified by:
      asString in interface net.kyori.adventure.key.Key