* added logging functions to each plugin
* added documentation
* modified the global LOG macro
* updated the way of string composition
* removed cloumn
* removed capital v
* Alpha-sort cChestEntity
* Chests: use SendUpdateBlockEntity
* Pathfinder: fix out of range Y
* 1.13: correct weather packet ID
* Chests: fix neighbour scanner
+ Add OnAddToWorld and overload to scan neighbours there, instead of in the constructor/OnUse. This fixes hoppers accessing newly loaded double chests and seeing a null m_Neighbour, thus thinking its a single chest.
* Fix typo in cross coords computation.
* Simplify hopper logic.
* Block entities: ASSERT that type is correct
If you match the block type first before calling DoWithBlockEntity, the corresponding block entity must either be empty or correspond to the block type.
* Chunk: fix some forgotten PendingSendBE cleanup
+ Add cleanup in SetAllData, WriteBlockArea
- Remove RemoveBlockEntity (used once), HasBlockEntity (not used)
* Replace MakeIndex with MakeIndexNoCheck
* Remove extraneous MarkDirty in hopper & chests
* Added functionality: mobs now enter boats and minecarts when coming into collision with them.
* Fixed basic style errors, nothing else
* Added self to contributors and reverted .gitignore to original state.
* Update player list gamemode on world change
* Fix invisibility for spectators, use entity metadata
* Populate m_World for cPlayers on load
- Remove SendPlayerMaxSpeed, a duplicate of SendEntityProperties
* added generator for obsidian pillars and central fountain which then is used for the exit portal
* checkstyle
* checkstyle the second
* fixed clang
removed magic number
added Clamp
* make the pillars configurable
* fixed clang
added warning if there was a unknown value if the tower should have a cage or not
* forgot to cancel on unkwon value
* fixed clang this time maybe
* added new generator to generator test
* fixed test
* added prefab generation for end fountain
* fixed checkstyle and updated the prefab
* added ender dragon spawning
made the fountain positioning dynamic
removed fountain placement functions
* added enderdragon stuff to testing
* pls compile
* added changes suggested by @peterbell10
* fixed clang
* added debug for further research on the ARM build
* ok - it wasn't my tower placement
* checking in setup
* readded the fountain schematic
* removed finisher
* readded generator
* removed generator trigger - kept ini file access
* using cChunkDef function to calculate abs pos of endercrystal
* yes, I know it's unused...
* commented everything in the ComposableGenerator.cpp
- so only the new class in compiled in but not called at all
* don't compile in the new generator at all
(removed from CMakeLists.txt)
* readded the new generator
* readded the new generator
* removed debug output
* made the towers generate acrocc chunk borders
* fixed bad merge
* fixed clang
* fixed clang
* generate the dragon 20 blocks above terrain
* trying to fixed weird undefined reference
* maybe this fixes the weird behaviour
* takes chunk width as parameter now
* added new comments with info to generated structures
removed ender dragon spawning
removed chunkwidth from parameter
* fixed linker
* maybe fixed linking. tried with gc and clang
* fixed ender crystal
* fixed test
* updated output strings
* fixed build
* fixed up test
* fixed test compile
* fixed test - cant get the tests to show up
* removed the semicolon
* maybe this is the fix?
* at this point i have no idea - in MVSC it works
* removed the ender dragon
Co-authored-by: 12xx12 <12xx12100@gmail.com>
* Change to Cuboid calculation for splash distance
* Use ForEachEntityInBox when splash entities
* Remove TODO comment, calculation verified
* Added self to contributors
Result was black spot in the ground because the meta exceeded 3 and the client didn't render anything.
Been here since the beginning? fbabf9ee8c/source/FinishGen.cpp (L159)
* 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
* When the cause of destruction was world-induced (CanBeAt check failed) there is no tool. Pass the nullptr directly to ConvertToPickups and let it handle it.
* Fixes#4795
- Remove unused a_Digger parameter to ConvertToPickups.
+ 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
This is only overridden false in Vines and Snow. It is called when a CanBeAt check fails, to determine whether DropBlockAsPickups is called. However, Vines and Snow already drop nothing without the right tool, so this function is superfluous.
* LINUX doesn't exist apparently, use UNIX instead
+ Add some platform-specific logic to determine whether to use mcpu or march
- Remove duplicated compile option comments
+ Add STATUS level to messages
* End crystal placement
* End crystal placement - fixed error and added some comments
* Removed unused includes
* Update src/Items/ItemEndCrystal.h
Co-authored-by: Alexander Harkness <me@bearbin.net>
* End Crystal placement, early-return pattern enforcement
* End crystal Item finish?
* Small changes
Fixed a crashbug in ender crystal destruction.
According to vanilla 1.16 testing, end crystals don't place if any entity intersects the box, not just other end crystals.
Check return value of SpawnEnderCrystal.
Add header in SeeMake.
Cafe Stile Redux.
* The stylechecker relies on CMakeLists
* There is another
Co-authored-by: Alexander Harkness <me@bearbin.net>
Co-authored-by: Tiger Wang <ziwei.tiger@outlook.com>
First one: add missing exception handler in ProcessProtocolIn
Second: remove faulty logic dealing with incomplete packets.
`a_Data = a_Data.substr(m_Buffer.GetUsedSpace() - m_Buffer.GetReadableSpace());`
was incorrect; it attempted to apply a length derived from m_Buffer to an unrelated a_Data. Its purpose was to give cProtocol the data the client sent, minus initial handshake bytes. However, we can use the knowledge that during initial handshake, there is no encryption and every byte can be written unchanged into m_Buffer, to just call cProtocol with a data length of zero. This will cause it to parse from m_Buffer - wherein we have already written everything the client sent - with no a_Data manipulation needed.
Additionally, removed UnsupportedButPingableProtocolException (use of exception as control flow) and encode this state as m_Protocol == nullptr, id est "no protocol for this unsupported version", which is then handled by cMultiVersionProtocol itself.
+ A cPlayer, once created, has a strong pointer to the cClientHandle. The player ticks the clienthandle. If he finds the handle destroyed, he destroys himself in turn. Nothing else can kill the player.
* The client handle has a pointer to the player. Once a player is created, the client handle never outlasts the player, nor does it manage the player's lifetime. The pointer is always safe to use after FinishAuthenticate, which is also the point where cProtocol is put into the Game state that allows player manipulation.
+ Entities are once again never lost by constructing a chunk when they try to move into one that doesn't exist.
* Fixed a forgotten Super invocation in cPlayer::OnRemoveFromWorld.
* Fix SaveToDisk usage in destructor by only saving things cPlayer owns, instead of accessing cWorld.