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) classThreadedAnvilChunkStorage.EntityTracker(package private) classThreadedAnvilChunkStorage.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 voidclose()private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>>convertToFullChunk(ChunkHolder chunkHolder)private booleandoesNotGenerateChunks(ServerPlayerEntity player)(package private) voiddump(Writer writer)CompletableFuture<Void>enableTickSchedulers(WorldChunk worldChunk)protected Iterable<ChunkHolder>entryIterator()private static intgetChebyshevDistance(ChunkPos pos, int x, int z)private static intgetChebyshevDistance(ChunkPos pos, ServerPlayerEntity player, boolean useCameraPosition)CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>>getChunk(ChunkHolder holder, ChunkStatus requiredStatus)protected ChunkHoldergetChunkHolder(long pos)StringgetChunkLoadingDebugInfo(ChunkPos chunkPos)protected IntSuppliergetCompletedLevelSupplier(long pos)protected ChunkHoldergetCurrentChunkHolder(long pos)private static StringgetFutureStatus(CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>> completableFuture)protected ServerLightingProvidergetLightProvider()intgetLoadedChunkCount()Stream<ServerPlayerEntity>getPlayersWatchingChunk(ChunkPos chunkPos, boolean onlyOnWatchDistanceEdge)protected PointOfInterestStoragegetPointOfInterestStorage()private CompletableFuture<com.mojang.datafixers.util.Either<List<Chunk>,ChunkHolder.Unloaded>>getRegion(ChunkPos centerChunk, int margin, IntFunction<ChunkStatus> distanceToStatus)private ChunkStatusgetRequiredStatusForGeneration(ChunkStatus centerChunkTargetStatus, int distance)private static doublegetSquaredDistance(ChunkPos pos, Entity entity)protected ChunkTicketManagergetTicketManager()intgetTotalChunksLoadedCount()private CompoundTaggetUpdatedChunkTag(ChunkPos pos)(package private) voidhandlePlayerAddedOrRemoved(ServerPlayerEntity player, boolean added)(package private) booleanisTooFarFromPlayersToSpawnMobs(ChunkPos chunkPos)private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>>loadChunk(ChunkPos pos)protected voidloadEntity(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 ChunkSectionPosmethod_20726(ServerPlayerEntity serverPlayerEntity)private bytemethod_27053(ChunkPos chunkPos, ChunkStatus.ChunkType chunkType)private voidmethod_27054(ChunkPos chunkPos)private booleanmethod_27055(ChunkPos chunkPos)private static voidmethod_31413(ServerWorld serverWorld, List<CompoundTag> list)(package private) voidmethod_31414(ChunkPos chunkPos, ChunkHolder.LevelType levelType)CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>>method_31417(ChunkHolder chunkHolder)protected voidreleaseLightTicket(ChunkPos pos)protected voidsave(boolean flush)private booleansave(Chunk chunk)private voidsendChunkDataPackets(ServerPlayerEntity player, Packet<?>[] packets, WorldChunk chunk)protected voidsendToNearbyPlayers(Entity entity, Packet<?> packet)protected voidsendToOtherNearbyPlayers(Entity entity, Packet<?> packet)protected voidsendWatchPackets(ServerPlayerEntity player, ChunkPos pos, Packet<?>[] packets, boolean withinMaxWatchDistance, boolean withinViewDistance)private ChunkHoldersetLevel(long pos, int level, ChunkHolder holder, int int2)protected voidsetViewDistance(int watchDistance)protected voidtick(BooleanSupplier shouldKeepTicking)protected voidtickPlayerMovement()private voidtryUnloadChunk(long pos, ChunkHolder chunkHolder)private voidunloadChunks(BooleanSupplier shouldKeepTicking)protected voidunloadEntity(Entity entity)voidupdateCameraPosition(ServerPlayerEntity player)protected booleanupdateHolderMap()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.LevelTypeisChunkHolder.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:
closein interfaceAutoCloseable- Overrides:
closein 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:
getPlayersWatchingChunkin interfaceChunkHolder.PlayersWatchingChunkProvider
-
loadEntity
-
unloadEntity
-
tickPlayerMovement
protected void tickPlayerMovement() -
sendToOtherNearbyPlayers
-
sendToNearbyPlayers
-
sendChunkDataPackets
private void sendChunkDataPackets(ServerPlayerEntity player, Packet<?>[] packets, WorldChunk chunk) -
getPointOfInterestStorage
-
enableTickSchedulers
-
method_31414
-