Class RegistryEntry.Reference<T>
- All Implemented Interfaces:
RegistryEntry<T>
- Direct Known Subclasses:
RegistryBuilder.LazyReferenceEntry
- Enclosing interface:
RegistryEntry<T>
There are two types of reference registry entries.
- Stand-alone registry entries are first instantiated by its key, and the value is set when registering the value. This is used by most of the registries.
- Intrusive registry entries are registry entries tied to a specific
registerable object at instantiation time. When instantiating those, it promises
that the object is later registered - which, if broken, will result in a crash.
This is used for
Registries.BLOCK
,Registries.ITEM
,Registries.FLUID
,Registries.ENTITY_TYPE
, andRegistries.GAME_EVENT
registries. This type exists for historical reasons and is deprecated.
Therefore, it is very important to construct any intrusive-entry type object
and register at the same time. For example, a mod that conditionally registers an
Item
has to create an instance only if the condition is met.
(See Registry
for a code example.)
When a reference registry entry is first instantiated, it only has either the key or the value (depending on the type). They are later filled when registering the entry. Attempting to call methods before those fields are filled can cause a crash. Note that if you are just getting the entry from a registry, this should not be a problem.
- See Also:
- Mappings:
Namespace Name official ih$c
intermediary net/minecraft/class_6880$class_6883
named net/minecraft/registry/entry/RegistryEntry$Reference
-
Nested Class Summary
Modifier and TypeClassDescriptionprotected static enum
The types of reference registry entries.Nested classes/interfaces inherited from interface net.minecraft.registry.entry.RegistryEntry
RegistryEntry.Direct<T>, RegistryEntry.Reference<T>
-
Field Summary
Modifier and TypeFieldDescriptionprivate final RegistryEntryOwner<T>
private final RegistryEntry.Reference.Type
private @Nullable RegistryKey<T>
private T
-
Constructor Summary
ModifierConstructorDescriptionprotected
Reference
(RegistryEntry.Reference.Type referenceType, RegistryEntryOwner<T> owner, @Nullable RegistryKey<T> registryKey, T value) -
Method Summary
Modifier and TypeMethodDescriptiongetKey()
Returns the registry key of this entry, or an empty optional if this is a direct entry.com.mojang.datafixers.util.Either<RegistryKey<T>,
T> Returns the object that identifies this registry key.getType()
Returns the type (direct or reference) of this registry entry.boolean
static <T> RegistryEntry.Reference<T>
intrusive
(RegistryEntryOwner<T> owner, T value) Deprecated.Intrusive holders exist for legacy reasons only.boolean
Returns whether this entry is intag
.boolean
matches
(Predicate<RegistryKey<T>> predicate) Returns whether this entry's key matchespredicate
.boolean
matchesId
(Identifier id) Returns whether the ID of this entry isid
.boolean
matchesKey
(RegistryKey<T> key) Returns whether the registry key of this entry iskey
.boolean
ownerEquals
(RegistryEntryOwner<T> owner) Returns the registry key of this entry.(package private) void
setRegistryKey
(RegistryKey<T> registryKey) (package private) void
setTags
(Collection<TagKey<T>> tags) protected void
static <T> RegistryEntry.Reference<T>
standAlone
(RegistryEntryOwner<T> owner, RegistryKey<T> registryKey) Returns a new stand-alone registry entry.Returns a stream of the tags of this entry, or an empty stream if this is a direct entry.toString()
value()
-
Field Details
-
owner
- Mappings:
Namespace Name Mixin selector official a
Lih$c;a:Lik;
intermediary field_40930
Lnet/minecraft/class_6880$class_6883;field_40930:Lnet/minecraft/class_7876;
named owner
Lnet/minecraft/registry/entry/RegistryEntry$Reference;owner:Lnet/minecraft/registry/entry/RegistryEntryOwner;
-
tags
- Mappings:
Namespace Name Mixin selector official b
Lih$c;b:Ljava/util/Set;
intermediary field_36450
Lnet/minecraft/class_6880$class_6883;field_36450:Ljava/util/Set;
named tags
Lnet/minecraft/registry/entry/RegistryEntry$Reference;tags:Ljava/util/Set;
-
referenceType
- Mappings:
Namespace Name Mixin selector official c
Lih$c;c:Lih$c$a;
intermediary field_36451
Lnet/minecraft/class_6880$class_6883;field_36451:Lnet/minecraft/class_6880$class_6883$class_6884;
named referenceType
Lnet/minecraft/registry/entry/RegistryEntry$Reference;referenceType:Lnet/minecraft/registry/entry/RegistryEntry$Reference$Type;
-
registryKey
- Mappings:
Namespace Name Mixin selector official d
Lih$c;d:Lahf;
intermediary field_36452
Lnet/minecraft/class_6880$class_6883;field_36452:Lnet/minecraft/class_5321;
named registryKey
Lnet/minecraft/registry/entry/RegistryEntry$Reference;registryKey:Lnet/minecraft/registry/RegistryKey;
-
value
- Mappings:
Namespace Name Mixin selector official e
Lih$c;e:Ljava/lang/Object;
intermediary field_36453
Lnet/minecraft/class_6880$class_6883;field_36453:Ljava/lang/Object;
named value
Lnet/minecraft/registry/entry/RegistryEntry$Reference;value:Ljava/lang/Object;
-
-
Constructor Details
-
Reference
protected Reference(RegistryEntry.Reference.Type referenceType, RegistryEntryOwner<T> owner, @Nullable @Nullable RegistryKey<T> registryKey, @Nullable T value) - Mappings:
Namespace Name Mixin selector official <init>
Lih$c;<init>(Lih$c$a;Lik;Lahf;Ljava/lang/Object;)V
intermediary <init>
Lnet/minecraft/class_6880$class_6883;<init>(Lnet/minecraft/class_6880$class_6883$class_6884;Lnet/minecraft/class_7876;Lnet/minecraft/class_5321;Ljava/lang/Object;)V
named <init>
Lnet/minecraft/registry/entry/RegistryEntry$Reference;<init>(Lnet/minecraft/registry/entry/RegistryEntry$Reference$Type;Lnet/minecraft/registry/entry/RegistryEntryOwner;Lnet/minecraft/registry/RegistryKey;Ljava/lang/Object;)V
-
-
Method Details
-
standAlone
public static <T> RegistryEntry.Reference<T> standAlone(RegistryEntryOwner<T> owner, RegistryKey<T> registryKey) Returns a new stand-alone registry entry.This should not be called manually. Call
Registry.entryOf(net.minecraft.registry.RegistryKey<T>)
orRegistry.getEntry(int)
instead.Callers are responsible for filling the value later by calling
setValue(T)
.- Returns:
- a new stand-alone registry entry
- Mappings:
Namespace Name Mixin selector official a
Lih$c;a(Lik;Lahf;)Lih$c;
intermediary method_40234
Lnet/minecraft/class_6880$class_6883;method_40234(Lnet/minecraft/class_7876;Lnet/minecraft/class_5321;)Lnet/minecraft/class_6880$class_6883;
named standAlone
Lnet/minecraft/registry/entry/RegistryEntry$Reference;standAlone(Lnet/minecraft/registry/entry/RegistryEntryOwner;Lnet/minecraft/registry/RegistryKey;)Lnet/minecraft/registry/entry/RegistryEntry$Reference;
-
intrusive
@Deprecated public static <T> RegistryEntry.Reference<T> intrusive(RegistryEntryOwner<T> owner, @Nullable T value) Deprecated.Intrusive holders exist for legacy reasons only.Returns a new intrusive registry entry.This should not be called manually. Call
Registry.entryOf(net.minecraft.registry.RegistryKey<T>)
orRegistry.getEntry(int)
instead.Callers are responsible for filling the key later by calling
setRegistryKey(net.minecraft.registry.RegistryKey<T>)
.- Returns:
- a new intrusive registry entry
- Mappings:
Namespace Name Mixin selector official a
Lih$c;a(Lik;Ljava/lang/Object;)Lih$c;
intermediary method_40233
Lnet/minecraft/class_6880$class_6883;method_40233(Lnet/minecraft/class_7876;Ljava/lang/Object;)Lnet/minecraft/class_6880$class_6883;
named intrusive
Lnet/minecraft/registry/entry/RegistryEntry$Reference;intrusive(Lnet/minecraft/registry/entry/RegistryEntryOwner;Ljava/lang/Object;)Lnet/minecraft/registry/entry/RegistryEntry$Reference;
-
registryKey
Returns the registry key of this entry.- Returns:
- the registry key of this entry
- Throws:
IllegalStateException
- if this is an intrusive entry and it is not initialized yet- Mappings:
Namespace Name Mixin selector official g
Lih$c;g()Lahf;
intermediary method_40237
Lnet/minecraft/class_6880$class_6883;method_40237()Lnet/minecraft/class_5321;
named registryKey
Lnet/minecraft/registry/entry/RegistryEntry$Reference;registryKey()Lnet/minecraft/registry/RegistryKey;
-
value
- Specified by:
value
in interfaceRegistryEntry<T>
- Mappings:
Namespace Name Mixin selector official a
Lih;a()Ljava/lang/Object;
intermediary comp_349
Lnet/minecraft/class_6880;comp_349()Ljava/lang/Object;
named value
Lnet/minecraft/registry/entry/RegistryEntry;value()Ljava/lang/Object;
-
matchesId
Returns whether the ID of this entry isid
.This always returns
false
for direct entries.- Specified by:
matchesId
in interfaceRegistryEntry<T>
- Returns:
- whether the ID of this entry is
id
- Mappings:
Namespace Name Mixin selector official a
Lih;a(Lahg;)Z
intermediary method_40226
Lnet/minecraft/class_6880;method_40226(Lnet/minecraft/class_2960;)Z
named matchesId
Lnet/minecraft/registry/entry/RegistryEntry;matchesId(Lnet/minecraft/util/Identifier;)Z
-
matchesKey
Returns whether the registry key of this entry iskey
.This always returns
false
for direct entries.- Specified by:
matchesKey
in interfaceRegistryEntry<T>
- Returns:
- whether the registry key of this entry is
key
- Mappings:
Namespace Name Mixin selector official a
Lih;a(Lahf;)Z
intermediary method_40225
Lnet/minecraft/class_6880;method_40225(Lnet/minecraft/class_5321;)Z
named matchesKey
Lnet/minecraft/registry/entry/RegistryEntry;matchesKey(Lnet/minecraft/registry/RegistryKey;)Z
-
isIn
Returns whether this entry is intag
.This always returns
false
for direct entries, since tags are managed by a registry.- Specified by:
isIn
in interfaceRegistryEntry<T>
- Returns:
- whether this entry is in
tag
- Mappings:
Namespace Name Mixin selector official a
Lih;a(Lasw;)Z
intermediary method_40220
Lnet/minecraft/class_6880;method_40220(Lnet/minecraft/class_6862;)Z
named isIn
Lnet/minecraft/registry/entry/RegistryEntry;isIn(Lnet/minecraft/registry/tag/TagKey;)Z
-
matches
Returns whether this entry's key matchespredicate
.This always returns
false
for direct entries.- Specified by:
matches
in interfaceRegistryEntry<T>
- Returns:
- whether this entry's key matches
predicate
- Mappings:
Namespace Name Mixin selector official a
Lih;a(Ljava/util/function/Predicate;)Z
intermediary method_40224
Lnet/minecraft/class_6880;method_40224(Ljava/util/function/Predicate;)Z
named matches
Lnet/minecraft/registry/entry/RegistryEntry;matches(Ljava/util/function/Predicate;)Z
-
ownerEquals
- Specified by:
ownerEquals
in interfaceRegistryEntry<T>
- Mappings:
Namespace Name Mixin selector official a
Lih;a(Lik;)Z
intermediary method_46745
Lnet/minecraft/class_6880;method_46745(Lnet/minecraft/class_7876;)Z
named ownerEquals
Lnet/minecraft/registry/entry/RegistryEntry;ownerEquals(Lnet/minecraft/registry/entry/RegistryEntryOwner;)Z
-
getKeyOrValue
Returns the object that identifies this registry key.For direct entries, this is the held value, and for reference entries, this is the key of the entry.
- Specified by:
getKeyOrValue
in interfaceRegistryEntry<T>
- Returns:
- the object that identifies this registry key
- Mappings:
Namespace Name Mixin selector official d
Lih;d()Lcom/mojang/datafixers/util/Either;
intermediary method_40229
Lnet/minecraft/class_6880;method_40229()Lcom/mojang/datafixers/util/Either;
named getKeyOrValue
Lnet/minecraft/registry/entry/RegistryEntry;getKeyOrValue()Lcom/mojang/datafixers/util/Either;
-
getKey
Returns the registry key of this entry, or an empty optional if this is a direct entry.- Specified by:
getKey
in interfaceRegistryEntry<T>
- Returns:
- the registry key of this entry, or an empty optional if this is a direct entry
- Mappings:
Namespace Name Mixin selector official e
Lih;e()Ljava/util/Optional;
intermediary method_40230
Lnet/minecraft/class_6880;method_40230()Ljava/util/Optional;
named getKey
Lnet/minecraft/registry/entry/RegistryEntry;getKey()Ljava/util/Optional;
-
getType
Returns the type (direct or reference) of this registry entry.This is different from the types of reference registry entries, i.e. stand-alone or intrusive.
- Specified by:
getType
in interfaceRegistryEntry<T>
- Returns:
- the type (direct or reference) of this registry entry
- Mappings:
Namespace Name Mixin selector official f
Lih;f()Lih$b;
intermediary method_40231
Lnet/minecraft/class_6880;method_40231()Lnet/minecraft/class_6880$class_6882;
named getType
Lnet/minecraft/registry/entry/RegistryEntry;getType()Lnet/minecraft/registry/entry/RegistryEntry$Type;
-
hasKeyAndValue
public boolean hasKeyAndValue()- Specified by:
hasKeyAndValue
in interfaceRegistryEntry<T>
- Mappings:
Namespace Name Mixin selector official b
Lih;b()Z
intermediary method_40227
Lnet/minecraft/class_6880;method_40227()Z
named hasKeyAndValue
Lnet/minecraft/registry/entry/RegistryEntry;hasKeyAndValue()Z
-
setRegistryKey
- Mappings:
Namespace Name Mixin selector official b
Lih$c;b(Lahf;)V
intermediary method_45917
Lnet/minecraft/class_6880$class_6883;method_45917(Lnet/minecraft/class_5321;)V
named setRegistryKey
Lnet/minecraft/registry/entry/RegistryEntry$Reference;setRegistryKey(Lnet/minecraft/registry/RegistryKey;)V
-
setValue
- Mappings:
Namespace Name Mixin selector official b
Lih$c;b(Ljava/lang/Object;)V
intermediary method_45918
Lnet/minecraft/class_6880$class_6883;method_45918(Ljava/lang/Object;)V
named setValue
Lnet/minecraft/registry/entry/RegistryEntry$Reference;setValue(Ljava/lang/Object;)V
-
setTags
- Mappings:
Namespace Name Mixin selector official a
Lih$c;a(Ljava/util/Collection;)V
intermediary method_40235
Lnet/minecraft/class_6880$class_6883;method_40235(Ljava/util/Collection;)V
named setTags
Lnet/minecraft/registry/entry/RegistryEntry$Reference;setTags(Ljava/util/Collection;)V
-
streamTags
Returns a stream of the tags of this entry, or an empty stream if this is a direct entry.- Specified by:
streamTags
in interfaceRegistryEntry<T>
- Returns:
- a stream of the tags of this entry, or an empty stream if this is a direct entry
- Mappings:
Namespace Name Mixin selector official c
Lih;c()Ljava/util/stream/Stream;
intermediary method_40228
Lnet/minecraft/class_6880;method_40228()Ljava/util/stream/Stream;
named streamTags
Lnet/minecraft/registry/entry/RegistryEntry;streamTags()Ljava/util/stream/Stream;
-
toString
-