diff --git a/src/pocketmine/block/Air.php b/src/pocketmine/block/Air.php index 4ade171fc..1e8e84d6c 100644 --- a/src/pocketmine/block/Air.php +++ b/src/pocketmine/block/Air.php @@ -54,7 +54,7 @@ class Air extends Transparent{ return true; } - public function canBeReplaced(Block $with = null) : bool{ + public function canBeReplaced() : bool{ return true; } diff --git a/src/pocketmine/block/Block.php b/src/pocketmine/block/Block.php index 48facec70..dd5148780 100644 --- a/src/pocketmine/block/Block.php +++ b/src/pocketmine/block/Block.php @@ -284,11 +284,9 @@ class Block extends Position implements BlockIds, Metadatable{ } /** - * @param Block|null $with - * * @return bool */ - public function canBeReplaced(Block $with = null) : bool{ + public function canBeReplaced() : bool{ return false; } diff --git a/src/pocketmine/block/DoublePlant.php b/src/pocketmine/block/DoublePlant.php index 5637fda4c..ac76e6db9 100644 --- a/src/pocketmine/block/DoublePlant.php +++ b/src/pocketmine/block/DoublePlant.php @@ -38,7 +38,7 @@ class DoublePlant extends Flowable{ $this->meta = $meta; } - public function canBeReplaced(Block $with = null) : bool{ + public function canBeReplaced() : bool{ return $this->meta === 2 or $this->meta === 3; //grass or fern } diff --git a/src/pocketmine/block/Fire.php b/src/pocketmine/block/Fire.php index 0b44d54bc..edeeb56bb 100644 --- a/src/pocketmine/block/Fire.php +++ b/src/pocketmine/block/Fire.php @@ -57,7 +57,7 @@ class Fire extends Flowable{ return false; } - public function canBeReplaced(Block $with = null) : bool{ + public function canBeReplaced() : bool{ return true; } diff --git a/src/pocketmine/block/Liquid.php b/src/pocketmine/block/Liquid.php index ad639cdf6..185f271e4 100644 --- a/src/pocketmine/block/Liquid.php +++ b/src/pocketmine/block/Liquid.php @@ -41,7 +41,7 @@ abstract class Liquid extends Transparent{ return false; } - public function canBeReplaced(Block $with = null) : bool{ + public function canBeReplaced() : bool{ return true; } diff --git a/src/pocketmine/block/SnowLayer.php b/src/pocketmine/block/SnowLayer.php index 8b602161d..a9163f8af 100644 --- a/src/pocketmine/block/SnowLayer.php +++ b/src/pocketmine/block/SnowLayer.php @@ -42,7 +42,7 @@ class SnowLayer extends Flowable{ return "Snow Layer"; } - public function canBeReplaced(Block $with = null) : bool{ + public function canBeReplaced() : bool{ return true; } diff --git a/src/pocketmine/block/TallGrass.php b/src/pocketmine/block/TallGrass.php index d9836d395..54337f3de 100644 --- a/src/pocketmine/block/TallGrass.php +++ b/src/pocketmine/block/TallGrass.php @@ -37,7 +37,7 @@ class TallGrass extends Flowable{ $this->meta = $meta; } - public function canBeReplaced(Block $with = null) : bool{ + public function canBeReplaced() : bool{ return true; } diff --git a/src/pocketmine/block/WoodenSlab.php b/src/pocketmine/block/WoodenSlab.php index 1fa697d6b..0688554e7 100644 --- a/src/pocketmine/block/WoodenSlab.php +++ b/src/pocketmine/block/WoodenSlab.php @@ -78,10 +78,6 @@ class WoodenSlab extends Transparent{ } } - public function canBeReplaced(Block $with = null) : bool{ - return $with !== null and $with->getId() === $this->getId() and ($with->getDamage() & 0x07) === ($this->getDamage() & 0x07); - } - public function place(Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $facePos, Player $player = null) : bool{ $this->meta &= 0x07; if($face === Vector3::SIDE_DOWN){ diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index 4132224af..d9134f652 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -1723,20 +1723,23 @@ class Level implements ChunkManager, Metadatable{ return true; } - if(!$item->canBePlaced()){ + if($item->canBePlaced()){ + $hand = $item->getBlock(); + $hand->position($blockReplace); + }else{ return false; } - $hand = $item->getBlock(); + if(!($blockReplace->canBeReplaced() === true or ($hand->getId() === Item::WOODEN_SLAB and $blockReplace->getId() === Item::WOODEN_SLAB) or ($hand->getId() === Item::STONE_SLAB and $blockReplace->getId() === Item::STONE_SLAB))){ + return false; + } - if($blockClicked->canBeReplaced($hand)){ + if($blockClicked->canBeReplaced() === true){ $blockReplace = $blockClicked; - }elseif(!$blockReplace->canBeReplaced($hand)){ - return false; + $hand->position($blockReplace); + //$face = -1; } - $hand->position($blockReplace); - if($hand->isSolid() === true and $hand->getBoundingBox() !== null){ $entities = $this->getCollidingEntities($hand->getBoundingBox()); foreach($entities as $e){