Skip to content

Commit

Permalink
try supporting new & old pocketmine version
Browse files Browse the repository at this point in the history
  • Loading branch information
ShockedPlot7560 committed Jun 5, 2024
1 parent 132d1c1 commit 547eab3
Show file tree
Hide file tree
Showing 9 changed files with 201 additions and 172 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ jobs:
image: [ubuntu-20.04]
suittest: ["normal", "with_plugin", "no_test"]
php: ["8.1", "8.2", "8.3"]
pmmp: ["5.8.2","5.9.0", "5.10.0"]
pmmp: ["5.8.2","5.9.0", "5.10.0", "5.15.0"]

steps:
- uses: actions/checkout@v4
Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ composer/install: dev/composer.phar
$(PHP) $(COMPOSER) install

unittests:
export PHP_VERSION=8.1 && export PMMP_TAG=5.10.0 && make suitetest
export PHP_VERSION=8.2 && export PMMP_TAG=5.15.0 && make suitetest

suitetest:
$(eval CONTAINER_PREFIX := unittests-suite)
Expand Down
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@
"require-dev": {
"friendsofphp/php-cs-fixer": "*",
"phpstan/phpstan": "^1.10",
"pocketmine/pocketmine-mp": "^5.8"
"pocketmine/pocketmine-mp": "^5.15"
}
}
295 changes: 145 additions & 150 deletions composer.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/framework/assert/BaseAssert.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ protected function assertEquals(mixed $expected, mixed $actual, string $message
/**
* @phpstan-return PromiseInterface<null>
*/
protected function assertNotEquals(mixed $expected, mixed $actual, string $message = null) : PromiseInterface {
protected function assertNotEquals(mixed $expected, mixed $actual, ?string $message = null) : PromiseInterface {
Assert::notEq($actual, $expected, $message ?? "Expected $actual to not be equal to $expected");

return $this->assertSyncPromise();
Expand Down
10 changes: 8 additions & 2 deletions src/players/DefaultTestPlayerListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
use pocketmine\network\mcpe\protocol\types\PlayerAction;
use pocketmine\player\Player;
use pocketmine\scheduler\ClosureTask;
use pocketmine\VersionInfo;
use ShockedPlot7560\PmmpUnit\players\listener\TestPlayerListener;
use ShockedPlot7560\PmmpUnit\players\network\listener\ClosureTestPlayerPacketListener;
use ShockedPlot7560\PmmpUnit\players\network\TestPlayerNetworkSession;
Expand All @@ -39,7 +40,12 @@ public function onPlayerAdd(Player $player) : void {
$this->plugin->getPlugin()->getScheduler()->scheduleDelayedTask(new ClosureTask(static function () use ($session, $entity_runtime_id) : void {
if ($session->isConnected()) {
$packet = SetLocalPlayerAsInitializedPacket::create($entity_runtime_id);
$serializer = PacketSerializer::encoder(new PacketSerializerContext(TypeConverter::getInstance()->getItemTypeDictionary()));
if(version_compare(VersionInfo::BASE_VERSION, '5.15.0') === -1){

Check failure on line 43 in src/players/DefaultTestPlayerListener.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Strict comparison using === between 0 and -1 will always evaluate to false.

Check failure on line 43 in src/players/DefaultTestPlayerListener.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Strict comparison using === between 0 and -1 will always evaluate to false.
// for backward compatibility
$serializer = PacketSerializer::encoder(new PacketSerializerContext(TypeConverter::getInstance()->getItemTypeDictionary()));

Check failure on line 45 in src/players/DefaultTestPlayerListener.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Instantiated class pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext not found.

Check failure on line 45 in src/players/DefaultTestPlayerListener.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Static method pocketmine\network\mcpe\protocol\serializer\PacketSerializer::encoder() invoked with 1 parameter, 0 required.

Check failure on line 45 in src/players/DefaultTestPlayerListener.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Instantiated class pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext not found.

Check failure on line 45 in src/players/DefaultTestPlayerListener.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Static method pocketmine\network\mcpe\protocol\serializer\PacketSerializer::encoder() invoked with 1 parameter, 0 required.
} else {
$serializer = PacketSerializer::encoder();
}
$packet->encode($serializer);
$session->handleDataPacket($packet, $serializer->getBuffer());
}
Expand Down Expand Up @@ -75,7 +81,7 @@ public function onPlayerAdd(Player $player) : void {
0
);

$serializer = PacketSerializer::encoder(new PacketSerializerContext(TypeConverter::getInstance()->getItemTypeDictionary()));
$serializer = PacketSerializer::encoder();
$packet->encode($serializer);
$session->handleDataPacket($packet, $serializer->getBuffer());
}
Expand Down
22 changes: 17 additions & 5 deletions src/players/TestPacketSender.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,23 @@
namespace ShockedPlot7560\PmmpUnit\players;

use pocketmine\network\mcpe\PacketSender;
use pocketmine\VersionInfo;

final class TestPacketSender implements PacketSender {
public function send(string $payload, bool $immediate) : void {
if(version_compare(VersionInfo::BASE_VERSION, '5.15.0') === -1){

Check failure on line 10 in src/players/TestPacketSender.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Strict comparison using === between 0 and -1 will always evaluate to false.

Check failure on line 10 in src/players/TestPacketSender.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Strict comparison using === between 0 and -1 will always evaluate to false.
final class TestPacketSender implements PacketSender {
public function send(string $payload, bool $immediate) : void {

Check failure on line 12 in src/players/TestPacketSender.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Method ShockedPlot7560\PmmpUnit\players\TestPacketSender::send() overrides method pocketmine\network\mcpe\PacketSender::send() but misses parameter #3 $receiptId.

Check failure on line 12 in src/players/TestPacketSender.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Method ShockedPlot7560\PmmpUnit\players\TestPacketSender::send() overrides method pocketmine\network\mcpe\PacketSender::send() but misses parameter #3 $receiptId.
}

public function close(string $reason = "unknown reason") : void {
}
}

public function close(string $reason = "unknown reason") : void {
} else {
final class TestPacketSender implements PacketSender {
public function send(string $payload, bool $immediate, ?int $receiptId) : void {
}

public function close(string $reason = "unknown reason") : void {
}
}
}

}
23 changes: 17 additions & 6 deletions src/players/TestPlayerManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
use pocketmine\scheduler\ClosureTask;
use pocketmine\Server;
use pocketmine\utils\Limits;
use pocketmine\VersionInfo;
use ReflectionClass;
use ReflectionMethod;
use ReflectionProperty;
Expand Down Expand Up @@ -153,16 +154,22 @@ public function addPlayer(TestPlayerInfo $info) : Promise {
if ($rakLibInterface === null) {
throw new RuntimeException("RakLibInterface not found");
}
/** @var ReflectionClass<RakLibInterface> $reflection */
$reflection = new ReflectionClass($rakLibInterface);
$packetContect = $reflection->getProperty("packetSerializerContext");
$value = $packetContect->getValue($rakLibInterface);
if(version_compare(VersionInfo::BASE_VERSION, '5.15.0') === -1){

Check failure on line 157 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Strict comparison using === between 0 and -1 will always evaluate to false.

Check failure on line 157 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Strict comparison using === between 0 and -1 will always evaluate to false.
/** @var ReflectionClass<RakLibInterface> $reflection */
$reflection = new ReflectionClass($rakLibInterface);
$packetContect = $reflection->getProperty("packetSerializerContext");
$value = $packetContect->getValue($rakLibInterface);
$packetBroadcaster = new StandardPacketBroadcaster($server, $value);

Check failure on line 162 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Class pocketmine\network\mcpe\StandardPacketBroadcaster constructor invoked with 2 parameters, 1 required.

Check failure on line 162 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Class pocketmine\network\mcpe\StandardPacketBroadcaster constructor invoked with 2 parameters, 1 required.
} else {
$packetBroadcaster = new StandardPacketBroadcaster($server);
}

$session = new TestPlayerNetworkSession(
$server,
$network->getSessionManager(),
PacketPool::getInstance(),
new TestPacketSender(),
new StandardPacketBroadcaster($server, $value),
$packetBroadcaster,
ZlibCompressor::getInstance(),
$server->getIp(),
$server->getPort(),
Expand All @@ -177,7 +184,11 @@ public function addPlayer(TestPlayerInfo $info) : Promise {
$rp->invoke($session);

$packet = ResourcePackClientResponsePacket::create(ResourcePackClientResponsePacket::STATUS_COMPLETED, []);
$serializer = PacketSerializer::encoder(new PacketSerializerContext(TypeConverter::getInstance()->getItemTypeDictionary()));
if(version_compare(VersionInfo::BASE_VERSION, '5.15.0') === -1){

Check failure on line 187 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Strict comparison using === between 0 and -1 will always evaluate to false.

Check failure on line 187 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Strict comparison using === between 0 and -1 will always evaluate to false.
$serializer = PacketSerializer::encoder(new PacketSerializerContext(TypeConverter::getInstance()->getItemTypeDictionary()));

Check failure on line 188 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Instantiated class pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext not found.

Check failure on line 188 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.2)

Static method pocketmine\network\mcpe\protocol\serializer\PacketSerializer::encoder() invoked with 1 parameter, 0 required.

Check failure on line 188 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Instantiated class pocketmine\network\mcpe\protocol\serializer\PacketSerializerContext not found.

Check failure on line 188 in src/players/TestPlayerManager.php

View workflow job for this annotation

GitHub Actions / PHPStan analysis (ubuntu-20.04, 8.3)

Static method pocketmine\network\mcpe\protocol\serializer\PacketSerializer::encoder() invoked with 1 parameter, 0 required.
}else{
$serializer = PacketSerializer::encoder();
}
$packet->encode($serializer);
$session->handleDataPacket($packet, $serializer->getBuffer());

Expand Down
15 changes: 10 additions & 5 deletions src/players/network/TestPlayerNetworkSession.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
use pocketmine\player\Player;
use pocketmine\promise\PromiseResolver;
use pocketmine\Server;
use pocketmine\VersionInfo;
use ReflectionClass;
use ReflectionMethod;
use ReflectionProperty;
Expand Down Expand Up @@ -53,11 +54,15 @@ public function __construct(
break;
}
}
/** @var ReflectionClass<RakLibInterface> $reflection */
$reflection = new ReflectionClass($rakLibInterface);
$packetContect = $reflection->getProperty("packetSerializerContext");
$value = $packetContect->getValue($rakLibInterface);
parent::__construct($server, $manager, $packetPool, $value, $sender, $broadcaster, new StandardEntityEventBroadcaster($broadcaster, $typeConverter), $compressor, $typeConverter, $ip, $port);
if(version_compare(VersionInfo::BASE_VERSION, '5.15.0') === -1){
/** @var ReflectionClass<RakLibInterface> $reflection */
$reflection = new ReflectionClass($rakLibInterface);
$packetContect = $reflection->getProperty("packetSerializerContext");
$value = $packetContect->getValue($rakLibInterface);
parent::__construct($server, $manager, $packetPool, $value, $sender, $broadcaster, new StandardEntityEventBroadcaster($broadcaster, $typeConverter), $compressor, $typeConverter, $ip, $port);
} else {
parent::__construct($server, $manager, $packetPool, $sender, $broadcaster, new StandardEntityEventBroadcaster($broadcaster, $typeConverter), $compressor, $typeConverter, $ip, $port);
}
$this->playerAddResolver = $playerAddResolver;

// do not store the resolver eternally
Expand Down

0 comments on commit 547eab3

Please sign in to comment.