WoodLikeBlockIdHelper: reduce obnoxious code

This commit is contained in:
Dylan K. Taylor 2023-09-08 11:17:47 +01:00
parent 7ce33d9375
commit aa916b2c49
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -153,69 +153,23 @@ final class WoodLikeBlockIdHelper{
* @phpstan-return array{BID, BID, \Closure() : \pocketmine\item\Item} * @phpstan-return array{BID, BID, \Closure() : \pocketmine\item\Item}
*/ */
public static function getSignInfo(WoodType $treeType) : array{ public static function getSignInfo(WoodType $treeType) : array{
switch($treeType){ $make = fn(int $floorId, int $wallId, \Closure $getItem) => [
case WoodType::OAK: new BID($floorId, TileSign::class),
return [ new BID($wallId, TileSign::class),
new BID(Ids::OAK_SIGN, TileSign::class), $getItem
new BID(Ids::OAK_WALL_SIGN, TileSign::class),
fn() => VanillaItems::OAK_SIGN()
]; ];
case WoodType::SPRUCE: return match($treeType){
return [ WoodType::OAK => $make(Ids::OAK_SIGN, Ids::OAK_WALL_SIGN, fn() => VanillaItems::OAK_SIGN()),
new BID(Ids::SPRUCE_SIGN, TileSign::class), WoodType::SPRUCE => $make(Ids::SPRUCE_SIGN, Ids::SPRUCE_WALL_SIGN, fn() => VanillaItems::SPRUCE_SIGN()),
new BID(Ids::SPRUCE_WALL_SIGN, TileSign::class), WoodType::BIRCH => $make(Ids::BIRCH_SIGN, Ids::BIRCH_WALL_SIGN, fn() => VanillaItems::BIRCH_SIGN()),
fn() => VanillaItems::SPRUCE_SIGN() WoodType::JUNGLE => $make(Ids::JUNGLE_SIGN, Ids::JUNGLE_WALL_SIGN, fn() => VanillaItems::JUNGLE_SIGN()),
]; WoodType::ACACIA => $make(Ids::ACACIA_SIGN, Ids::ACACIA_WALL_SIGN, fn() => VanillaItems::ACACIA_SIGN()),
case WoodType::BIRCH: WoodType::DARK_OAK => $make(Ids::DARK_OAK_SIGN, Ids::DARK_OAK_WALL_SIGN, fn() => VanillaItems::DARK_OAK_SIGN()),
return [ WoodType::MANGROVE => $make(Ids::MANGROVE_SIGN, Ids::MANGROVE_WALL_SIGN, fn() => VanillaItems::MANGROVE_SIGN()),
new BID(Ids::BIRCH_SIGN, TileSign::class), WoodType::CRIMSON => $make(Ids::CRIMSON_SIGN, Ids::CRIMSON_WALL_SIGN, fn() => VanillaItems::CRIMSON_SIGN()),
new BID(Ids::BIRCH_WALL_SIGN, TileSign::class), WoodType::WARPED => $make(Ids::WARPED_SIGN, Ids::WARPED_WALL_SIGN, fn() => VanillaItems::WARPED_SIGN()),
fn() => VanillaItems::BIRCH_SIGN() WoodType::CHERRY => $make(Ids::CHERRY_SIGN, Ids::CHERRY_WALL_SIGN, fn() => VanillaItems::CHERRY_SIGN()),
]; };
case WoodType::JUNGLE:
return [
new BID(Ids::JUNGLE_SIGN, TileSign::class),
new BID(Ids::JUNGLE_WALL_SIGN, TileSign::class),
fn() => VanillaItems::JUNGLE_SIGN()
];
case WoodType::ACACIA:
return [
new BID(Ids::ACACIA_SIGN, TileSign::class),
new BID(Ids::ACACIA_WALL_SIGN, TileSign::class),
fn() => VanillaItems::ACACIA_SIGN()
];
case WoodType::DARK_OAK:
return [
new BID(Ids::DARK_OAK_SIGN, TileSign::class),
new BID(Ids::DARK_OAK_WALL_SIGN, TileSign::class),
fn() => VanillaItems::DARK_OAK_SIGN()
];
case WoodType::MANGROVE:
return [
new BID(Ids::MANGROVE_SIGN, TileSign::class),
new BID(Ids::MANGROVE_WALL_SIGN, TileSign::class),
fn() => VanillaItems::MANGROVE_SIGN()
];
case WoodType::CRIMSON:
return [
new BID(Ids::CRIMSON_SIGN, TileSign::class),
new BID(Ids::CRIMSON_WALL_SIGN, TileSign::class),
fn() => VanillaItems::CRIMSON_SIGN()
];
case WoodType::WARPED:
return [
new BID(Ids::WARPED_SIGN, TileSign::class),
new BID(Ids::WARPED_WALL_SIGN, TileSign::class),
fn() => VanillaItems::WARPED_SIGN()
];
case WoodType::CHERRY:
return [
new BID(Ids::CHERRY_SIGN, TileSign::class),
new BID(Ids::CHERRY_WALL_SIGN, TileSign::class),
fn() => VanillaItems::CHERRY_SIGN()
];
}
throw new AssumptionFailedError("Switch should cover all wood types");
} }
public static function getTrapdoorIdentifier(WoodType $treeType) : BlockIdentifier{ public static function getTrapdoorIdentifier(WoodType $treeType) : BlockIdentifier{