Package net.minecraft.world.chunk.light
Class LightStorage<M extends ChunkToNibbleArrayMap<M>>
java.lang.Object
net.minecraft.world.chunk.light.LevelPropagator
net.minecraft.world.SectionDistanceLevelPropagator
net.minecraft.world.chunk.light.LightStorage<M>
- Direct Known Subclasses:
BlockLightStorage
,SkyLightStorage
public abstract class LightStorage<M extends ChunkToNibbleArrayMap<M>> extends SectionDistanceLevelPropagator
LightStorage handles the access, storage and propagation of a specific kind of light within the world.
For example, separate instances will be used to store block light as opposed to sky light.
The smallest unit within LightStorage is the section. Sections represent a cube of 16x16x16 blocks and their lighting data. In turn, 16 sections stacked on top of each other form a column, which are analogous to the standard 16x256x16 world chunks.
To avoid allocations, LightStorage packs all the coordinate arguments into single long values. Extra care should be taken to ensure that the relevant types are being used where appropriate.
- See Also:
SkyLightStorage
,BlockLightStorage
- Mappings:
Namespace Name official dab
intermediary net/minecraft/class_3560
named net/minecraft/world/chunk/light/LightStorage
-
Field Summary
Fields Modifier and Type Field Description private ChunkProvider
chunkProvider
private LongSet
columnsToRetain
private static Direction[]
DIRECTIONS
protected LongSet
dirtySections
protected static ChunkNibbleArray
EMPTY
protected boolean
hasLightUpdates
private LightType
lightType
protected LongSet
markedNotReadySections
protected LongSet
markedReadySections
protected LongSet
notifySections
private LongSet
queuedEdgeSections
protected Long2ObjectMap<ChunkNibbleArray>
queuedSections
protected LongSet
readySections
private LongSet
sectionsToRemove
protected M
storage
protected M
uncachedStorage
-
Constructor Summary
Constructors Modifier Constructor Description protected
LightStorage(LightType lightType, ChunkProvider chunkProvider, M lightData)
-
Method Summary
Modifier and Type Method Description protected ChunkNibbleArray
createSection(long sectionPos)
protected void
enqueueSectionData(long sectionPos, ChunkNibbleArray array, boolean bool)
protected int
get(long blockPos)
protected int
getInitialLevel(long id)
protected int
getLevel(long id)
protected abstract int
getLight(long blockPos)
ChunkNibbleArray
getLightSection(long sectionPos)
protected ChunkNibbleArray
getLightSection(long sectionPos, boolean cached)
protected ChunkNibbleArray
getLightSection(M storage, long sectionPos)
protected boolean
hasLightUpdates()
protected boolean
hasSection(long sectionPos)
protected void
notifyChanges()
protected void
onLoadSection(long sectionPos)
protected void
onUnloadSection(long sectionPos)
protected void
removeSection(ChunkLightProvider<?,?> storage, long sectionPos)
protected void
set(long blockPos, int value)
protected void
setColumnEnabled(long columnPos, boolean enabled)
protected void
setLevel(long id, int level)
void
setRetainColumn(long sectionPos, boolean retain)
protected void
setSectionStatus(long sectionPos, boolean notReady)
protected void
updateAll()
protected void
updateLight(ChunkLightProvider<M,?> lightProvider, boolean doSkylight, boolean skipEdgeLightPropagation)
private void
updateSection(ChunkLightProvider<M,?> lightProvider, long sectionPos)
Methods inherited from class net.minecraft.world.SectionDistanceLevelPropagator
getPropagatedLevel, isMarker, propagateLevel, recalculateLevel, update
Methods inherited from class net.minecraft.world.chunk.light.LevelPropagator
applyPendingUpdates, getPendingUpdateCount, hasPendingUpdates, propagateLevel, removePendingUpdate, removePendingUpdateIf, resetLevel, updateLevel
-
Field Details
-
EMPTY
- Mappings:
Namespace Name Mixin selector official a
Ldab;a:Lcjq;
intermediary field_15801
Lnet/minecraft/class_3560;field_15801:Lnet/minecraft/class_2804;
named EMPTY
Lnet/minecraft/world/chunk/light/LightStorage;EMPTY:Lnet/minecraft/world/chunk/ChunkNibbleArray;
-
DIRECTIONS
- Mappings:
Namespace Name Mixin selector official k
Ldab;k:[Lgc;
intermediary field_15799
Lnet/minecraft/class_3560;field_15799:[Lnet/minecraft/class_2350;
named DIRECTIONS
Lnet/minecraft/world/chunk/light/LightStorage;DIRECTIONS:[Lnet/minecraft/util/math/Direction;
-
lightType
- Mappings:
Namespace Name Mixin selector official l
Ldab;l:Lbue;
intermediary field_15805
Lnet/minecraft/class_3560;field_15805:Lnet/minecraft/class_1944;
named lightType
Lnet/minecraft/world/chunk/light/LightStorage;lightType:Lnet/minecraft/world/LightType;
-
chunkProvider
- Mappings:
Namespace Name Mixin selector official m
Ldab;m:Lcjy;
intermediary field_15803
Lnet/minecraft/class_3560;field_15803:Lnet/minecraft/class_2823;
named chunkProvider
Lnet/minecraft/world/chunk/light/LightStorage;chunkProvider:Lnet/minecraft/world/chunk/ChunkProvider;
-
readySections
- Mappings:
Namespace Name Mixin selector official b
Ldab;b:Lit/unimi/dsi/fastutil/longs/LongSet;
intermediary field_15808
Lnet/minecraft/class_3560;field_15808:Lit/unimi/dsi/fastutil/longs/LongSet;
named readySections
Lnet/minecraft/world/chunk/light/LightStorage;readySections:Lit/unimi/dsi/fastutil/longs/LongSet;
-
markedNotReadySections
- Mappings:
Namespace Name Mixin selector official c
Ldab;c:Lit/unimi/dsi/fastutil/longs/LongSet;
intermediary field_15797
Lnet/minecraft/class_3560;field_15797:Lit/unimi/dsi/fastutil/longs/LongSet;
named markedNotReadySections
Lnet/minecraft/world/chunk/light/LightStorage;markedNotReadySections:Lit/unimi/dsi/fastutil/longs/LongSet;
-
markedReadySections
- Mappings:
Namespace Name Mixin selector official d
Ldab;d:Lit/unimi/dsi/fastutil/longs/LongSet;
intermediary field_15804
Lnet/minecraft/class_3560;field_15804:Lit/unimi/dsi/fastutil/longs/LongSet;
named markedReadySections
Lnet/minecraft/world/chunk/light/LightStorage;markedReadySections:Lit/unimi/dsi/fastutil/longs/LongSet;
-
uncachedStorage
- Mappings:
Namespace Name Mixin selector official e
Ldab;e:Lczw;
intermediary field_15806
Lnet/minecraft/class_3560;field_15806:Lnet/minecraft/class_3556;
named uncachedStorage
Lnet/minecraft/world/chunk/light/LightStorage;uncachedStorage:Lnet/minecraft/world/chunk/ChunkToNibbleArrayMap;
-
storage
- Mappings:
Namespace Name Mixin selector official f
Ldab;f:Lczw;
intermediary field_15796
Lnet/minecraft/class_3560;field_15796:Lnet/minecraft/class_3556;
named storage
Lnet/minecraft/world/chunk/light/LightStorage;storage:Lnet/minecraft/world/chunk/ChunkToNibbleArrayMap;
-
dirtySections
- Mappings:
Namespace Name Mixin selector official g
Ldab;g:Lit/unimi/dsi/fastutil/longs/LongSet;
intermediary field_15802
Lnet/minecraft/class_3560;field_15802:Lit/unimi/dsi/fastutil/longs/LongSet;
named dirtySections
Lnet/minecraft/world/chunk/light/LightStorage;dirtySections:Lit/unimi/dsi/fastutil/longs/LongSet;
-
notifySections
- Mappings:
Namespace Name Mixin selector official h
Ldab;h:Lit/unimi/dsi/fastutil/longs/LongSet;
intermediary field_16448
Lnet/minecraft/class_3560;field_16448:Lit/unimi/dsi/fastutil/longs/LongSet;
named notifySections
Lnet/minecraft/world/chunk/light/LightStorage;notifySections:Lit/unimi/dsi/fastutil/longs/LongSet;
-
queuedSections
- Mappings:
Namespace Name Mixin selector official i
Ldab;i:Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;
intermediary field_15807
Lnet/minecraft/class_3560;field_15807:Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;
named queuedSections
Lnet/minecraft/world/chunk/light/LightStorage;queuedSections:Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;
-
queuedEdgeSections
- Mappings:
Namespace Name Mixin selector official n
Ldab;n:Lit/unimi/dsi/fastutil/longs/LongSet;
intermediary field_25621
Lnet/minecraft/class_3560;field_25621:Lit/unimi/dsi/fastutil/longs/LongSet;
named queuedEdgeSections
Lnet/minecraft/world/chunk/light/LightStorage;queuedEdgeSections:Lit/unimi/dsi/fastutil/longs/LongSet;
-
columnsToRetain
- Mappings:
Namespace Name Mixin selector official o
Ldab;o:Lit/unimi/dsi/fastutil/longs/LongSet;
intermediary field_19342
Lnet/minecraft/class_3560;field_19342:Lit/unimi/dsi/fastutil/longs/LongSet;
named columnsToRetain
Lnet/minecraft/world/chunk/light/LightStorage;columnsToRetain:Lit/unimi/dsi/fastutil/longs/LongSet;
-
sectionsToRemove
- Mappings:
Namespace Name Mixin selector official p
Ldab;p:Lit/unimi/dsi/fastutil/longs/LongSet;
intermediary field_15798
Lnet/minecraft/class_3560;field_15798:Lit/unimi/dsi/fastutil/longs/LongSet;
named sectionsToRemove
Lnet/minecraft/world/chunk/light/LightStorage;sectionsToRemove:Lit/unimi/dsi/fastutil/longs/LongSet;
-
hasLightUpdates
protected volatile boolean hasLightUpdates- Mappings:
Namespace Name Mixin selector official j
Ldab;j:Z
intermediary field_15800
Lnet/minecraft/class_3560;field_15800:Z
named hasLightUpdates
Lnet/minecraft/world/chunk/light/LightStorage;hasLightUpdates:Z
-
-
Constructor Details
-
LightStorage
- Mappings:
Namespace Name Mixin selector official <init>
Ldab;<init>(Lbue;Lcjy;Lczw;)V
intermediary <init>
Lnet/minecraft/class_3560;<init>(Lnet/minecraft/class_1944;Lnet/minecraft/class_2823;Lnet/minecraft/class_3556;)V
named <init>
Lnet/minecraft/world/chunk/light/LightStorage;<init>(Lnet/minecraft/world/LightType;Lnet/minecraft/world/chunk/ChunkProvider;Lnet/minecraft/world/chunk/ChunkToNibbleArrayMap;)V
-
-
Method Details
-
hasSection
protected boolean hasSection(long sectionPos)- Mappings:
Namespace Name Mixin selector official g
Ldab;g(J)Z
intermediary method_15524
Lnet/minecraft/class_3560;method_15524(J)Z
named hasSection
Lnet/minecraft/world/chunk/light/LightStorage;hasSection(J)Z
-
getLightSection
- Mappings:
Namespace Name Mixin selector official a
Ldab;a(JZ)Lcjq;
intermediary method_15522
Lnet/minecraft/class_3560;method_15522(JZ)Lnet/minecraft/class_2804;
named getLightSection
Lnet/minecraft/world/chunk/light/LightStorage;getLightSection(JZ)Lnet/minecraft/world/chunk/ChunkNibbleArray;
-
getLightSection
- Mappings:
Namespace Name Mixin selector official a
Ldab;a(Lczw;J)Lcjq;
intermediary method_15533
Lnet/minecraft/class_3560;method_15533(Lnet/minecraft/class_3556;J)Lnet/minecraft/class_2804;
named getLightSection
Lnet/minecraft/world/chunk/light/LightStorage;getLightSection(Lnet/minecraft/world/chunk/ChunkToNibbleArrayMap;J)Lnet/minecraft/world/chunk/ChunkNibbleArray;
-
getLightSection
- Mappings:
Namespace Name Mixin selector official h
Ldab;h(J)Lcjq;
intermediary method_20533
Lnet/minecraft/class_3560;method_20533(J)Lnet/minecraft/class_2804;
named getLightSection
Lnet/minecraft/world/chunk/light/LightStorage;getLightSection(J)Lnet/minecraft/world/chunk/ChunkNibbleArray;
-
getLight
protected abstract int getLight(long blockPos)- Mappings:
Namespace Name Mixin selector official d
Ldab;d(J)I
intermediary method_15538
Lnet/minecraft/class_3560;method_15538(J)I
named getLight
Lnet/minecraft/world/chunk/light/LightStorage;getLight(J)I
-
get
protected int get(long blockPos)- Mappings:
Namespace Name Mixin selector official i
Ldab;i(J)I
intermediary method_15537
Lnet/minecraft/class_3560;method_15537(J)I
named get
Lnet/minecraft/world/chunk/light/LightStorage;get(J)I
-
set
protected void set(long blockPos, int value)- Mappings:
Namespace Name Mixin selector official b
Ldab;b(JI)V
intermediary method_15525
Lnet/minecraft/class_3560;method_15525(JI)V
named set
Lnet/minecraft/world/chunk/light/LightStorage;set(JI)V
-
getLevel
protected int getLevel(long id)- Specified by:
getLevel
in classLevelPropagator
- Mappings:
Namespace Name Mixin selector official c
Lczx;c(J)I
intermediary method_15480
Lnet/minecraft/class_3554;method_15480(J)I
named getLevel
Lnet/minecraft/world/chunk/light/LevelPropagator;getLevel(J)I
-
getInitialLevel
protected int getInitialLevel(long id)- Specified by:
getInitialLevel
in classSectionDistanceLevelPropagator
- Mappings:
Namespace Name Mixin selector official b
Laar;b(J)I
intermediary method_18749
Lnet/minecraft/class_4079;method_18749(J)I
named getInitialLevel
Lnet/minecraft/world/SectionDistanceLevelPropagator;getInitialLevel(J)I
-
setLevel
protected void setLevel(long id, int level)- Specified by:
setLevel
in classLevelPropagator
- Mappings:
Namespace Name Mixin selector official a
Lczx;a(JI)V
intermediary method_15485
Lnet/minecraft/class_3554;method_15485(JI)V
named setLevel
Lnet/minecraft/world/chunk/light/LevelPropagator;setLevel(JI)V
-
createSection
- Mappings:
Namespace Name Mixin selector official j
Ldab;j(J)Lcjq;
intermediary method_15529
Lnet/minecraft/class_3560;method_15529(J)Lnet/minecraft/class_2804;
named createSection
Lnet/minecraft/world/chunk/light/LightStorage;createSection(J)Lnet/minecraft/world/chunk/ChunkNibbleArray;
-
removeSection
- Mappings:
Namespace Name Mixin selector official a
Ldab;a(Lczz;J)V
intermediary method_15536
Lnet/minecraft/class_3560;method_15536(Lnet/minecraft/class_3558;J)V
named removeSection
Lnet/minecraft/world/chunk/light/LightStorage;removeSection(Lnet/minecraft/world/chunk/light/ChunkLightProvider;J)V
-
hasLightUpdates
protected boolean hasLightUpdates()- Mappings:
Namespace Name Mixin selector official a
Ldab;a()Z
intermediary method_15528
Lnet/minecraft/class_3560;method_15528()Z
named hasLightUpdates
Lnet/minecraft/world/chunk/light/LightStorage;hasLightUpdates()Z
-
updateLight
protected void updateLight(ChunkLightProvider<M,?> lightProvider, boolean doSkylight, boolean skipEdgeLightPropagation)- Mappings:
Namespace Name Mixin selector official a
Ldab;a(Lczz;ZZ)V
intermediary method_15527
Lnet/minecraft/class_3560;method_15527(Lnet/minecraft/class_3558;ZZ)V
named updateLight
Lnet/minecraft/world/chunk/light/LightStorage;updateLight(Lnet/minecraft/world/chunk/light/ChunkLightProvider;ZZ)V
-
updateSection
- Mappings:
Namespace Name Mixin selector official b
Ldab;b(Lczz;J)V
intermediary method_29967
Lnet/minecraft/class_3560;method_29967(Lnet/minecraft/class_3558;J)V
named updateSection
Lnet/minecraft/world/chunk/light/LightStorage;updateSection(Lnet/minecraft/world/chunk/light/ChunkLightProvider;J)V
-
onLoadSection
protected void onLoadSection(long sectionPos)- Mappings:
Namespace Name Mixin selector official k
Ldab;k(J)V
intermediary method_15523
Lnet/minecraft/class_3560;method_15523(J)V
named onLoadSection
Lnet/minecraft/world/chunk/light/LightStorage;onLoadSection(J)V
-
onUnloadSection
protected void onUnloadSection(long sectionPos)- Mappings:
Namespace Name Mixin selector official l
Ldab;l(J)V
intermediary method_15534
Lnet/minecraft/class_3560;method_15534(J)V
named onUnloadSection
Lnet/minecraft/world/chunk/light/LightStorage;onUnloadSection(J)V
-
setColumnEnabled
protected void setColumnEnabled(long columnPos, boolean enabled)- Mappings:
Namespace Name Mixin selector official b
Ldab;b(JZ)V
intermediary method_15535
Lnet/minecraft/class_3560;method_15535(JZ)V
named setColumnEnabled
Lnet/minecraft/world/chunk/light/LightStorage;setColumnEnabled(JZ)V
-
setRetainColumn
public void setRetainColumn(long sectionPos, boolean retain)- Mappings:
Namespace Name Mixin selector official c
Ldab;c(JZ)V
intermediary method_20600
Lnet/minecraft/class_3560;method_20600(JZ)V
named setRetainColumn
Lnet/minecraft/world/chunk/light/LightStorage;setRetainColumn(JZ)V
-
enqueueSectionData
- Mappings:
Namespace Name Mixin selector official a
Ldab;a(JLcjq;Z)V
intermediary method_15532
Lnet/minecraft/class_3560;method_15532(JLnet/minecraft/class_2804;Z)V
named enqueueSectionData
Lnet/minecraft/world/chunk/light/LightStorage;enqueueSectionData(JLnet/minecraft/world/chunk/ChunkNibbleArray;Z)V
-
setSectionStatus
protected void setSectionStatus(long sectionPos, boolean notReady)- Mappings:
Namespace Name Mixin selector official d
Ldab;d(JZ)V
intermediary method_15526
Lnet/minecraft/class_3560;method_15526(JZ)V
named setSectionStatus
Lnet/minecraft/world/chunk/light/LightStorage;setSectionStatus(JZ)V
-
updateAll
protected void updateAll()- Mappings:
Namespace Name Mixin selector official d
Ldab;d()V
intermediary method_15539
Lnet/minecraft/class_3560;method_15539()V
named updateAll
Lnet/minecraft/world/chunk/light/LightStorage;updateAll()V
-
notifyChanges
protected void notifyChanges()- Mappings:
Namespace Name Mixin selector official e
Ldab;e()V
intermediary method_15530
Lnet/minecraft/class_3560;method_15530()V
named notifyChanges
Lnet/minecraft/world/chunk/light/LightStorage;notifyChanges()V
-