Package net.minecraft.server.world
Class ThreadedAnvilChunkStorage
java.lang.Object
net.minecraft.world.storage.VersionedChunkStorage
net.minecraft.server.world.ThreadedAnvilChunkStorage
- All Implemented Interfaces:
AutoCloseable
,ChunkHolder.PlayersWatchingChunkProvider
public class ThreadedAnvilChunkStorage extends VersionedChunkStorage implements ChunkHolder.PlayersWatchingChunkProvider
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
ThreadedAnvilChunkStorage.EntityTracker
(package private) class
ThreadedAnvilChunkStorage.TicketManager
-
Field Summary
Fields inherited from class net.minecraft.world.storage.VersionedChunkStorage
dataFixer
-
Constructor Summary
Constructors Constructor Description ThreadedAnvilChunkStorage(ServerWorld serverWorld, LevelStorage.Session session, com.mojang.datafixers.DataFixer dataFixer, StructureManager structureManager, Executor executor, ThreadExecutor<Runnable> mainThreadExecutor, ChunkProvider chunkProvider, ChunkGenerator chunkGenerator, WorldGenerationProgressListener worldGenerationProgressListener, class_5567 class_5567, Supplier<PersistentStateManager> supplier, int int2, boolean bool)
-
Method Summary
Modifier and Type Method Description void
close()
private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>>
convertToFullChunk(ChunkHolder chunkHolder)
private boolean
doesNotGenerateChunks(ServerPlayerEntity player)
(package private) void
dump(Writer writer)
CompletableFuture<Void>
enableTickSchedulers(WorldChunk worldChunk)
protected Iterable<ChunkHolder>
entryIterator()
private static int
getChebyshevDistance(ChunkPos pos, int x, int z)
private static int
getChebyshevDistance(ChunkPos pos, ServerPlayerEntity player, boolean useCameraPosition)
CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>>
getChunk(ChunkHolder holder, ChunkStatus requiredStatus)
protected ChunkHolder
getChunkHolder(long pos)
String
getChunkLoadingDebugInfo(ChunkPos chunkPos)
protected IntSupplier
getCompletedLevelSupplier(long pos)
protected ChunkHolder
getCurrentChunkHolder(long pos)
private static String
getFutureStatus(CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>> completableFuture)
protected ServerLightingProvider
getLightProvider()
int
getLoadedChunkCount()
Stream<ServerPlayerEntity>
getPlayersWatchingChunk(ChunkPos chunkPos, boolean onlyOnWatchDistanceEdge)
protected PointOfInterestStorage
getPointOfInterestStorage()
private CompletableFuture<com.mojang.datafixers.util.Either<List<Chunk>,ChunkHolder.Unloaded>>
getRegion(ChunkPos centerChunk, int margin, IntFunction<ChunkStatus> distanceToStatus)
private ChunkStatus
getRequiredStatusForGeneration(ChunkStatus centerChunkTargetStatus, int distance)
private static double
getSquaredDistance(ChunkPos pos, Entity entity)
protected ChunkTicketManager
getTicketManager()
int
getTotalChunksLoadedCount()
private CompoundTag
getUpdatedChunkTag(ChunkPos pos)
(package private) void
handlePlayerAddedOrRemoved(ServerPlayerEntity player, boolean added)
(package private) boolean
isTooFarFromPlayersToSpawnMobs(ChunkPos chunkPos)
private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>>
loadChunk(ChunkPos pos)
protected void
loadEntity(Entity entity)
CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>>
makeChunkEntitiesTickable(ChunkPos pos)
CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>>
makeChunkTickable(ChunkHolder holder)
private ChunkSectionPos
method_20726(ServerPlayerEntity serverPlayerEntity)
private byte
method_27053(ChunkPos chunkPos, ChunkStatus.ChunkType chunkType)
private void
method_27054(ChunkPos chunkPos)
private boolean
method_27055(ChunkPos chunkPos)
private static void
method_31413(ServerWorld serverWorld, List<CompoundTag> list)
(package private) void
method_31414(ChunkPos chunkPos, ChunkHolder.LevelType levelType)
CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>>
method_31417(ChunkHolder chunkHolder)
protected void
releaseLightTicket(ChunkPos pos)
protected void
save(boolean flush)
private boolean
save(Chunk chunk)
private void
sendChunkDataPackets(ServerPlayerEntity player, Packet<?>[] packets, WorldChunk chunk)
protected void
sendToNearbyPlayers(Entity entity, Packet<?> packet)
protected void
sendToOtherNearbyPlayers(Entity entity, Packet<?> packet)
protected void
sendWatchPackets(ServerPlayerEntity player, ChunkPos pos, Packet<?>[] packets, boolean withinMaxWatchDistance, boolean withinViewDistance)
private ChunkHolder
setLevel(long pos, int level, ChunkHolder holder, int int2)
protected void
setViewDistance(int watchDistance)
protected void
tick(BooleanSupplier shouldKeepTicking)
protected void
tickPlayerMovement()
private void
tryUnloadChunk(long pos, ChunkHolder chunkHolder)
private void
unloadChunks(BooleanSupplier shouldKeepTicking)
protected void
unloadEntity(Entity entity)
void
updateCameraPosition(ServerPlayerEntity player)
protected boolean
updateHolderMap()
private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>>
upgradeChunk(ChunkHolder holder, ChunkStatus requiredStatus)
Methods inherited from class net.minecraft.world.storage.VersionedChunkStorage
completeAll, getDataVersion, getNbt, setTagAt, updateChunkTag
-
Field Details
-
LOGGER
-
MAX_LEVEL
public static final int MAX_LEVELSpecifies the maximum ticket level a chunk can be before a chunk'sChunkHolder.LevelType
isChunkHolder.LevelType.BORDER
. -
currentChunkHolders
-
chunkHolders
-
chunksToUnload
-
loadedChunks
-
world
-
serverLightingProvider
-
mainThreadExecutor
-
chunkGenerator
-
persistentStateManagerFactory
-
pointOfInterestStorage
-
unloadedChunks
-
chunkHolderListDirty
private boolean chunkHolderListDirty -
chunkTaskPrioritySystem
-
worldGenExecutor
-
mainExecutor
-
worldGenerationProgressListener
-
field_26931
-
ticketManager
-
totalChunksLoadedCount
-
structureManager
-
saveDir
-
playerChunkWatchingManager
-
entityTrackers
-
chunkToType
-
unloadTaskQueue
-
watchDistance
private int watchDistance
-
-
Constructor Details
-
ThreadedAnvilChunkStorage
public ThreadedAnvilChunkStorage(ServerWorld serverWorld, LevelStorage.Session session, com.mojang.datafixers.DataFixer dataFixer, StructureManager structureManager, Executor executor, ThreadExecutor<Runnable> mainThreadExecutor, ChunkProvider chunkProvider, ChunkGenerator chunkGenerator, WorldGenerationProgressListener worldGenerationProgressListener, class_5567 class_5567, Supplier<PersistentStateManager> supplier, int int2, boolean bool)
-
-
Method Details
-
getSquaredDistance
-
getChebyshevDistance
private static int getChebyshevDistance(ChunkPos pos, ServerPlayerEntity player, boolean useCameraPosition) -
getChebyshevDistance
-
getLightProvider
-
getCurrentChunkHolder
-
getChunkHolder
-
getCompletedLevelSupplier
-
getChunkLoadingDebugInfo
-
getRegion
private CompletableFuture<com.mojang.datafixers.util.Either<List<Chunk>,ChunkHolder.Unloaded>> getRegion(ChunkPos centerChunk, int margin, IntFunction<ChunkStatus> distanceToStatus) -
makeChunkEntitiesTickable
public CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>> makeChunkEntitiesTickable(ChunkPos pos) -
setLevel
@Nullable private ChunkHolder setLevel(long pos, int level, @Nullable ChunkHolder holder, int int2) -
close
- Specified by:
close
in interfaceAutoCloseable
- Overrides:
close
in classVersionedChunkStorage
- Throws:
IOException
-
save
protected void save(boolean flush) -
tick
-
unloadChunks
-
tryUnloadChunk
-
updateHolderMap
protected boolean updateHolderMap() -
getChunk
public CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>> getChunk(ChunkHolder holder, ChunkStatus requiredStatus) -
loadChunk
private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>> loadChunk(ChunkPos pos) -
method_27054
-
method_27053
-
upgradeChunk
private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>> upgradeChunk(ChunkHolder holder, ChunkStatus requiredStatus) -
releaseLightTicket
-
getRequiredStatusForGeneration
private ChunkStatus getRequiredStatusForGeneration(ChunkStatus centerChunkTargetStatus, int distance) -
method_31413
-
convertToFullChunk
private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>> convertToFullChunk(ChunkHolder chunkHolder) -
makeChunkTickable
public CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>> makeChunkTickable(ChunkHolder holder) -
method_31417
public CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>> method_31417(ChunkHolder chunkHolder) -
getTotalChunksLoadedCount
public int getTotalChunksLoadedCount() -
save
-
method_27055
-
setViewDistance
protected void setViewDistance(int watchDistance) -
sendWatchPackets
protected void sendWatchPackets(ServerPlayerEntity player, ChunkPos pos, Packet<?>[] packets, boolean withinMaxWatchDistance, boolean withinViewDistance) -
getLoadedChunkCount
public int getLoadedChunkCount() -
getTicketManager
-
entryIterator
-
dump
- Throws:
IOException
-
getFutureStatus
private static String getFutureStatus(CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>> completableFuture) -
getUpdatedChunkTag
- Throws:
IOException
-
isTooFarFromPlayersToSpawnMobs
-
doesNotGenerateChunks
-
handlePlayerAddedOrRemoved
-
method_20726
-
updateCameraPosition
-
getPlayersWatchingChunk
public Stream<ServerPlayerEntity> getPlayersWatchingChunk(ChunkPos chunkPos, boolean onlyOnWatchDistanceEdge)- Specified by:
getPlayersWatchingChunk
in interfaceChunkHolder.PlayersWatchingChunkProvider
-
loadEntity
-
unloadEntity
-
tickPlayerMovement
protected void tickPlayerMovement() -
sendToOtherNearbyPlayers
-
sendToNearbyPlayers
-
sendChunkDataPackets
private void sendChunkDataPackets(ServerPlayerEntity player, Packet<?>[] packets, WorldChunk chunk) -
getPointOfInterestStorage
-
enableTickSchedulers
-
method_31414
-