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 named net/minecraft/registry/entry/RegistryEntry$Reference
intermediary net/minecraft/class_6880$class_6883
official jq$c
-
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.getTags()
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
matches
(RegistryEntry<T> entry) 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()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface net.minecraft.registry.entry.RegistryEntry
getIdAsString
-
Field Details
-
owner
- Mappings:
Namespace Name Mixin selector named owner
Lnet/minecraft/registry/entry/RegistryEntry$Reference;owner:Lnet/minecraft/registry/entry/RegistryEntryOwner;
intermediary field_40930
Lnet/minecraft/class_6880$class_6883;field_40930:Lnet/minecraft/class_7876;
official a
Ljq$c;a:Ljt;
-
tags
- Mappings:
Namespace Name Mixin selector named tags
Lnet/minecraft/registry/entry/RegistryEntry$Reference;tags:Ljava/util/Set;
intermediary field_36450
Lnet/minecraft/class_6880$class_6883;field_36450:Ljava/util/Set;
official b
Ljq$c;b:Ljava/util/Set;
-
referenceType
- Mappings:
Namespace Name Mixin selector named referenceType
Lnet/minecraft/registry/entry/RegistryEntry$Reference;referenceType:Lnet/minecraft/registry/entry/RegistryEntry$Reference$Type;
intermediary field_36451
Lnet/minecraft/class_6880$class_6883;field_36451:Lnet/minecraft/class_6880$class_6883$class_6884;
official c
Ljq$c;c:Ljq$c$a;
-
registryKey
- Mappings:
Namespace Name Mixin selector named registryKey
Lnet/minecraft/registry/entry/RegistryEntry$Reference;registryKey:Lnet/minecraft/registry/RegistryKey;
intermediary field_36452
Lnet/minecraft/class_6880$class_6883;field_36452:Lnet/minecraft/class_5321;
official d
Ljq$c;d:Laly;
-
value
- Mappings:
Namespace Name Mixin selector named value
Lnet/minecraft/registry/entry/RegistryEntry$Reference;value:Ljava/lang/Object;
intermediary field_36453
Lnet/minecraft/class_6880$class_6883;field_36453:Ljava/lang/Object;
official e
Ljq$c;e: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 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
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
official <init>
Ljq$c;<init>(Ljq$c$a;Ljt;Laly;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
invalid reference
net.minecraft.registry.Registry#entryOf
Registry.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 named standAlone
Lnet/minecraft/registry/entry/RegistryEntry$Reference;standAlone(Lnet/minecraft/registry/entry/RegistryEntryOwner;Lnet/minecraft/registry/RegistryKey;)Lnet/minecraft/registry/entry/RegistryEntry$Reference;
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;
official a
Ljq$c;a(Ljt;Laly;)Ljq$c;
-
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
invalid reference
net.minecraft.registry.Registry#entryOf
Registry.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 named intrusive
Lnet/minecraft/registry/entry/RegistryEntry$Reference;intrusive(Lnet/minecraft/registry/entry/RegistryEntryOwner;Ljava/lang/Object;)Lnet/minecraft/registry/entry/RegistryEntry$Reference;
intermediary method_40233
Lnet/minecraft/class_6880$class_6883;method_40233(Lnet/minecraft/class_7876;Ljava/lang/Object;)Lnet/minecraft/class_6880$class_6883;
official a
Ljq$c;a(Ljt;Ljava/lang/Object;)Ljq$c;
-
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 named registryKey
Lnet/minecraft/registry/entry/RegistryEntry$Reference;registryKey()Lnet/minecraft/registry/RegistryKey;
intermediary method_40237
Lnet/minecraft/class_6880$class_6883;method_40237()Lnet/minecraft/class_5321;
official h
Ljq$c;h()Laly;
-
value
- Specified by:
value
in interfaceRegistryEntry<T>
- Mappings:
Namespace Name Mixin selector named value
Lnet/minecraft/registry/entry/RegistryEntry;value()Ljava/lang/Object;
intermediary comp_349
Lnet/minecraft/class_6880;comp_349()Ljava/lang/Object;
official a
Ljq;a()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 named matchesId
Lnet/minecraft/registry/entry/RegistryEntry;matchesId(Lnet/minecraft/util/Identifier;)Z
intermediary method_40226
Lnet/minecraft/class_6880;method_40226(Lnet/minecraft/class_2960;)Z
official a
Ljq;a(Lalz;)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 named matchesKey
Lnet/minecraft/registry/entry/RegistryEntry;matchesKey(Lnet/minecraft/registry/RegistryKey;)Z
intermediary method_40225
Lnet/minecraft/class_6880;method_40225(Lnet/minecraft/class_5321;)Z
official a
Ljq;a(Laly;)Z
-
getTags
- Mappings:
Namespace Name Mixin selector named getTags
Lnet/minecraft/registry/entry/RegistryEntry$Reference;getTags()Ljava/util/Set;
intermediary method_62677
Lnet/minecraft/class_6880$class_6883;method_62677()Ljava/util/Set;
official i
Ljq$c;i()Ljava/util/Set;
-
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 named isIn
Lnet/minecraft/registry/entry/RegistryEntry;isIn(Lnet/minecraft/registry/tag/TagKey;)Z
intermediary method_40220
Lnet/minecraft/class_6880;method_40220(Lnet/minecraft/class_6862;)Z
official a
Ljq;a(Layk;)Z
-
matches
- Specified by:
matches
in interfaceRegistryEntry<T>
- Mappings:
Namespace Name Mixin selector named matches
Lnet/minecraft/registry/entry/RegistryEntry;matches(Lnet/minecraft/registry/entry/RegistryEntry;)Z
intermediary method_55838
Lnet/minecraft/class_6880;method_55838(Lnet/minecraft/class_6880;)Z
official a
Ljq;a(Ljq;)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 named matches
Lnet/minecraft/registry/entry/RegistryEntry;matches(Ljava/util/function/Predicate;)Z
intermediary method_40224
Lnet/minecraft/class_6880;method_40224(Ljava/util/function/Predicate;)Z
official a
Ljq;a(Ljava/util/function/Predicate;)Z
-
ownerEquals
- Specified by:
ownerEquals
in interfaceRegistryEntry<T>
- Mappings:
Namespace Name Mixin selector named ownerEquals
Lnet/minecraft/registry/entry/RegistryEntry;ownerEquals(Lnet/minecraft/registry/entry/RegistryEntryOwner;)Z
intermediary method_46745
Lnet/minecraft/class_6880;method_46745(Lnet/minecraft/class_7876;)Z
official a
Ljq;a(Ljt;)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 named getKeyOrValue
Lnet/minecraft/registry/entry/RegistryEntry;getKeyOrValue()Lcom/mojang/datafixers/util/Either;
intermediary method_40229
Lnet/minecraft/class_6880;method_40229()Lcom/mojang/datafixers/util/Either;
official d
Ljq;d()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 named getKey
Lnet/minecraft/registry/entry/RegistryEntry;getKey()Ljava/util/Optional;
intermediary method_40230
Lnet/minecraft/class_6880;method_40230()Ljava/util/Optional;
official e
Ljq;e()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 named getType
Lnet/minecraft/registry/entry/RegistryEntry;getType()Lnet/minecraft/registry/entry/RegistryEntry$Type;
intermediary method_40231
Lnet/minecraft/class_6880;method_40231()Lnet/minecraft/class_6880$class_6882;
official f
Ljq;f()Ljq$b;
-
hasKeyAndValue
public boolean hasKeyAndValue()- Specified by:
hasKeyAndValue
in interfaceRegistryEntry<T>
- Mappings:
Namespace Name Mixin selector named hasKeyAndValue
Lnet/minecraft/registry/entry/RegistryEntry;hasKeyAndValue()Z
intermediary method_40227
Lnet/minecraft/class_6880;method_40227()Z
official b
Ljq;b()Z
-
setRegistryKey
- Mappings:
Namespace Name Mixin selector named setRegistryKey
Lnet/minecraft/registry/entry/RegistryEntry$Reference;setRegistryKey(Lnet/minecraft/registry/RegistryKey;)V
intermediary method_45917
Lnet/minecraft/class_6880$class_6883;method_45917(Lnet/minecraft/class_5321;)V
official b
Ljq$c;b(Laly;)V
-
setValue
- Mappings:
Namespace Name Mixin selector named setValue
Lnet/minecraft/registry/entry/RegistryEntry$Reference;setValue(Ljava/lang/Object;)V
intermediary method_45918
Lnet/minecraft/class_6880$class_6883;method_45918(Ljava/lang/Object;)V
official b
Ljq$c;b(Ljava/lang/Object;)V
-
setTags
- Mappings:
Namespace Name Mixin selector named setTags
Lnet/minecraft/registry/entry/RegistryEntry$Reference;setTags(Ljava/util/Collection;)V
intermediary method_40235
Lnet/minecraft/class_6880$class_6883;method_40235(Ljava/util/Collection;)V
official a
Ljq$c;a(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 named streamTags
Lnet/minecraft/registry/entry/RegistryEntry;streamTags()Ljava/util/stream/Stream;
intermediary method_40228
Lnet/minecraft/class_6880;method_40228()Ljava/util/stream/Stream;
official c
Ljq;c()Ljava/util/stream/Stream;
-
toString
-