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
- Following from the above, commands now support quoted arguments, so if you want to kick player
API
Block
- Added API method
BlockFactory::isRegistered()
Events
- Added
PlayerBlockPickEvent
- API method
CraftItemEvent->getTransaction()
has been added and returns aCraftingTransaction
object. InventoryTransactionEvent->getTransaction()
now returns anInventoryTransaction
instead of aTransactionGroup
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
andSlotType
classes -
Added the following:
InventoryTransaction
- used for regular inventory transactions, this replaces the old SimpleTransactionGroup in terms of functionalityCraftingTransaction
- represents anInventoryTransaction
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 oldBaseTransaction
.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
andBigCraftingGrid
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()
andContainerInventory->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()
andBaseInventory->setItem()
will now throw an exception if an out-of-bounds inventory slot index is given. -
ShapedRecipe
's constructor has been changed, it now acceptsItem $result, string[] $shape, Item[] $shapeItems, Item[] $extraResults
. -
Removed
BigShapedRecipe
andBigShapelessRecipe
- these have been obsoleted by the addition ofCraftingRecipe->requiresCraftingTable()
-
Added
send
parameters toBaseInventory->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!!! UseServer->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 ofAsyncTask->__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)