* Flush out all pending, buffered changes at the end of each tick, after every chunk is ticked. This makes every block update client-side in unison, instead of unlucky ones only being sent 1 tick later.
* Re-add buffer for outgoing network data; IOCP async WSASend has higher overhead than expected... Fixes regression introduced in 054a89dd9
+ DoWith calls now broadcast the block entity and mark the chunk dirty
+ Add block entity change queue to synchronise BE updates with block updates
* Fixed a few incorrect assertions about BE type
- Remove manual overloads
* Turn off global-constructors warning. These are needed to implement cRoot signal handler functionality
* Add Clang flags based on version lookup instead of a compile test. The CMake config process is single threaded and slow enough already
* Reduced GetStackValue verbosity
+ Clarify EnchantmentLevel, StayCount, AlwaysTicked, ViewDistance signedness
+ Give SettingsRepositoryInterface a move constructor to simplify main.cpp code
- Remove do {} while (false) construction in redstone handler
* Move Broadcast functions from cChunkMap to cBroadcaster
- Remove cBroadcastInterface in favour of cBroadcaster.
- cChunk: Remove broadcast functions.
* resurect broadcast interface
* Absorb cBroadcaster into cWorld.
Removes the need for forwarding the function calls.
* Improve const-correctness
* Use Int8 instead of char
+ Comment `ForClients` functions
* Improve comments
* Broadcaster: Rename ForClients functions
Closes#1244
Initially I was just going to add the cChunkData to cSetChunkData but profiling revealed
that the copying wasn't even the biggest slowdown. Much more time was being spent in
cChunk::CreateBlockEntities and cChunk::WakeUpSimulators than was in memcpy so I've made
those significantly faster as well.
Optimisations performed:
* cSetChunkData now stores blocks in a cChunkData object
* cChunkData objects can now perform moves even if they are using different pools
* cChunk::CreateBlockEntities now iterates in the correct order and only over present chunk sections
* Similarly for cChunk::WakeUpSimulators
* cSetChunkData::CalculateHeightMap now shortcuts to the highest present chunk section before checking blocks directly
* Made BroadcastSoundEffect take vector parameters.
* Added docs for new vectored methods
* Removed old code
* Fixed lua warnings
* Made old BroadcastSoundEffect not an override.
* m_Block to m_BlockPos, used Vector3d constructor where prettier.
* a_Block to a_BlockPos
* Changed thunderbolt a_Block to a_BlockPos
* Added bed entity
* Export cBedEntity to lua
* Set color of bed through item damage value
* Added bed entity to APIDoc
* NBT: Added loading and saving
* Crafting recipes for the colored beds