Dylan K. Taylor
4b9a142a5d
Import global functions and constants for enhanced performance
...
This is better for performance because these then don't need to be reevaluated every time they are called.
When encountering an unqualified function or constant reference, PHP will first try to locate a symbol in the current namespace by that name, and then fall back to the global namespace.
This short-circuits the check, which has substantial performance effects in some cases - in particular, ord(), chr() and strlen() show ~1500x faster calls when they are fully qualified.
However, this doesn't mean that PM is getting a massive amount faster. In real world terms, this translates to about 10-15% performance improvement.
But before anyone gets excited, you should know that the CodeOptimizer in the PreProcessor repo has been applying fully-qualified symbol optimizations to Jenkins builds for years, which is one of the reasons why Jenkins builds have better performance than home-built or source installations.
We're choosing to do this for the sake of future SafePHP integration and also to be able to get rid of the buggy CodeOptimizer, so that phar and source are more consistent.
2019-01-04 20:43:15 +00:00
Dylan K. Taylor
f7de6eb59f
Network: Deprecate some garbage
...
Deprecations on a patch version breaks release protocol, but I don't care at this point. Nobody should have been using this shit anyway.
2018-12-31 22:52:39 +00:00
Dylan K. Taylor
75a0627bf2
Network: cut this catch-all bullshit out as well
...
If a network interface crashes, it should take out the whole server, not try to keep on ticking.
2018-12-31 22:40:13 +00:00
Dylan K. Taylor
8752e363c9
EXCUSE ME, HOW DARE YOU NOT LOG NETWORK ERRORS?!
2018-12-31 22:33:56 +00:00
Dylan K. Taylor
495fdbd19f
Move block and network namespaces away from PluginManager->callEvent()
...
the original step that wasn't supposed to cause conflicts, caused messy conflicts... so I might as well do this part too
2018-10-05 18:22:49 +01:00
Dylan K. Taylor
2a0a2134d1
Server: Implemented an signal/sleep interrupt mechanism for ticking ( #2171 )
...
This allows other threads to notify the main thread to wake it up while it's sleeping between ticks, allowing reduction of processing latency.
Currently only RakLib and the CommandReader threads utilize this, but it's planned to extend it to more things in the near future.
CommandReader is now event-driven instead of poll-based - the server will not poll the CommandReader thread for messages each tick anymore.
RakLib utilizes this mechanism to get packets processed without delays to lower latency.
This now adds an extra dependency - `pocketmine/snooze` library contains the meat of the code used for this. See the Snooze repository for details.
2018-05-09 14:18:13 +01:00
Dylan K. Taylor
2c6205e3f3
Added new events for network interface handling, close #1232 ( #1250 )
...
Added
- NetworkInterfaceRegisterEvent (cancellable)
- NetworkInterfaceUnregisterEvent
- NetworkInterfaceCrashEvent
2017-09-06 11:22:10 +01:00
Dylan K. Taylor
ae3a8a5493
Added capability to unblock addresses without a restart
2017-08-14 14:12:06 +01:00
Dylan K. Taylor
dbb92096e4
More typehints, documentation fixes and static analysis cleanup
2017-07-15 12:12:06 +01:00
Dylan K. Taylor
30df0c2418
Refactor a bunch of network-related things for easier auto-generation of protocol stuff
2017-07-12 16:32:39 +01:00
Dylan K. Taylor
ec079b68a6
Fixed missing packet registrations
2017-06-25 17:36:12 +01:00
Dylan K. Taylor
ecfcf49984
Added basic encode/decode for gamerules data and added GameRulesChangedPacket
...
needed it for tests
Squashed:
oops
PhpStorm you asshole
2017-06-25 15:43:08 +01:00
Dylan K. Taylor
51b0673b4b
Bite the bullet and enable strict types on everything
2017-06-07 12:53:16 +01:00
Dylan K. Taylor
4cd97a7c7a
Fixed UpdateAttributesPacket not being registered for reading
2017-06-05 14:14:50 +01:00
Dylan K. Taylor
69f64dd802
BossEventPacket
...
lots of stuff doesn't work (not implemented in MCPE, bug, or are we doing something wrong???)
2017-05-13 17:33:56 +01:00
Dylan K. Taylor
e47c7ea55f
A bunch of really dirty hacks to get 1.1.0.0 working
...
Mojang: once again, what the hell have you done.
2017-04-01 19:18:15 +01:00
Dylan K. Taylor
bb79684480
Merge branch 'api3/network' into api3/network_mcpe-1.0.5
2017-03-25 21:31:48 +00:00
Dylan K. Taylor
6ba4a8fe5c
Moved batch packet handling into BatchPacket->handle(), fixed data packet receive timings to include MCPE packet decode time
2017-03-20 10:26:53 +00:00
Dylan K. Taylor
36cda5de61
Merge branch 'api3/network' into api3/network_mcpe-1.0.5
2017-03-19 21:54:14 +00:00
Dylan K. Taylor
9c350dbe47
Fixed DataPacketReceiveEvent, fixed packet receive timings, gave Player->handleDataPacket() a new use
2017-03-19 21:50:09 +00:00
Dylan K. Taylor
6f1b12b021
Added new 1.0.5 packets
2017-03-11 19:58:32 +00:00
Dylan K. Taylor
08cd944e5d
Merge branch 'master' into api3/network
2017-03-09 18:12:37 +00:00
Dylan K. Taylor
7b5e5832cb
Added UpdateTradePacket
2017-03-09 17:55:25 +00:00
Dylan K. Taylor
adb7df212c
Let the parent caller catch this so we get encapsulated packet hexdumps
2017-03-08 20:29:22 +00:00
Dylan K. Taylor
9e92a350e3
ClientboundMapItemDataPacket
2017-03-08 20:29:15 +00:00
Dylan K. Taylor
9b47aed0ab
Added MapInfoRequestPacket
2017-03-08 20:29:13 +00:00
Dylan K. Taylor
55598ba703
Moaaaar resource packets
2017-03-08 20:29:13 +00:00
Dylan K. Taylor
e008a3cd5e
Added handling for unknown packets
2017-03-08 20:29:03 +00:00
Dylan K. Taylor
d0faf3df91
Added S2C and C2S handshake packet classes and stub handlers
...
TODO: implement encryption
Add boilerplate reset() for C2S packet encode
This crap really needs fixing
2017-03-08 20:28:52 +00:00
Dylan K. Taylor
56990eb28b
MCPE protocol gets its own namespace
2017-03-08 20:28:39 +00:00
Dylan K. Taylor
477cb77002
Exploded Player->handleDataPacket() into 70+ methods
2017-03-08 20:28:20 +00:00
Dylan K. Taylor
8bf3b6bbea
Added ShowCreditsPacket
2017-03-02 11:04:51 +00:00
Dylan K. Taylor
eb13cec5d0
Added new packets
2017-03-02 11:04:51 +00:00
Dylan K. Taylor
38937fc4cc
Added TransferPacket
...
TYSM MOJANG
2017-02-01 12:59:01 +00:00
Dylan K. Taylor
ad0553fbf8
Bump to API 3.0.0-ALPHA2 - READ DESCRIPTION!
...
Refactored level\format\generic\GenericChunk -> level\format\Chunk.
Re-added support for async chunk sending
Refactored most Level IO into new namespaces for more organisation
Removed LevelDB loader completely (will be re-added at a later date)
2017-01-06 17:13:45 +00:00
Dylan K. Taylor
598e7aac8f
More PhpStorm inspections, import cleanup
2017-01-04 14:55:11 +00:00
Dylan K. Taylor
cc9736314e
Protocol update for 1.0.0.1
...
Added PlayerFallPacket
2016-12-08 12:34:31 +00:00
Dylan K. Taylor
fb74d93e00
Protocol changes for 1.0.0.0
2016-12-02 13:20:52 +00:00
Dylan K. Taylor
b198f287db
Add AvailableCommands and CommandStep packet shells
2016-10-27 10:55:03 +01:00
Dylan K. Taylor
b1df4728d3
BatchPacket payload checks, fix crashes when older versions try to join
2016-10-27 10:55:03 +01:00
Dylan K. Taylor
7cd7a7fbf6
Spawn working on new build. TODO: Resource packs.
2016-10-27 10:55:02 +01:00
Dylan K. Taylor
39ffc28f2a
Auto-generated data for 0.15.90.8 (not functionalyet)
2016-10-27 10:55:01 +01:00
Dylan K. Taylor
86ed0f1397
Updated existing packets and added new ones
2016-10-27 10:55:01 +01:00
Dylan K. Taylor
dd0c5efb56
Initial spawn on 0.16
2016-10-27 10:55:00 +01:00
SOFe
58ff381557
PhpStorm automated formatting ( #11 )
...
* PhpStorm reformatting
* Tuned PhpStorm reformatting
* Improved ItemIds and BlockIds formatting
* Tuned more PhpStorm reformatting
* Improved string concatenation
2016-10-03 19:05:48 +08:00
SOF3
6fc435da0e
Imports rearrangement
2016-10-03 00:43:46 +08:00
Dylan K. Taylor
5f26c21b9f
Remove unused RemovePlayerPacket
2016-10-01 21:39:05 +01:00
Dylan K. Taylor
5485b63e6e
Added ChangeDimensionPacket
2016-09-30 19:19:58 +01:00
Intyre
ef8227a074
Bump version to 0.15.0.0 and protocol changes
2016-06-15 23:59:35 +02:00
Intyre
e11b76318c
fixing chunk sending
2016-02-27 16:35:38 +01:00