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 boolean
hasPendingUpdates
private int
levelCount
private int
minPendingLevel
private LongLinkedOpenHashSet[]
pendingIdUpdatesByLevel
private Long2ByteMap
pendingUpdates
-
Constructor Summary
Constructors Modifier Constructor Description protected
LevelPropagator(int levelCount, int expectedLevelSize, int expectedTotalSize)
-
Method Summary
Modifier and Type Method Description private void
addPendingUpdate(long id, int level, int targetLevel)
protected int
applyPendingUpdates(int maxSteps)
protected abstract int
getLevel(long id)
int
getPendingUpdateCount()
protected abstract int
getPropagatedLevel(long sourceId, long targetId, int level)
protected boolean
hasPendingUpdates()
private void
increaseMinPendingLevel(int maxLevel)
protected abstract boolean
isMarker(long id)
private int
minLevel(int a, int b)
protected abstract void
propagateLevel(long id, int level, boolean decrease)
protected void
propagateLevel(long sourceId, long targetId, int level, boolean decrease)
protected abstract int
recalculateLevel(long id, long excludedId, int maxLevel)
protected void
removePendingUpdate(long id)
private void
removePendingUpdate(long id, int level, int levelCount, boolean removeFully)
void
removePendingUpdateIf(LongPredicate predicate)
protected void
resetLevel(long id)
protected abstract void
setLevel(long id, int level)
protected void
updateLevel(long sourceId, long id, int level, boolean decrease)
private void
updateLevel(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)
-