mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-23 00:55:57 +00:00
divide network\mcpe namespace into more subnamespaces
This commit is contained in:
parent
872b6ed708
commit
e7733718b6
@ -50,10 +50,10 @@ use pocketmine\nbt\BigEndianNbtSerializer;
|
||||
use pocketmine\nbt\NbtDataException;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
use pocketmine\nbt\TreeRoot;
|
||||
use pocketmine\network\mcpe\CompressBatchPromise;
|
||||
use pocketmine\network\mcpe\CompressBatchTask;
|
||||
use pocketmine\network\mcpe\NetworkCipher;
|
||||
use pocketmine\network\mcpe\NetworkCompression;
|
||||
use pocketmine\network\mcpe\compression\CompressBatchPromise;
|
||||
use pocketmine\network\mcpe\compression\CompressBatchTask;
|
||||
use pocketmine\network\mcpe\compression\Zlib as ZlibNetworkCompression;
|
||||
use pocketmine\network\mcpe\encryption\NetworkCipher;
|
||||
use pocketmine\network\mcpe\NetworkSession;
|
||||
use pocketmine\network\mcpe\PacketBatch;
|
||||
use pocketmine\network\mcpe\protocol\ClientboundPacket;
|
||||
@ -1089,15 +1089,15 @@ class Server{
|
||||
$this->asyncPool = new AsyncPool($poolSize, (int) max(-1, (int) $this->getProperty("memory.async-worker-hard-limit", 256)), $this->autoloader, $this->logger);
|
||||
|
||||
if($this->getProperty("network.batch-threshold", 256) >= 0){
|
||||
NetworkCompression::$THRESHOLD = (int) $this->getProperty("network.batch-threshold", 256);
|
||||
ZlibNetworkCompression::$THRESHOLD = (int) $this->getProperty("network.batch-threshold", 256);
|
||||
}else{
|
||||
NetworkCompression::$THRESHOLD = -1;
|
||||
ZlibNetworkCompression::$THRESHOLD = -1;
|
||||
}
|
||||
|
||||
NetworkCompression::$LEVEL = $this->getProperty("network.compression-level", 7);
|
||||
if(NetworkCompression::$LEVEL < 1 or NetworkCompression::$LEVEL > 9){
|
||||
$this->logger->warning("Invalid network compression level " . NetworkCompression::$LEVEL . " set, setting to default 7");
|
||||
NetworkCompression::$LEVEL = 7;
|
||||
ZlibNetworkCompression::$LEVEL = $this->getProperty("network.compression-level", 7);
|
||||
if(ZlibNetworkCompression::$LEVEL < 1 or ZlibNetworkCompression::$LEVEL > 9){
|
||||
$this->logger->warning("Invalid network compression level " . ZlibNetworkCompression::$LEVEL . " set, setting to default 7");
|
||||
ZlibNetworkCompression::$LEVEL = 7;
|
||||
}
|
||||
$this->networkCompressionAsync = (bool) $this->getProperty("network.async-compression", true);
|
||||
|
||||
@ -1463,7 +1463,7 @@ class Server{
|
||||
|
||||
$stream = PacketBatch::fromPackets(...$ev->getPackets());
|
||||
|
||||
if(NetworkCompression::$THRESHOLD < 0 or strlen($stream->getBuffer()) < NetworkCompression::$THRESHOLD){
|
||||
if(ZlibNetworkCompression::$THRESHOLD < 0 or strlen($stream->getBuffer()) < ZlibNetworkCompression::$THRESHOLD){
|
||||
foreach($recipients as $target){
|
||||
foreach($ev->getPackets() as $pk){
|
||||
$target->addToSendBuffer($pk);
|
||||
@ -1491,9 +1491,9 @@ class Server{
|
||||
try{
|
||||
Timings::$playerNetworkSendCompressTimer->startTiming();
|
||||
|
||||
$compressionLevel = NetworkCompression::$LEVEL;
|
||||
$compressionLevel = ZlibNetworkCompression::$LEVEL;
|
||||
$buffer = $stream->getBuffer();
|
||||
if(NetworkCompression::$THRESHOLD < 0 or strlen($buffer) < NetworkCompression::$THRESHOLD){
|
||||
if(ZlibNetworkCompression::$THRESHOLD < 0 or strlen($buffer) < ZlibNetworkCompression::$THRESHOLD){
|
||||
$compressionLevel = 0; //Do not compress packets under the threshold
|
||||
$forceSync = true;
|
||||
}
|
||||
@ -1503,7 +1503,7 @@ class Server{
|
||||
$task = new CompressBatchTask($buffer, $compressionLevel, $promise);
|
||||
$this->asyncPool->submitTask($task);
|
||||
}else{
|
||||
$promise->resolve(NetworkCompression::compress($buffer, $compressionLevel));
|
||||
$promise->resolve(ZlibNetworkCompression::compress($buffer, $compressionLevel));
|
||||
}
|
||||
|
||||
return $promise;
|
||||
|
@ -25,7 +25,7 @@ namespace pocketmine\block\tile;
|
||||
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
use pocketmine\nbt\TreeRoot;
|
||||
use pocketmine\network\mcpe\NetworkNbtSerializer;
|
||||
use pocketmine\network\mcpe\serializer\NetworkNbtSerializer;
|
||||
use function get_class;
|
||||
|
||||
abstract class Spawnable extends Tile{
|
||||
|
@ -24,8 +24,8 @@ declare(strict_types=1);
|
||||
namespace pocketmine\inventory;
|
||||
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\network\mcpe\CompressBatchPromise;
|
||||
use pocketmine\network\mcpe\NetworkCompression;
|
||||
use pocketmine\network\mcpe\compression\CompressBatchPromise;
|
||||
use pocketmine\network\mcpe\compression\Zlib;
|
||||
use pocketmine\network\mcpe\PacketBatch;
|
||||
use pocketmine\network\mcpe\protocol\CraftingDataPacket;
|
||||
use pocketmine\timings\Timings;
|
||||
@ -117,7 +117,7 @@ class CraftingManager{
|
||||
}
|
||||
|
||||
$this->craftingDataCache = new CompressBatchPromise();
|
||||
$this->craftingDataCache->resolve(NetworkCompression::compress(PacketBatch::fromPackets($pk)->getBuffer()));
|
||||
$this->craftingDataCache->resolve(Zlib::compress(PacketBatch::fromPackets($pk)->getBuffer()));
|
||||
|
||||
Timings::$craftingDataCacheRebuildTimer->stopTiming();
|
||||
}
|
||||
|
@ -24,6 +24,7 @@ declare(strict_types=1);
|
||||
namespace pocketmine\network\mcpe;
|
||||
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\compression\CompressBatchPromise;
|
||||
use pocketmine\world\ChunkListener;
|
||||
use pocketmine\world\ChunkListenerNoOpTrait;
|
||||
use pocketmine\world\format\Chunk;
|
||||
|
@ -23,7 +23,10 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
|
||||
use pocketmine\network\mcpe\compression\CompressBatchPromise;
|
||||
use pocketmine\network\mcpe\compression\Zlib;
|
||||
use pocketmine\network\mcpe\protocol\FullChunkDataPacket;
|
||||
use pocketmine\network\mcpe\serializer\ChunkSerializer;
|
||||
use pocketmine\scheduler\AsyncTask;
|
||||
use pocketmine\world\format\Chunk;
|
||||
use pocketmine\world\format\io\FastChunkSerializer;
|
||||
@ -45,7 +48,7 @@ class ChunkRequestTask extends AsyncTask{
|
||||
private $tiles = "";
|
||||
|
||||
public function __construct(int $chunkX, int $chunkZ, Chunk $chunk, CompressBatchPromise $promise, ?\Closure $onError = null){
|
||||
$this->compressionLevel = NetworkCompression::$LEVEL;
|
||||
$this->compressionLevel = Zlib::$LEVEL;
|
||||
|
||||
$this->chunk = FastChunkSerializer::serialize($chunk);
|
||||
$this->chunkX = $chunkX;
|
||||
@ -58,7 +61,7 @@ class ChunkRequestTask extends AsyncTask{
|
||||
|
||||
public function onRun() : void{
|
||||
$chunk = ChunkSerializer::serialize(FastChunkSerializer::deserialize($this->chunk), $this->tiles);
|
||||
$this->setResult(NetworkCompression::compress(PacketBatch::fromPackets(FullChunkDataPacket::create($this->chunkX, $this->chunkZ, $chunk))->getBuffer(), $this->compressionLevel));
|
||||
$this->setResult(Zlib::compress(PacketBatch::fromPackets(FullChunkDataPacket::create($this->chunkX, $this->chunkZ, $chunk))->getBuffer(), $this->compressionLevel));
|
||||
}
|
||||
|
||||
public function onError() : void{
|
||||
|
@ -33,6 +33,10 @@ use pocketmine\event\server\DataPacketSendEvent;
|
||||
use pocketmine\form\Form;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\BadPacketException;
|
||||
use pocketmine\network\mcpe\compression\CompressBatchPromise;
|
||||
use pocketmine\network\mcpe\compression\Zlib;
|
||||
use pocketmine\network\mcpe\encryption\NetworkCipher;
|
||||
use pocketmine\network\mcpe\encryption\PrepareEncryptionTask;
|
||||
use pocketmine\network\mcpe\handler\DeathPacketHandler;
|
||||
use pocketmine\network\mcpe\handler\HandshakePacketHandler;
|
||||
use pocketmine\network\mcpe\handler\InGamePacketHandler;
|
||||
@ -280,7 +284,7 @@ class NetworkSession{
|
||||
|
||||
Timings::$playerNetworkReceiveDecompressTimer->startTiming();
|
||||
try{
|
||||
$stream = new PacketBatch(NetworkCompression::decompress($payload));
|
||||
$stream = new PacketBatch(Zlib::decompress($payload));
|
||||
}catch(\ErrorException $e){
|
||||
$this->logger->debug("Failed to decompress packet: " . base64_encode($payload));
|
||||
//TODO: this isn't incompatible game version if we already established protocol version
|
||||
|
@ -25,6 +25,7 @@ namespace pocketmine\network\mcpe;
|
||||
|
||||
use pocketmine\network\mcpe\protocol\Packet;
|
||||
use pocketmine\network\mcpe\protocol\PacketPool;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
use pocketmine\utils\BinaryDataException;
|
||||
|
||||
class PacketBatch extends NetworkBinaryStream{
|
||||
|
@ -21,13 +21,14 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\auth;
|
||||
|
||||
use Mdanter\Ecc\Crypto\Key\PublicKeyInterface;
|
||||
use Mdanter\Ecc\Crypto\Signature\Signature;
|
||||
use Mdanter\Ecc\Serializer\PublicKey\DerPublicKeySerializer;
|
||||
use Mdanter\Ecc\Serializer\PublicKey\PemPublicKeySerializer;
|
||||
use Mdanter\Ecc\Serializer\Signature\DerSignatureSerializer;
|
||||
use pocketmine\network\mcpe\NetworkSession;
|
||||
use pocketmine\network\mcpe\protocol\LoginPacket;
|
||||
use pocketmine\scheduler\AsyncTask;
|
||||
use function assert;
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\auth;
|
||||
|
||||
class VerifyLoginException extends \RuntimeException{
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\compression;
|
||||
|
||||
use pocketmine\utils\Utils;
|
||||
use function array_push;
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\compression;
|
||||
|
||||
use pocketmine\scheduler\AsyncTask;
|
||||
|
||||
@ -44,7 +44,7 @@ class CompressBatchTask extends AsyncTask{
|
||||
}
|
||||
|
||||
public function onRun() : void{
|
||||
$this->setResult(NetworkCompression::compress($this->data, $this->level));
|
||||
$this->setResult(Zlib::compress($this->data, $this->level));
|
||||
}
|
||||
|
||||
public function onCompletion() : void{
|
@ -21,13 +21,13 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\compression;
|
||||
|
||||
use function zlib_decode;
|
||||
use function zlib_encode;
|
||||
use const ZLIB_ENCODING_DEFLATE;
|
||||
|
||||
final class NetworkCompression{
|
||||
final class Zlib{
|
||||
public static $LEVEL = 7;
|
||||
public static $THRESHOLD = 256;
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\encryption;
|
||||
|
||||
use Crypto\Cipher;
|
||||
use pocketmine\utils\Binary;
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\encryption;
|
||||
|
||||
use Mdanter\Ecc\Crypto\Key\PrivateKeyInterface;
|
||||
use Mdanter\Ecc\Crypto\Key\PublicKeyInterface;
|
||||
@ -30,6 +30,7 @@ use Mdanter\Ecc\Serializer\PrivateKey\DerPrivateKeySerializer;
|
||||
use Mdanter\Ecc\Serializer\PrivateKey\PemPrivateKeySerializer;
|
||||
use Mdanter\Ecc\Serializer\PublicKey\DerPublicKeySerializer;
|
||||
use Mdanter\Ecc\Serializer\Signature\DerSignatureSerializer;
|
||||
use pocketmine\network\mcpe\NetworkSession;
|
||||
use pocketmine\scheduler\AsyncTask;
|
||||
use function base64_encode;
|
||||
use function gmp_strval;
|
@ -38,7 +38,6 @@ use pocketmine\math\Vector3;
|
||||
use pocketmine\nbt\NbtDataException;
|
||||
use pocketmine\nbt\tag\StringTag;
|
||||
use pocketmine\network\BadPacketException;
|
||||
use pocketmine\network\mcpe\NetworkNbtSerializer;
|
||||
use pocketmine\network\mcpe\NetworkSession;
|
||||
use pocketmine\network\mcpe\protocol\AdventureSettingsPacket;
|
||||
use pocketmine\network\mcpe\protocol\AnimatePacket;
|
||||
@ -81,6 +80,7 @@ use pocketmine\network\mcpe\protocol\types\NormalTransactionData;
|
||||
use pocketmine\network\mcpe\protocol\types\ReleaseItemTransactionData;
|
||||
use pocketmine\network\mcpe\protocol\types\UseItemOnEntityTransactionData;
|
||||
use pocketmine\network\mcpe\protocol\types\UseItemTransactionData;
|
||||
use pocketmine\network\mcpe\serializer\NetworkNbtSerializer;
|
||||
use pocketmine\player\Player;
|
||||
use function array_push;
|
||||
use function base64_encode;
|
||||
|
@ -25,8 +25,8 @@ namespace pocketmine\network\mcpe\handler;
|
||||
|
||||
use pocketmine\entity\Skin;
|
||||
use pocketmine\event\player\PlayerPreLoginEvent;
|
||||
use pocketmine\network\mcpe\auth\ProcessLoginTask;
|
||||
use pocketmine\network\mcpe\NetworkSession;
|
||||
use pocketmine\network\mcpe\ProcessLoginTask;
|
||||
use pocketmine\network\mcpe\protocol\LoginPacket;
|
||||
use pocketmine\network\mcpe\protocol\PlayStatusPacket;
|
||||
use pocketmine\network\mcpe\protocol\ProtocolInfo;
|
||||
|
@ -33,7 +33,7 @@ use pocketmine\item\Item;
|
||||
use pocketmine\item\ItemFactory;
|
||||
use pocketmine\network\BadPacketException;
|
||||
use pocketmine\network\mcpe\handler\PacketHandler;
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
use function count;
|
||||
use function str_repeat;
|
||||
|
||||
|
@ -26,7 +26,7 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
#include <rules/DataPacket.h>
|
||||
|
||||
use pocketmine\network\BadPacketException;
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
use pocketmine\utils\BinaryDataException;
|
||||
use pocketmine\utils\Utils;
|
||||
use function bin2hex;
|
||||
|
@ -28,9 +28,9 @@ namespace pocketmine\network\mcpe\protocol;
|
||||
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\handler\PacketHandler;
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\protocol\types\PlayerPermissions;
|
||||
use pocketmine\network\mcpe\protocol\types\RuntimeBlockMapping;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
use function count;
|
||||
|
||||
class StartGamePacket extends DataPacket implements ClientboundPacket{
|
||||
|
@ -24,8 +24,8 @@ declare(strict_types=1);
|
||||
namespace pocketmine\network\mcpe\protocol\types;
|
||||
|
||||
use pocketmine\network\BadPacketException;
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\protocol\InventoryTransactionPacket;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
use function count;
|
||||
|
||||
class MismatchTransactionData extends TransactionData{
|
||||
|
@ -32,7 +32,7 @@ use pocketmine\inventory\transaction\action\InventoryAction;
|
||||
use pocketmine\inventory\transaction\action\SlotChangeAction;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\network\BadPacketException;
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
use pocketmine\player\Player;
|
||||
use pocketmine\utils\BinaryDataException;
|
||||
|
||||
@ -97,7 +97,7 @@ class NetworkInventoryAction{
|
||||
public $newItem;
|
||||
|
||||
/**
|
||||
* @param NetworkBinaryStream $packet
|
||||
* @param \pocketmine\network\mcpe\serializer\NetworkBinaryStream $packet
|
||||
*
|
||||
* @return $this
|
||||
*
|
||||
@ -132,7 +132,7 @@ class NetworkInventoryAction{
|
||||
}
|
||||
|
||||
/**
|
||||
* @param NetworkBinaryStream $packet
|
||||
* @param \pocketmine\network\mcpe\serializer\NetworkBinaryStream $packet
|
||||
*
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
|
@ -23,8 +23,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe\protocol\types;
|
||||
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\protocol\InventoryTransactionPacket;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
|
||||
class NormalTransactionData extends TransactionData{
|
||||
|
||||
|
@ -25,8 +25,8 @@ namespace pocketmine\network\mcpe\protocol\types;
|
||||
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\protocol\InventoryTransactionPacket;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
|
||||
class ReleaseItemTransactionData extends TransactionData{
|
||||
public const ACTION_RELEASE = 0; //bow shoot
|
||||
|
@ -24,7 +24,7 @@ declare(strict_types=1);
|
||||
namespace pocketmine\network\mcpe\protocol\types;
|
||||
|
||||
use pocketmine\network\BadPacketException;
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
use pocketmine\utils\BinaryDataException;
|
||||
use function count;
|
||||
|
||||
@ -45,7 +45,7 @@ abstract class TransactionData{
|
||||
abstract public function getTypeId() : int;
|
||||
|
||||
/**
|
||||
* @param NetworkBinaryStream $stream
|
||||
* @param \pocketmine\network\mcpe\serializer\NetworkBinaryStream $stream
|
||||
*
|
||||
* @throws BinaryDataException
|
||||
* @throws BadPacketException
|
||||
@ -59,7 +59,7 @@ abstract class TransactionData{
|
||||
}
|
||||
|
||||
/**
|
||||
* @param NetworkBinaryStream $stream
|
||||
* @param \pocketmine\network\mcpe\serializer\NetworkBinaryStream $stream
|
||||
*
|
||||
* @throws BinaryDataException
|
||||
* @throws BadPacketException
|
||||
|
@ -25,8 +25,8 @@ namespace pocketmine\network\mcpe\protocol\types;
|
||||
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\protocol\InventoryTransactionPacket;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
|
||||
class UseItemOnEntityTransactionData extends TransactionData{
|
||||
public const ACTION_INTERACT = 0;
|
||||
|
@ -25,8 +25,8 @@ namespace pocketmine\network\mcpe\protocol\types;
|
||||
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\network\mcpe\NetworkBinaryStream;
|
||||
use pocketmine\network\mcpe\protocol\InventoryTransactionPacket;
|
||||
use pocketmine\network\mcpe\serializer\NetworkBinaryStream;
|
||||
|
||||
class UseItemTransactionData extends TransactionData{
|
||||
public const ACTION_CLICK_BLOCK = 0;
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\serializer;
|
||||
|
||||
use pocketmine\block\tile\Spawnable;
|
||||
use pocketmine\network\mcpe\protocol\types\RuntimeBlockMapping;
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\serializer;
|
||||
|
||||
#include <rules/DataPacket.h>
|
||||
|
||||
@ -30,8 +30,8 @@ use pocketmine\item\Item;
|
||||
use pocketmine\item\ItemFactory;
|
||||
use pocketmine\item\ItemIds;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
use pocketmine\nbt\NbtDataException;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
use pocketmine\nbt\TreeRoot;
|
||||
use pocketmine\network\BadPacketException;
|
||||
use pocketmine\network\mcpe\protocol\types\CommandOriginData;
|
@ -21,7 +21,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
namespace pocketmine\network\mcpe\serializer;
|
||||
|
||||
use pocketmine\nbt\LittleEndianNbtSerializer;
|
||||
use function count;
|
Loading…
x
Reference in New Issue
Block a user