Need to define how things will be threaded and layed out.
- Main thread - Just to initialize every other thread and connect things
- Console thread - To handle console input and control the server
- RCON thread (later) - To handle RCON connections
- Each dimension - Each dimension (world) will have its own thread to tick and update
- Each client - Each client will have its own thread to handle incoming packets
Client write thread - One thread to handle all outgoing packets to all clientsidk if this is a good idea
Notchian server tick order:
- world border
- weather (not sure why most of this is included in weather)
- advanceWeatherCycle
- sleep
- updateSkyBrightness
- time
- tickPending (!isDebug)
- blockTicks
- fluidTicks
- raids
- chunkSource
- blockEvents (len(players) > 0) - ticks for 299 ticks after every player leaves
- entities
- dragonFight (if one is going on)
- each entity (some conditions and lists and stuff, look into it)
- checkDespawn
- stopRiding (if applicable)
- tickNonPassenger (with conditions)
- tick
- tickPassenger recursively
- tickBlockEntities
- entities
- entityManager