Code/net/minecraft/server/level/LoadingChunkTracker.java

49 lines
1.7 KiB
Java
Raw Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.server.level;
import net.minecraft.world.level.TicketStorage;
class LoadingChunkTracker extends ChunkTracker {
private static final int MAX_LEVEL = ChunkLevel.MAX_LEVEL + 1;
private final DistanceManager distanceManager;
private final TicketStorage ticketStorage;
public LoadingChunkTracker(DistanceManager p_394758_, TicketStorage p_395397_) {
super(MAX_LEVEL + 1, 16, 256);
this.distanceManager = p_394758_;
this.ticketStorage = p_395397_;
p_395397_.setLoadingChunkUpdatedListener(this::update);
}
@Override
protected int getLevelFromSource(long p_391415_) {
return this.ticketStorage.getTicketLevelAt(p_391415_, false);
}
@Override
protected int getLevel(long p_395921_) {
if (!this.distanceManager.isChunkToRemove(p_395921_)) {
ChunkHolder chunkholder = this.distanceManager.getChunk(p_395921_);
if (chunkholder != null) {
return chunkholder.getTicketLevel();
}
}
return MAX_LEVEL;
}
@Override
protected void setLevel(long p_391454_, int p_396240_) {
ChunkHolder chunkholder = this.distanceManager.getChunk(p_391454_);
int i = chunkholder == null ? MAX_LEVEL : chunkholder.getTicketLevel();
if (i != p_396240_) {
chunkholder = this.distanceManager.updateChunkScheduling(p_391454_, p_396240_, chunkholder, i);
if (chunkholder != null) {
this.distanceManager.chunksToUpdateFutures.add(chunkholder);
}
}
}
public int runDistanceUpdates(int p_397586_) {
return this.runUpdates(p_397586_);
}
}