diff --git a/Cargo.lock b/Cargo.lock
index 9f16799d2..753653b1c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -276,6 +276,7 @@ dependencies = [
"azalea-buf",
"azalea-language",
"azalea-nbt",
+ "azalea-registry",
"log",
"once_cell",
"serde",
diff --git a/README.md b/README.md
index f342a794c..bb5b8eb91 100755
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ A collection of Rust crates for making Minecraft bots, clients, and tools.
-*Currently supported Minecraft version: `23w45a`.*
+*Currently supported Minecraft version: `1.20.3-pre2`.*
> **Warning**
> Azalea is still very unfinished, though most crates are in a somewhat useable state
diff --git a/azalea-block/src/generated.rs b/azalea-block/src/generated.rs
index b0fa7918c..5a700d786 100755
--- a/azalea-block/src/generated.rs
+++ b/azalea-block/src/generated.rs
@@ -832,6 +832,26 @@ make_block_states! {
},
"locked" => bool,
"down" => bool,
+ "age" => PumpkinStemAge {
+ _0,
+ _1,
+ _2,
+ _3,
+ _4,
+ _5,
+ _6,
+ _7,
+ },
+ "age" => MelonStemAge {
+ _0,
+ _1,
+ _2,
+ _3,
+ _4,
+ _5,
+ _6,
+ _7,
+ },
"down" => bool,
"north" => bool,
"south" => bool,
@@ -2261,7 +2281,7 @@ make_block_states! {
facing: FacingCubic::North,
},
cobweb => BlockBehavior::new().requires_correct_tool_for_drops().strength(4.0, 4.0), {},
- grass => BlockBehavior::new(), {},
+ short_grass => BlockBehavior::new(), {},
fern => BlockBehavior::new(), {},
dead_bush => BlockBehavior::new(), {},
seagrass => BlockBehavior::new(), {},
@@ -2816,6 +2836,20 @@ make_block_states! {
waterlogged: false,
west: false,
},
+ pumpkin => BlockBehavior::new().strength(1.0, 1.0), {},
+ melon => BlockBehavior::new().strength(1.0, 1.0), {},
+ attached_pumpkin_stem => BlockBehavior::new(), {
+ facing: FacingCardinal::North,
+ },
+ attached_melon_stem => BlockBehavior::new(), {
+ facing: FacingCardinal::North,
+ },
+ pumpkin_stem => BlockBehavior::new(), {
+ age: PumpkinStemAge::_0,
+ },
+ melon_stem => BlockBehavior::new(), {
+ age: MelonStemAge::_0,
+ },
vine => BlockBehavior::new().strength(0.2, 0.2), {
east: false,
north: false,
@@ -5133,14 +5167,30 @@ make_block_states! {
powered: false,
waterlogged: false,
},
- copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {},
- exposed_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {},
- weathered_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {},
- oxidized_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {},
- waxed_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {},
- waxed_exposed_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {},
- waxed_weathered_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {},
- waxed_oxidized_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {},
+ copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {
+ waterlogged: false,
+ },
+ exposed_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {
+ waterlogged: false,
+ },
+ weathered_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {
+ waterlogged: false,
+ },
+ oxidized_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {
+ waterlogged: false,
+ },
+ waxed_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {
+ waterlogged: false,
+ },
+ waxed_exposed_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {
+ waterlogged: false,
+ },
+ waxed_weathered_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {
+ waterlogged: false,
+ },
+ waxed_oxidized_copper_grate => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {
+ waterlogged: false,
+ },
copper_bulb => BlockBehavior::new().requires_correct_tool_for_drops().strength(3.0, 6.0), {
lit: false,
powered: false,
diff --git a/azalea-chat/Cargo.toml b/azalea-chat/Cargo.toml
index 9d8115ae6..1f62f7313 100644
--- a/azalea-chat/Cargo.toml
+++ b/azalea-chat/Cargo.toml
@@ -10,6 +10,8 @@ version = "0.8.0"
[features]
default = ["azalea-buf"]
+azalea-buf = ["dep:azalea-buf"]
+numbers = ["dep:azalea-registry"]
[dependencies]
azalea-buf = { path = "../azalea-buf", features = [
@@ -21,3 +23,4 @@ log = "0.4.20"
once_cell = "1.18.0"
serde = { version = "^1.0", features = ["derive"] }
serde_json = "^1.0.108"
+azalea-registry = { path = "../azalea-registry", version = "0.8.0", optional = true }
diff --git a/azalea-chat/src/lib.rs b/azalea-chat/src/lib.rs
index d6ff72855..9995a183c 100755
--- a/azalea-chat/src/lib.rs
+++ b/azalea-chat/src/lib.rs
@@ -2,6 +2,8 @@
pub mod base_component;
mod component;
+#[cfg(feature = "numbers")]
+pub mod numbers;
pub mod style;
pub mod text_component;
pub mod translatable_component;
diff --git a/azalea-chat/src/numbers.rs b/azalea-chat/src/numbers.rs
new file mode 100644
index 000000000..1531ed20a
--- /dev/null
+++ b/azalea-chat/src/numbers.rs
@@ -0,0 +1,52 @@
+//! Contains a few ways to style numbers. At the time of writing, Minecraft only
+//! uses this for rendering scoreboard objectives.
+
+use std::io::{Cursor, Write};
+
+#[cfg(feature = "azalea-buf")]
+use azalea_buf::{McBufReadable, McBufWritable};
+use azalea_nbt::Nbt;
+use azalea_registry::NumberFormatKind;
+
+use crate::FormattedText;
+
+#[derive(Clone, Debug)]
+pub enum NumberFormat {
+ Blank,
+ Styled { style: Nbt },
+ Fixed { value: FormattedText },
+}
+
+#[cfg(feature = "azalea-buf")]
+impl McBufReadable for NumberFormat {
+ fn read_from(buf: &mut Cursor<&[u8]>) -> Result {
+ let kind = NumberFormatKind::read_from(buf)?;
+ match kind {
+ NumberFormatKind::Blank => Ok(NumberFormat::Blank),
+ NumberFormatKind::Styled => Ok(NumberFormat::Styled {
+ style: Nbt::read_from(buf)?,
+ }),
+ NumberFormatKind::Fixed => Ok(NumberFormat::Fixed {
+ value: FormattedText::read_from(buf)?,
+ }),
+ }
+ }
+}
+
+#[cfg(feature = "azalea-buf")]
+impl McBufWritable for NumberFormat {
+ fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
+ match self {
+ NumberFormat::Blank => NumberFormatKind::Blank.write_into(buf)?,
+ NumberFormat::Styled { style } => {
+ NumberFormatKind::Styled.write_into(buf)?;
+ style.write_into(buf)?;
+ }
+ NumberFormat::Fixed { value } => {
+ NumberFormatKind::Fixed.write_into(buf)?;
+ value.write_into(buf)?;
+ }
+ }
+ Ok(())
+ }
+}
diff --git a/azalea-client/src/packet_handling/configuration.rs b/azalea-client/src/packet_handling/configuration.rs
index e26e3f3b0..315ae4290 100644
--- a/azalea-client/src/packet_handling/configuration.rs
+++ b/azalea-client/src/packet_handling/configuration.rs
@@ -179,7 +179,7 @@ pub fn process_packet_events(ecs: &mut World) {
.write_packet(ServerboundPongPacket { id: p.id }.get())
.unwrap();
}
- ClientboundConfigurationPacket::ResourcePack(p) => {
+ ClientboundConfigurationPacket::ResourcePackPush(p) => {
debug!("Got resource pack packet {p:?}");
let mut system_state: SystemState> = SystemState::new(ecs);
@@ -188,9 +188,15 @@ pub fn process_packet_events(ecs: &mut World) {
// always accept resource pack
raw_connection.write_packet(
- ServerboundResourcePackPacket { action: azalea_protocol::packets::configuration::serverbound_resource_pack_packet::Action::Accepted }.get()
+ ServerboundResourcePackPacket {
+ id: p.id,
+ action: azalea_protocol::packets::configuration::serverbound_resource_pack_packet::Action::Accepted
+ }.get()
).unwrap();
}
+ ClientboundConfigurationPacket::ResourcePackPop(_) => {
+ // we can ignore this
+ }
ClientboundConfigurationPacket::UpdateEnabledFeatures(p) => {
debug!("Got update enabled features packet {p:?}");
}
diff --git a/azalea-client/src/packet_handling/game.rs b/azalea-client/src/packet_handling/game.rs
index ea3d97e4a..9861458cc 100644
--- a/azalea-client/src/packet_handling/game.rs
+++ b/azalea-client/src/packet_handling/game.rs
@@ -31,6 +31,7 @@ use azalea_world::{Instance, InstanceContainer, InstanceName, MinecraftEntityId,
use bevy_ecs::{prelude::*, system::SystemState};
use log::{debug, error, trace, warn};
use parking_lot::RwLock;
+use uuid::Uuid;
use crate::{
chat::{ChatPacket, ChatReceivedEvent},
@@ -124,6 +125,9 @@ pub struct KeepAliveEvent {
#[derive(Event, Debug, Clone)]
pub struct ResourcePackEvent {
pub entity: Entity,
+ /// The random ID for this request to download the resource pack. The packet
+ /// for replying to a resource pack push must contain the same ID.
+ pub id: Uuid,
pub url: String,
pub hash: String,
pub required: bool,
@@ -1269,7 +1273,7 @@ pub fn process_packet_events(ecs: &mut World) {
}
ClientboundGamePacket::PlayerLookAt(_) => {}
ClientboundGamePacket::RemoveMobEffect(_) => {}
- ClientboundGamePacket::ResourcePack(p) => {
+ ClientboundGamePacket::ResourcePackPush(p) => {
debug!("Got resource pack packet {p:?}");
let mut system_state: SystemState> =
@@ -1278,6 +1282,7 @@ pub fn process_packet_events(ecs: &mut World) {
resource_pack_events.send(ResourcePackEvent {
entity: player_entity,
+ id: p.id,
url: p.url,
hash: p.hash,
required: p.required,
@@ -1286,6 +1291,7 @@ pub fn process_packet_events(ecs: &mut World) {
system_state.apply(ecs);
}
+ ClientboundGamePacket::ResourcePackPop(_) => {}
ClientboundGamePacket::Respawn(p) => {
debug!("Got respawn packet {p:?}");
@@ -1404,6 +1410,8 @@ pub fn process_packet_events(ecs: &mut World) {
ClientboundGamePacket::StartConfiguration(_) => {}
ClientboundGamePacket::TickingState(_) => {}
ClientboundGamePacket::TickingStep(_) => {}
+
+ ClientboundGamePacket::ResetScore(_) => {}
}
}
}
diff --git a/azalea-core/src/lib.rs b/azalea-core/src/lib.rs
index 3b29f6a22..1502b8a53 100755
--- a/azalea-core/src/lib.rs
+++ b/azalea-core/src/lib.rs
@@ -12,6 +12,7 @@ pub mod difficulty;
pub mod direction;
pub mod game_type;
pub mod math;
+pub mod objectives;
pub mod particle;
pub mod position;
pub mod resource_location;
diff --git a/azalea-core/src/objectives.rs b/azalea-core/src/objectives.rs
new file mode 100644
index 000000000..dd1534f20
--- /dev/null
+++ b/azalea-core/src/objectives.rs
@@ -0,0 +1,33 @@
+use std::{
+ fmt::{self, Display, Formatter},
+ str::FromStr,
+};
+
+use azalea_buf::McBuf;
+
+#[derive(Clone, Copy, Debug, McBuf)]
+pub enum ObjectiveCriteria {
+ Integer,
+ Hearts,
+}
+
+impl Display for ObjectiveCriteria {
+ fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
+ match self {
+ ObjectiveCriteria::Integer => write!(f, "integer"),
+ ObjectiveCriteria::Hearts => write!(f, "hearts"),
+ }
+ }
+}
+
+impl FromStr for ObjectiveCriteria {
+ type Err = ();
+
+ fn from_str(s: &str) -> Result {
+ match s {
+ "integer" => Ok(ObjectiveCriteria::Integer),
+ "hearts" => Ok(ObjectiveCriteria::Hearts),
+ _ => Err(()),
+ }
+ }
+}
diff --git a/azalea-language/src/en_us.json b/azalea-language/src/en_us.json
index 9cbc6718f..172d21770 100755
--- a/azalea-language/src/en_us.json
+++ b/azalea-language/src/en_us.json
@@ -359,6 +359,7 @@
"argument.rotation.incomplete": "Incomplete (expected 2 coordinates)",
"argument.scoreboardDisplaySlot.invalid": "Unknown display slot '%s'",
"argument.scoreHolder.empty": "No relevant score holders could be found",
+ "argument.style.invalid": "Invalid style: %s",
"argument.time.invalid_tick_count": "Tick count must be non-negative",
"argument.time.invalid_unit": "Invalid unit",
"argument.time.tick_count_too_low": "Tick count must not be less than %s, found %s",
@@ -1948,6 +1949,7 @@
"block.minecraft.sea_pickle": "Sea Pickle",
"block.minecraft.seagrass": "Seagrass",
"block.minecraft.set_spawn": "Respawn point set",
+ "block.minecraft.short_grass": "Short Grass",
"block.minecraft.shroomlight": "Shroomlight",
"block.minecraft.shulker_box": "Shulker Box",
"block.minecraft.skeleton_skull": "Skeleton Skull",
@@ -2478,6 +2480,7 @@
"commands.jfr.started": "JFR profiling started",
"commands.jfr.stopped": "JFR profiling stopped and dumped to %s",
"commands.kick.owner.failed": "Cannot kick server owner in LAN game",
+ "commands.kick.singleplayer.failed": "Cannot kick in an offline singleplayer game",
"commands.kick.success": "Kicked %s: %s",
"commands.kill.success.multiple": "Killed %s entities",
"commands.kill.success.single": "Killed %s",
@@ -2568,11 +2571,23 @@
"commands.scoreboard.objectives.display.set": "Set display slot %s to show objective %s",
"commands.scoreboard.objectives.list.empty": "There are no objectives",
"commands.scoreboard.objectives.list.success": "There are %s objective(s): %s",
+ "commands.scoreboard.objectives.modify.displayAutoUpdate.disable": "Disabled display auto-update for objective %s",
+ "commands.scoreboard.objectives.modify.displayAutoUpdate.enable": "Enabled display auto-update for objective %s",
"commands.scoreboard.objectives.modify.displayname": "Changed the display name of %s to %s",
+ "commands.scoreboard.objectives.modify.objectiveFormat.clear": "Cleared default number format of objective %s",
+ "commands.scoreboard.objectives.modify.objectiveFormat.set": "Changed default number format of objective %s",
"commands.scoreboard.objectives.modify.rendertype": "Changed the render type of objective %s",
"commands.scoreboard.objectives.remove.success": "Removed objective %s",
"commands.scoreboard.players.add.success.multiple": "Added %s to %s for %s entities",
"commands.scoreboard.players.add.success.single": "Added %s to %s for %s (now %s)",
+ "commands.scoreboard.players.display.name.clear.success.multiple": "Cleared display name for %s entities in %s",
+ "commands.scoreboard.players.display.name.clear.success.single": "Cleared display name for %s in %s",
+ "commands.scoreboard.players.display.name.set.success.multiple": "Changed display name to %s for %s entities in %s",
+ "commands.scoreboard.players.display.name.set.success.single": "Changed display name to %s for %s in %s",
+ "commands.scoreboard.players.display.numberFormat.clear.success.multiple": "Cleared number format for %s entities in %s",
+ "commands.scoreboard.players.display.numberFormat.clear.success.single": "Cleared number format for %s in %s",
+ "commands.scoreboard.players.display.numberFormat.set.success.multiple": "Changed number format for %s entities in %s",
+ "commands.scoreboard.players.display.numberFormat.set.success.single": "Changed number format for %s in %s",
"commands.scoreboard.players.enable.failed": "Nothing changed. That trigger is already enabled",
"commands.scoreboard.players.enable.invalid": "Enable only works on trigger-objectives",
"commands.scoreboard.players.enable.success.multiple": "Enabled trigger %s for %s entities",
@@ -3082,6 +3097,9 @@
"disconnect.spam": "Kicked for spamming",
"disconnect.timeout": "Timed out",
"disconnect.unknownHost": "Unknown host",
+ "download.pack.progress.bytes": "Progress: %s (total size unknown)",
+ "download.pack.progress.percent": "Progress: %s%%",
+ "download.pack.title": "Downloading resource pack %s/%s",
"editGamerule.default": "Default: %s",
"editGamerule.title": "Edit Game Rules",
"effect.duration.infinite": "\u221e",
@@ -4974,6 +4992,7 @@
"options.accessibility.high_contrast.tooltip": "Enhances the contrast of UI elements",
"options.accessibility.link": "Accessibility Guide",
"options.accessibility.narrator_hotkey": "Narrator Hotkey",
+ "options.accessibility.narrator_hotkey.mac.tooltip": "Allows the Narrator to be toggled on and off with 'Cmd+B'",
"options.accessibility.narrator_hotkey.tooltip": "Allows the Narrator to be toggled on and off with 'Ctrl+B'",
"options.accessibility.panorama_speed": "Panorama Scroll Speed",
"options.accessibility.text_background": "Text Background",
@@ -5914,7 +5933,7 @@
"subtitles.entity.generic.small_fall": "Something trips",
"subtitles.entity.generic.splash": "Splashing",
"subtitles.entity.generic.swim": "Swimming",
- "subtitles.entity.generic.wind_burst": "Wind charge bursts",
+ "subtitles.entity.generic.wind_burst": "Wind Charge bursts",
"subtitles.entity.ghast.ambient": "Ghast cries",
"subtitles.entity.ghast.death": "Ghast dies",
"subtitles.entity.ghast.hurt": "Ghast hurts",
diff --git a/azalea-physics/src/collision/blocks.rs b/azalea-physics/src/collision/blocks.rs
index 4de8244f3..aec40f37d 100644
--- a/azalea-physics/src/collision/blocks.rs
+++ b/azalea-physics/src/collision/blocks.rs
@@ -1915,21 +1915,21 @@ impl BlockWithShape for BlockState {
| 22000
| 22318
| 22800..=22927
- | 24761..=24815
- | 24819..=24834
- | 24842..=24843
+ | 24769..=24823
+ | 24827..=24842
| 24850..=24851
| 24858..=24859
- | 24866..=24893
- | 24992
- | 24995
- | 25403
- | 25406
- | 25814
- | 25817
- | 26225
- | 26228
- | 26564 => &SHAPE0,
+ | 24866..=24867
+ | 24874..=24901
+ | 25000
+ | 25003
+ | 25411
+ | 25414
+ | 25822
+ | 25825
+ | 26233
+ | 26236
+ | 26572 => &SHAPE0,
1688 | 1690 | 1693 | 1695 | 1704 | 1706 | 1709 | 1711 | 1720 | 1722 | 1725 | 1727
| 1736 | 1738 | 1741 | 1743 | 1752 | 1754 | 1757 | 1759 | 1768 | 1770 | 1773 | 1775
| 1784 | 1786 | 1789 | 1791 | 1800 | 1802 | 1805 | 1807 | 1816 | 1818 | 1821 | 1823
@@ -2108,10 +2108,10 @@ impl BlockWithShape for BlockState {
| 23388..=23389
| 23468..=23469
| 23548..=23549
- | 24900..=24901
- | 25311..=25312
- | 25722..=25723
- | 26133..=26134 => &SHAPE29,
+ | 24908..=24909
+ | 25319..=25320
+ | 25730..=25731
+ | 26141..=26142 => &SHAPE29,
2876..=2877
| 2918..=2919
| 4684..=4685
@@ -2216,14 +2216,14 @@ impl BlockWithShape for BlockState {
| 23512..=23513
| 23550..=23551
| 23592..=23593
- | 24902..=24903
- | 24944..=24945
- | 25313..=25314
- | 25355..=25356
- | 25724..=25725
- | 25766..=25767
- | 26135..=26136
- | 26177..=26178 => &SHAPE30,
+ | 24910..=24911
+ | 24952..=24953
+ | 25321..=25322
+ | 25363..=25364
+ | 25732..=25733
+ | 25774..=25775
+ | 26143..=26144
+ | 26185..=26186 => &SHAPE30,
2878..=2879
| 2936..=2937
| 4686..=4687
@@ -2328,14 +2328,14 @@ impl BlockWithShape for BlockState {
| 23530..=23531
| 23552..=23553
| 23610..=23611
- | 24904..=24905
- | 24962..=24963
- | 25315..=25316
- | 25373..=25374
- | 25726..=25727
- | 25784..=25785
- | 26137..=26138
- | 26195..=26196 => &SHAPE31,
+ | 24912..=24913
+ | 24970..=24971
+ | 25323..=25324
+ | 25381..=25382
+ | 25734..=25735
+ | 25792..=25793
+ | 26145..=26146
+ | 26203..=26204 => &SHAPE31,
2880..=2881
| 2922..=2923
| 4688..=4689
@@ -2440,14 +2440,14 @@ impl BlockWithShape for BlockState {
| 23516..=23517
| 23554..=23555
| 23596..=23597
- | 24906..=24907
- | 24948..=24949
- | 25317..=25318
- | 25359..=25360
- | 25728..=25729
- | 25770..=25771
- | 26139..=26140
- | 26181..=26182 => &SHAPE32,
+ | 24914..=24915
+ | 24956..=24957
+ | 25325..=25326
+ | 25367..=25368
+ | 25736..=25737
+ | 25778..=25779
+ | 26147..=26148
+ | 26189..=26190 => &SHAPE32,
2882..=2883
| 2940..=2941
| 4690..=4691
@@ -2552,14 +2552,14 @@ impl BlockWithShape for BlockState {
| 23534..=23535
| 23556..=23557
| 23614..=23615
- | 24908..=24909
- | 24966..=24967
- | 25319..=25320
- | 25377..=25378
- | 25730..=25731
- | 25788..=25789
- | 26141..=26142
- | 26199..=26200 => &SHAPE33,
+ | 24916..=24917
+ | 24974..=24975
+ | 25327..=25328
+ | 25385..=25386
+ | 25738..=25739
+ | 25796..=25797
+ | 26149..=26150
+ | 26207..=26208 => &SHAPE33,
2884..=2885
| 4692..=4693
| 7039..=7040
@@ -2612,10 +2612,10 @@ impl BlockWithShape for BlockState {
| 23398..=23399
| 23478..=23479
| 23558..=23559
- | 24910..=24911
- | 25321..=25322
- | 25732..=25733
- | 26143..=26144 => &SHAPE34,
+ | 24918..=24919
+ | 25329..=25330
+ | 25740..=25741
+ | 26151..=26152 => &SHAPE34,
2886..=2887
| 2928..=2929
| 4694..=4695
@@ -2720,14 +2720,14 @@ impl BlockWithShape for BlockState {
| 23522..=23523
| 23560..=23561
| 23602..=23603
- | 24912..=24913
- | 24954..=24955
- | 25323..=25324
- | 25365..=25366
- | 25734..=25735
- | 25776..=25777
- | 26145..=26146
- | 26187..=26188 => &SHAPE35,
+ | 24920..=24921
+ | 24962..=24963
+ | 25331..=25332
+ | 25373..=25374
+ | 25742..=25743
+ | 25784..=25785
+ | 26153..=26154
+ | 26195..=26196 => &SHAPE35,
2888..=2889
| 2946..=2947
| 4696..=4697
@@ -2832,14 +2832,14 @@ impl BlockWithShape for BlockState {
| 23540..=23541
| 23562..=23563
| 23620..=23621
- | 24914..=24915
- | 24972..=24973
- | 25325..=25326
- | 25383..=25384
- | 25736..=25737
- | 25794..=25795
- | 26147..=26148
- | 26205..=26206 => &SHAPE36,
+ | 24922..=24923
+ | 24980..=24981
+ | 25333..=25334
+ | 25391..=25392
+ | 25744..=25745
+ | 25802..=25803
+ | 26155..=26156
+ | 26213..=26214 => &SHAPE36,
2890..=2891
| 2932..=2933
| 4698..=4699
@@ -2944,14 +2944,14 @@ impl BlockWithShape for BlockState {
| 23526..=23527
| 23564..=23565
| 23606..=23607
- | 24916..=24917
- | 24958..=24959
- | 25327..=25328
- | 25369..=25370
- | 25738..=25739
- | 25780..=25781
- | 26149..=26150
- | 26191..=26192 => &SHAPE37,
+ | 24924..=24925
+ | 24966..=24967
+ | 25335..=25336
+ | 25377..=25378
+ | 25746..=25747
+ | 25788..=25789
+ | 26157..=26158
+ | 26199..=26200 => &SHAPE37,
2892..=2893
| 2950..=2951
| 4700..=4701
@@ -3056,14 +3056,14 @@ impl BlockWithShape for BlockState {
| 23544..=23545
| 23566..=23567
| 23624..=23625
- | 24918..=24919
- | 24976..=24977
- | 25329..=25330
- | 25387..=25388
- | 25740..=25741
- | 25798..=25799
- | 26151..=26152
- | 26209..=26210 => &SHAPE38,
+ | 24926..=24927
+ | 24984..=24985
+ | 25337..=25338
+ | 25395..=25396
+ | 25748..=25749
+ | 25806..=25807
+ | 26159..=26160
+ | 26217..=26218 => &SHAPE38,
2894..=2895
| 4702..=4703
| 7049..=7050
@@ -3116,10 +3116,10 @@ impl BlockWithShape for BlockState {
| 23408..=23409
| 23488..=23489
| 23568..=23569
- | 24920..=24921
- | 25331..=25332
- | 25742..=25743
- | 26153..=26154 => &SHAPE39,
+ | 24928..=24929
+ | 25339..=25340
+ | 25750..=25751
+ | 26161..=26162 => &SHAPE39,
2896..=2897
| 2938..=2939
| 4704..=4705
@@ -3224,14 +3224,14 @@ impl BlockWithShape for BlockState {
| 23532..=23533
| 23570..=23571
| 23612..=23613
- | 24922..=24923
- | 24964..=24965
- | 25333..=25334
- | 25375..=25376
- | 25744..=25745
- | 25786..=25787
- | 26155..=26156
- | 26197..=26198 => &SHAPE40,
+ | 24930..=24931
+ | 24972..=24973
+ | 25341..=25342
+ | 25383..=25384
+ | 25752..=25753
+ | 25794..=25795
+ | 26163..=26164
+ | 26205..=26206 => &SHAPE40,
2898..=2899
| 2916..=2917
| 4706..=4707
@@ -3336,14 +3336,14 @@ impl BlockWithShape for BlockState {
| 23510..=23511
| 23572..=23573
| 23590..=23591
- | 24924..=24925
- | 24942..=24943
- | 25335..=25336
- | 25353..=25354
- | 25746..=25747
- | 25764..=25765
- | 26157..=26158
- | 26175..=26176 => &SHAPE41,
+ | 24932..=24933
+ | 24950..=24951
+ | 25343..=25344
+ | 25361..=25362
+ | 25754..=25755
+ | 25772..=25773
+ | 26165..=26166
+ | 26183..=26184 => &SHAPE41,
2900..=2901
| 2942..=2943
| 4708..=4709
@@ -3448,14 +3448,14 @@ impl BlockWithShape for BlockState {
| 23536..=23537
| 23574..=23575
| 23616..=23617
- | 24926..=24927
- | 24968..=24969
- | 25337..=25338
- | 25379..=25380
- | 25748..=25749
- | 25790..=25791
- | 26159..=26160
- | 26201..=26202 => &SHAPE42,
+ | 24934..=24935
+ | 24976..=24977
+ | 25345..=25346
+ | 25387..=25388
+ | 25756..=25757
+ | 25798..=25799
+ | 26167..=26168
+ | 26209..=26210 => &SHAPE42,
2902..=2903
| 2920..=2921
| 4710..=4711
@@ -3560,14 +3560,14 @@ impl BlockWithShape for BlockState {
| 23514..=23515
| 23576..=23577
| 23594..=23595
- | 24928..=24929
- | 24946..=24947
- | 25339..=25340
- | 25357..=25358
- | 25750..=25751
- | 25768..=25769
- | 26161..=26162
- | 26179..=26180 => &SHAPE43,
+ | 24936..=24937
+ | 24954..=24955
+ | 25347..=25348
+ | 25365..=25366
+ | 25758..=25759
+ | 25776..=25777
+ | 26169..=26170
+ | 26187..=26188 => &SHAPE43,
2904..=2905
| 4712..=4713
| 7059..=7060
@@ -3620,10 +3620,10 @@ impl BlockWithShape for BlockState {
| 23418..=23419
| 23498..=23499
| 23578..=23579
- | 24930..=24931
- | 25341..=25342
- | 25752..=25753
- | 26163..=26164 => &SHAPE44,
+ | 24938..=24939
+ | 25349..=25350
+ | 25760..=25761
+ | 26171..=26172 => &SHAPE44,
2906..=2907
| 2948..=2949
| 4714..=4715
@@ -3728,14 +3728,14 @@ impl BlockWithShape for BlockState {
| 23542..=23543
| 23580..=23581
| 23622..=23623
- | 24932..=24933
- | 24974..=24975
- | 25343..=25344
- | 25385..=25386
- | 25754..=25755
- | 25796..=25797
- | 26165..=26166
- | 26207..=26208 => &SHAPE45,
+ | 24940..=24941
+ | 24982..=24983
+ | 25351..=25352
+ | 25393..=25394
+ | 25762..=25763
+ | 25804..=25805
+ | 26173..=26174
+ | 26215..=26216 => &SHAPE45,
2908..=2909
| 2926..=2927
| 4716..=4717
@@ -3840,14 +3840,14 @@ impl BlockWithShape for BlockState {
| 23520..=23521
| 23582..=23583
| 23600..=23601
- | 24934..=24935
- | 24952..=24953
- | 25345..=25346
- | 25363..=25364
- | 25756..=25757
- | 25774..=25775
- | 26167..=26168
- | 26185..=26186 => &SHAPE46,
+ | 24942..=24943
+ | 24960..=24961
+ | 25353..=25354
+ | 25371..=25372
+ | 25764..=25765
+ | 25782..=25783
+ | 26175..=26176
+ | 26193..=26194 => &SHAPE46,
2910..=2911
| 2952..=2953
| 4718..=4719
@@ -3952,14 +3952,14 @@ impl BlockWithShape for BlockState {
| 23546..=23547
| 23584..=23585
| 23626..=23627
- | 24936..=24937
- | 24978..=24979
- | 25347..=25348
- | 25389..=25390
- | 25758..=25759
- | 25800..=25801
- | 26169..=26170
- | 26211..=26212 => &SHAPE47,
+ | 24944..=24945
+ | 24986..=24987
+ | 25355..=25356
+ | 25397..=25398
+ | 25766..=25767
+ | 25808..=25809
+ | 26177..=26178
+ | 26219..=26220 => &SHAPE47,
2912..=2913
| 2930..=2931
| 4720..=4721
@@ -4064,14 +4064,14 @@ impl BlockWithShape for BlockState {
| 23524..=23525
| 23586..=23587
| 23604..=23605
- | 24938..=24939
- | 24956..=24957
- | 25349..=25350
- | 25367..=25368
- | 25760..=25761
- | 25778..=25779
- | 26171..=26172
- | 26189..=26190 => &SHAPE48,
+ | 24946..=24947
+ | 24964..=24965
+ | 25357..=25358
+ | 25375..=25376
+ | 25768..=25769
+ | 25786..=25787
+ | 26179..=26180
+ | 26197..=26198 => &SHAPE48,
2914..=2915
| 4722..=4723
| 7069..=7070
@@ -4124,10 +4124,10 @@ impl BlockWithShape for BlockState {
| 23428..=23429
| 23508..=23509
| 23588..=23589
- | 24940..=24941
- | 25351..=25352
- | 25762..=25763
- | 26173..=26174 => &SHAPE49,
+ | 24948..=24949
+ | 25359..=25360
+ | 25770..=25771
+ | 26181..=26182 => &SHAPE49,
2924..=2925
| 4732..=4733
| 7079..=7080
@@ -4180,10 +4180,10 @@ impl BlockWithShape for BlockState {
| 23438..=23439
| 23518..=23519
| 23598..=23599
- | 24950..=24951
- | 25361..=25362
- | 25772..=25773
- | 26183..=26184 => &SHAPE50,
+ | 24958..=24959
+ | 25369..=25370
+ | 25780..=25781
+ | 26191..=26192 => &SHAPE50,
2934..=2935
| 4742..=4743
| 7089..=7090
@@ -4236,10 +4236,10 @@ impl BlockWithShape for BlockState {
| 23448..=23449
| 23528..=23529
| 23608..=23609
- | 24960..=24961
- | 25371..=25372
- | 25782..=25783
- | 26193..=26194 => &SHAPE51,
+ | 24968..=24969
+ | 25379..=25380
+ | 25790..=25791
+ | 26201..=26202 => &SHAPE51,
2944..=2945
| 4752..=4753
| 7099..=7100
@@ -4292,10 +4292,10 @@ impl BlockWithShape for BlockState {
| 23458..=23459
| 23538..=23539
| 23618..=23619
- | 24970..=24971
- | 25381..=25382
- | 25792..=25793
- | 26203..=26204 => &SHAPE52,
+ | 24978..=24979
+ | 25389..=25390
+ | 25800..=25801
+ | 26211..=26212 => &SHAPE52,
2954..=2955
| 2960..=2961
| 2966..=2967
@@ -5183,12 +5183,12 @@ impl BlockWithShape for BlockState {
| 23636..=23637
| 23642..=23643
| 23648..=23649
- | 24982..=24983
- | 25393..=25394
- | 25804..=25805
- | 26215..=26216 => &SHAPE8,
+ | 24990..=24991
+ | 25401..=25402
+ | 25812..=25813
+ | 26223..=26224 => &SHAPE8,
5777 => &SHAPE60,
- 5779 | 5850 | 24895 => &SHAPE61,
+ 5779 | 5850 | 24903 => &SHAPE61,
5782..=5797 | 19445 => &SHAPE71,
5817 | 5819 | 7273 | 7275 | 11566 | 11568 | 11598 | 11600 | 11630 | 11632 | 11662
| 11664 | 11694 | 11696 | 11726 | 11728 | 11758 | 11760 | 11790 | 11792 | 18684
@@ -5623,7 +5623,7 @@ impl BlockWithShape for BlockState {
7398..=7405 => &SHAPE121,
7407..=7410 => &SHAPE122,
7411..=7414 => &SHAPE123,
- 7416 | 26566..=26581 => &SHAPE72,
+ 7416 | 26574..=26589 => &SHAPE72,
7419 => &SHAPE124,
7420 => &SHAPE125,
7421 => &SHAPE126,
@@ -5640,7 +5640,7 @@ impl BlockWithShape for BlockState {
| 15135 | 15456 | 15459 | 15780 | 15783 | 16104 | 16107 | 16428 | 16431 | 16752
| 16755 | 17076 | 17079 | 17400 | 17403 | 17724 | 17727 | 18048 | 18051 | 19541
| 19544 | 19961 | 19964 | 20398 | 20401 | 21168 | 21171 | 21579 | 21582 | 21991
- | 21994 | 24986 | 24989 | 25397 | 25400 | 25808 | 25811 | 26219 | 26222 => &SHAPE136,
+ | 21994 | 24994 | 24997 | 25405 | 25408 | 25816 | 25819 | 26227 | 26230 => &SHAPE136,
7920..=7921
| 7923..=7924
| 8244..=8245
@@ -5683,14 +5683,14 @@ impl BlockWithShape for BlockState {
| 21583..=21584
| 21992..=21993
| 21995..=21996
- | 24987..=24988
- | 24990..=24991
- | 25398..=25399
- | 25401..=25402
- | 25809..=25810
- | 25812..=25813
- | 26220..=26221
- | 26223..=26224 => &SHAPE137,
+ | 24995..=24996
+ | 24998..=24999
+ | 25406..=25407
+ | 25409..=25410
+ | 25817..=25818
+ | 25820..=25821
+ | 26228..=26229
+ | 26231..=26232 => &SHAPE137,
7926..=7927
| 7929..=7930
| 8250..=8251
@@ -5733,14 +5733,14 @@ impl BlockWithShape for BlockState {
| 21589..=21590
| 21998..=21999
| 22001..=22002
- | 24993..=24994
- | 24996..=24997
- | 25404..=25405
- | 25407..=25408
- | 25815..=25816
- | 25818..=25819
- | 26226..=26227
- | 26229..=26230 => &SHAPE138,
+ | 25001..=25002
+ | 25004..=25005
+ | 25412..=25413
+ | 25415..=25416
+ | 25823..=25824
+ | 25826..=25827
+ | 26234..=26235
+ | 26237..=26238 => &SHAPE138,
7931 | 7934 | 7943 | 7946 | 8255 | 8258 | 8267 | 8270 | 14172 | 14175 | 14184
| 14187 | 14496 | 14499 | 14508 | 14511 | 14820 | 14823 | 14832 | 14835 | 15144
| 15147 | 15156 | 15159 | 15468 | 15471 | 15480 | 15483 | 15792 | 15795 | 15804
@@ -5749,8 +5749,8 @@ impl BlockWithShape for BlockState {
| 17427 | 17736 | 17739 | 17748 | 17751 | 18060 | 18063 | 18072 | 18075 | 19553
| 19556 | 19565 | 19568 | 19973 | 19976 | 19985 | 19988 | 20410 | 20413 | 20422
| 20425 | 21180 | 21183 | 21192 | 21195 | 21591 | 21594 | 21603 | 21606 | 22003
- | 22006 | 22015 | 22018 | 24998 | 25001 | 25010 | 25013 | 25409 | 25412 | 25421
- | 25424 | 25820 | 25823 | 25832 | 25835 | 26231 | 26234 | 26243 | 26246 => &SHAPE139,
+ | 22006 | 22015 | 22018 | 25006 | 25009 | 25018 | 25021 | 25417 | 25420 | 25429
+ | 25432 | 25828 | 25831 | 25840 | 25843 | 26239 | 26242 | 26251 | 26254 => &SHAPE139,
7932..=7933
| 7935..=7936
| 7944..=7945
@@ -5835,22 +5835,22 @@ impl BlockWithShape for BlockState {
| 22007..=22008
| 22016..=22017
| 22019..=22020
- | 24999..=25000
- | 25002..=25003
- | 25011..=25012
- | 25014..=25015
- | 25410..=25411
- | 25413..=25414
- | 25422..=25423
- | 25425..=25426
- | 25821..=25822
- | 25824..=25825
- | 25833..=25834
- | 25836..=25837
- | 26232..=26233
- | 26235..=26236
- | 26244..=26245
- | 26247..=26248 => &SHAPE140,
+ | 25007..=25008
+ | 25010..=25011
+ | 25019..=25020
+ | 25022..=25023
+ | 25418..=25419
+ | 25421..=25422
+ | 25430..=25431
+ | 25433..=25434
+ | 25829..=25830
+ | 25832..=25833
+ | 25841..=25842
+ | 25844..=25845
+ | 26240..=26241
+ | 26243..=26244
+ | 26252..=26253
+ | 26255..=26256 => &SHAPE140,
7937 | 7940 | 7949 | 7952 | 8261 | 8264 | 8273 | 8276 | 14178 | 14181 | 14190
| 14193 | 14502 | 14505 | 14514 | 14517 | 14826 | 14829 | 14838 | 14841 | 15150
| 15153 | 15162 | 15165 | 15474 | 15477 | 15486 | 15489 | 15798 | 15801 | 15810
@@ -5859,8 +5859,8 @@ impl BlockWithShape for BlockState {
| 17433 | 17742 | 17745 | 17754 | 17757 | 18066 | 18069 | 18078 | 18081 | 19559
| 19562 | 19571 | 19574 | 19979 | 19982 | 19991 | 19994 | 20416 | 20419 | 20428
| 20431 | 21186 | 21189 | 21198 | 21201 | 21597 | 21600 | 21609 | 21612 | 22009
- | 22012 | 22021 | 22024 | 25004 | 25007 | 25016 | 25019 | 25415 | 25418 | 25427
- | 25430 | 25826 | 25829 | 25838 | 25841 | 26237 | 26240 | 26249 | 26252 => &SHAPE141,
+ | 22012 | 22021 | 22024 | 25012 | 25015 | 25024 | 25027 | 25423 | 25426 | 25435
+ | 25438 | 25834 | 25837 | 25846 | 25849 | 26245 | 26248 | 26257 | 26260 => &SHAPE141,
7938..=7939
| 7941..=7942
| 7950..=7951
@@ -5945,22 +5945,22 @@ impl BlockWithShape for BlockState {
| 22013..=22014
| 22022..=22023
| 22025..=22026
- | 25005..=25006
- | 25008..=25009
- | 25017..=25018
- | 25020..=25021
- | 25416..=25417
- | 25419..=25420
- | 25428..=25429
- | 25431..=25432
- | 25827..=25828
- | 25830..=25831
- | 25839..=25840
- | 25842..=25843
- | 26238..=26239
- | 26241..=26242
- | 26250..=26251
- | 26253..=26254 => &SHAPE142,
+ | 25013..=25014
+ | 25016..=25017
+ | 25025..=25026
+ | 25028..=25029
+ | 25424..=25425
+ | 25427..=25428
+ | 25436..=25437
+ | 25439..=25440
+ | 25835..=25836
+ | 25838..=25839
+ | 25847..=25848
+ | 25850..=25851
+ | 26246..=26247
+ | 26249..=26250
+ | 26258..=26259
+ | 26261..=26262 => &SHAPE142,
7955 | 7958 | 7991 | 7994 | 8279 | 8282 | 8315 | 8318 | 14196 | 14199 | 14232
| 14235 | 14520 | 14523 | 14556 | 14559 | 14844 | 14847 | 14880 | 14883 | 15168
| 15171 | 15204 | 15207 | 15492 | 15495 | 15528 | 15531 | 15816 | 15819 | 15852
@@ -5969,8 +5969,8 @@ impl BlockWithShape for BlockState {
| 17475 | 17760 | 17763 | 17796 | 17799 | 18084 | 18087 | 18120 | 18123 | 19577
| 19580 | 19613 | 19616 | 19997 | 20000 | 20033 | 20036 | 20434 | 20437 | 20470
| 20473 | 21204 | 21207 | 21240 | 21243 | 21615 | 21618 | 21651 | 21654 | 22027
- | 22030 | 22063 | 22066 | 25022 | 25025 | 25058 | 25061 | 25433 | 25436 | 25469
- | 25472 | 25844 | 25847 | 25880 | 25883 | 26255 | 26258 | 26291 | 26294 => &SHAPE143,
+ | 22030 | 22063 | 22066 | 25030 | 25033 | 25066 | 25069 | 25441 | 25444 | 25477
+ | 25480 | 25852 | 25855 | 25888 | 25891 | 26263 | 26266 | 26299 | 26302 => &SHAPE143,
7956..=7957
| 7959..=7960
| 7992..=7993
@@ -6055,22 +6055,22 @@ impl BlockWithShape for BlockState {
| 22031..=22032
| 22064..=22065
| 22067..=22068
- | 25023..=25024
- | 25026..=25027
- | 25059..=25060
- | 25062..=25063
- | 25434..=25435
- | 25437..=25438
- | 25470..=25471
- | 25473..=25474
- | 25845..=25846
- | 25848..=25849
- | 25881..=25882
- | 25884..=25885
- | 26256..=26257
- | 26259..=26260
- | 26292..=26293
- | 26295..=26296 => &SHAPE144,
+ | 25031..=25032
+ | 25034..=25035
+ | 25067..=25068
+ | 25070..=25071
+ | 25442..=25443
+ | 25445..=25446
+ | 25478..=25479
+ | 25481..=25482
+ | 25853..=25854
+ | 25856..=25857
+ | 25889..=25890
+ | 25892..=25893
+ | 26264..=26265
+ | 26267..=26268
+ | 26300..=26301
+ | 26303..=26304 => &SHAPE144,
7961 | 7964 | 7997 | 8000 | 8285 | 8288 | 8321 | 8324 | 14202 | 14205 | 14238
| 14241 | 14526 | 14529 | 14562 | 14565 | 14850 | 14853 | 14886 | 14889 | 15174
| 15177 | 15210 | 15213 | 15498 | 15501 | 15534 | 15537 | 15822 | 15825 | 15858
@@ -6079,8 +6079,8 @@ impl BlockWithShape for BlockState {
| 17481 | 17766 | 17769 | 17802 | 17805 | 18090 | 18093 | 18126 | 18129 | 19583
| 19586 | 19619 | 19622 | 20003 | 20006 | 20039 | 20042 | 20440 | 20443 | 20476
| 20479 | 21210 | 21213 | 21246 | 21249 | 21621 | 21624 | 21657 | 21660 | 22033
- | 22036 | 22069 | 22072 | 25028 | 25031 | 25064 | 25067 | 25439 | 25442 | 25475
- | 25478 | 25850 | 25853 | 25886 | 25889 | 26261 | 26264 | 26297 | 26300 => &SHAPE145,
+ | 22036 | 22069 | 22072 | 25036 | 25039 | 25072 | 25075 | 25447 | 25450 | 25483
+ | 25486 | 25858 | 25861 | 25894 | 25897 | 26269 | 26272 | 26305 | 26308 => &SHAPE145,
7962..=7963
| 7965..=7966
| 7998..=7999
@@ -6165,22 +6165,22 @@ impl BlockWithShape for BlockState {
| 22037..=22038
| 22070..=22071
| 22073..=22074
- | 25029..=25030
- | 25032..=25033
- | 25065..=25066
- | 25068..=25069
- | 25440..=25441
- | 25443..=25444
- | 25476..=25477
- | 25479..=25480
- | 25851..=25852
- | 25854..=25855
- | 25887..=25888
- | 25890..=25891
- | 26262..=26263
- | 26265..=26266
- | 26298..=26299
- | 26301..=26302 => &SHAPE146,
+ | 25037..=25038
+ | 25040..=25041
+ | 25073..=25074
+ | 25076..=25077
+ | 25448..=25449
+ | 25451..=25452
+ | 25484..=25485
+ | 25487..=25488
+ | 25859..=25860
+ | 25862..=25863
+ | 25895..=25896
+ | 25898..=25899
+ | 26270..=26271
+ | 26273..=26274
+ | 26306..=26307
+ | 26309..=26310 => &SHAPE146,
7967 | 7970 | 7979 | 7982 | 8003 | 8006 | 8015 | 8018 | 8291 | 8294 | 8303 | 8306
| 8327 | 8330 | 8339 | 8342 | 14208 | 14211 | 14220 | 14223 | 14244 | 14247 | 14256
| 14259 | 14532 | 14535 | 14544 | 14547 | 14568 | 14571 | 14580 | 14583 | 14856
@@ -6197,10 +6197,10 @@ impl BlockWithShape for BlockState {
| 20048 | 20057 | 20060 | 20446 | 20449 | 20458 | 20461 | 20482 | 20485 | 20494
| 20497 | 21216 | 21219 | 21228 | 21231 | 21252 | 21255 | 21264 | 21267 | 21627
| 21630 | 21639 | 21642 | 21663 | 21666 | 21675 | 21678 | 22039 | 22042 | 22051
- | 22054 | 22075 | 22078 | 22087 | 22090 | 25034 | 25037 | 25046 | 25049 | 25070
- | 25073 | 25082 | 25085 | 25445 | 25448 | 25457 | 25460 | 25481 | 25484 | 25493
- | 25496 | 25856 | 25859 | 25868 | 25871 | 25892 | 25895 | 25904 | 25907 | 26267
- | 26270 | 26279 | 26282 | 26303 | 26306 | 26315 | 26318 => &SHAPE147,
+ | 22054 | 22075 | 22078 | 22087 | 22090 | 25042 | 25045 | 25054 | 25057 | 25078
+ | 25081 | 25090 | 25093 | 25453 | 25456 | 25465 | 25468 | 25489 | 25492 | 25501
+ | 25504 | 25864 | 25867 | 25876 | 25879 | 25900 | 25903 | 25912 | 25915 | 26275
+ | 26278 | 26287 | 26290 | 26311 | 26314 | 26323 | 26326 => &SHAPE147,
7968..=7969
| 7971..=7972
| 7980..=7981
@@ -6369,38 +6369,38 @@ impl BlockWithShape for BlockState {
| 22079..=22080
| 22088..=22089
| 22091..=22092
- | 25035..=25036
- | 25038..=25039
- | 25047..=25048
- | 25050..=25051
- | 25071..=25072
- | 25074..=25075
- | 25083..=25084
- | 25086..=25087
- | 25446..=25447
- | 25449..=25450
- | 25458..=25459
- | 25461..=25462
- | 25482..=25483
- | 25485..=25486
- | 25494..=25495
- | 25497..=25498
- | 25857..=25858
- | 25860..=25861
- | 25869..=25870
- | 25872..=25873
- | 25893..=25894
- | 25896..=25897
- | 25905..=25906
- | 25908..=25909
- | 26268..=26269
- | 26271..=26272
- | 26280..=26281
- | 26283..=26284
- | 26304..=26305
- | 26307..=26308
- | 26316..=26317
- | 26319..=26320 => &SHAPE148,
+ | 25043..=25044
+ | 25046..=25047
+ | 25055..=25056
+ | 25058..=25059
+ | 25079..=25080
+ | 25082..=25083
+ | 25091..=25092
+ | 25094..=25095
+ | 25454..=25455
+ | 25457..=25458
+ | 25466..=25467
+ | 25469..=25470
+ | 25490..=25491
+ | 25493..=25494
+ | 25502..=25503
+ | 25505..=25506
+ | 25865..=25866
+ | 25868..=25869
+ | 25877..=25878
+ | 25880..=25881
+ | 25901..=25902
+ | 25904..=25905
+ | 25913..=25914
+ | 25916..=25917
+ | 26276..=26277
+ | 26279..=26280
+ | 26288..=26289
+ | 26291..=26292
+ | 26312..=26313
+ | 26315..=26316
+ | 26324..=26325
+ | 26327..=26328 => &SHAPE148,
7973 | 7976 | 7985 | 7988 | 8009 | 8012 | 8021 | 8024 | 8297 | 8300 | 8309 | 8312
| 8333 | 8336 | 8345 | 8348 | 14214 | 14217 | 14226 | 14229 | 14250 | 14253 | 14262
| 14265 | 14538 | 14541 | 14550 | 14553 | 14574 | 14577 | 14586 | 14589 | 14862
@@ -6417,10 +6417,10 @@ impl BlockWithShape for BlockState {
| 20054 | 20063 | 20066 | 20452 | 20455 | 20464 | 20467 | 20488 | 20491 | 20500
| 20503 | 21222 | 21225 | 21234 | 21237 | 21258 | 21261 | 21270 | 21273 | 21633
| 21636 | 21645 | 21648 | 21669 | 21672 | 21681 | 21684 | 22045 | 22048 | 22057
- | 22060 | 22081 | 22084 | 22093 | 22096 | 25040 | 25043 | 25052 | 25055 | 25076
- | 25079 | 25088 | 25091 | 25451 | 25454 | 25463 | 25466 | 25487 | 25490 | 25499
- | 25502 | 25862 | 25865 | 25874 | 25877 | 25898 | 25901 | 25910 | 25913 | 26273
- | 26276 | 26285 | 26288 | 26309 | 26312 | 26321 | 26324 => &SHAPE149,
+ | 22060 | 22081 | 22084 | 22093 | 22096 | 25048 | 25051 | 25060 | 25063 | 25084
+ | 25087 | 25096 | 25099 | 25459 | 25462 | 25471 | 25474 | 25495 | 25498 | 25507
+ | 25510 | 25870 | 25873 | 25882 | 25885 | 25906 | 25909 | 25918 | 25921 | 26281
+ | 26284 | 26293 | 26296 | 26317 | 26320 | 26329 | 26332 => &SHAPE149,
7974..=7975
| 7977..=7978
| 7986..=7987
@@ -6589,38 +6589,38 @@ impl BlockWithShape for BlockState {
| 22085..=22086
| 22094..=22095
| 22097..=22098
- | 25041..=25042
- | 25044..=25045
- | 25053..=25054
- | 25056..=25057
- | 25077..=25078
- | 25080..=25081
- | 25089..=25090
- | 25092..=25093
- | 25452..=25453
- | 25455..=25456
- | 25464..=25465
- | 25467..=25468
- | 25488..=25489
- | 25491..=25492
- | 25500..=25501
- | 25503..=25504
- | 25863..=25864
- | 25866..=25867
- | 25875..=25876
- | 25878..=25879
- | 25899..=25900
- | 25902..=25903
- | 25911..=25912
- | 25914..=25915
- | 26274..=26275
- | 26277..=26278
- | 26286..=26287
- | 26289..=26290
- | 26310..=26311
- | 26313..=26314
- | 26322..=26323
- | 26325..=26326 => &SHAPE150,
+ | 25049..=25050
+ | 25052..=25053
+ | 25061..=25062
+ | 25064..=25065
+ | 25085..=25086
+ | 25088..=25089
+ | 25097..=25098
+ | 25100..=25101
+ | 25460..=25461
+ | 25463..=25464
+ | 25472..=25473
+ | 25475..=25476
+ | 25496..=25497
+ | 25499..=25500
+ | 25508..=25509
+ | 25511..=25512
+ | 25871..=25872
+ | 25874..=25875
+ | 25883..=25884
+ | 25886..=25887
+ | 25907..=25908
+ | 25910..=25911
+ | 25919..=25920
+ | 25922..=25923
+ | 26282..=26283
+ | 26285..=26286
+ | 26294..=26295
+ | 26297..=26298
+ | 26318..=26319
+ | 26321..=26322
+ | 26330..=26331
+ | 26333..=26334 => &SHAPE150,
8027 | 8030 | 8135 | 8138 | 8351 | 8354 | 8459 | 8462 | 14268 | 14271 | 14376
| 14379 | 14592 | 14595 | 14700 | 14703 | 14916 | 14919 | 15024 | 15027 | 15240
| 15243 | 15348 | 15351 | 15564 | 15567 | 15672 | 15675 | 15888 | 15891 | 15996
@@ -6629,8 +6629,8 @@ impl BlockWithShape for BlockState {
| 17619 | 17832 | 17835 | 17940 | 17943 | 18156 | 18159 | 18264 | 18267 | 19649
| 19652 | 19757 | 19760 | 20069 | 20072 | 20177 | 20180 | 20506 | 20509 | 20614
| 20617 | 21276 | 21279 | 21384 | 21387 | 21687 | 21690 | 21795 | 21798 | 22099
- | 22102 | 22207 | 22210 | 25094 | 25097 | 25202 | 25205 | 25505 | 25508 | 25613
- | 25616 | 25916 | 25919 | 26024 | 26027 | 26327 | 26330 | 26435 | 26438 => &SHAPE151,
+ | 22102 | 22207 | 22210 | 25102 | 25105 | 25210 | 25213 | 25513 | 25516 | 25621
+ | 25624 | 25924 | 25927 | 26032 | 26035 | 26335 | 26338 | 26443 | 26446 => &SHAPE151,
8028..=8029
| 8031..=8032
| 8136..=8137
@@ -6715,22 +6715,22 @@ impl BlockWithShape for BlockState {
| 22103..=22104
| 22208..=22209
| 22211..=22212
- | 25095..=25096
- | 25098..=25099
- | 25203..=25204
- | 25206..=25207
- | 25506..=25507
- | 25509..=25510
- | 25614..=25615
- | 25617..=25618
- | 25917..=25918
- | 25920..=25921
- | 26025..=26026
- | 26028..=26029
- | 26328..=26329
- | 26331..=26332
- | 26436..=26437
- | 26439..=26440 => &SHAPE152,
+ | 25103..=25104
+ | 25106..=25107
+ | 25211..=25212
+ | 25214..=25215
+ | 25514..=25515
+ | 25517..=25518
+ | 25622..=25623
+ | 25625..=25626
+ | 25925..=25926
+ | 25928..=25929
+ | 26033..=26034
+ | 26036..=26037
+ | 26336..=26337
+ | 26339..=26340
+ | 26444..=26445
+ | 26447..=26448 => &SHAPE152,
8033 | 8036 | 8141 | 8144 | 8357 | 8360 | 8465 | 8468 | 14274 | 14277 | 14382
| 14385 | 14598 | 14601 | 14706 | 14709 | 14922 | 14925 | 15030 | 15033 | 15246
| 15249 | 15354 | 15357 | 15570 | 15573 | 15678 | 15681 | 15894 | 15897 | 16002
@@ -6739,8 +6739,8 @@ impl BlockWithShape for BlockState {
| 17625 | 17838 | 17841 | 17946 | 17949 | 18162 | 18165 | 18270 | 18273 | 19655
| 19658 | 19763 | 19766 | 20075 | 20078 | 20183 | 20186 | 20512 | 20515 | 20620
| 20623 | 21282 | 21285 | 21390 | 21393 | 21693 | 21696 | 21801 | 21804 | 22105
- | 22108 | 22213 | 22216 | 25100 | 25103 | 25208 | 25211 | 25511 | 25514 | 25619
- | 25622 | 25922 | 25925 | 26030 | 26033 | 26333 | 26336 | 26441 | 26444 => &SHAPE153,
+ | 22108 | 22213 | 22216 | 25108 | 25111 | 25216 | 25219 | 25519 | 25522 | 25627
+ | 25630 | 25930 | 25933 | 26038 | 26041 | 26341 | 26344 | 26449 | 26452 => &SHAPE153,
8034..=8035
| 8037..=8038
| 8142..=8143
@@ -6825,22 +6825,22 @@ impl BlockWithShape for BlockState {
| 22109..=22110
| 22214..=22215
| 22217..=22218
- | 25101..=25102
- | 25104..=25105
- | 25209..=25210
- | 25212..=25213
- | 25512..=25513
- | 25515..=25516
- | 25620..=25621
- | 25623..=25624
- | 25923..=25924
- | 25926..=25927
- | 26031..=26032
- | 26034..=26035
- | 26334..=26335
- | 26337..=26338
- | 26442..=26443
- | 26445..=26446 => &SHAPE154,
+ | 25109..=25110
+ | 25112..=25113
+ | 25217..=25218
+ | 25220..=25221
+ | 25520..=25521
+ | 25523..=25524
+ | 25628..=25629
+ | 25631..=25632
+ | 25931..=25932
+ | 25934..=25935
+ | 26039..=26040
+ | 26042..=26043
+ | 26342..=26343
+ | 26345..=26346
+ | 26450..=26451
+ | 26453..=26454 => &SHAPE154,
8039 | 8042 | 8051 | 8054 | 8147 | 8150 | 8159 | 8162 | 8363 | 8366 | 8375 | 8378
| 8471 | 8474 | 8483 | 8486 | 14280 | 14283 | 14292 | 14295 | 14388 | 14391 | 14400
| 14403 | 14604 | 14607 | 14616 | 14619 | 14712 | 14715 | 14724 | 14727 | 14928
@@ -6857,10 +6857,10 @@ impl BlockWithShape for BlockState {
| 20192 | 20201 | 20204 | 20518 | 20521 | 20530 | 20533 | 20626 | 20629 | 20638
| 20641 | 21288 | 21291 | 21300 | 21303 | 21396 | 21399 | 21408 | 21411 | 21699
| 21702 | 21711 | 21714 | 21807 | 21810 | 21819 | 21822 | 22111 | 22114 | 22123
- | 22126 | 22219 | 22222 | 22231 | 22234 | 25106 | 25109 | 25118 | 25121 | 25214
- | 25217 | 25226 | 25229 | 25517 | 25520 | 25529 | 25532 | 25625 | 25628 | 25637
- | 25640 | 25928 | 25931 | 25940 | 25943 | 26036 | 26039 | 26048 | 26051 | 26339
- | 26342 | 26351 | 26354 | 26447 | 26450 | 26459 | 26462 => &SHAPE155,
+ | 22126 | 22219 | 22222 | 22231 | 22234 | 25114 | 25117 | 25126 | 25129 | 25222
+ | 25225 | 25234 | 25237 | 25525 | 25528 | 25537 | 25540 | 25633 | 25636 | 25645
+ | 25648 | 25936 | 25939 | 25948 | 25951 | 26044 | 26047 | 26056 | 26059 | 26347
+ | 26350 | 26359 | 26362 | 26455 | 26458 | 26467 | 26470 => &SHAPE155,
8040..=8041
| 8043..=8044
| 8052..=8053
@@ -7029,38 +7029,38 @@ impl BlockWithShape for BlockState {
| 22223..=22224
| 22232..=22233
| 22235..=22236
- | 25107..=25108
- | 25110..=25111
- | 25119..=25120
- | 25122..=25123
- | 25215..=25216
- | 25218..=25219
- | 25227..=25228
- | 25230..=25231
- | 25518..=25519
- | 25521..=25522
- | 25530..=25531
- | 25533..=25534
- | 25626..=25627
- | 25629..=25630
- | 25638..=25639
- | 25641..=25642
- | 25929..=25930
- | 25932..=25933
- | 25941..=25942
- | 25944..=25945
- | 26037..=26038
- | 26040..=26041
- | 26049..=26050
- | 26052..=26053
- | 26340..=26341
- | 26343..=26344
- | 26352..=26353
- | 26355..=26356
- | 26448..=26449
- | 26451..=26452
- | 26460..=26461
- | 26463..=26464 => &SHAPE156,
+ | 25115..=25116
+ | 25118..=25119
+ | 25127..=25128
+ | 25130..=25131
+ | 25223..=25224
+ | 25226..=25227
+ | 25235..=25236
+ | 25238..=25239
+ | 25526..=25527
+ | 25529..=25530
+ | 25538..=25539
+ | 25541..=25542
+ | 25634..=25635
+ | 25637..=25638
+ | 25646..=25647
+ | 25649..=25650
+ | 25937..=25938
+ | 25940..=25941
+ | 25949..=25950
+ | 25952..=25953
+ | 26045..=26046
+ | 26048..=26049
+ | 26057..=26058
+ | 26060..=26061
+ | 26348..=26349
+ | 26351..=26352
+ | 26360..=26361
+ | 26363..=26364
+ | 26456..=26457
+ | 26459..=26460
+ | 26468..=26469
+ | 26471..=26472 => &SHAPE156,
8045 | 8048 | 8057 | 8060 | 8153 | 8156 | 8165 | 8168 | 8369 | 8372 | 8381 | 8384
| 8477 | 8480 | 8489 | 8492 | 14286 | 14289 | 14298 | 14301 | 14394 | 14397 | 14406
| 14409 | 14610 | 14613 | 14622 | 14625 | 14718 | 14721 | 14730 | 14733 | 14934
@@ -7077,10 +7077,10 @@ impl BlockWithShape for BlockState {
| 20198 | 20207 | 20210 | 20524 | 20527 | 20536 | 20539 | 20632 | 20635 | 20644
| 20647 | 21294 | 21297 | 21306 | 21309 | 21402 | 21405 | 21414 | 21417 | 21705
| 21708 | 21717 | 21720 | 21813 | 21816 | 21825 | 21828 | 22117 | 22120 | 22129
- | 22132 | 22225 | 22228 | 22237 | 22240 | 25112 | 25115 | 25124 | 25127 | 25220
- | 25223 | 25232 | 25235 | 25523 | 25526 | 25535 | 25538 | 25631 | 25634 | 25643
- | 25646 | 25934 | 25937 | 25946 | 25949 | 26042 | 26045 | 26054 | 26057 | 26345
- | 26348 | 26357 | 26360 | 26453 | 26456 | 26465 | 26468 => &SHAPE157,
+ | 22132 | 22225 | 22228 | 22237 | 22240 | 25120 | 25123 | 25132 | 25135 | 25228
+ | 25231 | 25240 | 25243 | 25531 | 25534 | 25543 | 25546 | 25639 | 25642 | 25651
+ | 25654 | 25942 | 25945 | 25954 | 25957 | 26050 | 26053 | 26062 | 26065 | 26353
+ | 26356 | 26365 | 26368 | 26461 | 26464 | 26473 | 26476 => &SHAPE157,
8046..=8047
| 8049..=8050
| 8058..=8059
@@ -7249,38 +7249,38 @@ impl BlockWithShape for BlockState {
| 22229..=22230
| 22238..=22239
| 22241..=22242
- | 25113..=25114
- | 25116..=25117
- | 25125..=25126
- | 25128..=25129
- | 25221..=25222
- | 25224..=25225
- | 25233..=25234
- | 25236..=25237
- | 25524..=25525
- | 25527..=25528
- | 25536..=25537
- | 25539..=25540
- | 25632..=25633
- | 25635..=25636
- | 25644..=25645
- | 25647..=25648
- | 25935..=25936
- | 25938..=25939
- | 25947..=25948
- | 25950..=25951
- | 26043..=26044
- | 26046..=26047
- | 26055..=26056
- | 26058..=26059
- | 26346..=26347
- | 26349..=26350
- | 26358..=26359
- | 26361..=26362
- | 26454..=26455
- | 26457..=26458
- | 26466..=26467
- | 26469..=26470 => &SHAPE158,
+ | 25121..=25122
+ | 25124..=25125
+ | 25133..=25134
+ | 25136..=25137
+ | 25229..=25230
+ | 25232..=25233
+ | 25241..=25242
+ | 25244..=25245
+ | 25532..=25533
+ | 25535..=25536
+ | 25544..=25545
+ | 25547..=25548
+ | 25640..=25641
+ | 25643..=25644
+ | 25652..=25653
+ | 25655..=25656
+ | 25943..=25944
+ | 25946..=25947
+ | 25955..=25956
+ | 25958..=25959
+ | 26051..=26052
+ | 26054..=26055
+ | 26063..=26064
+ | 26066..=26067
+ | 26354..=26355
+ | 26357..=26358
+ | 26366..=26367
+ | 26369..=26370
+ | 26462..=26463
+ | 26465..=26466
+ | 26474..=26475
+ | 26477..=26478 => &SHAPE158,
8063 | 8066 | 8099 | 8102 | 8171 | 8174 | 8207 | 8210 | 8387 | 8390 | 8423 | 8426
| 8495 | 8498 | 8531 | 8534 | 14304 | 14307 | 14340 | 14343 | 14412 | 14415 | 14448
| 14451 | 14628 | 14631 | 14664 | 14667 | 14736 | 14739 | 14772 | 14775 | 14952
@@ -7297,10 +7297,10 @@ impl BlockWithShape for BlockState {
| 20216 | 20249 | 20252 | 20542 | 20545 | 20578 | 20581 | 20650 | 20653 | 20686
| 20689 | 21312 | 21315 | 21348 | 21351 | 21420 | 21423 | 21456 | 21459 | 21723
| 21726 | 21759 | 21762 | 21831 | 21834 | 21867 | 21870 | 22135 | 22138 | 22171
- | 22174 | 22243 | 22246 | 22279 | 22282 | 25130 | 25133 | 25166 | 25169 | 25238
- | 25241 | 25274 | 25277 | 25541 | 25544 | 25577 | 25580 | 25649 | 25652 | 25685
- | 25688 | 25952 | 25955 | 25988 | 25991 | 26060 | 26063 | 26096 | 26099 | 26363
- | 26366 | 26399 | 26402 | 26471 | 26474 | 26507 | 26510 => &SHAPE159,
+ | 22174 | 22243 | 22246 | 22279 | 22282 | 25138 | 25141 | 25174 | 25177 | 25246
+ | 25249 | 25282 | 25285 | 25549 | 25552 | 25585 | 25588 | 25657 | 25660 | 25693
+ | 25696 | 25960 | 25963 | 25996 | 25999 | 26068 | 26071 | 26104 | 26107 | 26371
+ | 26374 | 26407 | 26410 | 26479 | 26482 | 26515 | 26518 => &SHAPE159,
8064..=8065
| 8067..=8068
| 8100..=8101
@@ -7469,38 +7469,38 @@ impl BlockWithShape for BlockState {
| 22247..=22248
| 22280..=22281
| 22283..=22284
- | 25131..=25132
- | 25134..=25135
- | 25167..=25168
- | 25170..=25171
- | 25239..=25240
- | 25242..=25243
- | 25275..=25276
- | 25278..=25279
- | 25542..=25543
- | 25545..=25546
- | 25578..=25579
- | 25581..=25582
- | 25650..=25651
- | 25653..=25654
- | 25686..=25687
- | 25689..=25690
- | 25953..=25954
- | 25956..=25957
- | 25989..=25990
- | 25992..=25993
- | 26061..=26062
- | 26064..=26065
- | 26097..=26098
- | 26100..=26101
- | 26364..=26365
- | 26367..=26368
- | 26400..=26401
- | 26403..=26404
- | 26472..=26473
- | 26475..=26476
- | 26508..=26509
- | 26511..=26512 => &SHAPE160,
+ | 25139..=25140
+ | 25142..=25143
+ | 25175..=25176
+ | 25178..=25179
+ | 25247..=25248
+ | 25250..=25251
+ | 25283..=25284
+ | 25286..=25287
+ | 25550..=25551
+ | 25553..=25554
+ | 25586..=25587
+ | 25589..=25590
+ | 25658..=25659
+ | 25661..=25662
+ | 25694..=25695
+ | 25697..=25698
+ | 25961..=25962
+ | 25964..=25965
+ | 25997..=25998
+ | 26000..=26001
+ | 26069..=26070
+ | 26072..=26073
+ | 26105..=26106
+ | 26108..=26109
+ | 26372..=26373
+ | 26375..=26376
+ | 26408..=26409
+ | 26411..=26412
+ | 26480..=26481
+ | 26483..=26484
+ | 26516..=26517
+ | 26519..=26520 => &SHAPE160,
8069 | 8072 | 8105 | 8108 | 8177 | 8180 | 8213 | 8216 | 8393 | 8396 | 8429 | 8432
| 8501 | 8504 | 8537 | 8540 | 14310 | 14313 | 14346 | 14349 | 14418 | 14421 | 14454
| 14457 | 14634 | 14637 | 14670 | 14673 | 14742 | 14745 | 14778 | 14781 | 14958
@@ -7517,10 +7517,10 @@ impl BlockWithShape for BlockState {
| 20222 | 20255 | 20258 | 20548 | 20551 | 20584 | 20587 | 20656 | 20659 | 20692
| 20695 | 21318 | 21321 | 21354 | 21357 | 21426 | 21429 | 21462 | 21465 | 21729
| 21732 | 21765 | 21768 | 21837 | 21840 | 21873 | 21876 | 22141 | 22144 | 22177
- | 22180 | 22249 | 22252 | 22285 | 22288 | 25136 | 25139 | 25172 | 25175 | 25244
- | 25247 | 25280 | 25283 | 25547 | 25550 | 25583 | 25586 | 25655 | 25658 | 25691
- | 25694 | 25958 | 25961 | 25994 | 25997 | 26066 | 26069 | 26102 | 26105 | 26369
- | 26372 | 26405 | 26408 | 26477 | 26480 | 26513 | 26516 => &SHAPE161,
+ | 22180 | 22249 | 22252 | 22285 | 22288 | 25144 | 25147 | 25180 | 25183 | 25252
+ | 25255 | 25288 | 25291 | 25555 | 25558 | 25591 | 25594 | 25663 | 25666 | 25699
+ | 25702 | 25966 | 25969 | 26002 | 26005 | 26074 | 26077 | 26110 | 26113 | 26377
+ | 26380 | 26413 | 26416 | 26485 | 26488 | 26521 | 26524 => &SHAPE161,
8070..=8071
| 8073..=8074
| 8106..=8107
@@ -7689,38 +7689,38 @@ impl BlockWithShape for BlockState {
| 22253..=22254
| 22286..=22287
| 22289..=22290
- | 25137..=25138
- | 25140..=25141
- | 25173..=25174
- | 25176..=25177
- | 25245..=25246
- | 25248..=25249
- | 25281..=25282
- | 25284..=25285
- | 25548..=25549
- | 25551..=25552
- | 25584..=25585
- | 25587..=25588
- | 25656..=25657
- | 25659..=25660
- | 25692..=25693
- | 25695..=25696
- | 25959..=25960
- | 25962..=25963
- | 25995..=25996
- | 25998..=25999
- | 26067..=26068
- | 26070..=26071
- | 26103..=26104
- | 26106..=26107
- | 26370..=26371
- | 26373..=26374
- | 26406..=26407
- | 26409..=26410
- | 26478..=26479
- | 26481..=26482
- | 26514..=26515
- | 26517..=26518 => &SHAPE162,
+ | 25145..=25146
+ | 25148..=25149
+ | 25181..=25182
+ | 25184..=25185
+ | 25253..=25254
+ | 25256..=25257
+ | 25289..=25290
+ | 25292..=25293
+ | 25556..=25557
+ | 25559..=25560
+ | 25592..=25593
+ | 25595..=25596
+ | 25664..=25665
+ | 25667..=25668
+ | 25700..=25701
+ | 25703..=25704
+ | 25967..=25968
+ | 25970..=25971
+ | 26003..=26004
+ | 26006..=26007
+ | 26075..=26076
+ | 26078..=26079
+ | 26111..=26112
+ | 26114..=26115
+ | 26378..=26379
+ | 26381..=26382
+ | 26414..=26415
+ | 26417..=26418
+ | 26486..=26487
+ | 26489..=26490
+ | 26522..=26523
+ | 26525..=26526 => &SHAPE162,
8075 | 8078 | 8087 | 8090 | 8111 | 8114 | 8123 | 8126 | 8183 | 8186 | 8195 | 8198
| 8219 | 8222 | 8231 | 8234 | 8399 | 8402 | 8411 | 8414 | 8435 | 8438 | 8447 | 8450
| 8507 | 8510 | 8519 | 8522 | 8543 | 8546 | 8555 | 8558 | 14316 | 14319 | 14328
@@ -7754,13 +7754,13 @@ impl BlockWithShape for BlockState {
| 21738 | 21747 | 21750 | 21771 | 21774 | 21783 | 21786 | 21843 | 21846 | 21855
| 21858 | 21879 | 21882 | 21891 | 21894 | 22147 | 22150 | 22159 | 22162 | 22183
| 22186 | 22195 | 22198 | 22255 | 22258 | 22267 | 22270 | 22291 | 22294 | 22303
- | 22306 | 25142 | 25145 | 25154 | 25157 | 25178 | 25181 | 25190 | 25193 | 25250
- | 25253 | 25262 | 25265 | 25286 | 25289 | 25298 | 25301 | 25553 | 25556 | 25565
- | 25568 | 25589 | 25592 | 25601 | 25604 | 25661 | 25664 | 25673 | 25676 | 25697
- | 25700 | 25709 | 25712 | 25964 | 25967 | 25976 | 25979 | 26000 | 26003 | 26012
- | 26015 | 26072 | 26075 | 26084 | 26087 | 26108 | 26111 | 26120 | 26123 | 26375
- | 26378 | 26387 | 26390 | 26411 | 26414 | 26423 | 26426 | 26483 | 26486 | 26495
- | 26498 | 26519 | 26522 | 26531 | 26534 => &SHAPE163,
+ | 22306 | 25150 | 25153 | 25162 | 25165 | 25186 | 25189 | 25198 | 25201 | 25258
+ | 25261 | 25270 | 25273 | 25294 | 25297 | 25306 | 25309 | 25561 | 25564 | 25573
+ | 25576 | 25597 | 25600 | 25609 | 25612 | 25669 | 25672 | 25681 | 25684 | 25705
+ | 25708 | 25717 | 25720 | 25972 | 25975 | 25984 | 25987 | 26008 | 26011 | 26020
+ | 26023 | 26080 | 26083 | 26092 | 26095 | 26116 | 26119 | 26128 | 26131 | 26383
+ | 26386 | 26395 | 26398 | 26419 | 26422 | 26431 | 26434 | 26491 | 26494 | 26503
+ | 26506 | 26527 | 26530 | 26539 | 26542 => &SHAPE163,
8076..=8077
| 8079..=8080
| 8088..=8089
@@ -8097,70 +8097,70 @@ impl BlockWithShape for BlockState {
| 22295..=22296
| 22304..=22305
| 22307..=22308
- | 25143..=25144
- | 25146..=25147
- | 25155..=25156
- | 25158..=25159
- | 25179..=25180
- | 25182..=25183
- | 25191..=25192
- | 25194..=25195
- | 25251..=25252
- | 25254..=25255
- | 25263..=25264
- | 25266..=25267
- | 25287..=25288
- | 25290..=25291
- | 25299..=25300
- | 25302..=25303
- | 25554..=25555
- | 25557..=25558
- | 25566..=25567
- | 25569..=25570
- | 25590..=25591
- | 25593..=25594
- | 25602..=25603
- | 25605..=25606
- | 25662..=25663
- | 25665..=25666
- | 25674..=25675
- | 25677..=25678
- | 25698..=25699
- | 25701..=25702
- | 25710..=25711
- | 25713..=25714
- | 25965..=25966
- | 25968..=25969
- | 25977..=25978
- | 25980..=25981
- | 26001..=26002
- | 26004..=26005
- | 26013..=26014
- | 26016..=26017
- | 26073..=26074
- | 26076..=26077
- | 26085..=26086
- | 26088..=26089
- | 26109..=26110
- | 26112..=26113
- | 26121..=26122
- | 26124..=26125
- | 26376..=26377
- | 26379..=26380
- | 26388..=26389
- | 26391..=26392
- | 26412..=26413
- | 26415..=26416
- | 26424..=26425
- | 26427..=26428
- | 26484..=26485
- | 26487..=26488
- | 26496..=26497
- | 26499..=26500
- | 26520..=26521
- | 26523..=26524
- | 26532..=26533
- | 26535..=26536 => &SHAPE164,
+ | 25151..=25152
+ | 25154..=25155
+ | 25163..=25164
+ | 25166..=25167
+ | 25187..=25188
+ | 25190..=25191
+ | 25199..=25200
+ | 25202..=25203
+ | 25259..=25260
+ | 25262..=25263
+ | 25271..=25272
+ | 25274..=25275
+ | 25295..=25296
+ | 25298..=25299
+ | 25307..=25308
+ | 25310..=25311
+ | 25562..=25563
+ | 25565..=25566
+ | 25574..=25575
+ | 25577..=25578
+ | 25598..=25599
+ | 25601..=25602
+ | 25610..=25611
+ | 25613..=25614
+ | 25670..=25671
+ | 25673..=25674
+ | 25682..=25683
+ | 25685..=25686
+ | 25706..=25707
+ | 25709..=25710
+ | 25718..=25719
+ | 25721..=25722
+ | 25973..=25974
+ | 25976..=25977
+ | 25985..=25986
+ | 25988..=25989
+ | 26009..=26010
+ | 26012..=26013
+ | 26021..=26022
+ | 26024..=26025
+ | 26081..=26082
+ | 26084..=26085
+ | 26093..=26094
+ | 26096..=26097
+ | 26117..=26118
+ | 26120..=26121
+ | 26129..=26130
+ | 26132..=26133
+ | 26384..=26385
+ | 26387..=26388
+ | 26396..=26397
+ | 26399..=26400
+ | 26420..=26421
+ | 26423..=26424
+ | 26432..=26433
+ | 26435..=26436
+ | 26492..=26493
+ | 26495..=26496
+ | 26504..=26505
+ | 26507..=26508
+ | 26528..=26529
+ | 26531..=26532
+ | 26540..=26541
+ | 26543..=26544 => &SHAPE164,
8081 | 8084 | 8093 | 8096 | 8117 | 8120 | 8129 | 8132 | 8189 | 8192 | 8201 | 8204
| 8225 | 8228 | 8237 | 8240 | 8405 | 8408 | 8417 | 8420 | 8441 | 8444 | 8453 | 8456
| 8513 | 8516 | 8525 | 8528 | 8549 | 8552 | 8561 | 8564 | 14322 | 14325 | 14334
@@ -8194,13 +8194,13 @@ impl BlockWithShape for BlockState {
| 21744 | 21753 | 21756 | 21777 | 21780 | 21789 | 21792 | 21849 | 21852 | 21861
| 21864 | 21885 | 21888 | 21897 | 21900 | 22153 | 22156 | 22165 | 22168 | 22189
| 22192 | 22201 | 22204 | 22261 | 22264 | 22273 | 22276 | 22297 | 22300 | 22309
- | 22312 | 25148 | 25151 | 25160 | 25163 | 25184 | 25187 | 25196 | 25199 | 25256
- | 25259 | 25268 | 25271 | 25292 | 25295 | 25304 | 25307 | 25559 | 25562 | 25571
- | 25574 | 25595 | 25598 | 25607 | 25610 | 25667 | 25670 | 25679 | 25682 | 25703
- | 25706 | 25715 | 25718 | 25970 | 25973 | 25982 | 25985 | 26006 | 26009 | 26018
- | 26021 | 26078 | 26081 | 26090 | 26093 | 26114 | 26117 | 26126 | 26129 | 26381
- | 26384 | 26393 | 26396 | 26417 | 26420 | 26429 | 26432 | 26489 | 26492 | 26501
- | 26504 | 26525 | 26528 | 26537 | 26540 => &SHAPE165,
+ | 22312 | 25156 | 25159 | 25168 | 25171 | 25192 | 25195 | 25204 | 25207 | 25264
+ | 25267 | 25276 | 25279 | 25300 | 25303 | 25312 | 25315 | 25567 | 25570 | 25579
+ | 25582 | 25603 | 25606 | 25615 | 25618 | 25675 | 25678 | 25687 | 25690 | 25711
+ | 25714 | 25723 | 25726 | 25978 | 25981 | 25990 | 25993 | 26014 | 26017 | 26026
+ | 26029 | 26086 | 26089 | 26098 | 26101 | 26122 | 26125 | 26134 | 26137 | 26389
+ | 26392 | 26401 | 26404 | 26425 | 26428 | 26437 | 26440 | 26497 | 26500 | 26509
+ | 26512 | 26533 | 26536 | 26545 | 26548 => &SHAPE165,
8082..=8083
| 8085..=8086
| 8094..=8095
@@ -8537,71 +8537,71 @@ impl BlockWithShape for BlockState {
| 22301..=22302
| 22310..=22311
| 22313..=22314
- | 25149..=25150
- | 25152..=25153
- | 25161..=25162
- | 25164..=25165
- | 25185..=25186
- | 25188..=25189
- | 25197..=25198
- | 25200..=25201
- | 25257..=25258
- | 25260..=25261
- | 25269..=25270
- | 25272..=25273
- | 25293..=25294
- | 25296..=25297
- | 25305..=25306
- | 25308..=25309
- | 25560..=25561
- | 25563..=25564
- | 25572..=25573
- | 25575..=25576
- | 25596..=25597
- | 25599..=25600
- | 25608..=25609
- | 25611..=25612
- | 25668..=25669
- | 25671..=25672
- | 25680..=25681
- | 25683..=25684
- | 25704..=25705
- | 25707..=25708
- | 25716..=25717
- | 25719..=25720
- | 25971..=25972
- | 25974..=25975
- | 25983..=25984
- | 25986..=25987
- | 26007..=26008
- | 26010..=26011
- | 26019..=26020
- | 26022..=26023
- | 26079..=26080
- | 26082..=26083
- | 26091..=26092
- | 26094..=26095
- | 26115..=26116
- | 26118..=26119
- | 26127..=26128
- | 26130..=26131
- | 26382..=26383
- | 26385..=26386
- | 26394..=26395
- | 26397..=26398
- | 26418..=26419
- | 26421..=26422
- | 26430..=26431
- | 26433..=26434
- | 26490..=26491
- | 26493..=26494
- | 26502..=26503
- | 26505..=26506
- | 26526..=26527
- | 26529..=26530
- | 26538..=26539
- | 26541..=26542 => &SHAPE166,
- 8567..=8594 | 12957 | 19455..=19458 | 26553..=26554 => &SHAPE27,
+ | 25157..=25158
+ | 25160..=25161
+ | 25169..=25170
+ | 25172..=25173
+ | 25193..=25194
+ | 25196..=25197
+ | 25205..=25206
+ | 25208..=25209
+ | 25265..=25266
+ | 25268..=25269
+ | 25277..=25278
+ | 25280..=25281
+ | 25301..=25302
+ | 25304..=25305
+ | 25313..=25314
+ | 25316..=25317
+ | 25568..=25569
+ | 25571..=25572
+ | 25580..=25581
+ | 25583..=25584
+ | 25604..=25605
+ | 25607..=25608
+ | 25616..=25617
+ | 25619..=25620
+ | 25676..=25677
+ | 25679..=25680
+ | 25688..=25689
+ | 25691..=25692
+ | 25712..=25713
+ | 25715..=25716
+ | 25724..=25725
+ | 25727..=25728
+ | 25979..=25980
+ | 25982..=25983
+ | 25991..=25992
+ | 25994..=25995
+ | 26015..=26016
+ | 26018..=26019
+ | 26027..=26028
+ | 26030..=26031
+ | 26087..=26088
+ | 26090..=26091
+ | 26099..=26100
+ | 26102..=26103
+ | 26123..=26124
+ | 26126..=26127
+ | 26135..=26136
+ | 26138..=26139
+ | 26390..=26391
+ | 26393..=26394
+ | 26402..=26403
+ | 26405..=26406
+ | 26426..=26427
+ | 26429..=26430
+ | 26438..=26439
+ | 26441..=26442
+ | 26498..=26499
+ | 26501..=26502
+ | 26510..=26511
+ | 26513..=26514
+ | 26534..=26535
+ | 26537..=26538
+ | 26546..=26547
+ | 26549..=26550 => &SHAPE166,
+ 8567..=8594 | 12957 | 19455..=19458 | 26561..=26562 => &SHAPE27,
8827..=8858 | 8867..=8898 | 8907..=8938 | 8947..=8978 | 8987..=9018 | 9027..=9058 => {
&SHAPE169
}
@@ -8685,14 +8685,14 @@ impl BlockWithShape for BlockState {
| 23634..=23635
| 23640..=23641
| 23646..=23647
- | 24980..=24981
- | 25391..=25392
- | 25802..=25803
- | 26213..=26214 => &SHAPE186,
- 10728..=10743 | 24818 => &SHAPE28,
- 12334 | 12336 | 24716..=24719 | 24724..=24727 => &SHAPE187,
- 12335 | 12337 | 24720..=24723 | 24728..=24731 => &SHAPE188,
- 12338..=12339 | 24732..=24739 => &SHAPE90,
+ | 24988..=24989
+ | 25399..=25400
+ | 25810..=25811
+ | 26221..=26222 => &SHAPE186,
+ 10728..=10743 | 24826 => &SHAPE28,
+ 12334 | 12336 | 24724..=24727 | 24732..=24735 => &SHAPE187,
+ 12335 | 12337 | 24728..=24731 | 24736..=24739 => &SHAPE188,
+ 12338..=12339 | 24740..=24747 => &SHAPE90,
12340 => &SHAPE189,
12341 => &SHAPE190,
12342 => &SHAPE191,
@@ -8722,7 +8722,7 @@ impl BlockWithShape for BlockState {
12366 => &SHAPE215,
12367 => &SHAPE216,
12368 => &SHAPE217,
- 12369 | 24752..=24755 => &SHAPE68,
+ 12369 | 24760..=24763 => &SHAPE68,
12370 => &SHAPE218,
12371 => &SHAPE219,
12372 => &SHAPE220,
@@ -8884,23 +8884,23 @@ impl BlockWithShape for BlockState {
21075..=21076 => &SHAPE310,
21077..=21078 => &SHAPE311,
21079..=21080 => &SHAPE312,
- 24740..=24743 => &SHAPE262,
- 24744..=24745 => &SHAPE313,
- 24746..=24747 => &SHAPE314,
- 24748..=24751 => &SHAPE63,
- 24756..=24759 => &SHAPE73,
- 24816..=24817 => &SHAPE315,
- 24836..=24839 | 24844..=24847 | 24852..=24855 | 24860..=24863 => &SHAPE316,
- 24840..=24841 | 24848..=24849 | 24856..=24857 | 24864..=24865 => &SHAPE317,
+ 24748..=24751 => &SHAPE262,
+ 24752..=24753 => &SHAPE313,
+ 24754..=24755 => &SHAPE314,
+ 24756..=24759 => &SHAPE63,
+ 24764..=24767 => &SHAPE73,
+ 24824..=24825 => &SHAPE315,
+ 24844..=24847 | 24852..=24855 | 24860..=24863 | 24868..=24871 => &SHAPE316,
+ 24848..=24849 | 24856..=24857 | 24864..=24865 | 24872..=24873 => &SHAPE317,
_ => &SHAPE1,
}
}
fn is_shape_empty(&self) -> bool {
- matches!(self.id, 0|25..=78|80..=111|1944..=1991|2004..=2010|2063..=2090|2355..=2872|2978..=4273|4278..=4285|4302..=4589|4662..=4681|4762..=5537|5626..=5651|5716..=5733|5738..=5772|5799..=5814|5858..=5862|5864..=5865|6813..=6998|7001..=7002|7005..=7006|7009..=7010|7013..=7014|7017..=7018|7021..=7022|7025..=7026|7385..=7388|7406|7521..=7664|7925|7928|8249|8252|8595..=8826|9143..=9174|9320..=9343|10367..=10398|10747..=11078|11310..=11311|11314..=11315|11318..=11319|11322..=11323|11326..=11327|11330..=11331|11334..=11335|11338..=11339|11342..=11343|11346..=11347|11350..=11351|11354..=11355|11358..=11359|11362..=11363|11366..=11367|11370..=11371|11374..=11375|11378..=11379|11382..=11383|11386..=11387|11390..=11391|11394..=11395|11398..=11399|11402..=11403|11406..=11407|11410..=11411|11414..=11415|11418..=11419|11422..=11423|11426..=11427|11430..=11431|11434..=11435|11438..=11439|11442..=11443|11446..=11447|11450..=11451|11454..=11455|11458..=11459|11462..=11463|11466..=11467|11470..=11471|11474..=11475|11478..=11479|11482..=11483|11486..=11487|11490..=11491|11494..=11495|11498..=11499|11502..=11503|11506..=11507|11510..=11511|11514..=11515|11518..=11519|11522..=11523|11526..=11527|11530..=11531|11534..=11535|11538..=11539|11542..=11543|11546..=11547|11550..=11551|11554..=11555|11558..=11559|11562..=11563|12495..=12496|12499|12501|12503|12505|12507..=12512|12514|12549|12760..=12786|12813..=12932|12944|12958..=12961|14166|14169|14490|14493|14814|14817|15138|15141|15462|15465|15786|15789|16110|16113|16434|16437|16758|16761|17082|17085|17406|17409|17730|17733|18054|18057|18575..=18578|18592|18594..=18595|18609|18611..=18665|18680..=18683|18876..=18877|18880..=18881|18884..=18885|18888..=18889|18892..=18893|18896..=18897|18900..=18901|18904..=18905|18908..=18909|18912..=18913|18916..=18917|18920..=18921|18924..=18925|18928..=18929|18932..=18933|18936..=18937|19100..=19147|19276..=19355|19547|19550|19967|19970|20372..=20397|20404|20407|21174|21177|21585|21588|21997|22000|22318|22800..=22927|24761..=24815|24819..=24834|24842..=24843|24850..=24851|24858..=24859|24866..=24893|24992|24995|25403|25406|25814|25817|26225|26228|26564)
+ matches!(self.id, 0|25..=78|80..=111|1944..=1991|2004..=2010|2063..=2090|2355..=2872|2978..=4273|4278..=4285|4302..=4589|4662..=4681|4762..=5537|5626..=5651|5716..=5733|5738..=5772|5799..=5814|5858..=5862|5864..=5865|6813..=6998|7001..=7002|7005..=7006|7009..=7010|7013..=7014|7017..=7018|7021..=7022|7025..=7026|7385..=7388|7406|7521..=7664|7925|7928|8249|8252|8595..=8826|9143..=9174|9320..=9343|10367..=10398|10747..=11078|11310..=11311|11314..=11315|11318..=11319|11322..=11323|11326..=11327|11330..=11331|11334..=11335|11338..=11339|11342..=11343|11346..=11347|11350..=11351|11354..=11355|11358..=11359|11362..=11363|11366..=11367|11370..=11371|11374..=11375|11378..=11379|11382..=11383|11386..=11387|11390..=11391|11394..=11395|11398..=11399|11402..=11403|11406..=11407|11410..=11411|11414..=11415|11418..=11419|11422..=11423|11426..=11427|11430..=11431|11434..=11435|11438..=11439|11442..=11443|11446..=11447|11450..=11451|11454..=11455|11458..=11459|11462..=11463|11466..=11467|11470..=11471|11474..=11475|11478..=11479|11482..=11483|11486..=11487|11490..=11491|11494..=11495|11498..=11499|11502..=11503|11506..=11507|11510..=11511|11514..=11515|11518..=11519|11522..=11523|11526..=11527|11530..=11531|11534..=11535|11538..=11539|11542..=11543|11546..=11547|11550..=11551|11554..=11555|11558..=11559|11562..=11563|12495..=12496|12499|12501|12503|12505|12507..=12512|12514|12549|12760..=12786|12813..=12932|12944|12958..=12961|14166|14169|14490|14493|14814|14817|15138|15141|15462|15465|15786|15789|16110|16113|16434|16437|16758|16761|17082|17085|17406|17409|17730|17733|18054|18057|18575..=18578|18592|18594..=18595|18609|18611..=18665|18680..=18683|18876..=18877|18880..=18881|18884..=18885|18888..=18889|18892..=18893|18896..=18897|18900..=18901|18904..=18905|18908..=18909|18912..=18913|18916..=18917|18920..=18921|18924..=18925|18928..=18929|18932..=18933|18936..=18937|19100..=19147|19276..=19355|19547|19550|19967|19970|20372..=20397|20404|20407|21174|21177|21585|21588|21997|22000|22318|22800..=22927|24769..=24823|24827..=24842|24850..=24851|24858..=24859|24866..=24867|24874..=24901|25000|25003|25411|25414|25822|25825|26233|26236|26572)
}
fn is_shape_full(&self) -> bool {
- matches!(self.id, 1..=24|79|112..=1687|1998..=2003|2017..=2022|2047..=2062|2091..=2354|2873|4274..=4277|4294..=4301|5734..=5737|5780..=5781|5798|5815..=5816|5849|5851..=5857|5863|5866..=5873|5945..=5960|6537..=6740|6811..=6812|7269..=7270|7272|7415|7417..=7418|7511..=7512|7665|7906..=7918|9223..=9224|9235..=9239|9344..=9371|10364..=10366|10463..=10465|10710..=10711|10716..=10717|10722..=10727|10744..=10746|11079..=11081|11166..=11167|11172..=11173|11178..=11179|11184..=11185|11190..=11191|11196..=11197|11202..=11203|11208..=11209|11214..=11215|11220..=11221|11226..=11227|11232..=11233|11238..=11239|11244..=11245|11250..=11251|11256..=11257|11262..=11263|11268..=11269|11274..=11275|11280..=11281|11286..=11287|11292..=11293|11298..=11299|11304..=11309|12404..=12413|12494|12515..=12548|12550..=12759|12787|12803..=12812|12941|14086..=14087|14092..=14093|14098..=14099|14104..=14105|14110..=14111|14116..=14117|14122..=14123|14128..=14129|14134..=14135|14140..=14141|14146..=14147|14152..=14153|14158..=14159|18404..=18437|18466|18579..=18591|18593|18596..=18608|18610|18666..=18667|18672..=18673|18678..=18679|19356..=19371|19381..=19444|19446..=19454|19459..=19460|19869..=19874|19879..=19880|20285|20370..=20371|20722..=20724|21031..=21032|21081|21086..=21087|21492|21497..=21498|21903..=21904|21909..=21910|22315..=22317|22799|22928..=22929|22938..=22955|23280..=23281|23286..=23287|23292..=23293|23298..=23307|23632..=23633|23638..=23639|23644..=23645|23650..=23651|24676..=24715|24760|24835|24894|24896..=24899|24984..=24985|25310|25395..=25396|25721|25806..=25807|26132|26217..=26218|26543..=26552|26555..=26563|26565|26582..=26635)
+ matches!(self.id, 1..=24|79|112..=1687|1998..=2003|2017..=2022|2047..=2062|2091..=2354|2873|4274..=4277|4294..=4301|5734..=5737|5780..=5781|5798|5815..=5816|5849|5851..=5857|5863|5866..=5873|5945..=5960|6537..=6740|6811..=6812|7269..=7270|7272|7415|7417..=7418|7511..=7512|7665|7906..=7918|9223..=9224|9235..=9239|9344..=9371|10364..=10366|10463..=10465|10710..=10711|10716..=10717|10722..=10727|10744..=10746|11079..=11081|11166..=11167|11172..=11173|11178..=11179|11184..=11185|11190..=11191|11196..=11197|11202..=11203|11208..=11209|11214..=11215|11220..=11221|11226..=11227|11232..=11233|11238..=11239|11244..=11245|11250..=11251|11256..=11257|11262..=11263|11268..=11269|11274..=11275|11280..=11281|11286..=11287|11292..=11293|11298..=11299|11304..=11309|12404..=12413|12494|12515..=12548|12550..=12759|12787|12803..=12812|12941|14086..=14087|14092..=14093|14098..=14099|14104..=14105|14110..=14111|14116..=14117|14122..=14123|14128..=14129|14134..=14135|14140..=14141|14146..=14147|14152..=14153|14158..=14159|18404..=18437|18466|18579..=18591|18593|18596..=18608|18610|18666..=18667|18672..=18673|18678..=18679|19356..=19371|19381..=19444|19446..=19454|19459..=19460|19869..=19874|19879..=19880|20285|20370..=20371|20722..=20724|21031..=21032|21081|21086..=21087|21492|21497..=21498|21903..=21904|21909..=21910|22315..=22317|22799|22928..=22929|22938..=22955|23280..=23281|23286..=23287|23292..=23293|23298..=23307|23632..=23633|23638..=23639|23644..=23645|23650..=23651|24676..=24723|24768|24843|24902|24904..=24907|24992..=24993|25318|25403..=25404|25729|25814..=25815|26140|26225..=26226|26551..=26560|26563..=26571|26573|26590..=26643)
}
}
diff --git a/azalea-protocol/Cargo.toml b/azalea-protocol/Cargo.toml
index 4c849573c..41b768393 100644
--- a/azalea-protocol/Cargo.toml
+++ b/azalea-protocol/Cargo.toml
@@ -20,7 +20,9 @@ azalea-brigadier = { path = "../azalea-brigadier", version = "^0.8.0", features
"azalea-buf",
] }
azalea-buf = { path = "../azalea-buf", version = "0.8.0" }
-azalea-chat = { path = "../azalea-chat", version = "0.8.0" }
+azalea-chat = { path = "../azalea-chat", version = "0.8.0", features = [
+ "numbers",
+] }
azalea-core = { path = "../azalea-core", optional = true, version = "^0.8.0", features = [
"serde",
] }
diff --git a/azalea-protocol/src/packets/configuration/clientbound_resource_pack_pop_packet.rs b/azalea-protocol/src/packets/configuration/clientbound_resource_pack_pop_packet.rs
new file mode 100644
index 000000000..6533b589b
--- /dev/null
+++ b/azalea-protocol/src/packets/configuration/clientbound_resource_pack_pop_packet.rs
@@ -0,0 +1,8 @@
+use azalea_buf::McBuf;
+use azalea_protocol_macros::ClientboundConfigurationPacket;
+use uuid::Uuid;
+
+#[derive(Clone, Debug, McBuf, ClientboundConfigurationPacket)]
+pub struct ClientboundResourcePackPopPacket {
+ pub id: Option,
+}
diff --git a/azalea-protocol/src/packets/configuration/clientbound_resource_pack_push_packet.rs b/azalea-protocol/src/packets/configuration/clientbound_resource_pack_push_packet.rs
new file mode 100644
index 000000000..798f5f98f
--- /dev/null
+++ b/azalea-protocol/src/packets/configuration/clientbound_resource_pack_push_packet.rs
@@ -0,0 +1,13 @@
+use azalea_buf::McBuf;
+use azalea_chat::FormattedText;
+use azalea_protocol_macros::ClientboundConfigurationPacket;
+use uuid::Uuid;
+
+#[derive(Clone, Debug, McBuf, ClientboundConfigurationPacket)]
+pub struct ClientboundResourcePackPushPacket {
+ pub id: Uuid,
+ pub url: String,
+ pub hash: String,
+ pub required: bool,
+ pub prompt: Option,
+}
diff --git a/azalea-protocol/src/packets/configuration/mod.rs b/azalea-protocol/src/packets/configuration/mod.rs
index 8244e90af..9516935f2 100755
--- a/azalea-protocol/src/packets/configuration/mod.rs
+++ b/azalea-protocol/src/packets/configuration/mod.rs
@@ -4,7 +4,8 @@ pub mod clientbound_finish_configuration_packet;
pub mod clientbound_keep_alive_packet;
pub mod clientbound_ping_packet;
pub mod clientbound_registry_data_packet;
-pub mod clientbound_resource_pack_packet;
+pub mod clientbound_resource_pack_pop_packet;
+pub mod clientbound_resource_pack_push_packet;
pub mod clientbound_update_enabled_features_packet;
pub mod clientbound_update_tags_packet;
pub mod serverbound_client_information_packet;
@@ -32,8 +33,9 @@ declare_state_packets!(
0x03: clientbound_keep_alive_packet::ClientboundKeepAlivePacket,
0x04: clientbound_ping_packet::ClientboundPingPacket,
0x05: clientbound_registry_data_packet::ClientboundRegistryDataPacket,
- 0x06: clientbound_resource_pack_packet::ClientboundResourcePackPacket,
- 0x07: clientbound_update_enabled_features_packet::ClientboundUpdateEnabledFeaturesPacket,
- 0x08: clientbound_update_tags_packet::ClientboundUpdateTagsPacket,
+ 0x06: clientbound_resource_pack_pop_packet::ClientboundResourcePackPopPacket,
+ 0x07: clientbound_resource_pack_push_packet::ClientboundResourcePackPushPacket,
+ 0x08: clientbound_update_enabled_features_packet::ClientboundUpdateEnabledFeaturesPacket,
+ 0x09: clientbound_update_tags_packet::ClientboundUpdateTagsPacket,
}
);
diff --git a/azalea-protocol/src/packets/configuration/serverbound_resource_pack_packet.rs b/azalea-protocol/src/packets/configuration/serverbound_resource_pack_packet.rs
index 111491150..6f35525e6 100644
--- a/azalea-protocol/src/packets/configuration/serverbound_resource_pack_packet.rs
+++ b/azalea-protocol/src/packets/configuration/serverbound_resource_pack_packet.rs
@@ -1,8 +1,10 @@
use azalea_buf::McBuf;
use azalea_protocol_macros::ServerboundConfigurationPacket;
+use uuid::Uuid;
#[derive(Clone, Debug, McBuf, ServerboundConfigurationPacket)]
pub struct ServerboundResourcePackPacket {
+ pub id: Uuid,
pub action: Action,
}
@@ -12,4 +14,7 @@ pub enum Action {
Declined = 1,
FailedDownload = 2,
Accepted = 3,
+ InvalidUrl = 4,
+ FailedReload = 5,
+ Discarded = 6,
}
diff --git a/azalea-protocol/src/packets/game/clientbound_commands_packet.rs b/azalea-protocol/src/packets/game/clientbound_commands_packet.rs
index 0b14fbd12..1a0e8a2e3 100755
--- a/azalea-protocol/src/packets/game/clientbound_commands_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_commands_packet.rs
@@ -112,6 +112,7 @@ pub enum BrigadierParser {
ItemPredicate,
Color,
FormattedText,
+ Style,
Message,
NbtCompoundTag,
NbtTag,
diff --git a/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs b/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs
index 6a80e1727..41a21def6 100644
--- a/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_player_chat_packet.rs
@@ -169,41 +169,3 @@ impl McBufWritable for PackedMessageSignature {
Ok(())
}
}
-
-#[cfg(test)]
-mod tests {
- use super::*;
- use std::backtrace::Backtrace;
-
- // you can remove or update this test if it breaks because mojang changed the
- // structure of the packet again
- #[test]
- fn test_player_chat_packet() {
- let data: [u8; 295] = [
- 47, 247, 69, 164, 160, 108, 63, 217, 178, 34, 4, 161, 47, 115, 192, 126, 0, 0, 11, 72,
- 101, 108, 108, 111, 32, 119, 111, 114, 108, 100, 0, 0, 1, 132, 209, 9, 72, 139, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242, 1, 123, 34, 105, 110, 115, 101, 114, 116, 105, 111,
- 110, 34, 58, 34, 98, 111, 116, 48, 34, 44, 34, 99, 108, 105, 99, 107, 69, 118, 101,
- 110, 116, 34, 58, 123, 34, 97, 99, 116, 105, 111, 110, 34, 58, 34, 115, 117, 103, 103,
- 101, 115, 116, 95, 99, 111, 109, 109, 97, 110, 100, 34, 44, 34, 118, 97, 108, 117, 101,
- 34, 58, 34, 47, 116, 101, 108, 108, 32, 98, 111, 116, 48, 32, 34, 125, 44, 34, 104,
- 111, 118, 101, 114, 69, 118, 101, 110, 116, 34, 58, 123, 34, 97, 99, 116, 105, 111,
- 110, 34, 58, 34, 115, 104, 111, 119, 95, 101, 110, 116, 105, 116, 121, 34, 44, 34, 99,
- 111, 110, 116, 101, 110, 116, 115, 34, 58, 123, 34, 116, 121, 112, 101, 34, 58, 34,
- 109, 105, 110, 101, 99, 114, 97, 102, 116, 58, 112, 108, 97, 121, 101, 114, 34, 44, 34,
- 105, 100, 34, 58, 34, 50, 102, 102, 55, 52, 53, 97, 52, 45, 97, 48, 54, 99, 45, 51,
- 102, 100, 57, 45, 98, 50, 50, 50, 45, 48, 52, 97, 49, 50, 102, 55, 51, 99, 48, 55, 101,
- 34, 44, 34, 110, 97, 109, 101, 34, 58, 123, 34, 116, 101, 120, 116, 34, 58, 34, 98,
- 111, 116, 48, 34, 125, 125, 125, 44, 34, 116, 101, 120, 116, 34, 58, 34, 98, 111, 116,
- 48, 34, 125, 0,
- ];
- // just make sure it doesn't panic
- if let Err(e) = ClientboundPlayerChatPacket::read_from(&mut Cursor::new(&data)) {
- let default_backtrace = Backtrace::capture();
- let backtrace = std::error::request_ref::(&e).unwrap_or(&default_backtrace);
- eprintln!("{e}\n{backtrace}");
-
- panic!("failed to read player chat packet");
- }
- }
-}
diff --git a/azalea-protocol/src/packets/game/clientbound_reset_score_packet.rs b/azalea-protocol/src/packets/game/clientbound_reset_score_packet.rs
new file mode 100644
index 000000000..8b24bbdf2
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_reset_score_packet.rs
@@ -0,0 +1,8 @@
+use azalea_buf::McBuf;
+use azalea_protocol_macros::ClientboundGamePacket;
+
+#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
+pub struct ClientboundResetScorePacket {
+ pub owner: String,
+ pub objective_name: Option,
+}
diff --git a/azalea-protocol/src/packets/game/clientbound_resource_pack_pop_packet.rs b/azalea-protocol/src/packets/game/clientbound_resource_pack_pop_packet.rs
new file mode 100644
index 000000000..34836c852
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_resource_pack_pop_packet.rs
@@ -0,0 +1,8 @@
+use azalea_buf::McBuf;
+use azalea_protocol_macros::ClientboundGamePacket;
+use uuid::Uuid;
+
+#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
+pub struct ClientboundResourcePackPopPacket {
+ pub id: Option,
+}
diff --git a/azalea-protocol/src/packets/game/clientbound_resource_pack_push_packet.rs b/azalea-protocol/src/packets/game/clientbound_resource_pack_push_packet.rs
new file mode 100644
index 000000000..1d5e00b1f
--- /dev/null
+++ b/azalea-protocol/src/packets/game/clientbound_resource_pack_push_packet.rs
@@ -0,0 +1,13 @@
+use azalea_buf::McBuf;
+use azalea_chat::FormattedText;
+use azalea_protocol_macros::ClientboundGamePacket;
+use uuid::Uuid;
+
+#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
+pub struct ClientboundResourcePackPushPacket {
+ pub id: Uuid,
+ pub url: String,
+ pub hash: String,
+ pub required: bool,
+ pub prompt: Option,
+}
diff --git a/azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs b/azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs
index 3809b5b62..a9481ad15 100755
--- a/azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_set_objective_packet.rs
@@ -1,59 +1,82 @@
-use azalea_buf::{BufReadError, McBuf, McBufReadable, McBufWritable};
-use azalea_chat::FormattedText;
-use azalea_protocol_macros::ClientboundGamePacket;
use std::io::{Cursor, Write};
+use azalea_buf::{McBuf, McBufReadable, McBufWritable};
+use azalea_chat::{numbers::NumberFormat, FormattedText};
+use azalea_core::objectives::ObjectiveCriteria;
+use azalea_protocol_macros::ClientboundGamePacket;
+
#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
pub struct ClientboundSetObjectivePacket {
pub objective_name: String,
pub method: Method,
}
+#[derive(Clone, Copy, Debug, McBuf)]
+pub enum MethodKind {
+ Add,
+ Remove,
+ Change,
+}
+
#[derive(Clone, Debug)]
pub enum Method {
- Add(DisplayInfo),
+ Add {
+ display_name: FormattedText,
+ render_type: ObjectiveCriteria,
+ number_format: NumberFormat,
+ },
Remove,
- Change(DisplayInfo),
+ Change {
+ display_name: FormattedText,
+ render_type: ObjectiveCriteria,
+ number_format: NumberFormat,
+ },
}
impl McBufReadable for Method {
- fn read_from(buf: &mut Cursor<&[u8]>) -> Result {
- Ok(match u8::read_from(buf)? {
- 0 => Method::Add(DisplayInfo::read_from(buf)?),
- 1 => Method::Remove,
- 2 => Method::Change(DisplayInfo::read_from(buf)?),
- id => return Err(BufReadError::UnexpectedEnumVariant { id: i32::from(id) }),
- })
+ fn read_from(buf: &mut Cursor<&[u8]>) -> Result {
+ let kind = MethodKind::read_from(buf)?;
+ match kind {
+ MethodKind::Add => Ok(Method::Add {
+ display_name: FormattedText::read_from(buf)?,
+ render_type: ObjectiveCriteria::read_from(buf)?,
+ number_format: NumberFormat::read_from(buf)?,
+ }),
+ MethodKind::Remove => Ok(Method::Remove),
+ MethodKind::Change => Ok(Method::Change {
+ display_name: FormattedText::read_from(buf)?,
+ render_type: ObjectiveCriteria::read_from(buf)?,
+ number_format: NumberFormat::read_from(buf)?,
+ }),
+ }
}
}
impl McBufWritable for Method {
fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
match self {
- Method::Add(info) => {
- 0u8.write_into(buf)?;
- info.write_into(buf)?;
- }
- Method::Remove => {
- 1u8.write_into(buf)?;
+ Method::Add {
+ display_name,
+ render_type,
+ number_format,
+ } => {
+ MethodKind::Add.write_into(buf)?;
+ display_name.write_into(buf)?;
+ render_type.write_into(buf)?;
+ number_format.write_into(buf)?;
}
- Method::Change(info) => {
- 2u8.write_into(buf)?;
- info.write_into(buf)?;
+ Method::Remove => MethodKind::Remove.write_into(buf)?,
+ Method::Change {
+ display_name,
+ render_type,
+ number_format,
+ } => {
+ MethodKind::Change.write_into(buf)?;
+ display_name.write_into(buf)?;
+ render_type.write_into(buf)?;
+ number_format.write_into(buf)?;
}
}
Ok(())
}
}
-
-#[derive(McBuf, Clone, Debug)]
-pub struct DisplayInfo {
- pub display_name: FormattedText,
- pub render_type: RenderType,
-}
-
-#[derive(McBuf, Copy, Clone, Debug)]
-pub enum RenderType {
- Integer,
- Hearts,
-}
diff --git a/azalea-protocol/src/packets/game/clientbound_set_score_packet.rs b/azalea-protocol/src/packets/game/clientbound_set_score_packet.rs
index 56d14b942..6de53f749 100755
--- a/azalea-protocol/src/packets/game/clientbound_set_score_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_set_score_packet.rs
@@ -1,61 +1,13 @@
-use azalea_buf::{BufReadError, McBufReadable, McBufVarReadable, McBufVarWritable, McBufWritable};
+use azalea_buf::McBuf;
+use azalea_chat::{numbers::NumberFormat, FormattedText};
use azalea_protocol_macros::ClientboundGamePacket;
-use std::{
- io::{Cursor, Write},
- ops::Not,
-};
-#[derive(Clone, Debug, ClientboundGamePacket)]
+#[derive(Clone, Debug, McBuf, ClientboundGamePacket)]
pub struct ClientboundSetScorePacket {
pub owner: String,
- pub method: Method,
- pub objective_name: Option,
-}
-
-impl McBufReadable for ClientboundSetScorePacket {
- fn read_from(buf: &mut Cursor<&[u8]>) -> Result {
- let owner = String::read_from(buf)?;
- let method_id = u32::var_read_from(buf)?;
- let objective_name = String::read_from(buf)?;
- let objective_name = objective_name.is_empty().not().then_some(objective_name);
- // if it's change, read the score
- let method = match method_id {
- 0 => Method::Change {
- score: u32::var_read_from(buf)?,
- },
- 1 => Method::Remove,
- id => return Err(BufReadError::UnexpectedEnumVariant { id: id as i32 }),
- };
- Ok(ClientboundSetScorePacket {
- owner,
- method,
- objective_name,
- })
- }
-}
-
-impl McBufWritable for ClientboundSetScorePacket {
- fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> {
- self.owner.write_into(buf)?;
- match self.method {
- Method::Change { .. } => 0u32,
- Method::Remove => 1u32,
- }
- .var_write_into(buf)?;
- // convert None to an empty string
- self.objective_name
- .as_ref()
- .unwrap_or(&String::new())
- .write_into(buf)?;
- if let Method::Change { score } = self.method {
- score.var_write_into(buf)?;
- }
- Ok(())
- }
-}
-
-#[derive(Clone, Copy, Debug)]
-pub enum Method {
- Change { score: u32 },
- Remove,
+ pub objective_name: String,
+ #[var]
+ pub score: u32,
+ pub display: Option,
+ pub number_format: Option,
}
diff --git a/azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs b/azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs
index d8942387c..291cb580c 100755
--- a/azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs
+++ b/azalea-protocol/src/packets/game/clientbound_update_recipes_packet.rs
@@ -307,24 +307,26 @@ mod tests {
let recipe = Recipe {
identifier: ResourceLocation::new("minecraft:crafting_shaped"),
data: RecipeData::CraftingShaped(ShapedRecipe {
- width: 2,
- height: 2,
group: String::new(),
category: CraftingBookCategory::Building,
- ingredients: vec![
- Ingredient {
- allowed: vec![ItemSlot::Empty],
- },
- Ingredient {
- allowed: vec![ItemSlot::Empty],
- },
- Ingredient {
- allowed: vec![ItemSlot::Empty],
- },
- Ingredient {
- allowed: vec![ItemSlot::Empty],
- },
- ],
+ pattern: ShapedRecipePattern {
+ width: 2,
+ height: 2,
+ ingredients: vec![
+ Ingredient {
+ allowed: vec![ItemSlot::Empty],
+ },
+ Ingredient {
+ allowed: vec![ItemSlot::Empty],
+ },
+ Ingredient {
+ allowed: vec![ItemSlot::Empty],
+ },
+ Ingredient {
+ allowed: vec![ItemSlot::Empty],
+ },
+ ],
+ },
result: ItemSlot::Empty,
show_notification: false,
}),
diff --git a/azalea-protocol/src/packets/game/mod.rs b/azalea-protocol/src/packets/game/mod.rs
index d5e7bdf3e..d45ea7b14 100755
--- a/azalea-protocol/src/packets/game/mod.rs
+++ b/azalea-protocol/src/packets/game/mod.rs
@@ -64,7 +64,9 @@ pub mod clientbound_pong_response_packet;
pub mod clientbound_recipe_packet;
pub mod clientbound_remove_entities_packet;
pub mod clientbound_remove_mob_effect_packet;
-pub mod clientbound_resource_pack_packet;
+pub mod clientbound_reset_score_packet;
+pub mod clientbound_resource_pack_pop_packet;
+pub mod clientbound_resource_pack_push_packet;
pub mod clientbound_respawn_packet;
pub mod clientbound_rotate_head_packet;
pub mod clientbound_section_blocks_update_packet;
@@ -297,54 +299,56 @@ declare_state_packets!(
0x3f: clientbound_recipe_packet::ClientboundRecipePacket,
0x40: clientbound_remove_entities_packet::ClientboundRemoveEntitiesPacket,
0x41: clientbound_remove_mob_effect_packet::ClientboundRemoveMobEffectPacket,
- 0x42: clientbound_resource_pack_packet::ClientboundResourcePackPacket,
- 0x43: clientbound_respawn_packet::ClientboundRespawnPacket,
- 0x44: clientbound_rotate_head_packet::ClientboundRotateHeadPacket,
- 0x45: clientbound_section_blocks_update_packet::ClientboundSectionBlocksUpdatePacket,
- 0x46: clientbound_select_advancements_tab_packet::ClientboundSelectAdvancementsTabPacket,
- 0x47: clientbound_server_data_packet::ClientboundServerDataPacket,
- 0x48: clientbound_set_action_bar_text_packet::ClientboundSetActionBarTextPacket,
- 0x49: clientbound_set_border_center_packet::ClientboundSetBorderCenterPacket,
- 0x4a: clientbound_set_border_lerp_size_packet::ClientboundSetBorderLerpSizePacket,
- 0x4b: clientbound_set_border_size_packet::ClientboundSetBorderSizePacket,
- 0x4c: clientbound_set_border_warning_delay_packet::ClientboundSetBorderWarningDelayPacket,
- 0x4d: clientbound_set_border_warning_distance_packet::ClientboundSetBorderWarningDistancePacket,
- 0x4e: clientbound_set_camera_packet::ClientboundSetCameraPacket,
- 0x4f: clientbound_set_carried_item_packet::ClientboundSetCarriedItemPacket,
- 0x50: clientbound_set_chunk_cache_center_packet::ClientboundSetChunkCacheCenterPacket,
- 0x51: clientbound_set_chunk_cache_radius_packet::ClientboundSetChunkCacheRadiusPacket,
- 0x52: clientbound_set_default_spawn_position_packet::ClientboundSetDefaultSpawnPositionPacket,
- 0x53: clientbound_set_display_objective_packet::ClientboundSetDisplayObjectivePacket,
- 0x54: clientbound_set_entity_data_packet::ClientboundSetEntityDataPacket,
- 0x55: clientbound_set_entity_link_packet::ClientboundSetEntityLinkPacket,
- 0x56: clientbound_set_entity_motion_packet::ClientboundSetEntityMotionPacket,
- 0x57: clientbound_set_equipment_packet::ClientboundSetEquipmentPacket,
- 0x58: clientbound_set_experience_packet::ClientboundSetExperiencePacket,
- 0x59: clientbound_set_health_packet::ClientboundSetHealthPacket,
- 0x5a: clientbound_set_objective_packet::ClientboundSetObjectivePacket,
- 0x5b: clientbound_set_passengers_packet::ClientboundSetPassengersPacket,
- 0x5c: clientbound_set_player_team_packet::ClientboundSetPlayerTeamPacket,
- 0x5d: clientbound_set_score_packet::ClientboundSetScorePacket,
- 0x5e: clientbound_set_simulation_distance_packet::ClientboundSetSimulationDistancePacket,
- 0x5f: clientbound_set_subtitle_text_packet::ClientboundSetSubtitleTextPacket,
- 0x60: clientbound_set_time_packet::ClientboundSetTimePacket,
- 0x61: clientbound_set_title_text_packet::ClientboundSetTitleTextPacket,
- 0x62: clientbound_set_titles_animation_packet::ClientboundSetTitlesAnimationPacket,
- 0x63: clientbound_sound_entity_packet::ClientboundSoundEntityPacket,
- 0x64: clientbound_sound_packet::ClientboundSoundPacket,
- 0x65: clientbound_start_configuration_packet::ClientboundStartConfigurationPacket,
- 0x66: clientbound_stop_sound_packet::ClientboundStopSoundPacket,
- 0x67: clientbound_system_chat_packet::ClientboundSystemChatPacket,
- 0x68: clientbound_tab_list_packet::ClientboundTabListPacket,
- 0x69: clientbound_tag_query_packet::ClientboundTagQueryPacket,
- 0x6a: clientbound_take_item_entity_packet::ClientboundTakeItemEntityPacket,
- 0x6b: clientbound_teleport_entity_packet::ClientboundTeleportEntityPacket,
- 0x6c: clientbound_ticking_state_packet::ClientboundTickingStatePacket,
- 0x6d: clientbound_ticking_step_packet::ClientboundTickingStepPacket,
- 0x6e: clientbound_update_advancements_packet::ClientboundUpdateAdvancementsPacket,
- 0x6f: clientbound_update_attributes_packet::ClientboundUpdateAttributesPacket,
- 0x70: clientbound_update_mob_effect_packet::ClientboundUpdateMobEffectPacket,
- 0x71: clientbound_update_recipes_packet::ClientboundUpdateRecipesPacket,
- 0x72: clientbound_update_tags_packet::ClientboundUpdateTagsPacket,
+ 0x42: clientbound_reset_score_packet::ClientboundResetScorePacket,
+ 0x43: clientbound_resource_pack_pop_packet::ClientboundResourcePackPopPacket,
+ 0x44: clientbound_resource_pack_push_packet::ClientboundResourcePackPushPacket,
+ 0x45: clientbound_respawn_packet::ClientboundRespawnPacket,
+ 0x46: clientbound_rotate_head_packet::ClientboundRotateHeadPacket,
+ 0x47: clientbound_section_blocks_update_packet::ClientboundSectionBlocksUpdatePacket,
+ 0x48: clientbound_select_advancements_tab_packet::ClientboundSelectAdvancementsTabPacket,
+ 0x49: clientbound_server_data_packet::ClientboundServerDataPacket,
+ 0x4a: clientbound_set_action_bar_text_packet::ClientboundSetActionBarTextPacket,
+ 0x4b: clientbound_set_border_center_packet::ClientboundSetBorderCenterPacket,
+ 0x4c: clientbound_set_border_lerp_size_packet::ClientboundSetBorderLerpSizePacket,
+ 0x4d: clientbound_set_border_size_packet::ClientboundSetBorderSizePacket,
+ 0x4e: clientbound_set_border_warning_delay_packet::ClientboundSetBorderWarningDelayPacket,
+ 0x4f: clientbound_set_border_warning_distance_packet::ClientboundSetBorderWarningDistancePacket,
+ 0x50: clientbound_set_camera_packet::ClientboundSetCameraPacket,
+ 0x51: clientbound_set_carried_item_packet::ClientboundSetCarriedItemPacket,
+ 0x52: clientbound_set_chunk_cache_center_packet::ClientboundSetChunkCacheCenterPacket,
+ 0x53: clientbound_set_chunk_cache_radius_packet::ClientboundSetChunkCacheRadiusPacket,
+ 0x54: clientbound_set_default_spawn_position_packet::ClientboundSetDefaultSpawnPositionPacket,
+ 0x55: clientbound_set_display_objective_packet::ClientboundSetDisplayObjectivePacket,
+ 0x56: clientbound_set_entity_data_packet::ClientboundSetEntityDataPacket,
+ 0x57: clientbound_set_entity_link_packet::ClientboundSetEntityLinkPacket,
+ 0x58: clientbound_set_entity_motion_packet::ClientboundSetEntityMotionPacket,
+ 0x59: clientbound_set_equipment_packet::ClientboundSetEquipmentPacket,
+ 0x5a: clientbound_set_experience_packet::ClientboundSetExperiencePacket,
+ 0x5b: clientbound_set_health_packet::ClientboundSetHealthPacket,
+ 0x5c: clientbound_set_objective_packet::ClientboundSetObjectivePacket,
+ 0x5d: clientbound_set_passengers_packet::ClientboundSetPassengersPacket,
+ 0x5e: clientbound_set_player_team_packet::ClientboundSetPlayerTeamPacket,
+ 0x5f: clientbound_set_score_packet::ClientboundSetScorePacket,
+ 0x60: clientbound_set_simulation_distance_packet::ClientboundSetSimulationDistancePacket,
+ 0x61: clientbound_set_subtitle_text_packet::ClientboundSetSubtitleTextPacket,
+ 0x62: clientbound_set_time_packet::ClientboundSetTimePacket,
+ 0x63: clientbound_set_title_text_packet::ClientboundSetTitleTextPacket,
+ 0x64: clientbound_set_titles_animation_packet::ClientboundSetTitlesAnimationPacket,
+ 0x65: clientbound_sound_entity_packet::ClientboundSoundEntityPacket,
+ 0x66: clientbound_sound_packet::ClientboundSoundPacket,
+ 0x67: clientbound_start_configuration_packet::ClientboundStartConfigurationPacket,
+ 0x68: clientbound_stop_sound_packet::ClientboundStopSoundPacket,
+ 0x69: clientbound_system_chat_packet::ClientboundSystemChatPacket,
+ 0x6a: clientbound_tab_list_packet::ClientboundTabListPacket,
+ 0x6b: clientbound_tag_query_packet::ClientboundTagQueryPacket,
+ 0x6c: clientbound_take_item_entity_packet::ClientboundTakeItemEntityPacket,
+ 0x6d: clientbound_teleport_entity_packet::ClientboundTeleportEntityPacket,
+ 0x6e: clientbound_ticking_state_packet::ClientboundTickingStatePacket,
+ 0x6f: clientbound_ticking_step_packet::ClientboundTickingStepPacket,
+ 0x70: clientbound_update_advancements_packet::ClientboundUpdateAdvancementsPacket,
+ 0x71: clientbound_update_attributes_packet::ClientboundUpdateAttributesPacket,
+ 0x72: clientbound_update_mob_effect_packet::ClientboundUpdateMobEffectPacket,
+ 0x73: clientbound_update_recipes_packet::ClientboundUpdateRecipesPacket,
+ 0x74: clientbound_update_tags_packet::ClientboundUpdateTagsPacket,
}
);
diff --git a/azalea-protocol/src/packets/game/serverbound_resource_pack_packet.rs b/azalea-protocol/src/packets/game/serverbound_resource_pack_packet.rs
index 104f8f732..f285707b2 100755
--- a/azalea-protocol/src/packets/game/serverbound_resource_pack_packet.rs
+++ b/azalea-protocol/src/packets/game/serverbound_resource_pack_packet.rs
@@ -1,8 +1,10 @@
use azalea_buf::McBuf;
use azalea_protocol_macros::ServerboundGamePacket;
+use uuid::Uuid;
#[derive(Clone, Debug, McBuf, ServerboundGamePacket)]
pub struct ServerboundResourcePackPacket {
+ pub id: Uuid,
pub action: Action,
}
@@ -12,4 +14,7 @@ pub enum Action {
Declined = 1,
FailedDownload = 2,
Accepted = 3,
+ InvalidUrl = 4,
+ FailedReload = 5,
+ Discarded = 6,
}
diff --git a/azalea-protocol/src/packets/mod.rs b/azalea-protocol/src/packets/mod.rs
index 8f099d074..8ede86de7 100755
--- a/azalea-protocol/src/packets/mod.rs
+++ b/azalea-protocol/src/packets/mod.rs
@@ -12,7 +12,7 @@ use std::io::{Cursor, Write};
// TODO: rename the packet files to just like clientbound_add_entity instead of
// clientbound_add_entity_packet
-pub const PROTOCOL_VERSION: u32 = 1073741986;
+pub const PROTOCOL_VERSION: u32 = 1073741989;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ConnectionProtocol {
diff --git a/azalea-registry/src/lib.rs b/azalea-registry/src/lib.rs
index b73cb39c6..448dd3340 100755
--- a/azalea-registry/src/lib.rs
+++ b/azalea-registry/src/lib.rs
@@ -304,7 +304,7 @@ enum Block {
DetectorRail => "minecraft:detector_rail",
StickyPiston => "minecraft:sticky_piston",
Cobweb => "minecraft:cobweb",
- Grass => "minecraft:grass",
+ ShortGrass => "minecraft:short_grass",
Fern => "minecraft:fern",
DeadBush => "minecraft:dead_bush",
Seagrass => "minecraft:seagrass",
@@ -1363,6 +1363,7 @@ enum CommandArgumentKind {
ItemPredicate => "minecraft:item_predicate",
Color => "minecraft:color",
Component => "minecraft:component",
+ Style => "minecraft:style",
Message => "minecraft:message",
NbtCompoundTag => "minecraft:nbt_compound_tag",
NbtTag => "minecraft:nbt_tag",
@@ -1976,7 +1977,7 @@ enum Item {
ChiseledSandstone => "minecraft:chiseled_sandstone",
CutSandstone => "minecraft:cut_sandstone",
Cobweb => "minecraft:cobweb",
- Grass => "minecraft:grass",
+ ShortGrass => "minecraft:short_grass",
Fern => "minecraft:fern",
Azalea => "minecraft:azalea",
FloweringAzalea => "minecraft:flowering_azalea",
@@ -5935,6 +5936,7 @@ enum BlockKind {
WallTorch => "minecraft:wall_torch",
Wall => "minecraft:wall",
Waterlily => "minecraft:waterlily",
+ WaterloggedTransparent => "minecraft:waterlogged_transparent",
WeatheringCopperBulb => "minecraft:weathering_copper_bulb",
WeatheringCopperDoor => "minecraft:weathering_copper_door",
WeatheringCopperFull => "minecraft:weathering_copper_full",
@@ -6018,3 +6020,11 @@ enum TriggerKind {
RecipeCrafted => "minecraft:recipe_crafted",
}
}
+
+registry! {
+enum NumberFormatKind {
+ Blank => "minecraft:blank",
+ Styled => "minecraft:styled",
+ Fixed => "minecraft:fixed",
+}
+}
diff --git a/azalea-registry/src/tags/blocks.rs b/azalea-registry/src/tags/blocks.rs
index f21a80128..0396eb877 100644
--- a/azalea-registry/src/tags/blocks.rs
+++ b/azalea-registry/src/tags/blocks.rs
@@ -80,7 +80,7 @@ pub static MINEABLE_AXE: Lazy> = Lazy::new(|| {
Block::Fern,
Block::FletchingTable,
Block::GlowLichen,
- Block::Grass,
+ Block::ShortGrass,
Block::HangingRoots,
Block::JackOLantern,
Block::Jukebox,
@@ -845,7 +845,7 @@ pub static BAMBOO_PLANTABLE_ON: Lazy> = Lazy::new(|| {
});
pub static SWORD_EFFICIENT: Lazy> = Lazy::new(|| {
HashSet::from_iter(vec![
- Block::Grass,
+ Block::ShortGrass,
Block::Fern,
Block::DeadBush,
Block::Vine,
@@ -1534,7 +1534,7 @@ pub static DRAGON_TRANSPARENT: Lazy> =
Lazy::new(|| HashSet::from_iter(vec![Block::Light, Block::Fire, Block::SoulFire]));
pub static REPLACEABLE_BY_TREES: Lazy> = Lazy::new(|| {
HashSet::from_iter(vec![
- Block::Grass,
+ Block::ShortGrass,
Block::Fern,
Block::DeadBush,
Block::Vine,
@@ -2042,7 +2042,7 @@ pub static ENCHANTMENT_POWER_TRANSMITTER: Lazy> = Lazy::new(|| {
Block::Air,
Block::Water,
Block::Lava,
- Block::Grass,
+ Block::ShortGrass,
Block::Fern,
Block::DeadBush,
Block::Seagrass,
@@ -2497,7 +2497,7 @@ pub static REPLACEABLE: Lazy> = Lazy::new(|| {
Block::Air,
Block::Water,
Block::Lava,
- Block::Grass,
+ Block::ShortGrass,
Block::Fern,
Block::DeadBush,
Block::Seagrass,
diff --git a/azalea/src/accept_resource_packs.rs b/azalea/src/accept_resource_packs.rs
index 281af420f..13dc0746f 100644
--- a/azalea/src/accept_resource_packs.rs
+++ b/azalea/src/accept_resource_packs.rs
@@ -34,6 +34,7 @@ fn accept_resource_pack(
send_packet_events.send(SendPacketEvent {
entity: event.entity,
packet: ServerboundResourcePackPacket {
+ id: event.id,
action: serverbound_resource_pack_packet::Action::Accepted,
}
.get(),
@@ -41,6 +42,7 @@ fn accept_resource_pack(
send_packet_events.send(SendPacketEvent {
entity: event.entity,
packet: ServerboundResourcePackPacket {
+ id: event.id,
action: serverbound_resource_pack_packet::Action::SuccessfullyLoaded,
}
.get(),