Dylan K. Taylor
2293bd948d
Added KnownTranslationFactory and use it in as many places as possible
...
this makes translation usage much more statically analysable.
The only places this isn't used are:
- places that prefix translations with colours (those are still a problem)
- places where server/client translations don't match (e.g. gameMode.changed accepts different parameters in vanilla than in PM)
2021-08-10 14:50:40 +01:00
Dylan K. Taylor
01b48a21d9
Simplify NetworkSession ticking
...
we need to tick sessions every tick anyway, because other stuff is happening (e.g. sync attributes/entity metadata, batch buffer flush).
2021-08-02 14:32:00 +01:00
Sensei Tarzan
1bbf739385
the function stringToLegacy gives already null useless to put a default null ( #4338 )
2021-07-31 16:54:31 +01:00
Dylan K. Taylor
2b5667a56b
Move PHP minimum to 8.0
2021-07-26 20:29:39 +01:00
Dylan K. Taylor
09eac0e129
Merge remote-tracking branch 'origin/stable'
2021-07-26 20:14:33 +01:00
Dylan K. Taylor
58498c2b0b
Merge remote-tracking branch 'origin/stable'
2021-07-23 16:40:19 +01:00
Dylan K. Taylor
f89e10e684
Silence openssl_free_key() deprecation warnings on 8.0
...
we don't give a shit and these calls are currently needed for 7.4.
2021-07-23 16:30:22 +01:00
Dylan T
0eb4231b51
Use OpenSSL for ECDH during client login, drop mdanter/ecc ( #4328 )
...
This brings a significant performance improvement to login sequence handling, reducing CPU cost of `PrepareEncryptionTask` by over 90% and `ProcessLoginTask` by over 60%. It also allows us to shed a dependency.
2021-07-22 23:04:00 +01:00
Dylan K. Taylor
41d9bf8a2e
PthreadsChannelWriter: remove unused import
2021-07-22 19:08:21 +01:00
Dylan K. Taylor
832a156fc7
RakLib: split PthreadsChannelWriter into two implementations
...
this gains a very small performance improvement by avoiding unnecessary !== null checks on every packet written in either direction. It's insignificant for sure, but I just found this code in an old stash, so what the heck.
2021-07-22 18:52:58 +01:00
Dylan K. Taylor
c5abae9eaa
Fixed merge error in bbf3f4c476bb203f399b7631a7d69013980bbae8
...
the corresponding code on PM3 was originally removed here: 485f573955 (diff-cf181dff0292664e4aa13c8a1731dc62131489fa404f4ac1357493d320264cceL2263)
2021-07-17 22:59:45 +01:00
Dylan K. Taylor
17d0767db5
ChunkSerializer: implement support for persistent network chunk format
2021-07-17 18:45:04 +01:00
Dylan K. Taylor
e5327a0f3e
ChunkSerializer: Extract serializeSubChunk() from main serialize() routine
...
this will be used in the future for cache-based chunk sends.
2021-07-17 18:29:14 +01:00
Dylan K. Taylor
a2e2196a90
Start using pocketmine/bedrock-protocol library
2021-07-14 20:32:15 +01:00
Dylan K. Taylor
9f11be25cb
LevelSoundEventPacket: fixed bad null assignment in ::create()
2021-07-14 15:21:33 +01:00
Dylan K. Taylor
c474aa42e5
ClientDataToSkinDataHelper: Remove SingletonTrait
...
SingletonTrait is pointless here for multiple reasons:
1) the class is final
2) this is protocol-specific translation of types, no loss of data or alternative mutation of it needs to occur
Using SingletonTrait is an obstacle to separating the protocol library from the core code, so it has to go.
2021-07-14 14:50:59 +01:00
Dylan K. Taylor
1ad38d499c
Deglobalize ItemTypeDictionary usage, at least for the protocol
...
while this is a bit hacky outside of the protocol namespace, it makes it much easier to use the protocol library for alternative purposes, such as for a client or MITM proxy.
It also removes all but one remaining core dependency of the protocol library, making it very close to being able to be separated from the server core entirely.
2021-07-14 14:26:32 +01:00
Dylan K. Taylor
28ede7273f
Fixed CS
2021-07-13 18:16:25 +01:00
Dylan K. Taylor
f77da60dd3
Merge branch 'pm3-bedrock-1.17.10' into pm4-bedrock-1.17.10
2021-07-13 18:02:29 +01:00
Dylan K. Taylor
b07000f613
Merge branch 'pm3-bedrock-1.17.10' into pm4-bedrock-1.17.10
2021-07-09 20:02:30 +01:00
Dylan K. Taylor
9d1b2c839d
this managed to get lost in the merge
2021-07-09 19:39:15 +01:00
Dylan K. Taylor
94e16f416d
Added KnownTranslationKeys (generated) and start using it
2021-06-29 22:46:04 +01:00
Dylan T
32d7b1e6af
Start using webmozart/pathutil for joining paths ( #4287 )
2021-06-29 19:40:43 +01:00
Dylan K. Taylor
902ea515f7
Separate ID handling from GameMode
...
the aliases of 0,1,2,3 remain for user-interface level compatibility.
2021-06-27 20:32:35 +01:00
Dylan K. Taylor
b8ebf8936e
InventoryManager: fix container open callbacks not working
...
this was reported to me on socials by multiple different people, but nobody reported an issue so I almost forgot. >.<
2021-06-26 21:21:23 +01:00
Dylan K. Taylor
0910054c41
NetworkSession: Fixed InventoryManager nullability disaster
...
fixes #4277
fixes #4275
fixes #3139
2021-06-26 17:44:42 +01:00
Dylan K. Taylor
981b0285d1
Isolate config casting nastiness in one place
...
this doesn't solve the underlying problem, but it does reduce the amount of noise made by PHPStan about it, as well as avoiding code litter.
2021-06-19 19:14:02 +01:00
Dylan K. Taylor
61c59be299
Replace hardcoded block metadata shifts and masks with constants
...
we might want to make these bigger than 4 bits in the future.
2021-06-16 12:48:09 +01:00
Dylan K. Taylor
c22f793521
RakLibInterface: Log a message when a non-0xfe packet is received
2021-06-15 19:20:31 +01:00
Dylan K. Taylor
2ee86f0edf
Improved UPnP exception handling
2021-06-13 23:02:42 +01:00
Dylan K. Taylor
ec7ea98ead
UPnP: expose more functionality
2021-06-13 22:48:38 +01:00
Dylan K. Taylor
80bf948588
Separate UPnPNetworkInterface from UPnP implementation
2021-06-13 22:41:36 +01:00
Dylan K. Taylor
3d0b21f30c
Denoise NetworkSession with typed properties
2021-06-13 22:27:23 +01:00
Dylan K. Taylor
e5dd5a5745
NetworkSession: Fixed missing nullable declarations
...
phpstan doesn't report these because .. reasons .. @ondrejmirtes this is causing bugs to go unfound :(
I'm aware of the irony that I just silenced the bugs that were exposed by this commit .. that's an architectural problem for another day
2021-06-13 22:24:12 +01:00
Dylan K. Taylor
04a6e89d6f
Change encryption to use CTR instead of GCM
...
despite MCPE claiming to use GCM, it omits the auth tag, which defeats the whole point of using GCM.
CTR can be used instead, with the final 4 bytes of the IV being 0002.
2021-06-13 21:57:23 +01:00
Dylan K. Taylor
0df2677464
EncryptionContext: Allow passing encryption algo as a constructor parameter
2021-06-13 19:57:48 +01:00
Dylan K. Taylor
2bbb24fab7
Merge branch 'stable'
2021-06-08 20:00:08 +01:00
Dylan K. Taylor
2d686e6dc0
Merge remote-tracking branch 'origin/stable'
2021-06-04 18:03:32 +01:00
Dylan K. Taylor
7d99b0115c
Added a getName() override for RakLibServer
2021-05-29 23:51:46 +01:00
Dylan K. Taylor
4bcc7e09cb
PacketSerializer: fix unnecessary FQN
2021-05-29 14:24:48 +01:00
Dylan K. Taylor
8171b18002
Separate ItemTypeDictionary implementation from initialization
...
we're not going to want implementation details like how it's setup getting in the way when we separate protocol from the core.
2021-05-29 14:24:05 +01:00
Dylan K. Taylor
20197e6813
RakLibServer: clean up constructor parameters
2021-05-08 20:13:29 +01:00
Dylan K. Taylor
1003fde2fc
RakLibServer: make all parameters mandatory
2021-05-08 20:11:16 +01:00
Dylan K. Taylor
f9bfc0df73
NetworkSession: don't crash on teleporting to other world during PlayerLoginEvent
2021-05-07 22:47:06 +01:00
Dylan K. Taylor
652de2632a
Rough OffHand implementation
...
this doesn't do stuff like taking arrows from offhand yet.
2021-05-05 14:46:51 +01:00
Dylan K. Taylor
4ca5558ec1
Merge remote-tracking branch 'origin/stable'
2021-05-05 11:14:01 +01:00
Dylan K. Taylor
593a8ac529
Added Loom blocks
...
these don't support doing patterns yet, but their inventories work.
2021-04-29 19:51:09 +01:00
Dylan K. Taylor
8364bc51ac
...
2021-04-27 14:47:11 +01:00
Dylan K. Taylor
7ce77713dd
InventoryManager: add a mechanism to allow plugins to inject their own container open packet creators
...
closes #4008
2021-04-27 14:40:43 +01:00
Dylan K. Taylor
66fdf526d4
Remove GarbageServerboundPacket
...
it's not the protocol implementation's job to decide what's garbage. It should only indicate that a packet MAY be sent by the client. It should then be up to the handler to decide what to do with it.
2021-04-19 01:07:21 +01:00