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
Tiger Wang
c0d1cffe0b
Delete unreferenced variable
2020-08-05 08:35:37 +01:00
Tiger Wang
25906a3b87
Adjust incorrect palette inclusions
2020-08-05 08:35:37 +01:00
Tiger Wang
5ed4222dee
Delete redundant std::move in World loader
2020-08-05 08:35:36 +01:00
Tiger Wang
501702065b
Fixup test block handler stubs
2020-08-04 18:39:47 +01:00
Tiger Wang
5bb6512435
Simply Y-check in door handler
2020-08-04 18:26:25 +01:00
Tiger Wang
766a950d20
Continue with placement when using iron doors
2020-08-04 18:18:37 +01:00
Tiger Wang
71ba18d6c6
Door drops respect player gamemode
...
* Rely on caller to handle converting to pickups, all OnBroken needs to do is to maintain the unity of the door
* Fixes #4797
* Fixes #4796
2020-08-04 18:15:18 +01:00
Tiger Wang
c3d6afe47e
Corrected wakeup sequences
...
* Pistons/Ice no longer need to FastSetBlock first (#4600 ), and the former don't drop items when broken in creative
- Begin migration away from stationary fluids
* Tick the chunk after applying a client's changed
* Broadcast pending blocks at the end of a tick
2020-08-04 18:15:18 +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
adb86a75da
Do not GetBlock individually in simulators
...
* Have the simulator manager get the block and pass it on
+ Add new overload for WakeUp, called when the manager wakes face positions
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
225c2fa9f6
Always use relative coordinates in AddBlock
...
+ Pass block, use relatives
* Fixes everything immediately converting abs back to rel and getting block, when these data were already available
2020-08-02 15:52:06 +01:00
Tiger Wang
99856df686
Add WakeUp/AddBlock distinction
...
* WakeUp is for singular changes (block breaking for example). The simulator should check blocks around the position and discover other affected blocks as it sees fit
* AddBlock is for when you know a whole area is to be updated; chunk loading, or area wakeups for example
+ Prepares for correct handling of destroyed blocks after removal of SolidBlockHandler in the redstone simulator
2020-08-02 15:52:06 +01:00
Tiger Wang
6d7b83a69d
Do not impose redstone wakup penalty for all blocks
2020-08-02 15:52:06 +01:00
Tiger Wang
fd5191854d
Delegate simulator wakeup to cChunk
2020-08-02 15:52:06 +01:00
Tiger Wang
6c47f46c31
Ensure updating relatives calls the correct base case
...
* Fixed recursive base unintentionally scheduling the origin position for an update because it called the wrong function
2020-08-02 15:52:06 +01:00
Tiger Wang
fb3d3dac1e
Correct Serialise393/477 version annotations
2020-07-28 00:08:57 +01:00
Tiger Wang
99f8c44342
1.14 connection support
2020-07-26 18:55:16 +01:00
Tiger Wang
1673c84978
Remove redundant ErasePowerData call
...
* Also fix a return that should've been continue
2020-07-26 16:08:20 +01:00
Tiger Wang
860eedd3d7
Toggleables: update simulators when changed
2020-07-26 16:07:37 +01:00
Tiger Wang
7d93742498
Clang Tidy fix
2020-07-26 16:06:57 +01:00
Tiger Wang
2e18e4f51c
Comparators: use <= in comparison mode
2020-07-26 14:16:46 +01:00
Tiger Wang
4e5ab02a58
Use SimulateChunk in redstone simulator
...
+ Improved performance, reduces bottleneck in chunkmap lookup
* Stop allocating and throwing away lots of small vectors in Update/GetValidSourcePositions return values
- Remove unused GetPowerLevel virtual
2020-07-26 14:16:46 +01:00
Tiger Wang
de06ae7add
Fix incorrect big flower translation
...
* Upgrade palette had incorrect values for upper half of large flowers
2020-07-26 01:23:01 +01:00
Tiger Wang
b30d70f09d
Call BlockEntityWithItems from ChestEntity slot changed handler
...
* Small degree of unification for what to do with the current entity
* Make sure to do necessary actions for both sides of a double chest
2020-07-26 00:02:07 +01:00
Tiger Wang
6d650d5f3c
Reduce unnecessary wakeups
...
- cSimulator no longer wakes up positions already woken by cChunk::SetBlock
2020-07-25 20:59:12 +01:00
Tiger Wang
e4c09ca87d
Use relative vectors in cChunk::DoWith
2020-07-25 20:31:48 +01:00
Tiger Wang
b6e4a986b6
Correct placement for tripwire hooks
...
https://github.com/cuberite/cuberite/commit/487f9a2aa9b5497495cef1ac3b9c7a603e69f862#r40900869
2020-07-25 20:29:55 +01:00
Tiger Wang
bc01cd5e75
Redstone: check validity of GetBlock
2020-07-24 09:11:40 +01:00
Tiger Wang
1432afefdb
Use string redirection in Windows service
...
+ Localisation support
2020-07-23 21:17:58 +01:00