Class LightStorage<M extends ChunkToNibbleArrayMap<M>>

java.lang.Object
net.minecraft.world.chunk.light.LightStorage<M>
Direct Known Subclasses:
BlockLightStorage, SkyLightStorage

public abstract class LightStorage<M extends ChunkToNibbleArrayMap<M>> extends Object
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:
Mappings:
Namespace Name
named net/minecraft/world/chunk/light/LightStorage
intermediary net/minecraft/class_3560
official enx
  • Field Details

    • lightType

      private final LightType lightType
      Mappings:
      Namespace Name Mixin selector
      named lightType Lnet/minecraft/world/chunk/light/LightStorage;lightType:Lnet/minecraft/world/LightType;
      intermediary field_15805 Lnet/minecraft/class_3560;field_15805:Lnet/minecraft/class_1944;
      official i Lenx;i:Ldcp;
    • chunkProvider

      protected final ChunkProvider chunkProvider
      Mappings:
      Namespace Name Mixin selector
      named chunkProvider Lnet/minecraft/world/chunk/light/LightStorage;chunkProvider:Lnet/minecraft/world/chunk/ChunkProvider;
      intermediary field_15803 Lnet/minecraft/class_3560;field_15803:Lnet/minecraft/class_2823;
      official a Lenx;a:Lduu;
    • sectionPropagations

      protected final Long2ByteMap sectionPropagations
      Mappings:
      Namespace Name Mixin selector
      named sectionPropagations Lnet/minecraft/world/chunk/light/LightStorage;sectionPropagations:Lit/unimi/dsi/fastutil/longs/Long2ByteMap;
      intermediary field_44716 Lnet/minecraft/class_3560;field_44716:Lit/unimi/dsi/fastutil/longs/Long2ByteMap;
      official b Lenx;b:Lit/unimi/dsi/fastutil/longs/Long2ByteMap;
    • enabledColumns

      private final LongSet enabledColumns
      Mappings:
      Namespace Name Mixin selector
      named enabledColumns Lnet/minecraft/world/chunk/light/LightStorage;enabledColumns:Lit/unimi/dsi/fastutil/longs/LongSet;
      intermediary field_44718 Lnet/minecraft/class_3560;field_44718:Lit/unimi/dsi/fastutil/longs/LongSet;
      official j Lenx;j:Lit/unimi/dsi/fastutil/longs/LongSet;
    • uncachedStorage

      protected volatile M extends ChunkToNibbleArrayMap<M> uncachedStorage
      Mappings:
      Namespace Name Mixin selector
      named uncachedStorage Lnet/minecraft/world/chunk/light/LightStorage;uncachedStorage:Lnet/minecraft/world/chunk/ChunkToNibbleArrayMap;
      intermediary field_15806 Lnet/minecraft/class_3560;field_15806:Lnet/minecraft/class_3556;
      official c Lenx;c:Lenu;
    • storage

      protected final M extends ChunkToNibbleArrayMap<M> storage
      Mappings:
      Namespace Name Mixin selector
      named storage Lnet/minecraft/world/chunk/light/LightStorage;storage:Lnet/minecraft/world/chunk/ChunkToNibbleArrayMap;
      intermediary field_15796 Lnet/minecraft/class_3560;field_15796:Lnet/minecraft/class_3556;
      official d Lenx;d:Lenu;
    • dirtySections

      protected final LongSet dirtySections
      Mappings:
      Namespace Name Mixin selector
      named dirtySections Lnet/minecraft/world/chunk/light/LightStorage;dirtySections:Lit/unimi/dsi/fastutil/longs/LongSet;
      intermediary field_15802 Lnet/minecraft/class_3560;field_15802:Lit/unimi/dsi/fastutil/longs/LongSet;
      official e Lenx;e:Lit/unimi/dsi/fastutil/longs/LongSet;
    • notifySections

      protected final LongSet notifySections
      Mappings:
      Namespace Name Mixin selector
      named notifySections Lnet/minecraft/world/chunk/light/LightStorage;notifySections:Lit/unimi/dsi/fastutil/longs/LongSet;
      intermediary field_16448 Lnet/minecraft/class_3560;field_16448:Lit/unimi/dsi/fastutil/longs/LongSet;
      official f Lenx;f:Lit/unimi/dsi/fastutil/longs/LongSet;
    • queuedSections

      protected final Long2ObjectMap<ChunkNibbleArray> queuedSections
      Mappings:
      Namespace Name Mixin selector
      named queuedSections Lnet/minecraft/world/chunk/light/LightStorage;queuedSections:Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;
      intermediary field_15807 Lnet/minecraft/class_3560;field_15807:Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;
      official g Lenx;g:Lit/unimi/dsi/fastutil/longs/Long2ObjectMap;
    • columnsToRetain

      private final LongSet columnsToRetain
      Mappings:
      Namespace Name Mixin selector
      named columnsToRetain Lnet/minecraft/world/chunk/light/LightStorage;columnsToRetain:Lit/unimi/dsi/fastutil/longs/LongSet;
      intermediary field_19342 Lnet/minecraft/class_3560;field_19342:Lit/unimi/dsi/fastutil/longs/LongSet;
      official k Lenx;k:Lit/unimi/dsi/fastutil/longs/LongSet;
    • sectionsToRemove

      private final LongSet sectionsToRemove
      Mappings:
      Namespace Name Mixin selector
      named sectionsToRemove Lnet/minecraft/world/chunk/light/LightStorage;sectionsToRemove:Lit/unimi/dsi/fastutil/longs/LongSet;
      intermediary field_15798 Lnet/minecraft/class_3560;field_15798:Lit/unimi/dsi/fastutil/longs/LongSet;
      official l Lenx;l:Lit/unimi/dsi/fastutil/longs/LongSet;
    • hasLightUpdates

      protected volatile boolean hasLightUpdates
      Mappings:
      Namespace Name Mixin selector
      named hasLightUpdates Lnet/minecraft/world/chunk/light/LightStorage;hasLightUpdates:Z
      intermediary field_44717 Lnet/minecraft/class_3560;field_44717:Z
      official h Lenx;h:Z
  • Constructor Details

    • LightStorage

      protected LightStorage(LightType lightType, ChunkProvider chunkProvider, M lightData)
      Mappings:
      Namespace Name Mixin selector
      named <init> Lnet/minecraft/world/chunk/light/LightStorage;<init>(Lnet/minecraft/world/LightType;Lnet/minecraft/world/chunk/ChunkProvider;Lnet/minecraft/world/chunk/ChunkToNibbleArrayMap;)V
      intermediary <init> Lnet/minecraft/class_3560;<init>(Lnet/minecraft/class_1944;Lnet/minecraft/class_2823;Lnet/minecraft/class_3556;)V
      official <init> Lenx;<init>(Ldcp;Lduu;Lenu;)V
  • Method Details

    • hasSection

      protected boolean hasSection(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named hasSection Lnet/minecraft/world/chunk/light/LightStorage;hasSection(J)Z
      intermediary method_15524 Lnet/minecraft/class_3560;method_15524(J)Z
      official b Lenx;b(J)Z
    • getLightSection

      @Nullable protected @Nullable ChunkNibbleArray getLightSection(long sectionPos, boolean cached)
      Mappings:
      Namespace Name Mixin selector
      named getLightSection Lnet/minecraft/world/chunk/light/LightStorage;getLightSection(JZ)Lnet/minecraft/world/chunk/ChunkNibbleArray;
      intermediary method_15522 Lnet/minecraft/class_3560;method_15522(JZ)Lnet/minecraft/class_2804;
      official a Lenx;a(JZ)Ldum;
    • getLightSection

      @Nullable protected @Nullable ChunkNibbleArray getLightSection(M storage, long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named getLightSection Lnet/minecraft/world/chunk/light/LightStorage;getLightSection(Lnet/minecraft/world/chunk/ChunkToNibbleArrayMap;J)Lnet/minecraft/world/chunk/ChunkNibbleArray;
      intermediary method_15533 Lnet/minecraft/class_3560;method_15533(Lnet/minecraft/class_3556;J)Lnet/minecraft/class_2804;
      official a Lenx;a(Lenu;J)Ldum;
    • method_51547

      @Nullable protected @Nullable ChunkNibbleArray method_51547(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named method_51547 Lnet/minecraft/world/chunk/light/LightStorage;method_51547(J)Lnet/minecraft/world/chunk/ChunkNibbleArray;
      intermediary method_51547 Lnet/minecraft/class_3560;method_51547(J)Lnet/minecraft/class_2804;
      official c Lenx;c(J)Ldum;
    • getLightSection

      @Nullable public @Nullable ChunkNibbleArray getLightSection(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named getLightSection Lnet/minecraft/world/chunk/light/LightStorage;getLightSection(J)Lnet/minecraft/world/chunk/ChunkNibbleArray;
      intermediary method_20533 Lnet/minecraft/class_3560;method_20533(J)Lnet/minecraft/class_2804;
      official d Lenx;d(J)Ldum;
    • getLight

      protected abstract int getLight(long blockPos)
      Mappings:
      Namespace Name Mixin selector
      named getLight Lnet/minecraft/world/chunk/light/LightStorage;getLight(J)I
      intermediary method_15538 Lnet/minecraft/class_3560;method_15538(J)I
      official a Lenx;a(J)I
    • get

      protected int get(long blockPos)
      Mappings:
      Namespace Name Mixin selector
      named get Lnet/minecraft/world/chunk/light/LightStorage;get(J)I
      intermediary method_15537 Lnet/minecraft/class_3560;method_15537(J)I
      official e Lenx;e(J)I
    • set

      protected void set(long blockPos, int value)
      Mappings:
      Namespace Name Mixin selector
      named set Lnet/minecraft/world/chunk/light/LightStorage;set(JI)V
      intermediary method_15525 Lnet/minecraft/class_3560;method_15525(JI)V
      official a Lenx;a(JI)V
    • addNotifySections

      protected void addNotifySections(long id)
      Mappings:
      Namespace Name Mixin selector
      named addNotifySections Lnet/minecraft/world/chunk/light/LightStorage;addNotifySections(J)V
      intermediary method_51415 Lnet/minecraft/class_3560;method_51415(J)V
      official f Lenx;f(J)V
    • createSection

      protected ChunkNibbleArray createSection(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named createSection Lnet/minecraft/world/chunk/light/LightStorage;createSection(J)Lnet/minecraft/world/chunk/ChunkNibbleArray;
      intermediary method_15529 Lnet/minecraft/class_3560;method_15529(J)Lnet/minecraft/class_2804;
      official g Lenx;g(J)Ldum;
    • hasLightUpdates

      protected boolean hasLightUpdates()
      Mappings:
      Namespace Name Mixin selector
      named hasLightUpdates Lnet/minecraft/world/chunk/light/LightStorage;hasLightUpdates()Z
      intermediary method_15528 Lnet/minecraft/class_3560;method_15528()Z
      official a Lenx;a()Z
    • updateLight

      protected void updateLight(ChunkLightProvider<M,?> lightProvider)
      Mappings:
      Namespace Name Mixin selector
      named updateLight Lnet/minecraft/world/chunk/light/LightStorage;updateLight(Lnet/minecraft/world/chunk/light/ChunkLightProvider;)V
      intermediary method_15527 Lnet/minecraft/class_3560;method_15527(Lnet/minecraft/class_3558;)V
      official a Lenx;a(Leoa;)V
    • onLoadSection

      protected void onLoadSection(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named onLoadSection Lnet/minecraft/world/chunk/light/LightStorage;onLoadSection(J)V
      intermediary method_15523 Lnet/minecraft/class_3560;method_15523(J)V
      official h Lenx;h(J)V
    • onUnloadSection

      protected void onUnloadSection(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named onUnloadSection Lnet/minecraft/world/chunk/light/LightStorage;onUnloadSection(J)V
      intermediary method_15534 Lnet/minecraft/class_3560;method_15534(J)V
      official i Lenx;i(J)V
    • setColumnEnabled

      protected void setColumnEnabled(long columnPos, boolean enabled)
      Mappings:
      Namespace Name Mixin selector
      named setColumnEnabled Lnet/minecraft/world/chunk/light/LightStorage;setColumnEnabled(JZ)V
      intermediary method_15535 Lnet/minecraft/class_3560;method_15535(JZ)V
      official b Lenx;b(JZ)V
    • isSectionInEnabledColumn

      protected boolean isSectionInEnabledColumn(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named isSectionInEnabledColumn Lnet/minecraft/world/chunk/light/LightStorage;isSectionInEnabledColumn(J)Z
      intermediary method_51548 Lnet/minecraft/class_3560;method_51548(J)Z
      official j Lenx;j(J)Z
    • setRetainColumn

      public void setRetainColumn(long sectionPos, boolean retain)
      Mappings:
      Namespace Name Mixin selector
      named setRetainColumn Lnet/minecraft/world/chunk/light/LightStorage;setRetainColumn(JZ)V
      intermediary method_20600 Lnet/minecraft/class_3560;method_20600(JZ)V
      official c Lenx;c(JZ)V
    • enqueueSectionData

      protected void enqueueSectionData(long sectionPos, @Nullable @Nullable ChunkNibbleArray array)
      Mappings:
      Namespace Name Mixin selector
      named enqueueSectionData Lnet/minecraft/world/chunk/light/LightStorage;enqueueSectionData(JLnet/minecraft/world/chunk/ChunkNibbleArray;)V
      intermediary method_15532 Lnet/minecraft/class_3560;method_15532(JLnet/minecraft/class_2804;)V
      official a Lenx;a(JLdum;)V
    • setSectionStatus

      protected void setSectionStatus(long sectionPos, boolean notReady)
      Mappings:
      Namespace Name Mixin selector
      named setSectionStatus Lnet/minecraft/world/chunk/light/LightStorage;setSectionStatus(JZ)V
      intermediary method_15526 Lnet/minecraft/class_3560;method_15526(JZ)V
      official d Lenx;d(JZ)V
    • setSectionPropagation

      protected void setSectionPropagation(long sectionPos, byte flags)
      Mappings:
      Namespace Name Mixin selector
      named setSectionPropagation Lnet/minecraft/world/chunk/light/LightStorage;setSectionPropagation(JB)V
      intermediary method_51546 Lnet/minecraft/class_3560;method_51546(JB)V
      official a Lenx;a(JB)V
    • queueForUpdate

      private void queueForUpdate(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named queueForUpdate Lnet/minecraft/world/chunk/light/LightStorage;queueForUpdate(J)V
      intermediary method_51550 Lnet/minecraft/class_3560;method_51550(J)V
      official l Lenx;l(J)V
    • queueForRemoval

      private void queueForRemoval(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named queueForRemoval Lnet/minecraft/world/chunk/light/LightStorage;queueForRemoval(J)V
      intermediary method_51551 Lnet/minecraft/class_3560;method_51551(J)V
      official m Lenx;m(J)V
    • notifyChanges

      protected void notifyChanges()
      Mappings:
      Namespace Name Mixin selector
      named notifyChanges Lnet/minecraft/world/chunk/light/LightStorage;notifyChanges()V
      intermediary method_15530 Lnet/minecraft/class_3560;method_15530()V
      official b Lenx;b()V
    • getStatus

      public LightStorage.Status getStatus(long sectionPos)
      Mappings:
      Namespace Name Mixin selector
      named getStatus Lnet/minecraft/world/chunk/light/LightStorage;getStatus(J)Lnet/minecraft/world/chunk/light/LightStorage$Status;
      intermediary method_51549 Lnet/minecraft/class_3560;method_51549(J)Lnet/minecraft/class_3560$class_8530;
      official k Lenx;k(J)Lenx$b;