Protocol changes for 1.16.0

This commit is contained in:
Dylan K. Taylor
2020-06-26 12:46:52 +01:00
parent c616d9bb7c
commit e990c5a0a5
81 changed files with 3026 additions and 184 deletions

View File

@@ -28,7 +28,9 @@ use pocketmine\item\Item;
use pocketmine\network\mcpe\protocol\InventoryContentPacket;
use pocketmine\network\mcpe\protocol\InventorySlotPacket;
use pocketmine\network\mcpe\protocol\MobArmorEquipmentPacket;
use pocketmine\network\mcpe\protocol\types\inventory\ItemStackWrapper;
use pocketmine\Player;
use function array_map;
use function array_merge;
class ArmorInventory extends BaseInventory{
@@ -109,7 +111,7 @@ class ArmorInventory extends BaseInventory{
$pk2 = new InventorySlotPacket();
$pk2->windowId = $player->getWindowId($this);
$pk2->inventorySlot = $index;
$pk2->item = $this->getItem($index);
$pk2->item = ItemStackWrapper::legacy($this->getItem($index));
$player->dataPacket($pk2);
}else{
$player->dataPacket($pk);
@@ -134,7 +136,7 @@ class ArmorInventory extends BaseInventory{
if($player === $this->getHolder()){
$pk2 = new InventoryContentPacket();
$pk2->windowId = $player->getWindowId($this);
$pk2->items = $this->getContents(true);
$pk2->items = array_map([ItemStackWrapper::class, 'legacy'], $this->getContents(true));
$player->dataPacket($pk2);
}else{
$player->dataPacket($pk);

View File

@@ -31,7 +31,9 @@ use pocketmine\math\Vector3;
use pocketmine\network\mcpe\protocol\InventoryContentPacket;
use pocketmine\network\mcpe\protocol\InventorySlotPacket;
use pocketmine\network\mcpe\protocol\types\ContainerIds;
use pocketmine\network\mcpe\protocol\types\inventory\ItemStackWrapper;
use pocketmine\Player;
use function array_map;
use function array_slice;
use function count;
use function max;
@@ -433,7 +435,7 @@ abstract class BaseInventory implements Inventory{
}
$pk = new InventoryContentPacket();
$pk->items = $this->getContents(true);
$pk->items = array_map([ItemStackWrapper::class, 'legacy'], $this->getContents(true));
foreach($target as $player){
if(($id = $player->getWindowId($this)) === ContainerIds::NONE){
@@ -455,7 +457,7 @@ abstract class BaseInventory implements Inventory{
$pk = new InventorySlotPacket();
$pk->inventorySlot = $index;
$pk->item = $this->getItem($index);
$pk->item = ItemStackWrapper::legacy($this->getItem($index));
foreach($target as $player){
if(($id = $player->getWindowId($this)) === ContainerIds::NONE){

View File

@@ -26,10 +26,12 @@ namespace pocketmine\inventory;
use pocketmine\entity\Human;
use pocketmine\event\player\PlayerItemHeldEvent;
use pocketmine\item\Item;
use pocketmine\network\mcpe\protocol\InventoryContentPacket;
use pocketmine\network\mcpe\protocol\CreativeContentPacket;
use pocketmine\network\mcpe\protocol\MobEquipmentPacket;
use pocketmine\network\mcpe\protocol\types\ContainerIds;
use pocketmine\network\mcpe\protocol\types\inventory\CreativeContentEntry;
use pocketmine\Player;
use function array_map;
use function in_array;
use function is_array;
@@ -196,16 +198,11 @@ class PlayerInventory extends BaseInventory{
if(!($holder instanceof Player)){
throw new \LogicException("Cannot send creative inventory contents to non-player inventory holder");
}
$pk = new InventoryContentPacket();
$pk->windowId = ContainerIds::CREATIVE;
if(!$holder->isSpectator()){ //fill it for all gamemodes except spectator
foreach(Item::getCreativeItems() as $i => $item){
$pk->items[$i] = clone $item;
}
}
$holder->dataPacket($pk);
$nextEntryId = 1;
$holder->sendDataPacket(CreativeContentPacket::create(array_map(function(Item $item) use (&$nextEntryId) : CreativeContentEntry{
return new CreativeContentEntry($nextEntryId++, clone $item);
}, $holder->isSpectator() ? [] : Item::getCreativeItems()))); //fill it for all gamemodes except spectator
}
/**

View File

@@ -27,7 +27,7 @@ use pocketmine\event\inventory\CraftItemEvent;
use pocketmine\inventory\CraftingRecipe;
use pocketmine\item\Item;
use pocketmine\network\mcpe\protocol\ContainerClosePacket;
use pocketmine\network\mcpe\protocol\types\ContainerIds;
use pocketmine\Player;
use function array_pop;
use function count;
use function intdiv;
@@ -165,7 +165,7 @@ class CraftingTransaction extends InventoryTransaction{
* transaction goes wrong.
*/
$pk = new ContainerClosePacket();
$pk->windowId = ContainerIds::NONE;
$pk->windowId = Player::HARDCODED_CRAFTING_GRID_WINDOW_ID;
$this->source->dataPacket($pk);
}