From 2405e45b357caf7e0284ffd7d91c302260d10722 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Wed, 3 Nov 2021 21:26:20 +0000 Subject: [PATCH] Player: mark as not using item when held item slot is changed closes #4538 --- src/player/Player.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/player/Player.php b/src/player/Player.php index 2f27430ac..fdbb60391 100644 --- a/src/player/Player.php +++ b/src/player/Player.php @@ -73,6 +73,7 @@ use pocketmine\event\player\PlayerToggleSprintEvent; use pocketmine\event\player\PlayerTransferEvent; use pocketmine\form\Form; use pocketmine\form\FormValidationException; +use pocketmine\inventory\CallbackInventoryListener; use pocketmine\inventory\Inventory; use pocketmine\inventory\PlayerCursorInventory; use pocketmine\inventory\transaction\action\DropItemAction; @@ -291,6 +292,17 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{ parent::initEntity($nbt); $this->addDefaultWindows(); + $this->inventory->getListeners()->add(new CallbackInventoryListener( + function(Inventory $unused, int $slot) : void{ + if($slot === $this->inventory->getHeldItemIndex()){ + $this->setUsingItem(false); + } + }, + function() : void{ + $this->setUsingItem(false); + } + )); + $this->firstPlayed = $nbt->getLong("firstPlayed", $now = (int) (microtime(true) * 1000)); $this->lastPlayed = $nbt->getLong("lastPlayed", $now);