mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 16:51:42 +00:00
parent
b3b3ee7c56
commit
c09d782503
@ -160,6 +160,10 @@ class Block extends Position implements BlockIds, Metadatable{
|
||||
return false;
|
||||
}
|
||||
|
||||
public function canBePlacedAt(Block $blockReplace, Vector3 $clickVector) : bool{
|
||||
return $blockReplace->canBeReplaced();
|
||||
}
|
||||
|
||||
/**
|
||||
* Places the Block, using block space and block target, and side. Returns if the block has been placed.
|
||||
*
|
||||
|
@ -78,6 +78,18 @@ class WoodenSlab extends Transparent{
|
||||
}
|
||||
}
|
||||
|
||||
public function canBePlacedAt(Block $blockReplace, Vector3 $clickVector) : bool{
|
||||
return parent::canBePlacedAt($blockReplace, $clickVector) or
|
||||
(
|
||||
$blockReplace->getId() === $this->getId() and
|
||||
$blockReplace->getVariant() === $this->getVariant() and
|
||||
(
|
||||
(($blockReplace->getDamage() & 0x08) !== 0 and ($clickVector->y <= 0.5 or $clickVector->y === 1.0)) or //top slab, fill bottom half
|
||||
(($blockReplace->getDamage() & 0x08) === 0 and ($clickVector->y >= 0.5 or $clickVector->y === 0.0)) //bottom slab, fill top half
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
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){
|
||||
|
@ -1774,14 +1774,11 @@ class Level implements ChunkManager, Metadatable{
|
||||
return false;
|
||||
}
|
||||
|
||||
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() === true){
|
||||
if($hand->canBePlacedAt($blockClicked, $facePos)){
|
||||
$blockReplace = $blockClicked;
|
||||
$hand->position($blockReplace);
|
||||
//$face = -1;
|
||||
}elseif(!$hand->canBePlacedAt($blockReplace, $facePos)){
|
||||
return false;
|
||||
}
|
||||
|
||||
if($hand->isSolid() === true and $hand->getBoundingBox() !== null){
|
||||
|
Loading…
x
Reference in New Issue
Block a user