22declare(strict_types=1);
27use pocketmine\block\utils\BrewingStandSlot;
28use pocketmine\block\utils\SupportType;
36use
function array_key_exists;
37use
function spl_object_id;
45 protected array $slots = [];
48 $w->enumSet($this->slots, BrewingStandSlot::cases());
58 ->squash(
Axis::X, 7 / 16)
59 ->squash(
Axis::Z, 7 / 16)
65 return SupportType::NONE;
68 public function hasSlot(BrewingStandSlot $slot) : bool{
69 return array_key_exists(spl_object_id($slot), $this->slots);
72 public function setSlot(BrewingStandSlot $slot,
bool $occupied) : self{
74 $this->slots[spl_object_id($slot)] = $slot;
76 unset($this->slots[spl_object_id($slot)]);
92 foreach($slots as $slot){
93 $this->slots[spl_object_id($slot)] = $slot;
99 if($player instanceof
Player){
100 $stand = $this->position->getWorld()->getTile($this->position);
101 if($stand instanceof TileBrewingStand && $stand->canOpenWith($item->getCustomName())){
102 $player->setCurrentWindow($stand->getInventory());
110 $world = $this->position->getWorld();
111 $brewing = $world->getTile($this->position);
112 if($brewing instanceof TileBrewingStand){
113 if($brewing->onUpdate()){
114 $world->scheduleDelayedBlockUpdate($this->position, 1);
118 foreach(BrewingStandSlot::cases() as $slot){
119 $occupied = !$brewing->getInventory()->isSlotEmpty($slot->getSlotNumber());
120 if($occupied !== $this->hasSlot($slot)){
121 $this->setSlot($slot, $occupied);
127 $world->setBlock($this->position, $this);
recalculateCollisionBoxes()
getSupportType(int $facing)
onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player=null, array &$returnedItems=[])
describeBlockOnlyState(RuntimeDataDescriber $w)