Class LightEngine<M extends DataLayerStorageMap<M>,S extends LayerLightSectionStorage<M>>

java.lang.Object
net.minecraft.world.level.lighting.LightEngine<M,S>
All Implemented Interfaces:
LayerLightEventListener, LightEventListener
Direct Known Subclasses:
BlockLightEngine, SkyLightEngine

public abstract class LightEngine<M extends DataLayerStorageMap<M>,S extends LayerLightSectionStorage<M>> extends Object implements LayerLightEventListener
  • Field Details

    • MAX_LEVEL

      public static final int MAX_LEVEL
      See Also:
    • MIN_OPACITY

      protected static final int MIN_OPACITY
      See Also:
    • PULL_LIGHT_IN_ENTRY

      protected static final long PULL_LIGHT_IN_ENTRY
    • MIN_QUEUE_SIZE

      private static final int MIN_QUEUE_SIZE
      See Also:
    • PROPAGATION_DIRECTIONS

      protected static final Direction[] PROPAGATION_DIRECTIONS
    • chunkSource

      protected final LightChunkGetter chunkSource
    • storage

      protected final S extends LayerLightSectionStorage<M> storage
    • blockNodesToCheck

      private final it.unimi.dsi.fastutil.longs.LongOpenHashSet blockNodesToCheck
    • decreaseQueue

      private final it.unimi.dsi.fastutil.longs.LongArrayFIFOQueue decreaseQueue
    • increaseQueue

      private final it.unimi.dsi.fastutil.longs.LongArrayFIFOQueue increaseQueue
    • CACHE_SIZE

      private static final int CACHE_SIZE
      See Also:
    • lastChunkPos

      private final long[] lastChunkPos
    • lastChunk

      private final LightChunk[] lastChunk
  • Constructor Details

  • Method Details

    • hasDifferentLightProperties

      @Deprecated public static boolean hasDifferentLightProperties(BlockState pState1, BlockState pState2)
      Deprecated.
      Neo: use overload with level context instead
    • hasDifferentLightProperties

      public static boolean hasDifferentLightProperties(BlockGetter level, BlockPos pos, BlockState p_285110_, BlockState p_285372_)
    • getLightBlockInto

      public static int getLightBlockInto(BlockState pState1, BlockState pState2, Direction pDirection, int pDefaultReturnValue)
    • getOcclusionShape

      public static VoxelShape getOcclusionShape(BlockState pState, Direction pDirection)
    • isEmptyShape

      protected static boolean isEmptyShape(BlockState pState)
    • getState

      protected BlockState getState(BlockPos pPos)
    • getOpacity

      protected int getOpacity(BlockState pState)
    • shapeOccludes

      protected boolean shapeOccludes(BlockState pState1, BlockState pState2, Direction pDirection)
    • getChunk

      @Nullable protected LightChunk getChunk(int pX, int pZ)
    • clearChunkCache

      private void clearChunkCache()
    • checkBlock

      public void checkBlock(BlockPos pPos)
      Specified by:
      checkBlock in interface LightEventListener
    • queueSectionData

      public void queueSectionData(long pSectionPos, @Nullable DataLayer pData)
    • retainData

      public void retainData(ChunkPos pChunkPos, boolean pRetainData)
    • updateSectionStatus

      public void updateSectionStatus(SectionPos pPos, boolean pIsQueueEmpty)
      Specified by:
      updateSectionStatus in interface LightEventListener
    • setLightEnabled

      public void setLightEnabled(ChunkPos pChunkPos, boolean pLightEnabled)
      Specified by:
      setLightEnabled in interface LightEventListener
    • runLightUpdates

      public int runLightUpdates()
      Specified by:
      runLightUpdates in interface LightEventListener
    • propagateIncreases

      private int propagateIncreases()
    • propagateDecreases

      private int propagateDecreases()
    • enqueueDecrease

      protected void enqueueDecrease(long pPackedPos1, long pPackedPos2)
    • enqueueIncrease

      protected void enqueueIncrease(long pPackedPos1, long pPackedPos2)
    • hasLightWork

      public boolean hasLightWork()
      Specified by:
      hasLightWork in interface LightEventListener
    • getDataLayerData

      @Nullable public DataLayer getDataLayerData(SectionPos pSectionPos)
      Specified by:
      getDataLayerData in interface LayerLightEventListener
    • getLightValue

      public int getLightValue(BlockPos pLevelPos)
      Specified by:
      getLightValue in interface LayerLightEventListener
    • getDebugData

      public String getDebugData(long pSectionPos)
    • getDebugSectionType

      public LayerLightSectionStorage.SectionType getDebugSectionType(long pSectionPos)
    • checkNode

      protected abstract void checkNode(long pPackedPos)
    • propagateIncrease

      protected abstract void propagateIncrease(long pPackedPos, long pQueueEntry, int pLightLevel)
    • propagateDecrease

      protected abstract void propagateDecrease(long pPackedPos, long pLightLevel)