GlazedTerracotta: make colour dynamic, like all other coloured blocks

made possible by stripping out legacy mess
This commit is contained in:
Dylan K. Taylor 2022-07-02 18:30:23 +01:00
parent 7430e1fbc0
commit 248eacd042
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
11 changed files with 74 additions and 152 deletions

View File

@ -50,7 +50,6 @@ use pocketmine\block\tile\Note as TileNote;
use pocketmine\block\tile\ShulkerBox as TileShulkerBox;
use pocketmine\block\tile\Skull as TileSkull;
use pocketmine\block\tile\Smoker as TileSmoker;
use pocketmine\block\utils\DyeColor;
use pocketmine\block\utils\InvalidBlockStateException;
use pocketmine\block\utils\TreeType;
use pocketmine\item\Item;
@ -496,13 +495,7 @@ class BlockFactory{
$this->register(new Opaque(new BID(Ids::CUT_SANDSTONE), "Cut Sandstone", $sandstoneBreakInfo));
$this->register(new Opaque(new BID(Ids::SMOOTH_SANDSTONE), "Smooth Sandstone", $sandstoneBreakInfo));
$glazedTerracottaBreakInfo = new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel());
foreach(DyeColor::getAll() as $color){
$coloredName = function(string $name) use($color) : string{
return $color->getDisplayName() . " " . $name;
};
$this->register(new GlazedTerracotta(BlockLegacyIdHelper::getGlazedTerracottaIdentifier($color), $coloredName("Glazed Terracotta"), $glazedTerracottaBreakInfo));
}
$this->register(new GlazedTerracotta(new BID(Ids::GLAZED_TERRACOTTA), "Glazed Terracotta", new BreakInfo(1.4, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel())));
$this->register(new DyedShulkerBox(new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class), "Dyed Shulker Box", $shulkerBoxBreakInfo));
$this->register(new StainedGlass(new BID(Ids::STAINED_GLASS), "Stained Glass", $glassBreakInfo));
$this->register(new StainedGlassPane(new BID(Ids::STAINED_GLASS_PANE), "Stained Glass Pane", $glassBreakInfo));

View File

@ -26,7 +26,6 @@ namespace pocketmine\block;
use pocketmine\block\BlockIdentifier as BID;
use pocketmine\block\BlockTypeIds as Ids;
use pocketmine\block\tile\Sign as TileSign;
use pocketmine\block\utils\DyeColor;
use pocketmine\block\utils\TreeType;
use pocketmine\item\VanillaItems;
use pocketmine\utils\AssumptionFailedError;
@ -300,42 +299,4 @@ final class BlockLegacyIdHelper{
}
throw new AssumptionFailedError("Switch should cover all wood types");
}
public static function getGlazedTerracottaIdentifier(DyeColor $color) : BlockIdentifier{
switch($color->id()){
case DyeColor::WHITE()->id():
return new BID(Ids::WHITE_GLAZED_TERRACOTTA);
case DyeColor::ORANGE()->id():
return new BID(Ids::ORANGE_GLAZED_TERRACOTTA);
case DyeColor::MAGENTA()->id():
return new BID(Ids::MAGENTA_GLAZED_TERRACOTTA);
case DyeColor::LIGHT_BLUE()->id():
return new BID(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA);
case DyeColor::YELLOW()->id():
return new BID(Ids::YELLOW_GLAZED_TERRACOTTA);
case DyeColor::LIME()->id():
return new BID(Ids::LIME_GLAZED_TERRACOTTA);
case DyeColor::PINK()->id():
return new BID(Ids::PINK_GLAZED_TERRACOTTA);
case DyeColor::GRAY()->id():
return new BID(Ids::GRAY_GLAZED_TERRACOTTA);
case DyeColor::LIGHT_GRAY()->id():
return new BID(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA);
case DyeColor::CYAN()->id():
return new BID(Ids::CYAN_GLAZED_TERRACOTTA);
case DyeColor::PURPLE()->id():
return new BID(Ids::PURPLE_GLAZED_TERRACOTTA);
case DyeColor::BLUE()->id():
return new BID(Ids::BLUE_GLAZED_TERRACOTTA);
case DyeColor::BROWN()->id():
return new BID(Ids::BROWN_GLAZED_TERRACOTTA);
case DyeColor::GREEN()->id():
return new BID(Ids::GREEN_GLAZED_TERRACOTTA);
case DyeColor::RED()->id():
return new BID(Ids::RED_GLAZED_TERRACOTTA);
case DyeColor::BLACK()->id():
return new BID(Ids::BLACK_GLAZED_TERRACOTTA);
}
throw new AssumptionFailedError("Switch should cover all colours");
}
}

View File

