Package net.minecraft.world.chunk.light
Class LevelPropagator
java.lang.Object
net.minecraft.world.chunk.light.LevelPropagator
- Direct Known Subclasses:
ChunkLightProvider,ChunkPosDistanceLevelPropagator,SectionDistanceLevelPropagator
public abstract class LevelPropagator extends Object
-
Field Summary
Fields Modifier and Type Field Description private booleanhasPendingUpdatesprivate intlevelCountprivate intminPendingLevelprivate LongLinkedOpenHashSet[]pendingIdUpdatesByLevelprivate Long2ByteMappendingUpdates -
Constructor Summary
Constructors Modifier Constructor Description protectedLevelPropagator(int levelCount, int expectedLevelSize, int expectedTotalSize) -
Method Summary
Modifier and Type Method Description private voidaddPendingUpdate(long id, int level, int targetLevel)protected intapplyPendingUpdates(int maxSteps)protected abstract intgetLevel(long id)intgetPendingUpdateCount()protected abstract intgetPropagatedLevel(long sourceId, long targetId, int level)protected booleanhasPendingUpdates()private voidincreaseMinPendingLevel(int maxLevel)protected abstract booleanisMarker(long id)private intminLevel(int a, int b)protected abstract voidpropagateLevel(long id, int level, boolean decrease)protected voidpropagateLevel(long sourceId, long targetId, int level, boolean decrease)protected abstract intrecalculateLevel(long id, long excludedId, int maxLevel)protected voidremovePendingUpdate(long id)private voidremovePendingUpdate(long id, int level, int levelCount, boolean removeFully)voidremovePendingUpdateIf(LongPredicate predicate)protected voidresetLevel(long id)protected abstract voidsetLevel(long id, int level)protected voidupdateLevel(long sourceId, long id, int level, boolean decrease)private voidupdateLevel(long sourceId, long id, int level, int currentLevel, int pendingLevel, boolean decrease)
-
Field Details
-
levelCount
private final int levelCount -
pendingIdUpdatesByLevel
-
pendingUpdates
-
minPendingLevel
private int minPendingLevel -
hasPendingUpdates
private volatile boolean hasPendingUpdates
-
-
Constructor Details
-
LevelPropagator
protected LevelPropagator(int levelCount, int expectedLevelSize, int expectedTotalSize)
-
-
Method Details
-
minLevel
private int minLevel(int a, int b) -
increaseMinPendingLevel
private void increaseMinPendingLevel(int maxLevel) -
removePendingUpdate
protected void removePendingUpdate(long id) -
removePendingUpdateIf
-
removePendingUpdate
private void removePendingUpdate(long id, int level, int levelCount, boolean removeFully) -
addPendingUpdate
private void addPendingUpdate(long id, int level, int targetLevel) -
resetLevel
protected void resetLevel(long id) -
updateLevel
protected void updateLevel(long sourceId, long id, int level, boolean decrease) -
updateLevel
private void updateLevel(long sourceId, long id, int level, int currentLevel, int pendingLevel, boolean decrease) -
propagateLevel
protected final void propagateLevel(long sourceId, long targetId, int level, boolean decrease) -
hasPendingUpdates
protected final boolean hasPendingUpdates() -
applyPendingUpdates
protected final int applyPendingUpdates(int maxSteps) -
getPendingUpdateCount
public int getPendingUpdateCount() -
isMarker
protected abstract boolean isMarker(long id) -
recalculateLevel
protected abstract int recalculateLevel(long id, long excludedId, int maxLevel) -
propagateLevel
protected abstract void propagateLevel(long id, int level, boolean decrease) -
getLevel
protected abstract int getLevel(long id) -
setLevel
protected abstract void setLevel(long id, int level) -
getPropagatedLevel
protected abstract int getPropagatedLevel(long sourceId, long targetId, int level)
-