From 73b923e3a1cc5822f113fb2892392e08bca546e1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 8 Nov 2019 11:08:22 +0000 Subject: [PATCH] cleanup eating clusterfuck --- src/pocketmine/Player.php | 31 ++++++++++++++++++++++--------- src/pocketmine/item/Bucket.php | 24 ------------------------ src/pocketmine/item/Food.php | 28 ---------------------------- src/pocketmine/item/Item.php | 4 ---- src/pocketmine/item/Potion.php | 23 ----------------------- 5 files changed, 22 insertions(+), 88 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index fcb6d9085..a36d074a4 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -2504,6 +2504,27 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ return true; case InventoryTransactionPacket::USE_ITEM_ACTION_CLICK_AIR: + if($this->isUsingItem()){ + $slot = $this->inventory->getItemInHand(); + if($slot instanceof Consumable){ + $ev = new PlayerItemConsumeEvent($this, $slot); + if($this->hasItemCooldown($slot)){ + $ev->setCancelled(); + } + $ev->call(); + if($ev->isCancelled() or !$this->consumeObject($slot)){ + $this->inventory->sendContents($this); + return true; + } + $this->resetItemCooldown($slot); + if($this->isSurvival()){ + $slot->pop(); + $this->inventory->setItemInHand($slot); + $this->inventory->addItem($slot->getResidue()); + } + $this->setUsingItem(false); + } + } $directionVector = $this->getDirectionVector(); if($this->isCreative()){ @@ -2533,13 +2554,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ } } - if(!$this->isUsingItem()){ - $this->setUsingItem(true); - return true; - } - - $this->setUsingItem(false); - $item->onUse($this); + $this->setUsingItem(true); return true; default: @@ -2663,8 +2678,6 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{ } return true; - case InventoryTransactionPacket::RELEASE_ITEM_ACTION_CONSUME: - break; default: break; } diff --git a/src/pocketmine/item/Bucket.php b/src/pocketmine/item/Bucket.php index 380b7a9b3..ffe4faa62 100644 --- a/src/pocketmine/item/Bucket.php +++ b/src/pocketmine/item/Bucket.php @@ -115,28 +115,4 @@ class Bucket extends Item implements Consumable{ public function onConsume(Living $consumer){ $consumer->removeAllEffects(); } - - public function onUse(Player $player) : bool{ - if($this->canBeConsumed()){ - $slot = $player->getInventory()->getItemInHand(); - - $ev = new PlayerItemConsumeEvent($player, $slot); - $ev->call(); - - /** @var $slot Consumable */ - if($ev->isCancelled() or !$player->consumeObject($slot)){ - $player->getInventory()->sendContents($player); - return true; - } - - if($player->isSurvival()){ - $slot->pop(); - $player->getInventory()->setItemInHand($slot); - $player->getInventory()->addItem($slot->getResidue()); - } - - return true; - } - return false; - } } diff --git a/src/pocketmine/item/Food.php b/src/pocketmine/item/Food.php index a97c02822..36f4cee4f 100644 --- a/src/pocketmine/item/Food.php +++ b/src/pocketmine/item/Food.php @@ -24,9 +24,6 @@ declare(strict_types=1); namespace pocketmine\item; use pocketmine\entity\Living; -use pocketmine\event\player\PlayerItemConsumeEvent; -use pocketmine\math\Vector3; -use pocketmine\Player; abstract class Food extends Item implements FoodSource{ public function requiresHunger() : bool{ @@ -44,32 +41,7 @@ abstract class Food extends Item implements FoodSource{ return []; } - public function onUse(Player $player) : bool{ - $slot = $player->getInventory()->getItemInHand(); - - $ev = new PlayerItemConsumeEvent($player, $slot); - $ev->call(); - - /** @var $slot Consumable */ - if($ev->isCancelled() or !$player->consumeObject($slot)){ - $player->getInventory()->sendContents($player); - return true; - } - - if($player->isSurvival()){ - $slot->pop(); - $player->getInventory()->setItemInHand($slot); - $player->getInventory()->addItem($slot->getResidue()); - } - - return true; - } - public function onConsume(Living $consumer){ } - - public function onClickAir(Player $player, Vector3 $directionVector) : bool{ - return true; - } } diff --git a/src/pocketmine/item/Item.php b/src/pocketmine/item/Item.php index 16c3df97a..664e07bba 100644 --- a/src/pocketmine/item/Item.php +++ b/src/pocketmine/item/Item.php @@ -848,10 +848,6 @@ class Item implements ItemIds, \JsonSerializable{ return 0; } - public function onUse(Player $player) : bool{ - return false; - } - /** * Compares an Item to this Item and check if they match. * diff --git a/src/pocketmine/item/Potion.php b/src/pocketmine/item/Potion.php index 0221e50a1..b2b927d54 100644 --- a/src/pocketmine/item/Potion.php +++ b/src/pocketmine/item/Potion.php @@ -26,8 +26,6 @@ namespace pocketmine\item; use pocketmine\entity\Effect; use pocketmine\entity\EffectInstance; use pocketmine\entity\Living; -use pocketmine\event\player\PlayerItemConsumeEvent; -use pocketmine\Player; class Potion extends Item implements Consumable{ @@ -237,25 +235,4 @@ class Potion extends Item implements Consumable{ public function getResidue(){ return ItemFactory::get(Item::GLASS_BOTTLE); } - - public function onUse(Player $player) : bool{ - $slot = $player->getInventory()->getItemInHand(); - - $ev = new PlayerItemConsumeEvent($player, $slot); - $ev->call(); - - /** @var $slot Consumable */ - if($ev->isCancelled() or !$player->consumeObject($slot)){ - $player->getInventory()->sendContents($player); - return true; - } - - if($player->isSurvival()){ - $slot->pop(); - $player->getInventory()->setItemInHand($slot); - $player->getInventory()->addItem($slot->getResidue()); - } - - return true; - } }