From e26c8b9e9fa3bf902be54d5511d8d9672c77d67b Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 12 Jan 2023 20:35:26 +0000 Subject: [PATCH] block: eliminate suspicious usages of $blockClicked in place() --- src/block/Button.php | 2 +- src/block/Ladder.php | 2 +- src/block/Lever.php | 2 +- src/block/Torch.php | 2 +- src/block/Vine.php | 2 +- src/block/WallCoralFan.php | 2 +- src/block/WaterLily.php | 14 ++------------ 7 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/block/Button.php b/src/block/Button.php index c447ddb8d..f86d8a579 100644 --- a/src/block/Button.php +++ b/src/block/Button.php @@ -61,7 +61,7 @@ abstract class Button extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if($this->canBeSupportedBy($blockClicked, $face)){ + if($this->canBeSupportedBy($blockReplace->getSide(Facing::opposite($face)), $face)){ $this->facing = $face; return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } diff --git a/src/block/Ladder.php b/src/block/Ladder.php index fcf2be061..ccedb33bd 100644 --- a/src/block/Ladder.php +++ b/src/block/Ladder.php @@ -70,7 +70,7 @@ class Ladder extends Transparent{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if($this->canBeSupportedBy($blockClicked, $face) && Facing::axis($face) !== Axis::Y){ + if($this->canBeSupportedBy($blockReplace->getSide(Facing::opposite($face)), $face) && Facing::axis($face) !== Axis::Y){ $this->facing = $face; return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); } diff --git a/src/block/Lever.php b/src/block/Lever.php index beec393b7..01512007b 100644 --- a/src/block/Lever.php +++ b/src/block/Lever.php @@ -95,7 +95,7 @@ class Lever extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if(!$this->canBeSupportedBy($blockClicked, $face)){ + if(!$this->canBeSupportedBy($blockReplace->getSide(Facing::opposite($face)), $face)){ return false; } diff --git a/src/block/Torch.php b/src/block/Torch.php index ded081bcc..99975d4f6 100644 --- a/src/block/Torch.php +++ b/src/block/Torch.php @@ -77,7 +77,7 @@ class Torch extends Flowable{ if($blockClicked->canBeReplaced() && $this->canBeSupportedBy($blockClicked->getSide(Facing::DOWN), Facing::UP)){ $this->facing = Facing::UP; return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); - }elseif($face !== Facing::DOWN && $this->canBeSupportedBy($blockClicked, $face)){ + }elseif($face !== Facing::DOWN && $this->canBeSupportedBy($blockReplace->getSide(Facing::opposite($face)), $face)){ $this->facing = $face; return parent::place($tx, $item, $blockReplace, $blockClicked, $face, $clickVector, $player); }else{ diff --git a/src/block/Vine.php b/src/block/Vine.php index 9159315da..80943dc7c 100644 --- a/src/block/Vine.php +++ b/src/block/Vine.php @@ -116,7 +116,7 @@ class Vine extends Flowable{ } public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if(!$blockClicked->isFullCube() || Facing::axis($face) === Axis::Y){ + if(!$blockReplace->getSide(Facing::opposite($face))->isFullCube() || Facing::axis($face) === Axis::Y){ return false; } diff --git a/src/block/WallCoralFan.php b/src/block/WallCoralFan.php index ee0dcc35a..fe8dc40a8 100644 --- a/src/block/WallCoralFan.php +++ b/src/block/WallCoralFan.php @@ -113,7 +113,7 @@ final class WallCoralFan extends BaseCoral{ public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ $axis = Facing::axis($face); - if(($axis !== Axis::X && $axis !== Axis::Z) || !$this->canBeSupportedBy($blockClicked, $face)){ + if(($axis !== Axis::X && $axis !== Axis::Z) || !$this->canBeSupportedBy($blockReplace->getSide(Facing::opposite($face)), $face)){ return false; } $this->facing = $face; diff --git a/src/block/WaterLily.php b/src/block/WaterLily.php index 39b3c8cee..25af0a8b0 100644 --- a/src/block/WaterLily.php +++ b/src/block/WaterLily.php @@ -23,12 +23,9 @@ declare(strict_types=1); namespace pocketmine\block; -use pocketmine\item\Item; use pocketmine\math\AxisAlignedBB; use pocketmine\math\Facing; use pocketmine\math\Vector3; -use pocketmine\player\Player; -use pocketmine\world\BlockTransaction; class WaterLily extends Flowable{ @@ -39,15 +36,8 @@ class WaterLily extends Flowable{ return [AxisAlignedBB::one()->contract(1 / 16, 0, 1 / 16)->trim(Facing::UP, 63 / 64)]; } - public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{ - if($blockClicked instanceof Water){ - $up = $blockClicked->getSide(Facing::UP); - if($up->canBeReplaced()){ - return parent::place($tx, $item, $up, $blockClicked, $face, $clickVector, $player); - } - } - - return false; + public function canBePlacedAt(Block $blockReplace, Vector3 $clickVector, int $face, bool $isClickedBlock) : bool{ + return !$blockReplace instanceof Water && parent::canBePlacedAt($blockReplace, $clickVector, $face, $isClickedBlock); } public function onNearbyBlockChange() : void{