Commit Graph

13235 Commits

Author SHA1 Message Date
Dylan K. Taylor
0bb9fb09cc CS again 2023-01-16 19:39:24 +00:00
Dylan K. Taylor
ab21fcdd67 Server: fixed load statistics not including Snooze processing time
this has been a bug ever since Snooze was first introduced. The load statistic, similarly to timings, did not account for time spent processing notifications between ticks. The problem is that this is often where a significant amoutn of the load actually comes from, because Snooze is most often activated due to incoming packets.

This change fixes the problem by including the time spent processing notifications since the previous tick in the current tick's usage metric.
2023-01-16 19:26:32 +00:00
Dylan K. Taylor
0a2a6e2b3a 4.12.10 is next 2023-01-16 18:25:20 +00:00
Dylan K. Taylor
0eb751c1c9 Release 4.12.9 2023-01-16 18:25:17 +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
768650cee0 CS 2023-01-16 17:46:50 +00:00
Dylan K. Taylor
c2c529e2da Include Snooze interrupts in timings results
fixes #5511

This requires any Timings instances to be updated to
pmmp/timings@5410f62436, otherwise the TPS
reported will be incorrect.
2023-01-16 17:40:39 +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
39218017ca Fixed walls and thin blocks not connecting to each other
closes #5498
2023-01-12 22:16:41 +00:00
Dylan K. Taylor
f4a1d69075 Bell: fixed support requirements
this somehow got overlooked in the support types refactor.
2023-01-12 21:45:25 +00:00
Dylan K. Taylor
cbeae906e1 Torch: remove unused variable 2023-01-12 21:34:44 +00:00
Dylan K. Taylor
b25e8e26f0 BaseBanner: fixed incorrect support requirements 2023-01-12 21:31:50 +00:00
Dylan K. Taylor
a79be994de World: fixed block placement when clicking on replaceable blocks
in vanilla, it appears to behave as if the player always clicked on the up face if a block was replaced.

In PM, we were still using the original face, which caused bugs when, for example, placing a button next to a wall by clicking on the side of tallgrass. The button would replace the tallgrass, but stick to the wall, instead of placing itself on the ground like vanilla expects.

This may appear unusual to anyone who also happens to implement canBePlacedAt(), since the facing behaviour will be different. However, this behaviour appears to match vanilla, and even slabs (which I feared might break because of this change) work perfectly.

In the future, it may be desirable to pass some other value here, such as null, to indicate that the clicked block is being replaced. However, that's a BC break and therefore outside of the scope of a stable bug fix.
2023-01-12 21:11:48 +00:00
Dylan K. Taylor
e26c8b9e9f block: eliminate suspicious usages of $blockClicked in place() 2023-01-12 20:35:26 +00:00
Dylan K. Taylor
4e9c3e101d Bell: fixed blocks not being able to be placed when not ringing the bell 2023-01-12 19:42:33 +00:00
Dylan K. Taylor
d295e1be54 PressurePlate: destroy self when no support is present 2023-01-12 19:36:47 +00:00
Dylan K. Taylor
2f3fcef97c Fixed blocks incorrectly using blockClicked for support checks
this caused some interesting bugs, such as being able to place floating pressure plates by clicking on the side of a solid block halfway up a wall.
2023-01-12 19:36:23 +00:00
Dylan K. Taylor
f7930a3a0b 4.12.9 is next 2023-01-09 00:04:40 +00:00
Dylan K. Taylor
bb7df60a4d Release 4.12.8 2023-01-09 00:04:40 +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
fc77b14760 4.12.8 is next 2023-01-08 20:23:18 +00:00
Dylan K. Taylor
52b6f1a492 Release 4.12.7 2023-01-08 20:23:15 +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
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
653178c1fd 4.12.7 is next 2023-01-07 16:22:01 +00:00
Dylan K. Taylor
eb06535ed1 Release 4.12.6 2023-01-07 16:22:01 +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
f43ca405d4 4.12.6 is next 2023-01-06 00:44:58 +00:00
Dylan K. Taylor
d146175d27 Release 4.12.5 2023-01-06 00:44:58 +00:00
Dylan K. Taylor
3baa5ab712 InGamePacketHandler: removed obsolete workaround 2023-01-06 00:41:57 +00:00
IvanCraft623
433f5451d7 Improve World::notifyNeighbourBlockUpdate() doc (#5491) 2023-01-04 20:11:55 +00:00
Dylan K. Taylor
33d1755eae Player: fixed not receiving slot updates for small crafting grid
I'm not really sure why this tracking logic is here and not in InventoryManager, but for now it is what it is.
2023-01-04 01:28:25 +00:00
Dylan K. Taylor
fc63c54116 CraftingManager: more detailed type information for shapelessRecipes and shapedRecipes 2023-01-04 00:32:26 +00:00
Dylan K. Taylor
db07976aab TypeConverter: do not send useless meta to the client 2023-01-03 23:50:31 +00:00
Dylan K. Taylor
0e4b79ea77 InGamePacketHandler: fixed client-side predictions not getting rolled back for block placement 2023-01-03 19:43:21 +00:00
Dylan K. Taylor
588c9b114b 4.12.5 is next 2023-01-03 19:30:02 +00:00
Dylan K. Taylor
b095f606c1 Release 4.12.4 2023-01-03 19:29:47 +00:00
Dylan K. Taylor
b312e93176 Limit list max size in transactions
this duct tape is to limit the impact of a security vulnerability being actively exploited.
2023-01-02 22:59:48 +00:00
Dylan K. Taylor
61933624d2 NetworkSession: Lift batch limit to 1300 to allow shift-click crafting to work correctly
the theoretical limit for transactions in this case is 64x9 (inputs) + 64x9 (output on crafting grid) + 64 (outputs to main slot) + 64 CraftingEventPackets = 1280.
This is an extreme case which assumes that a recipe could generate up to 64x10 (640) output items per iteration, filling every slot of the output grid, which should never occur in any reasonable circumstances.
2022-12-30 22:11:35 +00:00
Dylan K. Taylor
90beaeaeb4 4.12.4 is next 2022-12-28 21:01:50 +00:00
Dylan K. Taylor
466f7e98ed Release 4.12.3 2022-12-28 21:01:47 +00:00
Dylan K. Taylor
59be901efe Fixed unauthenticated sessions taking up player slots 2022-12-28 20:42:33 +00:00
Dylan K. Taylor
5d2b0acfc8 GamemodeCommand: report failure if the target's game mode is already the desired game mode
this has irritated me for years.
2022-12-22 18:38:10 +00:00
Dylan K. Taylor
1e5597f0d5 World: account for null chunk edge case in tickChunk()
the target chunk may no longer be loaded if it was unloaded during a previous chunk's tick (e.g. during BlockGrowEvent).
Since the parent function iterates over a pre-selected array of chunks, the chunk will still be present in the list even if it's no longer loaded by the time it's reached.
2022-12-19 20:20:52 +00:00
Dylan K. Taylor
97ef209c5f HandlerList: added missing class-string type for constructor 2022-12-19 16:26:36 +00:00
Dylan K. Taylor
529700bb8b PotionTypeIdMap: fixed uninitialized fields
I have no idea why this didn't ever cause a problem before... probably an edge-case in the typed properties implementation
2022-12-19 15:33:15 +00:00