41 if($this->tryTransform()){
49 private function tryTransform() : bool{
50 $world = $this->position->getWorld();
51 $pos = $this->position;
53 if(!$world->getBlock($pos->up())->isTransparent()){
57 $hasWarpedNylium =
false;
58 $hasCrimsonNylium =
false;
60 for($x = -1; $x <= 1; $x++){
61 for($y = -1; $y <= 1; $y++){
62 for($z = -1; $z <= 1; $z++){
63 $blockTypeId = $world->getBlock($pos->add($x, $y, $z))->getTypeId();
65 if($blockTypeId === BlockTypeIds::WARPED_NYLIUM){
66 $hasWarpedNylium = true;
67 }elseif($blockTypeId === BlockTypeIds::CRIMSON_NYLIUM){
68 $hasCrimsonNylium = true;
71 if($hasWarpedNylium && $hasCrimsonNylium){
78 if(!$hasWarpedNylium && !$hasCrimsonNylium){
82 $world->setBlock($pos, match(
true){
83 $hasWarpedNylium && $hasCrimsonNylium => (mt_rand(0, 1) === 0 ? VanillaBlocks::WARPED_NYLIUM() : VanillaBlocks::CRIMSON_NYLIUM()),
84 $hasWarpedNylium => VanillaBlocks::WARPED_NYLIUM(),
85 $hasCrimsonNylium => VanillaBlocks::CRIMSON_NYLIUM(),