diff --git a/src/pocketmine/network/mcpe/NetworkSession.php b/src/pocketmine/network/mcpe/NetworkSession.php index 8a51e8562..44a17df01 100644 --- a/src/pocketmine/network/mcpe/NetworkSession.php +++ b/src/pocketmine/network/mcpe/NetworkSession.php @@ -66,6 +66,7 @@ use pocketmine\network\mcpe\protocol\InventoryContentPacket; use pocketmine\network\mcpe\protocol\InventorySlotPacket; use pocketmine\network\mcpe\protocol\InventoryTransactionPacket; use pocketmine\network\mcpe\protocol\ItemFrameDropItemPacket; +use pocketmine\network\mcpe\protocol\LabTablePacket; use pocketmine\network\mcpe\protocol\LevelEventPacket; use pocketmine\network\mcpe\protocol\LevelSoundEventPacket; use pocketmine\network\mcpe\protocol\LoginPacket; @@ -88,6 +89,7 @@ use pocketmine\network\mcpe\protocol\PlayerListPacket; use pocketmine\network\mcpe\protocol\PlayerSkinPacket; use pocketmine\network\mcpe\protocol\PurchaseReceiptPacket; use pocketmine\network\mcpe\protocol\RemoveEntityPacket; +use pocketmine\network\mcpe\protocol\RemoveObjectivePacket; use pocketmine\network\mcpe\protocol\RequestChunkRadiusPacket; use pocketmine\network\mcpe\protocol\ResourcePackChunkDataPacket; use pocketmine\network\mcpe\protocol\ResourcePackChunkRequestPacket; @@ -103,12 +105,14 @@ use pocketmine\network\mcpe\protocol\ServerToClientHandshakePacket; use pocketmine\network\mcpe\protocol\SetCommandsEnabledPacket; use pocketmine\network\mcpe\protocol\SetDefaultGameTypePacket; use pocketmine\network\mcpe\protocol\SetDifficultyPacket; +use pocketmine\network\mcpe\protocol\SetDisplayObjectivePacket; use pocketmine\network\mcpe\protocol\SetEntityDataPacket; use pocketmine\network\mcpe\protocol\SetEntityLinkPacket; use pocketmine\network\mcpe\protocol\SetEntityMotionPacket; use pocketmine\network\mcpe\protocol\SetHealthPacket; use pocketmine\network\mcpe\protocol\SetLastHurtByPacket; use pocketmine\network\mcpe\protocol\SetPlayerGameTypePacket; +use pocketmine\network\mcpe\protocol\SetScorePacket; use pocketmine\network\mcpe\protocol\SetSpawnPositionPacket; use pocketmine\network\mcpe\protocol\SetTimePacket; use pocketmine\network\mcpe\protocol\SetTitlePacket; @@ -126,6 +130,7 @@ use pocketmine\network\mcpe\protocol\TextPacket; use pocketmine\network\mcpe\protocol\TransferPacket; use pocketmine\network\mcpe\protocol\UpdateAttributesPacket; use pocketmine\network\mcpe\protocol\UpdateBlockPacket; +use pocketmine\network\mcpe\protocol\UpdateBlockSyncedPacket; use pocketmine\network\mcpe\protocol\UpdateEquipPacket; use pocketmine\network\mcpe\protocol\UpdateTradePacket; use pocketmine\network\mcpe\protocol\WSConnectPacket; @@ -554,4 +559,24 @@ abstract class NetworkSession{ return false; } + public function handleRemoveObjective(RemoveObjectivePacket $packet) : bool{ + return false; + } + + public function handleSetDisplayObjective(SetDisplayObjectivePacket $packet) : bool{ + return false; + } + + public function handleSetScore(SetScorePacket $packet) : bool{ + return false; + } + + public function handleLabTable(LabTablePacket $packet) : bool{ + return false; + } + + public function handleUpdateBlockSynced(UpdateBlockSyncedPacket $packet) : bool{ + return false; + } + } diff --git a/src/pocketmine/network/mcpe/protocol/LabTablePacket.php b/src/pocketmine/network/mcpe/protocol/LabTablePacket.php new file mode 100644 index 000000000..f0c3e3920 --- /dev/null +++ b/src/pocketmine/network/mcpe/protocol/LabTablePacket.php @@ -0,0 +1,44 @@ + + +use pocketmine\network\mcpe\NetworkSession; + +class LabTablePacket extends DataPacket{ + public const NETWORK_ID = ProtocolInfo::LAB_TABLE_PACKET; + + protected function decodePayload(){ + //TODO + } + + protected function encodePayload(){ + //TODO + } + + public function handle(NetworkSession $session) : bool{ + return $session->handleLabTable($this); + } +} diff --git a/src/pocketmine/network/mcpe/protocol/PacketPool.php b/src/pocketmine/network/mcpe/protocol/PacketPool.php index c1f61c488..18df6cd45 100644 --- a/src/pocketmine/network/mcpe/protocol/PacketPool.php +++ b/src/pocketmine/network/mcpe/protocol/PacketPool.php @@ -136,6 +136,11 @@ class PacketPool{ static::registerPacket(new ServerSettingsResponsePacket()); static::registerPacket(new ShowProfilePacket()); static::registerPacket(new SetDefaultGameTypePacket()); + static::registerPacket(new RemoveObjectivePacket()); + static::registerPacket(new SetDisplayObjectivePacket()); + static::registerPacket(new SetScorePacket()); + static::registerPacket(new LabTablePacket()); + static::registerPacket(new UpdateBlockSyncedPacket()); static::registerPacket(new BatchPacket()); } diff --git a/src/pocketmine/network/mcpe/protocol/ProtocolInfo.php b/src/pocketmine/network/mcpe/protocol/ProtocolInfo.php index cc534aba0..080b46b3e 100644 --- a/src/pocketmine/network/mcpe/protocol/ProtocolInfo.php +++ b/src/pocketmine/network/mcpe/protocol/ProtocolInfo.php @@ -39,15 +39,15 @@ interface ProtocolInfo{ /** * Actual Minecraft: PE protocol version */ - public const CURRENT_PROTOCOL = 223; + public const CURRENT_PROTOCOL = 240; /** * Current Minecraft PE version reported by the server. This is usually the earliest currently supported version. */ - public const MINECRAFT_VERSION = 'v1.2.13'; + public const MINECRAFT_VERSION = 'v1.2.14.2 beta'; /** * Version number sent to clients in ping responses. */ - public const MINECRAFT_VERSION_NETWORK = '1.2.13'; + public const MINECRAFT_VERSION_NETWORK = '1.2.14.2'; public const LOGIN_PACKET = 0x01; public const PLAY_STATUS_PACKET = 0x02; @@ -154,5 +154,10 @@ interface ProtocolInfo{ public const SERVER_SETTINGS_RESPONSE_PACKET = 0x67; public const SHOW_PROFILE_PACKET = 0x68; public const SET_DEFAULT_GAME_TYPE_PACKET = 0x69; + public const REMOVE_OBJECTIVE_PACKET = 0x6a; + public const SET_DISPLAY_OBJECTIVE_PACKET = 0x6b; + public const SET_SCORE_PACKET = 0x6c; + public const LAB_TABLE_PACKET = 0x6d; + public const UPDATE_BLOCK_SYNCED_PACKET = 0x6e; } diff --git a/src/pocketmine/network/mcpe/protocol/RemoveObjectivePacket.php b/src/pocketmine/network/mcpe/protocol/RemoveObjectivePacket.php new file mode 100644 index 000000000..bfb3c3cbf --- /dev/null +++ b/src/pocketmine/network/mcpe/protocol/RemoveObjectivePacket.php @@ -0,0 +1,44 @@ + + +use pocketmine\network\mcpe\NetworkSession; + +class RemoveObjectivePacket extends DataPacket{ + public const NETWORK_ID = ProtocolInfo::REMOVE_OBJECTIVE_PACKET; + + protected function decodePayload(){ + //TODO + } + + protected function encodePayload(){ + //TODO + } + + public function handle(NetworkSession $session) : bool{ + return $session->handleRemoveObjective($this); + } +} diff --git a/src/pocketmine/network/mcpe/protocol/SetDisplayObjectivePacket.php b/src/pocketmine/network/mcpe/protocol/SetDisplayObjectivePacket.php new file mode 100644 index 000000000..8592e3869 --- /dev/null +++ b/src/pocketmine/network/mcpe/protocol/SetDisplayObjectivePacket.php @@ -0,0 +1,44 @@ + + +use pocketmine\network\mcpe\NetworkSession; + +class SetDisplayObjectivePacket extends DataPacket{ + public const NETWORK_ID = ProtocolInfo::SET_DISPLAY_OBJECTIVE_PACKET; + + protected function decodePayload(){ + //TODO + } + + protected function encodePayload(){ + //TODO + } + + public function handle(NetworkSession $session) : bool{ + return $session->handleSetDisplayObjective($this); + } +} diff --git a/src/pocketmine/network/mcpe/protocol/SetScorePacket.php b/src/pocketmine/network/mcpe/protocol/SetScorePacket.php new file mode 100644 index 000000000..186cc44ac --- /dev/null +++ b/src/pocketmine/network/mcpe/protocol/SetScorePacket.php @@ -0,0 +1,44 @@ + + +use pocketmine\network\mcpe\NetworkSession; + +class SetScorePacket extends DataPacket{ + public const NETWORK_ID = ProtocolInfo::SET_SCORE_PACKET; + + protected function decodePayload(){ + //TODO + } + + protected function encodePayload(){ + //TODO + } + + public function handle(NetworkSession $session) : bool{ + return $session->handleSetScore($this); + } +} diff --git a/src/pocketmine/network/mcpe/protocol/UpdateBlockPacket.php b/src/pocketmine/network/mcpe/protocol/UpdateBlockPacket.php index 7b4614527..94e2e56a4 100644 --- a/src/pocketmine/network/mcpe/protocol/UpdateBlockPacket.php +++ b/src/pocketmine/network/mcpe/protocol/UpdateBlockPacket.php @@ -40,6 +40,9 @@ class UpdateBlockPacket extends DataPacket{ public const FLAG_ALL = self::FLAG_NEIGHBORS | self::FLAG_NETWORK; public const FLAG_ALL_PRIORITY = self::FLAG_ALL | self::FLAG_PRIORITY; + public const DATA_LAYER_NORMAL = 0; + public const DATA_LAYER_LIQUID = 1; + /** @var int */ public $x; /** @var int */ @@ -50,17 +53,21 @@ class UpdateBlockPacket extends DataPacket{ public $blockRuntimeId; /** @var int */ public $flags; + /** @var int */ + public $dataLayerId = self::DATA_LAYER_NORMAL; protected function decodePayload(){ $this->getBlockPosition($this->x, $this->y, $this->z); $this->blockRuntimeId = $this->getUnsignedVarInt(); $this->flags = $this->getUnsignedVarInt(); + $this->dataLayerId = $this->getUnsignedVarInt(); } protected function encodePayload(){ $this->putBlockPosition($this->x, $this->y, $this->z); $this->putUnsignedVarInt($this->blockRuntimeId); $this->putUnsignedVarInt($this->flags); + $this->putUnsignedVarInt($this->dataLayerId); } public function handle(NetworkSession $session) : bool{ diff --git a/src/pocketmine/network/mcpe/protocol/UpdateBlockSyncedPacket.php b/src/pocketmine/network/mcpe/protocol/UpdateBlockSyncedPacket.php new file mode 100644 index 000000000..42eb0e6ee --- /dev/null +++ b/src/pocketmine/network/mcpe/protocol/UpdateBlockSyncedPacket.php @@ -0,0 +1,53 @@ + + +use pocketmine\network\mcpe\NetworkSession; + +class UpdateBlockSyncedPacket extends UpdateBlockPacket{ + public const NETWORK_ID = ProtocolInfo::UPDATE_BLOCK_SYNCED_PACKET; + + /** @var int */ + protected $uvarint64_1 = 0; + /** @var int */ + protected $uvarint64_2 = 0; + + protected function decodePayload(){ + parent::decodePayload(); + $this->uvarint64_1 = $this->getUnsignedVarLong(); + $this->uvarint64_2 = $this->getUnsignedVarLong(); + } + + protected function encodePayload(){ + parent::encodePayload(); + $this->putUnsignedVarLong($this->uvarint64_1); + $this->putUnsignedVarLong($this->uvarint64_2); + } + + public function handle(NetworkSession $session) : bool{ + return $session->handleUpdateBlockSynced($this); + } +}