From bd2cb4b851ed73c590929f3ac8299a5d8f9f373c Mon Sep 17 00:00:00 2001 From: Shoghi Cervantes Date: Tue, 15 Jul 2014 13:17:29 +0200 Subject: [PATCH] Fixed #1614, possible solution for #1678 --- src/pocketmine/Player.php | 4 ++-- src/pocketmine/inventory/PlayerInventory.php | 2 +- src/pocketmine/item/Block.php | 2 +- src/pocketmine/level/Level.php | 1 + start.sh | 4 ++-- 5 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/pocketmine/Player.php b/src/pocketmine/Player.php index 78d531653..58f2dd024 100644 --- a/src/pocketmine/Player.php +++ b/src/pocketmine/Player.php @@ -1411,11 +1411,11 @@ class Player extends Human implements CommandSender, InventoryHolder, IPlayer{ if($blockVector->distance($this) > 10){ }elseif(($this->gamemode & 0x01) === 1){ - $item = $this->inventory->getItemInHand();; + $item = $this->inventory->getItemInHand(); if($this->getLevel()->useItemOn($blockVector, $item, $packet->face, $packet->fx, $packet->fy, $packet->fz, $this) === true){ break; } - }elseif($this->inventory->getItemInHand()->getID() !== $packet->item or ($this->inventory->getItemInHand()->isTool() === false and $this->inventory->getItemInHand()->getDamage() !== $packet->meta)){ + }elseif($this->inventory->getItemInHand()->getID() !== $packet->item or (($damage = $this->inventory->getItemInHand()->getDamage()) !== $packet->meta and $damage !== null)){ $this->inventory->sendHeldItem($this); }else{ $item = clone $this->inventory->getItemInHand(); diff --git a/src/pocketmine/inventory/PlayerInventory.php b/src/pocketmine/inventory/PlayerInventory.php index a388a510e..c0b06e06b 100644 --- a/src/pocketmine/inventory/PlayerInventory.php +++ b/src/pocketmine/inventory/PlayerInventory.php @@ -83,7 +83,7 @@ class PlayerInventory extends BaseInventory{ if($item instanceof Item){ return $item; }else{ - return Item::get(Item::AIR); + return Item::get(Item::AIR, 0, 0); } } diff --git a/src/pocketmine/item/Block.php b/src/pocketmine/item/Block.php index b8b61ddaa..7e74ff776 100644 --- a/src/pocketmine/item/Block.php +++ b/src/pocketmine/item/Block.php @@ -33,7 +33,7 @@ class Block extends Item{ } public function setDamage($meta){ - $this->meta = $meta !== null ? $meta & 0xFF : null; + $this->meta = $meta !== null ? $meta & 0xf : null; $this->block->setDamage($this->meta); } diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index 68b069ba6..32982466b 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -898,6 +898,7 @@ class Level implements ChunkManager, Metadatable{ } + if($player instanceof Player){ $ev = new BlockPlaceEvent($player, $hand, $block, $target, $item); if(!$player->isOp() and ($distance = $this->server->getConfigInt("spawn-protection", 16)) > -1){ diff --git a/start.sh b/start.sh index 909eb6858..6a0c7b43e 100755 --- a/start.sh +++ b/start.sh @@ -48,9 +48,9 @@ LOOPS=0 set +e while [ "$LOOPS" -eq 0 ] || [ "$DO_LOOP" == "yes" ]; do if [ "$DO_LOOP" == "yes" ]; then - "$PHP_BINARY" "$POCKETMINE_FILE" "$@" + "$PHP_BINARY" "$POCKETMINE_FILE" $@ else - exec "$PHP_BINARY" "$POCKETMINE_FILE" "$@" + exec "$PHP_BINARY" "$POCKETMINE_FILE" $@ fi ((LOOPS++)) done