diff options
| author | mat <git@matdoes.dev> | 2023-12-09 18:32:13 -0600 |
|---|---|---|
| committer | mat <git@matdoes.dev> | 2023-12-09 18:32:13 -0600 |
| commit | 31206701b946524e0caacef19abb067470c2c2bc (patch) | |
| tree | 8d281244c29e5e341888c82da900f171bae21990 | |
| parent | c9a18bc6a1ae1fb99d7e6320e82c6b7de772ba43 (diff) | |
| download | azalea-drasl-31206701b946524e0caacef19abb067470c2c2bc.tar.xz | |
add unit structs for every bool property
| -rw-r--r-- | azalea-block/.gitignore | 3 | ||||
| -rwxr-xr-x | azalea-block/azalea-block-macros/src/lib.rs | 108 | ||||
| -rwxr-xr-x | azalea-block/src/generated.rs | 1800 | ||||
| -rwxr-xr-x | codegen/lib/code/blocks.py | 10 |
4 files changed, 985 insertions, 936 deletions
diff --git a/azalea-block/.gitignore b/azalea-block/.gitignore new file mode 100644 index 00000000..390f6fd5 --- /dev/null +++ b/azalea-block/.gitignore @@ -0,0 +1,3 @@ +# cargo expand generated -p azalea-block > azalea-block/out.rs +/out.rs + diff --git a/azalea-block/azalea-block-macros/src/lib.rs b/azalea-block/azalea-block-macros/src/lib.rs index 11510a0a..245b605e 100755 --- a/azalea-block/azalea-block-macros/src/lib.rs +++ b/azalea-block/azalea-block-macros/src/lib.rs @@ -10,35 +10,36 @@ use std::fmt::Write; use syn::{ self, braced, ext::IdentExt, + parenthesized, parse::{Parse, ParseStream, Result}, parse_macro_input, punctuated::Punctuated, - Expr, Ident, LitStr, Token, + token, Expr, Ident, LitStr, Token, }; use utils::{combinations_of, to_pascal_case}; enum PropertyType { /// `Axis { X, Y, Z }` Enum { - type_name: Ident, + enum_name: Ident, variants: Punctuated<Ident, Token![,]>, }, - /// `bool` - Boolean, + /// `Snowy(bool)` + Boolean { struct_name: Ident }, } -/// `"snowy" => bool` +/// `"snowy" => Snowy(bool)` struct PropertyDefinition { name: LitStr, property_type: PropertyType, } -/// Comma separated PropertyDefinitions (`"snowy" => bool,`) +/// Comma separated PropertyDefinitions (`"snowy" => Snowy(bool),`) struct PropertyDefinitions { properties: Vec<PropertyDefinition>, } -/// `snowy: false` or `axis: properties::Axis::Y` +/// `snowy: Snowy(false)` or `axis: properties::Axis::Y` #[derive(Debug)] struct PropertyWithNameAndDefault { name: Ident, @@ -64,21 +65,32 @@ impl Parse for PropertyWithNameAndDefault { input.parse::<Token![:]>()?; let first_ident = input.call(Ident::parse_any)?; - let first_ident_string = first_ident.to_string(); let mut property_default = quote! { #first_ident }; let property_type: Ident; let mut is_enum = false; if input.parse::<Token![::]>().is_ok() { + // enum is_enum = true; property_type = first_ident; let variant = input.parse::<Ident>()?; property_default = quote! { properties::#property_default::#variant }; - } else if first_ident_string == "true" || first_ident_string == "false" { - property_type = Ident::new("bool", first_ident.span()); } else { - return Err(input.error("Expected a boolean or an enum variant")); + // must be a unit struct if it's not an enum + let content; + let _paren_token: token::Paren = parenthesized!(content in input); + // we use this instead of .parse so it works with rust keywords like true and + // false + let unit_struct_inner = content.call(Ident::parse_any)?; + let unit_struct_inner_string = unit_struct_inner.to_string(); + + if matches!(unit_struct_inner_string.as_str(), "true" | "false") { + property_type = Ident::new("bool", first_ident.span()); + property_default = quote! { #unit_struct_inner }; + } else { + return Err(input.error("Expected a boolean or an enum variant")); + } }; Ok(PropertyWithNameAndDefault { @@ -100,20 +112,40 @@ struct MakeBlockStates { impl Parse for PropertyType { fn parse(input: ParseStream) -> Result<Self> { - // like `Axis { X, Y, Z }` or `bool` + // like `Axis { X, Y, Z }` or `Waterlogged(bool)` let keyword = Ident::parse(input)?; - let keyword_string = keyword.to_string(); - if keyword_string == "bool" { - Ok(Self::Boolean) - } else { + + fn parse_braced(input: ParseStream) -> Result<Punctuated<Ident, Token![,]>> { let content; braced!(content in input); let variants = content.parse_terminated(Ident::parse, Token![,])?; + Ok(variants) + } + + fn parse_paren(input: ParseStream) -> Result<Ident> { + let content; + parenthesized!(content in input); + let inner = content.parse::<Ident>()?; + Ok(inner) + } + + if let Ok(variants) = parse_braced(input) { Ok(Self::Enum { - type_name: keyword, + enum_name: keyword, variants, }) + } else if let Ok(inner) = parse_paren(input) { + assert_eq!( + inner.to_string(), + "bool", + "Currently only bool unit structs are supported" + ); + Ok(Self::Boolean { + struct_name: keyword, + }) + } else { + Err(input.error("Expected a unit struct or an enum")) } } } @@ -238,21 +270,24 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { let mut state_id: u32 = 0; for property in &input.property_definitions.properties { - let property_type_name: Ident; + let property_struct_name: Ident; + // this is usually the same as property_struct_name except for bool + let property_value_name: Ident; let mut property_variant_types = Vec::new(); match &property.property_type { PropertyType::Enum { - type_name, + enum_name, variants, } => { let mut property_enum_variants = quote! {}; let mut property_from_number_variants = quote! {}; - property_type_name = type_name.clone(); + property_value_name = enum_name.clone(); + property_struct_name = enum_name.clone(); property_struct_names_to_names.insert( - property_type_name.to_string(), + property_struct_name.to_string(), property.name.clone().value(), ); @@ -271,7 +306,7 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { // i_lit is used here instead of i because otherwise it says 0size // in the expansion and that looks uglier property_from_number_variants.extend(quote! { - #i_lit => #property_type_name::#variant, + #i_lit => #property_struct_name::#variant, }); property_variant_types.push(variant.to_string()); @@ -279,11 +314,11 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { property_enums.extend(quote! { #[derive(Debug, Clone, Copy)] - pub enum #property_type_name { + pub enum #property_struct_name { #property_enum_variants } - impl From<u32> for #property_type_name { + impl From<u32> for #property_struct_name { fn from(value: u32) -> Self { match value { #property_from_number_variants @@ -293,15 +328,28 @@ pub fn make_block_states(input: TokenStream) -> TokenStream { } }); } - PropertyType::Boolean => { - property_type_name = Ident::new("bool", proc_macro2::Span::call_site()); - // property_type_name = - // Ident::new(&property.name.value(), proc_macro2::Span::call_site()); + PropertyType::Boolean { struct_name } => { + property_value_name = Ident::new("bool", proc_macro2::Span::call_site()); + property_struct_name = struct_name.clone(); property_variant_types = vec!["true".to_string(), "false".to_string()]; + + property_enums.extend(quote! { + #[derive(Debug, Clone, Copy)] + pub struct #property_struct_name(pub bool); + + impl From<u32> for #property_struct_name { + fn from(value: u32) -> Self { + match value { + 0 => Self(false), + 1 => Self(true), + _ => panic!("Invalid property value: {}", value), + } + } + } + }); } } - properties_map.insert(property_type_name.to_string(), property_variant_types); - // properties_map.insert(property.name.value(), property_variant_types); + properties_map.insert(property_value_name.to_string(), property_variant_types); } let mut block_state_enum_variants = quote! {}; diff --git a/azalea-block/src/generated.rs b/azalea-block/src/generated.rs index 5a700d78..3a903b8d 100755 --- a/azalea-block/src/generated.rs +++ b/azalea-block/src/generated.rs @@ -4,7 +4,7 @@ use std::fmt::Debug; make_block_states! { Properties => { - "snowy" => bool, + "snowy" => Snowy(bool), "stage" => OakSaplingStage { _0, _1, @@ -40,12 +40,12 @@ make_block_states! { _3, _4, }, - "hanging" => bool, + "hanging" => Hanging(bool), "stage" => MangrovePropaguleStage { _0, _1, }, - "waterlogged" => bool, + "waterlogged" => Waterlogged(bool), "level" => WaterLevel { _0, _1, @@ -108,7 +108,7 @@ make_block_states! { _6, _7, }, - "persistent" => bool, + "persistent" => Persistent(bool), "distance" => SpruceLeavesDistance { _1, _2, @@ -198,7 +198,7 @@ make_block_states! { Up, Down, }, - "triggered" => bool, + "triggered" => Triggered(bool), "instrument" => Sound { Harp, Basedrum, @@ -251,14 +251,14 @@ make_block_states! { _23, _24, }, - "powered" => bool, + "powered" => Powered(bool), "facing" => FacingCardinal { North, South, West, East, }, - "occupied" => bool, + "occupied" => Occupied(bool), "part" => Part { Head, Foot, @@ -271,7 +271,7 @@ make_block_states! { AscendingNorth, AscendingSouth, }, - "extended" => bool, + "extended" => Extended(bool), "half" => Half { Upper, Lower, @@ -280,9 +280,9 @@ make_block_states! { Normal, Sticky, }, - "short" => bool, - "unstable" => bool, - "slot_5_occupied" => bool, + "short" => Short(bool), + "unstable" => Unstable(bool), + "slot_5_occupied" => TrueFalse(bool), "age" => FireAge { _0, _1, @@ -301,11 +301,11 @@ make_block_states! { _14, _15, }, - "east" => bool, - "north" => bool, - "south" => bool, - "up" => bool, - "west" => bool, + "east" => East(bool), + "north" => North(bool), + "south" => South(bool), + "up" => Up(bool), + "west" => West(bool), "half" => TopBottom { Top, Bottom, @@ -380,7 +380,7 @@ make_block_states! { _6, _7, }, - "lit" => bool, + "lit" => Lit(bool), "rotation" => OakSignRotation { _0, _1, @@ -547,7 +547,7 @@ make_block_states! { Left, Right, }, - "open" => bool, + "open" => Open(bool), "shape" => Shape { NorthSouth, EastWest, @@ -560,7 +560,7 @@ make_block_states! { NorthWest, NorthEast, }, - "attached" => bool, + "attached" => Attached(bool), "rotation" => OakHangingSignRotation { _0, _1, @@ -810,7 +810,7 @@ make_block_states! { _14, _15, }, - "has_record" => bool, + "has_record" => HasRecord(bool), "axis" => AxisXZ { X, Z, @@ -830,8 +830,8 @@ make_block_states! { _3, _4, }, - "locked" => bool, - "down" => bool, + "locked" => Locked(bool), + "down" => Down(bool), "age" => PumpkinStemAge { _0, _1, @@ -852,19 +852,16 @@ make_block_states! { _6, _7, }, - "down" => bool, - "north" => bool, - "south" => bool, - "up" => bool, - "west" => bool, - "in_wall" => bool, + "in_wall" => InWall(bool), "age" => NetherWartAge { _0, _1, _2, _3, }, - "has_bottle" => bool, + "has_bottle" => HasBottle0(bool), + "has_bottle" => HasBottle1(bool), + "has_bottle" => HasBottle2(bool), "level" => WaterCauldronLevel { _1, _2, @@ -875,14 +872,14 @@ make_block_states! { _2, _3, }, - "eye" => bool, + "eye" => Eye(bool), "age" => CocoaAge { _0, _1, _2, }, - "disarmed" => bool, - "conditional" => bool, + "disarmed" => Disarmed(bool), + "conditional" => Conditional(bool), "east" => EastWall { None, Low, @@ -1089,7 +1086,7 @@ make_block_states! { Compare, Subtract, }, - "inverted" => bool, + "inverted" => Inverted(bool), "power" => DaylightDetectorPower { _0, _1, @@ -1108,7 +1105,7 @@ make_block_states! { _14, _15, }, - "enabled" => bool, + "enabled" => Enabled(bool), "facing" => Facing { Down, North, @@ -1525,8 +1522,8 @@ make_block_states! { _0, _1, }, - "drag" => bool, - "bottom" => bool, + "drag" => Drag(bool), + "bottom" => Bottom(bool), "distance" => ScaffoldingDistance { _0, _1, @@ -1537,14 +1534,14 @@ make_block_states! { _6, _7, }, - "has_book" => bool, + "has_book" => HasBook(bool), "attachment" => Attachment { Floor, Ceiling, SingleWall, DoubleWall, }, - "signal_fire" => bool, + "signal_fire" => SignalFire(bool), "age" => SweetBerryBushAge { _0, _1, @@ -1858,12 +1855,9 @@ make_block_states! { _14, _15, }, - "east" => bool, - "up" => bool, - "west" => bool, - "bloom" => bool, - "can_summon" => bool, - "shrieking" => bool, + "bloom" => Bloom(bool), + "can_summon" => CanSummon(bool), + "shrieking" => Shrieking(bool), "thickness" => Thickness { TipMerge, Tip, @@ -1903,7 +1897,7 @@ make_block_states! { _24, _25, }, - "berries" => bool, + "berries" => Berries(bool), "flower_amount" => PinkPetalsAmount { _1, _2, @@ -1921,8 +1915,8 @@ make_block_states! { Y, Z, }, - "cracked" => bool, - "crafting" => bool, + "cracked" => Cracked(bool), + "crafting" => Crafting(bool), "trial_spawner_state" => State { Inactive, WaitingForPlayers, @@ -1942,12 +1936,12 @@ make_block_states! { andesite => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, polished_andesite => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, grass_block => BlockBehavior::new().strength(0.6, 0.6), { - snowy: false, + snowy: Snowy(false), }, dirt => BlockBehavior::new().strength(0.5, 0.5), {}, coarse_dirt => BlockBehavior::new().strength(0.5, 0.5), {}, podzol => BlockBehavior::new().strength(0.5, 0.5), { - snowy: false, + snowy: Snowy(false), }, cobblestone => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), {}, oak_planks => BlockBehavior::new().strength(2.0, 3.0), {}, @@ -1983,9 +1977,9 @@ make_block_states! { }, mangrove_propagule => BlockBehavior::new(), { age: MangrovePropaguleAge::_0, - hanging: false, + hanging: Hanging(false), stage: MangrovePropaguleStage::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, bedrock => BlockBehavior::new().strength(-1.0, 3600000.0), {}, water => BlockBehavior::new().strength(100.0, 100.0), { @@ -2035,7 +2029,7 @@ make_block_states! { axis: Axis::Y, }, mangrove_roots => BlockBehavior::new().strength(0.7, 0.7), { - waterlogged: false, + waterlogged: Waterlogged(false), }, muddy_mangrove_roots => BlockBehavior::new().strength(0.7, 0.7), { axis: Axis::Y, @@ -2120,53 +2114,53 @@ make_block_states! { }, oak_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: OakLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, spruce_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: SpruceLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, birch_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: BirchLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, jungle_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: JungleLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, acacia_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: AcaciaLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, cherry_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: CherryLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, dark_oak_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: DarkOakLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, mangrove_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: MangroveLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, azalea_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: AzaleaLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, flowering_azalea_leaves => BlockBehavior::new().strength(0.2, 0.2), { distance: FloweringAzaleaLeavesDistance::_7, - persistent: false, - waterlogged: false, + persistent: Persistent(false), + waterlogged: Waterlogged(false), }, sponge => BlockBehavior::new().strength(0.6, 0.6), {}, wet_sponge => BlockBehavior::new().strength(0.6, 0.6), {}, @@ -2176,7 +2170,7 @@ make_block_states! { lapis_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), {}, dispenser => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 3.5), { facing: FacingCubic::North, - triggered: false, + triggered: Triggered(false), }, sandstone => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.8, 0.8), {}, chiseled_sandstone => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.8, 0.8), {}, @@ -2184,100 +2178,100 @@ make_block_states! { note_block => BlockBehavior::new().strength(0.8, 0.8), { instrument: Sound::Harp, note: NoteBlockNote::_0, - powered: false, + powered: Powered(false), }, white_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, orange_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, magenta_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, light_blue_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, yellow_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, lime_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, pink_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, gray_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, light_gray_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, cyan_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, purple_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, blue_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, brown_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, green_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, red_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, black_bed => BlockBehavior::new().strength(0.2, 0.2), { facing: FacingCardinal::North, - occupied: false, + occupied: Occupied(false), part: Part::Foot, }, powered_rail => BlockBehavior::new().strength(0.7, 0.7), { - powered: false, + powered: Powered(false), shape: RailShape::NorthSouth, - waterlogged: false, + waterlogged: Waterlogged(false), }, detector_rail => BlockBehavior::new().strength(0.7, 0.7), { - powered: false, + powered: Powered(false), shape: RailShape::NorthSouth, - waterlogged: false, + waterlogged: Waterlogged(false), }, sticky_piston => BlockBehavior::new().strength(1.5, 1.5), { - extended: false, + extended: Extended(false), facing: FacingCubic::North, }, cobweb => BlockBehavior::new().requires_correct_tool_for_drops().strength(4.0, 4.0), {}, @@ -2289,13 +2283,13 @@ make_block_states! { half: Half::Lower, }, piston => BlockBehavior::new().strength(1.5, 1.5), { - extended: false, + extended: Extended(false), facing: FacingCubic::North, }, piston_head => BlockBehavior::new().strength(1.5, 1.5), { kind: PistonType::Normal, facing: FacingCubic::North, - short: false, + short: Short(false), }, white_wool => BlockBehavior::new().strength(0.8, 0.8), {}, orange_wool => BlockBehavior::new().strength(0.8, 0.8), {}, @@ -2337,17 +2331,17 @@ make_block_states! { iron_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 6.0), {}, bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), {}, tnt => BlockBehavior::new(), { - unstable: false, + unstable: Unstable(false), }, bookshelf => BlockBehavior::new().strength(1.5, 1.5), {}, chiseled_bookshelf => BlockBehavior::new().strength(1.5, 1.5), { facing: FacingCardinal::North, - slot_0_occupied: false, - slot_1_occupied: false, - slot_2_occupied: false, - slot_3_occupied: false, - slot_4_occupied: false, - slot_5_occupied: false, + slot_0_occupied: TrueFalse(false), + slot_1_occupied: TrueFalse(false), + slot_2_occupied: TrueFalse(false), + slot_3_occupied: TrueFalse(false), + slot_4_occupied: TrueFalse(false), + slot_5_occupied: TrueFalse(false), }, mossy_cobblestone => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), {}, obsidian => BlockBehavior::new().requires_correct_tool_for_drops().strength(50.0, 1200.0), {}, @@ -2357,11 +2351,11 @@ make_block_states! { }, fire => BlockBehavior::new(), { age: FireAge::_0, - east: false, - north: false, - south: false, - up: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + up: Up(false), + west: West(false), }, soul_fire => BlockBehavior::new(), {}, spawner => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 5.0), {}, @@ -2369,12 +2363,12 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, chest => BlockBehavior::new().strength(2.5, 2.5), { kind: ChestType::Single, facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, redstone_wire => BlockBehavior::new(), { east: WireEast::None, @@ -2395,259 +2389,259 @@ make_block_states! { }, furnace => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 3.5), { facing: FacingCardinal::North, - lit: false, + lit: Lit(false), }, oak_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: OakSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, spruce_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: SpruceSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, birch_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: BirchSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, acacia_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: AcaciaSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, cherry_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: CherrySignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, jungle_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: JungleSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, dark_oak_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: DarkOakSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, mangrove_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: MangroveSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, bamboo_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: BambooSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, oak_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, ladder => BlockBehavior::new().strength(0.4, 0.4), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, rail => BlockBehavior::new().strength(0.7, 0.7), { shape: Shape::NorthSouth, - waterlogged: false, + waterlogged: Waterlogged(false), }, cobblestone_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, oak_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, spruce_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, birch_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, acacia_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, cherry_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, jungle_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, dark_oak_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, mangrove_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, bamboo_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, oak_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: OakHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, spruce_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: SpruceHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, birch_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: BirchHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, acacia_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: AcaciaHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, cherry_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: CherryHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, jungle_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: JungleHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, dark_oak_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: DarkOakHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, crimson_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: CrimsonHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, warped_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: WarpedHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, mangrove_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: MangroveHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, bamboo_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { - attached: false, + attached: Attached(false), rotation: BambooHangingSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, oak_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, spruce_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, birch_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, acacia_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, cherry_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, jungle_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, dark_oak_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, mangrove_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, crimson_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, warped_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, bamboo_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, lever => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, stone_pressure_plate => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, iron_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 5.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, oak_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, spruce_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, birch_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, jungle_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, acacia_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, cherry_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, dark_oak_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, mangrove_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, bamboo_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, redstone_ore => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { - lit: false, + lit: Lit(false), }, deepslate_redstone_ore => BlockBehavior::new().requires_correct_tool_for_drops().strength(4.5, 3.0), { - lit: false, + lit: Lit(false), }, redstone_torch => BlockBehavior::new(), { - lit: true, + lit: Lit(true), }, redstone_wall_torch => BlockBehavior::new(), { facing: FacingCardinal::North, - lit: true, + lit: Lit(true), }, stone_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, snow => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.1, 0.1), { layers: SnowLayers::_1, @@ -2662,14 +2656,14 @@ make_block_states! { age: SugarCaneAge::_0, }, jukebox => BlockBehavior::new().strength(2.0, 6.0), { - has_record: false, + has_record: HasRecord(false), }, oak_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, netherrack => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.4, 0.4), {}, soul_sand => BlockBehavior::new().strength(0.5, 0.5), {}, @@ -2700,8 +2694,8 @@ make_block_states! { repeater => BlockBehavior::new(), { delay: RepeaterDelay::_1, facing: FacingCardinal::North, - locked: false, - powered: false, + locked: Locked(false), + powered: Powered(false), }, white_stained_glass => BlockBehavior::new().strength(0.3, 0.3), {}, orange_stained_glass => BlockBehavior::new().strength(0.3, 0.3), {}, @@ -2722,65 +2716,65 @@ make_block_states! { oak_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, spruce_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, birch_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, jungle_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, acacia_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, cherry_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, dark_oak_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, mangrove_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, bamboo_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, stone_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, mossy_stone_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, @@ -2795,46 +2789,46 @@ make_block_states! { infested_cracked_stone_bricks => BlockBehavior::new().strength(0.75, 0.75), {}, infested_chiseled_stone_bricks => BlockBehavior::new().strength(0.75, 0.75), {}, brown_mushroom_block => BlockBehavior::new().strength(0.2, 0.2), { - down: true, - east: true, - north: true, - south: true, - up: true, - west: true, + down: Down(true), + east: East(true), + north: North(true), + south: South(true), + up: Up(true), + west: West(true), }, red_mushroom_block => BlockBehavior::new().strength(0.2, 0.2), { - down: true, - east: true, - north: true, - south: true, - up: true, - west: true, + down: Down(true), + east: East(true), + north: North(true), + south: South(true), + up: Up(true), + west: West(true), }, mushroom_stem => BlockBehavior::new().strength(0.2, 0.2), { - down: true, - east: true, - north: true, - south: true, - up: true, - west: true, + down: Down(true), + east: East(true), + north: North(true), + south: South(true), + up: Up(true), + west: West(true), }, iron_bars => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 6.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, chain => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 6.0), { axis: Axis::Y, - waterlogged: false, + waterlogged: Waterlogged(false), }, glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, pumpkin => BlockBehavior::new().strength(1.0, 1.0), {}, melon => BlockBehavior::new().strength(1.0, 1.0), {}, @@ -2851,71 +2845,71 @@ make_block_states! { age: MelonStemAge::_0, }, vine => BlockBehavior::new().strength(0.2, 0.2), { - east: false, - north: false, - south: false, - up: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + up: Up(false), + west: West(false), }, glow_lichen => BlockBehavior::new().strength(0.2, 0.2), { - down: false, - east: false, - north: false, - south: false, - up: false, - waterlogged: false, - west: false, + down: Down(false), + east: East(false), + north: North(false), + south: South(false), + up: Up(false), + waterlogged: Waterlogged(false), + west: West(false), }, oak_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, stone_brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, mud_brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, mycelium => BlockBehavior::new().strength(0.6, 0.6), { - snowy: false, + snowy: Snowy(false), }, lily_pad => BlockBehavior::new(), {}, nether_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), {}, nether_brick_fence => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, nether_brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, nether_wart => BlockBehavior::new(), { age: NetherWartAge::_0, }, enchanting_table => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 1200.0), {}, brewing_stand => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.5, 0.5), { - has_bottle: false, - has_bottle: false, - has_bottle: false, + has_bottle: HasBottle0(false), + has_bottle: HasBottle1(false), + has_bottle: HasBottle2(false), }, cauldron => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 2.0), {}, water_cauldron => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 2.0), { @@ -2927,13 +2921,13 @@ make_block_states! { }, end_portal => BlockBehavior::new().strength(-1.0, 3600000.0), {}, end_portal_frame => BlockBehavior::new().strength(-1.0, 3600000.0), { - eye: false, + eye: Eye(false), facing: FacingCardinal::North, }, end_stone => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 9.0), {}, dragon_egg => BlockBehavior::new().strength(3.0, 9.0), {}, redstone_lamp => BlockBehavior::new().strength(0.3, 0.3), { - lit: false, + lit: Lit(false), }, cocoa => BlockBehavior::new().strength(0.2, 3.0), { age: CocoaAge::_0, @@ -2943,49 +2937,49 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, emerald_ore => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), {}, deepslate_emerald_ore => BlockBehavior::new().requires_correct_tool_for_drops().strength(4.5, 3.0), {}, ender_chest => BlockBehavior::new().requires_correct_tool_for_drops().strength(22.5, 600.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, tripwire_hook => BlockBehavior::new(), { - attached: false, + attached: Attached(false), facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, tripwire => BlockBehavior::new(), { - attached: false, - disarmed: false, - east: false, - north: false, - powered: false, - south: false, - west: false, + attached: Attached(false), + disarmed: Disarmed(false), + east: East(false), + north: North(false), + powered: Powered(false), + south: South(false), + west: West(false), }, emerald_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 6.0), {}, spruce_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, birch_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, jungle_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, command_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(-1.0, 3600000.0), { - conditional: false, + conditional: Conditional(false), facing: FacingCubic::North, }, beacon => BlockBehavior::new().strength(3.0, 3.0), {}, @@ -2993,16 +2987,16 @@ make_block_states! { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, mossy_cobblestone_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, flower_pot => BlockBehavior::new(), {}, @@ -3042,103 +3036,103 @@ make_block_states! { oak_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, spruce_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, birch_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, jungle_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, acacia_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, cherry_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, dark_oak_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, mangrove_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, bamboo_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, skeleton_skull => BlockBehavior::new().strength(1.0, 1.0), { - powered: false, + powered: Powered(false), rotation: SkeletonSkullRotation::_0, }, skeleton_wall_skull => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, wither_skeleton_skull => BlockBehavior::new().strength(1.0, 1.0), { - powered: false, + powered: Powered(false), rotation: WitherSkeletonSkullRotation::_0, }, wither_skeleton_wall_skull => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, zombie_head => BlockBehavior::new().strength(1.0, 1.0), { - powered: false, + powered: Powered(false), rotation: ZombieHeadRotation::_0, }, zombie_wall_head => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, player_head => BlockBehavior::new().strength(1.0, 1.0), { - powered: false, + powered: Powered(false), rotation: PlayerHeadRotation::_0, }, player_wall_head => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, creeper_head => BlockBehavior::new().strength(1.0, 1.0), { - powered: false, + powered: Powered(false), rotation: CreeperHeadRotation::_0, }, creeper_wall_head => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, dragon_head => BlockBehavior::new().strength(1.0, 1.0), { - powered: false, + powered: Powered(false), rotation: DragonHeadRotation::_0, }, dragon_wall_head => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, piglin_head => BlockBehavior::new().strength(1.0, 1.0), { - powered: false, + powered: Powered(false), rotation: PiglinHeadRotation::_0, }, piglin_wall_head => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, anvil => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 1200.0), { facing: FacingCardinal::North, @@ -3152,7 +3146,7 @@ make_block_states! { trapped_chest => BlockBehavior::new().strength(2.5, 2.5), { kind: ChestType::Single, facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, light_weighted_pressure_plate => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.5, 0.5), { power: LightWeightedPressurePlatePower::_0, @@ -3163,16 +3157,16 @@ make_block_states! { comparator => BlockBehavior::new(), { facing: FacingCardinal::North, mode: ComparatorType::Compare, - powered: false, + powered: Powered(false), }, daylight_detector => BlockBehavior::new().strength(0.2, 0.2), { - inverted: false, + inverted: Inverted(false), power: DaylightDetectorPower::_0, }, redstone_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 6.0), {}, nether_quartz_ore => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), {}, hopper => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 4.8), { - enabled: true, + enabled: Enabled(true), facing: Facing::Down, }, quartz_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.8, 0.8), {}, @@ -3184,16 +3178,16 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, activator_rail => BlockBehavior::new().strength(0.7, 0.7), { - powered: false, + powered: Powered(false), shape: RailShape::NorthSouth, - waterlogged: false, + waterlogged: Waterlogged(false), }, dropper => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 3.5), { facing: FacingCubic::North, - triggered: false, + triggered: Triggered(false), }, white_terracotta => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.25, 4.2), {}, orange_terracotta => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.25, 4.2), {}, @@ -3212,167 +3206,167 @@ make_block_states! { red_terracotta => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.25, 4.2), {}, black_terracotta => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.25, 4.2), {}, white_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, orange_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, magenta_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, light_blue_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, yellow_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, lime_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, pink_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, gray_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, light_gray_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, cyan_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, purple_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, blue_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, brown_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, green_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, red_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, black_stained_glass_pane => BlockBehavior::new().strength(0.3, 0.3), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, acacia_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, cherry_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, dark_oak_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, mangrove_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, bamboo_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, bamboo_mosaic_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, slime_block => BlockBehavior::new().friction(0.8), {}, barrier => BlockBehavior::new().strength(-1.0, 3600000.8), { - waterlogged: false, + waterlogged: Waterlogged(false), }, light => BlockBehavior::new().strength(-1.0, 3600000.8), { level: LightLevel::_15, - waterlogged: false, + waterlogged: Waterlogged(false), }, iron_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 5.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, prismarine => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, prismarine_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, @@ -3381,31 +3375,31 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, prismarine_brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, dark_prismarine_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, prismarine_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, prismarine_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, dark_prismarine_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, sea_lantern => BlockBehavior::new().strength(0.3, 0.3), {}, hay_block => BlockBehavior::new().strength(0.5, 0.5), { @@ -3551,103 +3545,103 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, oak_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, spruce_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, birch_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, jungle_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, acacia_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, cherry_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, dark_oak_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, mangrove_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, bamboo_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, bamboo_mosaic_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, stone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, smooth_stone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, sandstone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, cut_sandstone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, petrified_oak_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, cobblestone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, stone_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, mud_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, nether_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, quartz_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, red_sandstone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, cut_red_sandstone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, purpur_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, smooth_stone => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), {}, smooth_sandstone => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), {}, @@ -3655,174 +3649,174 @@ make_block_states! { smooth_red_sandstone => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), {}, spruce_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, birch_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, jungle_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, acacia_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, cherry_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, dark_oak_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, mangrove_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, bamboo_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, spruce_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, birch_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, jungle_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, acacia_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, cherry_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, dark_oak_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, mangrove_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, bamboo_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, spruce_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, birch_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, jungle_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, acacia_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, cherry_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, dark_oak_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, mangrove_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, bamboo_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, end_rod => BlockBehavior::new(), { facing: FacingCubic::Up, }, chorus_plant => BlockBehavior::new().strength(0.4, 0.4), { - down: false, - east: false, - north: false, - south: false, - up: false, - west: false, + down: Down(false), + east: East(false), + north: North(false), + south: South(false), + up: Up(false), + west: West(false), }, chorus_flower => BlockBehavior::new().strength(0.4, 0.4), { age: ChorusFlowerAge::_0, @@ -3835,7 +3829,7 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, end_stone_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 9.0), {}, torchflower_crop => BlockBehavior::new(), { @@ -3854,11 +3848,11 @@ make_block_states! { dirt_path => BlockBehavior::new().strength(0.65, 0.65), {}, end_gateway => BlockBehavior::new().strength(-1.0, 3600000.0), {}, repeating_command_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(-1.0, 3600000.0), { - conditional: false, + conditional: Conditional(false), facing: FacingCubic::North, }, chain_command_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(-1.0, 3600000.0), { - conditional: false, + conditional: Conditional(false), facing: FacingCubic::North, }, frosted_ice => BlockBehavior::new().strength(0.5, 0.5).friction(0.98), { @@ -3873,7 +3867,7 @@ make_block_states! { structure_void => BlockBehavior::new(), {}, observer => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { facing: FacingCubic::South, - powered: false, + powered: Powered(false), }, shulker_box => BlockBehavior::new().strength(2.0, 2.0), { facing: FacingCubic::Up, @@ -4029,112 +4023,112 @@ make_block_states! { fire_coral_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, horn_coral_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, dead_tube_coral => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_brain_coral => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_bubble_coral => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_fire_coral => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_horn_coral => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, tube_coral => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, brain_coral => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, bubble_coral => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, fire_coral => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, horn_coral => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_tube_coral_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_brain_coral_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_bubble_coral_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_fire_coral_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_horn_coral_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, tube_coral_fan => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, brain_coral_fan => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, bubble_coral_fan => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, fire_coral_fan => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, horn_coral_fan => BlockBehavior::new(), { - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_tube_coral_wall_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_brain_coral_wall_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_bubble_coral_wall_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_fire_coral_wall_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, dead_horn_coral_wall_fan => BlockBehavior::new().requires_correct_tool_for_drops(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, tube_coral_wall_fan => BlockBehavior::new(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, brain_coral_wall_fan => BlockBehavior::new(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, bubble_coral_wall_fan => BlockBehavior::new(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, fire_coral_wall_fan => BlockBehavior::new(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, horn_coral_wall_fan => BlockBehavior::new(), { facing: FacingCardinal::North, - waterlogged: true, + waterlogged: Waterlogged(true), }, sea_pickle => BlockBehavior::new(), { pickles: SeaPicklePickles::_1, - waterlogged: true, + waterlogged: Waterlogged(true), }, blue_ice => BlockBehavior::new().strength(2.8, 2.8).friction(0.989), {}, conduit => BlockBehavior::new().strength(3.0, 3.0), { - waterlogged: true, + waterlogged: Waterlogged(true), }, bamboo_sapling => BlockBehavior::new().strength(1.0, 1.0), {}, bamboo => BlockBehavior::new().strength(1.0, 1.0), { @@ -4146,267 +4140,267 @@ make_block_states! { void_air => BlockBehavior::new(), {}, cave_air => BlockBehavior::new(), {}, bubble_column => BlockBehavior::new(), { - drag: true, + drag: Drag(true), }, polished_granite_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, smooth_red_sandstone_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, mossy_stone_brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_diorite_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, mossy_cobblestone_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, end_stone_brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 9.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, stone_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, smooth_sandstone_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, smooth_quartz_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, granite_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, andesite_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, red_nether_brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_andesite_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, diorite_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_granite_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, smooth_red_sandstone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, mossy_stone_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_diorite_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, mossy_cobblestone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, end_stone_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 9.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, smooth_sandstone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, smooth_quartz_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, granite_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, andesite_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, red_nether_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_andesite_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, diorite_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, prismarine_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, red_sandstone_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.8, 0.8), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, mossy_stone_brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, granite_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, stone_brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, mud_brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 3.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, nether_brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, andesite_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, red_nether_brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, sandstone_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.8, 0.8), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, end_stone_brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 9.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, diorite_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, scaffolding => BlockBehavior::new(), { - bottom: false, + bottom: Bottom(false), distance: ScaffoldingDistance::_7, - waterlogged: false, + waterlogged: Waterlogged(false), }, loom => BlockBehavior::new().strength(2.5, 2.5), { facing: FacingCardinal::North, }, barrel => BlockBehavior::new().strength(2.5, 2.5), { facing: FacingCubic::North, - open: false, + open: Open(false), }, smoker => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 3.5), { facing: FacingCardinal::North, - lit: false, + lit: Lit(false), }, blast_furnace => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 3.5), { facing: FacingCardinal::North, - lit: false, + lit: Lit(false), }, cartography_table => BlockBehavior::new().strength(2.5, 2.5), {}, fletching_table => BlockBehavior::new().strength(2.5, 2.5), {}, @@ -4416,8 +4410,8 @@ make_block_states! { }, lectern => BlockBehavior::new().strength(2.5, 2.5), { facing: FacingCardinal::North, - has_book: false, - powered: false, + has_book: HasBook(false), + powered: Powered(false), }, smithing_table => BlockBehavior::new().strength(2.5, 2.5), {}, stonecutter => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 3.5), { @@ -4426,27 +4420,27 @@ make_block_states! { bell => BlockBehavior::new().requires_correct_tool_for_drops().strength(5.0, 5.0), { attachment: Attachment::Floor, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, lantern => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 3.5), { - hanging: false, - waterlogged: false, + hanging: Hanging(false), + waterlogged: Waterlogged(false), }, soul_lantern => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 3.5), { - hanging: false, - waterlogged: false, + hanging: Hanging(false), + waterlogged: Waterlogged(false), }, campfire => BlockBehavior::new().strength(2.0, 2.0), { facing: FacingCardinal::North, - lit: true, - signal_fire: false, - waterlogged: false, + lit: Lit(true), + signal_fire: SignalFire(false), + waterlogged: Waterlogged(false), }, soul_campfire => BlockBehavior::new().strength(2.0, 2.0), { facing: FacingCardinal::North, - lit: true, - signal_fire: false, - waterlogged: false, + lit: Lit(true), + signal_fire: SignalFire(false), + waterlogged: Waterlogged(false), }, sweet_berry_bush => BlockBehavior::new(), { age: SweetBerryBushAge::_0, @@ -4496,109 +4490,109 @@ make_block_states! { warped_planks => BlockBehavior::new().strength(2.0, 3.0), {}, crimson_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, warped_slab => BlockBehavior::new().strength(2.0, 3.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, crimson_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, warped_pressure_plate => BlockBehavior::new().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, crimson_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, warped_fence => BlockBehavior::new().strength(2.0, 3.0), { - east: false, - north: false, - south: false, - waterlogged: false, - west: false, + east: East(false), + north: North(false), + south: South(false), + waterlogged: Waterlogged(false), + west: West(false), }, crimson_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, warped_trapdoor => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, crimson_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, warped_fence_gate => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, - in_wall: false, - open: false, - powered: false, + in_wall: InWall(false), + open: Open(false), + powered: Powered(false), }, crimson_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, warped_stairs => BlockBehavior::new().strength(2.0, 3.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, crimson_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, warped_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, crimson_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, warped_door => BlockBehavior::new().strength(3.0, 3.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, crimson_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: CrimsonSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, warped_sign => BlockBehavior::new().strength(1.0, 1.0), { rotation: WarpedSignRotation::_0, - waterlogged: false, + waterlogged: Waterlogged(false), }, crimson_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, warped_wall_sign => BlockBehavior::new().strength(1.0, 1.0), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, structure_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(-1.0, 3600000.0), { mode: Mode::Load, @@ -4638,19 +4632,19 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, blackstone_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, blackstone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_blackstone => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), {}, polished_blackstone_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, @@ -4658,20 +4652,20 @@ make_block_states! { chiseled_polished_blackstone => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, polished_blackstone_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_blackstone_brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_blackstone_brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, gilded_blackstone => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, @@ -4679,26 +4673,26 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_blackstone_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_blackstone_pressure_plate => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.5, 0.5), { - powered: false, + powered: Powered(false), }, polished_blackstone_button => BlockBehavior::new().strength(0.5, 0.5), { face: Face::Wall, facing: FacingCardinal::North, - powered: false, + powered: Powered(false), }, polished_blackstone_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, chiseled_nether_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(2.0, 6.0), {}, @@ -4706,214 +4700,214 @@ make_block_states! { quartz_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(0.8, 0.8), {}, candle => BlockBehavior::new().strength(0.1, 0.1), { candles: CandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, white_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: WhiteCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, orange_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: OrangeCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, magenta_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: MagentaCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, light_blue_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: LightBlueCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, yellow_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: YellowCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, lime_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: LimeCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, pink_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: PinkCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, gray_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: GrayCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, light_gray_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: LightGrayCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, cyan_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: CyanCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, purple_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: PurpleCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, blue_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: BlueCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, brown_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: BrownCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, green_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: GreenCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, red_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: RedCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, black_candle => BlockBehavior::new().strength(0.1, 0.1), { candles: BlackCandleCandles::_1, - lit: false, - waterlogged: false, + lit: Lit(false), + waterlogged: Waterlogged(false), }, candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, white_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, orange_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, magenta_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, light_blue_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, yellow_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, lime_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, pink_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, gray_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, light_gray_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, cyan_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, purple_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, blue_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, brown_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, green_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, red_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, black_candle_cake => BlockBehavior::new().strength(0.5, 0.5), { - lit: false, + lit: Lit(false), }, amethyst_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 1.5), {}, budding_amethyst => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 1.5), {}, amethyst_cluster => BlockBehavior::new().strength(1.5, 1.5), { facing: FacingCubic::Up, - waterlogged: false, + waterlogged: Waterlogged(false), }, large_amethyst_bud => BlockBehavior::new().strength(1.5, 1.5), { facing: FacingCubic::Up, - waterlogged: false, + waterlogged: Waterlogged(false), }, medium_amethyst_bud => BlockBehavior::new().strength(1.5, 1.5), { facing: FacingCubic::Up, - waterlogged: false, + waterlogged: Waterlogged(false), }, small_amethyst_bud => BlockBehavior::new().strength(1.5, 1.5), { facing: FacingCubic::Up, - waterlogged: false, + waterlogged: Waterlogged(false), }, tuff => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, tuff_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, tuff_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, tuff_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, polished_tuff => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, polished_tuff_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_tuff_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_tuff_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, chiseled_tuff => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, tuff_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, tuff_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, tuff_brick_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, tuff_brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, chiseled_tuff_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 6.0), {}, @@ -4923,31 +4917,31 @@ make_block_states! { sculk_sensor => BlockBehavior::new().strength(1.5, 1.5), { power: SculkSensorPower::_0, sculk_sensor_phase: Phase::Inactive, - waterlogged: false, + waterlogged: Waterlogged(false), }, calibrated_sculk_sensor => BlockBehavior::new().strength(1.5, 1.5), { facing: FacingCardinal::North, power: CalibratedSculkSensorPower::_0, sculk_sensor_phase: Phase::Inactive, - waterlogged: false, + waterlogged: Waterlogged(false), }, sculk => BlockBehavior::new().strength(0.2, 0.2), {}, sculk_vein => BlockBehavior::new().strength(0.2, 0.2), { - down: false, - east: false, - north: false, - south: false, - up: false, - waterlogged: false, - west: false, + down: Down(false), + east: East(false), + north: North(false), + south: South(false), + up: Up(false), + waterlogged: Waterlogged(false), + west: West(false), }, sculk_catalyst => BlockBehavior::new().strength(3.0, 3.0), { - bloom: false, + bloom: Bloom(false), }, sculk_shrieker => BlockBehavior::new().strength(3.0, 3.0), { - can_summon: false, - shrieking: false, - waterlogged: false, + can_summon: CanSummon(false), + shrieking: Shrieking(false), + waterlogged: Waterlogged(false), }, copper_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {}, exposed_copper => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {}, @@ -4971,41 +4965,41 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, weathered_cut_copper_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, exposed_cut_copper_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, cut_copper_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, oxidized_cut_copper_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, weathered_cut_copper_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, exposed_cut_copper_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, cut_copper_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_copper_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {}, waxed_weathered_copper => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {}, @@ -5019,227 +5013,227 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_weathered_cut_copper_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_exposed_cut_copper_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_cut_copper_stairs => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_oxidized_cut_copper_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_weathered_cut_copper_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_exposed_cut_copper_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_cut_copper_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, - copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, - exposed_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + exposed_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, - oxidized_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + oxidized_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, - weathered_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + weathered_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, - waxed_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + waxed_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, - waxed_exposed_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + waxed_exposed_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, - waxed_oxidized_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + waxed_oxidized_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, - waxed_weathered_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + waxed_weathered_copper_door => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: Half::Lower, hinge: Hinge::Left, - open: false, - powered: false, + open: Open(false), + powered: Powered(false), }, - copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, - exposed_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + exposed_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, - oxidized_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + oxidized_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, - weathered_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + weathered_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, - waxed_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + waxed_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, - waxed_exposed_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + waxed_exposed_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, - waxed_oxidized_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + waxed_oxidized_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, - waxed_weathered_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 3.0), { + waxed_weathered_copper_trapdoor => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCardinal::North, half: TopBottom::Bottom, - open: false, - powered: false, - waterlogged: false, + open: Open(false), + powered: Powered(false), + waterlogged: Waterlogged(false), }, copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - waterlogged: false, + waterlogged: Waterlogged(false), }, exposed_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - waterlogged: false, + waterlogged: Waterlogged(false), }, weathered_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - waterlogged: false, + waterlogged: Waterlogged(false), }, oxidized_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_exposed_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_weathered_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - waterlogged: false, + waterlogged: Waterlogged(false), }, waxed_oxidized_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - waterlogged: false, + waterlogged: Waterlogged(false), }, copper_bulb => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - lit: false, - powered: false, + lit: Lit(false), + powered: Powered(false), }, exposed_copper_bulb => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - lit: false, - powered: false, + lit: Lit(false), + powered: Powered(false), }, weathered_copper_bulb => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - lit: false, - powered: false, + lit: Lit(false), + powered: Powered(false), }, oxidized_copper_bulb => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - lit: false, - powered: false, + lit: Lit(false), + powered: Powered(false), }, waxed_copper_bulb => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - lit: false, - powered: false, + lit: Lit(false), + powered: Powered(false), }, waxed_exposed_copper_bulb => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - lit: false, - powered: false, + lit: Lit(false), + powered: Powered(false), }, waxed_weathered_copper_bulb => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - lit: false, - powered: false, + lit: Lit(false), + powered: Powered(false), }, waxed_oxidized_copper_bulb => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { - lit: false, - powered: false, + lit: Lit(false), + powered: Powered(false), }, lightning_rod => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), { facing: FacingCubic::Up, - powered: false, - waterlogged: false, + powered: Powered(false), + waterlogged: Waterlogged(false), }, pointed_dripstone => BlockBehavior::new().strength(1.5, 3.0), { thickness: Thickness::Tip, vertical_direction: TipDirection::Up, - waterlogged: false, + waterlogged: Waterlogged(false), }, dripstone_block => BlockBehavior::new().requires_correct_tool_for_drops().strength(1.5, 1.0), {}, cave_vines => BlockBehavior::new(), { age: CaveVinesAge::_0, - berries: false, + berries: Berries(false), }, cave_vines_plant => BlockBehavior::new(), { - berries: false, + berries: Berries(false), }, spore_blossom => BlockBehavior::new(), {}, azalea => BlockBehavior::new(), {}, @@ -5253,19 +5247,19 @@ make_block_states! { big_dripleaf => BlockBehavior::new().strength(0.1, 0.1), { facing: FacingCardinal::North, tilt: Tilt::None, - waterlogged: false, + waterlogged: Waterlogged(false), }, big_dripleaf_stem => BlockBehavior::new().strength(0.1, 0.1), { facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, small_dripleaf => BlockBehavior::new(), { facing: FacingCardinal::North, half: Half::Lower, - waterlogged: false, + waterlogged: Waterlogged(false), }, hanging_roots => BlockBehavior::new(), { - waterlogged: false, + waterlogged: Waterlogged(false), }, rooted_dirt => BlockBehavior::new().strength(0.5, 0.5), {}, mud => BlockBehavior::new().strength(0.5, 0.5), {}, @@ -5277,18 +5271,18 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, cobbled_deepslate_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, cobbled_deepslate_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, polished_deepslate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), {}, @@ -5296,18 +5290,18 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_deepslate_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, polished_deepslate_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, deepslate_tiles => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), {}, @@ -5315,18 +5309,18 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, deepslate_tile_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, deepslate_tile_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, deepslate_bricks => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), {}, @@ -5334,18 +5328,18 @@ make_block_states! { facing: FacingCardinal::North, half: TopBottom::Bottom, shape: StairShape::Straight, - waterlogged: false, + waterlogged: Waterlogged(false), }, deepslate_brick_slab => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), { kind: Type::Bottom, - waterlogged: false, + waterlogged: Waterlogged(false), }, deepslate_brick_wall => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), { east: EastWall::None, north: NorthWall::None, south: SouthWall::None, - up: true, - waterlogged: false, + up: Up(true), + waterlogged: Waterlogged(false), west: WestWall::None, }, chiseled_deepslate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.5, 6.0), {}, @@ -5372,14 +5366,14 @@ make_block_states! { frogspawn => BlockBehavior::new(), {}, reinforced_deepslate => BlockBehavior::new().strength(55.0, 1200.0), {}, decorated_pot => BlockBehavior::new(), { - cracked: false, + cracked: Cracked(false), facing: FacingCardinal::North, - waterlogged: false, + waterlogged: Waterlogged(false), }, crafter => BlockBehavior::new().strength(1.5, 3.5), { - crafting: false, + crafting: Crafting(false), orientation: Orientation::NorthUp, - triggered: false, + triggered: Triggered(false), }, trial_spawner => BlockBehavior::new().requires_correct_tool_for_drops().strength(50.0, 50.0), { trial_spawner_state: State::Inactive, diff --git a/codegen/lib/code/blocks.py b/codegen/lib/code/blocks.py index 3af19fa8..f96b1116 100755 --- a/codegen/lib/code/blocks.py +++ b/codegen/lib/code/blocks.py @@ -71,9 +71,9 @@ def generate_blocks(blocks_burger: dict, blocks_report: dict, pixlyzer_block_dat # }, property_name = property_struct_names_to_names[property_struct_name] - # if the only variants are true and false, we can just make it a normal boolean + # if the only variants are true and false, we make it unit struct with a boolean instead of an enum if property_variants == ['true', 'false']: - property_shape_code = 'bool' + property_shape_code = f'{property_struct_name}(bool)' else: property_shape_code = f'{property_struct_name} {{\n' for variant in property_variants: @@ -119,7 +119,7 @@ def generate_blocks(blocks_burger: dict, blocks_report: dict, pixlyzer_block_dat if is_boolean_property: # if it's a boolean, keep the type lowercase # (so it's either `true` or `false`) - property_default_type = property_default + property_default_type = f'{property_struct_name}({property_default})' else: property_default_type = f'{property_struct_name}::{to_camel_case(property_default)}' @@ -208,6 +208,10 @@ def get_property_struct_name(property: Optional[dict], block_data_burger: dict, if property is None: return ''.join(map(to_camel_case, property_variants)) + if property_variants == ['true', 'false']: + # booleans are weird, so just return the string name minecraft uses + return to_camel_case(property['name']) + for class_name in [block_data_burger['class']] + block_data_burger['super']: property_name = mappings.get_field( class_name, property['field_name']) |
