29 Commits

Author SHA1 Message Date
Dylan K. Taylor
209ae51a67 Merge branch 'stable' 2019-04-15 16:11:49 +01:00
Dylan K. Taylor
f332550e52 Player: move toggle* rollback handling to network session
this allows network sessions to react to it how they want, or (in the case of things like Specter) perhaps ignore it.
2019-04-02 19:49:53 +01:00
Dylan K. Taylor
e5756dbf0b Move a whole bunch of packet crap to NetworkSession 2019-04-02 18:31:16 +01:00
Dylan K. Taylor
42a263a9df GameMode is now an enum 2019-03-31 16:19:36 +01:00
Dylan K. Taylor
aff2e0c86c Merge branch '3.7' 2019-03-30 19:19:02 +00:00
Dylan K. Taylor
1045088668 Move more packet handling logic out of Player
there is now only (1) packet handler remaining in Player. The reason I haven't targeted this is because it needs improvements of its own.
2019-03-23 12:12:30 +00:00
Dylan K. Taylor
1bc37a1a8a Player: Clean up movement processing, now API-ified 2019-03-23 11:33:32 +00:00
Dylan K. Taylor
8c536c248d Updating for latest PocketMine-NBT changes 2019-03-21 15:58:22 +00:00
Dylan T
8f1bc5d497
Flatten wall_banner and wall_sign into single blocks (#2798)
This comes with some problems, but the problems are more bearable than the previous code.
2019-03-08 16:37:26 +00:00
Dylan K. Taylor
5cca4b5e31 Revamp Sign API, flatten API into blocks 2019-02-28 17:10:37 +00:00
Dylan K. Taylor
6124f93cb4 Player: Clean up item frame drop-item hack
This is now re-routed through a newly-created attack-block handler.
Closes #339
2019-02-25 18:40:04 +00:00
Dylan K. Taylor
66a1b35767 Merge branch '3.6' 2019-02-23 11:05:23 +00:00
Dylan K. Taylor
dbae667dec Silence more InteractPacket noise 2019-02-04 19:51:38 +00:00
Dylan K. Taylor
23269da1a6 Fixed the disaster of packet receive error handling 2019-01-16 19:53:48 +00:00
Dylan K. Taylor
adc1069ed2 Merge branch '3.5' 2019-01-04 23:28:44 +00:00
Dylan K. Taylor
4d15eb3327 Cleaned up the InventoryTransactionPacket decoding clusterfuck
@shoghicp, y u do dis... I almost created a sub-packet architecture to deal with this shit :(

This mess really ought to be split into multiple packets. Perhaps the PacketPool can be extended to do that in the future.
2019-01-03 17:24:30 +00:00
Dylan K. Taylor
3b183447b0 Merge branch 'release/3.5' 2018-12-31 21:52:48 +00:00
Dylan K. Taylor
ffa733fe0c Merge branch 'release/3.5' 2018-12-12 19:51:41 +00:00
Dylan K. Taylor
9ad30e239a Merge branch 'release/3.2' 2018-08-19 10:37:20 +01:00
Dylan K. Taylor
cef1fe9524 Merge branch 'release/3.2' 2018-08-14 16:11:42 +01:00
Dylan K. Taylor
a5383b4a82 Use SetLocalPlayerAsInitializedPacket for spawning, fixed a bunch of bugs
this should fix forms not working during PlayerJoinEvent, and also removes the spurious PlayerItemHeldEvent firing on spawn bug.

The player MUST now send this packet. Bots take note.
2018-08-05 10:45:41 +01:00
Dylan K. Taylor
25660843c5 Player: Obliterate InventoryTransactionPacket handler, add some new methods 2018-08-04 20:01:32 +01:00
Dylan K. Taylor
2bf6764112
Implemented network encryption (#2343)
For those who fuss about performance, you can disable the `network.enable-encryption` option to use sessions without encryption.
2018-07-31 15:54:18 +01:00
Dylan K. Taylor
30c044f028 Unwrap more code from packet handlers 2018-07-20 18:48:46 +01:00
Dylan K. Taylor
015ee90571 Split PlayerActionPacket handling into two classes, death is now a session state 2018-07-20 18:11:29 +01:00
Dylan K. Taylor
f626b9e8a0 Initial mass migration to session handlers
This introduces several new session handlers, splitting up session handling into several new states:

- Login: Only allows handling the LoginPacket. This is the only time LoginPacket can be sent, and it'll be discarded when sent at any other time.
- Resource packs: Handles only the resource packs sequence (downloading packs and such). This is the only time ResourcePackClientResponse and ResourcePackChunkRequest will be handled.
- Pre-spawn: Only chunk radius requests are accepted during this state.

SimpleNetworkHandler handles all the "rest" of the logic that hasn't yet been separated out into their own dedicated handlers. There's also a NullNetworkHandler which discards all packets while it's active.

This solves a large number of issues with the security of the login sequence. It solves a range of possible DoS attacks and crashes, while also allowing great code simplification and cleanup.
2018-07-20 17:09:04 +01:00
Dylan K. Taylor
57a86d9ed7 Player: remove useless InteractPacket handler
all the things we cared about in here don't exist anymore, so there's no sense in the handler still existing. It can be restored when we want to use the things it still does.
2018-07-20 12:39:48 +01:00
Dylan K. Taylor
25cfcada26 Player: clean up container close handling 2018-07-20 12:36:44 +01:00
Dylan K. Taylor
64ecc373be Split up session base logic and packet handling
this will allow for mutable packet handlers which can be used to cleanly implement multi-stage game sessions.
2018-07-20 12:36:44 +01:00