Bed and Skull items now return a correct block, with appropriate type information

I wanted to do the same for banners, but unfortunately banners are a tad more complicated.
This commit is contained in:
Dylan K. Taylor 2021-06-30 17:27:14 +01:00
parent 12905d8c27
commit c05f6db8d9
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
4 changed files with 4 additions and 10 deletions

View File

@ -29,7 +29,6 @@ use pocketmine\block\utils\ColoredTrait;
use pocketmine\block\utils\DyeColor;
use pocketmine\block\utils\HorizontalFacingTrait;
use pocketmine\data\bedrock\DyeColorIdMap;
use pocketmine\item\Bed as ItemBed;
use pocketmine\item\Item;
use pocketmine\item\ItemFactory;
use pocketmine\lang\KnownTranslationKeys;
@ -174,9 +173,6 @@ class Bed extends Transparent{
}
public function place(BlockTransaction $tx, Item $item, Block $blockReplace, Block $blockClicked, int $face, Vector3 $clickVector, ?Player $player = null) : bool{
if($item instanceof ItemBed){ //TODO: the item should do this
$this->color = $item->getColor();
}
$down = $this->getSide(Facing::DOWN);
if(!$down->isTransparent()){
$this->facing = $player !== null ? $player->getHorizontalFacing() : Facing::NORTH;

View File

@ -29,7 +29,6 @@ use pocketmine\block\utils\SkullType;
use pocketmine\item\Item;
use pocketmine\item\ItemFactory;
use pocketmine\item\ItemIds;
use pocketmine\item\Skull as ItemSkull;
use pocketmine\math\AxisAlignedBB;
use pocketmine\math\Facing;
use pocketmine\math\Vector3;
@ -137,9 +136,6 @@ class Skull extends Flowable{
}
$this->facing = $face;
if($item instanceof ItemSkull){
$this->skullType = $item->getSkullType(); //TODO: the item should handle this, but this hack is currently needed because of tile mess
}
if($player !== null and $face === Facing::UP){
$this->rotation = ((int) floor(($player->getLocation()->getYaw() * 16 / 360) + 0.5)) & 0xf;
}

View File

@ -42,7 +42,7 @@ class Bed extends Item{
}
public function getBlock(?int $clickedFace = null) : Block{
return VanillaBlocks::BED();
return VanillaBlocks::BED()->setColor($this->color);
}
public function getMaxStackSize() : int{

View File

@ -38,7 +38,9 @@ class Skull extends Item{
}
public function getBlock(?int $clickedFace = null) : Block{
return VanillaBlocks::MOB_HEAD();
//TODO: we ought to be able to represent this as a regular ItemBlock
//but that's not currently possible because the skulltype isn't part of the internal block runtimeID
return VanillaBlocks::MOB_HEAD()->setSkullType($this->skullType);
}
public function getSkullType() : SkullType{