Package net.minecraft.server.world
Class ChunkTaskPrioritySystem
java.lang.Object
net.minecraft.server.world.ChunkTaskPrioritySystem
- All Implemented Interfaces:
AutoCloseable
,ChunkHolder.LevelUpdateListener
public class ChunkTaskPrioritySystem extends Object implements AutoCloseable, ChunkHolder.LevelUpdateListener
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ChunkTaskPrioritySystem.Task<T>
static class
ChunkTaskPrioritySystem.UnblockingMessage
-
Field Summary
Fields Modifier and Type Field Description private TaskExecutor<TaskQueue.PrioritizedTask>
controlActor
private Set<MessageListener<?>>
idleActors
private static Logger
LOGGER
private Map<MessageListener<?>,LevelPrioritizedQueue<? extends Function<MessageListener<Unit>,?>>>
queues
-
Constructor Summary
Constructors Constructor Description ChunkTaskPrioritySystem(List<MessageListener<?>> actors, Executor executor, int maxQueues)
-
Method Summary
-
Field Details
-
LOGGER
-
queues
private final Map<MessageListener<?>,LevelPrioritizedQueue<? extends Function<MessageListener<Unit>,?>>> queues -
idleActors
-
controlActor
-
-
Constructor Details
-
ChunkTaskPrioritySystem
-
-
Method Details
-
createMessage
public static ChunkTaskPrioritySystem.Task<Runnable> createMessage(Runnable task, long pos, IntSupplier lastLevelUpdatedToProvider) -
createMessage
public static ChunkTaskPrioritySystem.Task<Runnable> createMessage(ChunkHolder holder, Runnable task) -
createUnblockingMessage
public static ChunkTaskPrioritySystem.UnblockingMessage createUnblockingMessage(Runnable task, long pos, boolean removeTask) -
createExecutor
public <T> MessageListener<ChunkTaskPrioritySystem.Task<T>> createExecutor(MessageListener<T> executor, boolean addBlocker) -
createUnblockingExecutor
public MessageListener<ChunkTaskPrioritySystem.UnblockingMessage> createUnblockingExecutor(MessageListener<Runnable> executor) -
updateLevel
public void updateLevel(ChunkPos pos, IntSupplier levelGetter, int targetLevel, IntConsumer levelSetter)- Specified by:
updateLevel
in interfaceChunkHolder.LevelUpdateListener
-
removeChunk
private <T> void removeChunk(MessageListener<T> actor, long chunkPos, Runnable callback, boolean clearTask) -
enqueueChunk
private <T> void enqueueChunk(MessageListener<T> actor, Function<MessageListener<Unit>,T> task, long chunkPos, IntSupplier lastLevelUpdatedToProvider, boolean addBlocker) -
enqueueExecution
private <T> void enqueueExecution(LevelPrioritizedQueue<Function<MessageListener<Unit>,T>> queue, MessageListener<T> actor) -
getQueue
private <T> LevelPrioritizedQueue<Function<MessageListener<Unit>,T>> getQueue(MessageListener<T> actor) -
getDebugString
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
-