blocks: add 1.16.1/2+ new blocks/states (#474)

Adds _some _new blocks and block states, building on the version-
dependent block support added in #469. Notably, fixes grass on 1.16.4.

1.16.1+ (protocol_version >= 735)
* Add NetherGoldOre
* Add SoulFire
* Add SoulSoil, Basalt
* Add PolishedBasalt, SoulTorch, SoulWallTorch
* Add Chain

1.16.2+ (protocol_version >= 751)
* Add Chain axis states
This commit is contained in:
iceiix 2021-01-14 16:46:41 -08:00 committed by ice_iix
parent 8ca12a69ce
commit 49274e7e52
1 changed files with 92 additions and 0 deletions

View File

@ -714,6 +714,12 @@ define_blocks! {
props {},
model { ("minecraft", "coal_ore") },
}
NetherGoldOre {
props {},
data None,
offsets |protocol_version| { if protocol_version >= 735 { Some(0) } else { None } },
model { ("minecraft", "nether_gold_ore") },
}
Log {
props {
variant: TreeVariant = [
@ -1389,6 +1395,12 @@ define_blocks! {
_ => false,
},
}
SoulFire {
props {},
offsets |protocol_version| { if protocol_version >= 735 { Some(0) } else { None } },
model { ("minecraft", "soul_fire") },
collision vec![],
}
MobSpawner {
props {},
material material::NON_SOLID,
@ -2043,6 +2055,58 @@ define_blocks! {
Point3::new(1.0, 7.0/8.0, 1.0)
)],
}
SoulSoil {
props {},
offsets |protocol_version| { if protocol_version >= 735 { Some(0) } else { None } },
model { ("minecraft", "soul_soil") },
}
Basalt {
props {
axis: Axis = [Axis::X, Axis::Y, Axis::Z],
},
data None,
offsets |protocol_version| { if protocol_version >= 735 { Some(
match axis {
Axis::X => 0,
Axis::Y => 1,
Axis::Z => 2,
_ => unreachable!()
}) } else { None } },
model { ("minecraft", "basalt") },
}
PolishedBasalt {
props {
axis: Axis = [Axis::X, Axis::Y, Axis::Z],
},
data None,
offsets |protocol_version| { if protocol_version >= 735 { Some(
match axis {
Axis::X => 0,
Axis::Y => 1,
Axis::Z => 2,
_ => unreachable!()
}) } else { None } },
model { ("minecraft", "polished_basalt") },
}
SoulTorch {
props {},
data None,
offsets |protocol_version| { if protocol_version >= 735 { Some(0) } else { None } },
model { ("minecraft", "soul_torch") },
}
SoulWallTorch {
props {
facing: Direction = [
Direction::North,
Direction::South,
Direction::West,
Direction::East
],
},
data None,
offsets |protocol_version| { if protocol_version >= 735 { Some(facing.offset()) } else { None } },
model { ("minecraft", "soul_wall_torch") },
}
Glowstone {
props {},
material Material {
@ -2328,6 +2392,34 @@ define_blocks! {
_ => false,
},
}
Chain {
props {
waterlogged: bool = [true, false],
axis: Axis = [Axis::X, Axis::Y, Axis::Z],
},
data None,
offsets |protocol_version| {
if protocol_version >= 735 {
let o = if waterlogged { 1 } else { 0 };
if protocol_version >= 751 {
Some(match axis {
Axis::X => 0,
Axis::Y => 1,
Axis::Z => 2,
_ => unreachable!()
} * 2 + o)
} else {
match axis {
Axis::Y => Some(o),
_ => None,
}
}
} else {
None
}
},
model { ("minecraft", "chain") },
}
GlassPane {
props {
north: bool = [false, true],