Tiger Wang
868cd94ee9
Prepare ChunkData for BlockState storage ( #5105 )
...
* Rename ChunkData Creatable test
* Add missing Y-check in RedstoneWireHandler
* Remove ChunkDef.h dependency in Scoreboard
* Prepare ChunkData for BlockState storage
+ Split chunk block, meta, block & sky light storage
+ Load the height map from disk
- Reduce duplicated code in ChunkData
- Remove saving MCSBiomes, there aren't any
- Remove the allocation pool, ref #4315 , #3864
* fixed build
* fixed test
* fixed the debug compile
Co-authored-by: 12xx12 <44411062+12xx12@users.noreply.github.com>
2021-03-05 14:03:55 +01:00
Tiger Wang
813176fbd1
cChunk: don't inherit from cChunkDef ( #5106 )
2021-01-18 16:09:10 +00:00
Tiger Wang
9328afe65c
Convert most calls to blocking GetHeight/GetBiomeAt to direct chunk accesses
...
* Hopefully fixes #5094
2021-01-11 16:39:56 +00:00
Tiger Wang
f3ec768dfb
unique_ptr<cChunkMap> to plain member
2020-12-21 23:21:01 +00:00
Tiger Wang
491238f799
Chunk: use FAST_FLOOR_DIV
2020-12-21 13:52:15 +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
peterbell10
a9031b6bae
Fix cmake not adding Werror on clang, and _lots_ of warnings ( #4963 )
...
* Fix cmake not adding Werror on clang, and _lots_ of warnings
* WIP: Build fixes
* Cannot make intermediate blockhandler instance
* Tiger's changes
* Fix BitIndex check
* Handle invalid NextState values in cMultiVersionProtocol
Co-authored-by: Tiger Wang <ziwei.tiger@outlook.com>
2020-10-05 10:27:14 +00: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
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
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
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
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
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
2f79ab2e26
const-ify some Chunk functions
2020-08-08 12:09:40 +01:00
Tiger Wang
6bdd130aab
OnBroken/OnPlaced are for entity actions
...
* Call OnPlaced/OnBroken in PlaceBlock/DigBlock
- Remove unused Placing/Breaking handlers
* Have the blockhandler's Check handle neighbour updating, instead of QueueTickBlockNeighbors
2020-08-04 18:15:18 +01:00
Tiger Wang
b205d233bd
Use std::queue for the block tick queue
2020-08-02 15:52:06 +01:00
Tiger Wang
71ffa76847
Remove unused block tick related cChunk functions
2020-08-02 15:52:06 +01:00
Tiger Wang
e4c09ca87d
Use relative vectors in cChunk::DoWith
2020-07-25 20:31:48 +01:00
Mattes D
487f9a2aa9
Vector3 in Handlers ( #4680 )
...
Refactored all cBlockHandler and cItemHandler descendants to use Vector3.
2020-04-21 22:19:22 +02:00
Mattes D
26ac146f41
More Vector3 in cBlockHandler ( #4644 )
...
* cBlockHandler.OnUpdate uses Vector3 params.
Also slightly changed how block ticking works.
2020-04-17 10:36:37 +01:00
peterbell10
19ad96561c
Filter blocks to add to redstone sim's wake queue ( #4621 )
2020-04-05 19:20:52 +00:00
peterbell10
aac592f985
Manage block entity lifetime with unique_ptr ( #4080 )
2020-04-03 23:23:38 +02:00
Bond-009
ea386eaab1
Lock hopper when powered by redstone ( #4347 )
...
* Lock hopper when powered by redstone
* Add to manual bindings
* Add hopper API documentation
Co-authored-by: Mat <mail@mathias.is>
2020-03-27 12:03:28 +00:00
Max Luchterhand
384ba18812
Fixed unloading of chunks that contain player entities ( #4508 )
...
Co-authored-by: peterbell10 <peterbell10@live.co.uk>
Co-authored-by: mluchterhand <mluchterhand@max.de>
2020-03-18 17:17:59 +00:00
Mattes D
61904af626
Moved growing from cWorld / cChunk to cBlockHandler descendants.
2019-10-28 10:45:43 +01:00
Mattes D
221cc4ec5c
Refactored block-to-pickup conversion. ( #4417 )
2019-10-16 10:06:34 +02:00
Mattes D
365cbc6e1c
Refactored more of Entities and BlockEntities to use Vector3. ( #4403 )
2019-09-29 14:59:24 +02:00
Bond-009
e0ca4d8399
Fix building with clang 8.0 ( #4346 )
2019-08-11 10:39:43 +01:00
peterbell10
c94d7184eb
Broadcast refactor ( #4264 )
...
* 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
2018-07-24 22:30:49 +01:00
peterbell10
31a11a6df4
Optimise chunk set ( #4260 )
...
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
2018-07-23 19:12:51 +01:00
peterbell10
2df14a0496
cChunk and cChunkData: Use vectors for block get and set functions ( #4172 )
...
* cChunkData: Change interface to use Vector3i
* cChunk: Add Vector3i overloads for bounded block get and set functions.
2018-02-04 22:15:31 +00:00
Bond-009
10c5c1227e
BroadcastBlockBreakAnimation and BroadcastBlockEntity use vectors ( #4038 )
2017-09-25 18:17:45 +02:00
Lane Kolbly
30c8470a52
Changed BroadcastSoundEffect, SendSoundEffect, and CastThunderbolt parameters to vectors ( #3959 )
...
* 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
2017-09-19 15:12:54 +01:00
peterbell10
e225b7f826
Replace ItemCallbacks with lambdas ( #3993 )
2017-09-11 23:20:49 +02:00
LogicParrot
49c443896d
Revert "Replace ItemCallbacks with lambdas ( #3948 )"
...
This reverts commit 496c337cdf
.
2017-09-02 08:50:23 +01:00
peterbell10
496c337cdf
Replace ItemCallbacks with lambdas ( #3948 )
2017-09-01 13:04:50 +02:00
Pablo Beltrán
b18f6637b6
Fully implemented leashes ( #3798 )
2017-08-21 10:46:41 +02:00
Tiger Wang
4ef47aed62
Changed entity ownership model to use smart pointers
2017-08-07 19:24:16 +01:00
Lukas Pioch
07f25253a2
Removed unneeded includes ( #3902 )
2017-08-06 20:57:44 +01:00
peterbell10
759618b035
Remove double includes part 2 ( #3890 )
2017-08-03 15:34:19 +02:00
Lukas Pioch
0397535fa7
Removed unused forward declarations ( #3888 )
2017-08-03 15:10:29 +02:00
Lukas Pioch
885d828712
Added bed entity ( #3823 )
...
* 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
2017-07-07 09:31:45 +02:00
peterbell10
360d8eade0
FastRandom rewrite ( #3754 )
2017-06-13 21:35:30 +02:00
peterbell10
8a890cf945
Store cChunk::m_BlockEntities in a map ( #3717 )
...
* Store block entities in a map from block index
* Cleanup ForEachBlockEntity
* Cleanup DoWithBlockEntityAt
2017-05-22 22:27:55 +02:00
Mattes D
0e3b3be766
Initial support for the 1.11 protocol.
2016-12-16 00:07:22 +01:00
bibo38
cb640ffea4
Spectators added ( #2852 )
2016-10-12 14:38:45 +02:00
LogicParrot
1e8cae6415
cChunk::SetAlwaysTicked implies cChunk::stay ( #3361 )
2016-10-09 15:46:09 +03:00
LogicParrot
7e9e7f7911
Configurable dirty unused chunk cap to avoid RAM overuse ( #3359 )
...
Configurable dirty unused chunk cap to avoid RAM overuse
2016-09-03 18:38:29 +03:00