mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-09-07 10:22:56 +00:00
Bump version to 0.15.0.0 and protocol changes
This commit is contained in:
@ -24,8 +24,8 @@ namespace pocketmine\network\protocol;
|
||||
#include <rules/DataPacket.h>
|
||||
|
||||
|
||||
class ChunkRadiusUpdatePacket extends DataPacket{
|
||||
const NETWORK_ID = Info::CHUNK_RADIUS_UPDATE_PACKET;
|
||||
class ChunkRadiusUpdatedPacket extends DataPacket{
|
||||
const NETWORK_ID = Info::CHUNK_RADIUS_UPDATED_PACKET;
|
||||
|
||||
public $radius;
|
||||
|
@ -30,69 +30,72 @@ interface Info{
|
||||
/**
|
||||
* Actual Minecraft: PE protocol version
|
||||
*/
|
||||
const CURRENT_PROTOCOL = 70;
|
||||
const CURRENT_PROTOCOL = 81;
|
||||
|
||||
const LOGIN_PACKET = 0x8f;
|
||||
const PLAY_STATUS_PACKET = 0x90;
|
||||
const DISCONNECT_PACKET = 0x91;
|
||||
const BATCH_PACKET = 0x92;
|
||||
const TEXT_PACKET = 0x93;
|
||||
const SET_TIME_PACKET = 0x94;
|
||||
const START_GAME_PACKET = 0x95;
|
||||
const ADD_PLAYER_PACKET = 0x96;
|
||||
const REMOVE_PLAYER_PACKET = 0x97;
|
||||
const ADD_ENTITY_PACKET = 0x98;
|
||||
const REMOVE_ENTITY_PACKET = 0x99;
|
||||
const ADD_ITEM_ENTITY_PACKET = 0x9a;
|
||||
const TAKE_ITEM_ENTITY_PACKET = 0x9b;
|
||||
const MOVE_ENTITY_PACKET = 0x9c;
|
||||
const MOVE_PLAYER_PACKET = 0x9d;
|
||||
const REMOVE_BLOCK_PACKET = 0x9e;
|
||||
const UPDATE_BLOCK_PACKET = 0x9f;
|
||||
const ADD_PAINTING_PACKET = 0xa0;
|
||||
const EXPLODE_PACKET = 0xa1;
|
||||
const LEVEL_EVENT_PACKET = 0xa2;
|
||||
const BLOCK_EVENT_PACKET = 0xa3;
|
||||
const ENTITY_EVENT_PACKET = 0xa4;
|
||||
const MOB_EFFECT_PACKET = 0xa5;
|
||||
const UPDATE_ATTRIBUTES_PACKET = 0xa6;
|
||||
const MOB_EQUIPMENT_PACKET = 0xa7;
|
||||
const MOB_ARMOR_EQUIPMENT_PACKET = 0xa8;
|
||||
const INTERACT_PACKET = 0xa9;
|
||||
const USE_ITEM_PACKET = 0xaa;
|
||||
const PLAYER_ACTION_PACKET = 0xab;
|
||||
const HURT_ARMOR_PACKET = 0xac;
|
||||
const SET_ENTITY_DATA_PACKET = 0xad;
|
||||
const SET_ENTITY_MOTION_PACKET = 0xae;
|
||||
const SET_ENTITY_LINK_PACKET = 0xaf;
|
||||
const SET_HEALTH_PACKET = 0xb0;
|
||||
const SET_SPAWN_POSITION_PACKET = 0xb1;
|
||||
const ANIMATE_PACKET = 0xb2;
|
||||
const RESPAWN_PACKET = 0xb3;
|
||||
const DROP_ITEM_PACKET = 0xb4;
|
||||
const CONTAINER_OPEN_PACKET = 0xb5;
|
||||
const CONTAINER_CLOSE_PACKET = 0xb6;
|
||||
const CONTAINER_SET_SLOT_PACKET = 0xb7;
|
||||
const CONTAINER_SET_DATA_PACKET = 0xb8;
|
||||
const CONTAINER_SET_CONTENT_PACKET = 0xb9;
|
||||
const CRAFTING_DATA_PACKET = 0xba;
|
||||
const CRAFTING_EVENT_PACKET = 0xbb;
|
||||
const ADVENTURE_SETTINGS_PACKET = 0xbc;
|
||||
const BLOCK_ENTITY_DATA_PACKET = 0xbd;
|
||||
// const PLAYER_INPUT_PACKET = 0xbe;
|
||||
const FULL_CHUNK_DATA_PACKET = 0xbf;
|
||||
const SET_DIFFICULTY_PACKET = 0xc0;
|
||||
// const CHANGE_DIMENSION_PACKET = 0xc1;
|
||||
const SET_PLAYER_GAMETYPE_PACKET = 0xc2;
|
||||
const PLAYER_LIST_PACKET = 0xc3;
|
||||
// const TELEMETRY_EVENT_PACKET = 0xc4;
|
||||
// const SPAWN_EXPERIENCE_ORB_PACKET = 0xc5
|
||||
// const CLIENTBOUND_MAP_ITEM_DATA_PACKET = 0xc6;
|
||||
// const MAP_INFO_REQUEST_PACKET = 0xc7;
|
||||
const REQUEST_CHUNK_RADIUS_PACKET = 0xc8;
|
||||
const CHUNK_RADIUS_UPDATE_PACKET = 0xc9;
|
||||
// const ITEM_FRAME_DROP_ITEM_PACKET = 0xca;
|
||||
// const REPLACE_SELECTED_ITEM_PACKET = 0xcb;
|
||||
const LOGIN_PACKET = 0x01;
|
||||
const PLAY_STATUS_PACKET = 0x02;
|
||||
const SERVER_TO_CLIENT_HANDSHAKE_PACKET = 0x03;
|
||||
const CLIENT_TO_SERVER_HANDSHAKE_PACKET = 0x04;
|
||||
const DISCONNECT_PACKET = 0x05;
|
||||
const BATCH_PACKET = 0x06;
|
||||
const TEXT_PACKET = 0x07;
|
||||
const SET_TIME_PACKET = 0x08;
|
||||
const START_GAME_PACKET = 0x09;
|
||||
const ADD_PLAYER_PACKET = 0x0a;
|
||||
const ADD_ENTITY_PACKET = 0x0b;
|
||||
const REMOVE_ENTITY_PACKET = 0x0c;
|
||||
const ADD_ITEM_ENTITY_PACKET = 0x0d;
|
||||
const TAKE_ITEM_ENTITY_PACKET = 0x0e;
|
||||
const MOVE_ENTITY_PACKET = 0x0f;
|
||||
const MOVE_PLAYER_PACKET = 0x10;
|
||||
const RIDER_JUMP_PACKET = 0x11;
|
||||
const REMOVE_BLOCK_PACKET = 0x12;
|
||||
const UPDATE_BLOCK_PACKET = 0x13;
|
||||
const ADD_PAINTING_PACKET = 0x14;
|
||||
const EXPLODE_PACKET = 0x15;
|
||||
const LEVEL_EVENT_PACKET = 0x16;
|
||||
const BLOCK_EVENT_PACKET = 0x17;
|
||||
const ENTITY_EVENT_PACKET = 0x18;
|
||||
const MOB_EFFECT_PACKET = 0x19;
|
||||
const UPDATE_ATTRIBUTES_PACKET = 0x1a;
|
||||
const MOB_EQUIPMENT_PACKET = 0x1b;
|
||||
const MOB_ARMOR_EQUIPMENT_PACKET = 0x1c;
|
||||
const INTERACT_PACKET = 0x1e;
|
||||
const USE_ITEM_PACKET = 0x1f;
|
||||
const PLAYER_ACTION_PACKET = 0x20;
|
||||
const HURT_ARMOR_PACKET = 0x21;
|
||||
const SET_ENTITY_DATA_PACKET = 0x22;
|
||||
const SET_ENTITY_MOTION_PACKET = 0x23;
|
||||
const SET_ENTITY_LINK_PACKET = 0x24;
|
||||
const SET_HEALTH_PACKET = 0x25;
|
||||
const SET_SPAWN_POSITION_PACKET = 0x26;
|
||||
const ANIMATE_PACKET = 0x27;
|
||||
const RESPAWN_PACKET = 0x28;
|
||||
const DROP_ITEM_PACKET = 0x29;
|
||||
const CONTAINER_OPEN_PACKET = 0x2a;
|
||||
const CONTAINER_CLOSE_PACKET = 0x2b;
|
||||
const CONTAINER_SET_SLOT_PACKET = 0x2c;
|
||||
const CONTAINER_SET_DATA_PACKET = 0x2d;
|
||||
const CONTAINER_SET_CONTENT_PACKET = 0x2e;
|
||||
const CRAFTING_DATA_PACKET = 0x2f;
|
||||
const CRAFTING_EVENT_PACKET = 0x30;
|
||||
const ADVENTURE_SETTINGS_PACKET = 0x31;
|
||||
const BLOCK_ENTITY_DATA_PACKET = 0x32;
|
||||
const PLAYER_INPUT_PACKET = 0x33;
|
||||
const FULL_CHUNK_DATA_PACKET = 0x34;
|
||||
const SET_DIFFICULTY_PACKET = 0x35;
|
||||
const CHANGE_DIMENSION_PACKET = 0x36;
|
||||
const SET_PLAYER_GAMETYPE_PACKET = 0x37;
|
||||
const PLAYER_LIST_PACKET = 0x38;
|
||||
const TELEMETRY_EVENT_PACKET = 0x39;
|
||||
const SPAWN_EXPERIENCE_ORB_PACKET = 0x3a;
|
||||
const CLIENTBOUND_MAP_ITEM_DATA_PACKET = 0x3b;
|
||||
const MAP_INFO_REQUEST_PACKET = 0x3c;
|
||||
const REQUEST_CHUNK_RADIUS_PACKET = 0x3d;
|
||||
const CHUNK_RADIUS_UPDATED_PACKET = 0x3e;
|
||||
const ITEM_FRAME_DROP_ITEM_PACKET = 0x3f;
|
||||
const REPLACE_SELECTED_ITEM_PACKET = 0x40;
|
||||
const ADD_ITEM_PACKET = 0x41;
|
||||
}
|
||||
|
||||
|
||||
|
@ -28,36 +28,61 @@ class LoginPacket extends DataPacket{
|
||||
const NETWORK_ID = Info::LOGIN_PACKET;
|
||||
|
||||
public $username;
|
||||
public $protocol1;
|
||||
public $protocol2;
|
||||
public $clientId;
|
||||
public $protocol;
|
||||
|
||||
public $clientUUID;
|
||||
public $clientId;
|
||||
public $identityPublicKey;
|
||||
public $serverAddress;
|
||||
public $clientSecret;
|
||||
|
||||
public $skinName;
|
||||
public $skinID;
|
||||
public $skin = null;
|
||||
|
||||
public function decode(){
|
||||
$this->username = $this->getString();
|
||||
$this->protocol1 = $this->getInt();
|
||||
$this->protocol2 = $this->getInt();
|
||||
if($this->protocol1 < Info::CURRENT_PROTOCOL){ //New fields!
|
||||
$this->setBuffer(null, 0); //Skip batch packet handling
|
||||
return;
|
||||
}
|
||||
$this->clientId = $this->getLong();
|
||||
$this->clientUUID = $this->getUUID();
|
||||
$this->serverAddress = $this->getString();
|
||||
$this->clientSecret = $this->getString();
|
||||
$this->protocol = $this->getInt();
|
||||
|
||||
$this->skinName = $this->getString();
|
||||
$this->skin = $this->getString();
|
||||
$str = zlib_decode($this->get($this->getInt()), 1024 * 1024 * 64); //Max 64MB
|
||||
$this->setBuffer($str, 0);
|
||||
|
||||
$chainData = json_decode($this->get($this->getLInt()));
|
||||
foreach ($chainData->{"chain"} as $chain){
|
||||
$webtoken = $this->decodeToken($chain);
|
||||
if(isset($webtoken["extraData"])){
|
||||
if(isset($webtoken["extraData"]["displayName"])){
|
||||
$this->username = $webtoken["extraData"]["displayName"];
|
||||
}
|
||||
if(isset($webtoken["extraData"]["identity"])){
|
||||
$this->clientUUID = $webtoken["extraData"]["identity"];
|
||||
}
|
||||
if(isset($webtoken["identityPublicKey"])){
|
||||
$this->identityPublicKey = $webtoken["identityPublicKey"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$skinToken = $this->decodeToken($this->get($this->getLInt()));
|
||||
if(isset($skinToken["ClientRandomId"])){
|
||||
$this->clientId = $skinToken["ClientRandomId"];
|
||||
}
|
||||
if(isset($skinToken["ServerAddress"])){
|
||||
$this->serverAddress = $skinToken["ServerAddress"];
|
||||
}
|
||||
if(isset($skinToken["SkinData"])){
|
||||
$this->skin = base64_decode($skinToken["SkinData"]);
|
||||
}
|
||||
if(isset($skinToken["SkinId"])){
|
||||
$this->skinId = $skinToken["SkinId"];
|
||||
}
|
||||
}
|
||||
|
||||
public function encode(){
|
||||
|
||||
}
|
||||
|
||||
public function decodeToken($token){
|
||||
$tokens = explode(".", $token);
|
||||
list($headB64, $payloadB64, $sigB64) = $tokens;
|
||||
|
||||
return json_decode(base64_decode($payloadB64), true);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user