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\MovePlayerPacket;
|
||||
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\PlayerListPacket;
|
||||
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
|
||||
@ -2735,7 +2735,7 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
|
||||
return true;
|
||||
}
|
||||
|
||||
public function handlePlayerFall(PlayerFallPacket $packet) : bool{
|
||||
public function handleEntityFall(EntityFallPacket $packet) : bool{
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -3318,7 +3318,7 @@ class Player extends Human implements CommandSender, InventoryHolder, ChunkLoade
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -69,7 +69,7 @@ use pocketmine\network\mcpe\protocol\MobEquipmentPacket;
|
||||
use pocketmine\network\mcpe\protocol\MoveEntityPacket;
|
||||
use pocketmine\network\mcpe\protocol\MovePlayerPacket;
|
||||
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\PlayerListPacket;
|
||||
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
|
||||
@ -285,7 +285,7 @@ class Network{
|
||||
$this->registerPacket(ProtocolInfo::ADVENTURE_SETTINGS_PACKET, AdventureSettingsPacket::class);
|
||||
$this->registerPacket(ProtocolInfo::ANIMATE_PACKET, AnimatePacket::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_EVENT_PACKET, BlockEventPacket::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::DROP_ITEM_PACKET, DropItemPacket::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::FULL_CHUNK_DATA_PACKET, FullChunkDataPacket::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_PLAYER_PACKET, MovePlayerPacket::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_LIST_PACKET, PlayerListPacket::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\MovePlayerPacket;
|
||||
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\PlayerListPacket;
|
||||
use pocketmine\network\mcpe\protocol\PlaySoundPacket;
|
||||
@ -191,7 +191,7 @@ interface NetworkSession{
|
||||
|
||||
public function handlePlayerAction(PlayerActionPacket $packet) : bool;
|
||||
|
||||
public function handlePlayerFall(PlayerFallPacket $packet) : bool;
|
||||
public function handleEntityFall(EntityFallPacket $packet) : bool;
|
||||
|
||||
public function handleHurtArmor(HurtArmorPacket $packet) : bool;
|
||||
|
||||
|
@ -23,6 +23,7 @@ namespace pocketmine\network\mcpe;
|
||||
|
||||
use pocketmine\event\player\PlayerCreationEvent;
|
||||
use pocketmine\network\AdvancedSourceInterface;
|
||||
use pocketmine\network\mcpe\protocol\BatchPacket;
|
||||
use pocketmine\network\mcpe\protocol\DataPacket;
|
||||
use pocketmine\network\mcpe\protocol\ProtocolInfo;
|
||||
use pocketmine\network\Network;
|
||||
@ -190,42 +191,38 @@ class RakLibInterface implements ServerInstance, AdvancedSourceInterface{
|
||||
public function putPacket(Player $player, DataPacket $packet, $needACK = false, $immediate = false){
|
||||
if(isset($this->identifiers[$h = spl_object_hash($player)])){
|
||||
$identifier = $this->identifiers[$h];
|
||||
$pk = null;
|
||||
if(!$packet->isEncoded){
|
||||
$packet->encode();
|
||||
$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()
|
||||
and Network::$BATCH_THRESHOLD >= 0
|
||||
and strlen($packet->buffer) >= Network::$BATCH_THRESHOLD){
|
||||
if($packet instanceof BatchPacket){
|
||||
if($needACK){
|
||||
$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);
|
||||
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;
|
||||
@ -233,15 +230,10 @@ class RakLibInterface implements ServerInstance, AdvancedSourceInterface{
|
||||
|
||||
private function getPacket($buffer){
|
||||
$pid = ord($buffer{0});
|
||||
$start = 1;
|
||||
if($pid == 0xfe){
|
||||
$pid = ord($buffer{1});
|
||||
$start++;
|
||||
}
|
||||
if(($data = $this->network->getPacket($pid)) === null){
|
||||
return null;
|
||||
}
|
||||
$data->setBuffer($buffer, $start);
|
||||
$data->setBuffer($buffer, 1);
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\mcpe\NetworkSession;
|
||||
|
||||
class BatchPacket extends DataPacket{
|
||||
const NETWORK_ID = ProtocolInfo::BATCH_PACKET;
|
||||
const NETWORK_ID = 0xfe;
|
||||
|
||||
public $payload;
|
||||
|
||||
@ -40,12 +40,12 @@ class BatchPacket extends DataPacket{
|
||||
}
|
||||
|
||||
public function decode(){
|
||||
$this->payload = $this->getString();
|
||||
$this->payload = $this->get(true);
|
||||
}
|
||||
|
||||
public function encode(){
|
||||
$this->reset();
|
||||
$this->putString($this->payload);
|
||||
$this->put($this->payload);
|
||||
}
|
||||
|
||||
public function handle(NetworkSession $session) : bool{
|
||||
@ -66,9 +66,9 @@ class BatchPacket extends DataPacket{
|
||||
while(!$this->feof()){
|
||||
$buf = $this->getString();
|
||||
$pk = $network->getPacket(ord($buf{0}));
|
||||
if(!$pk->canBeBatched()){
|
||||
/*if(!$pk->canBeBatched()){
|
||||
throw new \InvalidArgumentException("Received invalid " . get_class($pk) . " inside BatchPacket");
|
||||
}
|
||||
}*/
|
||||
|
||||
$pk->setBuffer($buf, 1);
|
||||
$session->handleDataPacket($pk);
|
||||
|
@ -26,8 +26,8 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\NetworkSession;
|
||||
|
||||
class PlayerFallPacket extends DataPacket{
|
||||
const NETWORK_ID = ProtocolInfo::PLAYER_FALL_PACKET;
|
||||
class EntityFallPacket extends DataPacket{
|
||||
const NETWORK_ID = ProtocolInfo::ENTITY_FALL_PACKET;
|
||||
|
||||
public $fallDistance;
|
||||
|
||||
@ -40,6 +40,6 @@ class PlayerFallPacket extends DataPacket{
|
||||
}
|
||||
|
||||
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
|
||||
*/
|
||||
const CURRENT_PROTOCOL = 105;
|
||||
const MINECRAFT_VERSION = "v1.0.5.0 beta";
|
||||
const MINECRAFT_VERSION_NETWORK = "1.0.5.0";
|
||||
const CURRENT_PROTOCOL = 110;
|
||||
const MINECRAFT_VERSION = "v1.1.0.0 beta";
|
||||
const MINECRAFT_VERSION_NETWORK = "1.1.0.0";
|
||||
|
||||
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 RESOURCE_PACKS_INFO_PACKET = 0x07;
|
||||
const RESOURCE_PACK_STACK_PACKET = 0x08; //ResourcePacksStackPacket
|
||||
const RESOURCE_PACK_CLIENT_RESPONSE_PACKET = 0x09;
|
||||
const TEXT_PACKET = 0x0a;
|
||||
const SET_TIME_PACKET = 0x0b;
|
||||
const START_GAME_PACKET = 0x0c;
|
||||
const ADD_PLAYER_PACKET = 0x0d;
|
||||
const ADD_ENTITY_PACKET = 0x0e;
|
||||
const REMOVE_ENTITY_PACKET = 0x0f;
|
||||
const ADD_ITEM_ENTITY_PACKET = 0x10;
|
||||
const ADD_HANGING_ENTITY_PACKET = 0x11;
|
||||
const TAKE_ITEM_ENTITY_PACKET = 0x12;
|
||||
const MOVE_ENTITY_PACKET = 0x13;
|
||||
const MOVE_PLAYER_PACKET = 0x14;
|
||||
const RIDER_JUMP_PACKET = 0x15;
|
||||
const REMOVE_BLOCK_PACKET = 0x16;
|
||||
const UPDATE_BLOCK_PACKET = 0x17;
|
||||
const ADD_PAINTING_PACKET = 0x18;
|
||||
const EXPLODE_PACKET = 0x19;
|
||||
const LEVEL_SOUND_EVENT_PACKET = 0x1a;
|
||||
const LEVEL_EVENT_PACKET = 0x1b;
|
||||
const BLOCK_EVENT_PACKET = 0x1c;
|
||||
const ENTITY_EVENT_PACKET = 0x1d;
|
||||
const MOB_EFFECT_PACKET = 0x1e;
|
||||
const UPDATE_ATTRIBUTES_PACKET = 0x1f;
|
||||
const MOB_EQUIPMENT_PACKET = 0x20;
|
||||
const MOB_ARMOR_EQUIPMENT_PACKET = 0x21;
|
||||
const INTERACT_PACKET = 0x22;
|
||||
const BLOCK_PICK_REQUEST_PACKET = 0x23;
|
||||
const USE_ITEM_PACKET = 0x24;
|
||||
const PLAYER_ACTION_PACKET = 0x25;
|
||||
const PLAYER_FALL_PACKET = 0x26;
|
||||
const HURT_ARMOR_PACKET = 0x27;
|
||||
const SET_ENTITY_DATA_PACKET = 0x28;
|
||||
const SET_ENTITY_MOTION_PACKET = 0x29;
|
||||
const SET_ENTITY_LINK_PACKET = 0x2a;
|
||||
const SET_HEALTH_PACKET = 0x2b;
|
||||
const SET_SPAWN_POSITION_PACKET = 0x2c;
|
||||
const ANIMATE_PACKET = 0x2d;
|
||||
const RESPAWN_PACKET = 0x2e;
|
||||
const DROP_ITEM_PACKET = 0x2f;
|
||||
const INVENTORY_ACTION_PACKET = 0x30;
|
||||
const CONTAINER_OPEN_PACKET = 0x31;
|
||||
const CONTAINER_CLOSE_PACKET = 0x32;
|
||||
const CONTAINER_SET_SLOT_PACKET = 0x33;
|
||||
const CONTAINER_SET_DATA_PACKET = 0x34;
|
||||
const CONTAINER_SET_CONTENT_PACKET = 0x35;
|
||||
const CRAFTING_DATA_PACKET = 0x36;
|
||||
const CRAFTING_EVENT_PACKET = 0x37;
|
||||
const ADVENTURE_SETTINGS_PACKET = 0x38;
|
||||
const BLOCK_ENTITY_DATA_PACKET = 0x39;
|
||||
const PLAYER_INPUT_PACKET = 0x3a;
|
||||
const FULL_CHUNK_DATA_PACKET = 0x3b;
|
||||
const SET_COMMANDS_ENABLED_PACKET = 0x3c;
|
||||
const SET_DIFFICULTY_PACKET = 0x3d;
|
||||
const CHANGE_DIMENSION_PACKET = 0x3e;
|
||||
const SET_PLAYER_GAME_TYPE_PACKET = 0x3f;
|
||||
const PLAYER_LIST_PACKET = 0x40;
|
||||
const RESOURCE_PACKS_INFO_PACKET = 0x06;
|
||||
const RESOURCE_PACK_STACK_PACKET = 0x07; //ResourcePacksStackPacket
|
||||
const RESOURCE_PACK_CLIENT_RESPONSE_PACKET = 0x08;
|
||||
const TEXT_PACKET = 0x09;
|
||||
const SET_TIME_PACKET = 0x0a;
|
||||
const START_GAME_PACKET = 0x0b;
|
||||
const ADD_PLAYER_PACKET = 0x0c;
|
||||
const ADD_ENTITY_PACKET = 0x0d;
|
||||
const REMOVE_ENTITY_PACKET = 0x0e;
|
||||
const ADD_ITEM_ENTITY_PACKET = 0x0f;
|
||||
const ADD_HANGING_ENTITY_PACKET = 0x10;
|
||||
const TAKE_ITEM_ENTITY_PACKET = 0x11;
|
||||
const MOVE_ENTITY_PACKET = 0x12;
|
||||
const MOVE_PLAYER_PACKET = 0x13;
|
||||
const RIDER_JUMP_PACKET = 0x14;
|
||||
const REMOVE_BLOCK_PACKET = 0x15;
|
||||
const UPDATE_BLOCK_PACKET = 0x16;
|
||||
const ADD_PAINTING_PACKET = 0x17;
|
||||
const EXPLODE_PACKET = 0x18;
|
||||
const LEVEL_SOUND_EVENT_PACKET = 0x19;
|
||||
const LEVEL_EVENT_PACKET = 0x1a;
|
||||
const BLOCK_EVENT_PACKET = 0x1b;
|
||||
const ENTITY_EVENT_PACKET = 0x1c;
|
||||
const MOB_EFFECT_PACKET = 0x1d;
|
||||
const UPDATE_ATTRIBUTES_PACKET = 0x1e;
|
||||
const MOB_EQUIPMENT_PACKET = 0x1f;
|
||||
const MOB_ARMOR_EQUIPMENT_PACKET = 0x20;
|
||||
const INTERACT_PACKET = 0x21;
|
||||
const BLOCK_PICK_REQUEST_PACKET = 0x22;
|
||||
const USE_ITEM_PACKET = 0x23;
|
||||
const PLAYER_ACTION_PACKET = 0x24;
|
||||
const ENTITY_FALL_PACKET = 0x25; //PlayerFallPacket
|
||||
const HURT_ARMOR_PACKET = 0x26;
|
||||
const SET_ENTITY_DATA_PACKET = 0x27;
|
||||
const SET_ENTITY_MOTION_PACKET = 0x28;
|
||||
const SET_ENTITY_LINK_PACKET = 0x29;
|
||||
const SET_HEALTH_PACKET = 0x2a;
|
||||
const SET_SPAWN_POSITION_PACKET = 0x2b;
|
||||
const ANIMATE_PACKET = 0x2c;
|
||||
const RESPAWN_PACKET = 0x2d;
|
||||
const DROP_ITEM_PACKET = 0x2e;
|
||||
const INVENTORY_ACTION_PACKET = 0x2f;
|
||||
const CONTAINER_OPEN_PACKET = 0x30;
|
||||
const CONTAINER_CLOSE_PACKET = 0x31;
|
||||
const CONTAINER_SET_SLOT_PACKET = 0x32;
|
||||
const CONTAINER_SET_DATA_PACKET = 0x33;
|
||||
const CONTAINER_SET_CONTENT_PACKET = 0x34;
|
||||
const CRAFTING_DATA_PACKET = 0x35;
|
||||
const CRAFTING_EVENT_PACKET = 0x36;
|
||||
const ADVENTURE_SETTINGS_PACKET = 0x37;
|
||||
const BLOCK_ENTITY_DATA_PACKET = 0x38;
|
||||
const PLAYER_INPUT_PACKET = 0x39;
|
||||
const FULL_CHUNK_DATA_PACKET = 0x3a;
|
||||
const SET_COMMANDS_ENABLED_PACKET = 0x3b;
|
||||
const SET_DIFFICULTY_PACKET = 0x3c;
|
||||
const CHANGE_DIMENSION_PACKET = 0x3d;
|
||||
const SET_PLAYER_GAME_TYPE_PACKET = 0x3e;
|
||||
const PLAYER_LIST_PACKET = 0x3f;
|
||||
const SIMPLE_EVENT_PACKET = 0x40;
|
||||
const EVENT_PACKET = 0x41; //TelemetryEventPacket
|
||||
const SPAWN_EXPERIENCE_ORB_PACKET = 0x42;
|
||||
const CLIENTBOUND_MAP_ITEM_DATA_PACKET = 0x43; //MapItemDataPacket
|
||||
@ -116,12 +116,15 @@ interface ProtocolInfo{
|
||||
const COMMAND_STEP_PACKET = 0x4f;
|
||||
const COMMAND_BLOCK_UPDATE_PACKET = 0x50;
|
||||
const UPDATE_TRADE_PACKET = 0x51;
|
||||
const RESOURCE_PACK_DATA_INFO_PACKET = 0x52;
|
||||
const RESOURCE_PACK_CHUNK_DATA_PACKET = 0x53;
|
||||
const RESOURCE_PACK_CHUNK_REQUEST_PACKET = 0x54;
|
||||
const TRANSFER_PACKET = 0x55;
|
||||
const PLAY_SOUND_PACKET = 0x56;
|
||||
const STOP_SOUND_PACKET = 0x57;
|
||||
const SET_TITLE_PACKET = 0x58;
|
||||
const UPDATE_EQUIP_PACKET = 0x52;
|
||||
const RESOURCE_PACK_DATA_INFO_PACKET = 0x53;
|
||||
const RESOURCE_PACK_CHUNK_DATA_PACKET = 0x54;
|
||||
const RESOURCE_PACK_CHUNK_REQUEST_PACKET = 0x55;
|
||||
const TRANSFER_PACKET = 0x56;
|
||||
const PLAY_SOUND_PACKET = 0x57;
|
||||
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