From b98dad6f638926f0a1d6175b6978736856e418cb Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 29 Jul 2019 16:37:40 +0100 Subject: [PATCH] Fixed WritableBook PC format deserialization --- src/pocketmine/item/WritableBookBase.php | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/pocketmine/item/WritableBookBase.php b/src/pocketmine/item/WritableBookBase.php index ef44dbf6a..c29c4f97d 100644 --- a/src/pocketmine/item/WritableBookBase.php +++ b/src/pocketmine/item/WritableBookBase.php @@ -24,8 +24,10 @@ declare(strict_types=1); namespace pocketmine\item; use Ds\Deque; +use pocketmine\nbt\NBT; use pocketmine\nbt\tag\CompoundTag; use pocketmine\nbt\tag\ListTag; +use pocketmine\nbt\tag\StringTag; abstract class WritableBookBase extends Item{ public const TAG_PAGES = "pages"; //TAG_List @@ -171,9 +173,16 @@ abstract class WritableBookBase extends Item{ $pages = $tag->getListTag(self::TAG_PAGES); if($pages !== null){ - /** @var CompoundTag $page */ - foreach($pages as $page){ - $this->pages->push(new WritableBookPage($page->getString(self::TAG_PAGE_TEXT), $page->getString(self::TAG_PAGE_PHOTONAME, ""))); + if($pages->getTagType() === NBT::TAG_Compound){ //PE format + /** @var CompoundTag $page */ + foreach($pages as $page){ + $this->pages->push(new WritableBookPage($page->getString(self::TAG_PAGE_TEXT), $page->getString(self::TAG_PAGE_PHOTONAME, ""))); + } + }elseif($pages->getTagType() === NBT::TAG_String){ //PC format + /** @var StringTag $page */ + foreach($pages as $page){ + $this->pages->push(new WritableBookPage($page->getValue())); + } } } }