Package net.minecraft.server.world
Class ServerChunkManager
java.lang.Object
net.minecraft.world.chunk.ChunkManager
net.minecraft.server.world.ServerChunkManager
- All Implemented Interfaces:
AutoCloseable
,ChunkProvider
public class ServerChunkManager extends ChunkManager
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
ServerChunkManager.MainThreadExecutor
-
Field Summary
Fields Modifier and Type Field Description private static List<ChunkStatus>
CHUNK_STATUSES
private Chunk[]
chunkCache
private ChunkGenerator
chunkGenerator
private long[]
chunkPosCache
private ChunkStatus[]
chunkStatusCache
private long
lastMobSpawningTime
private ServerLightingProvider
lightProvider
private ServerChunkManager.MainThreadExecutor
mainThreadExecutor
private PersistentStateManager
persistentStateManager
private Thread
serverThread
private boolean
spawnAnimals
private SpawnHelper.Info
spawnEntry
private boolean
spawnMonsters
ThreadedAnvilChunkStorage
threadedAnvilChunkStorage
private ChunkTicketManager
ticketManager
private ServerWorld
world
-
Constructor Summary
Constructors Constructor Description ServerChunkManager(ServerWorld serverWorld, LevelStorage.Session session, com.mojang.datafixers.DataFixer dataFixer, StructureManager structureManager, Executor workerExecutor, ChunkGenerator chunkGenerator, int viewDistance, boolean bool, WorldGenerationProgressListener worldGenerationProgressListener, Supplier<PersistentStateManager> supplier)
-
Method Summary
Modifier and Type Method Description <T> void
addTicket(ChunkTicketType<T> ticketType, ChunkPos pos, int radius, T argument)
Adds a chunk ticket to the ticket manager.void
applyViewDistance(int watchDistance)
void
close()
boolean
executeQueuedTasks()
BlockView
getChunk(int chunkX, int chunkZ)
Chunk
getChunk(int x, int z, ChunkStatus leastStatus, boolean create)
private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>>
getChunkFuture(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create)
CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>>
getChunkFutureSyncOnMainThread(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create)
ChunkGenerator
getChunkGenerator()
private ChunkHolder
getChunkHolder(long pos)
String
getChunkLoadingDebugInfo(ChunkPos chunkPos)
String
getDebugString()
ServerLightingProvider
getLightingProvider()
int
getLoadedChunkCount()
int
getPendingTasks()
PersistentStateManager
getPersistentStateManager()
PointOfInterestStorage
getPointOfInterestStorage()
SpawnHelper.Info
getSpawnInfo()
int
getTotalChunksLoadedCount()
World
getWorld()
WorldChunk
getWorldChunk(int chunkX, int chunkZ)
private void
ifChunkLoaded(long pos, Consumer<WorldChunk> chunkConsumer)
private void
initChunkCaches()
boolean
isChunkLoaded(int x, int z)
private boolean
isFutureReady(long pos, Function<ChunkHolder,CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>>> futureFunction)
private boolean
isMissingForLevel(ChunkHolder holder, int maxLevel)
void
loadEntity(Entity entity)
void
markForUpdate(BlockPos pos)
void
onLightUpdate(LightType type, ChunkSectionPos pos)
private void
putInCache(long pos, Chunk chunk, ChunkStatus status)
<T> void
removeTicket(ChunkTicketType<T> ticketType, ChunkPos pos, int radius, T argument)
Removes a chunk ticket from the ticket manager.void
save(boolean flush)
void
sendToNearbyPlayers(Entity entity, Packet<?> packet)
void
sendToOtherNearbyPlayers(Entity entity, Packet<?> packet)
void
setChunkForced(ChunkPos pos, boolean forced)
void
setMobSpawnOptions(boolean spawnMonsters, boolean spawnAnimals)
boolean
shouldTickBlock(BlockPos pos)
boolean
shouldTickChunk(ChunkPos pos)
boolean
shouldTickEntity(Entity entity)
private boolean
tick()
void
tick(BooleanSupplier shouldKeepTicking)
private void
tickChunks()
void
unloadEntity(Entity entity)
void
updateCameraPosition(ServerPlayerEntity player)
Methods inherited from class net.minecraft.world.chunk.ChunkManager
getWorldChunk
-
Field Details
-
CHUNK_STATUSES
-
ticketManager
-
chunkGenerator
-
world
-
serverThread
-
lightProvider
-
mainThreadExecutor
-
threadedAnvilChunkStorage
-
persistentStateManager
-
lastMobSpawningTime
private long lastMobSpawningTime -
spawnMonsters
private boolean spawnMonsters -
spawnAnimals
private boolean spawnAnimals -
chunkPosCache
private final long[] chunkPosCache -
chunkStatusCache
-
chunkCache
-
spawnEntry
-
-
Constructor Details
-
ServerChunkManager
public ServerChunkManager(ServerWorld serverWorld, LevelStorage.Session session, com.mojang.datafixers.DataFixer dataFixer, StructureManager structureManager, Executor workerExecutor, ChunkGenerator chunkGenerator, int viewDistance, boolean bool, WorldGenerationProgressListener worldGenerationProgressListener, Supplier<PersistentStateManager> supplier)
-
-
Method Details
-
getLightingProvider
- Specified by:
getLightingProvider
in classChunkManager
-
getChunkHolder
-
getTotalChunksLoadedCount
public int getTotalChunksLoadedCount() -
putInCache
-
getChunk
- Specified by:
getChunk
in classChunkManager
-
getWorldChunk
- Overrides:
getWorldChunk
in classChunkManager
-
initChunkCaches
private void initChunkCaches() -
getChunkFutureSyncOnMainThread
@Environment(CLIENT) public CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>> getChunkFutureSyncOnMainThread(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create) -
getChunkFuture
private CompletableFuture<com.mojang.datafixers.util.Either<Chunk,ChunkHolder.Unloaded>> getChunkFuture(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create) -
isMissingForLevel
-
isChunkLoaded
public boolean isChunkLoaded(int x, int z)- Overrides:
isChunkLoaded
in classChunkManager
-
getChunk
- Specified by:
getChunk
in interfaceChunkProvider
- Overrides:
getChunk
in classChunkManager
-
getWorld
-
executeQueuedTasks
public boolean executeQueuedTasks() -
tick
private boolean tick() -
shouldTickEntity
- Overrides:
shouldTickEntity
in classChunkManager
-
shouldTickChunk
- Overrides:
shouldTickChunk
in classChunkManager
-
shouldTickBlock
- Overrides:
shouldTickBlock
in classChunkManager
-
isFutureReady
private boolean isFutureReady(long pos, Function<ChunkHolder,CompletableFuture<com.mojang.datafixers.util.Either<WorldChunk,ChunkHolder.Unloaded>>> futureFunction) -
save
public void save(boolean flush) -
close
- Specified by:
close
in interfaceAutoCloseable
- Overrides:
close
in classChunkManager
- Throws:
IOException
-
tick
-
tickChunks
private void tickChunks() -
ifChunkLoaded
-
getDebugString
- Specified by:
getDebugString
in classChunkManager
-
getPendingTasks
public int getPendingTasks() -
getChunkGenerator
-
getLoadedChunkCount
public int getLoadedChunkCount() -
markForUpdate
-
onLightUpdate
-
addTicket
Adds a chunk ticket to the ticket manager.Addition of a ticket may load chunk(s) at some point in the future depending on the loading level in the ticket's vicinity.
-
removeTicket
Removes a chunk ticket from the ticket manager.Removal of a ticket may unload chunk(s) at some point in the future depending on the loading levels in the ticket's vicinity after removal.
-
setChunkForced
- Overrides:
setChunkForced
in classChunkManager
-
updateCameraPosition
-
unloadEntity
-
loadEntity
-
sendToNearbyPlayers
-
sendToOtherNearbyPlayers
-
applyViewDistance
public void applyViewDistance(int watchDistance) -
setMobSpawnOptions
public void setMobSpawnOptions(boolean spawnMonsters, boolean spawnAnimals)- Overrides:
setMobSpawnOptions
in classChunkManager
-
getChunkLoadingDebugInfo
-
getPersistentStateManager
-
getPointOfInterestStorage
-
getSpawnInfo
-