mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 16:51:42 +00:00
Add restrictions on packet send directions with interfaces
This prevents plugins sending wrong packets at the compiler level (or would, if we had a compiler). It's more robust than a getter for client/server and throwing an exception since a static analysis tool can detect faults created by sending wrong packets from the server. This is also used to deny service to dodgy clients which send wrong packets to the server to attack it.
This commit is contained in:
parent
b82e00ffdf
commit
76f1ee1827
@ -103,6 +103,7 @@ use pocketmine\network\mcpe\protocol\AvailableCommandsPacket;
|
||||
use pocketmine\network\mcpe\protocol\BlockEntityDataPacket;
|
||||
use pocketmine\network\mcpe\protocol\BookEditPacket;
|
||||
use pocketmine\network\mcpe\protocol\ChunkRadiusUpdatedPacket;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
use pocketmine\network\mcpe\protocol\EntityEventPacket;
|
||||
use pocketmine\network\mcpe\protocol\ItemFrameDropItemPacket;
|
||||
use pocketmine\network\mcpe\protocol\LevelEventPacket;
|
||||
@ -112,7 +113,6 @@ use pocketmine\network\mcpe\protocol\MobEffectPacket;
|
||||
use pocketmine\network\mcpe\protocol\ModalFormRequestPacket;
|
||||
use pocketmine\network\mcpe\protocol\MovePlayerPacket;
|
||||
use pocketmine\network\mcpe\protocol\NetworkChunkPublisherUpdatePacket;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\SetPlayerGameTypePacket;
|
||||
use pocketmine\network\mcpe\protocol\SetSpawnPositionPacket;
|
||||
use pocketmine\network\mcpe\protocol\SetTitlePacket;
|
||||
@ -2546,12 +2546,12 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Packet $packet
|
||||
* @param bool $immediate
|
||||
* @param ClientboundPacket $packet
|
||||
* @param bool $immediate
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function sendDataPacket(Packet $packet, bool $immediate = false) : bool{
|
||||
public function sendDataPacket(ClientboundPacket $packet, bool $immediate = false) : bool{
|
||||
if(!$this->isConnected()){
|
||||
return false;
|
||||
}
|
||||
@ -2568,11 +2568,11 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
* @deprecated This is a proxy for sendDataPacket() and will be removed in the next major release.
|
||||
* @see Player::sendDataPacket()
|
||||
*
|
||||
* @param Packet $packet
|
||||
* @param ClientboundPacket $packet
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function dataPacket(Packet $packet) : bool{
|
||||
public function dataPacket(ClientboundPacket $packet) : bool{
|
||||
return $this->sendDataPacket($packet, false);
|
||||
}
|
||||
|
||||
|
@ -75,7 +75,7 @@ use pocketmine\network\mcpe\NetworkCipher;
|
||||
use pocketmine\network\mcpe\NetworkCompression;
|
||||
use pocketmine\network\mcpe\NetworkSession;
|
||||
use pocketmine\network\mcpe\PacketStream;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
use pocketmine\network\mcpe\protocol\PlayerListPacket;
|
||||
use pocketmine\network\mcpe\protocol\ProtocolInfo;
|
||||
use pocketmine\network\mcpe\protocol\types\PlayerListEntry;
|
||||
@ -1535,18 +1535,18 @@ class Server{
|
||||
/**
|
||||
* Broadcasts a Minecraft packet to a list of players
|
||||
*
|
||||
* @param Player[] $players
|
||||
* @param Packet $packet
|
||||
* @param Player[] $players
|
||||
* @param ClientboundPacket $packet
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function broadcastPacket(array $players, Packet $packet) : bool{
|
||||
public function broadcastPacket(array $players, ClientboundPacket $packet) : bool{
|
||||
return $this->broadcastPackets($players, [$packet]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Player[] $players
|
||||
* @param Packet[] $packets
|
||||
* @param Player[] $players
|
||||
* @param ClientboundPacket[] $packets
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
|
@ -25,7 +25,7 @@ namespace pocketmine\event\server;
|
||||
|
||||
use pocketmine\event\Cancellable;
|
||||
use pocketmine\event\CancellableTrait;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
use pocketmine\Player;
|
||||
|
||||
/**
|
||||
@ -36,12 +36,12 @@ class DataPacketBroadcastEvent extends ServerEvent implements Cancellable{
|
||||
|
||||
/** @var Player[] */
|
||||
private $players;
|
||||
/** @var Packet[] */
|
||||
/** @var ClientboundPacket[] */
|
||||
private $packets;
|
||||
|
||||
/**
|
||||
* @param Player[] $players
|
||||
* @param Packet[] $packets
|
||||
* @param Player[] $players
|
||||
* @param ClientboundPacket[] $packets
|
||||
*/
|
||||
public function __construct(array $players, array $packets){
|
||||
$this->players = $players;
|
||||
@ -63,14 +63,14 @@ class DataPacketBroadcastEvent extends ServerEvent implements Cancellable{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Packet[]
|
||||
* @return ClientboundPacket[]
|
||||
*/
|
||||
public function getPackets() : array{
|
||||
return $this->packets;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param Packet[] $packets
|
||||
* @param ClientboundPacket[] $packets
|
||||
*/
|
||||
public function setPackets(array $packets) : void{
|
||||
$this->packets = $packets;
|
||||
|
@ -25,30 +25,30 @@ namespace pocketmine\event\server;
|
||||
|
||||
use pocketmine\event\Cancellable;
|
||||
use pocketmine\event\CancellableTrait;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\ServerboundPacket;
|
||||
use pocketmine\Player;
|
||||
|
||||
class DataPacketReceiveEvent extends ServerEvent implements Cancellable{
|
||||
use CancellableTrait;
|
||||
|
||||
/** @var Packet */
|
||||
/** @var ServerboundPacket */
|
||||
private $packet;
|
||||
/** @var Player */
|
||||
private $player;
|
||||
|
||||
/**
|
||||
* @param Player $player
|
||||
* @param Packet $packet
|
||||
* @param Player $player
|
||||
* @param ServerboundPacket $packet
|
||||
*/
|
||||
public function __construct(Player $player, Packet $packet){
|
||||
public function __construct(Player $player, ServerboundPacket $packet){
|
||||
$this->packet = $packet;
|
||||
$this->player = $player;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Packet
|
||||
* @return ServerboundPacket
|
||||
*/
|
||||
public function getPacket() : Packet{
|
||||
public function getPacket() : ServerboundPacket{
|
||||
return $this->packet;
|
||||
}
|
||||
|
||||
|
@ -25,30 +25,30 @@ namespace pocketmine\event\server;
|
||||
|
||||
use pocketmine\event\Cancellable;
|
||||
use pocketmine\event\CancellableTrait;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
use pocketmine\Player;
|
||||
|
||||
class DataPacketSendEvent extends ServerEvent implements Cancellable{
|
||||
use CancellableTrait;
|
||||
|
||||
/** @var Packet */
|
||||
/** @var ClientboundPacket */
|
||||
private $packet;
|
||||
/** @var Player */
|
||||
private $player;
|
||||
|
||||
/**
|
||||
* @param Player $player
|
||||
* @param Packet $packet
|
||||
* @param Player $player
|
||||
* @param ClientboundPacket $packet
|
||||
*/
|
||||
public function __construct(Player $player, Packet $packet){
|
||||
public function __construct(Player $player, ClientboundPacket $packet){
|
||||
$this->packet = $packet;
|
||||
$this->player = $player;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Packet
|
||||
* @return ClientboundPacket
|
||||
*/
|
||||
public function getPacket() : Packet{
|
||||
public function getPacket() : ClientboundPacket{
|
||||
return $this->packet;
|
||||
}
|
||||
|
||||
|
@ -73,9 +73,9 @@ use pocketmine\nbt\tag\StringTag;
|
||||
use pocketmine\network\mcpe\ChunkRequestTask;
|
||||
use pocketmine\network\mcpe\CompressBatchPromise;
|
||||
use pocketmine\network\mcpe\protocol\AddEntityPacket;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
use pocketmine\network\mcpe\protocol\LevelEventPacket;
|
||||
use pocketmine\network\mcpe\protocol\LevelSoundEventPacket;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\SetDifficultyPacket;
|
||||
use pocketmine\network\mcpe\protocol\SetTimePacket;
|
||||
use pocketmine\network\mcpe\protocol\UpdateBlockPacket;
|
||||
@ -180,9 +180,9 @@ class Level implements ChunkManager, Metadatable{
|
||||
/** @var Player[][] */
|
||||
private $playerLoaders = [];
|
||||
|
||||
/** @var Packet[][] */
|
||||
/** @var ClientboundPacket[][] */
|
||||
private $chunkPackets = [];
|
||||
/** @var Packet[] */
|
||||
/** @var ClientboundPacket[] */
|
||||
private $globalPackets = [];
|
||||
|
||||
/** @var float[] */
|
||||
@ -598,11 +598,11 @@ class Level implements ChunkManager, Metadatable{
|
||||
* Queues a packet to be sent to all players using the chunk at the specified X/Z coordinates at the end of the
|
||||
* current tick.
|
||||
*
|
||||
* @param int $chunkX
|
||||
* @param int $chunkZ
|
||||
* @param Packet $packet
|
||||
* @param int $chunkX
|
||||
* @param int $chunkZ
|
||||
* @param ClientboundPacket $packet
|
||||
*/
|
||||
public function addChunkPacket(int $chunkX, int $chunkZ, Packet $packet){
|
||||
public function addChunkPacket(int $chunkX, int $chunkZ, ClientboundPacket $packet){
|
||||
if(!isset($this->chunkPackets[$index = Level::chunkHash($chunkX, $chunkZ)])){
|
||||
$this->chunkPackets[$index] = [$packet];
|
||||
}else{
|
||||
@ -613,19 +613,19 @@ class Level implements ChunkManager, Metadatable{
|
||||
/**
|
||||
* Broadcasts a packet to every player who has the target position within their view distance.
|
||||
*
|
||||
* @param Vector3 $pos
|
||||
* @param Packet $packet
|
||||
* @param Vector3 $pos
|
||||
* @param ClientboundPacket $packet
|
||||
*/
|
||||
public function broadcastPacketToViewers(Vector3 $pos, Packet $packet) : void{
|
||||
public function broadcastPacketToViewers(Vector3 $pos, ClientboundPacket $packet) : void{
|
||||
$this->addChunkPacket($pos->getFloorX() >> 4, $pos->getFloorZ() >> 4, $packet);
|
||||
}
|
||||
|
||||
/**
|
||||
* Broadcasts a packet to every player in the level.
|
||||
*
|
||||
* @param Packet $packet
|
||||
* @param ClientboundPacket $packet
|
||||
*/
|
||||
public function broadcastGlobalPacket(Packet $packet) : void{
|
||||
public function broadcastGlobalPacket(ClientboundPacket $packet) : void{
|
||||
$this->globalPackets[] = $packet;
|
||||
}
|
||||
|
||||
|
@ -24,7 +24,7 @@ declare(strict_types=1);
|
||||
namespace pocketmine\level\particle;
|
||||
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
|
||||
abstract class Particle{
|
||||
|
||||
@ -86,7 +86,7 @@ abstract class Particle{
|
||||
/**
|
||||
* @param Vector3 $pos
|
||||
*
|
||||
* @return Packet|Packet[]
|
||||
* @return ClientboundPacket|ClientboundPacket[]
|
||||
*/
|
||||
abstract public function encode(Vector3 $pos);
|
||||
|
||||
|
@ -24,14 +24,14 @@ declare(strict_types=1);
|
||||
namespace pocketmine\level\sound;
|
||||
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
|
||||
abstract class Sound{
|
||||
|
||||
/**
|
||||
* @param Vector3 $pos
|
||||
*
|
||||
* @return Packet|Packet[]
|
||||
* @return ClientboundPacket|ClientboundPacket[]
|
||||
*/
|
||||
abstract public function encode(Vector3 $pos);
|
||||
|
||||
|
@ -34,10 +34,12 @@ use pocketmine\network\mcpe\handler\PreSpawnSessionHandler;
|
||||
use pocketmine\network\mcpe\handler\ResourcePacksSessionHandler;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\network\mcpe\handler\SimpleSessionHandler;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
use pocketmine\network\mcpe\protocol\DisconnectPacket;
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\PacketPool;
|
||||
use pocketmine\network\mcpe\protocol\PlayStatusPacket;
|
||||
use pocketmine\network\mcpe\protocol\ServerboundPacket;
|
||||
use pocketmine\network\mcpe\protocol\ServerToClientHandshakePacket;
|
||||
use pocketmine\network\NetworkInterface;
|
||||
use pocketmine\Player;
|
||||
@ -214,6 +216,10 @@ class NetworkSession{
|
||||
* @throws BadPacketException
|
||||
*/
|
||||
public function handleDataPacket(Packet $packet) : void{
|
||||
if(!($packet instanceof ServerboundPacket)){
|
||||
throw new BadPacketException("Unexpected non-serverbound packet " . $packet->getName());
|
||||
}
|
||||
|
||||
$timings = Timings::getReceiveDataPacketTimings($packet);
|
||||
$timings->startTiming();
|
||||
|
||||
@ -237,7 +243,7 @@ class NetworkSession{
|
||||
$timings->stopTiming();
|
||||
}
|
||||
|
||||
public function sendDataPacket(Packet $packet, bool $immediate = false) : bool{
|
||||
public function sendDataPacket(ClientboundPacket $packet, bool $immediate = false) : bool{
|
||||
$timings = Timings::getSendDataPacketTimings($packet);
|
||||
$timings->startTiming();
|
||||
try{
|
||||
@ -260,9 +266,9 @@ class NetworkSession{
|
||||
|
||||
/**
|
||||
* @internal
|
||||
* @param Packet $packet
|
||||
* @param ClientboundPacket $packet
|
||||
*/
|
||||
public function addToSendBuffer(Packet $packet) : void{
|
||||
public function addToSendBuffer(ClientboundPacket $packet) : void{
|
||||
$timings = Timings::getSendDataPacketTimings($packet);
|
||||
$timings->startTiming();
|
||||
try{
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class AddBehaviorTreePacket extends DataPacket{
|
||||
class AddBehaviorTreePacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ADD_BEHAVIOR_TREE_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -34,7 +34,7 @@ use pocketmine\network\mcpe\protocol\types\EntityLink;
|
||||
use function array_search;
|
||||
use function count;
|
||||
|
||||
class AddEntityPacket extends DataPacket{
|
||||
class AddEntityPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ADD_ENTITY_PACKET;
|
||||
|
||||
/*
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class AddHangingEntityPacket extends DataPacket{
|
||||
class AddHangingEntityPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ADD_HANGING_ENTITY_PACKET;
|
||||
|
||||
/** @var int|null */
|
||||
|
@ -29,7 +29,7 @@ use pocketmine\item\Item;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class AddItemEntityPacket extends DataPacket{
|
||||
class AddItemEntityPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ADD_ITEM_ENTITY_PACKET;
|
||||
|
||||
/** @var int|null */
|
||||
|
@ -32,7 +32,7 @@ use pocketmine\network\mcpe\protocol\types\EntityLink;
|
||||
use pocketmine\utils\UUID;
|
||||
use function count;
|
||||
|
||||
class AddPlayerPacket extends DataPacket{
|
||||
class AddPlayerPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ADD_PLAYER_PACKET;
|
||||
|
||||
/** @var UUID */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\network\mcpe\protocol\types\PlayerPermissions;
|
||||
|
||||
class AdventureSettingsPacket extends DataPacket{
|
||||
class AdventureSettingsPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ADVENTURE_SETTINGS_PACKET;
|
||||
|
||||
public const PERMISSION_NORMAL = 0;
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class AnimatePacket extends DataPacket{
|
||||
class AnimatePacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ANIMATE_PACKET;
|
||||
|
||||
public const ACTION_SWING_ARM = 1;
|
||||
|
@ -39,7 +39,7 @@ use function array_values;
|
||||
use function count;
|
||||
use function dechex;
|
||||
|
||||
class AvailableCommandsPacket extends DataPacket{
|
||||
class AvailableCommandsPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::AVAILABLE_COMMANDS_PACKET;
|
||||
|
||||
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use function base64_decode;
|
||||
|
||||
class AvailableEntityIdentifiersPacket extends DataPacket{
|
||||
class AvailableEntityIdentifiersPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::AVAILABLE_ENTITY_IDENTIFIERS_PACKET;
|
||||
|
||||
/**
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class BiomeDefinitionListPacket extends DataPacket{
|
||||
class BiomeDefinitionListPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::BIOME_DEFINITION_LIST_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class BlockEntityDataPacket extends DataPacket{
|
||||
class BlockEntityDataPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::BLOCK_ENTITY_DATA_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class BlockEventPacket extends DataPacket{
|
||||
class BlockEventPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::BLOCK_EVENT_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class BlockPickRequestPacket extends DataPacket{
|
||||
class BlockPickRequestPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::BLOCK_PICK_REQUEST_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\BadPacketException;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class BookEditPacket extends DataPacket{
|
||||
class BookEditPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::BOOK_EDIT_PACKET;
|
||||
|
||||
public const TYPE_REPLACE_PAGE = 0;
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class BossEventPacket extends DataPacket{
|
||||
class BossEventPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::BOSS_EVENT_PACKET;
|
||||
|
||||
/* S2C: Shows the boss-bar to the player. */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class CameraPacket extends DataPacket{
|
||||
class CameraPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CAMERA_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ChangeDimensionPacket extends DataPacket{
|
||||
class ChangeDimensionPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CHANGE_DIMENSION_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ChunkRadiusUpdatedPacket extends DataPacket{
|
||||
class ChunkRadiusUpdatedPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CHUNK_RADIUS_UPDATED_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ClientToServerHandshakePacket extends DataPacket{
|
||||
class ClientToServerHandshakePacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CLIENT_TO_SERVER_HANDSHAKE_PACKET;
|
||||
|
||||
public function canBeSentBeforeLogin() : bool{
|
||||
|
@ -35,7 +35,7 @@ use pocketmine\utils\Color;
|
||||
use function assert;
|
||||
use function count;
|
||||
|
||||
class ClientboundMapItemDataPacket extends DataPacket{
|
||||
class ClientboundMapItemDataPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CLIENTBOUND_MAP_ITEM_DATA_PACKET;
|
||||
|
||||
public const BITFLAG_TEXTURE_UPDATE = 0x02;
|
||||
|
28
src/pocketmine/network/mcpe/protocol/ClientboundPacket.php
Normal file
28
src/pocketmine/network/mcpe/protocol/ClientboundPacket.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
*
|
||||
* ____ _ _ __ __ _ __ __ ____
|
||||
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
||||
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
||||
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
||||
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* @author PocketMine Team
|
||||
* @link http://www.pocketmine.net/
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
interface ClientboundPacket extends Packet{
|
||||
|
||||
}
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class CommandBlockUpdatePacket extends DataPacket{
|
||||
class CommandBlockUpdatePacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::COMMAND_BLOCK_UPDATE_PACKET;
|
||||
|
||||
/** @var bool */
|
||||
|
@ -31,7 +31,7 @@ use pocketmine\network\mcpe\protocol\types\CommandOutputMessage;
|
||||
use pocketmine\utils\BinaryDataException;
|
||||
use function count;
|
||||
|
||||
class CommandOutputPacket extends DataPacket{
|
||||
class CommandOutputPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::COMMAND_OUTPUT_PACKET;
|
||||
|
||||
/** @var CommandOriginData */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\network\mcpe\protocol\types\CommandOriginData;
|
||||
|
||||
class CommandRequestPacket extends DataPacket{
|
||||
class CommandRequestPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::COMMAND_REQUEST_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ContainerClosePacket extends DataPacket{
|
||||
class ContainerClosePacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CONTAINER_CLOSE_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ContainerOpenPacket extends DataPacket{
|
||||
class ContainerOpenPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CONTAINER_OPEN_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ContainerSetDataPacket extends DataPacket{
|
||||
class ContainerSetDataPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CONTAINER_SET_DATA_PACKET;
|
||||
|
||||
public const PROPERTY_FURNACE_TICK_COUNT = 0;
|
||||
|
@ -36,7 +36,7 @@ use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use function count;
|
||||
use function str_repeat;
|
||||
|
||||
class CraftingDataPacket extends DataPacket{
|
||||
class CraftingDataPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CRAFTING_DATA_PACKET;
|
||||
|
||||
public const ENTRY_SHAPELESS = 0;
|
||||
|
@ -30,7 +30,7 @@ use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\utils\UUID;
|
||||
use function count;
|
||||
|
||||
class CraftingEventPacket extends DataPacket{
|
||||
class CraftingEventPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::CRAFTING_EVENT_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class DisconnectPacket extends DataPacket{
|
||||
class DisconnectPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::DISCONNECT_PACKET;
|
||||
|
||||
/** @var bool */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class EntityEventPacket extends DataPacket{
|
||||
class EntityEventPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ENTITY_EVENT_PACKET;
|
||||
|
||||
public const HURT_ANIMATION = 2;
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class EntityFallPacket extends DataPacket{
|
||||
class EntityFallPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ENTITY_FALL_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class EntityPickRequestPacket extends DataPacket{
|
||||
class EntityPickRequestPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::ENTITY_PICK_REQUEST_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class EventPacket extends DataPacket{
|
||||
class EventPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::EVENT_PACKET;
|
||||
|
||||
public const TYPE_ACHIEVEMENT_AWARDED = 0;
|
||||
|
@ -30,7 +30,7 @@ use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use function count;
|
||||
|
||||
class ExplodePacket extends DataPacket{
|
||||
class ExplodePacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::EXPLODE_PACKET;
|
||||
|
||||
/** @var Vector3 */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class FullChunkDataPacket extends DataPacket{
|
||||
class FullChunkDataPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::FULL_CHUNK_DATA_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class GameRulesChangedPacket extends DataPacket{
|
||||
class GameRulesChangedPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::GAME_RULES_CHANGED_PACKET;
|
||||
|
||||
/** @var array */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class GuiDataPickItemPacket extends DataPacket{
|
||||
class GuiDataPickItemPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::GUI_DATA_PICK_ITEM_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class HurtArmorPacket extends DataPacket{
|
||||
class HurtArmorPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::HURT_ARMOR_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class InteractPacket extends DataPacket{
|
||||
class InteractPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::INTERACT_PACKET;
|
||||
|
||||
public const ACTION_LEAVE_VEHICLE = 3;
|
||||
|
@ -29,7 +29,7 @@ use pocketmine\item\Item;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use function count;
|
||||
|
||||
class InventoryContentPacket extends DataPacket{
|
||||
class InventoryContentPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::INVENTORY_CONTENT_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class InventorySlotPacket extends DataPacket{
|
||||
class InventorySlotPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::INVENTORY_SLOT_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -37,7 +37,7 @@ use pocketmine\network\mcpe\protocol\types\UseItemTransactionData;
|
||||
/**
|
||||
* This packet effectively crams multiple packets into one.
|
||||
*/
|
||||
class InventoryTransactionPacket extends DataPacket{
|
||||
class InventoryTransactionPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::INVENTORY_TRANSACTION_PACKET;
|
||||
|
||||
public const TYPE_NORMAL = 0;
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ItemFrameDropItemPacket extends DataPacket{
|
||||
class ItemFrameDropItemPacket extends DataPacket implements ServerboundPacket{
|
||||
|
||||
public const NETWORK_ID = ProtocolInfo::ITEM_FRAME_DROP_ITEM_PACKET;
|
||||
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class LabTablePacket extends DataPacket{
|
||||
class LabTablePacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::LAB_TABLE_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class LevelEventPacket extends DataPacket{
|
||||
class LevelEventPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::LEVEL_EVENT_PACKET;
|
||||
|
||||
public const EVENT_SOUND_CLICK = 1000;
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class LevelSoundEventPacket extends DataPacket{
|
||||
class LevelSoundEventPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::LEVEL_SOUND_EVENT_PACKET;
|
||||
|
||||
public const SOUND_ITEM_USE_ON = 0;
|
||||
|
@ -43,7 +43,7 @@ use function is_array;
|
||||
use function json_decode;
|
||||
use function json_last_error_msg;
|
||||
|
||||
class LoginPacket extends DataPacket{
|
||||
class LoginPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::LOGIN_PACKET;
|
||||
|
||||
public const EDITION_POCKET = 0;
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class MapInfoRequestPacket extends DataPacket{
|
||||
class MapInfoRequestPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::MAP_INFO_REQUEST_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class MobArmorEquipmentPacket extends DataPacket{
|
||||
class MobArmorEquipmentPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::MOB_ARMOR_EQUIPMENT_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class MobEffectPacket extends DataPacket{
|
||||
class MobEffectPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::MOB_EFFECT_PACKET;
|
||||
|
||||
public const EVENT_ADD = 1;
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class MobEquipmentPacket extends DataPacket{
|
||||
class MobEquipmentPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::MOB_EQUIPMENT_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ModalFormRequestPacket extends DataPacket{
|
||||
class ModalFormRequestPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::MODAL_FORM_REQUEST_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ModalFormResponsePacket extends DataPacket{
|
||||
class ModalFormResponsePacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::MODAL_FORM_RESPONSE_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class MoveEntityAbsolutePacket extends DataPacket{
|
||||
class MoveEntityAbsolutePacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::MOVE_ENTITY_ABSOLUTE_PACKET;
|
||||
|
||||
public const FLAG_GROUND = 0x01;
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\utils\BinaryDataException;
|
||||
|
||||
class MoveEntityDeltaPacket extends DataPacket{
|
||||
class MoveEntityDeltaPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::MOVE_ENTITY_DELTA_PACKET;
|
||||
|
||||
public const FLAG_HAS_X = 0x01;
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class MovePlayerPacket extends DataPacket{
|
||||
class MovePlayerPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::MOVE_PLAYER_PACKET;
|
||||
|
||||
public const MODE_NORMAL = 0;
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class NetworkChunkPublisherUpdatePacket extends DataPacket{
|
||||
class NetworkChunkPublisherUpdatePacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::NETWORK_CHUNK_PUBLISHER_UPDATE_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class NetworkStackLatencyPacket extends DataPacket{
|
||||
class NetworkStackLatencyPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::NETWORK_STACK_LATENCY_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class NpcRequestPacket extends DataPacket{
|
||||
class NpcRequestPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::NPC_REQUEST_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class PhotoTransferPacket extends DataPacket{
|
||||
class PhotoTransferPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::PHOTO_TRANSFER_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class PlaySoundPacket extends DataPacket{
|
||||
class PlaySoundPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::PLAY_SOUND_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class PlayStatusPacket extends DataPacket{
|
||||
class PlayStatusPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::PLAY_STATUS_PACKET;
|
||||
|
||||
public const LOGIN_SUCCESS = 0;
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class PlayerActionPacket extends DataPacket{
|
||||
class PlayerActionPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::PLAYER_ACTION_PACKET;
|
||||
|
||||
public const ACTION_START_BREAK = 0;
|
||||
|
@ -31,7 +31,7 @@ use pocketmine\network\mcpe\protocol\types\ContainerIds;
|
||||
/**
|
||||
* One of the most useless packets.
|
||||
*/
|
||||
class PlayerHotbarPacket extends DataPacket{
|
||||
class PlayerHotbarPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::PLAYER_HOTBAR_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class PlayerInputPacket extends DataPacket{
|
||||
class PlayerInputPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::PLAYER_INPUT_PACKET;
|
||||
|
||||
/** @var float */
|
||||
|
@ -31,7 +31,7 @@ use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\network\mcpe\protocol\types\PlayerListEntry;
|
||||
use function count;
|
||||
|
||||
class PlayerListPacket extends DataPacket{
|
||||
class PlayerListPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::PLAYER_LIST_PACKET;
|
||||
|
||||
public const TYPE_ADD = 0;
|
||||
|
@ -29,7 +29,7 @@ use pocketmine\entity\Skin;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\utils\UUID;
|
||||
|
||||
class PlayerSkinPacket extends DataPacket{
|
||||
class PlayerSkinPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::PLAYER_SKIN_PACKET;
|
||||
|
||||
/** @var UUID */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use function count;
|
||||
|
||||
class PurchaseReceiptPacket extends DataPacket{
|
||||
class PurchaseReceiptPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::PURCHASE_RECEIPT_PACKET;
|
||||
|
||||
/** @var string[] */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class RemoveEntityPacket extends DataPacket{
|
||||
class RemoveEntityPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::REMOVE_ENTITY_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class RemoveObjectivePacket extends DataPacket{
|
||||
class RemoveObjectivePacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::REMOVE_OBJECTIVE_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class RequestChunkRadiusPacket extends DataPacket{
|
||||
class RequestChunkRadiusPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::REQUEST_CHUNK_RADIUS_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -30,7 +30,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use function strlen;
|
||||
|
||||
class ResourcePackChunkDataPacket extends DataPacket{
|
||||
class ResourcePackChunkDataPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACK_CHUNK_DATA_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ResourcePackChunkRequestPacket extends DataPacket{
|
||||
class ResourcePackChunkRequestPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACK_CHUNK_REQUEST_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use function count;
|
||||
|
||||
class ResourcePackClientResponsePacket extends DataPacket{
|
||||
class ResourcePackClientResponsePacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACK_CLIENT_RESPONSE_PACKET;
|
||||
|
||||
public const STATUS_REFUSED = 1;
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ResourcePackDataInfoPacket extends DataPacket{
|
||||
class ResourcePackDataInfoPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACK_DATA_INFO_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -31,7 +31,7 @@ use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\resourcepacks\ResourcePack;
|
||||
use function count;
|
||||
|
||||
class ResourcePackStackPacket extends DataPacket{
|
||||
class ResourcePackStackPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACK_STACK_PACKET;
|
||||
|
||||
/** @var bool */
|
||||
|
@ -30,7 +30,7 @@ use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\resourcepacks\ResourcePack;
|
||||
use function count;
|
||||
|
||||
class ResourcePacksInfoPacket extends DataPacket{
|
||||
class ResourcePacksInfoPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACKS_INFO_PACKET;
|
||||
|
||||
/** @var bool */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class RespawnPacket extends DataPacket{
|
||||
class RespawnPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::RESPAWN_PACKET;
|
||||
|
||||
/** @var Vector3 */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class RiderJumpPacket extends DataPacket{
|
||||
class RiderJumpPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::RIDER_JUMP_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ScriptCustomEventPacket extends DataPacket{
|
||||
class ScriptCustomEventPacket extends DataPacket{ //TODO: this doesn't have handlers in either client or server in the game as of 1.8
|
||||
public const NETWORK_ID = ProtocolInfo::SCRIPT_CUSTOM_EVENT_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ServerSettingsRequestPacket extends DataPacket{
|
||||
class ServerSettingsRequestPacket extends DataPacket implements ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::SERVER_SETTINGS_REQUEST_PACKET;
|
||||
|
||||
protected function decodePayload() : void{
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ServerSettingsResponsePacket extends DataPacket{
|
||||
class ServerSettingsResponsePacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::SERVER_SETTINGS_RESPONSE_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class ServerToClientHandshakePacket extends DataPacket{
|
||||
class ServerToClientHandshakePacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::SERVER_TO_CLIENT_HANDSHAKE_PACKET;
|
||||
|
||||
/**
|
||||
|
28
src/pocketmine/network/mcpe/protocol/ServerboundPacket.php
Normal file
28
src/pocketmine/network/mcpe/protocol/ServerboundPacket.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
*
|
||||
* ____ _ _ __ __ _ __ __ ____
|
||||
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
||||
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
||||
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
||||
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* @author PocketMine Team
|
||||
* @link http://www.pocketmine.net/
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
interface ServerboundPacket extends Packet{
|
||||
|
||||
}
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class SetCommandsEnabledPacket extends DataPacket{
|
||||
class SetCommandsEnabledPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::SET_COMMANDS_ENABLED_PACKET;
|
||||
|
||||
/** @var bool */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class SetDefaultGameTypePacket extends DataPacket{
|
||||
class SetDefaultGameTypePacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::SET_DEFAULT_GAME_TYPE_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class SetDifficultyPacket extends DataPacket{
|
||||
class SetDifficultyPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::SET_DIFFICULTY_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -27,7 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class SetDisplayObjectivePacket extends DataPacket{
|
||||
class SetDisplayObjectivePacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::SET_DISPLAY_OBJECTIVE_PACKET;
|
||||
|
||||
/** @var string */
|
||||
|
@ -28,7 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
|
||||
class SetEntityDataPacket extends DataPacket{
|
||||
class SetEntityDataPacket extends DataPacket implements ClientboundPacket, ServerboundPacket{ //TODO: check why this is serverbound
|
||||
public const NETWORK_ID = ProtocolInfo::SET_ENTITY_DATA_PACKET;
|
||||
|
||||
/** @var int */
|
||||
|
@ -29,7 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
use pocketmine\network\mcpe\handler\SessionHandler;
|
||||
use pocketmine\network\mcpe\protocol\types\EntityLink;
|
||||
|
||||
class SetEntityLinkPacket extends DataPacket{
|
||||
class SetEntityLinkPacket extends DataPacket implements ClientboundPacket{
|
||||
public const NETWORK_ID = ProtocolInfo::SET_ENTITY_LINK_PACKET;
|
||||
|
||||
/** @var EntityLink */
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user