From 1252dd65a91aab06649c850aff9993c0e3b1df16 Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Mon, 29 Sep 2014 17:53:53 +0200 Subject: [PATCH] Improved PlayerInventory->setItemInHand() $source call, fixed Tool durability --- src/pocketmine/Player.php | 16 +++++++++------- src/pocketmine/inventory/PlayerInventory.php | 5 +++-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 9b06d7eaf..c68471b1f 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -1572,7 +1572,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $item = clone $this->inventory->getItemInHand(); //TODO: Implement adventure mode checks if($this->getLevel()->useItemOn($blockVector, $item, $packet->face, $packet->fx, $packet->fy, $packet->fz, $this) === true){ - $this->inventory->setItemInHand($item); + $this->inventory->setItemInHand($item, $this); $this->inventory->sendHeldItem($this->hasSpawned); break; } @@ -1652,9 +1652,9 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ if($this->isSurvival()){ $this->inventory->removeItem(Item::get(Item::ARROW, 0, 1)); $bow->setDamage($bow->getDamage() + 1); - $this->inventory->setItemInHand($bow); + $this->inventory->setItemInHand($bow, $this); if($bow->getDamage() >= 385){ - $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 0)); + $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 0), $this); } } $arrow->spawnToAll(); @@ -1687,7 +1687,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ if($this->getLevel()->useBreakOn($vector, $item, $this) === true){ if($this->isSurvival()){ - $this->inventory->setItemInHand($item); + $this->inventory->setItemInHand($item, $this); $this->inventory->sendHeldItem($this->hasSpawned); } break; @@ -1862,7 +1862,9 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ if($item->isTool() and $this->isSurvival()){ if($item->useOn($target) and $item->getDamage() >= $item->getMaxDurability()){ - $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 1)); + $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 1), $this); + }else{ + $this->inventory->setItemInHand($item, $this); } } } @@ -1962,7 +1964,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ $this->heal($items[$slot->getID()]); --$slot->count; - $this->inventory->setItemInHand($slot); + $this->inventory->setItemInHand($slot, $this); if($slot->getID() === Item::MUSHROOM_STEW or $slot->getID() === Item::BEETROOT_SOUP){ $this->inventory->addItem(Item::get(Item::BOWL, 0, 1)); } @@ -1983,7 +1985,7 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ break; } - $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 1)); + $this->inventory->setItemInHand(Item::get(Item::AIR, 0, 1), $this); $motion = $this->getDirectionVector()->multiply(0.4); $this->getLevel()->dropItem($this->add(0, 1.3, 0), $item, $motion, 40); diff --git a/src/pocketmine/inventory/PlayerInventory.php b/src/pocketmine/inventory/PlayerInventory.php index 6ae4ca994..0b9029031 100644 --- a/src/pocketmine/inventory/PlayerInventory.php +++ b/src/pocketmine/inventory/PlayerInventory.php @@ -89,11 +89,12 @@ class PlayerInventory extends BaseInventory{ /** * @param Item $item + * @param $source * * @return bool */ - public function setItemInHand(Item $item){ - return $this->setItem($this->getHeldItemSlot(), $item); + public function setItemInHand(Item $item, $source = null){ + return $this->setItem($this->getHeldItemSlot(), $item, $source); } public function getHeldItemSlot(){