github pmmp/PocketMine-MP api/3.0.0-ALPHA8
PocketMine-MP 1.7dev-83 with API 3.0.0-ALPHA8

latest releases: 5.21.1, 5.21.0, 5.20.1...
pre-release7 years ago

For Minecraft: Bedrock Edition 1.2.0.81
Rewritten inventory transaction handling, (mostly) fixed desktop crafting, implemented Xbox Live authentication

This version is an alpha snapshot, is NOT FEATURE COMPLETE and may be unstable. Please use our issue tracker to report bugs.

Please do not create issues for missing gameplay features.

This build has breaking API changes, so the API has been bumped to 3.0.0-ALPHA8. These changes are NOT yet complete.

Notable changes

Core

  • Composer is now required to run a server from source-code.
  • Xbox Live authentication has been implemented and is enabled by default.
  • The server no longer crashes when loading an old world containing furnaces with missing NBT tags.
  • Stats reporting can now be disabled from the command-line using --anonymous-statistics.enabled=0
  • Players with spaces in their names are now accepted on the server.
    • Following from the above, commands now support quoted arguments, so if you want to kick player Rotten Eggs, use quotes, like so: /kick "Rotten Eggs" reason why

API

Block

  • Added API method BlockFactory::isRegistered()

Events

  • Added PlayerBlockPickEvent
  • API method CraftItemEvent->getTransaction() has been added and returns a CraftingTransaction object.
  • InventoryTransactionEvent->getTransaction() now returns an InventoryTransaction instead of a TransactionGroup

Inventory

The inventory transaction system has been almost completely rewritten, the following things have changed:

  • The general naming of TransactionGroups and Transactions has been refactored to Transaction and InventoryAction respectively as the original naming did not make sense.

  • Removed SimpleTransactionGroup, TransactionGroup, BaseTransaction, Transaction and SlotType classes

  • Added the following:

    • InventoryTransaction - used for regular inventory transactions, this replaces the old SimpleTransactionGroup in terms of functionality
    • CraftingTransaction - represents an InventoryTransaction in which the actions are to create a crafted item.
    • InventoryAction - base class which represents a change in the amount of an item, somewhere. This has several subclasses:
      • SlotChangeAction: Represents a change of the amount of an item in a specific slot of an inventory. This replaces the functionality of the old BaseTransaction.
      • DropItemAction: Represents a player throwing an item onto the ground out of their inventory.
      • CreativeInventoryAction: Represents the action of creating or deleting items using the creative menu.
      • CraftingTransferMaterialAction: Represents the action of consuming a crafting ingredient, or getting a secondary output from a crafting event (don't try too hard to understand this)
      • CraftingTakeResultAction: Represents a player taking the primary result item from the crafting grid result slot.
  • CraftingGrid and BigCraftingGrid have been added. Note for plugin developers: if you change the contents of these, players will not see the changes, due to a limitation in the current 1.2 client.

  • PlayerCursorInventory has been added - this is a container representing the item under the cursor on desktop platforms. Note that sending this inventory's contents does not work correctly due to a bug in the current 1.2 client.

  • InventoryType has been removed

  • API methods BaseInventory->getDefaultTitle(), BaseInventory->getDefaultSize() and ContainerInventory->getNetworkType() have been added.

  • Due to changes in the 1.2 client, the API for changing hotbar linked slots has been removed - they now behave the same way as Minecraft PC Edition does. The following obsolete API methods have been removed:

    • PlayerInventory->resetHotbar()
    • PlayerInventory->getHotbarSlotIndex()
    • PlayerInventory->setHotbarSlotIndex()
    • PlayerInventory->setHeldItemSlot()
  • BaseInventory->getItem() and BaseInventory->setItem() will now throw an exception if an out-of-bounds inventory slot index is given.

  • ShapedRecipe's constructor has been changed, it now accepts Item $result, string[] $shape, Item[] $shapeItems, Item[] $extraResults.

  • Removed BigShapedRecipe and BigShapelessRecipe - these have been obsoleted by the addition of CraftingRecipe->requiresCraftingTable()

  • Added send parameters to BaseInventory->clear(), BaseInventory->setItem().

Item

  • Added API method Item->isNull(), which returns true if the count of the item is less than or equal to 0, or if its ID is air.
  • Added API method Item->equalsExact() which asserts that the ID, count, damage and NBT must all be identical.
  • Added API method ItemFactory::isRegistered()

Level

  • The server no longer crashes if a plugin uses Level->unload() directly. Note that you should not be using this anyway!!! Use Server->unloadLevel() instead.

Plugins

  • Refactored API checking code into its own function (PluginManager->isCompatibleApi(string ...$apiVersions))

Scheduler & AsyncTasks

  • Added API method AsyncTask->storeLocal(), which must be explictly called to store objects in the scheduler object store. This replaces the functionality of AsyncTask->__construct() because the old behaviour was too easy to use by accident. See #1322 for details.

Gameplay

  • Implemented Coarse Dirt
  • Eating sounds now work correctly.
  • Reverted botched fix for #145 that caused problems with double slabs.
  • Desktop crafting now works (except for a crash when using the recipe book - WIP)

Don't miss a new PocketMine-MP release

NewReleases is sending notifications on new releases.