Tiger Wang
eeb63b8901
zlib -> libdeflate ( #5085 )
...
+ Use libdeflate
+ Use std::byte
* Fix passing temporary to string_view
+ Emulate make_unique_for_overwrite
2021-01-11 16:39:43 +00:00
Tiger Wang
16aeb84cd3
Fix potential destruction crashes ( #5095 )
...
* Fix potential destruction crashes
* Fix destructors accessing destroyted objects
* Fix cPlayer not destroying windows (Destroyed never called)
* Tentatively fixes #4608 , fixes #3236 , fixes #3262
- Remove cEntity::Destroyed() and replace with cEntity::OnRemoveFromWorld()
* Add missing call to OnRemoveFromWorld
2021-01-02 13:50:34 +00:00
Tiger Wang
959b263093
Fix AppVeyor IA32 builds ( #5096 )
...
* Fix AppVeyor IA32 builds
> The default target platform name (architecture) is that of the host and is provided in the CMAKE_VS_PLATFORM_NAME_DEFAULT variable.
AppVeyor uses AMD64. Oops.
* del cmakecache
* -
* +
2020-12-31 19:43:02 +00:00
Tiger Wang
90ce4ed2b8
Command Blocks: fix a crash
...
* Don't store a temporary
2020-12-30 12:15:19 +00:00
Tiger Wang
abc96bb4ce
Avoid an std::list in StreamNextChunk
2020-12-26 17:55:45 +00:00
Tiger Wang
bb37e5c152
Streamline ClientHandle chunk send a little
...
- Removed RemoveFromAllChunks. On destruction cWorld::RemovePlayer calls RemoveClientFromChunks already, and there's no need to manually clear the chunk lists.
2020-12-26 17:55:45 +00:00
Tiger Wang
c91335bfbb
Don't prematurely exit "downloading terrain" screen on join
...
- Remove leftover SendPlayerMoveLook from #1500
2020-12-26 17:55:45 +00:00
Tiger Wang
60bc040a9c
Make SetAllData's MarkDirty() the chunk's responsibility
2020-12-26 17:55:45 +00:00
Tiger Wang
9fcd2d4210
Avoid a gratuitous dirty when loading chunks with entities
...
Loaded entities are directly moved into the chunk data, instead of having to go through cWorld, as if they were just spawned. This avoid dirtying the chunk.
2020-12-26 17:55:45 +00:00
Tiger Wang
7f894b2f73
Silverfish: correct search cube
2020-12-26 16:58:53 +00:00
Tiger Wang
14ada52f3a
Daylight Sensor: remove redundant delay
...
Daylight Sensors are already always ticked.
2020-12-26 16:58:53 +00:00
Tiger Wang
d9a7c51d4d
ViewDistance: unsigned -> signed
2020-12-26 16:58:53 +00:00
Tiger Wang
53ae358d8c
Replace custom ChunkCoordinate with cChunkCoords
2020-12-21 23:21:01 +00:00
Tiger Wang
f3ec768dfb
unique_ptr<cChunkMap> to plain member
2020-12-21 23:21:01 +00:00
Tiger Wang
9518a27357
Prepare for 1.15+ ( #4856 )
...
+ Add type-safe container for states
* Split registry Blocks into BlockTypes, BlockStates so the block types enumeration can be #included without too much penalty
* Ensure Registry uses type-safe container
2020-12-21 13:54:04 +00:00
Tiger Wang
5b6bed6b00
Improve Enderman targeting
...
* Fix look angle checks
* Do LOS trace from eye-height
2020-12-21 13:52:23 +00:00
Tiger Wang
47c0b48bfd
Monsters: improve targeting
...
* Replace DoWithNearestPlayer with bounding box search (avoid iterating through all players in world).
* Do line-of-sight checks from eye-to-eye.
+ Added LOS and LOS lost timer to target lost checks, in addition to distance.
2020-12-21 13:52:23 +00:00
Tiger Wang
491238f799
Chunk: use FAST_FLOOR_DIV
2020-12-21 13:52:15 +00:00
Tiger Wang
e7331fe820
Improve Silverfish search
...
* Start from the inside out, don't always look at the entire search space by bailing out randomly
2020-12-21 13:52:06 +00:00
Tiger Wang
d9cd2f741d
Comment and code style fix
...
+ Add static keyword
- Don't capture everything in lambda
2020-12-21 13:52:06 +00:00
Tiger Wang
742e27ad2f
Remove unused Temporary namespace
...
- Remove unused temporary mapping generation at startup
2020-12-21 00:11:34 +00:00
Tiger Wang
090d8305e4
Warnings improvements
...
* 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
2020-12-18 21:03:40 +00:00
Tiger Wang
83e18f6d31
Horsies: don't always broadcast metadata
2020-12-18 20:44:06 +00:00
Tiger Wang
98cf4025ce
BlockInfo: float-equal for Clang only
2020-11-28 20:49:33 +00:00
Tiger Wang
815f2aed82
Lilypads: add missing boundary check
2020-11-28 20:48:53 +00:00
Tiger Wang
0c69b648ae
HTTPServerConnection: more robust error handling
...
* Fix passing a nullptr to downstream code when the request was malformed
+ Reset the connection on errors
* Fixes #5029
2020-11-14 12:24:42 +00:00
Tiger Wang
645fea4237
Players are no longer kicked when clicking on bedrock ( #5023 )
...
* Players are no longer kicked when clicking on bedrock
* Fixes #5022
2020-11-06 14:58:47 +00:00
Tiger Wang
1ed782787a
Rein in light spread by correcting falloff value
...
* Fixes #5018
2020-11-02 15:44:23 +00:00
Tiger Wang
6d85435f60
Remove BLOCKENTITY_PROTODEF
2020-10-24 18:49:38 +01:00
Tiger Wang
64442b05f8
cBlockInfo: further cleanup ( #5001 )
...
* cBlockInfo: further cleanup
+ Use switch statements instead of lookup in dynamically initialised arrays
- Remove some deprecated bindings
* Update Stubs removing references to BlockInfoArray
2020-10-18 15:37:07 +00:00
Tiger Wang
f8d72c8fa9
MUSL stack size ( #4995 )
2020-10-17 11:31:40 +00:00
Tiger Wang
a145980795
Fix Android builds ( #4998 )
...
Construct paths relative to the Cuberite sources with PROJECT_SOURCE_DIR, instead of wherever the first CMakeLists.txt file happened to be with CMAKE_SOURCE_DIR.
In Android's case, the latter was in a folder called android/ but that's not the root of the source tree, so any file path built off that root was wrong. This caused file-specific warnings exclusions to fail to apply.
2020-10-15 09:35:44 +00:00
Tiger Wang
21068011c6
Remove SetProperty(...cPlayer)
...
Enchantment table, anvil windows are already opened one per-player.
2020-10-03 16:54:14 +01:00
Tiger Wang
3917b250b0
Revert travis changes
2020-09-30 22:05:17 +01:00
Tiger Wang
7bc8d2ee26
Upgrade squeelylitecpp to 3.1.1
2020-09-30 22:05:17 +01:00
Tiger Wang
f9ac6543ab
C++17 stuff
2020-09-30 22:05:17 +01:00
Tiger Wang
429117c1f6
Doors: check power & toggle correctly
...
* Fixed upper half ignoring its updates
* Fixes #4945
* Fixed doors playing sound effects when they didn't actually toggle
2020-09-28 23:40:19 +01:00
Tiger Wang
c9fbb43ac7
HandleEnchantItem: use a lambda ( #4944 )
2020-09-28 22:38:10 +00:00
Tiger Wang
c158569af3
Remove unused Temporary namespace
2020-09-25 14:51:57 +01:00
Tiger Wang
4519469547
Do not call into things we don't own in destructors
...
- Remove improper accesses in cChunk destructor
* Fixes #4894
2020-09-25 14:51:16 +01:00
Tiger Wang
10bd15a11e
Grass spread: check chunk & light validity correctly
2020-09-25 14:51:16 +01:00
Tiger Wang
5bd12814db
Put phonograph on right part of visual spectrum
2020-09-25 09:07:34 +00:00
Tiger Wang
7574f68a48
BlockEntity: clarify ConvertToPickups behaviour
2020-09-25 09:07:01 +00:00
Tiger Wang
c53a0ba5f6
Unify block entity pickup conversion
...
- Removed normal BlockHandler knowledge of block entities during conversion
+ Added cBlockEntity::ConvertToPickups that handles it
2020-09-25 09:07:01 +00:00
Tiger Wang
1a60164848
Small cleanup in Jukeboxes
...
* Fixed creative players not tracking stats, and the code trying to "place" a record when they used one
2020-09-25 09:07:01 +00:00
Tiger Wang
a2ecbf6a2e
Fix cItems::AddItemGrid adding empty items
2020-09-25 09:07:01 +00:00
Tiger Wang
3edcafdf8b
TABS OUT OF BED! TABS IN THE CORRIDORS!
2020-09-23 14:34:15 +01:00
Tiger Wang
71b96ab921
Limit fortune level, style fixes
2020-09-23 14:34:15 +01:00
Tiger Wang
6183b28f93
Implement redstone quasi-connectivity ( #4889 )
2020-09-21 20:39:58 +01:00
Tiger Wang
80fa364fd7
IBM Z ( #4892 )
2020-09-20 18:02:00 +00:00
Tiger Wang
5a16620322
Cauldron: backport "use" behaviour to 1.12 ( #4902 )
...
* Cauldron: backport "use" behaviour to 1.12
2020-09-20 15:39:17 +01:00
Tiger Wang and Alexander Harkness
68cced73af
BlockHandler initialisation is a constant expression ( #4891 )
...
* BlockHandler initialisation is a constant expression
If we can't make it all namespaces, this is the next best I guess.
+ Tag handlers constexpr, const as needed
+ Inherit constructors
* Privatise handler functions
* More constexpr
Co-authored-by: Alexander Harkness <me@bearbin.net >
2020-09-20 13:50:52 +00:00
Tiger Wang
e2e78abdb7
Style, no need to tag struct with s
2020-09-18 16:41:06 +01:00
Tiger Wang
608e7a9950
Remove unused ServerPort argument
2020-09-18 16:41:06 +01:00
Tiger Wang
7f372b12cb
Add State enum to protocol
2020-09-18 16:41:06 +01:00
Tiger Wang
bf253caab5
Remove unused ServerPort member
2020-09-18 16:41:06 +01:00
Tiger Wang
acc399ffb3
Cleanup Protocol classes
...
* Visibility, static, ordering changes
2020-09-18 16:41:06 +01:00
Tiger Wang
c3d2956ba5
BlockHandler: no dynamic allocation ( #4862 )
...
* BlockHandler: no dynamic allocation
2020-09-17 14:51:42 +01:00
Tiger Wang and Alexander Harkness
d9d71e1de6
Rail: avoid invalid game states ( #4864 )
...
+ Check CanBeAt
Ref: #4859
Co-authored-by: Alexander Harkness <me@bearbin.net >
2020-09-13 13:44:20 +00:00
Tiger Wang
33f3c18bc1
Beds: derestrict clicking block face ( #4863 )
...
Ref: https://github.com/cuberite/cuberite/issues/4860#issuecomment-691545904
2020-09-13 10:58:39 +00:00
Tiger Wang and peterbell10
198407807f
Reverse order of ChunkSender priorities ( #4858 )
...
* Reduces confusion when using overloaded operator< and priority_queue
Co-authored-by: peterbell10 <peterbell10@live.co.uk >
2020-09-12 19:43:18 +00:00
Tiger Wang and Alexander Harkness
93adbdce9a
Use tracing for explosions ( #4845 )
...
* TNT: Implement tracing algorithm
+ Add intensity tracing
* Fix iterating over all players to SendExplosion, even those not in range
* Implemented TNT entity interaction
* Fixed misaligned destruction tracing
* Finalise TNT algorithm
- Remove BlockArea and just use chunks
Using SetBlock makes it so that we can update everything properly, and does appear to be faster.
* BlockInfo learns about explosion attentuation
* Rename Explodinator parameters
* TNT: pull block destruction into common function
Co-authored-by: Alexander Harkness <me@bearbin.net >
2020-09-12 18:57:44 +00:00
Tiger Wang
040380321c
WriteConsoleInput can return FALSE when running as servic
2020-09-05 14:23:54 +01:00
Tiger Wang
29808c61c9
Reformat messages in NonCtrlHandler
2020-09-05 13:41:42 +01:00
Tiger Wang
1bc12ba2b3
Streamline startup sequence
...
* Clean up cRoot & main
* Move some OS-specifics into OSSupport
2020-09-05 13:16:52 +01:00
Tiger Wang
5e670a050b
Rename AddEntityIfNotPresent to AddPlayer
...
+ Always make a chunk for the player to go into
* Fixes #4847
2020-09-03 22:25:35 +01:00
Tiger Wang
f84e805453
Entities can fail to add into a chunk
...
- MoveEntityToNewChunk, AddEntity can fail. Ensure we handle these cases correctly
2020-08-29 21:34:21 +01:00
Tiger Wang
07ffd9f6f3
Unused/duplicate function cleanup
...
* FaceIntToBlockFace in 1.8/1.9 protocol merged
- Removed undefined permissions stuff in Player header
2020-08-29 16:47:40 +01:00
Tiger Wang
d2e92440eb
Remove redundant DoWithChunkAt in chests
2020-08-28 21:43:12 +01:00
Tiger Wang
5d736b653f
Minor style fixes
2020-08-28 21:42:37 +01:00
Tiger Wang
c1ffed60ec
FastNBTWriter: AddString now uses string_view
...
* Avoids an allocation for all those string literals we pass in
2020-08-28 21:42:18 +01:00
Tiger Wang
8fa8ee96fc
Broadcaster: don't loop over all entities to broadcast one's position
...
* Use ForClientsWithEntity
2020-08-28 21:41:18 +01:00
Tiger Wang
be121f9e80
Save enderchest block entities to storage
...
+ Add EnderChest saving, as Vanilla does
- Remove CreateBlockEntities. Storage should save & load everything so looping over chunk data is not needed
2020-08-28 21:40:40 +01:00
Tiger Wang
da9158937d
WorldStorage: Removed unused callback parameters
2020-08-28 21:36:46 +01:00
Tiger Wang
071aee6c79
Clean up pickup collection to use ForEachEntityInBox
2020-08-28 21:35:38 +01:00
Tiger Wang
167247328a
Chunk: Make StayCount/AlwaysTicked unsigned
2020-08-28 21:34:23 +01:00
Tiger Wang
7023548de0
Simplify MoveEntityToNewChunk
...
- No longer try getting from the chunkmap if GetNeighborChunk fails, since nothing else does this and entities (in future) will not tick close to an unloaded chunk edge
* GetRelNeighborChunk uses FindChunk
2020-08-28 21:32:46 +01:00
Tiger Wang
08bd77e547
Clean up GenerateChunk/TouchChunk
...
- Remove TouchChunk
- Remove unused bool return value in GenerateChunk
- Remove ShouldGenerateIfLoadFailed
2020-08-28 21:26:04 +01:00
Tiger Wang
72ae5ecb5a
ChunkMap: do not wantonly make empty chunks
...
- Removed calls that constructed an empty chunk, found it was invalid, and did nothing with said chunk
Partially addresses #2324
2020-08-28 21:22:44 +01:00
Tiger Wang
b084f1f13f
Remove unneeded MarkDirty, SendToClients parameters of SetMeta
...
Partially reverts #3129 , whose addition of these parameters was superseded by #3149 that fixed generated leaves' metas.
References:
https://github.com/cuberite/cuberite/pull/4417#discussion_r334950513
e0bcd754009f16480437b2c1fa5e7fbedab31496
2020-08-28 21:08:06 +01:00
Tiger Wang
ecd8f0c0de
1.13+: Send length-prefixed server Brand string
...
Ref: 5176c22656
2020-08-28 21:08:06 +01:00
Tiger Wang
a473e8ba52
ChunkDataSerializer: don't repeatedly mallocate
...
+ Store an instance of the class, the way it seems it is meant to be used.
2020-08-21 18:22:04 +01:00
Tiger Wang
440523b022
CompressPacket: reserve CompressedSize, not the uncompressed size
...
+ Assign the length data to a_CompressedData to overwrite it, mirroring the behaviour of cByteBuffer::ReadAll
2020-08-21 18:17:45 +01:00
Tiger Wang
8620f6a13e
StatSerializer: use std::move
2020-08-21 18:15:34 +01:00
Tiger Wang
e23dcffaff
Make StatSerializer a namespace
2020-08-21 00:53:10 +01:00
Tiger Wang
8cca3db61b
Consolidate various Chunk serialisers under one roof
...
* Merge most into WriteSectionDataSeamless
2020-08-21 00:53:10 +01:00
Tiger Wang
2d28d681c7
Remove unused variables in ChestEntity/BlockEntityWithItems
2020-08-21 00:53:10 +01:00
Tiger Wang
82d251b71b
Made cProtocol::Version, EntityMetadata enums less verbose
2020-08-21 00:53:09 +01:00
Tiger Wang
9a9079d3da
Remove complex templated SendBlockChange
...
If we're sending enough blocks to have virtual calls be an issue, we should resend the chunk instead.
2020-08-21 00:53:09 +01:00
Tiger Wang
d8c8d0124d
Replace PowerData struct with PowerLevel
...
* We no longer need to track the powering block with the removal of SolidBlockHandler. PowerLevel is now just an unsigned char
2020-08-21 00:50:09 +01:00
Tiger Wang
03557e978e
cChunk's deleted copy constructor needs const
2020-08-21 00:50:09 +01:00
Tiger Wang
d1b0d0f5b5
Remove level of indirection in cChunk storage
...
- No more unique_ptr storage
2020-08-21 00:50:09 +01:00
Tiger Wang
3143d6ce67
Remove std::make_unique from redstone handler creation
2020-08-21 00:50:09 +01:00
Tiger Wang
6617d43983
Minor typo fixes
...
* Also DeMorgan'd Emerald ore condition
2020-08-21 00:50:09 +01:00
Tiger Wang
963ec77575
Add statistics upgrade mapping
2020-08-19 20:45:27 +01:00
Tiger Wang
f23402dacd
Add FileStream wrapper
2020-08-19 20:45:27 +01:00
Tiger Wang
dbc81c3548
Add statistics palette for 1.15 & 1.16
2020-08-19 20:45:27 +01:00
Tiger Wang
40eba5244d
Remove the redstone solid block handler
...
- Remove cSolidBlockHandler
* Functionality now integrated into simulator dispatcher
* Fix door double open/close issues, arisen due to the top/bottom halves getting different power
+ Small migration to block states for redstone wire
2020-08-08 18:22:16 +01:00
Tiger Wang
2f79ab2e26
const-ify some Chunk functions
2020-08-08 12:09:40 +01:00
Tiger Wang
d2156aab7c
WakeUpSimulators correct Y computation
...
+ Add Y validity check to SimulatorManager
2020-08-05 08:35:37 +01:00