@ -87,9 +87,9 @@ final class BlockTypeIds{
public const BIRCH_TRAPDOOR = 10047;
public const BIRCH_WALL_SIGN = 10048;
public const BIRCH_WOOD = 10049;
public const BLACK_GLAZED_TERRACOTTA = 10050;
public const BLAST_FURNACE = 10051;
public const BLUE_GLAZED_TERRACOTTA = 10052;
public const BLUE_ICE = 10053;
public const BLUE_ORCHID = 10054;
public const BLUE_TORCH = 10055;
@ -100,7 +100,7 @@ final class BlockTypeIds{
public const BRICK_STAIRS = 10060;
public const BRICK_WALL = 10061;
public const BRICKS = 10062;
public const BROWN_GLAZED_TERRACOTTA = 10063;
public const BROWN_MUSHROOM = 10064;
public const BROWN_MUSHROOM_BLOCK = 10065;
public const CACTUS = 10066;
@ -136,7 +136,7 @@ final class BlockTypeIds{
public const CUT_RED_SANDSTONE_SLAB = 10096;
public const CUT_SANDSTONE = 10097;
public const CUT_SANDSTONE_SLAB = 10098;
public const CYAN_GLAZED_TERRACOTTA = 10099;
public const DANDELION = 10100;
public const DARK_OAK_BUTTON = 10101;
public const DARK_OAK_DOOR = 10102;
@ -322,8 +322,7 @@ final class BlockTypeIds{
public const GRASS = 10282;
public const GRASS_PATH = 10283;
public const GRAVEL = 10284;
public const GRAY_GLAZED_TERRACOTTA = 10285;
public const GREEN_GLAZED_TERRACOTTA = 10286;
public const GREEN_TORCH = 10287;
public const HARDENED_CLAY = 10288;
public const HARDENED_GLASS = 10289;
@ -372,15 +371,14 @@ final class BlockTypeIds{
public const LECTERN = 10332;
public const LEGACY_STONECUTTER = 10333;
public const LEVER = 10334;
public const LIGHT_BLUE_GLAZED_TERRACOTTA = 10335;
public const LIGHT_GRAY_GLAZED_TERRACOTTA = 10336;
public const LILAC = 10337;
public const LILY_OF_THE_VALLEY = 10338;
public const LILY_PAD = 10339;
public const LIME_GLAZED_TERRACOTTA = 10340;
public const LIT_PUMPKIN = 10341;
public const LOOM = 10342;
public const MAGENTA_GLAZED_TERRACOTTA = 10343;
public const MAGMA = 10344;
public const MATERIAL_REDUCER = 10345;
public const MELON = 10346;
@ -425,12 +423,12 @@ final class BlockTypeIds{
public const OAK_WALL_SIGN = 10385;
public const OAK_WOOD = 10386;
public const OBSIDIAN = 10387;
public const ORANGE_GLAZED_TERRACOTTA = 10388;
public const ORANGE_TULIP = 10389;
public const OXEYE_DAISY = 10390;
public const PACKED_ICE = 10391;
public const PEONY = 10392;
public const PINK_GLAZED_TERRACOTTA = 10393;
public const PINK_TULIP = 10394;
public const PODZOL = 10395;
public const POLISHED_ANDESITE = 10396;
@ -454,7 +452,7 @@ final class BlockTypeIds{
public const PRISMARINE_WALL = 10414;
public const PUMPKIN = 10415;
public const PUMPKIN_STEM = 10416;
public const PURPLE_GLAZED_TERRACOTTA = 10417;
public const PURPLE_TORCH = 10418;
public const PURPUR = 10419;
public const PURPUR_PILLAR = 10420;
@ -465,7 +463,7 @@ final class BlockTypeIds{
public const QUARTZ_SLAB = 10425;
public const QUARTZ_STAIRS = 10426;
public const RAIL = 10427;
public const RED_GLAZED_TERRACOTTA = 10428;
public const RED_MUSHROOM = 10429;
public const RED_MUSHROOM_BLOCK = 10430;
public const RED_NETHER_BRICK_SLAB = 10431;
@ -572,10 +570,11 @@ final class BlockTypeIds{
public const WEIGHTED_PRESSURE_PLATE_HEAVY = 10532;
public const WEIGHTED_PRESSURE_PLATE_LIGHT = 10533;
public const WHEAT = 10534;
public const WHITE_GLAZED_TERRACOTTA = 10535;
public const WHITE_TULIP = 10536;
public const WOOL = 10537;
public const YELLOW_GLAZED_TERRACOTTA = 10538;
public const FIRST_UNUSED_BLOCK_ID = 10539;
public const GLAZED_TERRACOTTA = 10539;
public const FIRST_UNUSED_BLOCK_ID = 10540;
}

View File

@ -23,10 +23,18 @@ declare(strict_types=1);
namespace pocketmine\block;
use pocketmine\block\utils\ColoredTrait;
use pocketmine\block\utils\DyeColor;
use pocketmine\block\utils\FacesOppositePlacingPlayerTrait;
use pocketmine\block\utils\HorizontalFacingTrait;
class GlazedTerracotta extends Opaque{
use ColoredTrait;
use FacesOppositePlacingPlayerTrait;
use HorizontalFacingTrait;
public function __construct(BlockIdentifier $idInfo, string $name, BlockBreakInfo $breakInfo){
$this->color = DyeColor::BLACK();
parent::__construct($idInfo, $name, $breakInfo);
}
}

View File

@ -82,9 +82,7 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static WoodenTrapdoor BIRCH_TRAPDOOR()
* @method static WallSign BIRCH_WALL_SIGN()
* @method static Wood BIRCH_WOOD()
* @method static GlazedTerracotta BLACK_GLAZED_TERRACOTTA()
* @method static Furnace BLAST_FURNACE()
* @method static GlazedTerracotta BLUE_GLAZED_TERRACOTTA()
* @method static BlueIce BLUE_ICE()
* @method static Flower BLUE_ORCHID()
* @method static Torch BLUE_TORCH()
@ -95,7 +93,6 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static Slab BRICK_SLAB()
* @method static Stair BRICK_STAIRS()
* @method static Wall BRICK_WALL()
* @method static GlazedTerracotta BROWN_GLAZED_TERRACOTTA()
* @method static BrownMushroom BROWN_MUSHROOM()
* @method static BrownMushroomBlock BROWN_MUSHROOM_BLOCK()
* @method static Cactus CACTUS()
@ -131,7 +128,6 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static Slab CUT_RED_SANDSTONE_SLAB()
* @method static Opaque CUT_SANDSTONE()
* @method static Slab CUT_SANDSTONE_SLAB()
* @method static GlazedTerracotta CYAN_GLAZED_TERRACOTTA()
* @method static Flower DANDELION()
* @method static WoodenButton DARK_OAK_BUTTON()
* @method static WoodenDoor DARK_OAK_DOOR()
@ -306,6 +302,7 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static Furnace FURNACE()
* @method static Glass GLASS()
* @method static GlassPane GLASS_PANE()
* @method static GlazedTerracotta GLAZED_TERRACOTTA()
* @method static GlowingObsidian GLOWING_OBSIDIAN()
* @method static Glowstone GLOWSTONE()
* @method static Opaque GOLD()
@ -317,8 +314,6 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static Grass GRASS()
* @method static GrassPath GRASS_PATH()
* @method static Gravel GRAVEL()
* @method static GlazedTerracotta GRAY_GLAZED_TERRACOTTA()
* @method static GlazedTerracotta GREEN_GLAZED_TERRACOTTA()
* @method static Torch GREEN_TORCH()
* @method static HardenedClay HARDENED_CLAY()
* @method static HardenedGlass HARDENED_GLASS()
@ -367,15 +362,11 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static Lectern LECTERN()
* @method static Opaque LEGACY_STONECUTTER()
* @method static Lever LEVER()
* @method static GlazedTerracotta LIGHT_BLUE_GLAZED_TERRACOTTA()
* @method static GlazedTerracotta LIGHT_GRAY_GLAZED_TERRACOTTA()
* @method static DoublePlant LILAC()
* @method static Flower LILY_OF_THE_VALLEY()
* @method static WaterLily LILY_PAD()
* @method static GlazedTerracotta LIME_GLAZED_TERRACOTTA()
* @method static LitPumpkin LIT_PUMPKIN()
* @method static Loom LOOM()
* @method static GlazedTerracotta MAGENTA_GLAZED_TERRACOTTA()
* @method static Magma MAGMA()
* @method static ChemistryTable MATERIAL_REDUCER()
* @method static Melon MELON()
@ -420,12 +411,10 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static WallSign OAK_WALL_SIGN()
* @method static Wood OAK_WOOD()
* @method static Opaque OBSIDIAN()
* @method static GlazedTerracotta ORANGE_GLAZED_TERRACOTTA()
* @method static Flower ORANGE_TULIP()
* @method static Flower OXEYE_DAISY()
* @method static PackedIce PACKED_ICE()
* @method static DoublePlant PEONY()
* @method static GlazedTerracotta PINK_GLAZED_TERRACOTTA()
* @method static Flower PINK_TULIP()
* @method static Podzol PODZOL()
* @method static Opaque POLISHED_ANDESITE()
@ -449,7 +438,6 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static Wall PRISMARINE_WALL()
* @method static Pumpkin PUMPKIN()
* @method static PumpkinStem PUMPKIN_STEM()
* @method static GlazedTerracotta PURPLE_GLAZED_TERRACOTTA()
* @method static Torch PURPLE_TORCH()
* @method static Opaque PURPUR()
* @method static SimplePillar PURPUR_PILLAR()
@ -467,7 +455,6 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static RedstoneRepeater REDSTONE_REPEATER()
* @method static RedstoneTorch REDSTONE_TORCH()
* @method static RedstoneWire REDSTONE_WIRE()
* @method static GlazedTerracotta RED_GLAZED_TERRACOTTA()
* @method static RedMushroom RED_MUSHROOM()
* @method static RedMushroomBlock RED_MUSHROOM_BLOCK()
* @method static Opaque RED_NETHER_BRICKS()
@ -567,10 +554,8 @@ use pocketmine\utils\CloningRegistryTrait;
* @method static WeightedPressurePlateHeavy WEIGHTED_PRESSURE_PLATE_HEAVY()
* @method static WeightedPressurePlateLight WEIGHTED_PRESSURE_PLATE_LIGHT()
* @method static Wheat WHEAT()
* @method static GlazedTerracotta WHITE_GLAZED_TERRACOTTA()
* @method static Flower WHITE_TULIP()
* @method static Wool WOOL()
* @method static GlazedTerracotta YELLOW_GLAZED_TERRACOTTA()
*/
final class VanillaBlocks{
use CloningRegistryTrait;
@ -645,9 +630,7 @@ final class VanillaBlocks{
self::register("birch_trapdoor", $factory->get(Ids::BIRCH_TRAPDOOR, 0));
self::register("birch_wall_sign", $factory->get(Ids::BIRCH_WALL_SIGN, 0));
self::register("birch_wood", $factory->get(Ids::BIRCH_WOOD, 0));
self::register("black_glazed_terracotta", $factory->get(Ids::BLACK_GLAZED_TERRACOTTA, 0));
self::register("blast_furnace", $factory->get(Ids::BLAST_FURNACE, 0));
self::register("blue_glazed_terracotta", $factory->get(Ids::BLUE_GLAZED_TERRACOTTA, 0));
self::register("blue_ice", $factory->get(Ids::BLUE_ICE, 0));
self::register("blue_orchid", $factory->get(Ids::BLUE_ORCHID, 0));
self::register("blue_torch", $factory->get(Ids::BLUE_TORCH, 1));
@ -658,7 +641,6 @@ final class VanillaBlocks{
self::register("brick_stairs", $factory->get(Ids::BRICK_STAIRS, 0));
self::register("brick_wall", $factory->get(Ids::BRICK_WALL, 0));
self::register("bricks", $factory->get(Ids::BRICKS, 0));
self::register("brown_glazed_terracotta", $factory->get(Ids::BROWN_GLAZED_TERRACOTTA, 0));
self::register("brown_mushroom", $factory->get(Ids::BROWN_MUSHROOM, 0));
self::register("brown_mushroom_block", $factory->get(Ids::BROWN_MUSHROOM_BLOCK, 10));
self::register("cactus", $factory->get(Ids::CACTUS, 0));
@ -694,7 +676,6 @@ final class VanillaBlocks{
self::register("cut_red_sandstone_slab", $factory->get(Ids::CUT_RED_SANDSTONE_SLAB, 0));
self::register("cut_sandstone", $factory->get(Ids::CUT_SANDSTONE, 0));
self::register("cut_sandstone_slab", $factory->get(Ids::CUT_SANDSTONE_SLAB, 0));
self::register("cyan_glazed_terracotta", $factory->get(Ids::CYAN_GLAZED_TERRACOTTA, 0));
self::register("dandelion", $factory->get(Ids::DANDELION, 0));
self::register("dark_oak_button", $factory->get(Ids::DARK_OAK_BUTTON, 0));
self::register("dark_oak_door", $factory->get(Ids::DARK_OAK_DOOR, 0));
@ -869,6 +850,7 @@ final class VanillaBlocks{
self::register("furnace", $factory->get(Ids::FURNACE, 0));
self::register("glass", $factory->get(Ids::GLASS, 0));
self::register("glass_pane", $factory->get(Ids::GLASS_PANE, 0));
self::register("glazed_terracotta", $factory->get(Ids::GLAZED_TERRACOTTA, 0));
self::register("glowing_obsidian", $factory->get(Ids::GLOWING_OBSIDIAN, 0));
self::register("glowstone", $factory->get(Ids::GLOWSTONE, 0));
self::register("gold", $factory->get(Ids::GOLD, 0));
@ -880,8 +862,6 @@ final class VanillaBlocks{
self::register("grass", $factory->get(Ids::GRASS, 0));
self::register("grass_path", $factory->get(Ids::GRASS_PATH, 0));
self::register("gravel", $factory->get(Ids::GRAVEL, 0));
self::register("gray_glazed_terracotta", $factory->get(Ids::GRAY_GLAZED_TERRACOTTA, 0));
self::register("green_glazed_terracotta", $factory->get(Ids::GREEN_GLAZED_TERRACOTTA, 0));
self::register("green_torch", $factory->get(Ids::GREEN_TORCH, 1));
self::register("hardened_clay", $factory->get(Ids::HARDENED_CLAY, 0));
self::register("hardened_glass", $factory->get(Ids::HARDENED_GLASS, 0));
@ -930,15 +910,11 @@ final class VanillaBlocks{
self::register("lectern", $factory->get(Ids::LECTERN, 0));
self::register("legacy_stonecutter", $factory->get(Ids::LEGACY_STONECUTTER, 0));
self::register("lever", $factory->get(Ids::LEVER, 5));
self::register("light_blue_glazed_terracotta", $factory->get(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, 0));
self::register("light_gray_glazed_terracotta", $factory->get(Ids::LIGHT_GRAY_GLAZED_TERRACOTTA, 0));
self::register("lilac", $factory->get(Ids::LILAC, 0));
self::register("lily_of_the_valley", $factory->get(Ids::LILY_OF_THE_VALLEY, 0));
self::register("lily_pad", $factory->get(Ids::LILY_PAD, 0));
self::register("lime_glazed_terracotta", $factory->get(Ids::LIME_GLAZED_TERRACOTTA, 0));
self::register("lit_pumpkin", $factory->get(Ids::LIT_PUMPKIN, 0));
self::register("loom", $factory->get(Ids::LOOM, 0));
self::register("magenta_glazed_terracotta", $factory->get(Ids::MAGENTA_GLAZED_TERRACOTTA, 0));
self::register("magma", $factory->get(Ids::MAGMA, 0));
self::register("material_reducer", $factory->get(Ids::MATERIAL_REDUCER, 0));
self::register("melon", $factory->get(Ids::MELON, 0));
@ -983,12 +959,10 @@ final class VanillaBlocks{
self::register("oak_wall_sign", $factory->get(Ids::OAK_WALL_SIGN, 0));
self::register("oak_wood", $factory->get(Ids::OAK_WOOD, 0));
self::register("obsidian", $factory->get(Ids::OBSIDIAN, 0));
self::register("orange_glazed_terracotta", $factory->get(Ids::ORANGE_GLAZED_TERRACOTTA, 0));
self::register("orange_tulip", $factory->get(Ids::ORANGE_TULIP, 0));
self::register("oxeye_daisy", $factory->get(Ids::OXEYE_DAISY, 0));
self::register("packed_ice", $factory->get(Ids::PACKED_ICE, 0));
self::register("peony", $factory->get(Ids::PEONY, 0));
self::register("pink_glazed_terracotta", $factory->get(Ids::PINK_GLAZED_TERRACOTTA, 0));
self::register("pink_tulip", $factory->get(Ids::PINK_TULIP, 0));
self::register("podzol", $factory->get(Ids::PODZOL, 0));
self::register("polished_andesite", $factory->get(Ids::POLISHED_ANDESITE, 0));
@ -1012,7 +986,6 @@ final class VanillaBlocks{
self::register("prismarine_wall", $factory->get(Ids::PRISMARINE_WALL, 0));
self::register("pumpkin", $factory->get(Ids::PUMPKIN, 0));
self::register("pumpkin_stem", $factory->get(Ids::PUMPKIN_STEM, 0));
self::register("purple_glazed_terracotta", $factory->get(Ids::PURPLE_GLAZED_TERRACOTTA, 0));
self::register("purple_torch", $factory->get(Ids::PURPLE_TORCH, 1));
self::register("purpur", $factory->get(Ids::PURPUR, 0));
self::register("purpur_pillar", $factory->get(Ids::PURPUR_PILLAR, 2));
@ -1023,7 +996,6 @@ final class VanillaBlocks{
self::register("quartz_slab", $factory->get(Ids::QUARTZ_SLAB, 0));
self::register("quartz_stairs", $factory->get(Ids::QUARTZ_STAIRS, 0));
self::register("rail", $factory->get(Ids::RAIL, 0));
self::register("red_glazed_terracotta", $factory->get(Ids::RED_GLAZED_TERRACOTTA, 0));
self::register("red_mushroom", $factory->get(Ids::RED_MUSHROOM, 0));
self::register("red_mushroom_block", $factory->get(Ids::RED_MUSHROOM_BLOCK, 10));
self::register("red_nether_brick_slab", $factory->get(Ids::RED_NETHER_BRICK_SLAB, 0));
@ -1130,9 +1102,7 @@ final class VanillaBlocks{
self::register("weighted_pressure_plate_heavy", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY, 0));
self::register("weighted_pressure_plate_light", $factory->get(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT, 0));
self::register("wheat", $factory->get(Ids::WHEAT, 0));
self::register("white_glazed_terracotta", $factory->get(Ids::WHITE_GLAZED_TERRACOTTA, 0));
self::register("white_tulip", $factory->get(Ids::WHITE_TULIP, 0));
self::register("wool", $factory->get(Ids::WOOL, 14));
self::register("yellow_glazed_terracotta", $factory->get(Ids::YELLOW_GLAZED_TERRACOTTA, 0));
}
}

View File

@ -120,6 +120,7 @@ use pocketmine\block\TripwireHook;
use pocketmine\block\UnderwaterTorch;
use pocketmine\block\utils\BrewingStandSlot;
use pocketmine\block\utils\CoralType;
use pocketmine\block\utils\DyeColor;
use pocketmine\block\utils\LeverFacing;
use pocketmine\block\VanillaBlocks as Blocks;
use pocketmine\block\Vine;
@ -329,9 +330,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
$this->map(Blocks::BIRCH_TRAPDOOR(), fn(WoodenTrapdoor $block) => Helper::encodeTrapdoor($block, new Writer(Ids::BIRCH_TRAPDOOR)));
$this->map(Blocks::BIRCH_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::BIRCH_WALL_SIGN)));
$this->map(Blocks::BIRCH_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block));
$this->map(Blocks::BLACK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLACK_GLAZED_TERRACOTTA)));
$this->map(Blocks::BLAST_FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::BLAST_FURNACE, Ids::LIT_BLAST_FURNACE));
$this->map(Blocks::BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BLUE_GLAZED_TERRACOTTA)));
$this->map(Blocks::BLUE_ICE(), fn() => new Writer(Ids::BLUE_ICE));
$this->map(Blocks::BLUE_ORCHID(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_ORCHID));
$this->map(Blocks::BLUE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, false, Writer::create(Ids::COLORED_TORCH_BP)));
@ -351,7 +350,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
$this->map(Blocks::BRICK_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab1($block, StringValues::STONE_SLAB_TYPE_BRICK));
$this->map(Blocks::BRICK_STAIRS(), fn(Stair $block) => Helper::encodeStairs($block, new Writer(Ids::BRICK_STAIRS)));
$this->map(Blocks::BRICK_WALL(), fn(Wall $block) => Helper::encodeLegacyWall($block, StringValues::WALL_BLOCK_TYPE_BRICK));
$this->map(Blocks::BROWN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::BROWN_GLAZED_TERRACOTTA)));
$this->map(Blocks::BROWN_MUSHROOM(), fn() => new Writer(Ids::BROWN_MUSHROOM));
$this->map(Blocks::BROWN_MUSHROOM_BLOCK(), fn(BrownMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::BROWN_MUSHROOM_BLOCK)));
$this->map(Blocks::CACTUS(), function(Cactus $block) : Writer{
@ -428,7 +426,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
$this->map(Blocks::CUT_RED_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_RED_SANDSTONE));
$this->map(Blocks::CUT_SANDSTONE(), fn() => Helper::encodeSandstone(Ids::SANDSTONE, StringValues::SAND_STONE_TYPE_CUT));
$this->map(Blocks::CUT_SANDSTONE_SLAB(), fn(Slab $block) => Helper::encodeStoneSlab4($block, StringValues::STONE_SLAB_TYPE_4_CUT_SANDSTONE));
$this->map(Blocks::CYAN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::CYAN_GLAZED_TERRACOTTA)));
$this->map(Blocks::DANDELION(), fn() => new Writer(Ids::YELLOW_FLOWER));
$this->map(Blocks::DARK_OAK_BUTTON(), fn(WoodenButton $block) => Helper::encodeButton($block, new Writer(Ids::DARK_OAK_BUTTON)));
$this->map(Blocks::DARK_OAK_DOOR(), fn(WoodenDoor $block) => Helper::encodeDoor($block, new Writer(Ids::DARK_OAK_DOOR)));
@ -642,6 +639,28 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
$this->map(Blocks::FURNACE(), fn(Furnace $block) => Helper::encodeFurnace($block, Ids::FURNACE, Ids::LIT_FURNACE));
$this->map(Blocks::GLASS(), fn() => new Writer(Ids::GLASS));
$this->map(Blocks::GLASS_PANE(), fn() => new Writer(Ids::GLASS_PANE));
$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_OBSIDIAN(), fn() => new Writer(Ids::GLOWINGOBSIDIAN));
$this->map(Blocks::GLOWSTONE(), fn() => new Writer(Ids::GLOWSTONE));
$this->map(Blocks::GOLD(), fn() => new Writer(Ids::GOLD_BLOCK));
@ -653,8 +672,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
$this->map(Blocks::GRASS(), fn() => new Writer(Ids::GRASS));
$this->map(Blocks::GRASS_PATH(), fn() => new Writer(Ids::GRASS_PATH));
$this->map(Blocks::GRAVEL(), fn() => new Writer(Ids::GRAVEL));
$this->map(Blocks::GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GRAY_GLAZED_TERRACOTTA)));
$this->map(Blocks::GREEN_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::GREEN_GLAZED_TERRACOTTA)));
$this->map(Blocks::GREEN_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_RG)));
$this->map(Blocks::HARDENED_CLAY(), fn() => new Writer(Ids::HARDENED_CLAY));
$this->map(Blocks::HARDENED_GLASS(), fn() => new Writer(Ids::HARD_GLASS));
@ -748,12 +765,9 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
default => throw new BlockStateSerializeException("Invalid Lever facing " . $block->getFacing()->name()),
});
});
$this->map(Blocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA)));
$this->map(Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::SILVER_GLAZED_TERRACOTTA)));
$this->map(Blocks::LILAC(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_SYRINGA, Writer::create(Ids::DOUBLE_PLANT)));
$this->map(Blocks::LILY_OF_THE_VALLEY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_LILY_OF_THE_VALLEY));
$this->map(Blocks::LILY_PAD(), fn() => new Writer(Ids::WATERLILY));
$this->map(Blocks::LIME_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::LIME_GLAZED_TERRACOTTA)));
$this->map(Blocks::LIT_PUMPKIN(), function(LitPumpkin $block) : Writer{
return Writer::create(Ids::LIT_PUMPKIN)
->writeLegacyHorizontalFacing($block->getFacing());
@ -762,7 +776,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
return Writer::create(Ids::LOOM)
->writeLegacyHorizontalFacing($block->getFacing());
});
$this->map(Blocks::MAGENTA_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::MAGENTA_GLAZED_TERRACOTTA)));
$this->map(Blocks::MAGMA(), fn() => new Writer(Ids::MAGMA));
$this->map(Blocks::MATERIAL_REDUCER(), fn(ChemistryTable $block) => Helper::encodeChemistryTable($block, StringValues::CHEMISTRY_TABLE_TYPE_MATERIAL_REDUCER, new Writer(Ids::CHEMISTRY_TABLE)));
$this->map(Blocks::MELON(), fn() => new Writer(Ids::MELON_BLOCK));
@ -823,12 +836,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
$this->map(Blocks::OAK_WALL_SIGN(), fn(WallSign $block) => Helper::encodeWallSign($block, new Writer(Ids::WALL_SIGN)));
$this->map(Blocks::OAK_WOOD(), fn(Wood $block) => Helper::encodeAllSidedLog($block));
$this->map(Blocks::OBSIDIAN(), fn() => new Writer(Ids::OBSIDIAN));
$this->map(Blocks::ORANGE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::ORANGE_GLAZED_TERRACOTTA)));
$this->map(Blocks::ORANGE_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_ORANGE));
$this->map(Blocks::OXEYE_DAISY(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_OXEYE));
$this->map(Blocks::PACKED_ICE(), fn() => new Writer(Ids::PACKED_ICE));
$this->map(Blocks::PEONY(), fn(DoublePlant $block) => Helper::encodeDoublePlant($block, StringValues::DOUBLE_PLANT_TYPE_PAEONIA, Writer::create(Ids::DOUBLE_PLANT)));
$this->map(Blocks::PINK_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PINK_GLAZED_TERRACOTTA)));
$this->map(Blocks::PINK_TULIP(), fn() => Helper::encodeRedFlower(StringValues::FLOWER_TYPE_TULIP_PINK));
$this->map(Blocks::PODZOL(), fn() => new Writer(Ids::PODZOL));
$this->map(Blocks::POLISHED_ANDESITE(), fn() => Helper::encodeStone(StringValues::STONE_TYPE_ANDESITE_SMOOTH));
@ -861,7 +872,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
->writeLegacyHorizontalFacing(Facing::SOUTH); //no longer used
});
$this->map(Blocks::PUMPKIN_STEM(), fn(PumpkinStem $block) => Helper::encodeStem($block, new Writer(Ids::PUMPKIN_STEM)));
$this->map(Blocks::PURPLE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::PURPLE_GLAZED_TERRACOTTA)));
$this->map(Blocks::PURPLE_TORCH(), fn(Torch $block) => Helper::encodeColoredTorch($block, true, Writer::create(Ids::COLORED_TORCH_BP)));
$this->map(Blocks::PURPUR(), function() : Writer{
return Writer::create(Ids::PURPUR_BLOCK)
@ -905,7 +915,6 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
return Writer::create(Ids::REDSTONE_WIRE)
->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength());
});
$this->map(Blocks::RED_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::RED_GLAZED_TERRACOTTA)));
$this->map(Blocks::RED_MUSHROOM(), fn() => new Writer(Ids::RED_MUSHROOM));
$this->map(Blocks::RED_MUSHROOM_BLOCK(), fn(RedMushroomBlock $block) => Helper::encodeMushroomBlock($block, new Writer(Ids::RED_MUSHROOM_BLOCK)));
$this->map(Blocks::RED_NETHER_BRICKS(), fn() => new Writer(Ids::RED_NETHER_BRICK));
@ -1096,12 +1105,10 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
->writeInt(StateNames::REDSTONE_SIGNAL, $block->getOutputSignalStrength());
});
$this->map(Blocks::WHEAT(), fn(Wheat $block) => Helper::encodeCrops($block, new Writer(Ids::WHEAT)));
$this->map(Blocks::WHITE_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::WHITE_GLAZED_TERRACOTTA)));
$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());
});
$this->map(Blocks::YELLOW_GLAZED_TERRACOTTA(), fn(GlazedTerracotta $block) => Helper::encodeGlazedTerracotta($block, new Writer(Ids::YELLOW_GLAZED_TERRACOTTA)));
}
}

