mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-05-13 17:29:44 +00:00
A bunch of really dirty hacks to get 1.1.0.0 working
Mojang: once again, what the hell have you done.
This commit is contained in:
parent
f75cc93160
commit
e47c7ea55f
@ -148,7 +148,7 @@ use pocketmine\network\mcpe\protocol\MobEquipmentPacket;
|
|||||||
use pocketmine\network\mcpe\protocol\MoveEntityPacket;
|
use pocketmine\network\mcpe\protocol\MoveEntityPacket;
|
||||||
use pocketmine\network\mcpe\protocol\MovePlayerPacket;
|
use pocketmine\network\mcpe\protocol\MovePlayerPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerActionPacket;
|
use pocketmine\network\mcpe\protocol\PlayerActionPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerFallPacket;
|
use pocketmine\network\mcpe\protocol\EntityFallPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerInputPacket;
|
use pocketmine\network\mcpe\protocol\PlayerInputPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerListPacket;
|
use pocketmine\network\mcpe\protocol\PlayerListPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
|
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
|
||||||
@ -2735,7 +2735,7 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handlePlayerFall(PlayerFallPacket $packet) : bool{
|
public function handleEntityFall(EntityFallPacket $packet) : bool{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3318,7 +3318,7 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function handleUnknown(UnknownPacket $packet) : bool{
|
public function handleUnknown(UnknownPacket $packet) : bool{
|
||||||
$this->server->getLogger()->debug("Received unknown packet from " . $this->getName() . ": 0x" . bin2hex($packet->payload));
|
$this->server->getLogger()->debug("Received unknown packet from " . $this->getName() . ": 0x" . bin2hex($packet->buffer));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ use pocketmine\network\mcpe\protocol\MobEquipmentPacket;
|
|||||||
use pocketmine\network\mcpe\protocol\MoveEntityPacket;
|
use pocketmine\network\mcpe\protocol\MoveEntityPacket;
|
||||||
use pocketmine\network\mcpe\protocol\MovePlayerPacket;
|
use pocketmine\network\mcpe\protocol\MovePlayerPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerActionPacket;
|
use pocketmine\network\mcpe\protocol\PlayerActionPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerFallPacket;
|
use pocketmine\network\mcpe\protocol\EntityFallPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerInputPacket;
|
use pocketmine\network\mcpe\protocol\PlayerInputPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerListPacket;
|
use pocketmine\network\mcpe\protocol\PlayerListPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
|
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
|
||||||
@ -285,7 +285,7 @@ class Network{
|
|||||||
$this->registerPacket(ProtocolInfo::ADVENTURE_SETTINGS_PACKET, AdventureSettingsPacket::class);
|
$this->registerPacket(ProtocolInfo::ADVENTURE_SETTINGS_PACKET, AdventureSettingsPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::ANIMATE_PACKET, AnimatePacket::class);
|
$this->registerPacket(ProtocolInfo::ANIMATE_PACKET, AnimatePacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::AVAILABLE_COMMANDS_PACKET, AvailableCommandsPacket::class);
|
$this->registerPacket(ProtocolInfo::AVAILABLE_COMMANDS_PACKET, AvailableCommandsPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::BATCH_PACKET, BatchPacket::class);
|
$this->registerPacket(0xfe, BatchPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::BLOCK_ENTITY_DATA_PACKET, BlockEntityDataPacket::class);
|
$this->registerPacket(ProtocolInfo::BLOCK_ENTITY_DATA_PACKET, BlockEntityDataPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::BLOCK_EVENT_PACKET, BlockEventPacket::class);
|
$this->registerPacket(ProtocolInfo::BLOCK_EVENT_PACKET, BlockEventPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::BLOCK_PICK_REQUEST_PACKET, BlockPickRequestPacket::class);
|
$this->registerPacket(ProtocolInfo::BLOCK_PICK_REQUEST_PACKET, BlockPickRequestPacket::class);
|
||||||
@ -305,6 +305,7 @@ class Network{
|
|||||||
$this->registerPacket(ProtocolInfo::DISCONNECT_PACKET, DisconnectPacket::class);
|
$this->registerPacket(ProtocolInfo::DISCONNECT_PACKET, DisconnectPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::DROP_ITEM_PACKET, DropItemPacket::class);
|
$this->registerPacket(ProtocolInfo::DROP_ITEM_PACKET, DropItemPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::ENTITY_EVENT_PACKET, EntityEventPacket::class);
|
$this->registerPacket(ProtocolInfo::ENTITY_EVENT_PACKET, EntityEventPacket::class);
|
||||||
|
$this->registerPacket(ProtocolInfo::ENTITY_FALL_PACKET, EntityFallPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::EXPLODE_PACKET, ExplodePacket::class);
|
$this->registerPacket(ProtocolInfo::EXPLODE_PACKET, ExplodePacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::FULL_CHUNK_DATA_PACKET, FullChunkDataPacket::class);
|
$this->registerPacket(ProtocolInfo::FULL_CHUNK_DATA_PACKET, FullChunkDataPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::HURT_ARMOR_PACKET, HurtArmorPacket::class);
|
$this->registerPacket(ProtocolInfo::HURT_ARMOR_PACKET, HurtArmorPacket::class);
|
||||||
@ -320,7 +321,6 @@ class Network{
|
|||||||
$this->registerPacket(ProtocolInfo::MOVE_ENTITY_PACKET, MoveEntityPacket::class);
|
$this->registerPacket(ProtocolInfo::MOVE_ENTITY_PACKET, MoveEntityPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::MOVE_PLAYER_PACKET, MovePlayerPacket::class);
|
$this->registerPacket(ProtocolInfo::MOVE_PLAYER_PACKET, MovePlayerPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::PLAYER_ACTION_PACKET, PlayerActionPacket::class);
|
$this->registerPacket(ProtocolInfo::PLAYER_ACTION_PACKET, PlayerActionPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::PLAYER_FALL_PACKET, PlayerFallPacket::class);
|
|
||||||
$this->registerPacket(ProtocolInfo::PLAYER_INPUT_PACKET, PlayerInputPacket::class);
|
$this->registerPacket(ProtocolInfo::PLAYER_INPUT_PACKET, PlayerInputPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::PLAYER_LIST_PACKET, PlayerListPacket::class);
|
$this->registerPacket(ProtocolInfo::PLAYER_LIST_PACKET, PlayerListPacket::class);
|
||||||
$this->registerPacket(ProtocolInfo::PLAY_SOUND_PACKET, PlaySoundPacket::class);
|
$this->registerPacket(ProtocolInfo::PLAY_SOUND_PACKET, PlaySoundPacket::class);
|
||||||
|
@ -68,7 +68,7 @@ use pocketmine\network\mcpe\protocol\MobEquipmentPacket;
|
|||||||
use pocketmine\network\mcpe\protocol\MoveEntityPacket;
|
use pocketmine\network\mcpe\protocol\MoveEntityPacket;
|
||||||
use pocketmine\network\mcpe\protocol\MovePlayerPacket;
|
use pocketmine\network\mcpe\protocol\MovePlayerPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerActionPacket;
|
use pocketmine\network\mcpe\protocol\PlayerActionPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerFallPacket;
|
use pocketmine\network\mcpe\protocol\EntityFallPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerInputPacket;
|
use pocketmine\network\mcpe\protocol\PlayerInputPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlayerListPacket;
|
use pocketmine\network\mcpe\protocol\PlayerListPacket;
|
||||||
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
|
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
|
||||||
@ -191,7 +191,7 @@ interface NetworkSession{
|
|||||||
|
|
||||||
public function handlePlayerAction(PlayerActionPacket $packet) : bool;
|
public function handlePlayerAction(PlayerActionPacket $packet) : bool;
|
||||||
|
|
||||||
public function handlePlayerFall(PlayerFallPacket $packet) : bool;
|
public function handleEntityFall(EntityFallPacket $packet) : bool;
|
||||||
|
|
||||||
public function handleHurtArmor(HurtArmorPacket $packet) : bool;
|
public function handleHurtArmor(HurtArmorPacket $packet) : bool;
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@ namespace pocketmine\network\mcpe;
|
|||||||
|
|
||||||
use pocketmine\event\player\PlayerCreationEvent;
|
use pocketmine\event\player\PlayerCreationEvent;
|
||||||
use pocketmine\network\AdvancedSourceInterface;
|
use pocketmine\network\AdvancedSourceInterface;
|
||||||
|
use pocketmine\network\mcpe\protocol\BatchPacket;
|
||||||
use pocketmine\network\mcpe\protocol\DataPacket;
|
use pocketmine\network\mcpe\protocol\DataPacket;
|
||||||
use pocketmine\network\mcpe\protocol\ProtocolInfo;
|
use pocketmine\network\mcpe\protocol\ProtocolInfo;
|
||||||
use pocketmine\network\Network;
|
use pocketmine\network\Network;
|
||||||
@ -190,42 +191,38 @@ class RakLibInterface implements ServerInstance, AdvancedSourceInterface{
|
|||||||
public function putPacket(Player $player, DataPacket $packet, $needACK = false, $immediate = false){
|
public function putPacket(Player $player, DataPacket $packet, $needACK = false, $immediate = false){
|
||||||
if(isset($this->identifiers[$h = spl_object_hash($player)])){
|
if(isset($this->identifiers[$h = spl_object_hash($player)])){
|
||||||
$identifier = $this->identifiers[$h];
|
$identifier = $this->identifiers[$h];
|
||||||
$pk = null;
|
|
||||||
if(!$packet->isEncoded){
|
if(!$packet->isEncoded){
|
||||||
$packet->encode();
|
$packet->encode();
|
||||||
$packet->isEncoded = true;
|
$packet->isEncoded = true;
|
||||||
}elseif(!$needACK){
|
|
||||||
if(!isset($packet->__encapsulatedPacket)){
|
|
||||||
$packet->__encapsulatedPacket = new CachedEncapsulatedPacket;
|
|
||||||
$packet->__encapsulatedPacket->identifierACK = null;
|
|
||||||
$packet->__encapsulatedPacket->buffer = chr(0xfe) . $packet->buffer; // #blameshoghi
|
|
||||||
$packet->__encapsulatedPacket->reliability = PacketReliability::RELIABLE_ORDERED;
|
|
||||||
$packet->__encapsulatedPacket->orderChannel = 0;
|
|
||||||
}
|
|
||||||
$pk = $packet->__encapsulatedPacket;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$immediate and !$needACK and $packet->canBeBatched()
|
if($packet instanceof BatchPacket){
|
||||||
and Network::$BATCH_THRESHOLD >= 0
|
if($needACK){
|
||||||
and strlen($packet->buffer) >= Network::$BATCH_THRESHOLD){
|
$pk = new EncapsulatedPacket();
|
||||||
|
$pk->buffer = $packet->buffer;
|
||||||
|
$pk->reliability = PacketReliability::RELIABLE_ORDERED;
|
||||||
|
$pk->orderChannel = 0;
|
||||||
|
|
||||||
|
if($needACK === true){
|
||||||
|
$pk->identifierACK = $this->identifiersACK[$identifier]++;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(!isset($packet->__encapsulatedPacket)){
|
||||||
|
$packet->__encapsulatedPacket = new CachedEncapsulatedPacket;
|
||||||
|
$packet->__encapsulatedPacket->identifierACK = null;
|
||||||
|
$packet->__encapsulatedPacket->buffer = $packet->buffer; // #blameshoghi
|
||||||
|
$packet->__encapsulatedPacket->reliability = PacketReliability::RELIABLE_ORDERED;
|
||||||
|
$packet->__encapsulatedPacket->orderChannel = 0;
|
||||||
|
}
|
||||||
|
$pk = $packet->__encapsulatedPacket;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->interface->sendEncapsulated($identifier, $pk, ($needACK === true ? RakLib::FLAG_NEED_ACK : 0) | ($immediate === true ? RakLib::PRIORITY_IMMEDIATE : RakLib::PRIORITY_NORMAL));
|
||||||
|
return $pk->identifierACK;
|
||||||
|
}else{
|
||||||
$this->server->batchPackets([$player], [$packet], true);
|
$this->server->batchPackets([$player], [$packet], true);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($pk === null){
|
|
||||||
$pk = new EncapsulatedPacket();
|
|
||||||
$pk->buffer = chr(0xfe) . $packet->buffer; // #blameshoghi
|
|
||||||
$pk->reliability = PacketReliability::RELIABLE_ORDERED;
|
|
||||||
$pk->orderChannel = 0;
|
|
||||||
|
|
||||||
if($needACK === true){
|
|
||||||
$pk->identifierACK = $this->identifiersACK[$identifier]++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->interface->sendEncapsulated($identifier, $pk, ($needACK === true ? RakLib::FLAG_NEED_ACK : 0) | ($immediate === true ? RakLib::PRIORITY_IMMEDIATE : RakLib::PRIORITY_NORMAL));
|
|
||||||
|
|
||||||
return $pk->identifierACK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -233,15 +230,10 @@ class RakLibInterface implements ServerInstance, AdvancedSourceInterface{
|
|||||||
|
|
||||||
private function getPacket($buffer){
|
private function getPacket($buffer){
|
||||||
$pid = ord($buffer{0});
|
$pid = ord($buffer{0});
|
||||||
$start = 1;
|
|
||||||
if($pid == 0xfe){
|
|
||||||
$pid = ord($buffer{1});
|
|
||||||
$start++;
|
|
||||||
}
|
|
||||||
if(($data = $this->network->getPacket($pid)) === null){
|
if(($data = $this->network->getPacket($pid)) === null){
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
$data->setBuffer($buffer, $start);
|
$data->setBuffer($buffer, 1);
|
||||||
|
|
||||||
return $data;
|
return $data;
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
|||||||
use pocketmine\network\mcpe\NetworkSession;
|
use pocketmine\network\mcpe\NetworkSession;
|
||||||
|
|
||||||
class BatchPacket extends DataPacket{
|
class BatchPacket extends DataPacket{
|
||||||
const NETWORK_ID = ProtocolInfo::BATCH_PACKET;
|
const NETWORK_ID = 0xfe;
|
||||||
|
|
||||||
public $payload;
|
public $payload;
|
||||||
|
|
||||||
@ -40,12 +40,12 @@ class BatchPacket extends DataPacket{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function decode(){
|
public function decode(){
|
||||||
$this->payload = $this->getString();
|
$this->payload = $this->get(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function encode(){
|
public function encode(){
|
||||||
$this->reset();
|
$this->reset();
|
||||||
$this->putString($this->payload);
|
$this->put($this->payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function handle(NetworkSession $session) : bool{
|
public function handle(NetworkSession $session) : bool{
|
||||||
@ -66,9 +66,9 @@ class BatchPacket extends DataPacket{
|
|||||||
while(!$this->feof()){
|
while(!$this->feof()){
|
||||||
$buf = $this->getString();
|
$buf = $this->getString();
|
||||||
$pk = $network->getPacket(ord($buf{0}));
|
$pk = $network->getPacket(ord($buf{0}));
|
||||||
if(!$pk->canBeBatched()){
|
/*if(!$pk->canBeBatched()){
|
||||||
throw new \InvalidArgumentException("Received invalid " . get_class($pk) . " inside BatchPacket");
|
throw new \InvalidArgumentException("Received invalid " . get_class($pk) . " inside BatchPacket");
|
||||||
}
|
}*/
|
||||||
|
|
||||||
$pk->setBuffer($buf, 1);
|
$pk->setBuffer($buf, 1);
|
||||||
$session->handleDataPacket($pk);
|
$session->handleDataPacket($pk);
|
||||||
|
@ -26,8 +26,8 @@ namespace pocketmine\network\mcpe\protocol;
|
|||||||
|
|
||||||
use pocketmine\network\mcpe\NetworkSession;
|
use pocketmine\network\mcpe\NetworkSession;
|
||||||
|
|
||||||
class PlayerFallPacket extends DataPacket{
|
class EntityFallPacket extends DataPacket{
|
||||||
const NETWORK_ID = ProtocolInfo::PLAYER_FALL_PACKET;
|
const NETWORK_ID = ProtocolInfo::ENTITY_FALL_PACKET;
|
||||||
|
|
||||||
public $fallDistance;
|
public $fallDistance;
|
||||||
|
|
||||||
@ -40,6 +40,6 @@ class PlayerFallPacket extends DataPacket{
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function handle(NetworkSession $session) : bool{
|
public function handle(NetworkSession $session) : bool{
|
||||||
return $session->handlePlayerFall($this);
|
return $session->handleEntityFall($this);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -31,74 +31,74 @@ interface ProtocolInfo{
|
|||||||
/**
|
/**
|
||||||
* Actual Minecraft: PE protocol version
|
* Actual Minecraft: PE protocol version
|
||||||
*/
|
*/
|
||||||
const CURRENT_PROTOCOL = 105;
|
const CURRENT_PROTOCOL = 110;
|
||||||
const MINECRAFT_VERSION = "v1.0.5.0 beta";
|
const MINECRAFT_VERSION = "v1.1.0.0 beta";
|
||||||
const MINECRAFT_VERSION_NETWORK = "1.0.5.0";
|
const MINECRAFT_VERSION_NETWORK = "1.1.0.0";
|
||||||
|
|
||||||
const LOGIN_PACKET = 0x01;
|
const LOGIN_PACKET = 0x01;
|
||||||
const PLAY_STATUS_PACKET = 0x02;
|
const PLAY_STATUS_PACKET = 0x02;
|
||||||
const SERVER_TO_CLIENT_HANDSHAKE_PACKET = 0x03;
|
const SERVER_TO_CLIENT_HANDSHAKE_PACKET = 0x03;
|
||||||
const CLIENT_TO_SERVER_HANDSHAKE_PACKET = 0x04;
|
const CLIENT_TO_SERVER_HANDSHAKE_PACKET = 0x04;
|
||||||
const DISCONNECT_PACKET = 0x05;
|
const DISCONNECT_PACKET = 0x05;
|
||||||
const BATCH_PACKET = 0x06;
|
const RESOURCE_PACKS_INFO_PACKET = 0x06;
|
||||||
const RESOURCE_PACKS_INFO_PACKET = 0x07;
|
const RESOURCE_PACK_STACK_PACKET = 0x07; //ResourcePacksStackPacket
|
||||||
const RESOURCE_PACK_STACK_PACKET = 0x08; //ResourcePacksStackPacket
|
const RESOURCE_PACK_CLIENT_RESPONSE_PACKET = 0x08;
|
||||||
const RESOURCE_PACK_CLIENT_RESPONSE_PACKET = 0x09;
|
const TEXT_PACKET = 0x09;
|
||||||
const TEXT_PACKET = 0x0a;
|
const SET_TIME_PACKET = 0x0a;
|
||||||
const SET_TIME_PACKET = 0x0b;
|
const START_GAME_PACKET = 0x0b;
|
||||||
const START_GAME_PACKET = 0x0c;
|
const ADD_PLAYER_PACKET = 0x0c;
|
||||||
const ADD_PLAYER_PACKET = 0x0d;
|
const ADD_ENTITY_PACKET = 0x0d;
|
||||||
const ADD_ENTITY_PACKET = 0x0e;
|
const REMOVE_ENTITY_PACKET = 0x0e;
|
||||||
const REMOVE_ENTITY_PACKET = 0x0f;
|
const ADD_ITEM_ENTITY_PACKET = 0x0f;
|
||||||
const ADD_ITEM_ENTITY_PACKET = 0x10;
|
const ADD_HANGING_ENTITY_PACKET = 0x10;
|
||||||
const ADD_HANGING_ENTITY_PACKET = 0x11;
|
const TAKE_ITEM_ENTITY_PACKET = 0x11;
|
||||||
const TAKE_ITEM_ENTITY_PACKET = 0x12;
|
const MOVE_ENTITY_PACKET = 0x12;
|
||||||
const MOVE_ENTITY_PACKET = 0x13;
|
const MOVE_PLAYER_PACKET = 0x13;
|
||||||
const MOVE_PLAYER_PACKET = 0x14;
|
const RIDER_JUMP_PACKET = 0x14;
|
||||||
const RIDER_JUMP_PACKET = 0x15;
|
const REMOVE_BLOCK_PACKET = 0x15;
|
||||||
const REMOVE_BLOCK_PACKET = 0x16;
|
const UPDATE_BLOCK_PACKET = 0x16;
|
||||||
const UPDATE_BLOCK_PACKET = 0x17;
|
const ADD_PAINTING_PACKET = 0x17;
|
||||||
const ADD_PAINTING_PACKET = 0x18;
|
const EXPLODE_PACKET = 0x18;
|
||||||
const EXPLODE_PACKET = 0x19;
|
const LEVEL_SOUND_EVENT_PACKET = 0x19;
|
||||||
const LEVEL_SOUND_EVENT_PACKET = 0x1a;
|
const LEVEL_EVENT_PACKET = 0x1a;
|
||||||
const LEVEL_EVENT_PACKET = 0x1b;
|
const BLOCK_EVENT_PACKET = 0x1b;
|
||||||
const BLOCK_EVENT_PACKET = 0x1c;
|
const ENTITY_EVENT_PACKET = 0x1c;
|
||||||
const ENTITY_EVENT_PACKET = 0x1d;
|
const MOB_EFFECT_PACKET = 0x1d;
|
||||||
const MOB_EFFECT_PACKET = 0x1e;
|
const UPDATE_ATTRIBUTES_PACKET = 0x1e;
|
||||||
const UPDATE_ATTRIBUTES_PACKET = 0x1f;
|
const MOB_EQUIPMENT_PACKET = 0x1f;
|
||||||
const MOB_EQUIPMENT_PACKET = 0x20;
|
const MOB_ARMOR_EQUIPMENT_PACKET = 0x20;
|
||||||
const MOB_ARMOR_EQUIPMENT_PACKET = 0x21;
|
const INTERACT_PACKET = 0x21;
|
||||||
const INTERACT_PACKET = 0x22;
|
const BLOCK_PICK_REQUEST_PACKET = 0x22;
|
||||||
const BLOCK_PICK_REQUEST_PACKET = 0x23;
|
const USE_ITEM_PACKET = 0x23;
|
||||||
const USE_ITEM_PACKET = 0x24;
|
const PLAYER_ACTION_PACKET = 0x24;
|
||||||
const PLAYER_ACTION_PACKET = 0x25;
|
const ENTITY_FALL_PACKET = 0x25; //PlayerFallPacket
|
||||||
const PLAYER_FALL_PACKET = 0x26;
|
const HURT_ARMOR_PACKET = 0x26;
|
||||||
const HURT_ARMOR_PACKET = 0x27;
|
const SET_ENTITY_DATA_PACKET = 0x27;
|
||||||
const SET_ENTITY_DATA_PACKET = 0x28;
|
const SET_ENTITY_MOTION_PACKET = 0x28;
|
||||||
const SET_ENTITY_MOTION_PACKET = 0x29;
|
const SET_ENTITY_LINK_PACKET = 0x29;
|
||||||
const SET_ENTITY_LINK_PACKET = 0x2a;
|
const SET_HEALTH_PACKET = 0x2a;
|
||||||
const SET_HEALTH_PACKET = 0x2b;
|
const SET_SPAWN_POSITION_PACKET = 0x2b;
|
||||||
const SET_SPAWN_POSITION_PACKET = 0x2c;
|
const ANIMATE_PACKET = 0x2c;
|
||||||
const ANIMATE_PACKET = 0x2d;
|
const RESPAWN_PACKET = 0x2d;
|
||||||
const RESPAWN_PACKET = 0x2e;
|
const DROP_ITEM_PACKET = 0x2e;
|
||||||
const DROP_ITEM_PACKET = 0x2f;
|
const INVENTORY_ACTION_PACKET = 0x2f;
|
||||||
const INVENTORY_ACTION_PACKET = 0x30;
|
const CONTAINER_OPEN_PACKET = 0x30;
|
||||||
const CONTAINER_OPEN_PACKET = 0x31;
|
const CONTAINER_CLOSE_PACKET = 0x31;
|
||||||
const CONTAINER_CLOSE_PACKET = 0x32;
|
const CONTAINER_SET_SLOT_PACKET = 0x32;
|
||||||
const CONTAINER_SET_SLOT_PACKET = 0x33;
|
const CONTAINER_SET_DATA_PACKET = 0x33;
|
||||||
const CONTAINER_SET_DATA_PACKET = 0x34;
|
const CONTAINER_SET_CONTENT_PACKET = 0x34;
|
||||||
const CONTAINER_SET_CONTENT_PACKET = 0x35;
|
const CRAFTING_DATA_PACKET = 0x35;
|
||||||
const CRAFTING_DATA_PACKET = 0x36;
|
const CRAFTING_EVENT_PACKET = 0x36;
|
||||||
const CRAFTING_EVENT_PACKET = 0x37;
|
const ADVENTURE_SETTINGS_PACKET = 0x37;
|
||||||
const ADVENTURE_SETTINGS_PACKET = 0x38;
|
const BLOCK_ENTITY_DATA_PACKET = 0x38;
|
||||||
const BLOCK_ENTITY_DATA_PACKET = 0x39;
|
const PLAYER_INPUT_PACKET = 0x39;
|
||||||
const PLAYER_INPUT_PACKET = 0x3a;
|
const FULL_CHUNK_DATA_PACKET = 0x3a;
|
||||||
const FULL_CHUNK_DATA_PACKET = 0x3b;
|
const SET_COMMANDS_ENABLED_PACKET = 0x3b;
|
||||||
const SET_COMMANDS_ENABLED_PACKET = 0x3c;
|
const SET_DIFFICULTY_PACKET = 0x3c;
|
||||||
const SET_DIFFICULTY_PACKET = 0x3d;
|
const CHANGE_DIMENSION_PACKET = 0x3d;
|
||||||
const CHANGE_DIMENSION_PACKET = 0x3e;
|
const SET_PLAYER_GAME_TYPE_PACKET = 0x3e;
|
||||||
const SET_PLAYER_GAME_TYPE_PACKET = 0x3f;
|
const PLAYER_LIST_PACKET = 0x3f;
|
||||||
const PLAYER_LIST_PACKET = 0x40;
|
const SIMPLE_EVENT_PACKET = 0x40;
|
||||||
const EVENT_PACKET = 0x41; //TelemetryEventPacket
|
const EVENT_PACKET = 0x41; //TelemetryEventPacket
|
||||||
const SPAWN_EXPERIENCE_ORB_PACKET = 0x42;
|
const SPAWN_EXPERIENCE_ORB_PACKET = 0x42;
|
||||||
const CLIENTBOUND_MAP_ITEM_DATA_PACKET = 0x43; //MapItemDataPacket
|
const CLIENTBOUND_MAP_ITEM_DATA_PACKET = 0x43; //MapItemDataPacket
|
||||||
@ -116,12 +116,15 @@ interface ProtocolInfo{
|
|||||||
const COMMAND_STEP_PACKET = 0x4f;
|
const COMMAND_STEP_PACKET = 0x4f;
|
||||||
const COMMAND_BLOCK_UPDATE_PACKET = 0x50;
|
const COMMAND_BLOCK_UPDATE_PACKET = 0x50;
|
||||||
const UPDATE_TRADE_PACKET = 0x51;
|
const UPDATE_TRADE_PACKET = 0x51;
|
||||||
const RESOURCE_PACK_DATA_INFO_PACKET = 0x52;
|
const UPDATE_EQUIP_PACKET = 0x52;
|
||||||
const RESOURCE_PACK_CHUNK_DATA_PACKET = 0x53;
|
const RESOURCE_PACK_DATA_INFO_PACKET = 0x53;
|
||||||
const RESOURCE_PACK_CHUNK_REQUEST_PACKET = 0x54;
|
const RESOURCE_PACK_CHUNK_DATA_PACKET = 0x54;
|
||||||
const TRANSFER_PACKET = 0x55;
|
const RESOURCE_PACK_CHUNK_REQUEST_PACKET = 0x55;
|
||||||
const PLAY_SOUND_PACKET = 0x56;
|
const TRANSFER_PACKET = 0x56;
|
||||||
const STOP_SOUND_PACKET = 0x57;
|
const PLAY_SOUND_PACKET = 0x57;
|
||||||
const SET_TITLE_PACKET = 0x58;
|
const STOP_SOUND_PACKET = 0x58;
|
||||||
|
const SET_TITLE_PACKET = 0x59;
|
||||||
|
const ADD_BEHAVIOR_TREE_PACKET = 0x5a;
|
||||||
|
const STRUCTURE_BLOCK_UPDATE_PACKET = 0x5b;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user