getHeight() + $motive->getWidth(); if($currentTotalDimension < $totalDimension){ continue; } if(Painting::canFit($player->getWorld(), $blockReplace->getPosition(), $face, true, $motive)){ if($currentTotalDimension > $totalDimension){ $totalDimension = $currentTotalDimension; /* * This drops all motive possibilities smaller than this * We use the total of height + width to allow equal chance of horizontal/vertical paintings * when there is an L-shape of space available. */ $motives = []; } $motives[] = $motive; } } if(count($motives) === 0){ //No space available return ItemUseResult::NONE(); } /** @var PaintingMotive $motive */ $motive = $motives[array_rand($motives)]; $replacePos = $blockReplace->getPosition(); $clickedPos = $blockClicked->getPosition(); $entity = new Painting(Location::fromObject($replacePos, $replacePos->getWorld()), $clickedPos, $face, $motive); $this->pop(); $entity->spawnToAll(); $player->getWorld()->addSound($replacePos->add(0.5, 0.5, 0.5), new PaintingPlaceSound()); return ItemUseResult::SUCCESS(); } }