mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-06-07 12:18:46 +00:00
Merge remote-tracking branch 'origin/stable'
This commit is contained in:
commit
58498c2b0b
3
.github/ISSUE_TEMPLATE/bug_report.md
vendored
3
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -20,8 +20,9 @@ assignees: ''
|
|||||||
<!-- try the `version` command | LATEST IS NOT A VALID VERSION -->
|
<!-- try the `version` command | LATEST IS NOT A VALID VERSION -->
|
||||||
* PocketMine-MP:
|
* PocketMine-MP:
|
||||||
* PHP:
|
* PHP:
|
||||||
|
* Using JIT: yes/no (delete as appropriate) <!-- look for the giant yellow warning in the log that says you're using JIT -->
|
||||||
* Server OS:
|
* Server OS:
|
||||||
* Game version: PE/Win10 (delete as appropriate)
|
* Game version: Android/iOS/Win10/Xbox/PS4/Switch (delete as appropriate)
|
||||||
|
|
||||||
### Plugins
|
### Plugins
|
||||||
<!--- use the `plugins` command and paste the output below -->
|
<!--- use the `plugins` command and paste the output below -->
|
||||||
|
21
.github/workflows/main.yml
vendored
21
.github/workflows/main.yml
vendored
@ -13,7 +13,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
image: [ubuntu-20.04]
|
image: [ubuntu-20.04]
|
||||||
php: [7.4.20]
|
php: [7.4.20, 8.0.7]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2 #needed for build.sh
|
- uses: actions/checkout@v2 #needed for build.sh
|
||||||
@ -36,8 +36,13 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
image: [ubuntu-20.04]
|
include:
|
||||||
php: [7.4.20]
|
- php: 8.0.7
|
||||||
|
config: phpstan.php8.neon
|
||||||
|
image: ubuntu-20.04
|
||||||
|
- php: 7.4.20
|
||||||
|
config: phpstan.neon.dist
|
||||||
|
image: ubuntu-20.04
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@ -77,7 +82,7 @@ jobs:
|
|||||||
run: php composer.phar install --prefer-dist --no-interaction
|
run: php composer.phar install --prefer-dist --no-interaction
|
||||||
|
|
||||||
- name: Run PHPStan
|
- name: Run PHPStan
|
||||||
run: ./vendor/bin/phpstan analyze --no-progress --memory-limit=2G
|
run: ./vendor/bin/phpstan analyze --no-progress --memory-limit=2G -c ${{ matrix.config }}
|
||||||
|
|
||||||
phpunit:
|
phpunit:
|
||||||
name: PHPUnit tests
|
name: PHPUnit tests
|
||||||
@ -87,7 +92,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
image: [ubuntu-20.04]
|
image: [ubuntu-20.04]
|
||||||
php: [7.4.20]
|
php: [7.4.20, 8.0.7]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@ -139,7 +144,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
image: [ubuntu-20.04]
|
image: [ubuntu-20.04]
|
||||||
php: [7.4.20]
|
php: [7.4.20, 8.0.7]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@ -191,7 +196,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
image: [ubuntu-20.04]
|
image: [ubuntu-20.04]
|
||||||
php: [7.4.20]
|
php: [7.4.20, 8.0.7]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
@ -276,7 +281,7 @@ jobs:
|
|||||||
- name: Setup PHP and tools
|
- name: Setup PHP and tools
|
||||||
uses: shivammathur/setup-php@2.9.0
|
uses: shivammathur/setup-php@2.9.0
|
||||||
with:
|
with:
|
||||||
php-version: 7.4
|
php-version: 8.0
|
||||||
tools: php-cs-fixer
|
tools: php-cs-fixer
|
||||||
|
|
||||||
- name: Run PHP-CS-Fixer
|
- name: Run PHP-CS-Fixer
|
||||||
|
@ -9,3 +9,12 @@ Plugin developers should **only** update their required API to this version if y
|
|||||||
# 3.22.0
|
# 3.22.0
|
||||||
- Added support for Minecraft: Bedrock Edition 1.17.10.
|
- Added support for Minecraft: Bedrock Edition 1.17.10.
|
||||||
- Removed compatibility with earlier versions.
|
- Removed compatibility with earlier versions.
|
||||||
|
|
||||||
|
# 3.22.1
|
||||||
|
- Added a giant yellow startup warning if using OPcache JIT on PHP 8.0. JIT is currently considered highly unstable and not recommended for production use.
|
||||||
|
- When using a bad PHP binary, the bootstrap will now report the used `php.ini` path. This can be useful for debugging issues with extension loading when the wrong `php.ini` file is loaded for some reason.
|
||||||
|
- Fixed `start.cmd` causing the wrong `php.ini` to be loaded on Windows when a global PHP installation is used.
|
||||||
|
- A debug message is now logged containing expected vs. actual XUID of players when an XUID mismatch is detected.
|
||||||
|
- Improved the documentation for `Player->getUniqueId()`.
|
||||||
|
- Fixed a mistake in the documentation of `PlayerAuthInputFlags`.
|
||||||
|
- Fixed incorrect encoding of `NpcDialoguePacket`.
|
||||||
|
12
composer.lock
generated
12
composer.lock
generated
@ -2400,16 +2400,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "phpunit/phpunit",
|
"name": "phpunit/phpunit",
|
||||||
"version": "9.5.6",
|
"version": "9.5.7",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
"url": "https://github.com/sebastianbergmann/phpunit.git",
|
||||||
"reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb"
|
"reference": "d0dc8b6999c937616df4fb046792004b33fd31c5"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb",
|
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d0dc8b6999c937616df4fb046792004b33fd31c5",
|
||||||
"reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb",
|
"reference": "d0dc8b6999c937616df4fb046792004b33fd31c5",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -2487,7 +2487,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
|
||||||
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6"
|
"source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.7"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@ -2499,7 +2499,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2021-06-23T05:14:38+00:00"
|
"time": "2021-07-19T06:14:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "sebastian/cli-parser",
|
"name": "sebastian/cli-parser",
|
||||||
|
4
phpstan.php8.neon
Normal file
4
phpstan.php8.neon
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
includes:
|
||||||
|
- phpstan.neon.dist
|
||||||
|
- tests/phpstan/configs/php8.neon
|
||||||
|
|
@ -605,6 +605,7 @@ class NetworkSession{
|
|||||||
$myXUID = $this->info instanceof XboxLivePlayerInfo ? $this->info->getXuid() : "";
|
$myXUID = $this->info instanceof XboxLivePlayerInfo ? $this->info->getXuid() : "";
|
||||||
$kickForXUIDMismatch = function(string $xuid) use ($checkXUID, $myXUID) : bool{
|
$kickForXUIDMismatch = function(string $xuid) use ($checkXUID, $myXUID) : bool{
|
||||||
if($checkXUID && $myXUID !== $xuid){
|
if($checkXUID && $myXUID !== $xuid){
|
||||||
|
$this->logger->debug("XUID mismatch: expected '$xuid', but got '$myXUID'");
|
||||||
//TODO: Longer term, we should be identifying playerdata using something more reliable, like XUID or UUID.
|
//TODO: Longer term, we should be identifying playerdata using something more reliable, like XUID or UUID.
|
||||||
//However, that would be a very disruptive change, so this will serve as a stopgap for now.
|
//However, that would be a very disruptive change, so this will serve as a stopgap for now.
|
||||||
//Side note: this will also prevent offline players hijacking XBL playerdata on online servers, since their
|
//Side note: this will also prevent offline players hijacking XBL playerdata on online servers, since their
|
||||||
|
@ -376,19 +376,11 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the player's UUID. This should be preferred over their Xbox user ID (XUID) because UUID is a standard
|
* Returns the player's UUID. This should be the preferred method to identify a player.
|
||||||
* format which will never change, and all players will have one regardless of whether they are logged into Xbox
|
* It does not change if the player changes their username.
|
||||||
* Live.
|
|
||||||
*
|
*
|
||||||
* The UUID is comprised of:
|
* All players will have a UUID, regardless of whether they are logged into Xbox Live or not. However, note that
|
||||||
* - when logged into XBL: a hash of their XUID (and as such will not change for the lifetime of the XBL account)
|
* non-XBL players can fake their UUIDs.
|
||||||
* - when NOT logged into XBL: a hash of their name + clientID + secret device ID.
|
|
||||||
*
|
|
||||||
* WARNING: UUIDs of players **not logged into Xbox Live** CAN BE FAKED and SHOULD NOT be trusted!
|
|
||||||
*
|
|
||||||
* (In the olden days this method used to return a fake UUID computed by the server, which was used by plugins such
|
|
||||||
* as SimpleAuth for authentication. This is NOT SAFE anymore as this UUID is now what was given by the client, NOT
|
|
||||||
* a server-computed UUID.)
|
|
||||||
*/
|
*/
|
||||||
public function getUniqueId() : UuidInterface{
|
public function getUniqueId() : UuidInterface{
|
||||||
return parent::getUniqueId();
|
return parent::getUniqueId();
|
||||||
|
182
tests/phpstan/configs/php8.neon
Normal file
182
tests/phpstan/configs/php8.neon
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
parameters:
|
||||||
|
ignoreErrors:
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$stream of function fclose expects resource, resource\\|false given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/MemoryManager.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$stream of function fwrite expects resource, resource\\|false given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/MemoryManager.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$string of function strtolower expects string, mixed given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/ServerConfigGroup.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$stream of function fclose expects resource, resource\\|false given\\.$#"
|
||||||
|
count: 2
|
||||||
|
path: ../../../src/command/defaults/TimingsCommand.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$stream of function fseek expects resource, resource\\|false given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/command/defaults/TimingsCommand.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$stream of function fwrite expects resource, resource\\|false given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/command/defaults/TimingsCommand.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$stream of function stream_get_contents expects resource, resource\\|false given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/command/defaults/TimingsCommand.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$objectOrClass of class ReflectionClass constructor expects class\\-string\\<T of object\\>\\|T of object, string given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/event/HandlerListManager.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#2 \\$array of function array_map expects array, array\\|false given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/lang/Language.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Method pocketmine\\\\network\\\\mcpe\\\\JwtUtils\\:\\:parseDerPublicKey\\(\\) should return resource but returns OpenSSLAsymmetricKey\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/JwtUtils.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$key of function openssl_pkey_get_details expects OpenSSLAsymmetricKey, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/JwtUtils.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#3 \\$private_key of function openssl_sign expects array\\|OpenSSLAsymmetricKey\\|OpenSSLCertificate\\|string, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/JwtUtils.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#3 \\$public_key of function openssl_verify expects array\\|OpenSSLAsymmetricKey\\|OpenSSLCertificate\\|string, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/JwtUtils.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$key of function openssl_free_key expects OpenSSLAsymmetricKey, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/auth/ProcessLoginTask.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$public_key of function openssl_pkey_derive expects array\\|OpenSSLAsymmetricKey\\|OpenSSLCertificate\\|string, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/encryption/EncryptionUtils.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#2 \\$private_key of function openssl_pkey_derive expects array\\|OpenSSLAsymmetricKey\\|OpenSSLCertificate\\|string, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/encryption/EncryptionUtils.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$key of function openssl_free_key expects OpenSSLAsymmetricKey, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/encryption/PrepareEncryptionTask.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$key of function openssl_pkey_get_details expects OpenSSLAsymmetricKey, OpenSSLAsymmetricKey\\|resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/encryption/PrepareEncryptionTask.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$localPriv of static method pocketmine\\\\network\\\\mcpe\\\\encryption\\\\EncryptionUtils\\:\\:generateSharedSecret\\(\\) expects resource, OpenSSLAsymmetricKey given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/encryption/PrepareEncryptionTask.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$serverPriv of static method pocketmine\\\\network\\\\mcpe\\\\encryption\\\\EncryptionUtils\\:\\:generateServerHandshakeJwt\\(\\) expects resource, OpenSSLAsymmetricKey given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/encryption/PrepareEncryptionTask.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Static property pocketmine\\\\network\\\\mcpe\\\\encryption\\\\PrepareEncryptionTask\\:\\:\\$SERVER_PRIVATE_KEY \\(resource\\|null\\) does not accept OpenSSLAsymmetricKey\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/mcpe/encryption/PrepareEncryptionTask.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$socket of function socket_bind expects Socket, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/query/DedicatedQueryNetworkInterface.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$socket of function socket_close expects Socket, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/query/DedicatedQueryNetworkInterface.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$socket of function socket_last_error expects Socket\\|null, resource given\\.$#"
|
||||||
|
count: 3
|
||||||
|
path: ../../../src/network/query/DedicatedQueryNetworkInterface.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$socket of function socket_recvfrom expects Socket, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/query/DedicatedQueryNetworkInterface.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$socket of function socket_sendto expects Socket, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/query/DedicatedQueryNetworkInterface.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$socket of function socket_set_nonblock expects Socket, resource given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/query/DedicatedQueryNetworkInterface.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Property pocketmine\\\\network\\\\query\\\\DedicatedQueryNetworkInterface\\:\\:\\$socket \\(resource\\) does not accept Socket\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/network/query/DedicatedQueryNetworkInterface.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$ of closure expects resource, CurlHandle given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/utils/Internet.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#2 \\$offset of function substr expects int, mixed given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/utils/Internet.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#3 \\$length of function substr expects int\\|null, mixed given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/utils/Internet.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$string of function trim expects string, string\\|false given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/utils/Timezone.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#1 \\$timezoneId of function date_default_timezone_set expects string, string\\|false given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/utils/Timezone.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Strict comparison using \\=\\=\\= between array\\<string, mixed\\> and false will always evaluate to false\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/utils/Timezone.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Parameter \\#2 \\$array of function array_map expects array, mixed given\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/utils/Utils.php
|
||||||
|
|
||||||
|
-
|
||||||
|
message: "#^Strict comparison using \\=\\=\\= between array and false will always evaluate to false\\.$#"
|
||||||
|
count: 1
|
||||||
|
path: ../../../src/utils/Utils.php
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user