pmmp / PocketMine-MP

A server software for Minecraft: Bedrock Edition in PHP
https://pmmp.io
GNU Lesser General Public License v3.0
3.25k stars 1.53k forks source link

MCPE 1.0.0 and API 3.0.0 #179

Closed dktapps closed 6 years ago

dktapps commented 7 years ago

Issue description

OK, here goes nothing...

So, you noticed that Minecraft PE 1.0.0 was released today, yes? Well, here goes...

I released changes onto GitHub today for the update. However, some major backwards incompatible changes had to be made, resulting in a need to bump the API version to 3.0.0.

Stop screaming!

If you want to test out MCPE 1.0 now, you may do so by heading over to GitHub and cloning the mcpe-1.0 branch. However, this branch is NOT STABLE, has TERRIBLE PERFORMANCE and MAY CORRUPT YOUR WORLDS. NUCLEAR MATERIAL, HANDLE WITH CAUTION.

But, API 3.0.0? ALREADY?

In internal discussions we (the team) came to the realization that A LOT of things need rewriting within the PocketMine core, because of lack of suitability (e.g. Level module), lack of customisability (Block), lack of quality (Block, Entity, Item, Inventory, Crafting, Network, etc...), or lack of capability to use new features (Command).

SO: We decided that instead of doing these rewrites one by one (and necessitating several major API bumps in quick succession), we are going to bundle these changes under the API 3.0 headline.

Future API versioning

Of course, you are going to want to use development builds because you need them to get MCPE 1.0 support. And of course the stuff we have planned is going to take a while, so we are now using an extended API versioning scheme.

Indev versions of PocketMine-MP will now include a suffix to their API version to indicate what level of changes have been made. This will allow plugin developers to develop for development builds without us needing to bump the API every time somebody makes a BC breaking change. This is intended to provide a measure of sanity for plugin developers so your plugins don't randomly start crashing when you update to a new development build.

The current API version reported by the mcpe-1.0 branch is 3.0.0-ALPHA1. (Some of you may already have noticed that the Travis builds are failing due to DevTools being incompatible API).

Because massive BC breaking changes can happen indev, the system has zero tolerance for incompatible development APIs. For example, a plugin with API 3.0.0-ALPHA2 cannot be loaded with 3.0.0-ALPHA1 or 3.0.0-ALPHA3. Regular non-development API versions will continue to work exactly as they did before, i.e. major different = incompatible, minor different = OK if plugin is older, incompatible if plugin is newer.

Planned changes for API 3.0

NO ETAs will be given, so don't bother asking for one. This list is also not finalized and may be modified at any time.

robske110 commented 7 years ago

MAY CORRUPT YOUR WORLDS

It's not just may. It kinda does it, no skylight for new generated chunks, which may result into very weird lighting.

dktapps commented 7 years ago

@robske110 well push your branch to GitHub so I can review it then!

SOF3 commented 7 years ago

In the vision that this issue may encounter a large amount of irrelevant comments (like this one), this issue has been locked. If you wish to discuss about this issue, please use this forum thread, or create a thread for specific discussion.

dktapps commented 6 years ago

This issue is too stale to be of any further use.