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.Serializeris a serializer for Gson.CODECcan 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 acqintermediary net/minecraft/class_2960named net/minecraft/util/Identifier
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static interfaceA piece of extra data that a subclass may attach to an identifier.static class -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final com.mojang.serialization.Codec<Identifier>private static final com.mojang.brigadier.exceptions.SimpleCommandExceptionTypestatic final Stringprivate final Stringstatic final charprivate final Stringstatic final String -
Constructor Summary
ConstructorsModifierConstructorDescriptionIdentifier(String id) Takes a string of the form<namespace>:<path>, for exampleminecraft:iron_ingot.privateIdentifier(String[] id) Identifier(String namespace, String path) protectedIdentifier(String namespace, String path, @Nullable Identifier.ExtraData extraData) -
Method Summary
Modifier and TypeMethodDescriptionintcompareTo(Identifier identifier) booleanstatic IdentifierfromCommandInput(com.mojang.brigadier.StringReader reader) Returns the namespace of the identifier.getPath()Returns the path of the identifier.inthashCode()static booleanisCharValid(char c) private static booleanisNamespaceCharacterValid(char character) Returns whethercharacteris valid for use in identifier namespaces.private static booleanisNamespaceValid(String namespace) Returns whethernamespacecan be used as an identifier's namespace.static booleanisPathCharacterValid(char character) Returns whethercharacteris valid for use in identifier paths.private static booleanisPathValid(String path) Returns whetherpathcan be used as an identifier's path.static booleanReturns whetheridcan be parsed as an identifier.static @Nullable IdentifierReturns an identifier from the providednamespaceandpath, ornullif either argument is invalid.protected static String[]static IdentifierReturns 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 withprefixand a dot.toTranslationKey(String prefix, String suffix) Returns the long translation key prefixed withprefixand a dot, and suffixed with a dot andsuffix.Returns the string representation of the identifier with slashes and colons replaced with underscores.static @Nullable IdentifierReturnsidparsed as an identifier, ornullif it cannot be parsed.static com.mojang.serialization.DataResult<Identifier>private static StringvalidateNamespace(String namespace, String path) private static StringvalidatePath(String namespace, String path) withPath(UnaryOperator<String> pathFunction) withPrefixedPath(String prefix) withSuffixedPath(String suffix)
-
Field Details
-
CODEC
- Mappings:
Namespace Name Mixin selector official aLacq;a:Lcom/mojang/serialization/Codec;intermediary field_25139Lnet/minecraft/class_2960;field_25139:Lcom/mojang/serialization/Codec;named CODECLnet/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 eLacq;e:Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType;intermediary field_13354Lnet/minecraft/class_2960;field_13354:Lcom/mojang/brigadier/exceptions/SimpleCommandExceptionType;named COMMAND_EXCEPTIONLnet/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 bLacq;b:Cintermediary field_33380Lnet/minecraft/class_2960;field_33380:Cnamed NAMESPACE_SEPARATORLnet/minecraft/util/Identifier;NAMESPACE_SEPARATOR:C
-
DEFAULT_NAMESPACE
- See Also:
- Mappings:
Namespace Name Mixin selector official cLacq;c:Ljava/lang/String;intermediary field_33381Lnet/minecraft/class_2960;field_33381:Ljava/lang/String;named DEFAULT_NAMESPACELnet/minecraft/util/Identifier;DEFAULT_NAMESPACE:Ljava/lang/String;
-
REALMS_NAMESPACE
- See Also:
- Mappings:
Namespace Name Mixin selector official dLacq;d:Ljava/lang/String;intermediary field_33382Lnet/minecraft/class_2960;field_33382:Ljava/lang/String;named REALMS_NAMESPACELnet/minecraft/util/Identifier;REALMS_NAMESPACE:Ljava/lang/String;
-
namespace
- Mappings:
Namespace Name Mixin selector official fLacq;f:Ljava/lang/String;intermediary field_13353Lnet/minecraft/class_2960;field_13353:Ljava/lang/String;named namespaceLnet/minecraft/util/Identifier;namespace:Ljava/lang/String;
-
path
- Mappings:
Namespace Name Mixin selector official gLacq;g:Ljava/lang/String;intermediary field_13355Lnet/minecraft/class_2960;field_13355:Ljava/lang/String;named pathLnet/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>Lacq;<init>(Ljava/lang/String;Ljava/lang/String;Lacq$a;)Vintermediary <init>Lnet/minecraft/class_2960;<init>(Ljava/lang/String;Ljava/lang/String;Lnet/minecraft/class_2960$class_7658;)Vnamed <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>Lacq;<init>(Ljava/lang/String;Ljava/lang/String;)Vintermediary <init>Lnet/minecraft/class_2960;<init>(Ljava/lang/String;Ljava/lang/String;)Vnamed <init>Lnet/minecraft/util/Identifier;<init>(Ljava/lang/String;Ljava/lang/String;)V
-
Identifier
- Mappings:
Namespace Name Mixin selector official <init>Lacq;<init>([Ljava/lang/String;)Vintermediary <init>Lnet/minecraft/class_2960;<init>([Ljava/lang/String;)Vnamed <init>Lnet/minecraft/util/Identifier;<init>([Ljava/lang/String;)V
-
Identifier
Takes a string of the form
<namespace>:<path>, for exampleminecraft:iron_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.- Throws:
InvalidIdentifierException- if the string cannot be parsed as an identifier.- Mappings:
Namespace Name Mixin selector official <init>Lacq;<init>(Ljava/lang/String;)Vintermediary <init>Lnet/minecraft/class_2960;<init>(Ljava/lang/String;)Vnamed <init>Lnet/minecraft/util/Identifier;<init>(Ljava/lang/String;)V
-
-
Method Details
-
splitOn
- Mappings:
Namespace Name Mixin selector official aLacq;a(Ljava/lang/String;C)Lacq;intermediary method_12838Lnet/minecraft/class_2960;method_12838(Ljava/lang/String;C)Lnet/minecraft/class_2960;named splitOnLnet/minecraft/util/Identifier;splitOn(Ljava/lang/String;C)Lnet/minecraft/util/Identifier;
-
tryParse
Returnsidparsed as an identifier, ornullif it cannot be parsed.- Returns:
idparsed as an identifier, ornullif it cannot be parsed- See Also:
- Mappings:
Namespace Name Mixin selector official aLacq;a(Ljava/lang/String;)Lacq;intermediary method_12829Lnet/minecraft/class_2960;method_12829(Ljava/lang/String;)Lnet/minecraft/class_2960;named tryParseLnet/minecraft/util/Identifier;tryParse(Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
of
Returns an identifier from the providednamespaceandpath, ornullif either argument is invalid.- Returns:
- an identifier from the provided
namespaceandpath, ornullif either argument is invalid - See Also:
- Mappings:
Namespace Name Mixin selector official aLacq;a(Ljava/lang/String;Ljava/lang/String;)Lacq;intermediary method_43902Lnet/minecraft/class_2960;method_43902(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/class_2960;named ofLnet/minecraft/util/Identifier;of(Ljava/lang/String;Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
split
- Mappings:
Namespace Name Mixin selector official bLacq;b(Ljava/lang/String;C)[Ljava/lang/String;intermediary method_12830Lnet/minecraft/class_2960;method_12830(Ljava/lang/String;C)[Ljava/lang/String;named splitLnet/minecraft/util/Identifier;split(Ljava/lang/String;C)[Ljava/lang/String;
-
validate
- Mappings:
Namespace Name Mixin selector official bLacq;b(Ljava/lang/String;)Lcom/mojang/serialization/DataResult;intermediary method_29186Lnet/minecraft/class_2960;method_29186(Ljava/lang/String;)Lcom/mojang/serialization/DataResult;named validateLnet/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 aLacq;a()Ljava/lang/String;intermediary method_12832Lnet/minecraft/class_2960;method_12832()Ljava/lang/String;named getPathLnet/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 bLacq;b()Ljava/lang/String;intermediary method_12836Lnet/minecraft/class_2960;method_12836()Ljava/lang/String;named getNamespaceLnet/minecraft/util/Identifier;getNamespace()Ljava/lang/String;
-
withPath
- Mappings:
Namespace Name Mixin selector official cLacq;c(Ljava/lang/String;)Lacq;intermediary method_45136Lnet/minecraft/class_2960;method_45136(Ljava/lang/String;)Lnet/minecraft/class_2960;named withPathLnet/minecraft/util/Identifier;withPath(Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
withPath
- Mappings:
Namespace Name Mixin selector official aLacq;a(Ljava/util/function/UnaryOperator;)Lacq;intermediary method_45134Lnet/minecraft/class_2960;method_45134(Ljava/util/function/UnaryOperator;)Lnet/minecraft/class_2960;named withPathLnet/minecraft/util/Identifier;withPath(Ljava/util/function/UnaryOperator;)Lnet/minecraft/util/Identifier;
-
withPrefixedPath
- Mappings:
Namespace Name Mixin selector official dLacq;d(Ljava/lang/String;)Lacq;intermediary method_45138Lnet/minecraft/class_2960;method_45138(Ljava/lang/String;)Lnet/minecraft/class_2960;named withPrefixedPathLnet/minecraft/util/Identifier;withPrefixedPath(Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
withSuffixedPath
- Mappings:
Namespace Name Mixin selector official eLacq;e(Ljava/lang/String;)Lacq;intermediary method_48331Lnet/minecraft/class_2960;method_48331(Ljava/lang/String;)Lnet/minecraft/class_2960;named withSuffixedPathLnet/minecraft/util/Identifier;withSuffixedPath(Ljava/lang/String;)Lnet/minecraft/util/Identifier;
-
toString
-
equals
-
hashCode
public int hashCode() -
compareTo
- Specified by:
compareToin interfaceComparable<Identifier>- Mappings:
Namespace Name Mixin selector official aLacq;a(Lacq;)Iintermediary method_12833Lnet/minecraft/class_2960;method_12833(Lnet/minecraft/class_2960;)Inamed compareToLnet/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 cLacq;c()Ljava/lang/String;intermediary method_36181Lnet/minecraft/class_2960;method_36181()Ljava/lang/String;named toUnderscoreSeparatedStringLnet/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 dLacq;d()Ljava/lang/String;intermediary method_42094Lnet/minecraft/class_2960;method_42094()Ljava/lang/String;named toTranslationKeyLnet/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 eLacq;e()Ljava/lang/String;intermediary method_43903Lnet/minecraft/class_2960;method_43903()Ljava/lang/String;named toShortTranslationKeyLnet/minecraft/util/Identifier;toShortTranslationKey()Ljava/lang/String;
-
toTranslationKey
Returns the long translation key prefixed withprefixand a dot.- Returns:
- the long translation key prefixed with
prefixand a dot - Mappings:
Namespace Name Mixin selector official fLacq;f(Ljava/lang/String;)Ljava/lang/String;intermediary method_42093Lnet/minecraft/class_2960;method_42093(Ljava/lang/String;)Ljava/lang/String;named toTranslationKeyLnet/minecraft/util/Identifier;toTranslationKey(Ljava/lang/String;)Ljava/lang/String;
-
toTranslationKey
Returns the long translation key prefixed withprefixand a dot, and suffixed with a dot andsuffix.- Returns:
- the long translation key prefixed with
prefixand a dot, and suffixed with a dot andsuffix - Mappings:
Namespace Name Mixin selector official bLacq;b(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;intermediary method_48747Lnet/minecraft/class_2960;method_48747(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;named toTranslationKeyLnet/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 aLacq;a(Lcom/mojang/brigadier/StringReader;)Lacq;intermediary method_12835Lnet/minecraft/class_2960;method_12835(Lcom/mojang/brigadier/StringReader;)Lnet/minecraft/class_2960;named fromCommandInputLnet/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 aLacq;a(C)Zintermediary method_12831Lnet/minecraft/class_2960;method_12831(C)Znamed isCharValidLnet/minecraft/util/Identifier;isCharValid(C)Z
-
isPathValid
Returns whetherpathcan be used as an identifier's path.- Returns:
- whether
pathcan be used as an identifier's path - Mappings:
Namespace Name Mixin selector official hLacq;h(Ljava/lang/String;)Zintermediary method_20208Lnet/minecraft/class_2960;method_20208(Ljava/lang/String;)Znamed isPathValidLnet/minecraft/util/Identifier;isPathValid(Ljava/lang/String;)Z
-
isNamespaceValid
Returns whethernamespacecan be used as an identifier's namespace.- Returns:
- whether
namespacecan be used as an identifier's namespace - Mappings:
Namespace Name Mixin selector official iLacq;i(Ljava/lang/String;)Zintermediary method_20209Lnet/minecraft/class_2960;method_20209(Ljava/lang/String;)Znamed isNamespaceValidLnet/minecraft/util/Identifier;isNamespaceValid(Ljava/lang/String;)Z
-
validateNamespace
- Mappings:
Namespace Name Mixin selector official cLacq;c(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;intermediary method_45135Lnet/minecraft/class_2960;method_45135(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;named validateNamespaceLnet/minecraft/util/Identifier;validateNamespace(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-
isPathCharacterValid
public static boolean isPathCharacterValid(char character) Returns whethercharacteris valid for use in identifier paths.- Returns:
- whether
characteris valid for use in identifier paths - Mappings:
Namespace Name Mixin selector official bLacq;b(C)Zintermediary method_29184Lnet/minecraft/class_2960;method_29184(C)Znamed isPathCharacterValidLnet/minecraft/util/Identifier;isPathCharacterValid(C)Z
-
isNamespaceCharacterValid
private static boolean isNamespaceCharacterValid(char character) Returns whethercharacteris valid for use in identifier namespaces.- Returns:
- whether
characteris valid for use in identifier namespaces - Mappings:
Namespace Name Mixin selector official cLacq;c(C)Zintermediary method_29185Lnet/minecraft/class_2960;method_29185(C)Znamed isNamespaceCharacterValidLnet/minecraft/util/Identifier;isNamespaceCharacterValid(C)Z
-
isValid
Returns whetheridcan be parsed as an identifier.- Returns:
- whether
idcan be parsed as an identifier - Mappings:
Namespace Name Mixin selector official gLacq;g(Ljava/lang/String;)Zintermediary method_20207Lnet/minecraft/class_2960;method_20207(Ljava/lang/String;)Znamed isValidLnet/minecraft/util/Identifier;isValid(Ljava/lang/String;)Z
-
validatePath
- Mappings:
Namespace Name Mixin selector official dLacq;d(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;intermediary method_45137Lnet/minecraft/class_2960;method_45137(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;named validatePathLnet/minecraft/util/Identifier;validatePath(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-