View File

@ -41,6 +41,7 @@ use pocketmine\block\Slab;
use pocketmine\block\Stair;
use pocketmine\block\Stem;
use pocketmine\block\Trapdoor;
use pocketmine\block\utils\DyeColor;
use pocketmine\block\VanillaBlocks;
use pocketmine\block\Wall;
use pocketmine\block\WallCoralFan;
@ -125,8 +126,10 @@ final class BlockStateDeserializerHelper{
}
/** @throws BlockStateDeserializeException */
public static function decodeGlazedTerracotta(GlazedTerracotta $block, BlockStateReader $in) : GlazedTerracotta{
return $block->setFacing($in->readHorizontalFacing());
public static function decodeGlazedTerracotta(DyeColor $color, BlockStateReader $in) : GlazedTerracotta{
return VanillaBlocks::GLAZED_TERRACOTTA()
->setColor($color)
->setFacing($in->readHorizontalFacing());
}
/** @throws BlockStateDeserializeException */

View File

@ -31,7 +31,6 @@ use pocketmine\block\DoublePlant;
use pocketmine\block\FenceGate;
use pocketmine\block\FloorSign;
use pocketmine\block\Furnace;
use pocketmine\block\GlazedTerracotta;
use pocketmine\block\Leaves;
use pocketmine\block\Liquid;
use pocketmine\block\Log;
@ -114,9 +113,6 @@ final class BlockStateSerializerHelper{
return BlockStateWriter::create($block->isLit() ? $litId : $unlitId)
->writeHorizontalFacing($block->getFacing());
}
public static function encodeGlazedTerracotta(GlazedTerracotta $block, BlockStateWriter $out) : BlockStateWriter{
return $out->writeHorizontalFacing($block->getFacing());
}
private static function encodeLeaves(Leaves $block, BlockStateWriter $out) : BlockStateWriter{
return $out

View File

@ -28,6 +28,7 @@ use pocketmine\block\Block;
use pocketmine\block\SweetBerryBush;
use pocketmine\block\utils\BrewingStandSlot;
use pocketmine\block\utils\CoralType;
use pocketmine\block\utils\DyeColor;
use pocketmine\block\utils\LeverFacing;
use pocketmine\block\utils\SlabType;
use pocketmine\block\VanillaBlocks as Blocks;
@ -147,13 +148,13 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
$this->map(Ids::BIRCH_STANDING_SIGN, fn(Reader $in) => Helper::decodeFloorSign(Blocks::BIRCH_SIGN(), $in));
$this->map(Ids::BIRCH_TRAPDOOR, fn(Reader $in) => Helper::decodeTrapdoor(Blocks::BIRCH_TRAPDOOR(), $in));
$this->map(Ids::BIRCH_WALL_SIGN, fn(Reader $in) => Helper::decodeWallSign(Blocks::BIRCH_WALL_SIGN(), $in));
$this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::BLACK_GLAZED_TERRACOTTA(), $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(Blocks::BLUE_GLAZED_TERRACOTTA(), $in));
$this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in));
$this->map(Ids::BLUE_ICE, fn() => Blocks::BLUE_ICE());
$this->map(Ids::BONE_BLOCK, function(Reader $in) : Block{
$in->ignored(StateNames::DEPRECATED);
@ -168,7 +169,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
});
$this->map(Ids::BRICK_BLOCK, fn() => Blocks::BRICKS());
$this->map(Ids::BRICK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::BRICK_STAIRS(), $in));
$this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::BROWN_GLAZED_TERRACOTTA(), $in));
$this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in));
$this->map(Ids::BROWN_MUSHROOM, fn() => Blocks::BROWN_MUSHROOM());
$this->map(Ids::BROWN_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::BROWN_MUSHROOM_BLOCK(), $in));
$this->map(Ids::CACTUS, function(Reader $in) : Block{
@ -256,7 +257,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
->setCoralType(CoralType::HORN());
});
$this->map(Ids::CRAFTING_TABLE, fn() => Blocks::CRAFTING_TABLE());
$this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::CYAN_GLAZED_TERRACOTTA(), $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));
@ -515,8 +516,8 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
$this->map(Ids::GRASS, fn() => Blocks::GRASS());
$this->map(Ids::GRASS_PATH, fn() => Blocks::GRASS_PATH());
$this->map(Ids::GRAVEL, fn() => Blocks::GRAVEL());
$this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::GRAY_GLAZED_TERRACOTTA(), $in));
$this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::GREEN_GLAZED_TERRACOTTA(), $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::HARD_GLASS, fn() => Blocks::HARDENED_GLASS());
$this->map(Ids::HARD_GLASS_PANE, fn() => Blocks::HARDENED_GLASS_PANE());
$this->map(Ids::HARD_STAINED_GLASS, function(Reader $in) : Block{
@ -607,9 +608,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
default => throw $in->badValueException(StateNames::LEVER_DIRECTION, $value),
});
});
$this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::LIGHT_BLUE_GLAZED_TERRACOTTA(), $in));
$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(Blocks::LIME_GLAZED_TERRACOTTA(), $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())
@ -659,7 +660,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
return Blocks::LOOM()
->setFacing($in->readLegacyHorizontalFacing());
});
$this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::MAGENTA_GLAZED_TERRACOTTA(), $in));
$this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in));
$this->map(Ids::MAGMA, fn() => Blocks::MAGMA());
$this->map(Ids::MELON_BLOCK, fn() => Blocks::MELON());
$this->map(Ids::MELON_STEM, fn(Reader $in) => Helper::decodeStem(Blocks::MELON_STEM(), $in));
@ -693,9 +694,9 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
$this->map(Ids::NOTEBLOCK, fn() => Blocks::NOTE_BLOCK());
$this->map(Ids::OAK_STAIRS, fn(Reader $in) => Helper::decodeStairs(Blocks::OAK_STAIRS(), $in));
$this->map(Ids::OBSIDIAN, fn() => Blocks::OBSIDIAN());
$this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::ORANGE_GLAZED_TERRACOTTA(), $in));
$this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in));
$this->map(Ids::PACKED_ICE, fn() => Blocks::PACKED_ICE());
$this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::PINK_GLAZED_TERRACOTTA(), $in));
$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(),
@ -739,7 +740,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
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(Blocks::PURPLE_GLAZED_TERRACOTTA(), $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){
@ -793,7 +794,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
default => throw $in->badValueException(StateNames::FLOWER_TYPE, $type),
};
});
$this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::RED_GLAZED_TERRACOTTA(), $in));
$this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::RED(), $in));
$this->map(Ids::RED_MUSHROOM, fn() => Blocks::RED_MUSHROOM());
$this->map(Ids::RED_MUSHROOM_BLOCK, fn(Reader $in) => Helper::decodeMushroomBlock(Blocks::RED_MUSHROOM_BLOCK(), $in));
$this->map(Ids::RED_NETHER_BRICK, fn() => Blocks::RED_NETHER_BRICKS());
@ -870,7 +871,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
return Blocks::DYED_SHULKER_BOX()
->setColor($in->readColor());
});
$this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA(), $in));
$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());
@ -1052,7 +1053,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
$this->map(Ids::WATERLILY, fn() => Blocks::LILY_PAD());
$this->map(Ids::WEB, fn() => Blocks::COBWEB());
$this->map(Ids::WHEAT, fn(Reader $in) => Helper::decodeCrops(Blocks::WHEAT(), $in));
$this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::WHITE_GLAZED_TERRACOTTA(), $in));
$this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in));
$this->map(Ids::WOOD, function(Reader $in) : Block{
$in->todo(StateNames::PILLAR_AXIS); //TODO: our impl doesn't support axis yet
$stripped = $in->readBool(StateNames::STRIPPED_BIT);
@ -1075,7 +1076,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
->setColor($in->readColor());
});
$this->map(Ids::YELLOW_FLOWER, fn() => Blocks::DANDELION());
$this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(Blocks::YELLOW_GLAZED_TERRACOTTA(), $in));
$this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in));
//$this->map(Ids::ALLOW, function(Reader $in) : Block{
/* TODO: Un-implemented block */
//});

