Skip to content

Commit 6924776

Browse files
committed
more misc unifications
1 parent 9a51354 commit 6924776

10 files changed

+269
-131
lines changed

src/data/bedrock/block/convert/BlockObjectToStateSerializer.php

Lines changed: 0 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,10 @@
2727
use pocketmine\block\Anvil;
2828
use pocketmine\block\Bamboo;
2929
use pocketmine\block\Barrel;
30-
use pocketmine\block\Bed;
3130
use pocketmine\block\Beetroot;
32-
use pocketmine\block\Bell;
3331
use pocketmine\block\BigDripleafHead;
3432
use pocketmine\block\BigDripleafStem;
3533
use pocketmine\block\Block;
36-
use pocketmine\block\BoneBlock;
37-
use pocketmine\block\BrewingStand;
3834
use pocketmine\block\BrownMushroomBlock;
3935
use pocketmine\block\Button;
4036
use pocketmine\block\CakeWithCandle;
@@ -73,13 +69,10 @@
7369
use pocketmine\block\ItemFrame;
7470
use pocketmine\block\Ladder;
7571
use pocketmine\block\Lava;
76-
use pocketmine\block\Lever;
7772
use pocketmine\block\Light;
7873
use pocketmine\block\LightningRod;
79-
use pocketmine\block\Loom;
8074
use pocketmine\block\MelonStem;
8175
use pocketmine\block\NetherPortal;
82-
use pocketmine\block\PinkPetals;
8376
use pocketmine\block\PitcherCrop;
8477
use pocketmine\block\Potato;
8578
use pocketmine\block\PumpkinStem;
@@ -105,9 +98,7 @@
10598
use pocketmine\block\Torch;
10699
use pocketmine\block\TorchflowerCrop;
107100
use pocketmine\block\Trapdoor;
108-
use pocketmine\block\TripwireHook;
109101
use pocketmine\block\UnderwaterTorch;
110-
use pocketmine\block\utils\BrewingStandSlot;
111102
use pocketmine\block\utils\Colored;
112103
use pocketmine\block\utils\CoralType;
113104
use pocketmine\block\utils\DirtType;
@@ -594,20 +585,7 @@ private function registerSerializers() : void{
594585
->writeBool(StateNames::OPEN_BIT, $block->isOpen())
595586
->writeFacingDirection($block->getFacing());
596587
});
597-
$this->map(Blocks::BED(), function(Bed $block) : Writer{
598-
return Writer::create(Ids::BED)
599-
->writeBool(StateNames::HEAD_PIECE_BIT, $block->isHeadPart())
600-
->writeBool(StateNames::OCCUPIED_BIT, $block->isOccupied())
601-
->writeLegacyHorizontalFacing($block->getFacing());
602-
});
603588
$this->map(Blocks::BEETROOTS(), fn(Beetroot $block) => Helper::encodeCrops($block, new Writer(Ids::BEETROOT)));
604-
$this->map(Blocks::BELL(), function(Bell $block) : Writer{
605-
return Writer::create(Ids::BELL)
606-
->writeUnitEnum(StateNames::ATTACHMENT, $block->getAttachmentType())
607-
->writeBool(StateNames::TOGGLE_BIT, false) //we don't care about this; it's just to keep MCPE happy
608-
->writeLegacyHorizontalFacing($block->getFacing());
609-
610-
});
611589
$this->map(Blocks::BIG_DRIPLEAF_HEAD(), function(BigDripleafHead $block) : Writer{
612590
return Writer::create(Ids::BIG_DRIPLEAF)
613591
->writeCardinalHorizontalFacing($block->getFacing())
@@ -622,17 +600,6 @@ private function registerSerializers() : void{
622600
});
623601
$this->map(Blocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE));
624602
$this->map(Blocks::BLUE_TORCH(), fn(Torch $block) => Helper::encodeTorch($block, Writer::create(Ids::COLORED_TORCH_BLUE)));
625-
$this->map(Blocks::BONE_BLOCK(), function(BoneBlock $block) : Writer{
626-
return Writer::create(Ids::BONE_BLOCK)
627-
->writeInt(StateNames::DEPRECATED, 0)
628-
->writePillarAxis($block->getAxis());
629-
});
630-
$this->map(Blocks::BREWING_STAND(), function(BrewingStand $block) : Writer{
631-
return Writer::create(Ids::BREWING_STAND)
632-
->writeBool(StateNames::BREWING_STAND_SLOT_A_BIT, $block->hasSlot(BrewingStandSlot::EAST))
633-
->writeBool(StateNames::BREWING_STAND_SLOT_B_BIT, $block->hasSlot(BrewingStandSlot::SOUTHWEST))
634-
->writeBool(StateNames::BREWING_STAND_SLOT_C_BIT, $block->hasSlot(BrewingStandSlot::NORTHWEST));
635-
});
636603
$this->map(Blocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK)));
637604
$this->map(Blocks::CAMPFIRE(), function(Campfire $block) : Writer{
638605
return Writer::create(Ids::CAMPFIRE)
@@ -682,9 +649,6 @@ private function registerSerializers() : void{
682649
return Writer::create(Ids::END_ROD)
683650
->writeEndRodFacingDirection($block->getFacing());
684651
});
685-
$this->map(Blocks::FLOWER_POT(), Writer::create(Ids::FLOWER_POT)
686-
->writeBool(StateNames::UPDATE_BIT, false) //to keep MCPE happy
687-
);
688652
$this->map(Blocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE));
689653
$this->map(Blocks::GLOW_LICHEN(), function(GlowLichen $block) : Writer{
690654
return Writer::create(Ids::GLOW_LICHEN)
@@ -712,11 +676,6 @@ private function registerSerializers() : void{
712676
});
713677
$this->map(Blocks::LARGE_FERN(), fn(DoubleTallGrass $block) => Helper::encodeDoublePlant($block, Writer::create(Ids::LARGE_FERN)));
714678
$this->map(Blocks::LAVA(), fn(Lava $block) => Helper::encodeLiquid($block, Ids::LAVA, Ids::FLOWING_LAVA));
715-
$this->map(Blocks::LEVER(), function(Lever $block) : Writer{
716-
return Writer::create(Ids::LEVER)
717-
->writeBool(StateNames::OPEN_BIT, $block->isActivated())
718-
->writeUnitEnum(StateNames::LEVER_DIRECTION, $block->getFacing());
719-
});
720679
$this->map(Blocks::LIGHT(), fn(Light $block) => BlockStateData::current(match($block->getLightLevel()){
721680
0 => Ids::LIGHT_BLOCK_0,
722681
1 => Ids::LIGHT_BLOCK_1,
@@ -741,10 +700,6 @@ private function registerSerializers() : void{
741700
->writeFacingDirection($block->getFacing());
742701
});
743702
$this->map(Blocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, Writer::create(Ids::LILAC)));
744-
$this->map(Blocks::LOOM(), function(Loom $block) : Writer{
745-
return Writer::create(Ids::LOOM)
746-
->writeLegacyHorizontalFacing($block->getFacing());
747-
});
748703
$this->map(Blocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, Writer::create(Ids::MATERIAL_REDUCER)));
749704
$this->map(Blocks::MELON_STEM(), fn(MelonStem $block) => Helper::encodeStem($block, new Writer(Ids::MELON_STEM)));
750705
$this->map(Blocks::MUSHROOM_STEM(), Writer::create(Ids::MUSHROOM_STEM)
@@ -758,11 +713,6 @@ private function registerSerializers() : void{
758713
});
759714
});
760715
$this->map(Blocks::PEONY(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, Writer::create(Ids::PEONY)));
761-
$this->map(Blocks::PINK_PETALS(), function(PinkPetals $block) : Writer{
762-
return Writer::create(Ids::PINK_PETALS)
763-
->writeCardinalHorizontalFacing($block->getFacing())
764-
->writeInt(StateNames::GROWTH, $block->getCount() - 1);
765-
});
766716
$this->map(Blocks::PITCHER_CROP(), function(PitcherCrop $block) : Writer{
767717
return Writer::create(Ids::PITCHER_CROP)
768718
->writeInt(StateNames::GROWTH, $block->getAge())
@@ -850,12 +800,6 @@ private function registerSerializers() : void{
850800
return Writer::create(Ids::TORCHFLOWER_CROP)
851801
->writeInt(StateNames::GROWTH, $block->isReady() ? 1 : 0);
852802
});
853-
$this->map(Blocks::TRIPWIRE_HOOK(), function(TripwireHook $block) : Writer{
854-
return Writer::create(Ids::TRIPWIRE_HOOK)
855-
->writeBool(StateNames::ATTACHED_BIT, $block->isConnected())
856-
->writeBool(StateNames::POWERED_BIT, $block->isPowered())
857-
->writeLegacyHorizontalFacing($block->getFacing());
858-
});
859803
$this->map(Blocks::UNDERWATER_TORCH(), function(UnderwaterTorch $block) : Writer{
860804
return Writer::create(Ids::UNDERWATER_TORCH)
861805
->writeTorchFacing($block->getFacing());

src/data/bedrock/block/convert/BlockSerializerDeserializerRegistrar.php

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,11 @@
2525

2626
use pocketmine\block\ActivatorRail;
2727
use pocketmine\block\BambooSapling;
28+
use pocketmine\block\Bed;
2829
use pocketmine\block\Bedrock;
30+
use pocketmine\block\Bell;
2931
use pocketmine\block\Block;
32+
use pocketmine\block\BrewingStand;
3033
use pocketmine\block\Cactus;
3134
use pocketmine\block\Cake;
3235
use pocketmine\block\ChorusFlower;
@@ -40,9 +43,11 @@
4043
use pocketmine\block\FrostedIce;
4144
use pocketmine\block\Lantern;
4245
use pocketmine\block\Lectern;
46+
use pocketmine\block\Lever;
4347
use pocketmine\block\MobHead;
4448
use pocketmine\block\NetherVines;
4549
use pocketmine\block\NetherWartPlant;
50+
use pocketmine\block\PinkPetals;
4651
use pocketmine\block\PoweredRail;
4752
use pocketmine\block\Rail;
4853
use pocketmine\block\RedstoneWire;
@@ -53,8 +58,12 @@
5358
use pocketmine\block\StraightOnlyRail;
5459
use pocketmine\block\Sugarcane;
5560
use pocketmine\block\Tripwire;
61+
use pocketmine\block\TripwireHook;
62+
use pocketmine\block\utils\BellAttachmentType;
63+
use pocketmine\block\utils\BrewingStandSlot;
5664
use pocketmine\block\utils\Colored;
5765
use pocketmine\block\utils\FroglightType;
66+
use pocketmine\block\utils\LeverFacing;
5867
use pocketmine\block\utils\MobHeadType;
5968
use pocketmine\block\VanillaBlocks as Blocks;
6069
use pocketmine\block\WeightedPressurePlate;
@@ -66,8 +75,12 @@
6675
use pocketmine\data\bedrock\block\convert\property\AxisProperty;
6776
use pocketmine\data\bedrock\block\convert\property\BoolProperty;
6877
use pocketmine\data\bedrock\block\convert\property\CardinalHorizontalFacingProperty;
78+
use pocketmine\data\bedrock\block\convert\property\EnumProperty;
6979
use pocketmine\data\bedrock\block\convert\property\IntProperty;
80+
use pocketmine\data\bedrock\block\convert\property\LegacyHorizontalFacingProperty;
7081
use pocketmine\data\bedrock\block\convert\property\Model;
82+
use function array_map;
83+
use function min;
7184

7285
/**
7386
* Registers serializers and deserializers for block data in a unified style, to avoid code duplication.
@@ -943,9 +956,29 @@ private function register1to1CustomMappings() : void{
943956
new IntProperty(StateNames::GROUND_SIGN_DIRECTION, 0, 15, fn(FloorBanner $b) => $b->getRotation(), fn(FloorBanner $b, int $v) => $b->setRotation($v))
944957
]));
945958
$this->mapModel(Model::create(Blocks::BASALT(), Ids::BASALT)->properties([AxisProperty::getInstance()]));
959+
$this->mapModel(Model::create(Blocks::BED(), Ids::BED)->properties([
960+
new BoolProperty(StateNames::HEAD_PIECE_BIT, fn(Bed $b) => $b->isHeadPart(), fn(Bed $b, bool $v) => $b->setHead($v)),
961+
new BoolProperty(StateNames::OCCUPIED_BIT, fn(Bed $b) => $b->isOccupied(), fn(Bed $b, bool $v) => $b->setOccupied($v)),
962+
LegacyHorizontalFacingProperty::getInstance()
963+
]));
946964
$this->mapModel(Model::create(Blocks::BEDROCK(), Ids::BEDROCK)->properties([
947965
new BoolProperty(StateNames::INFINIBURN_BIT, fn(Bedrock $b) => $b->burnsForever(), fn(Bedrock $b, bool $v) => $b->setBurnsForever($v))
948966
]));
967+
$this->mapModel(Model::create(Blocks::BELL(), Ids::BELL)->properties([
968+
BoolProperty::unused(StateNames::TOGGLE_BIT, false),
969+
new EnumProperty(StateNames::ATTACHMENT, BellAttachmentType::class, fn(Bell $b) => $b->getAttachmentType(), fn(Bell $b, BellAttachmentType $v) => $b->setAttachmentType($v)),
970+
LegacyHorizontalFacingProperty::getInstance()
971+
]));
972+
$this->mapModel(Model::create(Blocks::BONE_BLOCK(), Ids::BONE_BLOCK)->properties([
973+
IntProperty::unused(StateNames::DEPRECATED, 0),
974+
AxisProperty::getInstance()
975+
]));
976+
977+
$this->mapModel(Model::create(Blocks::BREWING_STAND(), Ids::BREWING_STAND)->properties(array_map(fn(BrewingStandSlot $slot) => new BoolProperty(match($slot){
978+
BrewingStandSlot::EAST => StateNames::BREWING_STAND_SLOT_A_BIT,
979+
BrewingStandSlot::SOUTHWEST => StateNames::BREWING_STAND_SLOT_B_BIT,
980+
BrewingStandSlot::NORTHWEST => StateNames::BREWING_STAND_SLOT_C_BIT
981+
}, fn(BrewingStand $b) => $b->hasSlot($slot), fn(BrewingStand $b, bool $v) => $b->setSlot($slot, $v)), BrewingStandSlot::cases())));
949982

950983
//C
951984
$this->mapModel(Model::create(Blocks::CAKE(), Ids::CAKE)->properties([
@@ -985,6 +1018,9 @@ private function register1to1CustomMappings() : void{
9851018
$this->mapModel(Model::create(Blocks::FIRE(), Ids::FIRE)->properties([
9861019
new IntProperty(StateNames::AGE, 0, 15, fn(Fire $b) => $b->getAge(), fn(Fire $b, int $v) => $b->setAge($v))
9871020
]));
1021+
$this->mapModel(Model::create(Blocks::FLOWER_POT(), Ids::FLOWER_POT)->properties([
1022+
BoolProperty::unused(StateNames::UPDATE_BIT, false)
1023+
]));
9881024
$this->mapModel(Model::create(Blocks::FROSTED_ICE(), Ids::FROSTED_ICE)->properties([
9891025
new IntProperty(StateNames::AGE, 0, 3, fn(FrostedIce $b) => $b->getAge(), fn(FrostedIce $b, int $v) => $b->setAge($v))
9901026
]));
@@ -997,9 +1033,16 @@ private function register1to1CustomMappings() : void{
9971033
new BoolProperty(StateNames::POWERED_BIT, fn(Lectern $b) => $b->isProducingSignal(), fn(Lectern $b, bool $v) => $b->setProducingSignal($v)),
9981034
CardinalHorizontalFacingProperty::getInstance()
9991035
]));
1036+
$this->mapModel(Model::create(Blocks::LEVER(), Ids::LEVER)->properties([
1037+
new EnumProperty(StateNames::LEVER_DIRECTION, LeverFacing::class, fn(Lever $b) => $b->getFacing(), fn(Lever $b, LeverFacing $v) => $b->setFacing($v)),
1038+
new BoolProperty(StateNames::OPEN_BIT, fn(Lever $b) => $b->isActivated(), fn(Lever $b, bool $v) => $b->setActivated($v)),
1039+
]));
10001040
$this->mapModel(Model::create(Blocks::LIT_PUMPKIN(), Ids::LIT_PUMPKIN)->properties([
10011041
CardinalHorizontalFacingProperty::getInstance()
10021042
]));
1043+
$this->mapModel(Model::create(Blocks::LOOM(), Ids::LOOM)->properties([
1044+
LegacyHorizontalFacingProperty::getInstance()
1045+
]));
10031046

10041047
//M
10051048
$this->mapModel(Model::create(Blocks::MUDDY_MANGROVE_ROOTS(), Ids::MUDDY_MANGROVE_ROOTS)->properties([AxisProperty::getInstance()]));
@@ -1008,6 +1051,11 @@ private function register1to1CustomMappings() : void{
10081051
]));
10091052

10101053
//P
1054+
$this->mapModel(Model::create(Blocks::PINK_PETALS(), Ids::PINK_PETALS)->properties([
1055+
//Pink petals only uses 0-3, but GROWTH state can go up to 7
1056+
new IntProperty(StateNames::GROWTH, 0, 7, fn(PinkPetals $b) => $b->getCount(), fn(PinkPetals $b, int $v) => $b->setCount(min($v, PinkPetals::MAX_COUNT)), offset: 1),
1057+
CardinalHorizontalFacingProperty::getInstance()
1058+
]));
10111059
$this->mapModel(Model::create(Blocks::POWERED_RAIL(), Ids::GOLDEN_RAIL)->properties([
10121060
new BoolProperty(StateNames::RAIL_DATA_BIT, fn(PoweredRail $b) => $b->isPowered(), fn(PoweredRail $b, bool $v) => $b->setPowered($v)), //TODO: shared with ActivatorRail
10131061
new IntProperty(StateNames::RAIL_DIRECTION, 0, 5, fn(StraightOnlyRail $b) => $b->getShape(), fn(StraightOnlyRail $b, int $v) => $b->setShape($v)) //TODO: shared with ActivatorRail
@@ -1051,13 +1099,17 @@ private function register1to1CustomMappings() : void{
10511099
$this->mapModel(Model::create(Blocks::TRAPPED_CHEST(), Ids::TRAPPED_CHEST)->properties([
10521100
CardinalHorizontalFacingProperty::getInstance()
10531101
]));
1054-
//tripwire connected disarmed suspended triggered
10551102
$this->mapModel(Model::create(Blocks::TRIPWIRE(), Ids::TRIP_WIRE)->properties([
10561103
new BoolProperty(StateNames::ATTACHED_BIT, fn(Tripwire $b) => $b->isConnected(), fn(Tripwire $b, bool $v) => $b->setConnected($v)),
10571104
new BoolProperty(StateNames::DISARMED_BIT, fn(Tripwire $b) => $b->isDisarmed(), fn(Tripwire $b, bool $v) => $b->setDisarmed($v)),
10581105
new BoolProperty(StateNames::SUSPENDED_BIT, fn(Tripwire $b) => $b->isSuspended(), fn(Tripwire $b, bool $v) => $b->setSuspended($v)),
10591106
new BoolProperty(StateNames::POWERED_BIT, fn(Tripwire $b) => $b->isTriggered(), fn(Tripwire $b, bool $v) => $b->setTriggered($v)),
10601107
]));
1108+
$this->mapModel(Model::create(Blocks::TRIPWIRE_HOOK(), Ids::TRIPWIRE_HOOK)->properties([
1109+
new BoolProperty(StateNames::ATTACHED_BIT, fn(TripwireHook $b) => $b->isConnected(), fn(TripwireHook $b, bool $v) => $b->setConnected($v)),
1110+
new BoolProperty(StateNames::POWERED_BIT, fn(TripwireHook $b) => $b->isPowered(), fn(TripwireHook $b, bool $v) => $b->setPowered($v)),
1111+
LegacyHorizontalFacingProperty::getInstance()
1112+
]));
10611113

10621114
$this->mapModel(Model::create(Blocks::TWISTING_VINES(), Ids::TWISTING_VINES)->properties([
10631115
new IntProperty(StateNames::TWISTING_VINES_AGE, 0, 25, fn(NetherVines $b) => $b->getAge(), fn(NetherVines $b, int $v) => $b->setAge($v))

0 commit comments

Comments
 (0)