Merge branch 'legacy/pm4' into stable

This commit is contained in:
Dylan K. Taylor 2023-07-11 15:10:55 +01:00
commit ef85fbffe1
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
2 changed files with 26 additions and 20 deletions

View File

@ -8,6 +8,7 @@ on:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
concurrency: update-updater-api # only one job can run at a time, to avoid git conflicts when updating the repository
steps: steps:
- name: Install jq - name: Install jq

View File

@ -111,9 +111,9 @@ use pocketmine\utils\TextFormat;
use pocketmine\utils\Utils; use pocketmine\utils\Utils;
use pocketmine\world\format\Chunk; use pocketmine\world\format\Chunk;
use function array_push; use function array_push;
use function base64_encode;
use function count; use function count;
use function fmod; use function fmod;
use function get_debug_type;
use function implode; use function implode;
use function in_array; use function in_array;
use function is_bool; use function is_bool;
@ -743,27 +743,32 @@ class InGamePacketHandler extends PacketHandler{
if(!($nbt instanceof CompoundTag)) throw new AssumptionFailedError("PHPStan should ensure this is a CompoundTag"); //for phpstorm's benefit if(!($nbt instanceof CompoundTag)) throw new AssumptionFailedError("PHPStan should ensure this is a CompoundTag"); //for phpstorm's benefit
if($block instanceof BaseSign){ if($block instanceof BaseSign){
if(($textBlobTag = $nbt->getCompoundTag(Sign::TAG_FRONT_TEXT)?->getTag(Sign::TAG_TEXT_BLOB)) instanceof StringTag){ $frontTextTag = $nbt->getTag(Sign::TAG_FRONT_TEXT);
try{ if(!$frontTextTag instanceof CompoundTag){
$text = SignText::fromBlob($textBlobTag->getValue()); throw new PacketHandlingException("Invalid tag type " . get_debug_type($frontTextTag) . " for tag \"" . Sign::TAG_FRONT_TEXT . "\" in sign update data");
}catch(\InvalidArgumentException $e){ }
throw PacketHandlingException::wrap($e, "Invalid sign text update"); $textBlobTag = $frontTextTag->getTag(Sign::TAG_TEXT_BLOB);
} if(!$textBlobTag instanceof StringTag){
throw new PacketHandlingException("Invalid tag type " . get_debug_type($textBlobTag) . " for tag \"" . Sign::TAG_TEXT_BLOB . "\" in sign update data");
try{
if(!$block->updateText($this->player, $text)){
foreach($this->player->getWorld()->createBlockUpdatePackets([$pos]) as $updatePacket){
$this->session->sendDataPacket($updatePacket);
}
}
}catch(\UnexpectedValueException $e){
throw PacketHandlingException::wrap($e);
}
return true;
} }
$this->session->getLogger()->debug("Invalid sign update data: " . base64_encode($packet->nbt->getEncodedNbt())); try{
$text = SignText::fromBlob($textBlobTag->getValue());
}catch(\InvalidArgumentException $e){
throw PacketHandlingException::wrap($e, "Invalid sign text update");
}
try{
if(!$block->updateText($this->player, $text)){
foreach($this->player->getWorld()->createBlockUpdatePackets([$pos]) as $updatePacket){
$this->session->sendDataPacket($updatePacket);
}
}
}catch(\UnexpectedValueException $e){
throw PacketHandlingException::wrap($e);
}
return true;
} }
return false; return false;