777 Commits

Author SHA1 Message Date
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
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
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
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
ae50b952f1
Accept 1.19.63 (same protocol, different protocol version) 2023-02-24 22:15:58 +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
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
Dylan K. Taylor
9cdb641936
Added encode packet timings
these changes required some new APIs in BedrockProtocol.
2023-02-19 16:47:20 +00:00
Dylan K. Taylor
71aad310c6
stfu 2023-02-17 16:39:46 +00:00
Dylan K. Taylor
1e3b025916
1.19.62 2023-02-17 16:36:32 +00:00
Dylan K. Taylor
c5dcd268ad
CS 2023-02-15 15:04:41 +00:00
Dylan K. Taylor
2fd6e769e6
NetworkSession: Improved packet budgeting
this fixes players getting kicked during server lag spikes.

closes #5532
2023-02-15 14:59:05 +00:00
Dylan K. Taylor
475888b031
InGamePacketHandler: do not process repeated skin change requests for the same full skin ID
this fixes a feedback loop with persona skins in 1.19.60.
2023-02-08 20:16:41 +00:00
Dylan K. Taylor
40b90bb722
InGamePacketHandler: log a debug when processing skin change requests 2023-02-08 19:47:12 +00:00
Dylan K. Taylor
5a4550a4fc
CS 2023-02-08 18:55:49 +00:00
Dylan K. Taylor
7bbc04e6de
Silence PlayerSkinPacket debug messages during spawn response stage
the client sends its skin here in 1.19.60 for some reason, which makes no sense - I can only assume it's a bug
2023-02-08 18:55:38 +00:00
Dylan K. Taylor
3ba662f64f
1.19.60 2023-02-08 18:46:37 +00:00
Dylan K. Taylor
d37142af4b
Merge branch 'stable' into next-minor 2023-01-18 15:30:42 +00:00
Dylan K. Taylor
7c068101b7
CSÂ 2023-01-18 15:17:37 +00:00
Dylan K. Taylor
a8556dff02
RakLibInterface: include Snooze events in Connection Handler timings 2023-01-18 15:02:33 +00:00
Dylan K. Taylor
ad6a423d12
Merge branch 'stable' into next-minor 2023-01-16 18:30:13 +00:00
Dylan K. Taylor
7e16f9be8f
InGamePacketHandler: handle block actions before use item transactions
the START_BREAK and transaction to break the block may arrive in the same packet, causing events to be fired in the wrong order.

fixes #5490
2023-01-16 17:50:11 +00:00
Dylan K. Taylor
ba18a81e88
NetworkSession: fixed rate limit getting exhausted after 2.5 seconds during PvP 2023-01-13 15:28:03 +00:00
Dylan K. Taylor
d74719704e
Merge branch 'stable' into next-minor 2023-01-12 19:02:07 +00:00
Dylan K. Taylor
992cb06da6
NetworkSession: fixed rate limit not being increased correctly on Windows
due to the 15ms scheduler interval, the server will often sleep 45ms instead of 50ms, which causes the budget not to get updated.
2023-01-09 00:01:56 +00:00
Dylan K. Taylor
bb3f87f862
NetworkSession: allow 2 batches per tick
apparently InventoryTransactionPacket may arrive outside of the normal update cycle, since it's prioritized to reduce latency.
2023-01-09 00:00:39 +00:00
Dylan K. Taylor
d2eddf9d33
relocate comments 2023-01-08 20:56:51 +00:00
Dylan K. Taylor
0233e74f4f
NetworkSession: micro optimisation - do not check if a debugger is active unless the packet limit is exceeded 2023-01-08 19:45:14 +00:00
Dylan K. Taylor
dd355c58d8
NetworkSession: fix CS 2023-01-08 19:35:43 +00:00
Dylan K. Taylor
267032cff9
NetworkSession: do not rate limit packets if a debugging session is active 2023-01-08 19:31:39 +00:00
Dylan K. Taylor
4a3d9f8f83
Make client-aware translation handling more coherent
I have no clear idea why this was still using translateString(), since it's entirely unnecessary when we aren't selectively translating.
2023-01-08 16:45:57 +00:00
Dylan K. Taylor
1c96e7936c
Remove dead translation code
we don't translate raw string parameters anywhere else these days, so there's no reason to do so here either. The parameters array is already reduced to string[] by this point anyway.
2023-01-08 16:20:05 +00:00
Dylan K. Taylor
6cecd690b2
CS 2023-01-07 21:33:53 +00:00
Dylan K. Taylor
91e38d1f97
NetworkSession: compensate for server lag in batch budgeting 2023-01-07 21:33:34 +00:00
Dylan K. Taylor
f9bcc8e862
NetworkSession: added a rate-limit for incoming batches 2023-01-07 16:19:02 +00:00
Dylan K. Taylor
faaec12aaf
Update BedrockProtocol 2023-01-06 22:16:29 +00:00
Dylan K. Taylor
1123a5aa23
InventoryManager: Track predictions using ItemStack directly, instead of internal Item
this removes the need for deserializing network itemstacks to core items, thereby eliminating a whole bunch of potential security issues.
2023-01-06 20:45:08 +00:00