PM5-specific updates for 1.19.70

This commit is contained in:
Dylan K. Taylor 2023-03-14 18:50:04 +00:00
parent c500ccd891
commit 777b4d6ac3
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
9 changed files with 120 additions and 52 deletions

View File

@ -40,9 +40,9 @@ final class BlockStateData{
*/
public const CURRENT_VERSION =
(1 << 24) | //major
(18 << 16) | //minor
(10 << 8) | //patch
(1); //revision
(19 << 16) | //minor
(70 << 8) | //patch
(15); //revision
public const TAG_NAME = "name";
public const TAG_STATES = "states";

View File

@ -48,6 +48,7 @@ final class BlockStateNames{
public const BREWING_STAND_SLOT_A_BIT = "brewing_stand_slot_a_bit";
public const BREWING_STAND_SLOT_B_BIT = "brewing_stand_slot_b_bit";
public const BREWING_STAND_SLOT_C_BIT = "brewing_stand_slot_c_bit";
public const BRUSHED_PROGRESS = "brushed_progress";
public const BUTTON_PRESSED_BIT = "button_pressed_bit";
public const CAN_SUMMON = "can_summon";
public const CANDLES = "candles";

View File

@ -94,6 +94,7 @@ final class BlockTypeNames{
public const BLACK_CANDLE = "minecraft:black_candle";
public const BLACK_CANDLE_CAKE = "minecraft:black_candle_cake";
public const BLACK_GLAZED_TERRACOTTA = "minecraft:black_glazed_terracotta";
public const BLACK_WOOL = "minecraft:black_wool";
public const BLACKSTONE = "minecraft:blackstone";
public const BLACKSTONE_DOUBLE_SLAB = "minecraft:blackstone_double_slab";
public const BLACKSTONE_SLAB = "minecraft:blackstone_slab";
@ -104,6 +105,7 @@ final class BlockTypeNames{
public const BLUE_CANDLE_CAKE = "minecraft:blue_candle_cake";
public const BLUE_GLAZED_TERRACOTTA = "minecraft:blue_glazed_terracotta";
public const BLUE_ICE = "minecraft:blue_ice";
public const BLUE_WOOL = "minecraft:blue_wool";
public const BONE_BLOCK = "minecraft:bone_block";
public const BOOKSHELF = "minecraft:bookshelf";
public const BORDER_BLOCK = "minecraft:border_block";
@ -115,6 +117,7 @@ final class BlockTypeNames{
public const BROWN_GLAZED_TERRACOTTA = "minecraft:brown_glazed_terracotta";
public const BROWN_MUSHROOM = "minecraft:brown_mushroom";
public const BROWN_MUSHROOM_BLOCK = "minecraft:brown_mushroom_block";
public const BROWN_WOOL = "minecraft:brown_wool";
public const BUBBLE_COLUMN = "minecraft:bubble_column";
public const BUDDING_AMETHYST = "minecraft:budding_amethyst";
public const CACTUS = "minecraft:cactus";
@ -201,6 +204,7 @@ final class BlockTypeNames{
public const CYAN_CANDLE = "minecraft:cyan_candle";
public const CYAN_CANDLE_CAKE = "minecraft:cyan_candle_cake";
public const CYAN_GLAZED_TERRACOTTA = "minecraft:cyan_glazed_terracotta";
public const CYAN_WOOL = "minecraft:cyan_wool";
public const DARK_OAK_BUTTON = "minecraft:dark_oak_button";
public const DARK_OAK_DOOR = "minecraft:dark_oak_door";
public const DARK_OAK_FENCE_GATE = "minecraft:dark_oak_fence_gate";
@ -214,6 +218,7 @@ final class BlockTypeNames{
public const DAYLIGHT_DETECTOR = "minecraft:daylight_detector";
public const DAYLIGHT_DETECTOR_INVERTED = "minecraft:daylight_detector_inverted";
public const DEADBUSH = "minecraft:deadbush";
public const DECORATED_POT = "minecraft:decorated_pot";
public const DEEPSLATE = "minecraft:deepslate";
public const DEEPSLATE_BRICK_DOUBLE_SLAB = "minecraft:deepslate_brick_double_slab";
public const DEEPSLATE_BRICK_SLAB = "minecraft:deepslate_brick_slab";
@ -417,9 +422,11 @@ final class BlockTypeNames{
public const GRAY_CANDLE = "minecraft:gray_candle";
public const GRAY_CANDLE_CAKE = "minecraft:gray_candle_cake";
public const GRAY_GLAZED_TERRACOTTA = "minecraft:gray_glazed_terracotta";
public const GRAY_WOOL = "minecraft:gray_wool";
public const GREEN_CANDLE = "minecraft:green_candle";
public const GREEN_CANDLE_CAKE = "minecraft:green_candle_cake";
public const GREEN_GLAZED_TERRACOTTA = "minecraft:green_glazed_terracotta";
public const GREEN_WOOL = "minecraft:green_wool";
public const GRINDSTONE = "minecraft:grindstone";
public const HANGING_ROOTS = "minecraft:hanging_roots";
public const HARD_GLASS = "minecraft:hard_glass";
@ -469,13 +476,16 @@ final class BlockTypeNames{
public const LIGHT_BLUE_CANDLE = "minecraft:light_blue_candle";
public const LIGHT_BLUE_CANDLE_CAKE = "minecraft:light_blue_candle_cake";
public const LIGHT_BLUE_GLAZED_TERRACOTTA = "minecraft:light_blue_glazed_terracotta";
public const LIGHT_BLUE_WOOL = "minecraft:light_blue_wool";
public const LIGHT_GRAY_CANDLE = "minecraft:light_gray_candle";
public const LIGHT_GRAY_CANDLE_CAKE = "minecraft:light_gray_candle_cake";
public const LIGHT_GRAY_WOOL = "minecraft:light_gray_wool";
public const LIGHT_WEIGHTED_PRESSURE_PLATE = "minecraft:light_weighted_pressure_plate";
public const LIGHTNING_ROD = "minecraft:lightning_rod";
public const LIME_CANDLE = "minecraft:lime_candle";
public const LIME_CANDLE_CAKE = "minecraft:lime_candle_cake";
public const LIME_GLAZED_TERRACOTTA = "minecraft:lime_glazed_terracotta";
public const LIME_WOOL = "minecraft:lime_wool";
public const LIT_BLAST_FURNACE = "minecraft:lit_blast_furnace";
public const LIT_DEEPSLATE_REDSTONE_ORE = "minecraft:lit_deepslate_redstone_ore";
public const LIT_FURNACE = "minecraft:lit_furnace";
@ -490,6 +500,7 @@ final class BlockTypeNames{
public const MAGENTA_CANDLE = "minecraft:magenta_candle";
public const MAGENTA_CANDLE_CAKE = "minecraft:magenta_candle_cake";
public const MAGENTA_GLAZED_TERRACOTTA = "minecraft:magenta_glazed_terracotta";
public const MAGENTA_WOOL = "minecraft:magenta_wool";
public const MAGMA = "minecraft:magma";
public const MANGROVE_BUTTON = "minecraft:mangrove_button";
public const MANGROVE_DOOR = "minecraft:mangrove_door";
@ -548,6 +559,7 @@ final class BlockTypeNames{
public const ORANGE_CANDLE = "minecraft:orange_candle";
public const ORANGE_CANDLE_CAKE = "minecraft:orange_candle_cake";
public const ORANGE_GLAZED_TERRACOTTA = "minecraft:orange_glazed_terracotta";
public const ORANGE_WOOL = "minecraft:orange_wool";
public const OXIDIZED_COPPER = "minecraft:oxidized_copper";
public const OXIDIZED_CUT_COPPER = "minecraft:oxidized_cut_copper";
public const OXIDIZED_CUT_COPPER_SLAB = "minecraft:oxidized_cut_copper_slab";
@ -559,6 +571,7 @@ final class BlockTypeNames{
public const PINK_CANDLE = "minecraft:pink_candle";
public const PINK_CANDLE_CAKE = "minecraft:pink_candle_cake";
public const PINK_GLAZED_TERRACOTTA = "minecraft:pink_glazed_terracotta";
public const PINK_WOOL = "minecraft:pink_wool";
public const PISTON = "minecraft:piston";
public const PISTON_ARM_COLLISION = "minecraft:piston_arm_collision";
public const PLANKS = "minecraft:planks";
@ -598,6 +611,7 @@ final class BlockTypeNames{
public const PURPLE_CANDLE = "minecraft:purple_candle";
public const PURPLE_CANDLE_CAKE = "minecraft:purple_candle_cake";
public const PURPLE_GLAZED_TERRACOTTA = "minecraft:purple_glazed_terracotta";
public const PURPLE_WOOL = "minecraft:purple_wool";
public const PURPUR_BLOCK = "minecraft:purpur_block";
public const PURPUR_STAIRS = "minecraft:purpur_stairs";
public const QUARTZ_BLOCK = "minecraft:quartz_block";
@ -618,6 +632,7 @@ final class BlockTypeNames{
public const RED_NETHER_BRICK_STAIRS = "minecraft:red_nether_brick_stairs";
public const RED_SANDSTONE = "minecraft:red_sandstone";
public const RED_SANDSTONE_STAIRS = "minecraft:red_sandstone_stairs";
public const RED_WOOL = "minecraft:red_wool";
public const REDSTONE_BLOCK = "minecraft:redstone_block";
public const REDSTONE_LAMP = "minecraft:redstone_lamp";
public const REDSTONE_ORE = "minecraft:redstone_ore";
@ -708,12 +723,15 @@ final class BlockTypeNames{
public const STRIPPED_WARPED_STEM = "minecraft:stripped_warped_stem";
public const STRUCTURE_BLOCK = "minecraft:structure_block";
public const STRUCTURE_VOID = "minecraft:structure_void";
public const SUSPICIOUS_SAND = "minecraft:suspicious_sand";
public const SWEET_BERRY_BUSH = "minecraft:sweet_berry_bush";
public const TALLGRASS = "minecraft:tallgrass";
public const TARGET = "minecraft:target";
public const TINTED_GLASS = "minecraft:tinted_glass";
public const TNT = "minecraft:tnt";
public const TORCH = "minecraft:torch";
public const TORCHFLOWER = "minecraft:torchflower";
public const TORCHFLOWER_CROP = "minecraft:torchflower_crop";
public const TRAPDOOR = "minecraft:trapdoor";
public const TRAPPED_CHEST = "minecraft:trapped_chest";
public const TRIP_WIRE = "minecraft:trip_wire";
@ -783,15 +801,16 @@ final class BlockTypeNames{
public const WHITE_CANDLE = "minecraft:white_candle";
public const WHITE_CANDLE_CAKE = "minecraft:white_candle_cake";
public const WHITE_GLAZED_TERRACOTTA = "minecraft:white_glazed_terracotta";
public const WHITE_WOOL = "minecraft:white_wool";
public const WITHER_ROSE = "minecraft:wither_rose";
public const WOOD = "minecraft:wood";
public const WOODEN_BUTTON = "minecraft:wooden_button";
public const WOODEN_DOOR = "minecraft:wooden_door";
public const WOODEN_PRESSURE_PLATE = "minecraft:wooden_pressure_plate";
public const WOODEN_SLAB = "minecraft:wooden_slab";
public const WOOL = "minecraft:wool";
public const YELLOW_CANDLE = "minecraft:yellow_candle";
public const YELLOW_CANDLE_CAKE = "minecraft:yellow_candle_cake";
public const YELLOW_FLOWER = "minecraft:yellow_flower";
public const YELLOW_GLAZED_TERRACOTTA = "minecraft:yellow_glazed_terracotta";
public const YELLOW_WOOL = "minecraft:yellow_wool";
}

View File

@ -189,6 +189,7 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{
public function __construct(){
$this->registerCandleSerializers();
$this->registerFlatColorBlockSerializers();
$this->registerCauldronSerializers();
$this->registerSimpleSerializers();
$this->registerSerializers();
@ -303,6 +304,51 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{
})->writeBool(StateNames::LIT, $block->isLit()));
}
public function registerFlatColorBlockSerializers() : void{
$this->map(Blocks::GLAZED_TERRACOTTA(), function(GlazedTerracotta $block) : Writer{
return Writer::create(match($color = $block->getColor()){
DyeColor::BLACK() => Ids::BLACK_GLAZED_TERRACOTTA,
DyeColor::BLUE() => Ids::BLUE_GLAZED_TERRACOTTA,
DyeColor::BROWN() => Ids::BROWN_GLAZED_TERRACOTTA,
DyeColor::CYAN() => Ids::CYAN_GLAZED_TERRACOTTA,
DyeColor::GRAY() => Ids::GRAY_GLAZED_TERRACOTTA,
DyeColor::GREEN() => Ids::GREEN_GLAZED_TERRACOTTA,
DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_GLAZED_TERRACOTTA,
DyeColor::LIGHT_GRAY() => Ids::SILVER_GLAZED_TERRACOTTA,
DyeColor::LIME() => Ids::LIME_GLAZED_TERRACOTTA,
DyeColor::MAGENTA() => Ids::MAGENTA_GLAZED_TERRACOTTA,
DyeColor::ORANGE() => Ids::ORANGE_GLAZED_TERRACOTTA,
DyeColor::PINK() => Ids::PINK_GLAZED_TERRACOTTA,
DyeColor::PURPLE() => Ids::PURPLE_GLAZED_TERRACOTTA,
DyeColor::RED() => Ids::RED_GLAZED_TERRACOTTA,
DyeColor::WHITE() => Ids::WHITE_GLAZED_TERRACOTTA,
DyeColor::YELLOW() => Ids::YELLOW_GLAZED_TERRACOTTA,
default => throw new AssumptionFailedError("Unhandled dye colour " . $color->name())
})
->writeHorizontalFacing($block->getFacing());
});
$this->map(Blocks::WOOL(), fn(Wool $block) => Writer::create(match($color = $block->getColor()){
DyeColor::BLACK() => Ids::BLACK_WOOL,
DyeColor::BLUE() => Ids::BLUE_WOOL,
DyeColor::BROWN() => Ids::BROWN_WOOL,
DyeColor::CYAN() => Ids::CYAN_WOOL,
DyeColor::GRAY() => Ids::GRAY_WOOL,
DyeColor::GREEN() => Ids::GREEN_WOOL,
DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_WOOL,
DyeColor::LIGHT_GRAY() => Ids::LIGHT_GRAY_WOOL,
DyeColor::LIME() => Ids::LIME_WOOL,
DyeColor::MAGENTA() => Ids::MAGENTA_WOOL,
DyeColor::ORANGE() => Ids::ORANGE_WOOL,
DyeColor::PINK() => Ids::PINK_WOOL,
DyeColor::PURPLE() => Ids::PURPLE_WOOL,
DyeColor::RED() => Ids::RED_WOOL,
DyeColor::WHITE() => Ids::WHITE_WOOL,
DyeColor::YELLOW() => Ids::YELLOW_WOOL,
default => throw new AssumptionFailedError("Unhandled dye colour " . $color->name())
}));
}
private function registerCauldronSerializers() : void{
$this->map(Blocks::CAULDRON(), fn() => Helper::encodeCauldron(StringValues::CAULDRON_LIQUID_WATER, 0, new Writer(Ids::CAULDRON)));
$this->map(Blocks::LAVA_CAULDRON(), fn(FillableCauldron $b) => Helper::encodeCauldron(StringValues::CAULDRON_LIQUID_LAVA, $b->getFillLevel(), new Writer(Ids::LAVA_CAULDRON)));
@ -967,28 +1013,6 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{
->writeInt(StateNames::AGE, $block->getAge());
});
$this->map(Blocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE));
$this->map(Blocks::GLAZED_TERRACOTTA(), function(GlazedTerracotta $block) : Writer{
return Writer::create(match ($color = $block->getColor()) {
DyeColor::BLACK() => Ids::BLACK_GLAZED_TERRACOTTA,
DyeColor::BLUE() => Ids::BLUE_GLAZED_TERRACOTTA,
DyeColor::BROWN() => Ids::BROWN_GLAZED_TERRACOTTA,
DyeColor::CYAN() => Ids::CYAN_GLAZED_TERRACOTTA,
DyeColor::GRAY() => Ids::GRAY_GLAZED_TERRACOTTA,
DyeColor::GREEN() => Ids::GREEN_GLAZED_TERRACOTTA,
DyeColor::LIGHT_BLUE() => Ids::LIGHT_BLUE_GLAZED_TERRACOTTA,
DyeColor::LIGHT_GRAY() => Ids::SILVER_GLAZED_TERRACOTTA,
DyeColor::LIME() => Ids::LIME_GLAZED_TERRACOTTA,
DyeColor::MAGENTA() => Ids::MAGENTA_GLAZED_TERRACOTTA,
DyeColor::ORANGE() => Ids::ORANGE_GLAZED_TERRACOTTA,
DyeColor::PINK() => Ids::PINK_GLAZED_TERRACOTTA,
DyeColor::PURPLE() => Ids::PURPLE_GLAZED_TERRACOTTA,
DyeColor::RED() => Ids::RED_GLAZED_TERRACOTTA,
DyeColor::WHITE() => Ids::WHITE_GLAZED_TERRACOTTA,
DyeColor::YELLOW() => Ids::YELLOW_GLAZED_TERRACOTTA,
default => throw new AssumptionFailedError("Unhandled dye colour " . $color->name())
})
->writeHorizontalFacing($block->getFacing());
});
$this->map(Blocks::GLOWING_ITEM_FRAME(), fn(ItemFrame $block) => Helper::encodeItemFrame($block, Ids::GLOW_FRAME));
$this->map(Blocks::GRANITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_GRANITE));
$this->map(Blocks::GRANITE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab3($block, StringValues::STONE_SLAB_TYPE_3_GRANITE));
@ -1446,9 +1470,5 @@ final class BlockObjectToStateSerializer implements BlockStateSerializer{
});
$this->map(Blocks::WHEAT(), fn(Wheat $block) => Helper::encodeCrops($block, new Writer(Ids::WHEAT)));
$this->map(Blocks::WHITE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_WHITE));
$this->map(Blocks::WOOL(), function(Wool $block) : Writer{
return Writer::create(Ids::WOOL)
->writeColor($block->getColor());
});
}
}

View File

@ -70,6 +70,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
public function __construct(){
$this->registerCandleDeserializers();
$this->registerFlatColorBlockDeserializers();
$this->registerCauldronDeserializers();
$this->registerSimpleDeserializers();
$this->registerDeserializers();
@ -158,6 +159,42 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
$this->map(Ids::YELLOW_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::YELLOW()));
}
private function registerFlatColorBlockDeserializers() : void{
$this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in));
$this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in));
$this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in));
$this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in));
$this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GRAY(), $in));
$this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GREEN(), $in));
$this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_BLUE(), $in));
$this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_GRAY(), $in));
$this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIME(), $in));
$this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in));
$this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in));
$this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in));
$this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PURPLE(), $in));
$this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::RED(), $in));
$this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in));
$this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in));
$this->mapSimple(Ids::BLACK_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BLACK()));
$this->mapSimple(Ids::BLUE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BLUE()));
$this->mapSimple(Ids::BROWN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BROWN()));
$this->mapSimple(Ids::CYAN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::CYAN()));
$this->mapSimple(Ids::GRAY_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::GRAY()));
$this->mapSimple(Ids::GREEN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::GREEN()));
$this->mapSimple(Ids::LIGHT_BLUE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIGHT_BLUE()));
$this->mapSimple(Ids::LIGHT_GRAY_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIGHT_GRAY()));
$this->mapSimple(Ids::LIME_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIME()));
$this->mapSimple(Ids::MAGENTA_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::MAGENTA()));
$this->mapSimple(Ids::ORANGE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::ORANGE()));
$this->mapSimple(Ids::PINK_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::PINK()));
$this->mapSimple(Ids::PURPLE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::PURPLE()));
$this->mapSimple(Ids::RED_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::RED()));
$this->mapSimple(Ids::WHITE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::WHITE()));
$this->mapSimple(Ids::YELLOW_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::YELLOW()));
}
private function registerCauldronDeserializers() : void{
$deserializer = function(Reader $in) : Block{
$level = $in->readBoundedInt(StateNames::FILL_LEVEL, 0, 6);
@ -516,13 +553,11 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
$this->mapSlab(Ids::BLACKSTONE_SLAB, Ids::BLACKSTONE_DOUBLE_SLAB, fn() => Blocks::BLACKSTONE_SLAB());
$this->mapStairs(Ids::BLACKSTONE_STAIRS, fn() => Blocks::BLACKSTONE_STAIRS());
$this->map(Ids::BLACKSTONE_WALL, fn(Reader $in) => Helper::decodeWall(Blocks::BLACKSTONE_WALL(), $in));
$this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in));
$this->map(Ids::BLAST_FURNACE, function(Reader $in) : Block{
return Blocks::BLAST_FURNACE()
->setFacing($in->readHorizontalFacing())
->setLit(false);
});
$this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in));
$this->map(Ids::BONE_BLOCK, function(Reader $in) : Block{
$in->ignored(StateNames::DEPRECATED);
return Blocks::BONE_BLOCK()->setAxis($in->readPillarAxis());
@ -534,7 +569,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
->setSlot(BrewingStandSlot::NORTHWEST(), $in->readBool(StateNames::BREWING_STAND_SLOT_C_BIT));
});
$this->mapStairs(Ids::BRICK_STAIRS, fn() => Blocks::BRICK_STAIRS());
$this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in));
$this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::BROWN_MUSHROOM_BLOCK(), $in));
$this->map(Ids::CACTUS, function(Reader $in) : Block{
return Blocks::CACTUS()
@ -639,7 +673,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
$this->map(Ids::CRIMSON_STEM, fn(Reader $in) => Helper::decodeLog(Blocks::CRIMSON_STEM(), false, $in));
$this->map(Ids::CRIMSON_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::CRIMSON_TRAPDOOR(), $in));
$this->map(Ids::CRIMSON_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::CRIMSON_WALL_SIGN(), $in));
$this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in));
$this->map(Ids::DARK_OAK_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::DARK_OAK_BUTTON(), $in));
$this->map(Ids::DARK_OAK_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::DARK_OAK_DOOR(), $in));
$this->map(Ids::DARK_OAK_FENCE_GATE, fn(Reader $in) => Helper::decodeFenceGate(Blocks::DARK_OAK_FENCE_GATE(), $in));
@ -751,8 +784,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
->setShape($in->readBoundedInt(StateNames::RAIL_DIRECTION, 0, 5));
});
$this->mapStairs(Ids::GRANITE_STAIRS, fn() => Blocks::GRANITE_STAIRS());
$this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GRAY(), $in));
$this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GREEN(), $in));
$this->map(Ids::HARD_STAINED_GLASS, function(Reader $in) : Block{
return Blocks::STAINED_HARDENED_GLASS()
->setColor($in->readColor());
@ -830,9 +861,7 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
return Blocks::LIGHTNING_ROD()
->setFacing($in->readFacingDirection());
});
$this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_BLUE(), $in));
$this->map(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeWeightedPressurePlate(Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT(), $in));
$this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIME(), $in));
$this->map(Ids::LIT_BLAST_FURNACE, function(Reader $in) : Block{
return Blocks::BLAST_FURNACE()
->setFacing($in->readHorizontalFacing())
@ -877,7 +906,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
return Blocks::LOOM()
->setFacing($in->readLegacyHorizontalFacing());
});
$this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in));
$this->map(Ids::MANGROVE_BUTTON, fn(Reader $in) => Helper::decodeButton(Blocks::MANGROVE_BUTTON(), $in));
$this->map(Ids::MANGROVE_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::MANGROVE_DOOR(), $in));
$this->mapSlab(Ids::MANGROVE_SLAB, Ids::MANGROVE_DOUBLE_SLAB, fn() => Blocks::MANGROVE_SLAB());
@ -922,13 +950,11 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
$this->mapStairs(Ids::NORMAL_STONE_STAIRS, fn() => Blocks::STONE_STAIRS());
$this->mapStairs(Ids::OAK_STAIRS, fn() => Blocks::OAK_STAIRS());
$this->map(Ids::OCHRE_FROGLIGHT, fn(Reader $in) => Blocks::FROGLIGHT()->setFroglightType(FroglightType::OCHRE())->setAxis($in->readPillarAxis()));
$this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in));
$this->map(Ids::OXIDIZED_COPPER, fn() => Helper::decodeCopper(Blocks::COPPER(), CopperOxidation::OXIDIZED()));
$this->map(Ids::OXIDIZED_CUT_COPPER, fn() => Helper::decodeCopper(Blocks::CUT_COPPER(), CopperOxidation::OXIDIZED()));
$this->mapSlab(Ids::OXIDIZED_CUT_COPPER_SLAB, Ids::OXIDIZED_DOUBLE_CUT_COPPER_SLAB, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_SLAB(), CopperOxidation::OXIDIZED()));
$this->mapStairs(Ids::OXIDIZED_CUT_COPPER_STAIRS, fn() => Helper::decodeCopper(Blocks::CUT_COPPER_STAIRS(), CopperOxidation::OXIDIZED()));
$this->map(Ids::PEARLESCENT_FROGLIGHT, fn(Reader $in) => Blocks::FROGLIGHT()->setFroglightType(FroglightType::PEARLESCENT())->setAxis($in->readPillarAxis()));
$this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in));
$this->map(Ids::PLANKS, function(Reader $in) : Block{
return match($woodName = $in->readString(StateNames::WOOD_TYPE)){
StringValues::WOOD_TYPE_OAK => Blocks::OAK_PLANKS(),
@ -986,7 +1012,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
return Blocks::PUMPKIN();
});
$this->map(Ids::PUMPKIN_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::PUMPKIN_STEM(), $in));
$this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PURPLE(), $in));
$this->map(Ids::PURPUR_BLOCK, function(Reader $in) : Block{
$type = $in->readString(StateNames::CHISEL_TYPE);
if($type === StringValues::CHISEL_TYPE_LINES){
@ -1039,7 +1064,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
default => throw $in->badValueException(StateNames::FLOWER_TYPE, $type),
};
});
$this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::RED(), $in));
$this->map(Ids::RED_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::RED_MUSHROOM_BLOCK(), $in));
$this->mapStairs(Ids::RED_NETHER_BRICK_STAIRS, fn() => Blocks::RED_NETHER_BRICK_STAIRS());
$this->map(Ids::RED_SANDSTONE, function(Reader $in) : Block{
@ -1111,7 +1135,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
return Blocks::DYED_SHULKER_BOX()
->setColor($in->readColor());
});
$this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_GRAY(), $in));
$this->map(Ids::SKULL, function(Reader $in) : Block{
return Blocks::MOB_HEAD()
->setFacing($in->readFacingWithoutDown());
@ -1325,7 +1348,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
->setAge($in->readBoundedInt(StateNames::WEEPING_VINES_AGE, 0, 25));
});
$this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in));
$this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in));
$this->map(Ids::WOOD, fn(Reader $in) : Block => Helper::decodeLog(match($woodType = $in->readString(StateNames::WOOD_TYPE)){
StringValues::WOOD_TYPE_ACACIA => Blocks::ACACIA_WOOD(),
StringValues::WOOD_TYPE_BIRCH => Blocks::BIRCH_WOOD(),
@ -1339,11 +1361,6 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
$this->map(Ids::WOODEN_DOOR, fn(Reader $in) => Helper::decodeDoor(Blocks::OAK_DOOR(), $in));
$this->map(Ids::WOODEN_PRESSURE_PLATE, fn(Reader $in) => Helper::decodeSimplePressurePlate(Blocks::OAK_PRESSURE_PLATE(), $in));
$this->mapSlab(Ids::WOODEN_SLAB, Ids::DOUBLE_WOODEN_SLAB, fn(Reader $in) => Helper::mapWoodenSlabType($in));
$this->map(Ids::WOOL, function(Reader $in) : Block{
return Blocks::WOOL()
->setColor($in->readColor());
});
$this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in));
}
/** @throws BlockStateDeserializeException */

