* Avoid inefficient AString -> c_str() -> AString round trip
* Avoid redundant string init expressions
* Avoid unnecessary return, continue, etc.
* Add .clang-format to help with clang-tidy fix-its
* Avoid unnecessary passing by value
* Avoid unnecessary local copying
* Avoid copying in range-for loops
* Avoid over-complicated boolean expressions
* Some violations missed by my local clang-tidy
* Allow unnecessary continue statements
* Add brackets
* Another expression missed locally
* Move BindingsProcessor call into clang-tidy.sh and add space
* Fix pushd not found error
* Different grouping of CheckBlockInteractionRate
Closes#4708
This updates jsoncpp, mbedtls, TCLAP and SQLiteCpp to their latest stable release. A few additional changes were needed:
* jsoncpp deprecated Reader, FastWriter and StyledWriter which I've replaced
with some helper functions in JsonUtils.cpp
* SQLiteCpp changed how it builds with external sqlite libraries, now expecting
them to be installed. The simplest path was to remove sqlite from cuberite's
submodule and just use SQLiteCpp's internal version.
* Make puking pickups fly nicer
* Improve entity position updates
* Move determination of whether a delta is too big for a packet into the protocol handlers
+ Less jittery movement
+ Generalise CollectEntity to take any entity
* Replace buckets to the selected hotbar slot, rather than the first available.
Replicates vanilla behaviour, as well as being more logical.
* Refactor cInventory::AddItem. Behaviour is now documented
* Add new cInventory::ReplaceOneEquippedItem and ::SetEquippedItem methods
* Return empty potion to the same slot after drinking
* Replace buckets correctly in other situations, not simply water and lava
Uses the new ReplaceOneEquippedItem method
* Correct collecting water from source block with bottle
* Add cPlayer::ReplaceOneEquippedItemTossRest method
* Handle stacked filled buckets (in theory)
Use new cPlayer::ReplaceOneEquippedItemTossRest method
* Stabilise MoveToWorld
* Fix comments and deprecate ScheduleMoveToWorld
* Enhanced thread safety for m_WorldChangeInfo
* Return unique_ptr from cAtomicUniquePtr::exchange
* cWorld now calls entity cEntity::OnAddToWorld and cEntity::OnRemoveFromWorld.
Allows broadcasting entities added to the world from the world's tick thread.
This also factors out some common code from cEntity::DoMoveToWorld and cEntity::Initialize.
As a consequence, cEntity::Destroy(false) (i.e. Destroying the entity without broadcasting) is impossible.
This isn't used anywhere in Cuberite so it's now deprecated.
* Update entity position after removing it from the world.
Fixes broadcasts being sent to the wrong chunk.
* Fix style
* cEntity: Update LastSentPosition when sending spawn packet
* Add Wno-deprecated-declarations to the lua bindings
* Kill uses of ScheduleMoveToWorld
Currently the player is spawned immediately in front of them.
Simply changing `cNetherPortalScanner::OutOffset` to 0.5 wasn't enough, as the player would always be spawned on top of the portal, however checking for non-solid blocks instead of air fixes this.
Closes#4236
CMake now creates a header file in the build directory under the path "include/Globals.h" which just includes "src/Globals.h" with an absolute path. Then instead of adding "src/" to the include directories, it adds "include/".
#include "Globals.h" still works by including the build generated file and any other src-relative path will not work.
1. Base knockback on an entity's bounding box intersection with the explosion
2. Armor blast protection reduces knockback
3. Don't apply knockback to players flying in creative mode
Fixes#4139
1. implement protocol message SendHeldItemChange
2. add save / load inventory equipped item slot in JSON
3. send held item slot message after player connect to server
Fixes#4189
* Change reinterpret_cast -> static_cast wherever possible
* Remove more unnecessary `const_cast`s.
reinterpret_casts should be avoided for the same reason as c-style casts - they don't do any type-checking. reinterpret_cast was mainly being used for down-casting in inheritance hierarchies but static_cast works just as well while also making sure that there is actually an inheritance relationship there.
* Fixes a number of "<function>: not all control paths return a value" warnings on MSVC.
* Introduces the UNREACHABLE global macro and uses it instead of conditionally compiled switch defaults.
* Move cNBTParseErrorCategory from FastNBT.h into FastNBT.cpp to prevent bad calls to message()
* Replace cEntity:m_IsSubmerged with m_IsHeadInWater
* Replace cEntity:m_IsSwimming with m_IsInWater
* Add API documentation for new symbols
* Apply SetSwimState to all entities, not just mobs and players
* Pickups now use IsOnFire to check if they are on fire before destruction
Fixes#3987
* 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