BlockStateToObjectDeserializer: make flat colour block handling less repetetive

This commit is contained in:
Dylan K. Taylor 2023-05-08 21:38:58 +01:00
parent fa719f37d5
commit 1b452f3a88
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -128,80 +128,95 @@ final class BlockStateToObjectDeserializer implements BlockStateDeserializer{
private function registerCandleDeserializers() : void{ private function registerCandleDeserializers() : void{
$this->map(Ids::CANDLE, fn(Reader $in) => Helper::decodeCandle(Blocks::CANDLE(), $in)); $this->map(Ids::CANDLE, fn(Reader $in) => Helper::decodeCandle(Blocks::CANDLE(), $in));
$dyedCandleDeserializer = fn(DyeColor $color) => fn(Reader $in) => Helper::decodeCandle(Blocks::DYED_CANDLE()->setColor($color), $in); foreach([
$this->map(Ids::BLACK_CANDLE, $dyedCandleDeserializer(DyeColor::BLACK())); Ids::BLACK_CANDLE => DyeColor::BLACK(),
$this->map(Ids::BLUE_CANDLE, $dyedCandleDeserializer(DyeColor::BLUE())); Ids::BLUE_CANDLE => DyeColor::BLUE(),
$this->map(Ids::BROWN_CANDLE, $dyedCandleDeserializer(DyeColor::BROWN())); Ids::BROWN_CANDLE => DyeColor::BROWN(),
$this->map(Ids::CYAN_CANDLE, $dyedCandleDeserializer(DyeColor::CYAN())); Ids::CYAN_CANDLE => DyeColor::CYAN(),
$this->map(Ids::GRAY_CANDLE, $dyedCandleDeserializer(DyeColor::GRAY())); Ids::GRAY_CANDLE => DyeColor::GRAY(),
$this->map(Ids::GREEN_CANDLE, $dyedCandleDeserializer(DyeColor::GREEN())); Ids::GREEN_CANDLE => DyeColor::GREEN(),
$this->map(Ids::LIGHT_BLUE_CANDLE, $dyedCandleDeserializer(DyeColor::LIGHT_BLUE())); Ids::LIGHT_BLUE_CANDLE => DyeColor::LIGHT_BLUE(),
$this->map(Ids::LIGHT_GRAY_CANDLE, $dyedCandleDeserializer(DyeColor::LIGHT_GRAY())); Ids::LIGHT_GRAY_CANDLE => DyeColor::LIGHT_GRAY(),
$this->map(Ids::LIME_CANDLE, $dyedCandleDeserializer(DyeColor::LIME())); Ids::LIME_CANDLE => DyeColor::LIME(),
$this->map(Ids::MAGENTA_CANDLE, $dyedCandleDeserializer(DyeColor::MAGENTA())); Ids::MAGENTA_CANDLE => DyeColor::MAGENTA(),
$this->map(Ids::ORANGE_CANDLE, $dyedCandleDeserializer(DyeColor::ORANGE())); Ids::ORANGE_CANDLE => DyeColor::ORANGE(),
$this->map(Ids::PINK_CANDLE, $dyedCandleDeserializer(DyeColor::PINK())); Ids::PINK_CANDLE => DyeColor::PINK(),
$this->map(Ids::PURPLE_CANDLE, $dyedCandleDeserializer(DyeColor::PURPLE())); Ids::PURPLE_CANDLE => DyeColor::PURPLE(),
$this->map(Ids::RED_CANDLE, $dyedCandleDeserializer(DyeColor::RED())); Ids::RED_CANDLE => DyeColor::RED(),
$this->map(Ids::WHITE_CANDLE, $dyedCandleDeserializer(DyeColor::WHITE())); Ids::WHITE_CANDLE => DyeColor::WHITE(),
$this->map(Ids::YELLOW_CANDLE, $dyedCandleDeserializer(DyeColor::YELLOW())); Ids::YELLOW_CANDLE => DyeColor::YELLOW(),
] as $id => $color){
$this->map($id, fn(Reader $in) => Helper::decodeCandle(Blocks::DYED_CANDLE()->setColor($color), $in));
}
$this->map(Ids::CANDLE_CAKE, fn(Reader $in) => Blocks::CAKE_WITH_CANDLE()->setLit($in->readBool(StateNames::LIT))); $this->map(Ids::CANDLE_CAKE, fn(Reader $in) => Blocks::CAKE_WITH_CANDLE()->setLit($in->readBool(StateNames::LIT)));
$cakeWithDyedCandleDeserializer = fn(DyeColor $color) => fn(Reader $in) => Blocks::CAKE_WITH_DYED_CANDLE() foreach([
->setColor($color) Ids::BLACK_CANDLE_CAKE => DyeColor::BLACK(),
->setLit($in->readBool(StateNames::LIT)); Ids::BLUE_CANDLE_CAKE => DyeColor::BLUE(),
$this->map(Ids::BLACK_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::BLACK())); Ids::BROWN_CANDLE_CAKE => DyeColor::BROWN(),
$this->map(Ids::BLUE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::BLUE())); Ids::CYAN_CANDLE_CAKE => DyeColor::CYAN(),
$this->map(Ids::BROWN_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::BROWN())); Ids::GRAY_CANDLE_CAKE => DyeColor::GRAY(),
$this->map(Ids::CYAN_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::CYAN())); Ids::GREEN_CANDLE_CAKE => DyeColor::GREEN(),
$this->map(Ids::GRAY_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::GRAY())); Ids::LIGHT_BLUE_CANDLE_CAKE => DyeColor::LIGHT_BLUE(),
$this->map(Ids::GREEN_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::GREEN())); Ids::LIGHT_GRAY_CANDLE_CAKE => DyeColor::LIGHT_GRAY(),
$this->map(Ids::LIGHT_BLUE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::LIGHT_BLUE())); Ids::LIME_CANDLE_CAKE => DyeColor::LIME(),
$this->map(Ids::LIGHT_GRAY_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::LIGHT_GRAY())); Ids::MAGENTA_CANDLE_CAKE => DyeColor::MAGENTA(),
$this->map(Ids::LIME_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::LIME())); Ids::ORANGE_CANDLE_CAKE => DyeColor::ORANGE(),
$this->map(Ids::MAGENTA_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::MAGENTA())); Ids::PINK_CANDLE_CAKE => DyeColor::PINK(),
$this->map(Ids::ORANGE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::ORANGE())); Ids::PURPLE_CANDLE_CAKE => DyeColor::PURPLE(),
$this->map(Ids::PINK_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::PINK())); Ids::RED_CANDLE_CAKE => DyeColor::RED(),
$this->map(Ids::PURPLE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::PURPLE())); Ids::WHITE_CANDLE_CAKE => DyeColor::WHITE(),
$this->map(Ids::RED_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::RED())); Ids::YELLOW_CANDLE_CAKE => DyeColor::YELLOW(),
$this->map(Ids::WHITE_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::WHITE())); ] as $id => $color){
$this->map(Ids::YELLOW_CANDLE_CAKE, $cakeWithDyedCandleDeserializer(DyeColor::YELLOW())); $this->map($id, fn(Reader $in) => Blocks::CAKE_WITH_DYED_CANDLE()
->setColor($color)
->setLit($in->readBool(StateNames::LIT))
);
}
} }
private function registerFlatColorBlockDeserializers() : void{ private function registerFlatColorBlockDeserializers() : void{
$this->map(Ids::BLACK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLACK(), $in)); foreach([
$this->map(Ids::BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BLUE(), $in)); Ids::BLACK_GLAZED_TERRACOTTA => DyeColor::BLACK(),
$this->map(Ids::BROWN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::BROWN(), $in)); Ids::BLUE_GLAZED_TERRACOTTA => DyeColor::BLUE(),
$this->map(Ids::CYAN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::CYAN(), $in)); Ids::BROWN_GLAZED_TERRACOTTA => DyeColor::BROWN(),
$this->map(Ids::GRAY_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GRAY(), $in)); Ids::CYAN_GLAZED_TERRACOTTA => DyeColor::CYAN(),
$this->map(Ids::GREEN_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::GREEN(), $in)); Ids::GRAY_GLAZED_TERRACOTTA => DyeColor::GRAY(),
$this->map(Ids::LIGHT_BLUE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_BLUE(), $in)); Ids::GREEN_GLAZED_TERRACOTTA => DyeColor::GREEN(),
$this->map(Ids::SILVER_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIGHT_GRAY(), $in)); Ids::LIGHT_BLUE_GLAZED_TERRACOTTA => DyeColor::LIGHT_BLUE(),
$this->map(Ids::LIME_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::LIME(), $in)); Ids::SILVER_GLAZED_TERRACOTTA => DyeColor::LIGHT_GRAY(),
$this->map(Ids::MAGENTA_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::MAGENTA(), $in)); Ids::LIME_GLAZED_TERRACOTTA => DyeColor::LIME(),
$this->map(Ids::ORANGE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::ORANGE(), $in)); Ids::MAGENTA_GLAZED_TERRACOTTA => DyeColor::MAGENTA(),
$this->map(Ids::PINK_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PINK(), $in)); Ids::ORANGE_GLAZED_TERRACOTTA => DyeColor::ORANGE(),
$this->map(Ids::PURPLE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::PURPLE(), $in)); Ids::PINK_GLAZED_TERRACOTTA => DyeColor::PINK(),
$this->map(Ids::RED_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::RED(), $in)); Ids::PURPLE_GLAZED_TERRACOTTA => DyeColor::PURPLE(),
$this->map(Ids::WHITE_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::WHITE(), $in)); Ids::RED_GLAZED_TERRACOTTA => DyeColor::RED(),
$this->map(Ids::YELLOW_GLAZED_TERRACOTTA, fn(Reader $in) => Helper::decodeGlazedTerracotta(DyeColor::YELLOW(), $in)); Ids::WHITE_GLAZED_TERRACOTTA => DyeColor::WHITE(),
Ids::YELLOW_GLAZED_TERRACOTTA => DyeColor::YELLOW(),
] as $id => $color){
$this->map($id, fn(Reader $in) => Helper::decodeGlazedTerracotta($color, $in));
}
$this->mapSimple(Ids::BLACK_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BLACK())); foreach([
$this->mapSimple(Ids::BLUE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BLUE())); Ids::BLACK_WOOL => DyeColor::BLACK(),
$this->mapSimple(Ids::BROWN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::BROWN())); Ids::BLUE_WOOL => DyeColor::BLUE(),
$this->mapSimple(Ids::CYAN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::CYAN())); Ids::BROWN_WOOL => DyeColor::BROWN(),
$this->mapSimple(Ids::GRAY_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::GRAY())); Ids::CYAN_WOOL => DyeColor::CYAN(),
$this->mapSimple(Ids::GREEN_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::GREEN())); Ids::GRAY_WOOL => DyeColor::GRAY(),
$this->mapSimple(Ids::LIGHT_BLUE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIGHT_BLUE())); Ids::GREEN_WOOL => DyeColor::GREEN(),
$this->mapSimple(Ids::LIGHT_GRAY_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIGHT_GRAY())); Ids::LIGHT_BLUE_WOOL => DyeColor::LIGHT_BLUE(),
$this->mapSimple(Ids::LIME_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::LIME())); Ids::LIGHT_GRAY_WOOL => DyeColor::LIGHT_GRAY(),
$this->mapSimple(Ids::MAGENTA_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::MAGENTA())); Ids::LIME_WOOL => DyeColor::LIME(),
$this->mapSimple(Ids::ORANGE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::ORANGE())); Ids::MAGENTA_WOOL => DyeColor::MAGENTA(),
$this->mapSimple(Ids::PINK_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::PINK())); Ids::ORANGE_WOOL => DyeColor::ORANGE(),
$this->mapSimple(Ids::PURPLE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::PURPLE())); Ids::PINK_WOOL => DyeColor::PINK(),
$this->mapSimple(Ids::RED_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::RED())); Ids::PURPLE_WOOL => DyeColor::PURPLE(),
$this->mapSimple(Ids::WHITE_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::WHITE())); Ids::RED_WOOL => DyeColor::RED(),
$this->mapSimple(Ids::YELLOW_WOOL, fn() => Blocks::WOOL()->setColor(DyeColor::YELLOW())); Ids::WHITE_WOOL => DyeColor::WHITE(),
Ids::YELLOW_WOOL => DyeColor::YELLOW(),
] as $id => $color){
$this->mapSimple($id, fn() => Blocks::WOOL()->setColor($color));
}
} }
private function registerCauldronDeserializers() : void{ private function registerCauldronDeserializers() : void{