Class Identifier
- All Implemented Interfaces:
Comparable<Identifier>
- Direct Known Subclasses:
ModelIdentifier
equals(java.lang.Object)
method, not ==
.
Format
Identifiers are formatted as <namespace>:<path>
. If the namespace and colon
are omitted, the namespace defaults to "minecraft".
The namespace and path must contain only ASCII lowercase letters (
[a-z]
), ASCII digits ([0-9]
), or the characters _
, .
, and
-
. The path can also contain the standard path separator
/
. Uppercase letters cannot be used. isValid(java.lang.String)
can be used to check whether a
string is a valid identifier. When handling externally provided identifiers, it should
either validate or use tryParse(java.lang.String)
instead of the constructor. Another common
mistake is using a formatted string with %d
or %f
to construct an
identifier without specifying the locate explicitly, as they are not guaranteed to be
ASCII digits in certain locales. Use String.format(Locale, String, Object[])
with Locale.ROOT
instead of String.formatted(java.lang.Object...)
.
Namespace
The namespace of an identifier identifies the origin of the thing. For example, two mods to the game could both add an item with the ID "orange"; the namespace is used to differentiate the two. (The convention is to use the ID assigned to the mod as the namespace.)
A namespace only determines the source of an identifier, and does not determine its purpose; so long as
two identifiers are used for different purposes, they can share the namespace and path.
For example, the identifier minecraft:dirt
is shared by blocks and items.
There is no need to change the identifier to, say, minecraft_block:dirt
or
minecraft_item:dirt
.
Several namespaces are reserved for vanilla use. While those identifiers can be used for
referencing and overwriting vanilla things, it is highly discouraged to use them to
identify your own, new things. For example, a modded block or a new biome added by
data packs should not use the reserved namespaces, but it's fine to use them when
modifying an existing biome under that namespace. The reserved namespaces are
"minecraft", brigadier
, and "realms".
"minecraft" is also the default namespace used when no namespace is
provided.
Path
The path of the identifier identifies the thing within the namespace, such as between different items from the same mod. Additionally, this is sometimes used to refer to a file path, such as in textures.
Creation
There are many ways to create a new identifier:
Identifier(java.lang.String)
creates an identifier from a string in<namespace>:<path>
format. If the colon is missing, the created identifier has the namespace "minecraft" and the argument is used as the path. When passed an invalid value, this throwsInvalidIdentifierException
.Identifier(java.lang.String,java.lang.String)
creates an identifier from namespace and path. When passed an invalid value, this throwsInvalidIdentifierException
.tryParse(java.lang.String)
creates an identifier from a string in<namespace>:<path>
format. If the colon is missing, the created identifier has the namespace "minecraft" and the argument is used as the path. When passed an invalid value, this returnsnull
.of(java.lang.String, java.lang.String)
creates an identifier from namespace and path. When passed an invalid value, this returnsnull
.fromCommandInput(com.mojang.brigadier.StringReader)
reads an identifier from command input reader. When an invalid value is read, this throwsCOMMAND_EXCEPTION
.Identifier.Serializer
is a serializer for Gson.CODEC
can be used to serialize and deserialize an identifier using DataFixerUpper.
Using Identifier
Identifiers identify several objects in the game. Registry
holds objects, such as blocks and items, that are
identified by an identifier. Textures are also identified using an identifier; such
an identifier is represented as a file path with an extension, such as
minecraft:textures/entity/pig/pig.png
.
The string representation of the identifier (<namespace>:<path>
) can be
obtained by calling toString()
. This always includes the namespace. An identifier
can be converted to a translation key using toTranslationKey(String)
method.
RegistryKey
Identifier is not type-aware; minecraft:tnt
could refer to a TNT block, a TNT
item, or a TNT entity. To identify a registered object uniquely, RegistryKey
can be used. A registry key is a combination
of the registry's identifier and the object's identifier.
- Mappings:
Namespace Name official ahg
intermediary net/minecraft/class_2960
named net/minecraft/util/Identifier
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static interface
A piece of extra data that a subclass may attach to an identifier.static class
-
Field Summary
Modifier and TypeFieldDescriptionstatic final com.mojang.serialization.Codec<Identifier>
private static final com.mojang.brigadier.exceptions.SimpleCommandExceptionType
static final String
private final String
static final char
private final String
static final String
-
Constructor Summary
ModifierConstructorDescriptionIdentifier
(String id) Takes a string of the form<namespace>:<path>
or<path>
which will use the default namespace, for exampleminecraft:iron_ingot
oriron_ingot
.private
Identifier
(String[] id) Identifier
(String namespace, String path) protected
Identifier
(String namespace, String path, @Nullable Identifier.ExtraData extraData) -
Method Summary
Modifier and TypeMethodDescriptionint
compareTo
(Identifier identifier) boolean
static Identifier
fromCommandInput
(com.mojang.brigadier.StringReader reader) Returns the namespace of the identifier.getPath()
Returns the path of the identifier.int
hashCode()
static boolean
isCharValid
(char c) private static boolean
isNamespaceCharacterValid
(char character) Returns whethercharacter
is valid for use in identifier namespaces.static boolean
isNamespaceValid
(String namespace) Returns whethernamespace
can be used as an identifier's namespace.static boolean
isPathCharacterValid
(char character) Returns whethercharacter
is valid for use in identifier paths.static boolean
isPathValid
(String path) Returns whetherpath
can be used as an identifier's path.static boolean
Returns whetherid
can be parsed as an identifier.static @Nullable Identifier
Returns an identifier from the providednamespace
andpath
, ornull
if either argument is invalid.protected static String[]
Splits theid
into an array of two strings at the first occurrence ofdelimiter
, excluding the delimiter character, or uses "minecraft" for the first string in the resulting array when the deliminator does not exist or is the first character.static Identifier
Returns the short translation key, with the default namespace omitted if present.toString()
Returns the long translation key, without omitting the default namespace.toTranslationKey
(String prefix) Returns the long translation key prefixed withprefix
and a dot.toTranslationKey
(String prefix, String suffix) Returns the long translation key prefixed withprefix
and a dot, and suffixed with a dot andsuffix
.Returns the string representation of the identifier with slashes and colons replaced with underscores.static @Nullable Identifier
Returnsid
parsed as an identifier, ornull
if it cannot be parsed.static com.mojang.serialization.DataResult<Identifier>
private static String
validateNamespace
(String namespace, String path) private static String
validatePath
(String namespace, String path) withPath
(UnaryOperator<String> pathFunction) withPrefixedPath
(String prefix) withSuffixedPath
(String suffix)
-
Field Details
-
CODEC
- Mappings:
Namespace Name Mixin selector official a
Lahg;a:Lcom/mojang/serialization/Codec;
intermediary field_25139
Lnet/minecraft/class_2960;field_25139:Lcom/mojang/serialization/Codec;
named CODEC
Lnet/minecraft/util/Identifier;CODEC:Lcom/mojang/serialization/Codec;
-
COMMAND_EXCEPTION
private static final com.mojang.brigadier.exceptions.SimpleCommandExceptionType COMMAND_EXCEPTION- Mappings:
Namespace Name Mixin selector official e
Lahg;e:Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType;
intermediary field_13354
Lnet/minecraft/class_2960;field_13354:Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType;
named COMMAND_EXCEPTION
Lnet/minecraft/util/Identifier;COMMAND_EXCEPTION:Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType;
-
NAMESPACE_SEPARATOR
public static final char NAMESPACE_SEPARATOR- See Also:
- Mappings:
Namespace Name Mixin selector official b
Lahg;b:C
intermediary field_33380
Lnet/minecraft/class_2960;field_33380:C
named NAMESPACE_SEPARATOR
Lnet/minecraft/util/Identifier;NAMESPACE_SEPARATOR:C
-
DEFAULT_NAMESPACE
- See Also:
- Mappings:
Namespace Name Mixin selector official c
Lahg;c:Ljava/lang/String;
intermediary field_33381
Lnet/minecraft/class_2960;field_33381:Ljava/lang/String;
named DEFAULT_NAMESPACE
Lnet/minecraft/util/Identifier;DEFAULT_NAMESPACE:Ljava/lang/String;
-
REALMS_NAMESPACE
- See Also:
- Mappings:
Namespace Name Mixin selector official d
Lahg;d:Ljava/lang/String;
intermediary field_33382
Lnet/minecraft/class_2960;field_33382:Ljava/lang/String;
named REALMS_NAMESPACE
Lnet/minecraft/util/Identifier;REALMS_NAMESPACE:Ljava/lang/String;
-
namespace
- Mappings:
Namespace Name Mixin selector official f
Lahg;f:Ljava/lang/String;
intermediary field_13353
Lnet/minecraft/class_2960;field_13353:Ljava/lang/String;
named namespace
Lnet/minecraft/util/Identifier;namespace:Ljava/lang/String;
-
path
- Mappings:
Namespace Name Mixin selector official g
Lahg;g:Ljava/lang/String;
intermediary field_13355
Lnet/minecraft/class_2960;field_13355:Ljava/lang/String;
named path
Lnet/minecraft/util/Identifier;path:Ljava/lang/String;
-
-
Constructor Details
-
Identifier
protected Identifier(String namespace, String path, @Nullable @Nullable Identifier.ExtraData extraData) - Mappings:
Namespace Name Mixin selector official <init>
Lahg;<init>(Ljava/lang/String;Ljava/lang/String;Lahg$a;)V
intermediary <init>
Lnet/minecraft/class_2960;<init>(Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/class_2960$class_7658;)V
named <init>
Lnet/minecraft/util/Identifier;<init>(Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/util/Identifier$ExtraData;)V
-
Identifier
- Mappings:
Namespace Name Mixin selector official <init>
Lahg;<init>(Ljava/lang/String;Ljava/lang/String;)V
intermediary <init>
Lnet/minecraft/class_2960;<init>(Ljava/lang/String;Ljava/lang/String;)V
named <init>
Lnet/minecraft/util/Identifier;<init>(Ljava/lang/String;Ljava/lang/String;)V
-
Identifier
- Mappings:
Namespace Name Mixin selector official <init>
Lahg;<init>([Ljava/lang/String;)V
intermediary <init>
Lnet/minecraft/class_2960;<init>([Ljava/lang/String;)V
named <init>
Lnet/minecraft/util/Identifier;<init>([Ljava/lang/String;)V
-
Identifier
Takes a string of the form
<namespace>:<path>
or<path>
which will use the default namespace, for exampleminecraft:iron_ingot
oriron_ingot
.The string will be split (on the
:
) into an identifier with the specified path and namespace. Prefer using theIdentifier(java.lang.String, java.lang.String)
constructor that takes the namespace and path as individual parameters to avoid mistakes.If there is no colon in the given string argument, the namespace will be set to "minecraft", and the path will be the given argument. If the colon is the first character of the given string argument (i.e. the namespace is empty), the namespace will also be set to "minecraft", and the path will be the given argument without the initial colon.
- Throws:
InvalidIdentifierException
- if the string cannot be parsed as an identifier.- Mappings:
Namespace Name Mixin selector official <init>
Lahg;<init>(Ljava/lang/String;)V
intermediary <init>
Lnet/minecraft/class_2960;<init>(Ljava/lang/String;)V
named <init>
Lnet/minecraft/util/Identifier;<init>(Ljava/lang/String;)V
-
-
Method Details
-
splitOn
- Mappings:
Namespace Name Mixin selector official a
Lahg;a(Ljava/lang/String;C)Lahg;
intermediary method_12838
Lnet/minecraft/class_2960;method_12838(Ljava/lang/String;C)Lnet/minecraft/class_2960;
named splitOn
Lnet/minecraft/util/Identifier;splitOn(Ljava/lang/String;C)Lnet/minecraft/util/Identifier;
-
tryParse
Returnsid
parsed as an identifier, ornull
if it cannot be parsed.- Returns:
id
parsed as an identifier, ornull
if it cannot be parsed- See Also:
- Mappings:
Namespace Name Mixin selector official a
Lahg;a(Ljava/lang/String;)Lahg;
intermediary method_12829
Lnet/minecraft/class_2960;method_12829(Ljava/lang/String;)Lnet/minecraft/class_2960;
named tryParse
Lnet/minecraft/util/Identifier;tryParse(Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
of
Returns an identifier from the providednamespace
andpath
, ornull
if either argument is invalid.- Returns:
- an identifier from the provided
namespace
andpath
, ornull
if either argument is invalid - See Also:
- Mappings:
Namespace Name Mixin selector official a
Lahg;a(Ljava/lang/String;Ljava/lang/String;)Lahg;
intermediary method_43902
Lnet/minecraft/class_2960;method_43902(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/class_2960;
named of
Lnet/minecraft/util/Identifier;of(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
split
Splits theid
into an array of two strings at the first occurrence ofdelimiter
, excluding the delimiter character, or uses "minecraft" for the first string in the resulting array when the deliminator does not exist or is the first character.- Mappings:
Namespace Name Mixin selector official b
Lahg;b(Ljava/lang/String;C)[Ljava/lang/String;
intermediary method_12830
Lnet/minecraft/class_2960;method_12830(Ljava/lang/String;C)[Ljava/lang/String;
named split
Lnet/minecraft/util/Identifier;split(Ljava/lang/String;C)[Ljava/lang/String;
-
validate
- Mappings:
Namespace Name Mixin selector official b
Lahg;b(Ljava/lang/String;)Lcom/mojang/serialization/DataResult;
intermediary method_29186
Lnet/minecraft/class_2960;method_29186(Ljava/lang/String;)Lcom/mojang/serialization/DataResult;
named validate
Lnet/minecraft/util/Identifier;validate(Ljava/lang/String;)Lcom/mojang/serialization/DataResult;
-
getPath
Returns the path of the identifier.- Returns:
- the path of the identifier
- Mappings:
Namespace Name Mixin selector official a
Lahg;a()Ljava/lang/String;
intermediary method_12832
Lnet/minecraft/class_2960;method_12832()Ljava/lang/String;
named getPath
Lnet/minecraft/util/Identifier;getPath()Ljava/lang/String;
-
getNamespace
Returns the namespace of the identifier.This returns "minecraft" for identifiers created without a namespace.
- Returns:
- the namespace of the identifier
- Mappings:
Namespace Name Mixin selector official b
Lahg;b()Ljava/lang/String;
intermediary method_12836
Lnet/minecraft/class_2960;method_12836()Ljava/lang/String;
named getNamespace
Lnet/minecraft/util/Identifier;getNamespace()Ljava/lang/String;
-
withPath
- Mappings:
Namespace Name Mixin selector official c
Lahg;c(Ljava/lang/String;)Lahg;
intermediary method_45136
Lnet/minecraft/class_2960;method_45136(Ljava/lang/String;)Lnet/minecraft/class_2960;
named withPath
Lnet/minecraft/util/Identifier;withPath(Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
withPath
- Mappings:
Namespace Name Mixin selector official a
Lahg;a(Ljava/util/function/UnaryOperator;)Lahg;
intermediary method_45134
Lnet/minecraft/class_2960;method_45134(Ljava/util/function/UnaryOperator;)Lnet/minecraft/class_2960;
named withPath
Lnet/minecraft/util/Identifier;withPath(Ljava/util/function/UnaryOperator;)Lnet/minecraft/util/Identifier;
-
withPrefixedPath
- Mappings:
Namespace Name Mixin selector official d
Lahg;d(Ljava/lang/String;)Lahg;
intermediary method_45138
Lnet/minecraft/class_2960;method_45138(Ljava/lang/String;)Lnet/minecraft/class_2960;
named withPrefixedPath
Lnet/minecraft/util/Identifier;withPrefixedPath(Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
withSuffixedPath
- Mappings:
Namespace Name Mixin selector official e
Lahg;e(Ljava/lang/String;)Lahg;
intermediary method_48331
Lnet/minecraft/class_2960;method_48331(Ljava/lang/String;)Lnet/minecraft/class_2960;
named withSuffixedPath
Lnet/minecraft/util/Identifier;withSuffixedPath(Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
toString
-
equals
-
hashCode
public int hashCode() -
compareTo
- Specified by:
compareTo
in interfaceComparable<Identifier>
- Mappings:
Namespace Name Mixin selector official a
Lahg;a(Lahg;)I
intermediary method_12833
Lnet/minecraft/class_2960;method_12833(Lnet/minecraft/class_2960;)I
named compareTo
Lnet/minecraft/util/Identifier;compareTo(Lnet/minecraft/util/Identifier;)I
-
toUnderscoreSeparatedString
Returns the string representation of the identifier with slashes and colons replaced with underscores.- Returns:
- the string representation of the identifier with slashes and colons replaced with underscores
- Mappings:
Namespace Name Mixin selector official c
Lahg;c()Ljava/lang/String;
intermediary method_36181
Lnet/minecraft/class_2960;method_36181()Ljava/lang/String;
named toUnderscoreSeparatedString
Lnet/minecraft/util/Identifier;toUnderscoreSeparatedString()Ljava/lang/String;
-
toTranslationKey
Returns the long translation key, without omitting the default namespace.- Returns:
- the long translation key, without omitting the default namespace
- Mappings:
Namespace Name Mixin selector official d
Lahg;d()Ljava/lang/String;
intermediary method_42094
Lnet/minecraft/class_2960;method_42094()Ljava/lang/String;
named toTranslationKey
Lnet/minecraft/util/Identifier;toTranslationKey()Ljava/lang/String;
-
toShortTranslationKey
Returns the short translation key, with the default namespace omitted if present.- Returns:
- the short translation key, with the default namespace omitted if present
- Mappings:
Namespace Name Mixin selector official e
Lahg;e()Ljava/lang/String;
intermediary method_43903
Lnet/minecraft/class_2960;method_43903()Ljava/lang/String;
named toShortTranslationKey
Lnet/minecraft/util/Identifier;toShortTranslationKey()Ljava/lang/String;
-
toTranslationKey
Returns the long translation key prefixed withprefix
and a dot.- Returns:
- the long translation key prefixed with
prefix
and a dot - Mappings:
Namespace Name Mixin selector official f
Lahg;f(Ljava/lang/String;)Ljava/lang/String;
intermediary method_42093
Lnet/minecraft/class_2960;method_42093(Ljava/lang/String;)Ljava/lang/String;
named toTranslationKey
Lnet/minecraft/util/Identifier;toTranslationKey(Ljava/lang/String;)Ljava/lang/String;
-
toTranslationKey
Returns the long translation key prefixed withprefix
and a dot, and suffixed with a dot andsuffix
.- Returns:
- the long translation key prefixed with
prefix
and a dot, and suffixed with a dot andsuffix
- Mappings:
Namespace Name Mixin selector official b
Lahg;b(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
intermediary method_48747
Lnet/minecraft/class_2960;method_48747(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
named toTranslationKey
Lnet/minecraft/util/Identifier;toTranslationKey(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-
fromCommandInput
public static Identifier fromCommandInput(com.mojang.brigadier.StringReader reader) throws com.mojang.brigadier.exceptions.CommandSyntaxException - Throws:
com.mojang.brigadier.exceptions.CommandSyntaxException
- Mappings:
Namespace Name Mixin selector official a
Lahg;a(Lcom/mojang/brigadier/StringReader;)Lahg;
intermediary method_12835
Lnet/minecraft/class_2960;method_12835(Lcom/mojang/brigadier/StringReader;)Lnet/minecraft/class_2960;
named fromCommandInput
Lnet/minecraft/util/Identifier;fromCommandInput(Lcom/mojang/brigadier/StringReader;)Lnet/minecraft/util/Identifier;
-
isCharValid
public static boolean isCharValid(char c) - Mappings:
Namespace Name Mixin selector official a
Lahg;a(C)Z
intermediary method_12831
Lnet/minecraft/class_2960;method_12831(C)Z
named isCharValid
Lnet/minecraft/util/Identifier;isCharValid(C)Z
-
isPathValid
Returns whetherpath
can be used as an identifier's path.- Returns:
- whether
path
can be used as an identifier's path - Mappings:
Namespace Name Mixin selector official g
Lahg;g(Ljava/lang/String;)Z
intermediary method_20208
Lnet/minecraft/class_2960;method_20208(Ljava/lang/String;)Z
named isPathValid
Lnet/minecraft/util/Identifier;isPathValid(Ljava/lang/String;)Z
-
isNamespaceValid
Returns whethernamespace
can be used as an identifier's namespace.- Returns:
- whether
namespace
can be used as an identifier's namespace - Mappings:
Namespace Name Mixin selector official h
Lahg;h(Ljava/lang/String;)Z
intermediary method_20209
Lnet/minecraft/class_2960;method_20209(Ljava/lang/String;)Z
named isNamespaceValid
Lnet/minecraft/util/Identifier;isNamespaceValid(Ljava/lang/String;)Z
-
validateNamespace
- Mappings:
Namespace Name Mixin selector official c
Lahg;c(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
intermediary method_45135
Lnet/minecraft/class_2960;method_45135(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
named validateNamespace
Lnet/minecraft/util/Identifier;validateNamespace(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-
isPathCharacterValid
public static boolean isPathCharacterValid(char character) Returns whethercharacter
is valid for use in identifier paths.- Returns:
- whether
character
is valid for use in identifier paths - Mappings:
Namespace Name Mixin selector official b
Lahg;b(C)Z
intermediary method_29184
Lnet/minecraft/class_2960;method_29184(C)Z
named isPathCharacterValid
Lnet/minecraft/util/Identifier;isPathCharacterValid(C)Z
-
isNamespaceCharacterValid
private static boolean isNamespaceCharacterValid(char character) Returns whethercharacter
is valid for use in identifier namespaces.- Returns:
- whether
character
is valid for use in identifier namespaces - Mappings:
Namespace Name Mixin selector official c
Lahg;c(C)Z
intermediary method_29185
Lnet/minecraft/class_2960;method_29185(C)Z
named isNamespaceCharacterValid
Lnet/minecraft/util/Identifier;isNamespaceCharacterValid(C)Z
-
isValid
Returns whetherid
can be parsed as an identifier.- Returns:
- whether
id
can be parsed as an identifier - Mappings:
Namespace Name Mixin selector official i
Lahg;i(Ljava/lang/String;)Z
intermediary method_20207
Lnet/minecraft/class_2960;method_20207(Ljava/lang/String;)Z
named isValid
Lnet/minecraft/util/Identifier;isValid(Ljava/lang/String;)Z
-
validatePath
- Mappings:
Namespace Name Mixin selector official d
Lahg;d(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
intermediary method_45137
Lnet/minecraft/class_2960;method_45137(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
named validatePath
Lnet/minecraft/util/Identifier;validatePath(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-