View File

@ -52,6 +52,7 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock($prefix("carpet"), fn() => Blocks::CARPET()->setColor($color));
$result->registerBlock($prefix("concrete"), fn() => Blocks::CONCRETE()->setColor($color));
$result->registerBlock($prefix("concrete_powder"), fn() => Blocks::CONCRETE_POWDER()->setColor($color));
$result->registerBlock($prefix("glazed_terracotta"), fn() => Blocks::GLAZED_TERRACOTTA()->setColor($color));
$result->registerBlock($prefix("stained_clay"), fn() => Blocks::STAINED_CLAY()->setColor($color));
$result->registerBlock($prefix("stained_glass"), fn() => Blocks::STAINED_GLASS()->setColor($color));
$result->registerBlock($prefix("stained_glass_pane"), fn() => Blocks::STAINED_GLASS_PANE()->setColor($color));
@ -131,9 +132,7 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("birch_wood", fn() => Blocks::BIRCH_WOOD());
$result->registerBlock("birch_wood_stairs", fn() => Blocks::BIRCH_STAIRS());
$result->registerBlock("birch_wooden_stairs", fn() => Blocks::BIRCH_STAIRS());
$result->registerBlock("black_glazed_terracotta", fn() => Blocks::BLACK_GLAZED_TERRACOTTA());
$result->registerBlock("blast_furnace", fn() => Blocks::BLAST_FURNACE());
$result->registerBlock("blue_glazed_terracotta", fn() => Blocks::BLUE_GLAZED_TERRACOTTA());
$result->registerBlock("blue_ice", fn() => Blocks::BLUE_ICE());
$result->registerBlock("blue_orchid", fn() => Blocks::BLUE_ORCHID());
$result->registerBlock("blue_torch", fn() => Blocks::BLUE_TORCH());
@ -147,7 +146,6 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("brick_wall", fn() => Blocks::BRICK_WALL());
$result->registerBlock("bricks", fn() => Blocks::BRICKS());
$result->registerBlock("bricks_block", fn() => Blocks::BRICKS());
$result->registerBlock("brown_glazed_terracotta", fn() => Blocks::BROWN_GLAZED_TERRACOTTA());
$result->registerBlock("brown_mushroom", fn() => Blocks::BROWN_MUSHROOM());
$result->registerBlock("brown_mushroom_block", fn() => Blocks::BROWN_MUSHROOM_BLOCK());
$result->registerBlock("burning_furnace", fn() => Blocks::FURNACE());
@ -205,7 +203,6 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("cut_red_sandstone_slab", fn() => Blocks::CUT_RED_SANDSTONE_SLAB());
$result->registerBlock("cut_sandstone", fn() => Blocks::CUT_SANDSTONE());
$result->registerBlock("cut_sandstone_slab", fn() => Blocks::CUT_SANDSTONE_SLAB());
$result->registerBlock("cyan_glazed_terracotta", fn() => Blocks::CYAN_GLAZED_TERRACOTTA());
$result->registerBlock("damaged_anvil", fn() => Blocks::ANVIL()->setDamage(2));
$result->registerBlock("dandelion", fn() => Blocks::DANDELION());
$result->registerBlock("dark_oak_button", fn() => Blocks::DARK_OAK_BUTTON());
@ -558,8 +555,6 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("grass", fn() => Blocks::GRASS());
$result->registerBlock("grass_path", fn() => Blocks::GRASS_PATH());
$result->registerBlock("gravel", fn() => Blocks::GRAVEL());
$result->registerBlock("gray_glazed_terracotta", fn() => Blocks::GRAY_GLAZED_TERRACOTTA());
$result->registerBlock("green_glazed_terracotta", fn() => Blocks::GREEN_GLAZED_TERRACOTTA());
$result->registerBlock("green_torch", fn() => Blocks::GREEN_TORCH());
$result->registerBlock("hard_glass", fn() => Blocks::HARDENED_GLASS());
$result->registerBlock("hard_glass_pane", fn() => Blocks::HARDENED_GLASS_PANE());
@ -635,13 +630,10 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("lectern", fn() => Blocks::LECTERN());
$result->registerBlock("legacy_stonecutter", fn() => Blocks::LEGACY_STONECUTTER());
$result->registerBlock("lever", fn() => Blocks::LEVER());
$result->registerBlock("light_blue_glazed_terracotta", fn() => Blocks::LIGHT_BLUE_GLAZED_TERRACOTTA());
$result->registerBlock("light_gray_glazed_terracotta", fn() => Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA());
$result->registerBlock("light_weighted_pressure_plate", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT());
$result->registerBlock("lilac", fn() => Blocks::LILAC());
$result->registerBlock("lily_of_the_valley", fn() => Blocks::LILY_OF_THE_VALLEY());
$result->registerBlock("lily_pad", fn() => Blocks::LILY_PAD());
$result->registerBlock("lime_glazed_terracotta", fn() => Blocks::LIME_GLAZED_TERRACOTTA());
$result->registerBlock("lit_blast_furnace", fn() => Blocks::BLAST_FURNACE());
$result->registerBlock("lit_furnace", fn() => Blocks::FURNACE());
$result->registerBlock("lit_pumpkin", fn() => Blocks::LIT_PUMPKIN());
@ -652,7 +644,6 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("log", fn() => Blocks::OAK_LOG());
$result->registerBlock("log2", fn() => Blocks::ACACIA_LOG());
$result->registerBlock("loom", fn() => Blocks::LOOM());
$result->registerBlock("magenta_glazed_terracotta", fn() => Blocks::MAGENTA_GLAZED_TERRACOTTA());
$result->registerBlock("magma", fn() => Blocks::MAGMA());
$result->registerBlock("material_reducer", fn() => Blocks::MATERIAL_REDUCER());
$result->registerBlock("melon_block", fn() => Blocks::MELON());
@ -713,12 +704,10 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("oak_wood_stairs", fn() => Blocks::OAK_STAIRS());
$result->registerBlock("oak_wooden_stairs", fn() => Blocks::OAK_STAIRS());
$result->registerBlock("obsidian", fn() => Blocks::OBSIDIAN());
$result->registerBlock("orange_glazed_terracotta", fn() => Blocks::ORANGE_GLAZED_TERRACOTTA());
$result->registerBlock("orange_tulip", fn() => Blocks::ORANGE_TULIP());
$result->registerBlock("oxeye_daisy", fn() => Blocks::OXEYE_DAISY());
$result->registerBlock("packed_ice", fn() => Blocks::PACKED_ICE());
$result->registerBlock("peony", fn() => Blocks::PEONY());
$result->registerBlock("pink_glazed_terracotta", fn() => Blocks::PINK_GLAZED_TERRACOTTA());
$result->registerBlock("pink_tulip", fn() => Blocks::PINK_TULIP());
$result->registerBlock("plank", fn() => Blocks::OAK_PLANKS());
$result->registerBlock("planks", fn() => Blocks::OAK_PLANKS());
@ -751,7 +740,6 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("prismarine_wall", fn() => Blocks::PRISMARINE_WALL());
$result->registerBlock("pumpkin", fn() => Blocks::PUMPKIN());
$result->registerBlock("pumpkin_stem", fn() => Blocks::PUMPKIN_STEM());
$result->registerBlock("purple_glazed_terracotta", fn() => Blocks::PURPLE_GLAZED_TERRACOTTA());
$result->registerBlock("purple_torch", fn() => Blocks::PURPLE_TORCH());
$result->registerBlock("purpur", fn() => Blocks::PURPUR());
$result->registerBlock("purpur_block", fn() => Blocks::PURPUR());
@ -765,7 +753,6 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("quartz_stairs", fn() => Blocks::QUARTZ_STAIRS());
$result->registerBlock("rail", fn() => Blocks::RAIL());
$result->registerBlock("red_flower", fn() => Blocks::POPPY());
$result->registerBlock("red_glazed_terracotta", fn() => Blocks::RED_GLAZED_TERRACOTTA());
$result->registerBlock("red_mushroom", fn() => Blocks::RED_MUSHROOM());
$result->registerBlock("red_mushroom_block", fn() => Blocks::RED_MUSHROOM_BLOCK());
$result->registerBlock("red_nether_brick", fn() => Blocks::RED_NETHER_BRICKS());
@ -806,7 +793,6 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("shulker_box", fn() => Blocks::SHULKER_BOX());
$result->registerBlock("sign", fn() => Blocks::OAK_SIGN());
$result->registerBlock("sign_post", fn() => Blocks::OAK_SIGN());
$result->registerBlock("silver_glazed_terracotta", fn() => Blocks::LIGHT_GRAY_GLAZED_TERRACOTTA());
$result->registerBlock("skull_block", fn() => Blocks::MOB_HEAD());
$result->registerBlock("slab", fn() => Blocks::SMOOTH_STONE_SLAB());
$result->registerBlock("slabs", fn() => Blocks::SMOOTH_STONE_SLAB());
@ -925,7 +911,6 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("weighted_pressure_plate_heavy", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_HEAVY());
$result->registerBlock("weighted_pressure_plate_light", fn() => Blocks::WEIGHTED_PRESSURE_PLATE_LIGHT());
$result->registerBlock("wheat_block", fn() => Blocks::WHEAT());
$result->registerBlock("white_glazed_terracotta", fn() => Blocks::WHITE_GLAZED_TERRACOTTA());
$result->registerBlock("white_tulip", fn() => Blocks::WHITE_TULIP());
$result->registerBlock("wood", fn() => Blocks::OAK_LOG());
$result->registerBlock("wood2", fn() => Blocks::ACACIA_LOG());
@ -946,7 +931,6 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("wool", fn() => Blocks::WOOL());
$result->registerBlock("workbench", fn() => Blocks::CRAFTING_TABLE());
$result->registerBlock("yellow_flower", fn() => Blocks::DANDELION());
$result->registerBlock("yellow_glazed_terracotta", fn() => Blocks::YELLOW_GLAZED_TERRACOTTA());
$result->register("acacia_boat", fn() => Items::ACACIA_BOAT());
$result->register("apple", fn() => Items::APPLE());

File diff suppressed because one or more lines are too long