Merge branch '3.5'

This commit is contained in:
Dylan K. Taylor
2019-01-04 23:28:44 +00:00
258 changed files with 1322 additions and 40 deletions

View File

@ -35,6 +35,8 @@ use pocketmine\network\mcpe\protocol\types\CommandOriginData;
use pocketmine\network\mcpe\protocol\types\EntityLink;
use pocketmine\utils\BinaryStream;
use pocketmine\utils\UUID;
use function count;
use function strlen;
class NetworkBinaryStream extends BinaryStream{
/** @var LittleEndianNBTStream */

View File

@ -25,6 +25,10 @@ namespace pocketmine\network\mcpe;
use Crypto\Cipher;
use pocketmine\utils\Binary;
use function bin2hex;
use function openssl_digest;
use function strlen;
use function substr;
class NetworkCipher{
private const ENCRYPTION_SCHEME = "AES-256-CFB8";

View File

@ -23,6 +23,10 @@ declare(strict_types=1);
namespace pocketmine\network\mcpe;
use function zlib_decode;
use function zlib_encode;
use const ZLIB_ENCODING_DEFLATE;
final class NetworkCompression{
public static $LEVEL = 7;
public static $THRESHOLD = 256;

View File

@ -24,6 +24,8 @@ declare(strict_types=1);
namespace pocketmine\network\mcpe;
use pocketmine\nbt\LittleEndianNBTStream;
use function count;
use function strlen;
#ifndef COMPILE
use pocketmine\utils\Binary;
#endif

View File

@ -42,6 +42,10 @@ use pocketmine\network\NetworkInterface;
use pocketmine\Player;
use pocketmine\Server;
use pocketmine\timings\Timings;
use function bin2hex;
use function strlen;
use function substr;
use function time;
class NetworkSession{
/** @var Server */

View File

@ -35,6 +35,28 @@ use Mdanter\Ecc\Serializer\Signature\DerSignatureSerializer;
use pocketmine\network\mcpe\protocol\LoginPacket;
use pocketmine\Player;
use pocketmine\scheduler\AsyncTask;
use function assert;
use function base64_decode;
use function base64_encode;
use function bin2hex;
use function explode;
use function gmp_init;
use function gmp_strval;
use function hex2bin;
use function json_decode;
use function json_encode;
use function openssl_digest;
use function openssl_sign;
use function openssl_verify;
use function random_bytes;
use function rtrim;
use function str_pad;
use function str_repeat;
use function str_split;
use function strlen;
use function time;
use const OPENSSL_ALGO_SHA384;
use const STR_PAD_LEFT;
class ProcessLoginTask extends AsyncTask{

View File

@ -35,6 +35,14 @@ use raklib\server\RakLibServer;
use raklib\server\ServerHandler;
use raklib\server\ServerInstance;
use raklib\utils\InternetAddress;
use function addcslashes;
use function bin2hex;
use function implode;
use function rtrim;
use function spl_object_hash;
use function substr;
use function unserialize;
use const PTHREADS_INHERIT_CONSTANTS;
class RakLibInterface implements ServerInstance, AdvancedNetworkInterface{
/**

View File

@ -33,6 +33,10 @@ use pocketmine\network\mcpe\protocol\ResourcePackStackPacket;
use pocketmine\Player;
use pocketmine\resourcepacks\ResourcePack;
use pocketmine\resourcepacks\ResourcePackManager;
use function ceil;
use function implode;
use function strpos;
use function substr;
/**
* Handler used for the resource packs sequence phase of the session. This handler takes care of downloading resource

View File

@ -69,6 +69,14 @@ use pocketmine\network\mcpe\protocol\types\ReleaseItemTransactionData;
use pocketmine\network\mcpe\protocol\types\UseItemOnEntityTransactionData;
use pocketmine\network\mcpe\protocol\types\UseItemTransactionData;
use pocketmine\Player;
use function implode;
use function json_decode;
use function json_encode;
use function json_last_error_msg;
use function microtime;
use function preg_match;
use function preg_split;
use function trim;
/**
* Temporary session handler implementation

View File

@ -30,6 +30,8 @@ use pocketmine\entity\EntityIds;
use pocketmine\math\Vector3;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\protocol\types\EntityLink;
use function array_search;
use function count;
class AddEntityPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::ADD_ENTITY_PACKET;

View File

@ -30,6 +30,7 @@ use pocketmine\math\Vector3;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\protocol\types\EntityLink;
use pocketmine\utils\UUID;
use function count;
class AddPlayerPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::ADD_PLAYER_PACKET;

View File

@ -29,6 +29,13 @@ use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\protocol\types\CommandData;
use pocketmine\network\mcpe\protocol\types\CommandEnum;
use pocketmine\network\mcpe\protocol\types\CommandParameter;
use function array_flip;
use function array_keys;
use function array_map;
use function array_search;
use function array_values;
use function count;
use function dechex;
class AvailableCommandsPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::AVAILABLE_COMMANDS_PACKET;
@ -346,13 +353,13 @@ class AvailableCommandsPacket extends DataPacket{
}
}
$this->enumValues = array_map('strval', array_keys($enumValuesMap)); //stupid PHP key casting D:
$this->enumValues = array_map('\strval', array_keys($enumValuesMap)); //stupid PHP key casting D:
$this->putUnsignedVarInt($this->enumValuesCount = count($this->enumValues));
foreach($this->enumValues as $enumValue){
$this->putString($enumValue);
}
$this->postfixes = array_map('strval', array_keys($postfixesMap));
$this->postfixes = array_map('\strval', array_keys($postfixesMap));
$this->putUnsignedVarInt(count($this->postfixes));
foreach($this->postfixes as $postfix){
$this->putString($postfix);

View File

@ -26,6 +26,7 @@ namespace pocketmine\network\mcpe\protocol;
#include <rules/DataPacket.h>
use pocketmine\network\mcpe\handler\SessionHandler;
use function base64_decode;
class AvailableEntityIdentifiersPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::AVAILABLE_ENTITY_IDENTIFIERS_PACKET;

View File

@ -31,6 +31,8 @@ use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\protocol\types\DimensionIds;
use pocketmine\network\mcpe\protocol\types\MapTrackedObject;
use pocketmine\utils\Color;
use function assert;
use function count;
class ClientboundMapItemDataPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::CLIENTBOUND_MAP_ITEM_DATA_PACKET;

View File

@ -28,6 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\protocol\types\CommandOriginData;
use pocketmine\network\mcpe\protocol\types\CommandOutputMessage;
use function count;
class CommandOutputPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::COMMAND_OUTPUT_PACKET;

View File

@ -32,6 +32,8 @@ use pocketmine\inventory\ShapelessRecipe;
use pocketmine\item\Item;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\NetworkBinaryStream;
use function count;
use function str_repeat;
class CraftingDataPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::CRAFTING_DATA_PACKET;

View File

@ -28,6 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\item\Item;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\utils\UUID;
use function count;
class CraftingEventPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::CRAFTING_EVENT_PACKET;

View File

@ -28,6 +28,11 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\NetworkBinaryStream;
use pocketmine\utils\Utils;
use function bin2hex;
use function get_class;
use function is_object;
use function is_string;
use function method_exists;
abstract class DataPacket extends NetworkBinaryStream{

View File

@ -28,6 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\math\Vector3;
use pocketmine\network\mcpe\handler\SessionHandler;
use function count;
class ExplodePacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::EXPLODE_PACKET;

View File

@ -27,6 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\item\Item;
use pocketmine\network\mcpe\handler\SessionHandler;
use function count;
class InventoryContentPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::INVENTORY_CONTENT_PACKET;

View File

@ -30,6 +30,9 @@ use pocketmine\entity\Skin;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\utils\BinaryStream;
use pocketmine\utils\Utils;
use function base64_decode;
use function get_class;
use function json_decode;
class LoginPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::LOGIN_PACKET;

View File

@ -29,6 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\entity\Skin;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\protocol\types\PlayerListEntry;
use function count;
class PlayerListPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::PLAYER_LIST_PACKET;

View File

@ -26,6 +26,7 @@ namespace pocketmine\network\mcpe\protocol;
#include <rules/DataPacket.h>
use pocketmine\network\mcpe\handler\SessionHandler;
use function count;
class PurchaseReceiptPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::PURCHASE_RECEIPT_PACKET;

View File

@ -28,6 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use function strlen;
class ResourcePackChunkDataPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACK_CHUNK_DATA_PACKET;

View File

@ -27,6 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use function count;
class ResourcePackClientResponsePacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACK_CLIENT_RESPONSE_PACKET;

View File

@ -29,6 +29,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\resourcepacks\ResourcePack;
use function count;
class ResourcePackStackPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACK_STACK_PACKET;

View File

@ -28,6 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\resourcepacks\ResourcePack;
use function count;
class ResourcePacksInfoPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::RESOURCE_PACKS_INFO_PACKET;

View File

@ -27,6 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\protocol\types\ScorePacketEntry;
use function count;
class SetScorePacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::SET_SCORE_PACKET;

View File

@ -27,6 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\protocol\types\ScoreboardIdentityPacketEntry;
use function count;
class SetScoreboardIdentityPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::SET_SCOREBOARD_IDENTITY_PACKET;

View File

@ -30,6 +30,9 @@ use pocketmine\math\Vector3;
use pocketmine\network\mcpe\handler\SessionHandler;
use pocketmine\network\mcpe\NetworkBinaryStream;
use pocketmine\network\mcpe\protocol\types\PlayerPermissions;
use function count;
use function file_get_contents;
use function json_decode;
class StartGamePacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::START_GAME_PACKET;

View File

@ -27,6 +27,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use function count;
class TextPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::TEXT_PACKET;

View File

@ -26,6 +26,8 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\network\mcpe\handler\SessionHandler;
use function ord;
use function strlen;
class UnknownPacket extends DataPacket{
public const NETWORK_ID = -1; //Invalid, do not try to write this

View File

@ -28,6 +28,7 @@ namespace pocketmine\network\mcpe\protocol;
use pocketmine\entity\Attribute;
use pocketmine\network\mcpe\handler\SessionHandler;
use function array_values;
class UpdateAttributesPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::UPDATE_ATTRIBUTES_PACKET;

View File

@ -26,6 +26,7 @@ namespace pocketmine\network\mcpe\protocol;
#include <rules/DataPacket.h>
use pocketmine\network\mcpe\handler\SessionHandler;
use function count;
class UpdateSoftEnumPacket extends DataPacket{
public const NETWORK_ID = ProtocolInfo::UPDATE_SOFT_ENUM_PACKET;

View File

@ -25,6 +25,7 @@ namespace pocketmine\network\mcpe\protocol\types;
use pocketmine\network\mcpe\NetworkBinaryStream;
use pocketmine\network\mcpe\protocol\InventoryTransactionPacket;
use function count;
class MismatchTransactionData extends TransactionData{

View File

@ -24,6 +24,7 @@ declare(strict_types=1);
namespace pocketmine\network\mcpe\protocol\types;
use pocketmine\network\mcpe\NetworkBinaryStream;
use function count;
abstract class TransactionData{
/** @var NetworkInventoryAction[] */