Class CapabilityListenerHolder
java.lang.Object
net.neoforged.neoforge.capabilities.CapabilityListenerHolder
Holder for capability listeners associated to a level.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final it.unimi.dsi.fastutil.longs.Long2ReferenceMap<it.unimi.dsi.fastutil.longs.Long2ReferenceMap<Set<CapabilityListenerHolder.ListenerReference>>> Map of chunk pos -> block pos -> listeners map.private final ReferenceQueue<ICapabilityInvalidationListener> Reference queue for the listener references. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddListener(BlockPos pos, ICapabilityInvalidationListener listener) Adds a listener.voidclean()Poll the reference queue, and remove garbage-collected listener references entries frombyChunkThenBlock.voidinvalidateChunk(ChunkPos chunkPos) Invalidates listeners at a specific chunk position.private voidvoidinvalidatePos(BlockPos pos) Invalidates listeners at a specific block position.
-
Field Details
-
byChunkThenBlock
private final it.unimi.dsi.fastutil.longs.Long2ReferenceMap<it.unimi.dsi.fastutil.longs.Long2ReferenceMap<Set<CapabilityListenerHolder.ListenerReference>>> byChunkThenBlockMap of chunk pos -> block pos -> listeners map.We have a two-level map to efficiently invalidate entire chunks at once.
-
queue
Reference queue for the listener references. This allows us to listen to reference garbage collection, and remove empty entries frombyChunkThenBlock.
-
-
Constructor Details
-
CapabilityListenerHolder
public CapabilityListenerHolder()
-
-
Method Details
-
addListener
Adds a listener. -
invalidatePos
Invalidates listeners at a specific block position. -
invalidateChunk
Invalidates listeners at a specific chunk position. -
invalidateList
-
clean
public void clean()Poll the reference queue, and remove garbage-collected listener references entries frombyChunkThenBlock.
-