Dylan K. Taylor
a5985dcf7d
Merge branch 'stable' into minor-next
2023-03-15 22:53:44 +00:00
Armen Deroian
183d1f4038
Implement DataPacketPreReceiveEvent ( #5559 )
...
closes #5554
This is called just before the packet is decoded, allowing the event to be used to drop packets from clients without wasting CPU time decoding them. This can be particularly useful for mitigating denial-of-service attacks.
2023-03-15 22:47:19 +00:00
Dylan K. Taylor
08ee825d91
StandardPacketBroadcaster: Include varint length prefix in length calculation
...
varints encode 7 bits per byte, so a log with base 128 will tell us how many bytes are required to encode the length of the packet.
2023-03-15 22:41:19 +00:00
Dylan K. Taylor
337a254768
Use NetworkBroadcastUtils for broadcasting packets
...
this eradicates all but 4 usages of Server in Entity, which is extremely cool.
2023-03-15 22:28:51 +00:00
Dylan K. Taylor
a31e3331fd
Move Server::broadcastPackets() to NetworkBroadcastUtils::broadcastPackets()
...
this has no business being in Server, and it also doesn't need to be an instance method, since it never uses $this.
2023-03-15 22:25:23 +00:00
Dylan K. Taylor
cc8660629b
First look at shared EntityEventBroadcaster,
...
this improves performance in PvP servers and other areas where lots of players or entities exist in one space.
fixes #5622
2023-03-15 18:22:56 +00:00
Dylan K. Taylor
e7e19abe85
IPv4 and IPv6 RakLibInterface instances now both use the same broadcaster and context
...
fixes #5625
2023-03-15 17:17:56 +00:00
Dylan K. Taylor
5f9e0081fd
Fixed mushroom block silk-touch drops and block picking behaviour
...
fixes #5284
2023-03-15 16:36:35 +00:00
Dylan K. Taylor
34ced382db
Eliminate final remaining usage of TypeConverter::netItemStackToCore()
...
instead, we can verify that the held items match by comparing the received ItemStack with the one cached in InventoryManager, which is more cost effective and closes off internal item deserializers to external attacks.
2023-03-14 22:56:11 +00:00
Dylan K. Taylor
a573a279fa
Merge branch 'minor-next' into item-stack-request
2023-03-14 22:25:49 +00:00
Dylan K. Taylor
14f141fab2
NetworkSession: Stop counting DataPacketReceiveEvent in handler timings
...
we want it to be included in receive timings, but not handler timings. Handler timings should reflect the time spent in the actual session PacketHandler, not in the event.
2023-03-14 19:00:15 +00:00
Dylan K. Taylor
daff955bc4
Merge remote-tracking branch 'origin/stable' into minor-next
2023-03-14 18:42:14 +00:00
Dylan K. Taylor
0022d82779
Merge commit 'd376399b7f332384532a82eaf69b9b02dad5bd0c' into minor-next
2023-03-14 18:39:03 +00:00
Dylan K. Taylor
590f6dad08
4.17.1 is next
2023-03-14 18:14:40 +00:00
Dylan K. Taylor
9564c81582
Release 4.17.0
2023-03-14 18:14:40 +00:00
Dylan K. Taylor
3de7a8c27f
Updated for 1.19.70
2023-03-14 18:08:10 +00:00
Dylan K. Taylor
8e280ebb8b
RuntimeBlockMapping: avoid unnecessary PacketSerializer usage
2023-03-11 22:16:24 +00:00
Dylan K. Taylor
fa7c38276c
Fixing gigantic clusterfuck with protocol contexts and broadcasting
...
fixes #5623
2023-03-11 21:54:14 +00:00
Dylan K. Taylor
b13e97de3d
Timings: fixed receivePacket timer showing 2x the actual number of received packets
2023-03-11 19:13:10 +00:00
Dylan K. Taylor
3aec0fa3df
4.16.1 is next
2023-03-07 16:19:51 +00:00
Dylan K. Taylor
fa131dab12
Release 4.16.0
2023-03-07 16:19:50 +00:00
Dylan K. Taylor
e227e6d8bf
Merge branch 'stable' into next-minor
2023-03-04 16:55:56 +00:00
Dylan K. Taylor
035d4b7263
MemoryManager: stringify floats, fixes #5598
2023-03-04 16:47:58 +00:00
Dylan K. Taylor
3db1492c18
Fix CS again
2023-03-04 16:43:29 +00:00
Dylan K. Taylor
a523189149
Added separate timings for broadcast and session buffer compression
2023-03-04 16:41:41 +00:00
Dylan K. Taylor
f8893efb94
Don't bother with global batch compression if there is only 1 recipient
...
this allows the session to achieve better ratios, and also reduces worker pool spam.
2023-03-04 16:34:00 +00:00
Dylan K. Taylor
eb2f0ed3d0
4.16.0-BETA3 is next
2023-03-04 16:19:34 +00:00
Dylan K. Taylor
14e7d3e143
Release 4.16.0-BETA2
2023-03-04 16:19:34 +00:00
Dylan K. Taylor
6d636fc2c7
4.16.0-BETA2 is next
2023-03-04 16:18:04 +00:00
Dylan K. Taylor
a39f61a33d
Release 4.16.0-BETA1
2023-03-04 16:18:01 +00:00
Dylan K. Taylor
aaec21f544
Compressor: Use minCompressionThreshold exclusively
...
closes #5589
2023-03-04 15:07:50 +00:00
Dylan K. Taylor
0fcd2e7894
Merge branch 'stable' into next-minor
2023-02-28 19:23:25 +00:00
Dylan K. Taylor
e7209679fb
...
2023-02-24 22:23:00 +00:00
Dylan K. Taylor
d92173cded
4.15.3 is next
2023-02-24 22:18:34 +00:00
Dylan K. Taylor
308cdb6863
Release 4.15.2
2023-02-24 22:18:34 +00:00
Dylan K. Taylor
ae50b952f1
Accept 1.19.63 (same protocol, different protocol version)
2023-02-24 22:15:58 +00:00
Dylan K. Taylor
f704bfb63a
Use BedrockData 2.0.0
2023-02-23 21:52:17 +00:00
Dylan K. Taylor
9acb4d64db
Added generated constants for available BedrockData files
...
this makes it easier to detect unused files, detect removed files, and also avoid typos in usages.
2023-02-23 21:45:12 +00:00
Dylan K. Taylor
8234360c8d
Avoid creating batch buffers just to determine whether a batch should be globally compressed
...
Instead, sum together the lengths of encoded packet buffers and use that to decide whether to build the buffer or not.
2023-02-22 22:43:10 +00:00
Dylan K. Taylor
6a64486f55
StandardPacketBroadcaster: Improve performance when broadcasting small packets
...
In refactors during PM4, I stripped out packet buffer caching, as it was problematic when events alter packets in undetectable ways.
However, I never cleaned this part of the code up properly after enabling DataPacketSendEvent to include multiple packets and multiple targets, so we were still individually encoding the packet(s) for every single session if the sum total of the sizes was below 256 bytes.
This change encodes packets once in the StandardPacketBroadcaster and retains their buffers to post to the session's send buffer directly if the resulting batch is below compression threshold.
This code is still not optimal (see ##5589), but fixing this brings broadcasting performance back to PM3 levels, without any of PM3's problems.
2023-02-22 21:52:12 +00:00
Dylan K. Taylor
75bb4f8da6
Merge branch 'stable' into next-minor
2023-02-21 18:32:58 +00:00
Dylan K. Taylor
efdd7a186d
World: fixed population timer sometimes not being stopped
2023-02-21 18:31:33 +00:00
Dylan K. Taylor
c4ecb3d128
Merge branch 'stable' into next-minor
2023-02-21 15:37:06 +00:00
Dylan K. Taylor
b574d49d36
4.15.2 is next
2023-02-21 15:23:25 +00:00
Dylan K. Taylor
47e9ecd257
Release 4.15.1
2023-02-21 15:23:25 +00:00
Armen Deroian
59a04c971f
Getter and setter for gravity ( #5584 )
...
closes #5525
2023-02-21 15:01:22 +00:00
Dylan K. Taylor
871bd169a8
Timings: remove unnecessary code
2023-02-19 17:58:12 +00:00
Dylan K. Taylor
4dbcd714bd
NetworkSession: fixed some segments of recv/send logic not being covered by their respective network timingsÂ
2023-02-19 17:21:10 +00:00
Dylan K. Taylor
d5e92b4ae6
...
2023-02-19 16:53:04 +00:00
Dylan K. Taylor
2a3288c4f9
Avoid useless throwaway PacketBatch objects
2023-02-19 16:50:03 +00:00