Dylan T 5d7feaaf21
Remove EventExecutor, event handlers now use closures (#2525)
This cleans up some cargo-cult code poorly copied from Bukkit, which has negative performance effects and also makes internal event handling more complex than necessary.

## API changes
- Removed `EventExecutor` and `MethodEventExecutor`.
- A listener is no longer required for an event handler to be registered. Closure objects can now be used directly provided that they meet the conditions for registration.
- `PluginManager->registerEvent()` signature has changed: the `Listener` and `EventExecutor` parameters have been removed and a `\Closure $handler` has been added in its place.
- `RegisteredListener` now requires a `Closure` parameter instead of `Listener, EventExecutor`.

## Behavioural changes
These changes reduce the execution complexity involved with calling an event handler. Since event calls can happen in hot paths, this may have visible positive effects on performance.

Initial testing reveals a performance improvement of ~15% per event handler call compared to the old method.
2018-11-13 21:04:47 +00:00
2018-10-21 15:23:46 +01:00
2018-11-12 22:18:28 +00:00
2017-06-25 14:15:34 +01:00
2018-06-17 19:59:45 +01:00
2012-12-07 02:24:55 +01:00
2018-08-11 15:22:58 +01:00
2018-11-13 18:25:03 +00:00

PocketMine-MP

A highly customisable, open source server software for Minecraft: Bedrock Edition written in PHP

Build Status

Setup, help & support, FAQs

Head over to the documentation site. If you don't find what you're looking for there, talk to a human. Please do not use our issue tracker for support requests.

Discussion

Plugins

There are a very wide range of already-written plugins available which you can use to customise your server. Check out Poggit, or just search GitHub.

For developers

Can I contribute?

Yes you can! Contributions are welcomed provided that they comply with our Contributing Guidelines. Please ensure you read the relevant sections of the guidelines carefully before making a Pull Request or opening an Issue.

Where can I get the latest .phar?

  • Latest release builds can be found in our GitHub releases.
  • Latest bleeding-edge development builds (and other builds in the build job channels) can be found on our Jenkins server.

Note: Please avoid development builds unless there is no other alternative for what you need. Development builds are subject to changes at any time without notice, and it is likely that your server or plugins might break without warning.

Donate

Donations help support the development of the project and pay for our expenses.

  • Bitcoin Cash (BCH): qz9p8dqkv0r7aahdatu5uewqfkvstrglv58f8yle07
  • Bitcoin (BTC): 1PVAyDJ2g7kcjCxAC3C89oxpV2ZYcLad8T
  • Patreon

Licensing information

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with this program.  If not, see <http://www.gnu.org/licenses/>.

pmmp/PocketMine are not affiliated with Mojang. All brands and trademarks belong to their respective owners. PocketMine-MP is not a Mojang-approved software, nor is it associated with Mojang.

Languages
PHP 99.9%