From 1b812d373c4fb6943f23fd77d8fc0183b430091a Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Mon, 3 Aug 2015 10:53:23 +0200 Subject: [PATCH] Updated protocol packet ids --- src/pocketmine/PocketMine.php | 4 +- src/pocketmine/Server.php | 4 +- src/pocketmine/inventory/PlayerInventory.php | 26 +--- .../network/protocol/CraftingDataPacket.php | 5 +- .../network/protocol/DataPacket.php | 4 + src/pocketmine/network/protocol/Info.php | 113 +++++++++--------- 6 files changed, 74 insertions(+), 82 deletions(-) diff --git a/src/pocketmine/PocketMine.php b/src/pocketmine/PocketMine.php index 2e260c0ee..70e2a27b6 100644 --- a/src/pocketmine/PocketMine.php +++ b/src/pocketmine/PocketMine.php @@ -355,10 +355,10 @@ namespace pocketmine { $args = $trace[$i]["params"]; } foreach($args as $name => $value){ - $params .= (is_object($value) ? get_class($value) . " " . (method_exists($value, "__toString") ? $value->__toString() : "object") : gettype($value) . " " . (is_array($value) ? "Array()" : @strval($value))) . ", "; + $params .= (is_object($value) ? get_class($value) . " " . (method_exists($value, "__toString") ? $value->__toString() : "object") : gettype($value) . " " . (is_array($value) ? "Array()" : Utils::printable(@strval($value)))) . ", "; } } - $messages[] = "#$j " . (isset($trace[$i]["file"]) ? cleanPath($trace[$i]["file"]) : "") . "(" . (isset($trace[$i]["line"]) ? $trace[$i]["line"] : "") . "): " . (isset($trace[$i]["class"]) ? $trace[$i]["class"] . (($trace[$i]["type"] === "dynamic" or $trace[$i]["type"] === "->") ? "->" : "::") : "") . $trace[$i]["function"] . "(" . substr($params, 0, -2) . ")"; + $messages[] = "#$j " . (isset($trace[$i]["file"]) ? cleanPath($trace[$i]["file"]) : "") . "(" . (isset($trace[$i]["line"]) ? $trace[$i]["line"] : "") . "): " . (isset($trace[$i]["class"]) ? $trace[$i]["class"] . (($trace[$i]["type"] === "dynamic" or $trace[$i]["type"] === "->") ? "->" : "::") : "") . $trace[$i]["function"] . "(" . Utils::printable(substr($params, 0, -2)) . ")"; } return $messages; diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index ec4319f02..7feba74c5 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -2334,7 +2334,7 @@ class Server{ public function addOnlinePlayer(Player $player){ $this->playerList[$player->getRawUniqueId()] = $player; - $this->updatePlayerListData($player->getUniqueId(), $player->getUniqueId(), $player->getDisplayName(), $player->isSkinSlim(), $player->getSkinData()); + $this->updatePlayerListData($player->getUniqueId(), $player->getId(), $player->getDisplayName(), $player->isSkinSlim(), $player->getSkinData()); } public function removeOnlinePlayer(Player $player){ @@ -2366,7 +2366,7 @@ class Server{ $pk = new PlayerListPacket(); $pk->type = PlayerListPacket::TYPE_ADD; foreach($this->playerList as $player){ - $pk->entries[] = [$player->getUniqueId(), $player->getUniqueId(), $player->getDisplayName(), $player->isSkinSlim(), $player->getSkinData()]; + $pk->entries[] = [$player->getUniqueId(), $player->getId(), $player->getDisplayName(), $player->isSkinSlim(), $player->getSkinData()]; } $p->dataPacket($pk->setChannel(Network::CHANNEL_ENTITY_SPAWNING)); diff --git a/src/pocketmine/inventory/PlayerInventory.php b/src/pocketmine/inventory/PlayerInventory.php index 9348f6ec4..8f1a3cfdb 100644 --- a/src/pocketmine/inventory/PlayerInventory.php +++ b/src/pocketmine/inventory/PlayerInventory.php @@ -128,8 +128,7 @@ class PlayerInventory extends BaseInventory{ $pk = new MobEquipmentPacket(); $pk->eid = ($target === $this->getHolder() ? 0 : $this->getHolder()->getId()); - $pk->item = $item->getId(); - $pk->meta = $item->getDamage(); + $pk->item = $item; $pk->slot = $this->getHeldItemSlot(); $pk->selectedSlot = $this->getHeldItemIndex(); @@ -304,20 +303,12 @@ class PlayerInventory extends BaseInventory{ if($target instanceof Player){ $target = [$target]; } - $armor = $this->getArmorContents(); - $slots = []; - foreach($armor as $i => $slot){ - if($slot->getId() === Item::AIR){ - $slots[$i] = 255; - }else{ - $slots[$i] = $slot->getId(); - } - } + $armor = $this->getArmorContents(); $pk = new MobArmorEquipmentPacket(); $pk->eid = $this->getHolder()->getId(); - $pk->slots = $slots; + $pk->slots = $armor; $pk->encode(); $pk->setChannel(Network::CHANNEL_ENTITY_SPAWNING); $pk->isEncoded = true; @@ -362,19 +353,10 @@ class PlayerInventory extends BaseInventory{ } $armor = $this->getArmorContents(); - $slots = []; - - foreach($armor as $i => $slot){ - if($slot->getId() === Item::AIR){ - $slots[$i] = 255; - }else{ - $slots[$i] = $slot->getId(); - } - } $pk = new MobArmorEquipmentPacket(); $pk->eid = $this->getHolder()->getId(); - $pk->slots = $slots; + $pk->slots = $armor; $pk->encode(); $pk->isEncoded = true; diff --git a/src/pocketmine/network/protocol/CraftingDataPacket.php b/src/pocketmine/network/protocol/CraftingDataPacket.php index 1c1f7127d..c983f5efa 100644 --- a/src/pocketmine/network/protocol/CraftingDataPacket.php +++ b/src/pocketmine/network/protocol/CraftingDataPacket.php @@ -112,11 +112,12 @@ class CraftingDataPacket extends DataPacket{ public function encode(){ $this->reset(); - $this->putByte($this->type); $this->putInt(count($this->entries)); foreach($this->entries as $d){ - + $this->writeEntry($d); } + + $this->putByte($this->cleanRecipes ? 1 : 0); } } diff --git a/src/pocketmine/network/protocol/DataPacket.php b/src/pocketmine/network/protocol/DataPacket.php index 998063c1b..dccd09191 100644 --- a/src/pocketmine/network/protocol/DataPacket.php +++ b/src/pocketmine/network/protocol/DataPacket.php @@ -232,4 +232,8 @@ abstract class DataPacket extends \stdClass{ $this->offset = 0; return $this; } + + public function __debugInfo(){ + return bin2hex($this->buffer); + } } diff --git a/src/pocketmine/network/protocol/Info.php b/src/pocketmine/network/protocol/Info.php index 6da042f8a..ba55bf73d 100644 --- a/src/pocketmine/network/protocol/Info.php +++ b/src/pocketmine/network/protocol/Info.php @@ -32,60 +32,60 @@ interface Info{ */ const CURRENT_PROTOCOL = 30; - const LOGIN_PACKET = 0x82; - const PLAY_STATUS_PACKET = 0x83; - const DISCONNECT_PACKET = 0x84; - const BATCH_PACKET = 0x85; - const TEXT_PACKET = 0x86; - const SET_TIME_PACKET = 0x87; - const START_GAME_PACKET = 0x88; - const ADD_PLAYER_PACKET = 0x89; - const REMOVE_PLAYER_PACKET = 0x8a; - const ADD_ENTITY_PACKET = 0x8b; - const REMOVE_ENTITY_PACKET = 0x8c; - const ADD_ITEM_ENTITY_PACKET = 0x8d; - const TAKE_ITEM_ENTITY_PACKET = 0x8e; - const MOVE_ENTITY_PACKET = 0x8f; - const MOVE_PLAYER_PACKET = 0x90; - const REMOVE_BLOCK_PACKET = 0x91; - const UPDATE_BLOCK_PACKET = 0x92; - const ADD_PAINTING_PACKET = 0x93; - const EXPLODE_PACKET = 0x94; - const LEVEL_EVENT_PACKET = 0x95; - const TILE_EVENT_PACKET = 0x96; - const ENTITY_EVENT_PACKET = 0x97; - const MOB_EFFECT_PACKET = 0x98; - const UPDATE_ATTRIBUTES_PACKET = 0x99; - const MOB_EQUIPMENT_PACKET = 0x9a; - const MOB_ARMOR_EQUIPMENT_PACKET = 0x9b; - const INTERACT_PACKET = 0x9c; - const USE_ITEM_PACKET = 0x9d; - const PLAYER_ACTION_PACKET = 0x9e; - const HURT_ARMOR_PACKET = 0x9f; - const SET_ENTITY_DATA_PACKET = 0xa0; - const SET_ENTITY_MOTION_PACKET = 0xa1; - const SET_ENTITY_LINK_PACKET = 0xa2; - const SET_HEALTH_PACKET = 0xa3; - const SET_SPAWN_POSITION_PACKET = 0xa4; - const ANIMATE_PACKET = 0xa5; - const RESPAWN_PACKET = 0xa6; - const DROP_ITEM_PACKET = 0xa7; - const CONTAINER_OPEN_PACKET = 0xa8; - const CONTAINER_CLOSE_PACKET = 0xa9; - const CONTAINER_SET_SLOT_PACKET = 0xaa; - const CONTAINER_SET_DATA_PACKET = 0xab; - const CONTAINER_SET_CONTENT_PACKET = 0xac; - const CRAFTING_DATA_PACKET = 0xad; - const CRAFTING_EVENT_PACKET = 0xae; - const ADVENTURE_SETTINGS_PACKET = 0xaf; - const TILE_ENTITY_DATA_PACKET = 0xb0; - //const PLAYER_INPUT_PACKET = 0xb1; - const FULL_CHUNK_DATA_PACKET = 0xb2; - const SET_DIFFICULTY_PACKET = 0xb3; - //const CHANGE_DIMENSION_PACKET = 0xb4; - //const SET_PLAYER_GAMETYPE_PACKET = 0xb5; - const PLAYER_LIST_PACKET = 0xb6; - //const TELEMETRY_EVENT_PACKET = 0xb7; + const LOGIN_PACKET = 0x87; + const PLAY_STATUS_PACKET = 0x88; + const DISCONNECT_PACKET = 0x89; + const BATCH_PACKET = 0x8a; + const TEXT_PACKET = 0x8b; + const SET_TIME_PACKET = 0x8c; + const START_GAME_PACKET = 0x8d; + const ADD_PLAYER_PACKET = 0x8e; + const REMOVE_PLAYER_PACKET = 0x8f; + const ADD_ENTITY_PACKET = 0x90; + const REMOVE_ENTITY_PACKET = 0x91; + const ADD_ITEM_ENTITY_PACKET = 0x92; + const TAKE_ITEM_ENTITY_PACKET = 0x93; + const MOVE_ENTITY_PACKET = 0x94; + const MOVE_PLAYER_PACKET = 0x95; + const REMOVE_BLOCK_PACKET = 0x96; + const UPDATE_BLOCK_PACKET = 0x97; + const ADD_PAINTING_PACKET = 0x98; + const EXPLODE_PACKET = 0x99; + const LEVEL_EVENT_PACKET = 0x9a; + const TILE_EVENT_PACKET = 0x9b; + const ENTITY_EVENT_PACKET = 0x9c; + const MOB_EFFECT_PACKET = 0x9d; + const UPDATE_ATTRIBUTES_PACKET = 0x9e; + const MOB_EQUIPMENT_PACKET = 0x9f; + const MOB_ARMOR_EQUIPMENT_PACKET = 0xa0; + const INTERACT_PACKET = 0xa1; + const USE_ITEM_PACKET = 0xa2; + const PLAYER_ACTION_PACKET = 0xa3; + const HURT_ARMOR_PACKET = 0xa4; + const SET_ENTITY_DATA_PACKET = 0xa5; + const SET_ENTITY_MOTION_PACKET = 0xa6; + const SET_ENTITY_LINK_PACKET = 0xa7; + const SET_HEALTH_PACKET = 0xa8; + const SET_SPAWN_POSITION_PACKET = 0xa9; + const ANIMATE_PACKET = 0xaa; + const RESPAWN_PACKET = 0xab; + const DROP_ITEM_PACKET = 0xac; + const CONTAINER_OPEN_PACKET = 0xad; + const CONTAINER_CLOSE_PACKET = 0xae; + const CONTAINER_SET_SLOT_PACKET = 0xaf; + const CONTAINER_SET_DATA_PACKET = 0xb0; + const CONTAINER_SET_CONTENT_PACKET = 0xb1; + const CRAFTING_DATA_PACKET = 0xb2; + const CRAFTING_EVENT_PACKET = 0xb3; + const ADVENTURE_SETTINGS_PACKET = 0xb4; + const TILE_ENTITY_DATA_PACKET = 0xb5; + //const PLAYER_INPUT_PACKET = 0xb6; + const FULL_CHUNK_DATA_PACKET = 0xb7; + const SET_DIFFICULTY_PACKET = 0xb8; + //const CHANGE_DIMENSION_PACKET = 0xb9; + //const SET_PLAYER_GAMETYPE_PACKET = 0xba; + const PLAYER_LIST_PACKET = 0xbb; + //const TELEMETRY_EVENT_PACKET = 0xbc; } @@ -93,3 +93,8 @@ interface Info{ + + + + +