English | 中文 |
Applicable versions: 1.16.x
Game Loop
├── For each world
│ ├── World Time Update
│ ├── For each chunk
│ │ ├── Block Change Sync
│ │ ├── Natural Spawning
│ │ └── Chunk Tick
│ ├── Chunk Unload
│ ├── Tile Tick
│ ├── Block Event
│ ├── Entity
│ └── Tile Entity
├── Player Entity
├── Auto save
└── Player Action
Game Loop
├── Command Function
├── For each world
│ ├── World Time Sync
│ ├── World Border
│ ├── Weather
│ ├── Sleeping
│ ├── World Time Update
│ ├── Ticket
│ ├── For each chunk
│ │ ├── Block Change Sync
│ │ ├── Natural Spawning
│ │ └── Chunk Tick
│ │ ├── Thunder
│ │ ├── Ice and Snow
│ │ └── Random Tick
│ ├── Special Spawning
│ │ ├── Phantom Spawning
│ │ ├── Patrol Spawning
│ │ ├── Cat Spawning
│ │ ├── Zombie Siege Spawning
│ │ └── Wandering Trader Spawning
│ ├── Entity Tracker
│ ├── Chunk Unload
│ ├── Tile Tick
│ ├── Raid
│ ├── Block Event
│ ├── Dragon Fight
│ ├── Entity
│ └── Tile Entity
├── Network
│ └── Player Entity
├── Console
├── Auto save
└── Async task
└── Player Action
The main and the infinite loop
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.MinecraftServer#runServer
Executes functions and datapacks
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.ServerFunctionManager#tick
net.minecraft.server.MinecraftServer#tickChildren
For each world, do following logics
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.MinecraftServer#tickChildren
Sync world time to client
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.network.protocol.game.ClientboundSetTimePacket
net.minecraft.server.MinecraftServer#tickChildren
World border update
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.world.level.border.WorldBorder#tick
net.minecraft.server.level.ServerLevel#tick
Update weather
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#advanceWeatherCycle
net.minecraft.server.level.ServerLevel#tick
Player sleeping logic
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#wakeUpAllPlayers
net.minecraft.server.level.ServerLevel#tick
Update gametime and daytime of the world
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickTime
net.minecraft.server.level.ServerLevel#tick
Ticket System update
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.DistanceManager#purgeStaleTickets
net.minecraft.server.level.ServerChunkCache#tick
For each chunk has player nearby, do following logics
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerChunkCache#tickChunks
Sync changed blocks in the chunk to the client
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ChunkHolder#broadcastChanges
net.minecraft.server.level.ServerChunkCache#tickChunks
Natural mob spawning
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.world.level.NaturalSpawner#spawnForChunk
net.minecraft.server.level.ServerChunkCache#tickChunks
Chunk Tick
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickChunk
net.minecraft.server.level.ServerChunkCache#tickChunks
Lighting and skeleton trap spawning
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickChunk
Forming ice and snow
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickChunk
Block and fluid random ticks
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickChunk
Spawning special mobs
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickCustomSpawners
net.minecraft.server.level.ServerChunkCache#tickChunks
Spawning phantoms
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickCustomSpawners
net.minecraft.server.level.ServerChunkCache#tickChunks
Spawning pillager patrols
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickCustomSpawners
net.minecraft.server.level.ServerChunkCache#tickChunks
Spawning cats in villages
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickCustomSpawners
net.minecraft.server.level.ServerChunkCache#tickChunks
Spawning zombie sieges
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickCustomSpawners
net.minecraft.server.level.ServerChunkCache#tickChunks
Spawning wandering traders
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#tickCustomSpawners
net.minecraft.server.level.ServerChunkCache#tickChunks
Sync entity updates to the client
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ChunkMap#tick
net.minecraft.server.level.ServerChunkCache#tickChunks
Unloading chunks
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ChunkMap#tick(java.util.function.BooleanSupplier)
net.minecraft.server.level.ServerChunkCache#tick
Executing tile tick events, including block tile ticks and fluid tile ticks
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.world.ticks.LevelTicks#tick
net.minecraft.server.level.ServerLevel#tick
Raid logics
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.world.entity.raid.Raids#tick
net.minecraft.server.level.ServerLevel#tick
Block events
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.level.ServerLevel#runBlockEvents
net.minecraft.server.level.ServerLevel#tick
Dragon fight logic
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.world.level.dimension.end.EndDragonFight#tick
net.minecraft.server.level.ServerLevel#tick
Ticking entities
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.world.level.Level#guardEntityTick
net.minecraft.server.level.ServerLevel#tick
Ticking tile entities
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.world.level.Level#tickBlockEntities
net.minecraft.server.level.ServerLevel#tick
Network system ticking
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.network.ServerConnectionListener#tick
net.minecraft.server.MinecraftServer#tickChildren
Ticking entity logic of players
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.network.ServerGamePacketListenerImpl#tick
net.minecraft.network.Connection#tick
Handling console inputs
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.dedicated.DedicatedServer#handleConsoleInputs
net.minecraft.server.dedicated.DedicatedServer#tickChildren
Auto save
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.MinecraftServer#saveEverything
net.minecraft.server.MinecraftServer#tickServer
Executing async tasks
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.server.MinecraftServer#waitUntilNextTick
net.minecraft.server.MinecraftServer#runServer
Handling player actions from packets from clients
Code References
Minecraft 1.19, mojmap mapping
net.minecraft.network.protocol.PacketUtils#ensureRunningOnSameThread