View File

@ -35,7 +35,9 @@ final class ItemTypeNames{
public const ALLAY_SPAWN_EGG = "minecraft:allay_spawn_egg";
public const AMETHYST_SHARD = "minecraft:amethyst_shard";
public const APPLE = "minecraft:apple";
public const ARCHER_POTTERY_SHARD = "minecraft:archer_pottery_shard";
public const ARMOR_STAND = "minecraft:armor_stand";
public const ARMS_UP_POTTERY_SHARD = "minecraft:arms_up_pottery_shard";
public const ARROW = "minecraft:arrow";
public const AXOLOTL_BUCKET = "minecraft:axolotl_bucket";
public const AXOLOTL_SPAWN_EGG = "minecraft:axolotl_spawn_egg";
@ -74,6 +76,7 @@ final class ItemTypeNames{
public const BREWING_STAND = "minecraft:brewing_stand";
public const BRICK = "minecraft:brick";
public const BROWN_DYE = "minecraft:brown_dye";
public const BRUSH = "minecraft:brush";
public const BUCKET = "minecraft:bucket";
public const CAKE = "minecraft:cake";
public const CAMEL_SPAWN_EGG = "minecraft:camel_spawn_egg";
@ -126,6 +129,7 @@ final class ItemTypeNames{
public const DARK_OAK_CHEST_BOAT = "minecraft:dark_oak_chest_boat";
public const DARK_OAK_DOOR = "minecraft:dark_oak_door";
public const DARK_OAK_SIGN = "minecraft:dark_oak_sign";
public const DEBUG_STICK = "minecraft:debug_stick";
public const DIAMOND = "minecraft:diamond";
public const DIAMOND_AXE = "minecraft:diamond_axe";
public const DIAMOND_BOOTS = "minecraft:diamond_boots";
@ -326,6 +330,7 @@ final class ItemTypeNames{
public const POWDER_SNOW_BUCKET = "minecraft:powder_snow_bucket";
public const PRISMARINE_CRYSTALS = "minecraft:prismarine_crystals";
public const PRISMARINE_SHARD = "minecraft:prismarine_shard";
public const PRIZE_POTTERY_SHARD = "minecraft:prize_pottery_shard";
public const PUFFERFISH = "minecraft:pufferfish";
public const PUFFERFISH_BUCKET = "minecraft:pufferfish_bucket";
public const PUFFERFISH_SPAWN_EGG = "minecraft:pufferfish_spawn_egg";
@ -363,6 +368,7 @@ final class ItemTypeNames{
public const SKELETON_SPAWN_EGG = "minecraft:skeleton_spawn_egg";
public const SKULL = "minecraft:skull";
public const SKULL_BANNER_PATTERN = "minecraft:skull_banner_pattern";
public const SKULL_POTTERY_SHARD = "minecraft:skull_pottery_shard";
public const SLIME_BALL = "minecraft:slime_ball";
public const SLIME_SPAWN_EGG = "minecraft:slime_spawn_egg";
public const SNIFFER_SPAWN_EGG = "minecraft:sniffer_spawn_egg";
@ -396,6 +402,7 @@ final class ItemTypeNames{
public const TADPOLE_BUCKET = "minecraft:tadpole_bucket";
public const TADPOLE_SPAWN_EGG = "minecraft:tadpole_spawn_egg";
public const TNT_MINECART = "minecraft:tnt_minecart";
public const TORCHFLOWER_SEEDS = "minecraft:torchflower_seeds";
public const TOTEM_OF_UNDYING = "minecraft:totem_of_undying";
public const TRADER_LLAMA_SPAWN_EGG = "minecraft:trader_llama_spawn_egg";
public const TRIDENT = "minecraft:trident";
@ -426,6 +433,7 @@ final class ItemTypeNames{
public const WOODEN_PICKAXE = "minecraft:wooden_pickaxe";
public const WOODEN_SHOVEL = "minecraft:wooden_shovel";
public const WOODEN_SWORD = "minecraft:wooden_sword";
public const WOOL = "minecraft:wool";
public const WRITABLE_BOOK = "minecraft:writable_book";
public const WRITTEN_BOOK = "minecraft:written_book";
public const YELLOW_DYE = "minecraft:yellow_dye";

View File

@ -43,7 +43,7 @@ use const pocketmine\BEDROCK_BLOCK_UPGRADE_SCHEMA_PATH;
* benefits for now.
*/
final class GlobalBlockStateHandlers{
public const MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID = 161; //0161_1.19.50_to_1.19.60.26_beta.json
public const MAX_BLOCKSTATE_UPGRADE_SCHEMA_ID = 171; //0171_1.19.60_to_1.9.70.26_beta.json
private static ?BlockObjectToStateSerializer $blockStateSerializer = null;

View File

@ -34,7 +34,7 @@ use Symfony\Component\Filesystem\Path;
use const pocketmine\BEDROCK_ITEM_UPGRADE_SCHEMA_PATH;
final class GlobalItemDataHandlers{
public const MAX_ITEM_ID_UPGRADE_SCHEMA_ID = 81; //0081_1.18.30_to_1.19.30.34_beta.json
public const MAX_ITEM_ID_UPGRADE_SCHEMA_ID = 91; //0091_1.19.60_to_1.19.70.26_beta.json
private static ?ItemSerializer $itemSerializer = null;

View File

@ -53,6 +53,7 @@ use pocketmine\network\mcpe\protocol\types\CacheableNbt;
use pocketmine\network\mcpe\protocol\types\inventory\CreativeContentEntry;
use pocketmine\network\mcpe\protocol\types\inventory\ItemStack;
use pocketmine\network\mcpe\protocol\types\ItemTypeEntry;
use pocketmine\network\mcpe\protocol\types\recipe\ComplexAliasItemDescriptor;
use pocketmine\network\mcpe\protocol\types\recipe\FurnaceRecipe;
use pocketmine\network\mcpe\protocol\types\recipe\IntIdMetaItemDescriptor;
use pocketmine\network\mcpe\protocol\types\recipe\MolangItemDescriptor;
@ -282,6 +283,8 @@ class ParserPacketHandler extends PacketHandler{
}elseif($descriptor instanceof MolangItemDescriptor){
$data->molang_expression = $descriptor->getMolangExpression();
$data->molang_version = $descriptor->getMolangVersion();
}elseif($descriptor instanceof ComplexAliasItemDescriptor){
$data->name = $descriptor->getAlias();
}else{
throw new \UnexpectedValueException("Unknown item descriptor type " . get_class($descriptor));
}