mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-04 00:59:51 +00:00
Added rooted dirt
This commit is contained in:
parent
bedf79e2cd
commit
a7313ed9d9
@ -26,6 +26,7 @@ namespace pocketmine\build\generate_runtime_enum_serializers;
|
|||||||
use pocketmine\block\utils\BellAttachmentType;
|
use pocketmine\block\utils\BellAttachmentType;
|
||||||
use pocketmine\block\utils\CopperOxidation;
|
use pocketmine\block\utils\CopperOxidation;
|
||||||
use pocketmine\block\utils\CoralType;
|
use pocketmine\block\utils\CoralType;
|
||||||
|
use pocketmine\block\utils\DirtType;
|
||||||
use pocketmine\block\utils\DyeColor;
|
use pocketmine\block\utils\DyeColor;
|
||||||
use pocketmine\block\utils\LeverFacing;
|
use pocketmine\block\utils\LeverFacing;
|
||||||
use pocketmine\block\utils\MushroomBlockType;
|
use pocketmine\block\utils\MushroomBlockType;
|
||||||
@ -158,6 +159,7 @@ $enumsUsed = [
|
|||||||
BellAttachmentType::getAll(),
|
BellAttachmentType::getAll(),
|
||||||
CopperOxidation::getAll(),
|
CopperOxidation::getAll(),
|
||||||
CoralType::getAll(),
|
CoralType::getAll(),
|
||||||
|
DirtType::getAll(),
|
||||||
DyeColor::getAll(),
|
DyeColor::getAll(),
|
||||||
LeverFacing::getAll(),
|
LeverFacing::getAll(),
|
||||||
MushroomBlockType::getAll(),
|
MushroomBlockType::getAll(),
|
||||||
|
@ -23,8 +23,10 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace pocketmine\block;
|
namespace pocketmine\block;
|
||||||
|
|
||||||
|
use pocketmine\block\utils\DirtType;
|
||||||
use pocketmine\data\runtime\RuntimeDataReader;
|
use pocketmine\data\runtime\RuntimeDataReader;
|
||||||
use pocketmine\data\runtime\RuntimeDataWriter;
|
use pocketmine\data\runtime\RuntimeDataWriter;
|
||||||
|
use pocketmine\item\Fertilizer;
|
||||||
use pocketmine\item\Hoe;
|
use pocketmine\item\Hoe;
|
||||||
use pocketmine\item\Item;
|
use pocketmine\item\Item;
|
||||||
use pocketmine\math\Facing;
|
use pocketmine\math\Facing;
|
||||||
@ -33,32 +35,50 @@ use pocketmine\player\Player;
|
|||||||
use pocketmine\world\sound\ItemUseOnBlockSound;
|
use pocketmine\world\sound\ItemUseOnBlockSound;
|
||||||
|
|
||||||
class Dirt extends Opaque{
|
class Dirt extends Opaque{
|
||||||
protected bool $coarse = false;
|
protected DirtType $dirtType;
|
||||||
|
|
||||||
public function getRequiredTypeDataBits() : int{ return 1; }
|
public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){
|
||||||
|
$this->dirtType = DirtType::NORMAL();
|
||||||
protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{
|
parent::__construct($idInfo, $name, $breakInfo);
|
||||||
$w->bool($this->coarse);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isCoarse() : bool{ return $this->coarse; }
|
public function getRequiredTypeDataBits() : int{ return 2; }
|
||||||
|
|
||||||
|
protected function describeType(RuntimeDataReader|RuntimeDataWriter $w) : void{
|
||||||
|
$w->dirtType($this->dirtType);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getDirtType() : DirtType{ return $this->dirtType; }
|
||||||
|
|
||||||
/** @return $this */
|
/** @return $this */
|
||||||
public function setCoarse(bool $coarse) : self{
|
public function setDirtType(DirtType $dirtType) : self{
|
||||||
$this->coarse = $coarse;
|
$this->dirtType = $dirtType;
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{
|
public function onInteract(Item $item, int $face, Vector3 $clickVector, ?Player $player = null, array &$returnedItems = []) : bool{
|
||||||
|
$world = $this->position->getWorld();
|
||||||
if($face === Facing::UP && $item instanceof Hoe){
|
if($face === Facing::UP && $item instanceof Hoe){
|
||||||
$item->applyDamage(1);
|
$item->applyDamage(1);
|
||||||
|
|
||||||
$newBlock = $this->coarse ? VanillaBlocks::DIRT() : VanillaBlocks::FARMLAND();
|
$newBlock = $this->dirtType->equals(DirtType::NORMAL()) ? VanillaBlocks::FARMLAND() : VanillaBlocks::DIRT();
|
||||||
$world = $this->position->getWorld();
|
$center = $this->position->add(0.5, 0.5, 0.5);
|
||||||
$world->addSound($this->position->add(0.5, 0.5, 0.5), new ItemUseOnBlockSound($newBlock));
|
$world->addSound($center, new ItemUseOnBlockSound($newBlock));
|
||||||
$world->setBlock($this->position, $newBlock);
|
$world->setBlock($this->position, $newBlock);
|
||||||
|
if($this->dirtType->equals(DirtType::ROOTED())){
|
||||||
|
$world->dropItem($center, VanillaBlocks::HANGING_ROOTS()->asItem());
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
}elseif($this->dirtType->equals(DirtType::ROOTED()) && $item instanceof Fertilizer){
|
||||||
|
$down = $this->getSide(Facing::DOWN);
|
||||||
|
if($down->getTypeId() !== BlockTypeIds::AIR){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
$item->pop();
|
||||||
|
$world->setBlock($down->position, VanillaBlocks::HANGING_ROOTS());
|
||||||
|
//TODO: bonemeal particles, growth sounds
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -23,6 +23,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace pocketmine\block;
|
namespace pocketmine\block;
|
||||||
|
|
||||||
|
use pocketmine\block\utils\DirtType;
|
||||||
use pocketmine\event\block\BlockSpreadEvent;
|
use pocketmine\event\block\BlockSpreadEvent;
|
||||||
use pocketmine\item\Fertilizer;
|
use pocketmine\item\Fertilizer;
|
||||||
use pocketmine\item\Hoe;
|
use pocketmine\item\Hoe;
|
||||||
@ -72,7 +73,7 @@ class Grass extends Opaque{
|
|||||||
$b = $world->getBlockAt($x, $y, $z);
|
$b = $world->getBlockAt($x, $y, $z);
|
||||||
if(
|
if(
|
||||||
!($b instanceof Dirt) ||
|
!($b instanceof Dirt) ||
|
||||||
$b->isCoarse() ||
|
!$b->getDirtType()->equals(DirtType::NORMAL()) ||
|
||||||
$world->getFullLightAt($x, $y + 1, $z) < 4 ||
|
$world->getFullLightAt($x, $y + 1, $z) < 4 ||
|
||||||
$world->getBlockAt($x, $y + 1, $z)->getLightFilter() >= 2
|
$world->getBlockAt($x, $y + 1, $z)->getLightFilter() >= 2
|
||||||
){
|
){
|
||||||
|
@ -23,6 +23,7 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace pocketmine\block;
|
namespace pocketmine\block;
|
||||||
|
|
||||||
|
use pocketmine\block\utils\DirtType;
|
||||||
use pocketmine\event\block\BlockSpreadEvent;
|
use pocketmine\event\block\BlockSpreadEvent;
|
||||||
use pocketmine\item\Item;
|
use pocketmine\item\Item;
|
||||||
use pocketmine\math\Facing;
|
use pocketmine\math\Facing;
|
||||||
@ -51,7 +52,7 @@ class Mycelium extends Opaque{
|
|||||||
$z = mt_rand($this->position->z - 1, $this->position->z + 1);
|
$z = mt_rand($this->position->z - 1, $this->position->z + 1);
|
||||||
$world = $this->position->getWorld();
|
$world = $this->position->getWorld();
|
||||||
$block = $world->getBlockAt($x, $y, $z);
|
$block = $world->getBlockAt($x, $y, $z);
|
||||||
if($block instanceof Dirt && !$block->isCoarse()){
|
if($block instanceof Dirt && $block->getDirtType()->equals(DirtType::NORMAL())){
|
||||||
if($block->getSide(Facing::UP) instanceof Transparent){
|
if($block->getSide(Facing::UP) instanceof Transparent){
|
||||||
$ev = new BlockSpreadEvent($block, $this, VanillaBlocks::MYCELIUM());
|
$ev = new BlockSpreadEvent($block, $this, VanillaBlocks::MYCELIUM());
|
||||||
$ev->call();
|
$ev->call();
|
||||||
|
48
src/block/utils/DirtType.php
Normal file
48
src/block/utils/DirtType.php
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* ____ _ _ __ __ _ __ __ ____
|
||||||
|
* | _ \ ___ ___| | _____| |_| \/ (_)_ __ ___ | \/ | _ \
|
||||||
|
* | |_) / _ \ / __| |/ / _ \ __| |\/| | | '_ \ / _ \_____| |\/| | |_) |
|
||||||
|
* | __/ (_) | (__| < __/ |_| | | | | | | | __/_____| | | | __/
|
||||||
|
* |_| \___/ \___|_|\_\___|\__|_| |_|_|_| |_|\___| |_| |_|_|
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU Lesser General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* @author PocketMine Team
|
||||||
|
* @link http://www.pocketmine.net/
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace pocketmine\block\utils;
|
||||||
|
|
||||||
|
use pocketmine\utils\EnumTrait;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This doc-block is generated automatically, do not modify it manually.
|
||||||
|
* This must be regenerated whenever registry members are added, removed or changed.
|
||||||
|
* @see build/generate-registry-annotations.php
|
||||||
|
* @generate-registry-docblock
|
||||||
|
*
|
||||||
|
* @method static DirtType COARSE()
|
||||||
|
* @method static DirtType NORMAL()
|
||||||
|
* @method static DirtType ROOTED()
|
||||||
|
*/
|
||||||
|
final class DirtType{
|
||||||
|
use EnumTrait;
|
||||||
|
|
||||||
|
protected static function setup() : void{
|
||||||
|
self::registerAll(
|
||||||
|
new self("normal"),
|
||||||
|
new self("coarse"),
|
||||||
|
new self("rooted")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -132,6 +132,7 @@ use pocketmine\block\TripwireHook;
|
|||||||
use pocketmine\block\UnderwaterTorch;
|
use pocketmine\block\UnderwaterTorch;
|
||||||
use pocketmine\block\utils\BrewingStandSlot;
|
use pocketmine\block\utils\BrewingStandSlot;
|
||||||
use pocketmine\block\utils\CoralType;
|
use pocketmine\block\utils\CoralType;
|
||||||
|
use pocketmine\block\utils\DirtType;
|
||||||
use pocketmine\block\utils\DyeColor;
|
use pocketmine\block\utils\DyeColor;
|
||||||
use pocketmine\block\utils\LeverFacing;
|
use pocketmine\block\utils\LeverFacing;
|
||||||
use pocketmine\block\VanillaBlocks as Blocks;
|
use pocketmine\block\VanillaBlocks as Blocks;
|
||||||
@ -886,8 +887,16 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
|
|||||||
$this->mapStairs(Blocks::DIORITE_STAIRS(), Ids::DIORITE_STAIRS);
|
$this->mapStairs(Blocks::DIORITE_STAIRS(), Ids::DIORITE_STAIRS);
|
||||||
$this->map(Blocks::DIORITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_DIORITE));
|
$this->map(Blocks::DIORITE_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_DIORITE));
|
||||||
$this->map(Blocks::DIRT(), function(Dirt $block) : Writer{
|
$this->map(Blocks::DIRT(), function(Dirt $block) : Writer{
|
||||||
|
$dirtType = $block->getDirtType();
|
||||||
|
if($dirtType->equals(DirtType::ROOTED())){
|
||||||
|
return new Writer(Ids::DIRT_WITH_ROOTS);
|
||||||
|
}
|
||||||
return Writer::create(Ids::DIRT)
|
return Writer::create(Ids::DIRT)
|
||||||
->writeString(StateNames::DIRT_TYPE, $block->isCoarse() ? StringValues::DIRT_TYPE_COARSE : StringValues::DIRT_TYPE_NORMAL);
|
->writeString(StateNames::DIRT_TYPE, match($dirtType){
|
||||||
|
DirtType::COARSE() => StringValues::DIRT_TYPE_COARSE,
|
||||||
|
DirtType::NORMAL() => StringValues::DIRT_TYPE_NORMAL,
|
||||||
|
default => throw new AssumptionFailedError("Unhandled dirt type " . $dirtType->name())
|
||||||
|
});
|
||||||
});
|
});
|
||||||
$this->map(Blocks::DOUBLE_TALLGRASS(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_GRASS, Writer::create(Ids::DOUBLE_PLANT)));
|
$this->map(Blocks::DOUBLE_TALLGRASS(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_GRASS, Writer::create(Ids::DOUBLE_PLANT)));
|
||||||
$this->map(Blocks::DYED_SHULKER_BOX(), function(DyedShulkerBox $block) : Writer{
|
$this->map(Blocks::DYED_SHULKER_BOX(), function(DyedShulkerBox $block) : Writer{
|
||||||
|
@ -33,6 +33,7 @@ use pocketmine\block\SweetBerryBush;
|
|||||||
use pocketmine\block\utils\BrewingStandSlot;
|
use pocketmine\block\utils\BrewingStandSlot;
|
||||||
use pocketmine\block\utils\CopperOxidation;
|
use pocketmine\block\utils\CopperOxidation;
|
||||||
use pocketmine\block\utils\CoralType;
|
use pocketmine\block\utils\CoralType;
|
||||||
|
use pocketmine\block\utils\DirtType;
|
||||||
use pocketmine\block\utils\DyeColor;
|
use pocketmine\block\utils\DyeColor;
|
||||||
use pocketmine\block\utils\LeverFacing;
|
use pocketmine\block\utils\LeverFacing;
|
||||||
use pocketmine\block\utils\SlabType;
|
use pocketmine\block\utils\SlabType;
|
||||||
@ -641,12 +642,13 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
|
|||||||
$this->mapStairs(Ids::DIORITE_STAIRS, fn() => Blocks::DIORITE_STAIRS());
|
$this->mapStairs(Ids::DIORITE_STAIRS, fn() => Blocks::DIORITE_STAIRS());
|
||||||
$this->map(Ids::DIRT, function(Reader $in) : Block{
|
$this->map(Ids::DIRT, function(Reader $in) : Block{
|
||||||
return Blocks::DIRT()
|
return Blocks::DIRT()
|
||||||
->setCoarse(match($value = $in->readString(StateNames::DIRT_TYPE)){
|
->setDirtType(match($value = $in->readString(StateNames::DIRT_TYPE)){
|
||||||
StringValues::DIRT_TYPE_NORMAL => false,
|
StringValues::DIRT_TYPE_NORMAL => DirtType::NORMAL(),
|
||||||
StringValues::DIRT_TYPE_COARSE => true,
|
StringValues::DIRT_TYPE_COARSE => DirtType::COARSE(),
|
||||||
default => throw $in->badValueException(StateNames::DIRT_TYPE, $value),
|
default => throw $in->badValueException(StateNames::DIRT_TYPE, $value),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
$this->map(Ids::DIRT_WITH_ROOTS, fn() => Blocks::DIRT()->setDirtType(DirtType::ROOTED()));
|
||||||
$this->map(Ids::DOUBLE_PLANT, function(Reader $in) : Block{
|
$this->map(Ids::DOUBLE_PLANT, function(Reader $in) : Block{
|
||||||
return (match($type = $in->readString(StateNames::DOUBLE_PLANT_TYPE)){
|
return (match($type = $in->readString(StateNames::DOUBLE_PLANT_TYPE)){
|
||||||
StringValues::DOUBLE_PLANT_TYPE_FERN => Blocks::LARGE_FERN(),
|
StringValues::DOUBLE_PLANT_TYPE_FERN => Blocks::LARGE_FERN(),
|
||||||
|
@ -62,6 +62,15 @@ trait RuntimeEnumDeserializerTrait{
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function dirtType(\pocketmine\block\utils\DirtType &$value) : void{
|
||||||
|
$value = match($this->readInt(2)){
|
||||||
|
0 => \pocketmine\block\utils\DirtType::COARSE(),
|
||||||
|
1 => \pocketmine\block\utils\DirtType::NORMAL(),
|
||||||
|
2 => \pocketmine\block\utils\DirtType::ROOTED(),
|
||||||
|
default => throw new InvalidSerializedRuntimeDataException("Invalid serialized value for DirtType")
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
public function dyeColor(\pocketmine\block\utils\DyeColor &$value) : void{
|
public function dyeColor(\pocketmine\block\utils\DyeColor &$value) : void{
|
||||||
$value = match($this->readInt(4)){
|
$value = match($this->readInt(4)){
|
||||||
0 => \pocketmine\block\utils\DyeColor::BLACK(),
|
0 => \pocketmine\block\utils\DyeColor::BLACK(),
|
||||||
|
@ -62,6 +62,15 @@ trait RuntimeEnumSerializerTrait{
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function dirtType(\pocketmine\block\utils\DirtType $value) : void{
|
||||||
|
$this->int(2, match($value){
|
||||||
|
\pocketmine\block\utils\DirtType::COARSE() => 0,
|
||||||
|
\pocketmine\block\utils\DirtType::NORMAL() => 1,
|
||||||
|
\pocketmine\block\utils\DirtType::ROOTED() => 2,
|
||||||
|
default => throw new \pocketmine\utils\AssumptionFailedError("All DirtType cases should be covered")
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public function dyeColor(\pocketmine\block\utils\DyeColor $value) : void{
|
public function dyeColor(\pocketmine\block\utils\DyeColor $value) : void{
|
||||||
$this->int(4, match($value){
|
$this->int(4, match($value){
|
||||||
\pocketmine\block\utils\DyeColor::BLACK() => 0,
|
\pocketmine\block\utils\DyeColor::BLACK() => 0,
|
||||||
|
@ -27,6 +27,7 @@ use pocketmine\block\Block;
|
|||||||
use pocketmine\block\Light;
|
use pocketmine\block\Light;
|
||||||
use pocketmine\block\utils\CopperOxidation;
|
use pocketmine\block\utils\CopperOxidation;
|
||||||
use pocketmine\block\utils\CoralType;
|
use pocketmine\block\utils\CoralType;
|
||||||
|
use pocketmine\block\utils\DirtType;
|
||||||
use pocketmine\block\utils\DyeColor;
|
use pocketmine\block\utils\DyeColor;
|
||||||
use pocketmine\block\utils\SkullType;
|
use pocketmine\block\utils\SkullType;
|
||||||
use pocketmine\block\utils\SlabType;
|
use pocketmine\block\utils\SlabType;
|
||||||
@ -214,7 +215,7 @@ final class StringToItemParser extends StringToTParser{
|
|||||||
$result->registerBlock("clay_block", fn() => Blocks::CLAY());
|
$result->registerBlock("clay_block", fn() => Blocks::CLAY());
|
||||||
$result->registerBlock("coal_block", fn() => Blocks::COAL());
|
$result->registerBlock("coal_block", fn() => Blocks::COAL());
|
||||||
$result->registerBlock("coal_ore", fn() => Blocks::COAL_ORE());
|
$result->registerBlock("coal_ore", fn() => Blocks::COAL_ORE());
|
||||||
$result->registerBlock("coarse_dirt", fn() => Blocks::DIRT()->setCoarse(true));
|
$result->registerBlock("coarse_dirt", fn() => Blocks::DIRT()->setDirtType(DirtType::COARSE()));
|
||||||
$result->registerBlock("cobble", fn() => Blocks::COBBLESTONE());
|
$result->registerBlock("cobble", fn() => Blocks::COBBLESTONE());
|
||||||
$result->registerBlock("cobble_stairs", fn() => Blocks::COBBLESTONE_STAIRS());
|
$result->registerBlock("cobble_stairs", fn() => Blocks::COBBLESTONE_STAIRS());
|
||||||
$result->registerBlock("cobble_wall", fn() => Blocks::COBBLESTONE_WALL());
|
$result->registerBlock("cobble_wall", fn() => Blocks::COBBLESTONE_WALL());
|
||||||
@ -329,7 +330,8 @@ final class StringToItemParser extends StringToTParser{
|
|||||||
$result->registerBlock("diorite_slab", fn() => Blocks::DIORITE_SLAB());
|
$result->registerBlock("diorite_slab", fn() => Blocks::DIORITE_SLAB());
|
||||||
$result->registerBlock("diorite_stairs", fn() => Blocks::DIORITE_STAIRS());
|
$result->registerBlock("diorite_stairs", fn() => Blocks::DIORITE_STAIRS());
|
||||||
$result->registerBlock("diorite_wall", fn() => Blocks::DIORITE_WALL());
|
$result->registerBlock("diorite_wall", fn() => Blocks::DIORITE_WALL());
|
||||||
$result->registerBlock("dirt", fn() => Blocks::DIRT());
|
$result->registerBlock("dirt", fn() => Blocks::DIRT()->setDirtType(DirtType::NORMAL()));
|
||||||
|
$result->registerBlock("dirt_with_roots", fn() => Blocks::DIRT()->setDirtType(DirtType::ROOTED()));
|
||||||
$result->registerBlock("door_block", fn() => Blocks::OAK_DOOR());
|
$result->registerBlock("door_block", fn() => Blocks::OAK_DOOR());
|
||||||
$result->registerBlock("double_plant", fn() => Blocks::SUNFLOWER());
|
$result->registerBlock("double_plant", fn() => Blocks::SUNFLOWER());
|
||||||
$result->registerBlock("double_red_sandstone_slab", fn() => Blocks::RED_SANDSTONE_SLAB()->setSlabType(SlabType::DOUBLE()));
|
$result->registerBlock("double_red_sandstone_slab", fn() => Blocks::RED_SANDSTONE_SLAB()->setSlabType(SlabType::DOUBLE()));
|
||||||
@ -914,6 +916,7 @@ final class StringToItemParser extends StringToTParser{
|
|||||||
$result->registerBlock("repeater", fn() => Blocks::REDSTONE_REPEATER());
|
$result->registerBlock("repeater", fn() => Blocks::REDSTONE_REPEATER());
|
||||||
$result->registerBlock("repeater_block", fn() => Blocks::REDSTONE_REPEATER());
|
$result->registerBlock("repeater_block", fn() => Blocks::REDSTONE_REPEATER());
|
||||||
$result->registerBlock("reserved6", fn() => Blocks::RESERVED6());
|
$result->registerBlock("reserved6", fn() => Blocks::RESERVED6());
|
||||||
|
$result->registerBlock("rooted_dirt", fn() => Blocks::DIRT()->setDirtType(DirtType::ROOTED()));
|
||||||
$result->registerBlock("rose", fn() => Blocks::POPPY());
|
$result->registerBlock("rose", fn() => Blocks::POPPY());
|
||||||
$result->registerBlock("rose_bush", fn() => Blocks::ROSE_BUSH());
|
$result->registerBlock("rose_bush", fn() => Blocks::ROSE_BUSH());
|
||||||
$result->registerBlock("sand", fn() => Blocks::SAND());
|
$result->registerBlock("sand", fn() => Blocks::SAND());
|
||||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user