49 lines
1.7 KiB
Java
49 lines
1.7 KiB
Java
|
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_);
|
||
|
}
|
||
|
}
|