From 21aef97ba7efc1f4d7f916b61c6f73f8d3077786 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 1 Jun 2020 12:50:39 +0100 Subject: [PATCH] Player: fixed swapping book pages that only exist client-side, closes #3322 --- src/pocketmine/Player.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 20d76562d..950a21f4f 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -3088,6 +3088,10 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ $modifiedPages[] = $packet->pageNumber; break; case BookEditPacket::TYPE_SWAP_PAGES: + if(!$newBook->pageExists($packet->pageNumber) or !$newBook->pageExists($packet->secondaryPageNumber)){ + //the client will create pages on its own without telling us until it tries to switch them + $newBook->addPage(max($packet->pageNumber, $packet->secondaryPageNumber)); + } $newBook->swapPages($packet->pageNumber, $packet->secondaryPageNumber); $modifiedPages = [$packet->pageNumber, $packet->secondaryPageNumber]; break;