aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md1
-rw-r--r--Cargo.lock42
-rw-r--r--Cargo.toml2
-rw-r--r--README.md2
-rw-r--r--azalea-block/src/generated.rs86
-rw-r--r--azalea-client/src/plugins/attack.rs11
-rw-r--r--azalea-client/src/plugins/interact/mod.rs22
-rw-r--r--azalea-client/src/plugins/packet/game/mod.rs10
-rw-r--r--azalea-client/src/test_utils/simulation.rs1
-rw-r--r--azalea-entity/src/data.rs8
-rw-r--r--azalea-entity/src/dimensions.rs2
-rw-r--r--azalea-entity/src/metadata.rs539
-rw-r--r--azalea-entity/src/particle.rs4
-rw-r--r--azalea-inventory/src/components/mod.rs109
-rw-r--r--azalea-inventory/src/default_components/generated.rs2450
-rw-r--r--azalea-inventory/src/slot.rs9
-rw-r--r--azalea-language/src/en_us.json123
-rw-r--r--azalea-physics/src/collision/blocks.rs3209
-rw-r--r--azalea-protocol/src/common/recipe.rs25
-rw-r--r--azalea-protocol/src/packets/game/c_game_rule_values.rs9
-rw-r--r--azalea-protocol/src/packets/game/c_low_disk_space_warning.rs5
-rw-r--r--azalea-protocol/src/packets/game/c_set_entity_data.rs22
-rw-r--r--azalea-protocol/src/packets/game/c_set_time.rs13
-rw-r--r--azalea-protocol/src/packets/game/mod.rs5
-rw-r--r--azalea-protocol/src/packets/game/s_attack.rs8
-rw-r--r--azalea-protocol/src/packets/game/s_client_command.rs1
-rw-r--r--azalea-protocol/src/packets/game/s_interact.rs71
-rw-r--r--azalea-protocol/src/packets/game/s_set_game_rule.rs15
-rw-r--r--azalea-protocol/src/packets/game/s_spectate_entity.rs8
-rw-r--r--azalea-protocol/src/packets/mod.rs4
-rw-r--r--azalea-registry/src/builtin.rs140
-rw-r--r--azalea-registry/src/data.rs210
-rw-r--r--azalea-registry/src/tags/blocks.rs676
-rw-r--r--azalea-registry/src/tags/entities.rs7
-rw-r--r--azalea-registry/src/tags/fluids.rs8
-rw-r--r--azalea-registry/src/tags/items.rs138
-rw-r--r--azalea-world/src/chunk/mod.rs8
-rw-r--r--azalea/examples/testbot/commands/debug.rs16
-rw-r--r--codegen/README.md2
-rw-r--r--codegen/genentities.py7
-rw-r--r--codegen/lib/code/data_components.py27
-rw-r--r--codegen/lib/code/entity.py49
-rw-r--r--codegen/lib/code/packet.py106
-rw-r--r--codegen/lib/code/registry.py2
-rw-r--r--codegen/lib/code/tags.py39
-rw-r--r--codegen/lib/code/utils.py72
-rw-r--r--codegen/lib/download.py45
-rw-r--r--codegen/lib/extract.py83
-rw-r--r--codegen/lib/mappings.py93
-rw-r--r--codegen/migrate.py4
50 files changed, 4765 insertions, 3783 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index cc609b9d..ab5e937b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -26,6 +26,7 @@ is breaking anyways, semantic versioning is not followed.
### Changed
+- Update to Minecraft 26.1.
- Rename `Instance` to `World` (and rename other related types).
- Move the `Client` struct out of `azalea-client` into `azalea`.
- `Client::ecs` is now an `RwLock` instead of a `Mutex`.
diff --git a/Cargo.lock b/Cargo.lock
index 4ff091ed..ca1ba56a 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -235,7 +235,7 @@ dependencies = [
[[package]]
name = "azalea"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-auth",
"azalea-block",
@@ -275,7 +275,7 @@ dependencies = [
[[package]]
name = "azalea-auth"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-buf",
"azalea-crypto",
@@ -295,7 +295,7 @@ dependencies = [
[[package]]
name = "azalea-block"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-block-macros",
"azalea-buf",
@@ -304,7 +304,7 @@ dependencies = [
[[package]]
name = "azalea-block-macros"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"proc-macro2",
"quote",
@@ -313,7 +313,7 @@ dependencies = [
[[package]]
name = "azalea-brigadier"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-buf",
"azalea-chat",
@@ -324,7 +324,7 @@ dependencies = [
[[package]]
name = "azalea-buf"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-buf-macros",
"byteorder",
@@ -338,7 +338,7 @@ dependencies = [
[[package]]
name = "azalea-buf-macros"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"proc-macro2",
"quote",
@@ -347,7 +347,7 @@ dependencies = [
[[package]]
name = "azalea-chat"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-buf",
"azalea-language",
@@ -360,7 +360,7 @@ dependencies = [
[[package]]
name = "azalea-client"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"async-compat",
"azalea-auth",
@@ -398,7 +398,7 @@ dependencies = [
[[package]]
name = "azalea-core"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-buf",
"azalea-chat",
@@ -418,7 +418,7 @@ dependencies = [
[[package]]
name = "azalea-crypto"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"aes",
"azalea-buf",
@@ -437,7 +437,7 @@ dependencies = [
[[package]]
name = "azalea-entity"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-block",
"azalea-buf",
@@ -467,7 +467,7 @@ dependencies = [
[[package]]
name = "azalea-inventory"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-auth",
"azalea-buf",
@@ -484,7 +484,7 @@ dependencies = [
[[package]]
name = "azalea-inventory-macros"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"proc-macro2",
"quote",
@@ -493,7 +493,7 @@ dependencies = [
[[package]]
name = "azalea-language"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"compact_str",
"serde_json",
@@ -501,7 +501,7 @@ dependencies = [
[[package]]
name = "azalea-physics"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-block",
"azalea-core",
@@ -518,7 +518,7 @@ dependencies = [
[[package]]
name = "azalea-protocol"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-auth",
"azalea-block",
@@ -555,7 +555,7 @@ dependencies = [
[[package]]
name = "azalea-protocol-macros"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"proc-macro2",
"quote",
@@ -564,7 +564,7 @@ dependencies = [
[[package]]
name = "azalea-registry"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-buf",
"azalea-registry-macros",
@@ -574,7 +574,7 @@ dependencies = [
[[package]]
name = "azalea-registry-macros"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"quote",
"syn",
@@ -582,7 +582,7 @@ dependencies = [
[[package]]
name = "azalea-world"
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1-rc-2"
dependencies = [
"azalea-block",
"azalea-buf",
diff --git a/Cargo.toml b/Cargo.toml
index 683bdfb9..253612d7 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -23,7 +23,7 @@ resolver = "3"
# --- Workspace Settings ---
[workspace.package]
-version = "0.15.0+mc1.21.11"
+version = "0.15.0+mc26.1"
edition = "2024"
license = "MIT"
repository = "https://github.com/azalea-rs/azalea"
diff --git a/README.md b/README.md
index 55a5fe5d..56de93e1 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ A collection of Rust crates for making Minecraft bots, clients, and tools.
<!-- The line below is automatically read and updated by the migrate script, so don't change it manually. -->
-_Currently supported Minecraft version: `1.21.11`._
+_Currently supported Minecraft version: `26.1`._
> [!WARNING]
> Many parts of Azalea are still unfinished and will receive breaking changes in the future. Most breaking changes will be listed in the [changelog](CHANGELOG.md).
diff --git a/azalea-block/src/generated.rs b/azalea-block/src/generated.rs
index 3eb1109c..66b17114 100644
--- a/azalea-block/src/generated.rs
+++ b/azalea-block/src/generated.rs
@@ -199,6 +199,10 @@ make_block_states! {
Bit = "bit",
Banjo = "banjo",
Pling = "pling",
+ Trumpet = "trumpet",
+ TrumpetExposed = "trumpet_exposed",
+ TrumpetOxidized = "trumpet_oxidized",
+ TrumpetWeathered = "trumpet_weathered",
Zombie = "zombie",
Skeleton = "skeleton",
Creeper = "creeper",
@@ -1346,6 +1350,7 @@ make_block_states! {
"facing": FacingCubic::North,
},
dandelion => BlockBehavior::new(), {},
+ golden_dandelion => BlockBehavior::new(), {},
torchflower => BlockBehavior::new(), {},
poppy => BlockBehavior::new(), {},
blue_orchid => BlockBehavior::new(), {},
@@ -1503,43 +1508,43 @@ make_block_states! {
"lit": Lit(false),
},
oak_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
spruce_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
birch_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
acacia_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
cherry_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
jungle_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
dark_oak_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
pale_oak_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
mangrove_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
bamboo_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
oak_door => BlockBehavior::new().strength(3.0, 3.0), {
@@ -1605,62 +1610,62 @@ make_block_states! {
},
oak_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
spruce_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
birch_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
acacia_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
cherry_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
jungle_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
dark_oak_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
pale_oak_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
crimson_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
warped_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
mangrove_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
bamboo_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"attached": Attached(false),
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
oak_wall_hanging_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
@@ -2273,6 +2278,7 @@ make_block_states! {
potted_mangrove_propagule => BlockBehavior::new(), {},
potted_fern => BlockBehavior::new(), {},
potted_dandelion => BlockBehavior::new(), {},
+ potted_golden_dandelion => BlockBehavior::new(), {},
potted_poppy => BlockBehavior::new(), {},
potted_blue_orchid => BlockBehavior::new(), {},
potted_allium => BlockBehavior::new(), {},
@@ -2716,52 +2722,52 @@ make_block_states! {
"half": Half::Lower,
},
white_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
orange_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
magenta_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
light_blue_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
yellow_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
lime_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
pink_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
gray_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
light_gray_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
cyan_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
purple_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
blue_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
brown_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
green_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
red_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
black_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
},
white_wall_banner => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
"facing": FacingCardinal::North,
@@ -3913,11 +3919,11 @@ make_block_states! {
"powered": Powered(false),
},
crimson_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
warped_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
- "rotation": Rotation::_0,
+ "rotation": Rotation::_8,
"waterlogged": Waterlogged(false),
},
crimson_wall_sign => BlockBehavior::new().strength(1.0, 1.0).force_solid(true), {
diff --git a/azalea-client/src/plugins/attack.rs b/azalea-client/src/plugins/attack.rs
index 41ce114d..4cafc9f8 100644
--- a/azalea-client/src/plugins/attack.rs
+++ b/azalea-client/src/plugins/attack.rs
@@ -1,10 +1,9 @@
use azalea_core::{game_type::GameMode, tick::GameTick};
use azalea_entity::{
- Attributes, Crouching, Physics, indexing::EntityIdIndex, metadata::Sprinting,
- update_bounding_box,
+ Attributes, Physics, indexing::EntityIdIndex, metadata::Sprinting, update_bounding_box,
};
use azalea_physics::PhysicsSystems;
-use azalea_protocol::packets::game::s_interact::{self, ServerboundInteract};
+use azalea_protocol::packets::game::ServerboundAttack;
use bevy_app::{App, Plugin, Update};
use bevy_ecs::prelude::*;
use derive_more::{Deref, DerefMut};
@@ -59,7 +58,6 @@ pub fn handle_attack_queued(
&mut Sprinting,
&AttackQueued,
&LocalGameMode,
- &Crouching,
&EntityIdIndex,
)>,
) {
@@ -70,7 +68,6 @@ pub fn handle_attack_queued(
mut sprinting,
attack_queued,
game_mode,
- crouching,
entity_id_index,
) in &mut query
{
@@ -84,10 +81,8 @@ pub fn handle_attack_queued(
commands.trigger(SendGamePacketEvent::new(
client_entity,
- ServerboundInteract {
+ ServerboundAttack {
entity_id: target_entity_id,
- action: s_interact::ActionType::Attack,
- using_secondary_action: **crouching,
},
));
commands.trigger(SwingArmEvent {
diff --git a/azalea-client/src/plugins/interact/mod.rs b/azalea-client/src/plugins/interact/mod.rs
index 04986de7..0eb43818 100644
--- a/azalea-client/src/plugins/interact/mod.rs
+++ b/azalea-client/src/plugins/interact/mod.rs
@@ -4,6 +4,7 @@ use std::collections::HashMap;
use azalea_block::BlockState;
use azalea_core::{
+ delta::LpVec3,
direction::Direction,
game_type::GameMode,
hit_result::{BlockHitResult, HitResult},
@@ -25,10 +26,8 @@ use azalea_physics::{
local_player::PhysicsState,
};
use azalea_protocol::packets::game::{
- ServerboundInteract, ServerboundUseItem,
- s_interact::{self, InteractionHand},
- s_swing::ServerboundSwing,
- s_use_item_on::ServerboundUseItemOn,
+ ServerboundInteract, ServerboundUseItem, s_interact::InteractionHand,
+ s_swing::ServerboundSwing, s_use_item_on::ServerboundUseItemOn,
};
use azalea_world::World;
use bevy_app::{App, Plugin, Update};
@@ -350,12 +349,10 @@ pub fn handle_entity_interact(
}
};
- let mut interact = ServerboundInteract {
+ let interact = ServerboundInteract {
entity_id,
- action: s_interact::ActionType::InteractAt {
- location,
- hand: InteractionHand::MainHand,
- },
+ hand: InteractionHand::MainHand,
+ location: LpVec3::from(location),
using_secondary_action: physics_state.trying_to_crouch,
};
commands.trigger(SendGamePacketEvent::new(trigger.client, interact.clone()));
@@ -364,11 +361,8 @@ pub fn handle_entity_interact(
// in certain cases when interacting with armor stands
let consumes_action = false;
if !consumes_action {
- // but yes, most of the time vanilla really does send two interact packets like
- // this
- interact.action = s_interact::ActionType::Interact {
- hand: InteractionHand::MainHand,
- };
+ // but yes, most of the time vanilla really does send two identical interact
+ // packets like this
commands.trigger(SendGamePacketEvent::new(trigger.client, interact));
}
}
diff --git a/azalea-client/src/plugins/packet/game/mod.rs b/azalea-client/src/plugins/packet/game/mod.rs
index ecc1bc2f..f1bff086 100644
--- a/azalea-client/src/plugins/packet/game/mod.rs
+++ b/azalea-client/src/plugins/packet/game/mod.rs
@@ -197,6 +197,8 @@ pub fn process_packet(ecs: &mut World, player: Entity, packet: &ClientboundGameP
debug_entity_value,
debug_event,
game_test_highlight_pos,
+ low_disk_space_warning,
+ game_rule_values,
]
);
}
@@ -1644,6 +1646,14 @@ impl GamePacketHandler<'_> {
pub fn game_test_highlight_pos(&mut self, p: &ClientboundGameTestHighlightPos) {
debug!("Got game test highlight pos packet {p:?}");
}
+
+ pub fn low_disk_space_warning(&mut self, p: &ClientboundLowDiskSpaceWarning) {
+ debug!("Got low disk space warning packet {p:?}");
+ }
+
+ pub fn game_rule_values(&mut self, p: &ClientboundGameRuleValues) {
+ debug!("Got game rule values packet {p:?}");
+ }
}
struct MoveEntity {
diff --git a/azalea-client/src/test_utils/simulation.rs b/azalea-client/src/test_utils/simulation.rs
index 6af7ba59..561a4986 100644
--- a/azalea-client/src/test_utils/simulation.rs
+++ b/azalea-client/src/test_utils/simulation.rs
@@ -389,6 +389,7 @@ pub fn make_basic_empty_chunk(
for _ in 0..section_count {
sections.push(Section {
block_count: 0,
+ fluid_count: 0,
states: PalettedContainer::<BlockState>::new(),
biomes: PalettedContainer::<Biome>::new(),
});
diff --git a/azalea-entity/src/data.rs b/azalea-entity/src/data.rs
index e481b9d1..3ea86ffe 100644
--- a/azalea-entity/src/data.rs
+++ b/azalea-entity/src/data.rs
@@ -81,12 +81,16 @@ pub enum EntityDataValue {
OptionalUnsignedInt(OptionalUnsignedInt),
Pose(Pose),
CatVariant(azalea_registry::data::CatVariant),
+ CatSoundVariant(azalea_registry::data::CatSoundVariant),
CowVariant(azalea_registry::data::CowVariant),
+ CowSoundVariant(azalea_registry::data::CowSoundVariant),
WolfVariant(azalea_registry::data::WolfVariant),
WolfSoundVariant(azalea_registry::data::WolfSoundVariant),
FrogVariant(azalea_registry::data::FrogVariant),
PigVariant(azalea_registry::data::PigVariant),
+ PigSoundVariant(azalea_registry::data::PigSoundVariant),
ChickenVariant(azalea_registry::data::ChickenVariant),
+ ChickenSoundVariant(azalea_registry::data::ChickenSoundVariant),
ZombieNautilusVariant(azalea_registry::data::ZombieNautilusVariant),
OptionalGlobalPos(Option<Box<GlobalPos>>),
PaintingVariant(azalea_registry::data::PaintingVariant),
@@ -102,10 +106,10 @@ pub enum EntityDataValue {
const _: () = assert!(size_of::<EntityDataValue>() == 24);
-#[derive(Clone, Debug, PartialEq)]
+#[derive(Clone, Debug, PartialEq, Default)]
pub struct OptionalUnsignedInt(pub Option<u32>);
-#[derive(AzBuf, Clone, Debug, PartialEq)]
+#[derive(AzBuf, Clone, Debug, PartialEq, Default)]
pub struct Quaternion {
pub x: f32,
pub y: f32,
diff --git a/azalea-entity/src/dimensions.rs b/azalea-entity/src/dimensions.rs
index 6c527ab6..4d39380b 100644
--- a/azalea-entity/src/dimensions.rs
+++ b/azalea-entity/src/dimensions.rs
@@ -170,7 +170,7 @@ impl From<EntityKind> for EntityDimensions {
EntityKind::Player => EntityDimensions::new(0.6, 1.8).eye_height(1.62),
EntityKind::PolarBear => EntityDimensions::new(1.4, 1.4),
EntityKind::Pufferfish => EntityDimensions::new(0.7, 0.7).eye_height(0.455),
- EntityKind::Rabbit => EntityDimensions::new(0.4, 0.5),
+ EntityKind::Rabbit => EntityDimensions::new(0.49, 0.6).eye_height(0.59),
EntityKind::Ravager => EntityDimensions::new(1.95, 2.2),
EntityKind::Salmon => EntityDimensions::new(0.7, 0.4).eye_height(0.26),
EntityKind::Sheep => EntityDimensions::new(0.9, 1.3).eye_height(1.235),
diff --git a/azalea-entity/src/metadata.rs b/azalea-entity/src/metadata.rs
index 3c49bf53..41dd01f1 100644
--- a/azalea-entity/src/metadata.rs
+++ b/azalea-entity/src/metadata.rs
@@ -106,10 +106,11 @@
//! - [Mule]
//! - [AbstractTameable]
//! - [Cat]
-//! - [Nautilus]
//! - [Parrot]
//! - [Wolf]
-//! - [ZombieNautilus]
+//! - [AbstractNautilus]
+//! - [Nautilus]
+//! - [ZombieNautilus]
//! - [AbstractVillager]
//! - [Villager]
//! - [WanderingTrader]
@@ -382,10 +383,11 @@ pub struct TicksFrozen(pub i32);
/// - [Mule]
/// - [AbstractTameable]
/// - [Cat]
-/// - [Nautilus]
/// - [Parrot]
/// - [Wolf]
-/// - [ZombieNautilus]
+/// - [AbstractNautilus]
+/// - [Nautilus]
+/// - [ZombieNautilus]
/// - [AbstractVillager]
/// - [Villager]
/// - [WanderingTrader]
@@ -2920,10 +2922,11 @@ pub struct SleepingPos(pub Option<BlockPos>);
/// - [Mule]
/// - [AbstractTameable]
/// - [Cat]
-/// - [Nautilus]
/// - [Parrot]
/// - [Wolf]
-/// - [ZombieNautilus]
+/// - [AbstractNautilus]
+/// - [Nautilus]
+/// - [ZombieNautilus]
/// - [AbstractVillager]
/// - [Villager]
/// - [WanderingTrader]
@@ -3499,10 +3502,11 @@ pub struct Aggressive(pub bool);
/// - [Mule]
/// - [AbstractTameable]
/// - [Cat]
-/// - [Nautilus]
/// - [Parrot]
/// - [Wolf]
-/// - [ZombieNautilus]
+/// - [AbstractNautilus]
+/// - [Nautilus]
+/// - [ZombieNautilus]
/// - [AbstractVillager]
/// - [Villager]
/// - [WanderingTrader]
@@ -4014,10 +4018,11 @@ impl Default for MagmaCubeMetadataBundle {
/// - [Mule]
/// - [AbstractTameable]
/// - [Cat]
-/// - [Nautilus]
/// - [Parrot]
/// - [Wolf]
-/// - [ZombieNautilus]
+/// - [AbstractNautilus]
+/// - [Nautilus]
+/// - [ZombieNautilus]
/// - [AbstractVillager]
/// - [Villager]
/// - [WanderingTrader]
@@ -4521,6 +4526,9 @@ impl Default for SnowGolemMetadataBundle {
/// A metadata field for [Tadpole].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct TadpoleFromBucket(pub bool);
+/// A metadata field for [Tadpole].
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
+pub struct TadpoleAgeLocked(pub bool);
/// The marker component for entities of type `minecraft:tadpole`.
///
/// # Metadata
@@ -4529,6 +4537,7 @@ pub struct TadpoleFromBucket(pub bool);
/// to have, in addition to the metadata components from parent types:
///
/// - [TadpoleFromBucket]
+/// - [TadpoleAgeLocked]
///
/// # Parents
///
@@ -4555,6 +4564,9 @@ impl Tadpole {
16 => {
entity.insert(TadpoleFromBucket(d.value.into_boolean()?));
}
+ 17 => {
+ entity.insert(TadpoleAgeLocked(d.value.into_boolean()?));
+ }
_ => {}
}
Ok(())
@@ -4569,6 +4581,7 @@ pub struct TadpoleMetadataBundle {
_marker: Tadpole,
parent: AbstractCreatureMetadataBundle,
tadpole_from_bucket: TadpoleFromBucket,
+ tadpole_age_locked: TadpoleAgeLocked,
}
impl Default for TadpoleMetadataBundle {
fn default() -> Self {
@@ -4576,6 +4589,7 @@ impl Default for TadpoleMetadataBundle {
_marker: Tadpole,
parent: Default::default(),
tadpole_from_bucket: TadpoleFromBucket(false),
+ tadpole_age_locked: TadpoleAgeLocked(false),
}
}
}
@@ -4583,6 +4597,9 @@ impl Default for TadpoleMetadataBundle {
/// A metadata field for [AbstractAgeable].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct AbstractAgeableBaby(pub bool);
+/// A metadata field for [AbstractAgeable].
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
+pub struct AbstractAgeableAgeLocked(pub bool);
/// An abstract entity marker component.
///
/// # Metadata
@@ -4592,6 +4609,7 @@ pub struct AbstractAgeableBaby(pub bool);
/// types:
///
/// - [AbstractAgeableBaby]
+/// - [AbstractAgeableAgeLocked]
///
/// # Parents
///
@@ -4642,10 +4660,11 @@ pub struct AbstractAgeableBaby(pub bool);
/// - [Mule]
/// - [AbstractTameable]
/// - [Cat]
-/// - [Nautilus]
/// - [Parrot]
/// - [Wolf]
-/// - [ZombieNautilus]
+/// - [AbstractNautilus]
+/// - [Nautilus]
+/// - [ZombieNautilus]
/// - [AbstractVillager]
/// - [Villager]
/// - [WanderingTrader]
@@ -4661,6 +4680,9 @@ impl AbstractAgeable {
16 => {
entity.insert(AbstractAgeableBaby(d.value.into_boolean()?));
}
+ 17 => {
+ entity.insert(AbstractAgeableAgeLocked(d.value.into_boolean()?));
+ }
_ => {}
}
Ok(())
@@ -4675,6 +4697,7 @@ pub struct AbstractAgeableMetadataBundle {
_marker: AbstractAgeable,
parent: AbstractCreatureMetadataBundle,
abstract_ageable_baby: AbstractAgeableBaby,
+ abstract_ageable_age_locked: AbstractAgeableAgeLocked,
}
impl Default for AbstractAgeableMetadataBundle {
fn default() -> Self {
@@ -4682,6 +4705,7 @@ impl Default for AbstractAgeableMetadataBundle {
_marker: AbstractAgeable,
parent: Default::default(),
abstract_ageable_baby: AbstractAgeableBaby(false),
+ abstract_ageable_age_locked: AbstractAgeableAgeLocked(false),
}
}
}
@@ -4724,11 +4748,11 @@ impl Dolphin {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAgeable::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAgeable::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(GotFish(d.value.into_boolean()?));
}
- 18 => {
+ 19 => {
entity.insert(MoistnessLevel(d.value.into_int()?));
}
_ => {}
@@ -4787,7 +4811,7 @@ impl Squid {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAgeable::apply_metadata(entity, d)?,
+ 0..=17 => AbstractAgeable::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -4847,8 +4871,8 @@ impl GlowSquid {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => Squid::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => Squid::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(DarkTicksRemaining(d.value.into_int()?));
}
_ => {}
@@ -4929,10 +4953,11 @@ impl Default for GlowSquidMetadataBundle {
/// - [Mule]
/// - [AbstractTameable]
/// - [Cat]
-/// - [Nautilus]
/// - [Parrot]
/// - [Wolf]
-/// - [ZombieNautilus]
+/// - [AbstractNautilus]
+/// - [Nautilus]
+/// - [ZombieNautilus]
#[derive(Component)]
pub struct AbstractAnimal;
impl AbstractAnimal {
@@ -4941,7 +4966,7 @@ impl AbstractAnimal {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAgeable::apply_metadata(entity, d)?,
+ 0..=17 => AbstractAgeable::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -5001,8 +5026,8 @@ impl Armadillo {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(ArmadilloState(d.value.into_armadillo_state()?));
}
_ => {}
@@ -5073,14 +5098,14 @@ impl Axolotl {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(AxolotlVariant(d.value.into_int()?));
}
- 18 => {
+ 19 => {
entity.insert(PlayingDead(d.value.into_boolean()?));
}
- 19 => {
+ 20 => {
entity.insert(AxolotlFromBucket(d.value.into_boolean()?));
}
_ => {}
@@ -5159,14 +5184,14 @@ impl Bee {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
let bitfield = d.value.into_byte()?;
entity.insert(HasNectar(bitfield & 0x8 != 0));
entity.insert(HasStung(bitfield & 0x4 != 0));
entity.insert(BeeRolling(bitfield & 0x2 != 0));
}
- 18 => {
+ 19 => {
entity.insert(BeeAngerEndTime(d.value.into_long()?));
}
_ => {}
@@ -5203,6 +5228,9 @@ impl Default for BeeMetadataBundle {
/// A metadata field for [Chicken].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ChickenVariant(pub azalea_registry::data::ChickenVariant);
+/// A metadata field for [Chicken].
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
+pub struct ChickenSoundVariant(pub azalea_registry::data::ChickenSoundVariant);
/// The marker component for entities of type `minecraft:chicken`.
///
/// # Metadata
@@ -5211,6 +5239,7 @@ pub struct ChickenVariant(pub azalea_registry::data::ChickenVariant);
/// to have, in addition to the metadata components from parent types:
///
/// - [ChickenVariant]
+/// - [ChickenSoundVariant]
///
/// # Parents
///
@@ -5235,10 +5264,13 @@ impl Chicken {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(ChickenVariant(d.value.into_chicken_variant()?));
}
+ 19 => {
+ entity.insert(ChickenSoundVariant(d.value.into_chicken_sound_variant()?));
+ }
_ => {}
}
Ok(())
@@ -5253,6 +5285,7 @@ pub struct ChickenMetadataBundle {
_marker: Chicken,
parent: AbstractAnimalMetadataBundle,
chicken_variant: ChickenVariant,
+ chicken_sound_variant: ChickenSoundVariant,
}
impl Default for ChickenMetadataBundle {
fn default() -> Self {
@@ -5260,6 +5293,9 @@ impl Default for ChickenMetadataBundle {
_marker: Chicken,
parent: Default::default(),
chicken_variant: ChickenVariant(azalea_registry::data::ChickenVariant::new_raw(0)),
+ chicken_sound_variant: ChickenSoundVariant(
+ azalea_registry::data::ChickenSoundVariant::new_raw(0),
+ ),
}
}
}
@@ -5267,6 +5303,9 @@ impl Default for ChickenMetadataBundle {
/// A metadata field for [Cow].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CowVariant(pub azalea_registry::data::CowVariant);
+/// A metadata field for [Cow].
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
+pub struct CowSoundVariant(pub azalea_registry::data::CowSoundVariant);
/// The marker component for entities of type `minecraft:cow`.
///
/// # Metadata
@@ -5275,6 +5314,7 @@ pub struct CowVariant(pub azalea_registry::data::CowVariant);
/// have, in addition to the metadata components from parent types:
///
/// - [CowVariant]
+/// - [CowSoundVariant]
///
/// # Parents
///
@@ -5299,10 +5339,13 @@ impl Cow {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(CowVariant(d.value.into_cow_variant()?));
}
+ 19 => {
+ entity.insert(CowSoundVariant(d.value.into_cow_sound_variant()?));
+ }
_ => {}
}
Ok(())
@@ -5317,6 +5360,7 @@ pub struct CowMetadataBundle {
_marker: Cow,
parent: AbstractAnimalMetadataBundle,
cow_variant: CowVariant,
+ cow_sound_variant: CowSoundVariant,
}
impl Default for CowMetadataBundle {
fn default() -> Self {
@@ -5324,6 +5368,7 @@ impl Default for CowMetadataBundle {
_marker: Cow,
parent: Default::default(),
cow_variant: CowVariant(azalea_registry::data::CowVariant::new_raw(0)),
+ cow_sound_variant: CowSoundVariant(azalea_registry::data::CowSoundVariant::new_raw(0)),
}
}
}
@@ -5399,11 +5444,11 @@ impl Fox {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(FoxKind(d.value.into_int()?));
}
- 18 => {
+ 19 => {
let bitfield = d.value.into_byte()?;
entity.insert(FoxSitting(bitfield & 0x1 != 0));
entity.insert(Faceplanted(bitfield & 0x40 != 0));
@@ -5413,10 +5458,10 @@ impl Fox {
entity.insert(FoxCrouching(bitfield & 0x4 != 0));
entity.insert(FoxInterested(bitfield & 0x8 != 0));
}
- 19 => {
+ 20 => {
entity.insert(TrustedId0(d.value.into_optional_living_entity_reference()?));
}
- 20 => {
+ 21 => {
entity.insert(TrustedId1(d.value.into_optional_living_entity_reference()?));
}
_ => {}
@@ -5501,11 +5546,11 @@ impl Frog {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(FrogVariant(d.value.into_frog_variant()?));
}
- 18 => {
+ 19 => {
entity.insert(TongueTarget(d.value.into_optional_unsigned_int()?));
}
_ => {}
@@ -5578,14 +5623,14 @@ impl Goat {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(IsScreamingGoat(d.value.into_boolean()?));
}
- 18 => {
+ 19 => {
entity.insert(HasLeftHorn(d.value.into_boolean()?));
}
- 19 => {
+ 20 => {
entity.insert(HasRightHorn(d.value.into_boolean()?));
}
_ => {}
@@ -5657,11 +5702,11 @@ impl HappyGhast {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(IsLeashHolder(d.value.into_boolean()?));
}
- 18 => {
+ 19 => {
entity.insert(StaysStill(d.value.into_boolean()?));
}
_ => {}
@@ -5726,8 +5771,8 @@ impl Hoglin {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(HoglinImmuneToZombification(d.value.into_boolean()?));
}
_ => {}
@@ -5791,8 +5836,8 @@ impl Mooshroom {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(MooshroomKind(d.value.into_int()?));
}
_ => {}
@@ -5855,8 +5900,8 @@ impl Ocelot {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(Trusting(d.value.into_boolean()?));
}
_ => {}
@@ -5951,27 +5996,27 @@ impl Panda {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(PandaUnhappyCounter(d.value.into_int()?));
}
- 18 => {
+ 19 => {
entity.insert(SneezeCounter(d.value.into_int()?));
}
- 19 => {
+ 20 => {
entity.insert(EatCounter(d.value.into_int()?));
}
- 20 => {
+ 21 => {
let bitfield = d.value.into_byte()?;
entity.insert(Sneezing(bitfield & 0x2 != 0));
entity.insert(PandaSitting(bitfield & 0x8 != 0));
entity.insert(OnBack(bitfield & 0x10 != 0));
entity.insert(PandaRolling(bitfield & 0x4 != 0));
}
- 21 => {
+ 22 => {
entity.insert(HiddenGene(d.value.into_byte()?));
}
- 22 => {
+ 23 => {
entity.insert(PandaFlags(d.value.into_byte()?));
}
_ => {}
@@ -6021,6 +6066,9 @@ pub struct PigBoostTime(pub i32);
/// A metadata field for [Pig].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct PigVariant(pub azalea_registry::data::PigVariant);
+/// A metadata field for [Pig].
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
+pub struct PigSoundVariant(pub azalea_registry::data::PigSoundVariant);
/// The marker component for entities of type `minecraft:pig`.
///
/// # Metadata
@@ -6030,6 +6078,7 @@ pub struct PigVariant(pub azalea_registry::data::PigVariant);
///
/// - [PigBoostTime]
/// - [PigVariant]
+/// - [PigSoundVariant]
///
/// # Parents
///
@@ -6054,13 +6103,16 @@ impl Pig {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(PigBoostTime(d.value.into_int()?));
}
- 18 => {
+ 19 => {
entity.insert(PigVariant(d.value.into_pig_variant()?));
}
+ 20 => {
+ entity.insert(PigSoundVariant(d.value.into_pig_sound_variant()?));
+ }
_ => {}
}
Ok(())
@@ -6076,6 +6128,7 @@ pub struct PigMetadataBundle {
parent: AbstractAnimalMetadataBundle,
pig_boost_time: PigBoostTime,
pig_variant: PigVariant,
+ pig_sound_variant: PigSoundVariant,
}
impl Default for PigMetadataBundle {
fn default() -> Self {
@@ -6084,6 +6137,7 @@ impl Default for PigMetadataBundle {
parent: Default::default(),
pig_boost_time: PigBoostTime(0),
pig_variant: PigVariant(azalea_registry::data::PigVariant::new_raw(0)),
+ pig_sound_variant: PigSoundVariant(azalea_registry::data::PigSoundVariant::new_raw(0)),
}
}
}
@@ -6124,8 +6178,8 @@ impl PolarBear {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(PolarBearStanding(d.value.into_boolean()?));
}
_ => {}
@@ -6188,8 +6242,8 @@ impl Rabbit {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(RabbitKind(d.value.into_int()?));
}
_ => {}
@@ -6252,8 +6306,8 @@ impl Sheep {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
let bitfield = d.value.into_byte()?;
entity.insert(SheepSheared(bitfield & 0x10 != 0));
}
@@ -6321,11 +6375,11 @@ impl Sniffer {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(SnifferState(d.value.into_sniffer_state()?));
}
- 18 => {
+ 19 => {
entity.insert(DropSeedAtTick(d.value.into_int()?));
}
_ => {}
@@ -6394,11 +6448,11 @@ impl Strider {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(StriderBoostTime(d.value.into_int()?));
}
- 18 => {
+ 19 => {
entity.insert(Suffocating(d.value.into_boolean()?));
}
_ => {}
@@ -6467,11 +6521,11 @@ impl Turtle {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(HasEgg(d.value.into_boolean()?));
}
- 18 => {
+ 19 => {
entity.insert(LayingEgg(d.value.into_boolean()?));
}
_ => {}
@@ -6558,8 +6612,8 @@ impl AbstractHorse {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
let bitfield = d.value.into_byte()?;
entity.insert(Tamed(bitfield & 0x2 != 0));
entity.insert(Eating(bitfield & 0x10 != 0));
@@ -6637,11 +6691,11 @@ impl Camel {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=17 => AbstractHorse::apply_metadata(entity, d)?,
- 18 => {
+ 0..=18 => AbstractHorse::apply_metadata(entity, d)?,
+ 19 => {
entity.insert(CamelDash(d.value.into_boolean()?));
}
- 19 => {
+ 20 => {
entity.insert(LastPoseChangeTick(d.value.into_long()?));
}
_ => {}
@@ -6703,7 +6757,7 @@ impl CamelHusk {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=19 => Camel::apply_metadata(entity, d)?,
+ 0..=20 => Camel::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -6763,8 +6817,8 @@ impl Horse {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=17 => AbstractHorse::apply_metadata(entity, d)?,
- 18 => {
+ 0..=18 => AbstractHorse::apply_metadata(entity, d)?,
+ 19 => {
entity.insert(HorseTypeVariant(d.value.into_int()?));
}
_ => {}
@@ -6823,7 +6877,7 @@ impl SkeletonHorse {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=17 => AbstractHorse::apply_metadata(entity, d)?,
+ 0..=18 => AbstractHorse::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -6878,7 +6932,7 @@ impl ZombieHorse {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=17 => AbstractHorse::apply_metadata(entity, d)?,
+ 0..=18 => AbstractHorse::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -6942,8 +6996,8 @@ impl AbstractChestedHorse {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=17 => AbstractHorse::apply_metadata(entity, d)?,
- 18 => {
+ 0..=18 => AbstractHorse::apply_metadata(entity, d)?,
+ 19 => {
entity.insert(Chest(d.value.into_boolean()?));
}
_ => {}
@@ -7003,7 +7057,7 @@ impl Donkey {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=18 => AbstractChestedHorse::apply_metadata(entity, d)?,
+ 0..=19 => AbstractChestedHorse::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -7068,11 +7122,11 @@ impl Llama {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=18 => AbstractChestedHorse::apply_metadata(entity, d)?,
- 19 => {
+ 0..=19 => AbstractChestedHorse::apply_metadata(entity, d)?,
+ 20 => {
entity.insert(Strength(d.value.into_int()?));
}
- 20 => {
+ 21 => {
entity.insert(LlamaVariant(d.value.into_int()?));
}
_ => {}
@@ -7135,7 +7189,7 @@ impl TraderLlama {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=20 => Llama::apply_metadata(entity, d)?,
+ 0..=21 => Llama::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -7191,7 +7245,7 @@ impl Mule {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=18 => AbstractChestedHorse::apply_metadata(entity, d)?,
+ 0..=19 => AbstractChestedHorse::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -7251,10 +7305,11 @@ pub struct Owneruuid(pub Option<Uuid>);
/// # Children
///
/// - [Cat]
-/// - [Nautilus]
/// - [Parrot]
/// - [Wolf]
-/// - [ZombieNautilus]
+/// - [AbstractNautilus]
+/// - [Nautilus]
+/// - [ZombieNautilus]
#[derive(Component)]
pub struct AbstractTameable;
impl AbstractTameable {
@@ -7263,13 +7318,13 @@ impl AbstractTameable {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAnimal::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAnimal::apply_metadata(entity, d)?,
+ 18 => {
let bitfield = d.value.into_byte()?;
entity.insert(Tame(bitfield & 0x4 != 0));
entity.insert(InSittingPose(bitfield & 0x1 != 0));
}
- 18 => {
+ 19 => {
entity.insert(Owneruuid(d.value.into_optional_living_entity_reference()?));
}
_ => {}
@@ -7313,6 +7368,9 @@ pub struct RelaxStateOne(pub bool);
/// A metadata field for [Cat].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct CatCollarColor(pub i32);
+/// A metadata field for [Cat].
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
+pub struct CatSoundVariant(pub azalea_registry::data::CatSoundVariant);
/// The marker component for entities of type `minecraft:cat`.
///
/// # Metadata
@@ -7324,6 +7382,7 @@ pub struct CatCollarColor(pub i32);
/// - [IsLying]
/// - [RelaxStateOne]
/// - [CatCollarColor]
+/// - [CatSoundVariant]
///
/// # Parents
///
@@ -7349,19 +7408,22 @@ impl Cat {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=18 => AbstractTameable::apply_metadata(entity, d)?,
- 19 => {
+ 0..=19 => AbstractTameable::apply_metadata(entity, d)?,
+ 20 => {
entity.insert(CatVariant(d.value.into_cat_variant()?));
}
- 20 => {
+ 21 => {
entity.insert(IsLying(d.value.into_boolean()?));
}
- 21 => {
+ 22 => {
entity.insert(RelaxStateOne(d.value.into_boolean()?));
}
- 22 => {
+ 23 => {
entity.insert(CatCollarColor(d.value.into_int()?));
}
+ 24 => {
+ entity.insert(CatSoundVariant(d.value.into_cat_sound_variant()?));
+ }
_ => {}
}
Ok(())
@@ -7379,6 +7441,7 @@ pub struct CatMetadataBundle {
is_lying: IsLying,
relax_state_one: RelaxStateOne,
cat_collar_color: CatCollarColor,
+ cat_sound_variant: CatSoundVariant,
}
impl Default for CatMetadataBundle {
fn default() -> Self {
@@ -7389,72 +7452,7 @@ impl Default for CatMetadataBundle {
is_lying: IsLying(false),
relax_state_one: RelaxStateOne(false),
cat_collar_color: CatCollarColor(Default::default()),
- }
- }
-}
-
-/// A metadata field for [Nautilus].
-#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
-pub struct NautilusDash(pub bool);
-/// The marker component for entities of type `minecraft:nautilus`.
-///
-/// # Metadata
-///
-/// These are the metadata components that all `Nautilus` entities are
-/// guaranteed to have, in addition to the metadata components from parent
-/// types:
-///
-/// - [NautilusDash]
-///
-/// # Parents
-///
-/// Entities with `Nautilus` will also have the following marker components and
-/// their metadata fields:
-///
-/// - [AbstractTameable]
-/// - [AbstractAnimal]
-/// - [AbstractAgeable]
-/// - [AbstractCreature]
-/// - [AbstractInsentient]
-/// - [AbstractLiving]
-/// - [AbstractEntity]
-///
-/// # Children
-///
-/// This entity type has no children types.
-#[derive(Component)]
-pub struct Nautilus;
-impl Nautilus {
- fn apply_metadata(
- entity: &mut bevy_ecs::system::EntityCommands,
- d: EntityDataItem,
- ) -> Result<(), UpdateMetadataError> {
- match d.index {
- 0..=18 => AbstractTameable::apply_metadata(entity, d)?,
- 19 => {
- entity.insert(NautilusDash(d.value.into_boolean()?));
- }
- _ => {}
- }
- Ok(())
- }
-}
-
-/// The metadata bundle for [Nautilus].
-///
-/// This type should generally not be used directly.
-#[derive(Bundle)]
-pub struct NautilusMetadataBundle {
- _marker: Nautilus,
- parent: AbstractTameableMetadataBundle,
- nautilus_dash: NautilusDash,
-}
-impl Default for NautilusMetadataBundle {
- fn default() -> Self {
- Self {
- _marker: Nautilus,
- parent: Default::default(),
- nautilus_dash: NautilusDash(false),
+ cat_sound_variant: CatSoundVariant(azalea_registry::data::CatSoundVariant::new_raw(0)),
}
}
}
@@ -7495,8 +7493,8 @@ impl Parrot {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=18 => AbstractTameable::apply_metadata(entity, d)?,
- 19 => {
+ 0..=19 => AbstractTameable::apply_metadata(entity, d)?,
+ 20 => {
entity.insert(ParrotVariant(d.value.into_int()?));
}
_ => {}
@@ -7538,7 +7536,7 @@ pub struct WolfAngerEndTime(pub i64);
pub struct WolfVariant(pub azalea_registry::data::WolfVariant);
/// A metadata field for [Wolf].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
-pub struct SoundVariant(pub azalea_registry::data::WolfSoundVariant);
+pub struct WolfSoundVariant(pub azalea_registry::data::WolfSoundVariant);
/// The marker component for entities of type `minecraft:wolf`.
///
/// # Metadata
@@ -7550,7 +7548,7 @@ pub struct SoundVariant(pub azalea_registry::data::WolfSoundVariant);
/// - [WolfCollarColor]
/// - [WolfAngerEndTime]
/// - [WolfVariant]
-/// - [SoundVariant]
+/// - [WolfSoundVariant]
///
/// # Parents
///
@@ -7576,21 +7574,21 @@ impl Wolf {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=18 => AbstractTameable::apply_metadata(entity, d)?,
- 19 => {
+ 0..=19 => AbstractTameable::apply_metadata(entity, d)?,
+ 20 => {
entity.insert(WolfInterested(d.value.into_boolean()?));
}
- 20 => {
+ 21 => {
entity.insert(WolfCollarColor(d.value.into_int()?));
}
- 21 => {
+ 22 => {
entity.insert(WolfAngerEndTime(d.value.into_long()?));
}
- 22 => {
+ 23 => {
entity.insert(WolfVariant(d.value.into_wolf_variant()?));
}
- 23 => {
- entity.insert(SoundVariant(d.value.into_wolf_sound_variant()?));
+ 24 => {
+ entity.insert(WolfSoundVariant(d.value.into_wolf_sound_variant()?));
}
_ => {}
}
@@ -7609,7 +7607,7 @@ pub struct WolfMetadataBundle {
wolf_collar_color: WolfCollarColor,
wolf_anger_end_time: WolfAngerEndTime,
wolf_variant: WolfVariant,
- sound_variant: SoundVariant,
+ wolf_sound_variant: WolfSoundVariant,
}
impl Default for WolfMetadataBundle {
fn default() -> Self {
@@ -7620,14 +7618,136 @@ impl Default for WolfMetadataBundle {
wolf_collar_color: WolfCollarColor(Default::default()),
wolf_anger_end_time: WolfAngerEndTime(-1),
wolf_variant: WolfVariant(azalea_registry::data::WolfVariant::new_raw(0)),
- sound_variant: SoundVariant(azalea_registry::data::WolfSoundVariant::new_raw(0)),
+ wolf_sound_variant: WolfSoundVariant(azalea_registry::data::WolfSoundVariant::new_raw(
+ 0,
+ )),
}
}
}
-/// A metadata field for [ZombieNautilus].
+/// A metadata field for [AbstractNautilus].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
-pub struct ZombieNautilusDash(pub bool);
+pub struct AbstractNautilusDash(pub bool);
+/// An abstract entity marker component.
+///
+/// # Metadata
+///
+/// These are the metadata components that all `AbstractNautilus` entities are
+/// guaranteed to have, in addition to the metadata components from parent
+/// types:
+///
+/// - [AbstractNautilusDash]
+///
+/// # Parents
+///
+/// Entities with `AbstractNautilus` will also have the following marker
+/// components and their metadata fields:
+///
+/// - [AbstractTameable]
+/// - [AbstractAnimal]
+/// - [AbstractAgeable]
+/// - [AbstractCreature]
+/// - [AbstractInsentient]
+/// - [AbstractLiving]
+/// - [AbstractEntity]
+///
+/// # Children
+///
+/// - [Nautilus]
+/// - [ZombieNautilus]
+#[derive(Component)]
+pub struct AbstractNautilus;
+impl AbstractNautilus {
+ fn apply_metadata(
+ entity: &mut bevy_ecs::system::EntityCommands,
+ d: EntityDataItem,
+ ) -> Result<(), UpdateMetadataError> {
+ match d.index {
+ 0..=19 => AbstractTameable::apply_metadata(entity, d)?,
+ 20 => {
+ entity.insert(AbstractNautilusDash(d.value.into_boolean()?));
+ }
+ _ => {}
+ }
+ Ok(())
+ }
+}
+
+/// The metadata bundle for [AbstractNautilus].
+///
+/// This type should generally not be used directly.
+#[derive(Bundle)]
+pub struct AbstractNautilusMetadataBundle {
+ _marker: AbstractNautilus,
+ parent: AbstractTameableMetadataBundle,
+ abstract_nautilus_dash: AbstractNautilusDash,
+}
+impl Default for AbstractNautilusMetadataBundle {
+ fn default() -> Self {
+ Self {
+ _marker: AbstractNautilus,
+ parent: Default::default(),
+ abstract_nautilus_dash: AbstractNautilusDash(false),
+ }
+ }
+}
+
+/// The marker component for entities of type `minecraft:nautilus`.
+///
+/// # Metadata
+///
+/// This entity type does not add any additional metadata. It will still have
+/// metadata from parent types.
+///
+/// # Parents
+///
+/// Entities with `Nautilus` will also have the following marker components and
+/// their metadata fields:
+///
+/// - [AbstractNautilus]
+/// - [AbstractTameable]
+/// - [AbstractAnimal]
+/// - [AbstractAgeable]
+/// - [AbstractCreature]
+/// - [AbstractInsentient]
+/// - [AbstractLiving]
+/// - [AbstractEntity]
+///
+/// # Children
+///
+/// This entity type has no children types.
+#[derive(Component)]
+pub struct Nautilus;
+impl Nautilus {
+ fn apply_metadata(
+ entity: &mut bevy_ecs::system::EntityCommands,
+ d: EntityDataItem,
+ ) -> Result<(), UpdateMetadataError> {
+ match d.index {
+ 0..=20 => AbstractNautilus::apply_metadata(entity, d)?,
+ _ => {}
+ }
+ Ok(())
+ }
+}
+
+/// The metadata bundle for [Nautilus].
+///
+/// This type should generally not be used directly.
+#[derive(Bundle)]
+pub struct NautilusMetadataBundle {
+ _marker: Nautilus,
+ parent: AbstractNautilusMetadataBundle,
+}
+impl Default for NautilusMetadataBundle {
+ fn default() -> Self {
+ Self {
+ _marker: Nautilus,
+ parent: Default::default(),
+ }
+ }
+}
+
/// A metadata field for [ZombieNautilus].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ZombieNautilusVariant(pub azalea_registry::data::ZombieNautilusVariant);
@@ -7639,7 +7759,6 @@ pub struct ZombieNautilusVariant(pub azalea_registry::data::ZombieNautilusVarian
/// guaranteed to have, in addition to the metadata components from parent
/// types:
///
-/// - [ZombieNautilusDash]
/// - [ZombieNautilusVariant]
///
/// # Parents
@@ -7647,6 +7766,7 @@ pub struct ZombieNautilusVariant(pub azalea_registry::data::ZombieNautilusVarian
/// Entities with `ZombieNautilus` will also have the following marker
/// components and their metadata fields:
///
+/// - [AbstractNautilus]
/// - [AbstractTameable]
/// - [AbstractAnimal]
/// - [AbstractAgeable]
@@ -7666,11 +7786,8 @@ impl ZombieNautilus {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=18 => AbstractTameable::apply_metadata(entity, d)?,
- 19 => {
- entity.insert(ZombieNautilusDash(d.value.into_boolean()?));
- }
- 20 => {
+ 0..=20 => AbstractNautilus::apply_metadata(entity, d)?,
+ 21 => {
entity.insert(ZombieNautilusVariant(
d.value.into_zombie_nautilus_variant()?,
));
@@ -7687,8 +7804,7 @@ impl ZombieNautilus {
#[derive(Bundle)]
pub struct ZombieNautilusMetadataBundle {
_marker: ZombieNautilus,
- parent: AbstractTameableMetadataBundle,
- zombie_nautilus_dash: ZombieNautilusDash,
+ parent: AbstractNautilusMetadataBundle,
zombie_nautilus_variant: ZombieNautilusVariant,
}
impl Default for ZombieNautilusMetadataBundle {
@@ -7696,7 +7812,6 @@ impl Default for ZombieNautilusMetadataBundle {
Self {
_marker: ZombieNautilus,
parent: Default::default(),
- zombie_nautilus_dash: ZombieNautilusDash(false),
zombie_nautilus_variant: ZombieNautilusVariant(
azalea_registry::data::ZombieNautilusVariant::new_raw(0),
),
@@ -7740,8 +7855,8 @@ impl AbstractVillager {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=16 => AbstractAgeable::apply_metadata(entity, d)?,
- 17 => {
+ 0..=17 => AbstractAgeable::apply_metadata(entity, d)?,
+ 18 => {
entity.insert(AbstractVillagerUnhappyCounter(d.value.into_int()?));
}
_ => {}
@@ -7772,6 +7887,9 @@ impl Default for AbstractVillagerMetadataBundle {
/// A metadata field for [Villager].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct VillagerVillagerData(pub VillagerData);
+/// A metadata field for [Villager].
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
+pub struct VillagerVillagerDataFinalized(pub bool);
/// The marker component for entities of type `minecraft:villager`.
///
/// # Metadata
@@ -7781,6 +7899,7 @@ pub struct VillagerVillagerData(pub VillagerData);
/// types:
///
/// - [VillagerVillagerData]
+/// - [VillagerVillagerDataFinalized]
///
/// # Parents
///
@@ -7805,10 +7924,13 @@ impl Villager {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=17 => AbstractVillager::apply_metadata(entity, d)?,
- 18 => {
+ 0..=18 => AbstractVillager::apply_metadata(entity, d)?,
+ 19 => {
entity.insert(VillagerVillagerData(d.value.into_villager_data()?));
}
+ 20 => {
+ entity.insert(VillagerVillagerDataFinalized(d.value.into_boolean()?));
+ }
_ => {}
}
Ok(())
@@ -7823,6 +7945,7 @@ pub struct VillagerMetadataBundle {
_marker: Villager,
parent: AbstractVillagerMetadataBundle,
villager_villager_data: VillagerVillagerData,
+ villager_villager_data_finalized: VillagerVillagerDataFinalized,
}
impl Default for VillagerMetadataBundle {
fn default() -> Self {
@@ -7834,6 +7957,7 @@ impl Default for VillagerMetadataBundle {
profession: azalea_registry::builtin::VillagerProfession::None,
level: 0,
}),
+ villager_villager_data_finalized: VillagerVillagerDataFinalized(false),
}
}
}
@@ -7868,7 +7992,7 @@ impl WanderingTrader {
d: EntityDataItem,
) -> Result<(), UpdateMetadataError> {
match d.index {
- 0..=17 => AbstractVillager::apply_metadata(entity, d)?,
+ 0..=18 => AbstractVillager::apply_metadata(entity, d)?,
_ => {}
}
Ok(())
@@ -9763,6 +9887,9 @@ pub struct Converting(pub bool);
/// A metadata field for [ZombieVillager].
#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
pub struct ZombieVillagerVillagerData(pub VillagerData);
+/// A metadata field for [ZombieVillager].
+#[derive(Component, Deref, DerefMut, Clone, PartialEq)]
+pub struct ZombieVillagerVillagerDataFinalized(pub bool);
/// The marker component for entities of type `minecraft:zombie_villager`.
///
/// # Metadata
@@ -9773,6 +9900,7 @@ pub struct ZombieVillagerVillagerData(pub VillagerData);
///
/// - [Converting]
/// - [ZombieVillagerVillagerData]
+/// - [ZombieVillagerVillagerDataFinalized]
///
/// # Parents
///
@@ -9804,6 +9932,9 @@ impl ZombieVillager {
20 => {
entity.insert(ZombieVillagerVillagerData(d.value.into_villager_data()?));
}
+ 21 => {
+ entity.insert(ZombieVillagerVillagerDataFinalized(d.value.into_boolean()?));
+ }
_ => {}
}
Ok(())
@@ -9819,6 +9950,7 @@ pub struct ZombieVillagerMetadataBundle {
parent: ZombieMetadataBundle,
converting: Converting,
zombie_villager_villager_data: ZombieVillagerVillagerData,
+ zombie_villager_villager_data_finalized: ZombieVillagerVillagerDataFinalized,
}
impl Default for ZombieVillagerMetadataBundle {
fn default() -> Self {
@@ -9831,6 +9963,7 @@ impl Default for ZombieVillagerMetadataBundle {
profession: azalea_registry::builtin::VillagerProfession::None,
level: 0,
}),
+ zombie_villager_villager_data_finalized: ZombieVillagerVillagerDataFinalized(false),
}
}
}
diff --git a/azalea-entity/src/particle.rs b/azalea-entity/src/particle.rs
index 397346cf..7da9870f 100644
--- a/azalea-entity/src/particle.rs
+++ b/azalea-entity/src/particle.rs
@@ -61,6 +61,8 @@ pub enum Particle {
Item(ItemParticle),
Vibration(Box<VibrationParticle>),
Trail,
+ PauseMobGrowth,
+ ResetMobGrowth,
ItemSlime,
ItemCobweb,
ItemSnowball,
@@ -254,6 +256,8 @@ impl From<ParticleKind> for Particle {
ParticleKind::BlockCrumble => Self::BlockCrumble,
ParticleKind::Firefly => Self::Firefly,
ParticleKind::CopperFireFlame => Self::CopperFireFlame,
+ ParticleKind::PauseMobGrowth => Self::PauseMobGrowth,
+ ParticleKind::ResetMobGrowth => Self::ResetMobGrowth,
}
}
}
diff --git a/azalea-inventory/src/components/mod.rs b/azalea-inventory/src/components/mod.rs
index 908db28f..e54ad775 100644
--- a/azalea-inventory/src/components/mod.rs
+++ b/azalea-inventory/src/components/mod.rs
@@ -4,7 +4,7 @@ use core::f64;
use std::{
any::Any,
collections::HashMap,
- fmt::{self, Display},
+ fmt::{self, Debug, Display},
io::{self, Cursor},
mem::ManuallyDrop,
};
@@ -26,7 +26,7 @@ use azalea_registry::{
Attribute, BlockKind, DataComponentKind, EntityKind, ItemKind, MobEffect, Potion,
SoundEvent, VillagerKind,
},
- data::{self, DamageKind, Enchantment, JukeboxSong, TrimMaterial, TrimPattern},
+ data::{self, BannerPatternKind, DamageKind, Enchantment, TrimMaterial, TrimPattern},
identifier::Identifier,
};
pub use profile::*;
@@ -42,7 +42,7 @@ pub trait DataComponentTrait:
const KIND: DataComponentKind;
}
-pub trait EncodableDataComponent: Send + Sync + Any {
+pub trait EncodableDataComponent: Send + Sync + Any + Debug {
fn encode(&self, buf: &mut Vec<u8>) -> io::Result<()>;
fn crc_hash(&self, registries: &RegistryHolder) -> Checksum;
// using the Clone trait makes it not be object-safe, so we have our own clone
@@ -54,7 +54,7 @@ pub trait EncodableDataComponent: Send + Sync + Any {
impl<T> EncodableDataComponent for T
where
- T: DataComponentTrait + Clone + AzBuf + PartialEq,
+ T: DataComponentTrait + Clone + AzBuf + PartialEq + Debug,
{
fn encode(&self, buf: &mut Vec<u8>) -> io::Result<()> {
self.azalea_write(buf)
@@ -300,6 +300,12 @@ define_data_components!(
SwingAnimation,
ZombieNautilusVariant,
AttackRange,
+ AdditionalTradeCost,
+ Dye,
+ PigSoundVariant,
+ CowSoundVariant,
+ ChickenSoundVariant,
+ CatSoundVariant,
);
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
@@ -360,7 +366,7 @@ pub enum Rarity {
Epic,
}
-#[derive(AzBuf, Clone, Default, PartialEq, Serialize)]
+#[derive(AzBuf, Clone, Default, PartialEq, Serialize, Debug)]
#[serde(transparent)]
pub struct Enchantments {
/// Enchantment levels here are 1-indexed, level 0 does not exist.
@@ -714,7 +720,7 @@ pub struct WritableBookContent {
pub pages: Vec<Filterable<String>>,
}
-#[derive(AzBuf, Clone, PartialEq, Serialize)]
+#[derive(AzBuf, Clone, PartialEq, Serialize, Debug)]
pub struct WrittenBookContent {
#[limit(32)]
pub title: Filterable<String>,
@@ -763,10 +769,9 @@ pub struct BlockEntityData {
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
-#[serde(untagged)]
-pub enum Instrument {
- Registry(data::Instrument),
- Holder(Holder<data::Instrument, InstrumentData>),
+#[serde(transparent)]
+pub struct Instrument {
+ pub value: Holder<azalea_registry::data::Instrument, InstrumentData>,
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
@@ -851,7 +856,7 @@ pub struct NoteBlockSound {
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
-pub struct BannerPattern {
+pub struct BannerPatternLayer {
#[var]
pub pattern: i32,
#[var]
@@ -861,7 +866,7 @@ pub struct BannerPattern {
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
#[serde(transparent)]
pub struct BannerPatterns {
- pub patterns: Vec<BannerPattern>,
+ pub patterns: Vec<BannerPatternLayer>,
}
#[derive(AzBuf, Clone, Copy, Debug, PartialEq, Serialize)]
@@ -936,10 +941,9 @@ pub struct ContainerLoot {
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
-#[serde(untagged)]
-pub enum JukeboxPlayable {
- Referenced(Identifier),
- Direct(Holder<JukeboxSong, JukeboxSongData>),
+#[serde(transparent)]
+pub struct JukeboxPlayable {
+ pub value: Holder<azalea_registry::data::JukeboxSong, JukeboxSongData>,
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
@@ -1050,8 +1054,7 @@ pub struct ItemModel {
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
pub struct DamageResistant {
- /// In vanilla this only allows tag keys, i.e. it must start with '#'
- pub types: Identifier,
+ pub types: HolderSet<DamageKind, Identifier>,
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
@@ -1591,7 +1594,7 @@ pub struct BlocksAttacks {
#[serde(skip_serializing_if = "is_default")]
pub item_damage: ItemDamageFunction,
#[serde(skip_serializing_if = "is_default")]
- pub bypassed_by: Option<Identifier>,
+ pub bypassed_by: Option<HolderSet<DamageKind, Identifier>>,
#[serde(skip_serializing_if = "is_default")]
pub block_sound: Option<azalea_registry::Holder<SoundEvent, CustomSound>>,
#[serde(skip_serializing_if = "is_default")]
@@ -1654,10 +1657,9 @@ impl Default for ItemDamageFunction {
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
-#[serde(untagged)]
-pub enum ProvidesTrimMaterial {
- Referenced(Identifier),
- Direct(Holder<TrimMaterial, DirectTrimMaterial>),
+#[serde(transparent)]
+pub struct ProvidesTrimMaterial {
+ pub value: Holder<azalea_registry::data::TrimMaterial, DirectTrimMaterial>,
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
@@ -1680,7 +1682,7 @@ pub struct AssetInfo {
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
#[serde(transparent)]
pub struct ProvidesBannerPatterns {
- pub key: Identifier,
+ pub key: HolderSet<BannerPatternKind, Identifier>,
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
@@ -1702,26 +1704,14 @@ pub struct CowVariant {
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
-#[serde(untagged)]
-pub enum ChickenVariant {
- Referenced(Identifier),
- Direct(ChickenVariantData),
-}
-
-#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
-pub struct ChickenVariantData {
- pub registry: azalea_registry::data::ChickenVariant,
+#[serde(transparent)]
+pub struct ChickenVariant {
+ pub data: azalea_registry::data::ChickenVariant,
}
-// TODO: check in-game if this is correct
-#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
-pub enum ZombieNautilusVariant {
- Referenced(Identifier),
- Direct(ZombieNautilusVariantData),
-}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
#[serde(transparent)]
-pub struct ZombieNautilusVariantData {
+pub struct ZombieNautilusVariant {
pub value: azalea_registry::data::ZombieNautilusVariant,
}
@@ -1752,12 +1742,10 @@ pub struct MinimumAttackCharge {
pub value: f32,
}
-// TODO: this is probably wrong, check in-game
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
-#[serde(untagged)]
-pub enum DamageType {
- Registry(DamageKind),
- Holder(Holder<DamageKind, DamageTypeElement>),
+#[serde(transparent)]
+pub struct DamageType {
+ pub value: Holder<azalea_registry::data::DamageKind, DamageTypeElement>,
}
#[derive(AzBuf, Clone, Debug, PartialEq, Serialize)]
@@ -1895,3 +1883,34 @@ impl Default for AttackRange {
Self::new()
}
}
+
+#[derive(Clone, PartialEq, AzBuf, Debug, Serialize)]
+pub struct AdditionalTradeCost {
+ #[var]
+ pub cost: i32,
+}
+
+#[derive(Clone, PartialEq, AzBuf, Debug, Serialize)]
+pub struct Dye {
+ pub color: DyeColor,
+}
+
+#[derive(Clone, PartialEq, AzBuf, Debug, Serialize)]
+pub struct PigSoundVariant {
+ pub value: azalea_registry::data::PigSoundVariant,
+}
+
+#[derive(Clone, PartialEq, AzBuf, Debug, Serialize)]
+pub struct CowSoundVariant {
+ pub value: azalea_registry::data::CowSoundVariant,
+}
+
+#[derive(Clone, PartialEq, AzBuf, Debug, Serialize)]
+pub struct ChickenSoundVariant {
+ pub value: azalea_registry::data::ChickenSoundVariant,
+}
+
+#[derive(Clone, PartialEq, AzBuf, Debug, Serialize)]
+pub struct CatSoundVariant {
+ pub value: azalea_registry::data::CatSoundVariant,
+}
diff --git a/azalea-inventory/src/default_components/generated.rs b/azalea-inventory/src/default_components/generated.rs
index 97885a7c..883fcd08 100644
--- a/azalea-inventory/src/default_components/generated.rs
+++ b/azalea-inventory/src/default_components/generated.rs
@@ -2048,6 +2048,58 @@ impl DefaultableComponent for BreakSound {
Some(BreakSound { sound: value })
}
}
+impl DefaultableComponent for Container {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::AcaciaShelf => vec![],
+ ItemKind::BambooShelf => vec![],
+ ItemKind::Barrel => vec![],
+ ItemKind::BirchShelf => vec![],
+ ItemKind::BlackShulkerBox => vec![],
+ ItemKind::BlastFurnace => vec![],
+ ItemKind::BlueShulkerBox => vec![],
+ ItemKind::BrewingStand => vec![],
+ ItemKind::BrownShulkerBox => vec![],
+ ItemKind::Campfire => vec![],
+ ItemKind::CherryShelf => vec![],
+ ItemKind::Chest => vec![],
+ ItemKind::ChiseledBookshelf => vec![],
+ ItemKind::Crafter => vec![],
+ ItemKind::CrimsonShelf => vec![],
+ ItemKind::CyanShulkerBox => vec![],
+ ItemKind::DarkOakShelf => vec![],
+ ItemKind::DecoratedPot => vec![],
+ ItemKind::Dispenser => vec![],
+ ItemKind::Dropper => vec![],
+ ItemKind::Furnace => vec![],
+ ItemKind::GrayShulkerBox => vec![],
+ ItemKind::GreenShulkerBox => vec![],
+ ItemKind::Hopper => vec![],
+ ItemKind::JungleShelf => vec![],
+ ItemKind::LightBlueShulkerBox => vec![],
+ ItemKind::LightGrayShulkerBox => vec![],
+ ItemKind::LimeShulkerBox => vec![],
+ ItemKind::MagentaShulkerBox => vec![],
+ ItemKind::MangroveShelf => vec![],
+ ItemKind::OakShelf => vec![],
+ ItemKind::OrangeShulkerBox => vec![],
+ ItemKind::PaleOakShelf => vec![],
+ ItemKind::PinkShulkerBox => vec![],
+ ItemKind::PurpleShulkerBox => vec![],
+ ItemKind::RedShulkerBox => vec![],
+ ItemKind::ShulkerBox => vec![],
+ ItemKind::Smoker => vec![],
+ ItemKind::SoulCampfire => vec![],
+ ItemKind::SpruceShelf => vec![],
+ ItemKind::TrappedChest => vec![],
+ ItemKind::WarpedShelf => vec![],
+ ItemKind::WhiteShulkerBox => vec![],
+ ItemKind::YellowShulkerBox => vec![],
+ _ => return None,
+ };
+ Some(Container { items: value })
+ }
+}
impl DefaultableComponent for Enchantments {
fn default_for_item(_item: ItemKind) -> Option<Self> {
Some(Enchantments {
@@ -2056,7 +2108,7 @@ impl DefaultableComponent for Enchantments {
}
}
#[rustfmt::skip]
-static ITEM_MODEL_VALUES: [&str; 1505] = ["minecraft:air","minecraft:stone","minecraft:granite","minecraft:polished_granite","minecraft:diorite","minecraft:polished_diorite","minecraft:andesite","minecraft:polished_andesite","minecraft:deepslate","minecraft:cobbled_deepslate","minecraft:polished_deepslate","minecraft:calcite","minecraft:tuff","minecraft:tuff_slab","minecraft:tuff_stairs","minecraft:tuff_wall","minecraft:chiseled_tuff","minecraft:polished_tuff","minecraft:polished_tuff_slab","minecraft:polished_tuff_stairs","minecraft:polished_tuff_wall","minecraft:tuff_bricks","minecraft:tuff_brick_slab","minecraft:tuff_brick_stairs","minecraft:tuff_brick_wall","minecraft:chiseled_tuff_bricks","minecraft:dripstone_block","minecraft:grass_block","minecraft:dirt","minecraft:coarse_dirt","minecraft:podzol","minecraft:rooted_dirt","minecraft:mud","minecraft:crimson_nylium","minecraft:warped_nylium","minecraft:cobblestone","minecraft:oak_planks","minecraft:spruce_planks","minecraft:birch_planks","minecraft:jungle_planks","minecraft:acacia_planks","minecraft:cherry_planks","minecraft:dark_oak_planks","minecraft:pale_oak_planks","minecraft:mangrove_planks","minecraft:bamboo_planks","minecraft:crimson_planks","minecraft:warped_planks","minecraft:bamboo_mosaic","minecraft:oak_sapling","minecraft:spruce_sapling","minecraft:birch_sapling","minecraft:jungle_sapling","minecraft:acacia_sapling","minecraft:cherry_sapling","minecraft:dark_oak_sapling","minecraft:pale_oak_sapling","minecraft:mangrove_propagule","minecraft:bedrock","minecraft:sand","minecraft:suspicious_sand","minecraft:suspicious_gravel","minecraft:red_sand","minecraft:gravel","minecraft:coal_ore","minecraft:deepslate_coal_ore","minecraft:iron_ore","minecraft:deepslate_iron_ore","minecraft:copper_ore","minecraft:deepslate_copper_ore","minecraft:gold_ore","minecraft:deepslate_gold_ore","minecraft:redstone_ore","minecraft:deepslate_redstone_ore","minecraft:emerald_ore","minecraft:deepslate_emerald_ore","minecraft:lapis_ore","minecraft:deepslate_lapis_ore","minecraft:diamond_ore","minecraft:deepslate_diamond_ore","minecraft:nether_gold_ore","minecraft:nether_quartz_ore","minecraft:ancient_debris","minecraft:coal_block","minecraft:raw_iron_block","minecraft:raw_copper_block","minecraft:raw_gold_block","minecraft:heavy_core","minecraft:amethyst_block","minecraft:budding_amethyst","minecraft:iron_block","minecraft:copper_block","minecraft:gold_block","minecraft:diamond_block","minecraft:netherite_block","minecraft:exposed_copper","minecraft:weathered_copper","minecraft:oxidized_copper","minecraft:chiseled_copper","minecraft:exposed_chiseled_copper","minecraft:weathered_chiseled_copper","minecraft:oxidized_chiseled_copper","minecraft:cut_copper","minecraft:exposed_cut_copper","minecraft:weathered_cut_copper","minecraft:oxidized_cut_copper","minecraft:cut_copper_stairs","minecraft:exposed_cut_copper_stairs","minecraft:weathered_cut_copper_stairs","minecraft:oxidized_cut_copper_stairs","minecraft:cut_copper_slab","minecraft:exposed_cut_copper_slab","minecraft:weathered_cut_copper_slab","minecraft:oxidized_cut_copper_slab","minecraft:waxed_copper_block","minecraft:waxed_exposed_copper","minecraft:waxed_weathered_copper","minecraft:waxed_oxidized_copper","minecraft:waxed_chiseled_copper","minecraft:waxed_exposed_chiseled_copper","minecraft:waxed_weathered_chiseled_copper","minecraft:waxed_oxidized_chiseled_copper","minecraft:waxed_cut_copper","minecraft:waxed_exposed_cut_copper","minecraft:waxed_weathered_cut_copper","minecraft:waxed_oxidized_cut_copper","minecraft:waxed_cut_copper_stairs","minecraft:waxed_exposed_cut_copper_stairs","minecraft:waxed_weathered_cut_copper_stairs","minecraft:waxed_oxidized_cut_copper_stairs","minecraft:waxed_cut_copper_slab","minecraft:waxed_exposed_cut_copper_slab","minecraft:waxed_weathered_cut_copper_slab","minecraft:waxed_oxidized_cut_copper_slab","minecraft:oak_log","minecraft:spruce_log","minecraft:birch_log","minecraft:jungle_log","minecraft:acacia_log","minecraft:cherry_log","minecraft:pale_oak_log","minecraft:dark_oak_log","minecraft:mangrove_log","minecraft:mangrove_roots","minecraft:muddy_mangrove_roots","minecraft:crimson_stem","minecraft:warped_stem","minecraft:bamboo_block","minecraft:stripped_oak_log","minecraft:stripped_spruce_log","minecraft:stripped_birch_log","minecraft:stripped_jungle_log","minecraft:stripped_acacia_log","minecraft:stripped_cherry_log","minecraft:stripped_dark_oak_log","minecraft:stripped_pale_oak_log","minecraft:stripped_mangrove_log","minecraft:stripped_crimson_stem","minecraft:stripped_warped_stem","minecraft:stripped_oak_wood","minecraft:stripped_spruce_wood","minecraft:stripped_birch_wood","minecraft:stripped_jungle_wood","minecraft:stripped_acacia_wood","minecraft:stripped_cherry_wood","minecraft:stripped_dark_oak_wood","minecraft:stripped_pale_oak_wood","minecraft:stripped_mangrove_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_warped_hyphae","minecraft:stripped_bamboo_block","minecraft:oak_wood","minecraft:spruce_wood","minecraft:birch_wood","minecraft:jungle_wood","minecraft:acacia_wood","minecraft:cherry_wood","minecraft:pale_oak_wood","minecraft:dark_oak_wood","minecraft:mangrove_wood","minecraft:crimson_hyphae","minecraft:warped_hyphae","minecraft:oak_leaves","minecraft:spruce_leaves","minecraft:birch_leaves","minecraft:jungle_leaves","minecraft:acacia_leaves","minecraft:cherry_leaves","minecraft:dark_oak_leaves","minecraft:pale_oak_leaves","minecraft:mangrove_leaves","minecraft:azalea_leaves","minecraft:flowering_azalea_leaves","minecraft:sponge","minecraft:wet_sponge","minecraft:glass","minecraft:tinted_glass","minecraft:lapis_block","minecraft:sandstone","minecraft:chiseled_sandstone","minecraft:cut_sandstone","minecraft:cobweb","minecraft:short_grass","minecraft:fern","minecraft:bush","minecraft:azalea","minecraft:flowering_azalea","minecraft:dead_bush","minecraft:firefly_bush","minecraft:short_dry_grass","minecraft:tall_dry_grass","minecraft:seagrass","minecraft:sea_pickle","minecraft:white_wool","minecraft:orange_wool","minecraft:magenta_wool","minecraft:light_blue_wool","minecraft:yellow_wool","minecraft:lime_wool","minecraft:pink_wool","minecraft:gray_wool","minecraft:light_gray_wool","minecraft:cyan_wool","minecraft:purple_wool","minecraft:blue_wool","minecraft:brown_wool","minecraft:green_wool","minecraft:red_wool","minecraft:black_wool","minecraft:dandelion","minecraft:open_eyeblossom","minecraft:closed_eyeblossom","minecraft:poppy","minecraft:blue_orchid","minecraft:allium","minecraft:azure_bluet","minecraft:red_tulip","minecraft:orange_tulip","minecraft:white_tulip","minecraft:pink_tulip","minecraft:oxeye_daisy","minecraft:cornflower","minecraft:lily_of_the_valley","minecraft:wither_rose","minecraft:torchflower","minecraft:pitcher_plant","minecraft:spore_blossom","minecraft:brown_mushroom","minecraft:red_mushroom","minecraft:crimson_fungus","minecraft:warped_fungus","minecraft:crimson_roots","minecraft:warped_roots","minecraft:nether_sprouts","minecraft:weeping_vines","minecraft:twisting_vines","minecraft:sugar_cane","minecraft:kelp","minecraft:pink_petals","minecraft:wildflowers","minecraft:leaf_litter","minecraft:moss_carpet","minecraft:moss_block","minecraft:pale_moss_carpet","minecraft:pale_hanging_moss","minecraft:pale_moss_block","minecraft:hanging_roots","minecraft:big_dripleaf","minecraft:small_dripleaf","minecraft:bamboo","minecraft:oak_slab","minecraft:spruce_slab","minecraft:birch_slab","minecraft:jungle_slab","minecraft:acacia_slab","minecraft:cherry_slab","minecraft:dark_oak_slab","minecraft:pale_oak_slab","minecraft:mangrove_slab","minecraft:bamboo_slab","minecraft:bamboo_mosaic_slab","minecraft:crimson_slab","minecraft:warped_slab","minecraft:stone_slab","minecraft:smooth_stone_slab","minecraft:sandstone_slab","minecraft:cut_sandstone_slab","minecraft:petrified_oak_slab","minecraft:cobblestone_slab","minecraft:brick_slab","minecraft:stone_brick_slab","minecraft:mud_brick_slab","minecraft:nether_brick_slab","minecraft:quartz_slab","minecraft:red_sandstone_slab","minecraft:cut_red_sandstone_slab","minecraft:purpur_slab","minecraft:prismarine_slab","minecraft:prismarine_brick_slab","minecraft:dark_prismarine_slab","minecraft:smooth_quartz","minecraft:smooth_red_sandstone","minecraft:smooth_sandstone","minecraft:smooth_stone","minecraft:bricks","minecraft:acacia_shelf","minecraft:bamboo_shelf","minecraft:birch_shelf","minecraft:cherry_shelf","minecraft:crimson_shelf","minecraft:dark_oak_shelf","minecraft:jungle_shelf","minecraft:mangrove_shelf","minecraft:oak_shelf","minecraft:pale_oak_shelf","minecraft:spruce_shelf","minecraft:warped_shelf","minecraft:bookshelf","minecraft:chiseled_bookshelf","minecraft:decorated_pot","minecraft:mossy_cobblestone","minecraft:obsidian","minecraft:torch","minecraft:end_rod","minecraft:chorus_plant","minecraft:chorus_flower","minecraft:purpur_block","minecraft:purpur_pillar","minecraft:purpur_stairs","minecraft:spawner","minecraft:creaking_heart","minecraft:chest","minecraft:crafting_table","minecraft:farmland","minecraft:furnace","minecraft:ladder","minecraft:cobblestone_stairs","minecraft:snow","minecraft:ice","minecraft:snow_block","minecraft:cactus","minecraft:cactus_flower","minecraft:clay","minecraft:jukebox","minecraft:oak_fence","minecraft:spruce_fence","minecraft:birch_fence","minecraft:jungle_fence","minecraft:acacia_fence","minecraft:cherry_fence","minecraft:dark_oak_fence","minecraft:pale_oak_fence","minecraft:mangrove_fence","minecraft:bamboo_fence","minecraft:crimson_fence","minecraft:warped_fence","minecraft:pumpkin","minecraft:carved_pumpkin","minecraft:jack_o_lantern","minecraft:netherrack","minecraft:soul_sand","minecraft:soul_soil","minecraft:basalt","minecraft:polished_basalt","minecraft:smooth_basalt","minecraft:soul_torch","minecraft:copper_torch","minecraft:glowstone","minecraft:infested_stone","minecraft:infested_cobblestone","minecraft:infested_stone_bricks","minecraft:infested_mossy_stone_bricks","minecraft:infested_cracked_stone_bricks","minecraft:infested_chiseled_stone_bricks","minecraft:infested_deepslate","minecraft:stone_bricks","minecraft:mossy_stone_bricks","minecraft:cracked_stone_bricks","minecraft:chiseled_stone_bricks","minecraft:packed_mud","minecraft:mud_bricks","minecraft:deepslate_bricks","minecraft:cracked_deepslate_bricks","minecraft:deepslate_tiles","minecraft:cracked_deepslate_tiles","minecraft:chiseled_deepslate","minecraft:reinforced_deepslate","minecraft:brown_mushroom_block","minecraft:red_mushroom_block","minecraft:mushroom_stem","minecraft:iron_bars","minecraft:copper_bars","minecraft:exposed_copper_bars","minecraft:weathered_copper_bars","minecraft:oxidized_copper_bars","minecraft:waxed_copper_bars","minecraft:waxed_exposed_copper_bars","minecraft:waxed_weathered_copper_bars","minecraft:waxed_oxidized_copper_bars","minecraft:iron_chain","minecraft:copper_chain","minecraft:exposed_copper_chain","minecraft:weathered_copper_chain","minecraft:oxidized_copper_chain","minecraft:waxed_copper_chain","minecraft:waxed_exposed_copper_chain","minecraft:waxed_weathered_copper_chain","minecraft:waxed_oxidized_copper_chain","minecraft:glass_pane","minecraft:melon","minecraft:vine","minecraft:glow_lichen","minecraft:resin_clump","minecraft:resin_block","minecraft:resin_bricks","minecraft:resin_brick_stairs","minecraft:resin_brick_slab","minecraft:resin_brick_wall","minecraft:chiseled_resin_bricks","minecraft:brick_stairs","minecraft:stone_brick_stairs","minecraft:mud_brick_stairs","minecraft:mycelium","minecraft:lily_pad","minecraft:nether_bricks","minecraft:cracked_nether_bricks","minecraft:chiseled_nether_bricks","minecraft:nether_brick_fence","minecraft:nether_brick_stairs","minecraft:sculk","minecraft:sculk_vein","minecraft:sculk_catalyst","minecraft:sculk_shrieker","minecraft:enchanting_table","minecraft:end_portal_frame","minecraft:end_stone","minecraft:end_stone_bricks","minecraft:dragon_egg","minecraft:sandstone_stairs","minecraft:ender_chest","minecraft:emerald_block","minecraft:oak_stairs","minecraft:spruce_stairs","minecraft:birch_stairs","minecraft:jungle_stairs","minecraft:acacia_stairs","minecraft:cherry_stairs","minecraft:dark_oak_stairs","minecraft:pale_oak_stairs","minecraft:mangrove_stairs","minecraft:bamboo_stairs","minecraft:bamboo_mosaic_stairs","minecraft:crimson_stairs","minecraft:warped_stairs","minecraft:command_block","minecraft:beacon","minecraft:cobblestone_wall","minecraft:mossy_cobblestone_wall","minecraft:brick_wall","minecraft:prismarine_wall","minecraft:red_sandstone_wall","minecraft:mossy_stone_brick_wall","minecraft:granite_wall","minecraft:stone_brick_wall","minecraft:mud_brick_wall","minecraft:nether_brick_wall","minecraft:andesite_wall","minecraft:red_nether_brick_wall","minecraft:sandstone_wall","minecraft:end_stone_brick_wall","minecraft:diorite_wall","minecraft:blackstone_wall","minecraft:polished_blackstone_wall","minecraft:polished_blackstone_brick_wall","minecraft:cobbled_deepslate_wall","minecraft:polished_deepslate_wall","minecraft:deepslate_brick_wall","minecraft:deepslate_tile_wall","minecraft:anvil","minecraft:chipped_anvil","minecraft:damaged_anvil","minecraft:chiseled_quartz_block","minecraft:quartz_block","minecraft:quartz_bricks","minecraft:quartz_pillar","minecraft:quartz_stairs","minecraft:white_terracotta","minecraft:orange_terracotta","minecraft:magenta_terracotta","minecraft:light_blue_terracotta","minecraft:yellow_terracotta","minecraft:lime_terracotta","minecraft:pink_terracotta","minecraft:gray_terracotta","minecraft:light_gray_terracotta","minecraft:cyan_terracotta","minecraft:purple_terracotta","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:green_terracotta","minecraft:red_terracotta","minecraft:black_terracotta","minecraft:barrier","minecraft:light","minecraft:hay_block","minecraft:white_carpet","minecraft:orange_carpet","minecraft:magenta_carpet","minecraft:light_blue_carpet","minecraft:yellow_carpet","minecraft:lime_carpet","minecraft:pink_carpet","minecraft:gray_carpet","minecraft:light_gray_carpet","minecraft:cyan_carpet","minecraft:purple_carpet","minecraft:blue_carpet","minecraft:brown_carpet","minecraft:green_carpet","minecraft:red_carpet","minecraft:black_carpet","minecraft:terracotta","minecraft:packed_ice","minecraft:dirt_path","minecraft:sunflower","minecraft:lilac","minecraft:rose_bush","minecraft:peony","minecraft:tall_grass","minecraft:large_fern","minecraft:white_stained_glass","minecraft:orange_stained_glass","minecraft:magenta_stained_glass","minecraft:light_blue_stained_glass","minecraft:yellow_stained_glass","minecraft:lime_stained_glass","minecraft:pink_stained_glass","minecraft:gray_stained_glass","minecraft:light_gray_stained_glass","minecraft:cyan_stained_glass","minecraft:purple_stained_glass","minecraft:blue_stained_glass","minecraft:brown_stained_glass","minecraft:green_stained_glass","minecraft:red_stained_glass","minecraft:black_stained_glass","minecraft:white_stained_glass_pane","minecraft:orange_stained_glass_pane","minecraft:magenta_stained_glass_pane","minecraft:light_blue_stained_glass_pane","minecraft:yellow_stained_glass_pane","minecraft:lime_stained_glass_pane","minecraft:pink_stained_glass_pane","minecraft:gray_stained_glass_pane","minecraft:light_gray_stained_glass_pane","minecraft:cyan_stained_glass_pane","minecraft:purple_stained_glass_pane","minecraft:blue_stained_glass_pane","minecraft:brown_stained_glass_pane","minecraft:green_stained_glass_pane","minecraft:red_stained_glass_pane","minecraft:black_stained_glass_pane","minecraft:prismarine","minecraft:prismarine_bricks","minecraft:dark_prismarine","minecraft:prismarine_stairs","minecraft:prismarine_brick_stairs","minecraft:dark_prismarine_stairs","minecraft:sea_lantern","minecraft:red_sandstone","minecraft:chiseled_red_sandstone","minecraft:cut_red_sandstone","minecraft:red_sandstone_stairs","minecraft:repeating_command_block","minecraft:chain_command_block","minecraft:magma_block","minecraft:nether_wart_block","minecraft:warped_wart_block","minecraft:red_nether_bricks","minecraft:bone_block","minecraft:structure_void","minecraft:shulker_box","minecraft:white_shulker_box","minecraft:orange_shulker_box","minecraft:magenta_shulker_box","minecraft:light_blue_shulker_box","minecraft:yellow_shulker_box","minecraft:lime_shulker_box","minecraft:pink_shulker_box","minecraft:gray_shulker_box","minecraft:light_gray_shulker_box","minecraft:cyan_shulker_box","minecraft:purple_shulker_box","minecraft:blue_shulker_box","minecraft:brown_shulker_box","minecraft:green_shulker_box","minecraft:red_shulker_box","minecraft:black_shulker_box","minecraft:white_glazed_terracotta","minecraft:orange_glazed_terracotta","minecraft:magenta_glazed_terracotta","minecraft:light_blue_glazed_terracotta","minecraft:yellow_glazed_terracotta","minecraft:lime_glazed_terracotta","minecraft:pink_glazed_terracotta","minecraft:gray_glazed_terracotta","minecraft:light_gray_glazed_terracotta","minecraft:cyan_glazed_terracotta","minecraft:purple_glazed_terracotta","minecraft:blue_glazed_terracotta","minecraft:brown_glazed_terracotta","minecraft:green_glazed_terracotta","minecraft:red_glazed_terracotta","minecraft:black_glazed_terracotta","minecraft:white_concrete","minecraft:orange_concrete","minecraft:magenta_concrete","minecraft:light_blue_concrete","minecraft:yellow_concrete","minecraft:lime_concrete","minecraft:pink_concrete","minecraft:gray_concrete","minecraft:light_gray_concrete","minecraft:cyan_concrete","minecraft:purple_concrete","minecraft:blue_concrete","minecraft:brown_concrete","minecraft:green_concrete","minecraft:red_concrete","minecraft:black_concrete","minecraft:white_concrete_powder","minecraft:orange_concrete_powder","minecraft:magenta_concrete_powder","minecraft:light_blue_concrete_powder","minecraft:yellow_concrete_powder","minecraft:lime_concrete_powder","minecraft:pink_concrete_powder","minecraft:gray_concrete_powder","minecraft:light_gray_concrete_powder","minecraft:cyan_concrete_powder","minecraft:purple_concrete_powder","minecraft:blue_concrete_powder","minecraft:brown_concrete_powder","minecraft:green_concrete_powder","minecraft:red_concrete_powder","minecraft:black_concrete_powder","minecraft:turtle_egg","minecraft:sniffer_egg","minecraft:dried_ghast","minecraft:dead_tube_coral_block","minecraft:dead_brain_coral_block","minecraft:dead_bubble_coral_block","minecraft:dead_fire_coral_block","minecraft:dead_horn_coral_block","minecraft:tube_coral_block","minecraft:brain_coral_block","minecraft:bubble_coral_block","minecraft:fire_coral_block","minecraft:horn_coral_block","minecraft:tube_coral","minecraft:brain_coral","minecraft:bubble_coral","minecraft:fire_coral","minecraft:horn_coral","minecraft:dead_brain_coral","minecraft:dead_bubble_coral","minecraft:dead_fire_coral","minecraft:dead_horn_coral","minecraft:dead_tube_coral","minecraft:tube_coral_fan","minecraft:brain_coral_fan","minecraft:bubble_coral_fan","minecraft:fire_coral_fan","minecraft:horn_coral_fan","minecraft:dead_tube_coral_fan","minecraft:dead_brain_coral_fan","minecraft:dead_bubble_coral_fan","minecraft:dead_fire_coral_fan","minecraft:dead_horn_coral_fan","minecraft:blue_ice","minecraft:conduit","minecraft:polished_granite_stairs","minecraft:smooth_red_sandstone_stairs","minecraft:mossy_stone_brick_stairs","minecraft:polished_diorite_stairs","minecraft:mossy_cobblestone_stairs","minecraft:end_stone_brick_stairs","minecraft:stone_stairs","minecraft:smooth_sandstone_stairs","minecraft:smooth_quartz_stairs","minecraft:granite_stairs","minecraft:andesite_stairs","minecraft:red_nether_brick_stairs","minecraft:polished_andesite_stairs","minecraft:diorite_stairs","minecraft:cobbled_deepslate_stairs","minecraft:polished_deepslate_stairs","minecraft:deepslate_brick_stairs","minecraft:deepslate_tile_stairs","minecraft:polished_granite_slab","minecraft:smooth_red_sandstone_slab","minecraft:mossy_stone_brick_slab","minecraft:polished_diorite_slab","minecraft:mossy_cobblestone_slab","minecraft:end_stone_brick_slab","minecraft:smooth_sandstone_slab","minecraft:smooth_quartz_slab","minecraft:granite_slab","minecraft:andesite_slab","minecraft:red_nether_brick_slab","minecraft:polished_andesite_slab","minecraft:diorite_slab","minecraft:cobbled_deepslate_slab","minecraft:polished_deepslate_slab","minecraft:deepslate_brick_slab","minecraft:deepslate_tile_slab","minecraft:scaffolding","minecraft:redstone","minecraft:redstone_torch","minecraft:redstone_block","minecraft:repeater","minecraft:comparator","minecraft:piston","minecraft:sticky_piston","minecraft:slime_block","minecraft:honey_block","minecraft:observer","minecraft:hopper","minecraft:dispenser","minecraft:dropper","minecraft:lectern","minecraft:target","minecraft:lever","minecraft:lightning_rod","minecraft:exposed_lightning_rod","minecraft:weathered_lightning_rod","minecraft:oxidized_lightning_rod","minecraft:waxed_lightning_rod","minecraft:waxed_exposed_lightning_rod","minecraft:waxed_weathered_lightning_rod","minecraft:waxed_oxidized_lightning_rod","minecraft:daylight_detector","minecraft:sculk_sensor","minecraft:calibrated_sculk_sensor","minecraft:tripwire_hook","minecraft:trapped_chest","minecraft:tnt","minecraft:redstone_lamp","minecraft:note_block","minecraft:stone_button","minecraft:polished_blackstone_button","minecraft:oak_button","minecraft:spruce_button","minecraft:birch_button","minecraft:jungle_button","minecraft:acacia_button","minecraft:cherry_button","minecraft:dark_oak_button","minecraft:pale_oak_button","minecraft:mangrove_button","minecraft:bamboo_button","minecraft:crimson_button","minecraft:warped_button","minecraft:stone_pressure_plate","minecraft:polished_blackstone_pressure_plate","minecraft:light_weighted_pressure_plate","minecraft:heavy_weighted_pressure_plate","minecraft:oak_pressure_plate","minecraft:spruce_pressure_plate","minecraft:birch_pressure_plate","minecraft:jungle_pressure_plate","minecraft:acacia_pressure_plate","minecraft:cherry_pressure_plate","minecraft:dark_oak_pressure_plate","minecraft:pale_oak_pressure_plate","minecraft:mangrove_pressure_plate","minecraft:bamboo_pressure_plate","minecraft:crimson_pressure_plate","minecraft:warped_pressure_plate","minecraft:iron_door","minecraft:oak_door","minecraft:spruce_door","minecraft:birch_door","minecraft:jungle_door","minecraft:acacia_door","minecraft:cherry_door","minecraft:dark_oak_door","minecraft:pale_oak_door","minecraft:mangrove_door","minecraft:bamboo_door","minecraft:crimson_door","minecraft:warped_door","minecraft:copper_door","minecraft:exposed_copper_door","minecraft:weathered_copper_door","minecraft:oxidized_copper_door","minecraft:waxed_copper_door","minecraft:waxed_exposed_copper_door","minecraft:waxed_weathered_copper_door","minecraft:waxed_oxidized_copper_door","minecraft:iron_trapdoor","minecraft:oak_trapdoor","minecraft:spruce_trapdoor","minecraft:birch_trapdoor","minecraft:jungle_trapdoor","minecraft:acacia_trapdoor","minecraft:cherry_trapdoor","minecraft:dark_oak_trapdoor","minecraft:pale_oak_trapdoor","minecraft:mangrove_trapdoor","minecraft:bamboo_trapdoor","minecraft:crimson_trapdoor","minecraft:warped_trapdoor","minecraft:copper_trapdoor","minecraft:exposed_copper_trapdoor","minecraft:weathered_copper_trapdoor","minecraft:oxidized_copper_trapdoor","minecraft:waxed_copper_trapdoor","minecraft:waxed_exposed_copper_trapdoor","minecraft:waxed_weathered_copper_trapdoor","minecraft:waxed_oxidized_copper_trapdoor","minecraft:oak_fence_gate","minecraft:spruce_fence_gate","minecraft:birch_fence_gate","minecraft:jungle_fence_gate","minecraft:acacia_fence_gate","minecraft:cherry_fence_gate","minecraft:dark_oak_fence_gate","minecraft:pale_oak_fence_gate","minecraft:mangrove_fence_gate","minecraft:bamboo_fence_gate","minecraft:crimson_fence_gate","minecraft:warped_fence_gate","minecraft:powered_rail","minecraft:detector_rail","minecraft:rail","minecraft:activator_rail","minecraft:saddle","minecraft:white_harness","minecraft:orange_harness","minecraft:magenta_harness","minecraft:light_blue_harness","minecraft:yellow_harness","minecraft:lime_harness","minecraft:pink_harness","minecraft:gray_harness","minecraft:light_gray_harness","minecraft:cyan_harness","minecraft:purple_harness","minecraft:blue_harness","minecraft:brown_harness","minecraft:green_harness","minecraft:red_harness","minecraft:black_harness","minecraft:minecart","minecraft:chest_minecart","minecraft:furnace_minecart","minecraft:tnt_minecart","minecraft:hopper_minecart","minecraft:carrot_on_a_stick","minecraft:warped_fungus_on_a_stick","minecraft:phantom_membrane","minecraft:elytra","minecraft:oak_boat","minecraft:oak_chest_boat","minecraft:spruce_boat","minecraft:spruce_chest_boat","minecraft:birch_boat","minecraft:birch_chest_boat","minecraft:jungle_boat","minecraft:jungle_chest_boat","minecraft:acacia_boat","minecraft:acacia_chest_boat","minecraft:cherry_boat","minecraft:cherry_chest_boat","minecraft:dark_oak_boat","minecraft:dark_oak_chest_boat","minecraft:pale_oak_boat","minecraft:pale_oak_chest_boat","minecraft:mangrove_boat","minecraft:mangrove_chest_boat","minecraft:bamboo_raft","minecraft:bamboo_chest_raft","minecraft:structure_block","minecraft:jigsaw","minecraft:test_block","minecraft:test_instance_block","minecraft:turtle_helmet","minecraft:turtle_scute","minecraft:armadillo_scute","minecraft:wolf_armor","minecraft:flint_and_steel","minecraft:bowl","minecraft:apple","minecraft:bow","minecraft:arrow","minecraft:coal","minecraft:charcoal","minecraft:diamond","minecraft:emerald","minecraft:lapis_lazuli","minecraft:quartz","minecraft:amethyst_shard","minecraft:raw_iron","minecraft:iron_ingot","minecraft:raw_copper","minecraft:copper_ingot","minecraft:raw_gold","minecraft:gold_ingot","minecraft:netherite_ingot","minecraft:netherite_scrap","minecraft:wooden_sword","minecraft:wooden_shovel","minecraft:wooden_pickaxe","minecraft:wooden_axe","minecraft:wooden_hoe","minecraft:copper_sword","minecraft:copper_shovel","minecraft:copper_pickaxe","minecraft:copper_axe","minecraft:copper_hoe","minecraft:stone_sword","minecraft:stone_shovel","minecraft:stone_pickaxe","minecraft:stone_axe","minecraft:stone_hoe","minecraft:golden_sword","minecraft:golden_shovel","minecraft:golden_pickaxe","minecraft:golden_axe","minecraft:golden_hoe","minecraft:iron_sword","minecraft:iron_shovel","minecraft:iron_pickaxe","minecraft:iron_axe","minecraft:iron_hoe","minecraft:diamond_sword","minecraft:diamond_shovel","minecraft:diamond_pickaxe","minecraft:diamond_axe","minecraft:diamond_hoe","minecraft:netherite_sword","minecraft:netherite_shovel","minecraft:netherite_pickaxe","minecraft:netherite_axe","minecraft:netherite_hoe","minecraft:stick","minecraft:mushroom_stew","minecraft:string","minecraft:feather","minecraft:gunpowder","minecraft:wheat_seeds","minecraft:wheat","minecraft:bread","minecraft:leather_helmet","minecraft:leather_chestplate","minecraft:leather_leggings","minecraft:leather_boots","minecraft:copper_helmet","minecraft:copper_chestplate","minecraft:copper_leggings","minecraft:copper_boots","minecraft:chainmail_helmet","minecraft:chainmail_chestplate","minecraft:chainmail_leggings","minecraft:chainmail_boots","minecraft:iron_helmet","minecraft:iron_chestplate","minecraft:iron_leggings","minecraft:iron_boots","minecraft:diamond_helmet","minecraft:diamond_chestplate","minecraft:diamond_leggings","minecraft:diamond_boots","minecraft:golden_helmet","minecraft:golden_chestplate","minecraft:golden_leggings","minecraft:golden_boots","minecraft:netherite_helmet","minecraft:netherite_chestplate","minecraft:netherite_leggings","minecraft:netherite_boots","minecraft:flint","minecraft:porkchop","minecraft:cooked_porkchop","minecraft:painting","minecraft:golden_apple","minecraft:enchanted_golden_apple","minecraft:oak_sign","minecraft:spruce_sign","minecraft:birch_sign","minecraft:jungle_sign","minecraft:acacia_sign","minecraft:cherry_sign","minecraft:dark_oak_sign","minecraft:pale_oak_sign","minecraft:mangrove_sign","minecraft:bamboo_sign","minecraft:crimson_sign","minecraft:warped_sign","minecraft:oak_hanging_sign","minecraft:spruce_hanging_sign","minecraft:birch_hanging_sign","minecraft:jungle_hanging_sign","minecraft:acacia_hanging_sign","minecraft:cherry_hanging_sign","minecraft:dark_oak_hanging_sign","minecraft:pale_oak_hanging_sign","minecraft:mangrove_hanging_sign","minecraft:bamboo_hanging_sign","minecraft:crimson_hanging_sign","minecraft:warped_hanging_sign","minecraft:bucket","minecraft:water_bucket","minecraft:lava_bucket","minecraft:powder_snow_bucket","minecraft:snowball","minecraft:leather","minecraft:milk_bucket","minecraft:pufferfish_bucket","minecraft:salmon_bucket","minecraft:cod_bucket","minecraft:tropical_fish_bucket","minecraft:axolotl_bucket","minecraft:tadpole_bucket","minecraft:brick","minecraft:clay_ball","minecraft:dried_kelp_block","minecraft:paper","minecraft:book","minecraft:slime_ball","minecraft:egg","minecraft:blue_egg","minecraft:brown_egg","minecraft:compass","minecraft:recovery_compass","minecraft:bundle","minecraft:white_bundle","minecraft:orange_bundle","minecraft:magenta_bundle","minecraft:light_blue_bundle","minecraft:yellow_bundle","minecraft:lime_bundle","minecraft:pink_bundle","minecraft:gray_bundle","minecraft:light_gray_bundle","minecraft:cyan_bundle","minecraft:purple_bundle","minecraft:blue_bundle","minecraft:brown_bundle","minecraft:green_bundle","minecraft:red_bundle","minecraft:black_bundle","minecraft:fishing_rod","minecraft:clock","minecraft:spyglass","minecraft:glowstone_dust","minecraft:cod","minecraft:salmon","minecraft:tropical_fish","minecraft:pufferfish","minecraft:cooked_cod","minecraft:cooked_salmon","minecraft:ink_sac","minecraft:glow_ink_sac","minecraft:cocoa_beans","minecraft:white_dye","minecraft:orange_dye","minecraft:magenta_dye","minecraft:light_blue_dye","minecraft:yellow_dye","minecraft:lime_dye","minecraft:pink_dye","minecraft:gray_dye","minecraft:light_gray_dye","minecraft:cyan_dye","minecraft:purple_dye","minecraft:blue_dye","minecraft:brown_dye","minecraft:green_dye","minecraft:red_dye","minecraft:black_dye","minecraft:bone_meal","minecraft:bone","minecraft:sugar","minecraft:cake","minecraft:white_bed","minecraft:orange_bed","minecraft:magenta_bed","minecraft:light_blue_bed","minecraft:yellow_bed","minecraft:lime_bed","minecraft:pink_bed","minecraft:gray_bed","minecraft:light_gray_bed","minecraft:cyan_bed","minecraft:purple_bed","minecraft:blue_bed","minecraft:brown_bed","minecraft:green_bed","minecraft:red_bed","minecraft:black_bed","minecraft:cookie","minecraft:crafter","minecraft:filled_map","minecraft:shears","minecraft:melon_slice","minecraft:dried_kelp","minecraft:pumpkin_seeds","minecraft:melon_seeds","minecraft:beef","minecraft:cooked_beef","minecraft:chicken","minecraft:cooked_chicken","minecraft:rotten_flesh","minecraft:ender_pearl","minecraft:blaze_rod","minecraft:ghast_tear","minecraft:gold_nugget","minecraft:nether_wart","minecraft:glass_bottle","minecraft:potion","minecraft:spider_eye","minecraft:fermented_spider_eye","minecraft:blaze_powder","minecraft:magma_cream","minecraft:brewing_stand","minecraft:cauldron","minecraft:ender_eye","minecraft:glistering_melon_slice","minecraft:chicken_spawn_egg","minecraft:cow_spawn_egg","minecraft:pig_spawn_egg","minecraft:sheep_spawn_egg","minecraft:camel_spawn_egg","minecraft:donkey_spawn_egg","minecraft:horse_spawn_egg","minecraft:mule_spawn_egg","minecraft:cat_spawn_egg","minecraft:parrot_spawn_egg","minecraft:wolf_spawn_egg","minecraft:armadillo_spawn_egg","minecraft:bat_spawn_egg","minecraft:bee_spawn_egg","minecraft:fox_spawn_egg","minecraft:goat_spawn_egg","minecraft:llama_spawn_egg","minecraft:ocelot_spawn_egg","minecraft:panda_spawn_egg","minecraft:polar_bear_spawn_egg","minecraft:rabbit_spawn_egg","minecraft:axolotl_spawn_egg","minecraft:cod_spawn_egg","minecraft:dolphin_spawn_egg","minecraft:frog_spawn_egg","minecraft:glow_squid_spawn_egg","minecraft:nautilus_spawn_egg","minecraft:pufferfish_spawn_egg","minecraft:salmon_spawn_egg","minecraft:squid_spawn_egg","minecraft:tadpole_spawn_egg","minecraft:tropical_fish_spawn_egg","minecraft:turtle_spawn_egg","minecraft:allay_spawn_egg","minecraft:mooshroom_spawn_egg","minecraft:sniffer_spawn_egg","minecraft:copper_golem_spawn_egg","minecraft:iron_golem_spawn_egg","minecraft:snow_golem_spawn_egg","minecraft:trader_llama_spawn_egg","minecraft:villager_spawn_egg","minecraft:wandering_trader_spawn_egg","minecraft:bogged_spawn_egg","minecraft:camel_husk_spawn_egg","minecraft:drowned_spawn_egg","minecraft:husk_spawn_egg","minecraft:parched_spawn_egg","minecraft:skeleton_spawn_egg","minecraft:skeleton_horse_spawn_egg","minecraft:stray_spawn_egg","minecraft:wither_spawn_egg","minecraft:wither_skeleton_spawn_egg","minecraft:zombie_spawn_egg","minecraft:zombie_horse_spawn_egg","minecraft:zombie_nautilus_spawn_egg","minecraft:zombie_villager_spawn_egg","minecraft:cave_spider_spawn_egg","minecraft:spider_spawn_egg","minecraft:breeze_spawn_egg","minecraft:creaking_spawn_egg","minecraft:creeper_spawn_egg","minecraft:elder_guardian_spawn_egg","minecraft:guardian_spawn_egg","minecraft:phantom_spawn_egg","minecraft:silverfish_spawn_egg","minecraft:slime_spawn_egg","minecraft:warden_spawn_egg","minecraft:witch_spawn_egg","minecraft:evoker_spawn_egg","minecraft:pillager_spawn_egg","minecraft:ravager_spawn_egg","minecraft:vindicator_spawn_egg","minecraft:vex_spawn_egg","minecraft:blaze_spawn_egg","minecraft:ghast_spawn_egg","minecraft:happy_ghast_spawn_egg","minecraft:hoglin_spawn_egg","minecraft:magma_cube_spawn_egg","minecraft:piglin_spawn_egg","minecraft:piglin_brute_spawn_egg","minecraft:strider_spawn_egg","minecraft:zoglin_spawn_egg","minecraft:zombified_piglin_spawn_egg","minecraft:ender_dragon_spawn_egg","minecraft:enderman_spawn_egg","minecraft:endermite_spawn_egg","minecraft:shulker_spawn_egg","minecraft:experience_bottle","minecraft:fire_charge","minecraft:wind_charge","minecraft:writable_book","minecraft:written_book","minecraft:breeze_rod","minecraft:mace","minecraft:item_frame","minecraft:glow_item_frame","minecraft:flower_pot","minecraft:carrot","minecraft:potato","minecraft:baked_potato","minecraft:poisonous_potato","minecraft:map","minecraft:golden_carrot","minecraft:skeleton_skull","minecraft:wither_skeleton_skull","minecraft:player_head","minecraft:zombie_head","minecraft:creeper_head","minecraft:dragon_head","minecraft:piglin_head","minecraft:nether_star","minecraft:pumpkin_pie","minecraft:firework_rocket","minecraft:firework_star","minecraft:enchanted_book","minecraft:nether_brick","minecraft:resin_brick","minecraft:prismarine_shard","minecraft:prismarine_crystals","minecraft:rabbit","minecraft:cooked_rabbit","minecraft:rabbit_stew","minecraft:rabbit_foot","minecraft:rabbit_hide","minecraft:armor_stand","minecraft:copper_horse_armor","minecraft:iron_horse_armor","minecraft:golden_horse_armor","minecraft:diamond_horse_armor","minecraft:netherite_horse_armor","minecraft:leather_horse_armor","minecraft:lead","minecraft:name_tag","minecraft:command_block_minecart","minecraft:mutton","minecraft:cooked_mutton","minecraft:white_banner","minecraft:orange_banner","minecraft:magenta_banner","minecraft:light_blue_banner","minecraft:yellow_banner","minecraft:lime_banner","minecraft:pink_banner","minecraft:gray_banner","minecraft:light_gray_banner","minecraft:cyan_banner","minecraft:purple_banner","minecraft:blue_banner","minecraft:brown_banner","minecraft:green_banner","minecraft:red_banner","minecraft:black_banner","minecraft:end_crystal","minecraft:chorus_fruit","minecraft:popped_chorus_fruit","minecraft:torchflower_seeds","minecraft:pitcher_pod","minecraft:beetroot","minecraft:beetroot_seeds","minecraft:beetroot_soup","minecraft:dragon_breath","minecraft:splash_potion","minecraft:spectral_arrow","minecraft:tipped_arrow","minecraft:lingering_potion","minecraft:shield","minecraft:wooden_spear","minecraft:stone_spear","minecraft:copper_spear","minecraft:iron_spear","minecraft:golden_spear","minecraft:diamond_spear","minecraft:netherite_spear","minecraft:totem_of_undying","minecraft:shulker_shell","minecraft:iron_nugget","minecraft:copper_nugget","minecraft:knowledge_book","minecraft:debug_stick","minecraft:music_disc_13","minecraft:music_disc_cat","minecraft:music_disc_blocks","minecraft:music_disc_chirp","minecraft:music_disc_creator","minecraft:music_disc_creator_music_box","minecraft:music_disc_far","minecraft:music_disc_lava_chicken","minecraft:music_disc_mall","minecraft:music_disc_mellohi","minecraft:music_disc_stal","minecraft:music_disc_strad","minecraft:music_disc_ward","minecraft:music_disc_11","minecraft:music_disc_wait","minecraft:music_disc_otherside","minecraft:music_disc_relic","minecraft:music_disc_5","minecraft:music_disc_pigstep","minecraft:music_disc_precipice","minecraft:music_disc_tears","minecraft:disc_fragment_5","minecraft:trident","minecraft:nautilus_shell","minecraft:iron_nautilus_armor","minecraft:golden_nautilus_armor","minecraft:diamond_nautilus_armor","minecraft:netherite_nautilus_armor","minecraft:copper_nautilus_armor","minecraft:heart_of_the_sea","minecraft:crossbow","minecraft:suspicious_stew","minecraft:loom","minecraft:flower_banner_pattern","minecraft:creeper_banner_pattern","minecraft:skull_banner_pattern","minecraft:mojang_banner_pattern","minecraft:globe_banner_pattern","minecraft:piglin_banner_pattern","minecraft:flow_banner_pattern","minecraft:guster_banner_pattern","minecraft:field_masoned_banner_pattern","minecraft:bordure_indented_banner_pattern","minecraft:goat_horn","minecraft:composter","minecraft:barrel","minecraft:smoker","minecraft:blast_furnace","minecraft:cartography_table","minecraft:fletching_table","minecraft:grindstone","minecraft:smithing_table","minecraft:stonecutter","minecraft:bell","minecraft:lantern","minecraft:soul_lantern","minecraft:copper_lantern","minecraft:exposed_copper_lantern","minecraft:weathered_copper_lantern","minecraft:oxidized_copper_lantern","minecraft:waxed_copper_lantern","minecraft:waxed_exposed_copper_lantern","minecraft:waxed_weathered_copper_lantern","minecraft:waxed_oxidized_copper_lantern","minecraft:sweet_berries","minecraft:glow_berries","minecraft:campfire","minecraft:soul_campfire","minecraft:shroomlight","minecraft:honeycomb","minecraft:bee_nest","minecraft:beehive","minecraft:honey_bottle","minecraft:honeycomb_block","minecraft:lodestone","minecraft:crying_obsidian","minecraft:blackstone","minecraft:blackstone_slab","minecraft:blackstone_stairs","minecraft:gilded_blackstone","minecraft:polished_blackstone","minecraft:polished_blackstone_slab","minecraft:polished_blackstone_stairs","minecraft:chiseled_polished_blackstone","minecraft:polished_blackstone_bricks","minecraft:polished_blackstone_brick_slab","minecraft:polished_blackstone_brick_stairs","minecraft:cracked_polished_blackstone_bricks","minecraft:respawn_anchor","minecraft:candle","minecraft:white_candle","minecraft:orange_candle","minecraft:magenta_candle","minecraft:light_blue_candle","minecraft:yellow_candle","minecraft:lime_candle","minecraft:pink_candle","minecraft:gray_candle","minecraft:light_gray_candle","minecraft:cyan_candle","minecraft:purple_candle","minecraft:blue_candle","minecraft:brown_candle","minecraft:green_candle","minecraft:red_candle","minecraft:black_candle","minecraft:small_amethyst_bud","minecraft:medium_amethyst_bud","minecraft:large_amethyst_bud","minecraft:amethyst_cluster","minecraft:pointed_dripstone","minecraft:ochre_froglight","minecraft:verdant_froglight","minecraft:pearlescent_froglight","minecraft:frogspawn","minecraft:echo_shard","minecraft:brush","minecraft:netherite_upgrade_smithing_template","minecraft:sentry_armor_trim_smithing_template","minecraft:dune_armor_trim_smithing_template","minecraft:coast_armor_trim_smithing_template","minecraft:wild_armor_trim_smithing_template","minecraft:ward_armor_trim_smithing_template","minecraft:eye_armor_trim_smithing_template","minecraft:vex_armor_trim_smithing_template","minecraft:tide_armor_trim_smithing_template","minecraft:snout_armor_trim_smithing_template","minecraft:rib_armor_trim_smithing_template","minecraft:spire_armor_trim_smithing_template","minecraft:wayfinder_armor_trim_smithing_template","minecraft:shaper_armor_trim_smithing_template","minecraft:silence_armor_trim_smithing_template","minecraft:raiser_armor_trim_smithing_template","minecraft:host_armor_trim_smithing_template","minecraft:flow_armor_trim_smithing_template","minecraft:bolt_armor_trim_smithing_template","minecraft:angler_pottery_sherd","minecraft:archer_pottery_sherd","minecraft:arms_up_pottery_sherd","minecraft:blade_pottery_sherd","minecraft:brewer_pottery_sherd","minecraft:burn_pottery_sherd","minecraft:danger_pottery_sherd","minecraft:explorer_pottery_sherd","minecraft:flow_pottery_sherd","minecraft:friend_pottery_sherd","minecraft:guster_pottery_sherd","minecraft:heart_pottery_sherd","minecraft:heartbreak_pottery_sherd","minecraft:howl_pottery_sherd","minecraft:miner_pottery_sherd","minecraft:mourner_pottery_sherd","minecraft:plenty_pottery_sherd","minecraft:prize_pottery_sherd","minecraft:scrape_pottery_sherd","minecraft:sheaf_pottery_sherd","minecraft:shelter_pottery_sherd","minecraft:skull_pottery_sherd","minecraft:snort_pottery_sherd","minecraft:copper_grate","minecraft:exposed_copper_grate","minecraft:weathered_copper_grate","minecraft:oxidized_copper_grate","minecraft:waxed_copper_grate","minecraft:waxed_exposed_copper_grate","minecraft:waxed_weathered_copper_grate","minecraft:waxed_oxidized_copper_grate","minecraft:copper_bulb","minecraft:exposed_copper_bulb","minecraft:weathered_copper_bulb","minecraft:oxidized_copper_bulb","minecraft:waxed_copper_bulb","minecraft:waxed_exposed_copper_bulb","minecraft:waxed_weathered_copper_bulb","minecraft:waxed_oxidized_copper_bulb","minecraft:copper_chest","minecraft:exposed_copper_chest","minecraft:weathered_copper_chest","minecraft:oxidized_copper_chest","minecraft:waxed_copper_chest","minecraft:waxed_exposed_copper_chest","minecraft:waxed_weathered_copper_chest","minecraft:waxed_oxidized_copper_chest","minecraft:copper_golem_statue","minecraft:exposed_copper_golem_statue","minecraft:weathered_copper_golem_statue","minecraft:oxidized_copper_golem_statue","minecraft:waxed_copper_golem_statue","minecraft:waxed_exposed_copper_golem_statue","minecraft:waxed_weathered_copper_golem_statue","minecraft:waxed_oxidized_copper_golem_statue","minecraft:trial_spawner","minecraft:trial_key","minecraft:ominous_trial_key","minecraft:vault","minecraft:ominous_bottle"];
+static ITEM_MODEL_VALUES: [&str; 1506] = ["minecraft:air","minecraft:stone","minecraft:granite","minecraft:polished_granite","minecraft:diorite","minecraft:polished_diorite","minecraft:andesite","minecraft:polished_andesite","minecraft:deepslate","minecraft:cobbled_deepslate","minecraft:polished_deepslate","minecraft:calcite","minecraft:tuff","minecraft:tuff_slab","minecraft:tuff_stairs","minecraft:tuff_wall","minecraft:chiseled_tuff","minecraft:polished_tuff","minecraft:polished_tuff_slab","minecraft:polished_tuff_stairs","minecraft:polished_tuff_wall","minecraft:tuff_bricks","minecraft:tuff_brick_slab","minecraft:tuff_brick_stairs","minecraft:tuff_brick_wall","minecraft:chiseled_tuff_bricks","minecraft:dripstone_block","minecraft:grass_block","minecraft:dirt","minecraft:coarse_dirt","minecraft:podzol","minecraft:rooted_dirt","minecraft:mud","minecraft:crimson_nylium","minecraft:warped_nylium","minecraft:cobblestone","minecraft:oak_planks","minecraft:spruce_planks","minecraft:birch_planks","minecraft:jungle_planks","minecraft:acacia_planks","minecraft:cherry_planks","minecraft:dark_oak_planks","minecraft:pale_oak_planks","minecraft:mangrove_planks","minecraft:bamboo_planks","minecraft:crimson_planks","minecraft:warped_planks","minecraft:bamboo_mosaic","minecraft:oak_sapling","minecraft:spruce_sapling","minecraft:birch_sapling","minecraft:jungle_sapling","minecraft:acacia_sapling","minecraft:cherry_sapling","minecraft:dark_oak_sapling","minecraft:pale_oak_sapling","minecraft:mangrove_propagule","minecraft:bedrock","minecraft:sand","minecraft:suspicious_sand","minecraft:suspicious_gravel","minecraft:red_sand","minecraft:gravel","minecraft:coal_ore","minecraft:deepslate_coal_ore","minecraft:iron_ore","minecraft:deepslate_iron_ore","minecraft:copper_ore","minecraft:deepslate_copper_ore","minecraft:gold_ore","minecraft:deepslate_gold_ore","minecraft:redstone_ore","minecraft:deepslate_redstone_ore","minecraft:emerald_ore","minecraft:deepslate_emerald_ore","minecraft:lapis_ore","minecraft:deepslate_lapis_ore","minecraft:diamond_ore","minecraft:deepslate_diamond_ore","minecraft:nether_gold_ore","minecraft:nether_quartz_ore","minecraft:ancient_debris","minecraft:coal_block","minecraft:raw_iron_block","minecraft:raw_copper_block","minecraft:raw_gold_block","minecraft:heavy_core","minecraft:amethyst_block","minecraft:budding_amethyst","minecraft:iron_block","minecraft:copper_block","minecraft:gold_block","minecraft:diamond_block","minecraft:netherite_block","minecraft:exposed_copper","minecraft:weathered_copper","minecraft:oxidized_copper","minecraft:chiseled_copper","minecraft:exposed_chiseled_copper","minecraft:weathered_chiseled_copper","minecraft:oxidized_chiseled_copper","minecraft:cut_copper","minecraft:exposed_cut_copper","minecraft:weathered_cut_copper","minecraft:oxidized_cut_copper","minecraft:cut_copper_stairs","minecraft:exposed_cut_copper_stairs","minecraft:weathered_cut_copper_stairs","minecraft:oxidized_cut_copper_stairs","minecraft:cut_copper_slab","minecraft:exposed_cut_copper_slab","minecraft:weathered_cut_copper_slab","minecraft:oxidized_cut_copper_slab","minecraft:waxed_copper_block","minecraft:waxed_exposed_copper","minecraft:waxed_weathered_copper","minecraft:waxed_oxidized_copper","minecraft:waxed_chiseled_copper","minecraft:waxed_exposed_chiseled_copper","minecraft:waxed_weathered_chiseled_copper","minecraft:waxed_oxidized_chiseled_copper","minecraft:waxed_cut_copper","minecraft:waxed_exposed_cut_copper","minecraft:waxed_weathered_cut_copper","minecraft:waxed_oxidized_cut_copper","minecraft:waxed_cut_copper_stairs","minecraft:waxed_exposed_cut_copper_stairs","minecraft:waxed_weathered_cut_copper_stairs","minecraft:waxed_oxidized_cut_copper_stairs","minecraft:waxed_cut_copper_slab","minecraft:waxed_exposed_cut_copper_slab","minecraft:waxed_weathered_cut_copper_slab","minecraft:waxed_oxidized_cut_copper_slab","minecraft:oak_log","minecraft:spruce_log","minecraft:birch_log","minecraft:jungle_log","minecraft:acacia_log","minecraft:cherry_log","minecraft:pale_oak_log","minecraft:dark_oak_log","minecraft:mangrove_log","minecraft:mangrove_roots","minecraft:muddy_mangrove_roots","minecraft:crimson_stem","minecraft:warped_stem","minecraft:bamboo_block","minecraft:stripped_oak_log","minecraft:stripped_spruce_log","minecraft:stripped_birch_log","minecraft:stripped_jungle_log","minecraft:stripped_acacia_log","minecraft:stripped_cherry_log","minecraft:stripped_dark_oak_log","minecraft:stripped_pale_oak_log","minecraft:stripped_mangrove_log","minecraft:stripped_crimson_stem","minecraft:stripped_warped_stem","minecraft:stripped_oak_wood","minecraft:stripped_spruce_wood","minecraft:stripped_birch_wood","minecraft:stripped_jungle_wood","minecraft:stripped_acacia_wood","minecraft:stripped_cherry_wood","minecraft:stripped_dark_oak_wood","minecraft:stripped_pale_oak_wood","minecraft:stripped_mangrove_wood","minecraft:stripped_crimson_hyphae","minecraft:stripped_warped_hyphae","minecraft:stripped_bamboo_block","minecraft:oak_wood","minecraft:spruce_wood","minecraft:birch_wood","minecraft:jungle_wood","minecraft:acacia_wood","minecraft:cherry_wood","minecraft:pale_oak_wood","minecraft:dark_oak_wood","minecraft:mangrove_wood","minecraft:crimson_hyphae","minecraft:warped_hyphae","minecraft:oak_leaves","minecraft:spruce_leaves","minecraft:birch_leaves","minecraft:jungle_leaves","minecraft:acacia_leaves","minecraft:cherry_leaves","minecraft:dark_oak_leaves","minecraft:pale_oak_leaves","minecraft:mangrove_leaves","minecraft:azalea_leaves","minecraft:flowering_azalea_leaves","minecraft:sponge","minecraft:wet_sponge","minecraft:glass","minecraft:tinted_glass","minecraft:lapis_block","minecraft:sandstone","minecraft:chiseled_sandstone","minecraft:cut_sandstone","minecraft:cobweb","minecraft:short_grass","minecraft:fern","minecraft:bush","minecraft:azalea","minecraft:flowering_azalea","minecraft:dead_bush","minecraft:firefly_bush","minecraft:short_dry_grass","minecraft:tall_dry_grass","minecraft:seagrass","minecraft:sea_pickle","minecraft:white_wool","minecraft:orange_wool","minecraft:magenta_wool","minecraft:light_blue_wool","minecraft:yellow_wool","minecraft:lime_wool","minecraft:pink_wool","minecraft:gray_wool","minecraft:light_gray_wool","minecraft:cyan_wool","minecraft:purple_wool","minecraft:blue_wool","minecraft:brown_wool","minecraft:green_wool","minecraft:red_wool","minecraft:black_wool","minecraft:dandelion","minecraft:golden_dandelion","minecraft:open_eyeblossom","minecraft:closed_eyeblossom","minecraft:poppy","minecraft:blue_orchid","minecraft:allium","minecraft:azure_bluet","minecraft:red_tulip","minecraft:orange_tulip","minecraft:white_tulip","minecraft:pink_tulip","minecraft:oxeye_daisy","minecraft:cornflower","minecraft:lily_of_the_valley","minecraft:wither_rose","minecraft:torchflower","minecraft:pitcher_plant","minecraft:spore_blossom","minecraft:brown_mushroom","minecraft:red_mushroom","minecraft:crimson_fungus","minecraft:warped_fungus","minecraft:crimson_roots","minecraft:warped_roots","minecraft:nether_sprouts","minecraft:weeping_vines","minecraft:twisting_vines","minecraft:sugar_cane","minecraft:kelp","minecraft:pink_petals","minecraft:wildflowers","minecraft:leaf_litter","minecraft:moss_carpet","minecraft:moss_block","minecraft:pale_moss_carpet","minecraft:pale_hanging_moss","minecraft:pale_moss_block","minecraft:hanging_roots","minecraft:big_dripleaf","minecraft:small_dripleaf","minecraft:bamboo","minecraft:oak_slab","minecraft:spruce_slab","minecraft:birch_slab","minecraft:jungle_slab","minecraft:acacia_slab","minecraft:cherry_slab","minecraft:dark_oak_slab","minecraft:pale_oak_slab","minecraft:mangrove_slab","minecraft:bamboo_slab","minecraft:bamboo_mosaic_slab","minecraft:crimson_slab","minecraft:warped_slab","minecraft:stone_slab","minecraft:smooth_stone_slab","minecraft:sandstone_slab","minecraft:cut_sandstone_slab","minecraft:petrified_oak_slab","minecraft:cobblestone_slab","minecraft:brick_slab","minecraft:stone_brick_slab","minecraft:mud_brick_slab","minecraft:nether_brick_slab","minecraft:quartz_slab","minecraft:red_sandstone_slab","minecraft:cut_red_sandstone_slab","minecraft:purpur_slab","minecraft:prismarine_slab","minecraft:prismarine_brick_slab","minecraft:dark_prismarine_slab","minecraft:smooth_quartz","minecraft:smooth_red_sandstone","minecraft:smooth_sandstone","minecraft:smooth_stone","minecraft:bricks","minecraft:acacia_shelf","minecraft:bamboo_shelf","minecraft:birch_shelf","minecraft:cherry_shelf","minecraft:crimson_shelf","minecraft:dark_oak_shelf","minecraft:jungle_shelf","minecraft:mangrove_shelf","minecraft:oak_shelf","minecraft:pale_oak_shelf","minecraft:spruce_shelf","minecraft:warped_shelf","minecraft:bookshelf","minecraft:chiseled_bookshelf","minecraft:decorated_pot","minecraft:mossy_cobblestone","minecraft:obsidian","minecraft:torch","minecraft:end_rod","minecraft:chorus_plant","minecraft:chorus_flower","minecraft:purpur_block","minecraft:purpur_pillar","minecraft:purpur_stairs","minecraft:spawner","minecraft:creaking_heart","minecraft:chest","minecraft:crafting_table","minecraft:farmland","minecraft:furnace","minecraft:ladder","minecraft:cobblestone_stairs","minecraft:snow","minecraft:ice","minecraft:snow_block","minecraft:cactus","minecraft:cactus_flower","minecraft:clay","minecraft:jukebox","minecraft:oak_fence","minecraft:spruce_fence","minecraft:birch_fence","minecraft:jungle_fence","minecraft:acacia_fence","minecraft:cherry_fence","minecraft:dark_oak_fence","minecraft:pale_oak_fence","minecraft:mangrove_fence","minecraft:bamboo_fence","minecraft:crimson_fence","minecraft:warped_fence","minecraft:pumpkin","minecraft:carved_pumpkin","minecraft:jack_o_lantern","minecraft:netherrack","minecraft:soul_sand","minecraft:soul_soil","minecraft:basalt","minecraft:polished_basalt","minecraft:smooth_basalt","minecraft:soul_torch","minecraft:copper_torch","minecraft:glowstone","minecraft:infested_stone","minecraft:infested_cobblestone","minecraft:infested_stone_bricks","minecraft:infested_mossy_stone_bricks","minecraft:infested_cracked_stone_bricks","minecraft:infested_chiseled_stone_bricks","minecraft:infested_deepslate","minecraft:stone_bricks","minecraft:mossy_stone_bricks","minecraft:cracked_stone_bricks","minecraft:chiseled_stone_bricks","minecraft:packed_mud","minecraft:mud_bricks","minecraft:deepslate_bricks","minecraft:cracked_deepslate_bricks","minecraft:deepslate_tiles","minecraft:cracked_deepslate_tiles","minecraft:chiseled_deepslate","minecraft:reinforced_deepslate","minecraft:brown_mushroom_block","minecraft:red_mushroom_block","minecraft:mushroom_stem","minecraft:iron_bars","minecraft:copper_bars","minecraft:exposed_copper_bars","minecraft:weathered_copper_bars","minecraft:oxidized_copper_bars","minecraft:waxed_copper_bars","minecraft:waxed_exposed_copper_bars","minecraft:waxed_weathered_copper_bars","minecraft:waxed_oxidized_copper_bars","minecraft:iron_chain","minecraft:copper_chain","minecraft:exposed_copper_chain","minecraft:weathered_copper_chain","minecraft:oxidized_copper_chain","minecraft:waxed_copper_chain","minecraft:waxed_exposed_copper_chain","minecraft:waxed_weathered_copper_chain","minecraft:waxed_oxidized_copper_chain","minecraft:glass_pane","minecraft:melon","minecraft:vine","minecraft:glow_lichen","minecraft:resin_clump","minecraft:resin_block","minecraft:resin_bricks","minecraft:resin_brick_stairs","minecraft:resin_brick_slab","minecraft:resin_brick_wall","minecraft:chiseled_resin_bricks","minecraft:brick_stairs","minecraft:stone_brick_stairs","minecraft:mud_brick_stairs","minecraft:mycelium","minecraft:lily_pad","minecraft:nether_bricks","minecraft:cracked_nether_bricks","minecraft:chiseled_nether_bricks","minecraft:nether_brick_fence","minecraft:nether_brick_stairs","minecraft:sculk","minecraft:sculk_vein","minecraft:sculk_catalyst","minecraft:sculk_shrieker","minecraft:enchanting_table","minecraft:end_portal_frame","minecraft:end_stone","minecraft:end_stone_bricks","minecraft:dragon_egg","minecraft:sandstone_stairs","minecraft:ender_chest","minecraft:emerald_block","minecraft:oak_stairs","minecraft:spruce_stairs","minecraft:birch_stairs","minecraft:jungle_stairs","minecraft:acacia_stairs","minecraft:cherry_stairs","minecraft:dark_oak_stairs","minecraft:pale_oak_stairs","minecraft:mangrove_stairs","minecraft:bamboo_stairs","minecraft:bamboo_mosaic_stairs","minecraft:crimson_stairs","minecraft:warped_stairs","minecraft:command_block","minecraft:beacon","minecraft:cobblestone_wall","minecraft:mossy_cobblestone_wall","minecraft:brick_wall","minecraft:prismarine_wall","minecraft:red_sandstone_wall","minecraft:mossy_stone_brick_wall","minecraft:granite_wall","minecraft:stone_brick_wall","minecraft:mud_brick_wall","minecraft:nether_brick_wall","minecraft:andesite_wall","minecraft:red_nether_brick_wall","minecraft:sandstone_wall","minecraft:end_stone_brick_wall","minecraft:diorite_wall","minecraft:blackstone_wall","minecraft:polished_blackstone_wall","minecraft:polished_blackstone_brick_wall","minecraft:cobbled_deepslate_wall","minecraft:polished_deepslate_wall","minecraft:deepslate_brick_wall","minecraft:deepslate_tile_wall","minecraft:anvil","minecraft:chipped_anvil","minecraft:damaged_anvil","minecraft:chiseled_quartz_block","minecraft:quartz_block","minecraft:quartz_bricks","minecraft:quartz_pillar","minecraft:quartz_stairs","minecraft:white_terracotta","minecraft:orange_terracotta","minecraft:magenta_terracotta","minecraft:light_blue_terracotta","minecraft:yellow_terracotta","minecraft:lime_terracotta","minecraft:pink_terracotta","minecraft:gray_terracotta","minecraft:light_gray_terracotta","minecraft:cyan_terracotta","minecraft:purple_terracotta","minecraft:blue_terracotta","minecraft:brown_terracotta","minecraft:green_terracotta","minecraft:red_terracotta","minecraft:black_terracotta","minecraft:barrier","minecraft:light","minecraft:hay_block","minecraft:white_carpet","minecraft:orange_carpet","minecraft:magenta_carpet","minecraft:light_blue_carpet","minecraft:yellow_carpet","minecraft:lime_carpet","minecraft:pink_carpet","minecraft:gray_carpet","minecraft:light_gray_carpet","minecraft:cyan_carpet","minecraft:purple_carpet","minecraft:blue_carpet","minecraft:brown_carpet","minecraft:green_carpet","minecraft:red_carpet","minecraft:black_carpet","minecraft:terracotta","minecraft:packed_ice","minecraft:dirt_path","minecraft:sunflower","minecraft:lilac","minecraft:rose_bush","minecraft:peony","minecraft:tall_grass","minecraft:large_fern","minecraft:white_stained_glass","minecraft:orange_stained_glass","minecraft:magenta_stained_glass","minecraft:light_blue_stained_glass","minecraft:yellow_stained_glass","minecraft:lime_stained_glass","minecraft:pink_stained_glass","minecraft:gray_stained_glass","minecraft:light_gray_stained_glass","minecraft:cyan_stained_glass","minecraft:purple_stained_glass","minecraft:blue_stained_glass","minecraft:brown_stained_glass","minecraft:green_stained_glass","minecraft:red_stained_glass","minecraft:black_stained_glass","minecraft:white_stained_glass_pane","minecraft:orange_stained_glass_pane","minecraft:magenta_stained_glass_pane","minecraft:light_blue_stained_glass_pane","minecraft:yellow_stained_glass_pane","minecraft:lime_stained_glass_pane","minecraft:pink_stained_glass_pane","minecraft:gray_stained_glass_pane","minecraft:light_gray_stained_glass_pane","minecraft:cyan_stained_glass_pane","minecraft:purple_stained_glass_pane","minecraft:blue_stained_glass_pane","minecraft:brown_stained_glass_pane","minecraft:green_stained_glass_pane","minecraft:red_stained_glass_pane","minecraft:black_stained_glass_pane","minecraft:prismarine","minecraft:prismarine_bricks","minecraft:dark_prismarine","minecraft:prismarine_stairs","minecraft:prismarine_brick_stairs","minecraft:dark_prismarine_stairs","minecraft:sea_lantern","minecraft:red_sandstone","minecraft:chiseled_red_sandstone","minecraft:cut_red_sandstone","minecraft:red_sandstone_stairs","minecraft:repeating_command_block","minecraft:chain_command_block","minecraft:magma_block","minecraft:nether_wart_block","minecraft:warped_wart_block","minecraft:red_nether_bricks","minecraft:bone_block","minecraft:structure_void","minecraft:shulker_box","minecraft:white_shulker_box","minecraft:orange_shulker_box","minecraft:magenta_shulker_box","minecraft:light_blue_shulker_box","minecraft:yellow_shulker_box","minecraft:lime_shulker_box","minecraft:pink_shulker_box","minecraft:gray_shulker_box","minecraft:light_gray_shulker_box","minecraft:cyan_shulker_box","minecraft:purple_shulker_box","minecraft:blue_shulker_box","minecraft:brown_shulker_box","minecraft:green_shulker_box","minecraft:red_shulker_box","minecraft:black_shulker_box","minecraft:white_glazed_terracotta","minecraft:orange_glazed_terracotta","minecraft:magenta_glazed_terracotta","minecraft:light_blue_glazed_terracotta","minecraft:yellow_glazed_terracotta","minecraft:lime_glazed_terracotta","minecraft:pink_glazed_terracotta","minecraft:gray_glazed_terracotta","minecraft:light_gray_glazed_terracotta","minecraft:cyan_glazed_terracotta","minecraft:purple_glazed_terracotta","minecraft:blue_glazed_terracotta","minecraft:brown_glazed_terracotta","minecraft:green_glazed_terracotta","minecraft:red_glazed_terracotta","minecraft:black_glazed_terracotta","minecraft:white_concrete","minecraft:orange_concrete","minecraft:magenta_concrete","minecraft:light_blue_concrete","minecraft:yellow_concrete","minecraft:lime_concrete","minecraft:pink_concrete","minecraft:gray_concrete","minecraft:light_gray_concrete","minecraft:cyan_concrete","minecraft:purple_concrete","minecraft:blue_concrete","minecraft:brown_concrete","minecraft:green_concrete","minecraft:red_concrete","minecraft:black_concrete","minecraft:white_concrete_powder","minecraft:orange_concrete_powder","minecraft:magenta_concrete_powder","minecraft:light_blue_concrete_powder","minecraft:yellow_concrete_powder","minecraft:lime_concrete_powder","minecraft:pink_concrete_powder","minecraft:gray_concrete_powder","minecraft:light_gray_concrete_powder","minecraft:cyan_concrete_powder","minecraft:purple_concrete_powder","minecraft:blue_concrete_powder","minecraft:brown_concrete_powder","minecraft:green_concrete_powder","minecraft:red_concrete_powder","minecraft:black_concrete_powder","minecraft:turtle_egg","minecraft:sniffer_egg","minecraft:dried_ghast","minecraft:dead_tube_coral_block","minecraft:dead_brain_coral_block","minecraft:dead_bubble_coral_block","minecraft:dead_fire_coral_block","minecraft:dead_horn_coral_block","minecraft:tube_coral_block","minecraft:brain_coral_block","minecraft:bubble_coral_block","minecraft:fire_coral_block","minecraft:horn_coral_block","minecraft:tube_coral","minecraft:brain_coral","minecraft:bubble_coral","minecraft:fire_coral","minecraft:horn_coral","minecraft:dead_brain_coral","minecraft:dead_bubble_coral","minecraft:dead_fire_coral","minecraft:dead_horn_coral","minecraft:dead_tube_coral","minecraft:tube_coral_fan","minecraft:brain_coral_fan","minecraft:bubble_coral_fan","minecraft:fire_coral_fan","minecraft:horn_coral_fan","minecraft:dead_tube_coral_fan","minecraft:dead_brain_coral_fan","minecraft:dead_bubble_coral_fan","minecraft:dead_fire_coral_fan","minecraft:dead_horn_coral_fan","minecraft:blue_ice","minecraft:conduit","minecraft:polished_granite_stairs","minecraft:smooth_red_sandstone_stairs","minecraft:mossy_stone_brick_stairs","minecraft:polished_diorite_stairs","minecraft:mossy_cobblestone_stairs","minecraft:end_stone_brick_stairs","minecraft:stone_stairs","minecraft:smooth_sandstone_stairs","minecraft:smooth_quartz_stairs","minecraft:granite_stairs","minecraft:andesite_stairs","minecraft:red_nether_brick_stairs","minecraft:polished_andesite_stairs","minecraft:diorite_stairs","minecraft:cobbled_deepslate_stairs","minecraft:polished_deepslate_stairs","minecraft:deepslate_brick_stairs","minecraft:deepslate_tile_stairs","minecraft:polished_granite_slab","minecraft:smooth_red_sandstone_slab","minecraft:mossy_stone_brick_slab","minecraft:polished_diorite_slab","minecraft:mossy_cobblestone_slab","minecraft:end_stone_brick_slab","minecraft:smooth_sandstone_slab","minecraft:smooth_quartz_slab","minecraft:granite_slab","minecraft:andesite_slab","minecraft:red_nether_brick_slab","minecraft:polished_andesite_slab","minecraft:diorite_slab","minecraft:cobbled_deepslate_slab","minecraft:polished_deepslate_slab","minecraft:deepslate_brick_slab","minecraft:deepslate_tile_slab","minecraft:scaffolding","minecraft:redstone","minecraft:redstone_torch","minecraft:redstone_block","minecraft:repeater","minecraft:comparator","minecraft:piston","minecraft:sticky_piston","minecraft:slime_block","minecraft:honey_block","minecraft:observer","minecraft:hopper","minecraft:dispenser","minecraft:dropper","minecraft:lectern","minecraft:target","minecraft:lever","minecraft:lightning_rod","minecraft:exposed_lightning_rod","minecraft:weathered_lightning_rod","minecraft:oxidized_lightning_rod","minecraft:waxed_lightning_rod","minecraft:waxed_exposed_lightning_rod","minecraft:waxed_weathered_lightning_rod","minecraft:waxed_oxidized_lightning_rod","minecraft:daylight_detector","minecraft:sculk_sensor","minecraft:calibrated_sculk_sensor","minecraft:tripwire_hook","minecraft:trapped_chest","minecraft:tnt","minecraft:redstone_lamp","minecraft:note_block","minecraft:stone_button","minecraft:polished_blackstone_button","minecraft:oak_button","minecraft:spruce_button","minecraft:birch_button","minecraft:jungle_button","minecraft:acacia_button","minecraft:cherry_button","minecraft:dark_oak_button","minecraft:pale_oak_button","minecraft:mangrove_button","minecraft:bamboo_button","minecraft:crimson_button","minecraft:warped_button","minecraft:stone_pressure_plate","minecraft:polished_blackstone_pressure_plate","minecraft:light_weighted_pressure_plate","minecraft:heavy_weighted_pressure_plate","minecraft:oak_pressure_plate","minecraft:spruce_pressure_plate","minecraft:birch_pressure_plate","minecraft:jungle_pressure_plate","minecraft:acacia_pressure_plate","minecraft:cherry_pressure_plate","minecraft:dark_oak_pressure_plate","minecraft:pale_oak_pressure_plate","minecraft:mangrove_pressure_plate","minecraft:bamboo_pressure_plate","minecraft:crimson_pressure_plate","minecraft:warped_pressure_plate","minecraft:iron_door","minecraft:oak_door","minecraft:spruce_door","minecraft:birch_door","minecraft:jungle_door","minecraft:acacia_door","minecraft:cherry_door","minecraft:dark_oak_door","minecraft:pale_oak_door","minecraft:mangrove_door","minecraft:bamboo_door","minecraft:crimson_door","minecraft:warped_door","minecraft:copper_door","minecraft:exposed_copper_door","minecraft:weathered_copper_door","minecraft:oxidized_copper_door","minecraft:waxed_copper_door","minecraft:waxed_exposed_copper_door","minecraft:waxed_weathered_copper_door","minecraft:waxed_oxidized_copper_door","minecraft:iron_trapdoor","minecraft:oak_trapdoor","minecraft:spruce_trapdoor","minecraft:birch_trapdoor","minecraft:jungle_trapdoor","minecraft:acacia_trapdoor","minecraft:cherry_trapdoor","minecraft:dark_oak_trapdoor","minecraft:pale_oak_trapdoor","minecraft:mangrove_trapdoor","minecraft:bamboo_trapdoor","minecraft:crimson_trapdoor","minecraft:warped_trapdoor","minecraft:copper_trapdoor","minecraft:exposed_copper_trapdoor","minecraft:weathered_copper_trapdoor","minecraft:oxidized_copper_trapdoor","minecraft:waxed_copper_trapdoor","minecraft:waxed_exposed_copper_trapdoor","minecraft:waxed_weathered_copper_trapdoor","minecraft:waxed_oxidized_copper_trapdoor","minecraft:oak_fence_gate","minecraft:spruce_fence_gate","minecraft:birch_fence_gate","minecraft:jungle_fence_gate","minecraft:acacia_fence_gate","minecraft:cherry_fence_gate","minecraft:dark_oak_fence_gate","minecraft:pale_oak_fence_gate","minecraft:mangrove_fence_gate","minecraft:bamboo_fence_gate","minecraft:crimson_fence_gate","minecraft:warped_fence_gate","minecraft:powered_rail","minecraft:detector_rail","minecraft:rail","minecraft:activator_rail","minecraft:saddle","minecraft:white_harness","minecraft:orange_harness","minecraft:magenta_harness","minecraft:light_blue_harness","minecraft:yellow_harness","minecraft:lime_harness","minecraft:pink_harness","minecraft:gray_harness","minecraft:light_gray_harness","minecraft:cyan_harness","minecraft:purple_harness","minecraft:blue_harness","minecraft:brown_harness","minecraft:green_harness","minecraft:red_harness","minecraft:black_harness","minecraft:minecart","minecraft:chest_minecart","minecraft:furnace_minecart","minecraft:tnt_minecart","minecraft:hopper_minecart","minecraft:carrot_on_a_stick","minecraft:warped_fungus_on_a_stick","minecraft:phantom_membrane","minecraft:elytra","minecraft:oak_boat","minecraft:oak_chest_boat","minecraft:spruce_boat","minecraft:spruce_chest_boat","minecraft:birch_boat","minecraft:birch_chest_boat","minecraft:jungle_boat","minecraft:jungle_chest_boat","minecraft:acacia_boat","minecraft:acacia_chest_boat","minecraft:cherry_boat","minecraft:cherry_chest_boat","minecraft:dark_oak_boat","minecraft:dark_oak_chest_boat","minecraft:pale_oak_boat","minecraft:pale_oak_chest_boat","minecraft:mangrove_boat","minecraft:mangrove_chest_boat","minecraft:bamboo_raft","minecraft:bamboo_chest_raft","minecraft:structure_block","minecraft:jigsaw","minecraft:test_block","minecraft:test_instance_block","minecraft:turtle_helmet","minecraft:turtle_scute","minecraft:armadillo_scute","minecraft:wolf_armor","minecraft:flint_and_steel","minecraft:bowl","minecraft:apple","minecraft:bow","minecraft:arrow","minecraft:coal","minecraft:charcoal","minecraft:diamond","minecraft:emerald","minecraft:lapis_lazuli","minecraft:quartz","minecraft:amethyst_shard","minecraft:raw_iron","minecraft:iron_ingot","minecraft:raw_copper","minecraft:copper_ingot","minecraft:raw_gold","minecraft:gold_ingot","minecraft:netherite_ingot","minecraft:netherite_scrap","minecraft:wooden_sword","minecraft:wooden_shovel","minecraft:wooden_pickaxe","minecraft:wooden_axe","minecraft:wooden_hoe","minecraft:copper_sword","minecraft:copper_shovel","minecraft:copper_pickaxe","minecraft:copper_axe","minecraft:copper_hoe","minecraft:stone_sword","minecraft:stone_shovel","minecraft:stone_pickaxe","minecraft:stone_axe","minecraft:stone_hoe","minecraft:golden_sword","minecraft:golden_shovel","minecraft:golden_pickaxe","minecraft:golden_axe","minecraft:golden_hoe","minecraft:iron_sword","minecraft:iron_shovel","minecraft:iron_pickaxe","minecraft:iron_axe","minecraft:iron_hoe","minecraft:diamond_sword","minecraft:diamond_shovel","minecraft:diamond_pickaxe","minecraft:diamond_axe","minecraft:diamond_hoe","minecraft:netherite_sword","minecraft:netherite_shovel","minecraft:netherite_pickaxe","minecraft:netherite_axe","minecraft:netherite_hoe","minecraft:stick","minecraft:mushroom_stew","minecraft:string","minecraft:feather","minecraft:gunpowder","minecraft:wheat_seeds","minecraft:wheat","minecraft:bread","minecraft:leather_helmet","minecraft:leather_chestplate","minecraft:leather_leggings","minecraft:leather_boots","minecraft:copper_helmet","minecraft:copper_chestplate","minecraft:copper_leggings","minecraft:copper_boots","minecraft:chainmail_helmet","minecraft:chainmail_chestplate","minecraft:chainmail_leggings","minecraft:chainmail_boots","minecraft:iron_helmet","minecraft:iron_chestplate","minecraft:iron_leggings","minecraft:iron_boots","minecraft:diamond_helmet","minecraft:diamond_chestplate","minecraft:diamond_leggings","minecraft:diamond_boots","minecraft:golden_helmet","minecraft:golden_chestplate","minecraft:golden_leggings","minecraft:golden_boots","minecraft:netherite_helmet","minecraft:netherite_chestplate","minecraft:netherite_leggings","minecraft:netherite_boots","minecraft:flint","minecraft:porkchop","minecraft:cooked_porkchop","minecraft:painting","minecraft:golden_apple","minecraft:enchanted_golden_apple","minecraft:oak_sign","minecraft:spruce_sign","minecraft:birch_sign","minecraft:jungle_sign","minecraft:acacia_sign","minecraft:cherry_sign","minecraft:dark_oak_sign","minecraft:pale_oak_sign","minecraft:mangrove_sign","minecraft:bamboo_sign","minecraft:crimson_sign","minecraft:warped_sign","minecraft:oak_hanging_sign","minecraft:spruce_hanging_sign","minecraft:birch_hanging_sign","minecraft:jungle_hanging_sign","minecraft:acacia_hanging_sign","minecraft:cherry_hanging_sign","minecraft:dark_oak_hanging_sign","minecraft:pale_oak_hanging_sign","minecraft:mangrove_hanging_sign","minecraft:bamboo_hanging_sign","minecraft:crimson_hanging_sign","minecraft:warped_hanging_sign","minecraft:bucket","minecraft:water_bucket","minecraft:lava_bucket","minecraft:powder_snow_bucket","minecraft:snowball","minecraft:leather","minecraft:milk_bucket","minecraft:pufferfish_bucket","minecraft:salmon_bucket","minecraft:cod_bucket","minecraft:tropical_fish_bucket","minecraft:axolotl_bucket","minecraft:tadpole_bucket","minecraft:brick","minecraft:clay_ball","minecraft:dried_kelp_block","minecraft:paper","minecraft:book","minecraft:slime_ball","minecraft:egg","minecraft:blue_egg","minecraft:brown_egg","minecraft:compass","minecraft:recovery_compass","minecraft:bundle","minecraft:white_bundle","minecraft:orange_bundle","minecraft:magenta_bundle","minecraft:light_blue_bundle","minecraft:yellow_bundle","minecraft:lime_bundle","minecraft:pink_bundle","minecraft:gray_bundle","minecraft:light_gray_bundle","minecraft:cyan_bundle","minecraft:purple_bundle","minecraft:blue_bundle","minecraft:brown_bundle","minecraft:green_bundle","minecraft:red_bundle","minecraft:black_bundle","minecraft:fishing_rod","minecraft:clock","minecraft:spyglass","minecraft:glowstone_dust","minecraft:cod","minecraft:salmon","minecraft:tropical_fish","minecraft:pufferfish","minecraft:cooked_cod","minecraft:cooked_salmon","minecraft:ink_sac","minecraft:glow_ink_sac","minecraft:cocoa_beans","minecraft:white_dye","minecraft:orange_dye","minecraft:magenta_dye","minecraft:light_blue_dye","minecraft:yellow_dye","minecraft:lime_dye","minecraft:pink_dye","minecraft:gray_dye","minecraft:light_gray_dye","minecraft:cyan_dye","minecraft:purple_dye","minecraft:blue_dye","minecraft:brown_dye","minecraft:green_dye","minecraft:red_dye","minecraft:black_dye","minecraft:bone_meal","minecraft:bone","minecraft:sugar","minecraft:cake","minecraft:white_bed","minecraft:orange_bed","minecraft:magenta_bed","minecraft:light_blue_bed","minecraft:yellow_bed","minecraft:lime_bed","minecraft:pink_bed","minecraft:gray_bed","minecraft:light_gray_bed","minecraft:cyan_bed","minecraft:purple_bed","minecraft:blue_bed","minecraft:brown_bed","minecraft:green_bed","minecraft:red_bed","minecraft:black_bed","minecraft:cookie","minecraft:crafter","minecraft:filled_map","minecraft:shears","minecraft:melon_slice","minecraft:dried_kelp","minecraft:pumpkin_seeds","minecraft:melon_seeds","minecraft:beef","minecraft:cooked_beef","minecraft:chicken","minecraft:cooked_chicken","minecraft:rotten_flesh","minecraft:ender_pearl","minecraft:blaze_rod","minecraft:ghast_tear","minecraft:gold_nugget","minecraft:nether_wart","minecraft:glass_bottle","minecraft:potion","minecraft:spider_eye","minecraft:fermented_spider_eye","minecraft:blaze_powder","minecraft:magma_cream","minecraft:brewing_stand","minecraft:cauldron","minecraft:ender_eye","minecraft:glistering_melon_slice","minecraft:chicken_spawn_egg","minecraft:cow_spawn_egg","minecraft:pig_spawn_egg","minecraft:sheep_spawn_egg","minecraft:camel_spawn_egg","minecraft:donkey_spawn_egg","minecraft:horse_spawn_egg","minecraft:mule_spawn_egg","minecraft:cat_spawn_egg","minecraft:parrot_spawn_egg","minecraft:wolf_spawn_egg","minecraft:armadillo_spawn_egg","minecraft:bat_spawn_egg","minecraft:bee_spawn_egg","minecraft:fox_spawn_egg","minecraft:goat_spawn_egg","minecraft:llama_spawn_egg","minecraft:ocelot_spawn_egg","minecraft:panda_spawn_egg","minecraft:polar_bear_spawn_egg","minecraft:rabbit_spawn_egg","minecraft:axolotl_spawn_egg","minecraft:cod_spawn_egg","minecraft:dolphin_spawn_egg","minecraft:frog_spawn_egg","minecraft:glow_squid_spawn_egg","minecraft:nautilus_spawn_egg","minecraft:pufferfish_spawn_egg","minecraft:salmon_spawn_egg","minecraft:squid_spawn_egg","minecraft:tadpole_spawn_egg","minecraft:tropical_fish_spawn_egg","minecraft:turtle_spawn_egg","minecraft:allay_spawn_egg","minecraft:mooshroom_spawn_egg","minecraft:sniffer_spawn_egg","minecraft:copper_golem_spawn_egg","minecraft:iron_golem_spawn_egg","minecraft:snow_golem_spawn_egg","minecraft:trader_llama_spawn_egg","minecraft:villager_spawn_egg","minecraft:wandering_trader_spawn_egg","minecraft:bogged_spawn_egg","minecraft:camel_husk_spawn_egg","minecraft:drowned_spawn_egg","minecraft:husk_spawn_egg","minecraft:parched_spawn_egg","minecraft:skeleton_spawn_egg","minecraft:skeleton_horse_spawn_egg","minecraft:stray_spawn_egg","minecraft:wither_spawn_egg","minecraft:wither_skeleton_spawn_egg","minecraft:zombie_spawn_egg","minecraft:zombie_horse_spawn_egg","minecraft:zombie_nautilus_spawn_egg","minecraft:zombie_villager_spawn_egg","minecraft:cave_spider_spawn_egg","minecraft:spider_spawn_egg","minecraft:breeze_spawn_egg","minecraft:creaking_spawn_egg","minecraft:creeper_spawn_egg","minecraft:elder_guardian_spawn_egg","minecraft:guardian_spawn_egg","minecraft:phantom_spawn_egg","minecraft:silverfish_spawn_egg","minecraft:slime_spawn_egg","minecraft:warden_spawn_egg","minecraft:witch_spawn_egg","minecraft:evoker_spawn_egg","minecraft:pillager_spawn_egg","minecraft:ravager_spawn_egg","minecraft:vindicator_spawn_egg","minecraft:vex_spawn_egg","minecraft:blaze_spawn_egg","minecraft:ghast_spawn_egg","minecraft:happy_ghast_spawn_egg","minecraft:hoglin_spawn_egg","minecraft:magma_cube_spawn_egg","minecraft:piglin_spawn_egg","minecraft:piglin_brute_spawn_egg","minecraft:strider_spawn_egg","minecraft:zoglin_spawn_egg","minecraft:zombified_piglin_spawn_egg","minecraft:ender_dragon_spawn_egg","minecraft:enderman_spawn_egg","minecraft:endermite_spawn_egg","minecraft:shulker_spawn_egg","minecraft:experience_bottle","minecraft:fire_charge","minecraft:wind_charge","minecraft:writable_book","minecraft:written_book","minecraft:breeze_rod","minecraft:mace","minecraft:item_frame","minecraft:glow_item_frame","minecraft:flower_pot","minecraft:carrot","minecraft:potato","minecraft:baked_potato","minecraft:poisonous_potato","minecraft:map","minecraft:golden_carrot","minecraft:skeleton_skull","minecraft:wither_skeleton_skull","minecraft:player_head","minecraft:zombie_head","minecraft:creeper_head","minecraft:dragon_head","minecraft:piglin_head","minecraft:nether_star","minecraft:pumpkin_pie","minecraft:firework_rocket","minecraft:firework_star","minecraft:enchanted_book","minecraft:nether_brick","minecraft:resin_brick","minecraft:prismarine_shard","minecraft:prismarine_crystals","minecraft:rabbit","minecraft:cooked_rabbit","minecraft:rabbit_stew","minecraft:rabbit_foot","minecraft:rabbit_hide","minecraft:armor_stand","minecraft:copper_horse_armor","minecraft:iron_horse_armor","minecraft:golden_horse_armor","minecraft:diamond_horse_armor","minecraft:netherite_horse_armor","minecraft:leather_horse_armor","minecraft:lead","minecraft:name_tag","minecraft:command_block_minecart","minecraft:mutton","minecraft:cooked_mutton","minecraft:white_banner","minecraft:orange_banner","minecraft:magenta_banner","minecraft:light_blue_banner","minecraft:yellow_banner","minecraft:lime_banner","minecraft:pink_banner","minecraft:gray_banner","minecraft:light_gray_banner","minecraft:cyan_banner","minecraft:purple_banner","minecraft:blue_banner","minecraft:brown_banner","minecraft:green_banner","minecraft:red_banner","minecraft:black_banner","minecraft:end_crystal","minecraft:chorus_fruit","minecraft:popped_chorus_fruit","minecraft:torchflower_seeds","minecraft:pitcher_pod","minecraft:beetroot","minecraft:beetroot_seeds","minecraft:beetroot_soup","minecraft:dragon_breath","minecraft:splash_potion","minecraft:spectral_arrow","minecraft:tipped_arrow","minecraft:lingering_potion","minecraft:shield","minecraft:wooden_spear","minecraft:stone_spear","minecraft:copper_spear","minecraft:iron_spear","minecraft:golden_spear","minecraft:diamond_spear","minecraft:netherite_spear","minecraft:totem_of_undying","minecraft:shulker_shell","minecraft:iron_nugget","minecraft:copper_nugget","minecraft:knowledge_book","minecraft:debug_stick","minecraft:music_disc_13","minecraft:music_disc_cat","minecraft:music_disc_blocks","minecraft:music_disc_chirp","minecraft:music_disc_creator","minecraft:music_disc_creator_music_box","minecraft:music_disc_far","minecraft:music_disc_lava_chicken","minecraft:music_disc_mall","minecraft:music_disc_mellohi","minecraft:music_disc_stal","minecraft:music_disc_strad","minecraft:music_disc_ward","minecraft:music_disc_11","minecraft:music_disc_wait","minecraft:music_disc_otherside","minecraft:music_disc_relic","minecraft:music_disc_5","minecraft:music_disc_pigstep","minecraft:music_disc_precipice","minecraft:music_disc_tears","minecraft:disc_fragment_5","minecraft:trident","minecraft:nautilus_shell","minecraft:iron_nautilus_armor","minecraft:golden_nautilus_armor","minecraft:diamond_nautilus_armor","minecraft:netherite_nautilus_armor","minecraft:copper_nautilus_armor","minecraft:heart_of_the_sea","minecraft:crossbow","minecraft:suspicious_stew","minecraft:loom","minecraft:flower_banner_pattern","minecraft:creeper_banner_pattern","minecraft:skull_banner_pattern","minecraft:mojang_banner_pattern","minecraft:globe_banner_pattern","minecraft:piglin_banner_pattern","minecraft:flow_banner_pattern","minecraft:guster_banner_pattern","minecraft:field_masoned_banner_pattern","minecraft:bordure_indented_banner_pattern","minecraft:goat_horn","minecraft:composter","minecraft:barrel","minecraft:smoker","minecraft:blast_furnace","minecraft:cartography_table","minecraft:fletching_table","minecraft:grindstone","minecraft:smithing_table","minecraft:stonecutter","minecraft:bell","minecraft:lantern","minecraft:soul_lantern","minecraft:copper_lantern","minecraft:exposed_copper_lantern","minecraft:weathered_copper_lantern","minecraft:oxidized_copper_lantern","minecraft:waxed_copper_lantern","minecraft:waxed_exposed_copper_lantern","minecraft:waxed_weathered_copper_lantern","minecraft:waxed_oxidized_copper_lantern","minecraft:sweet_berries","minecraft:glow_berries","minecraft:campfire","minecraft:soul_campfire","minecraft:shroomlight","minecraft:honeycomb","minecraft:bee_nest","minecraft:beehive","minecraft:honey_bottle","minecraft:honeycomb_block","minecraft:lodestone","minecraft:crying_obsidian","minecraft:blackstone","minecraft:blackstone_slab","minecraft:blackstone_stairs","minecraft:gilded_blackstone","minecraft:polished_blackstone","minecraft:polished_blackstone_slab","minecraft:polished_blackstone_stairs","minecraft:chiseled_polished_blackstone","minecraft:polished_blackstone_bricks","minecraft:polished_blackstone_brick_slab","minecraft:polished_blackstone_brick_stairs","minecraft:cracked_polished_blackstone_bricks","minecraft:respawn_anchor","minecraft:candle","minecraft:white_candle","minecraft:orange_candle","minecraft:magenta_candle","minecraft:light_blue_candle","minecraft:yellow_candle","minecraft:lime_candle","minecraft:pink_candle","minecraft:gray_candle","minecraft:light_gray_candle","minecraft:cyan_candle","minecraft:purple_candle","minecraft:blue_candle","minecraft:brown_candle","minecraft:green_candle","minecraft:red_candle","minecraft:black_candle","minecraft:small_amethyst_bud","minecraft:medium_amethyst_bud","minecraft:large_amethyst_bud","minecraft:amethyst_cluster","minecraft:pointed_dripstone","minecraft:ochre_froglight","minecraft:verdant_froglight","minecraft:pearlescent_froglight","minecraft:frogspawn","minecraft:echo_shard","minecraft:brush","minecraft:netherite_upgrade_smithing_template","minecraft:sentry_armor_trim_smithing_template","minecraft:dune_armor_trim_smithing_template","minecraft:coast_armor_trim_smithing_template","minecraft:wild_armor_trim_smithing_template","minecraft:ward_armor_trim_smithing_template","minecraft:eye_armor_trim_smithing_template","minecraft:vex_armor_trim_smithing_template","minecraft:tide_armor_trim_smithing_template","minecraft:snout_armor_trim_smithing_template","minecraft:rib_armor_trim_smithing_template","minecraft:spire_armor_trim_smithing_template","minecraft:wayfinder_armor_trim_smithing_template","minecraft:shaper_armor_trim_smithing_template","minecraft:silence_armor_trim_smithing_template","minecraft:raiser_armor_trim_smithing_template","minecraft:host_armor_trim_smithing_template","minecraft:flow_armor_trim_smithing_template","minecraft:bolt_armor_trim_smithing_template","minecraft:angler_pottery_sherd","minecraft:archer_pottery_sherd","minecraft:arms_up_pottery_sherd","minecraft:blade_pottery_sherd","minecraft:brewer_pottery_sherd","minecraft:burn_pottery_sherd","minecraft:danger_pottery_sherd","minecraft:explorer_pottery_sherd","minecraft:flow_pottery_sherd","minecraft:friend_pottery_sherd","minecraft:guster_pottery_sherd","minecraft:heart_pottery_sherd","minecraft:heartbreak_pottery_sherd","minecraft:howl_pottery_sherd","minecraft:miner_pottery_sherd","minecraft:mourner_pottery_sherd","minecraft:plenty_pottery_sherd","minecraft:prize_pottery_sherd","minecraft:scrape_pottery_sherd","minecraft:sheaf_pottery_sherd","minecraft:shelter_pottery_sherd","minecraft:skull_pottery_sherd","minecraft:snort_pottery_sherd","minecraft:copper_grate","minecraft:exposed_copper_grate","minecraft:weathered_copper_grate","minecraft:oxidized_copper_grate","minecraft:waxed_copper_grate","minecraft:waxed_exposed_copper_grate","minecraft:waxed_weathered_copper_grate","minecraft:waxed_oxidized_copper_grate","minecraft:copper_bulb","minecraft:exposed_copper_bulb","minecraft:weathered_copper_bulb","minecraft:oxidized_copper_bulb","minecraft:waxed_copper_bulb","minecraft:waxed_exposed_copper_bulb","minecraft:waxed_weathered_copper_bulb","minecraft:waxed_oxidized_copper_bulb","minecraft:copper_chest","minecraft:exposed_copper_chest","minecraft:weathered_copper_chest","minecraft:oxidized_copper_chest","minecraft:waxed_copper_chest","minecraft:waxed_exposed_copper_chest","minecraft:waxed_weathered_copper_chest","minecraft:waxed_oxidized_copper_chest","minecraft:copper_golem_statue","minecraft:exposed_copper_golem_statue","minecraft:weathered_copper_golem_statue","minecraft:oxidized_copper_golem_statue","minecraft:waxed_copper_golem_statue","minecraft:waxed_exposed_copper_golem_statue","minecraft:waxed_weathered_copper_golem_statue","minecraft:waxed_oxidized_copper_golem_statue","minecraft:trial_spawner","minecraft:trial_key","minecraft:ominous_trial_key","minecraft:vault","minecraft:ominous_bottle"];
impl DefaultableComponent for ItemModel {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = ITEM_MODEL_VALUES[item as usize];
@@ -2066,7 +2118,7 @@ impl DefaultableComponent for ItemModel {
}
}
#[rustfmt::skip]
-static ITEM_NAME_VALUES: [&str; 1505] = ["block.minecraft.air","block.minecraft.stone","block.minecraft.granite","block.minecraft.polished_granite","block.minecraft.diorite","block.minecraft.polished_diorite","block.minecraft.andesite","block.minecraft.polished_andesite","block.minecraft.deepslate","block.minecraft.cobbled_deepslate","block.minecraft.polished_deepslate","block.minecraft.calcite","block.minecraft.tuff","block.minecraft.tuff_slab","block.minecraft.tuff_stairs","block.minecraft.tuff_wall","block.minecraft.chiseled_tuff","block.minecraft.polished_tuff","block.minecraft.polished_tuff_slab","block.minecraft.polished_tuff_stairs","block.minecraft.polished_tuff_wall","block.minecraft.tuff_bricks","block.minecraft.tuff_brick_slab","block.minecraft.tuff_brick_stairs","block.minecraft.tuff_brick_wall","block.minecraft.chiseled_tuff_bricks","block.minecraft.dripstone_block","block.minecraft.grass_block","block.minecraft.dirt","block.minecraft.coarse_dirt","block.minecraft.podzol","block.minecraft.rooted_dirt","block.minecraft.mud","block.minecraft.crimson_nylium","block.minecraft.warped_nylium","block.minecraft.cobblestone","block.minecraft.oak_planks","block.minecraft.spruce_planks","block.minecraft.birch_planks","block.minecraft.jungle_planks","block.minecraft.acacia_planks","block.minecraft.cherry_planks","block.minecraft.dark_oak_planks","block.minecraft.pale_oak_planks","block.minecraft.mangrove_planks","block.minecraft.bamboo_planks","block.minecraft.crimson_planks","block.minecraft.warped_planks","block.minecraft.bamboo_mosaic","block.minecraft.oak_sapling","block.minecraft.spruce_sapling","block.minecraft.birch_sapling","block.minecraft.jungle_sapling","block.minecraft.acacia_sapling","block.minecraft.cherry_sapling","block.minecraft.dark_oak_sapling","block.minecraft.pale_oak_sapling","block.minecraft.mangrove_propagule","block.minecraft.bedrock","block.minecraft.sand","block.minecraft.suspicious_sand","block.minecraft.suspicious_gravel","block.minecraft.red_sand","block.minecraft.gravel","block.minecraft.coal_ore","block.minecraft.deepslate_coal_ore","block.minecraft.iron_ore","block.minecraft.deepslate_iron_ore","block.minecraft.copper_ore","block.minecraft.deepslate_copper_ore","block.minecraft.gold_ore","block.minecraft.deepslate_gold_ore","block.minecraft.redstone_ore","block.minecraft.deepslate_redstone_ore","block.minecraft.emerald_ore","block.minecraft.deepslate_emerald_ore","block.minecraft.lapis_ore","block.minecraft.deepslate_lapis_ore","block.minecraft.diamond_ore","block.minecraft.deepslate_diamond_ore","block.minecraft.nether_gold_ore","block.minecraft.nether_quartz_ore","block.minecraft.ancient_debris","block.minecraft.coal_block","block.minecraft.raw_iron_block","block.minecraft.raw_copper_block","block.minecraft.raw_gold_block","block.minecraft.heavy_core","block.minecraft.amethyst_block","block.minecraft.budding_amethyst","block.minecraft.iron_block","block.minecraft.copper_block","block.minecraft.gold_block","block.minecraft.diamond_block","block.minecraft.netherite_block","block.minecraft.exposed_copper","block.minecraft.weathered_copper","block.minecraft.oxidized_copper","block.minecraft.chiseled_copper","block.minecraft.exposed_chiseled_copper","block.minecraft.weathered_chiseled_copper","block.minecraft.oxidized_chiseled_copper","block.minecraft.cut_copper","block.minecraft.exposed_cut_copper","block.minecraft.weathered_cut_copper","block.minecraft.oxidized_cut_copper","block.minecraft.cut_copper_stairs","block.minecraft.exposed_cut_copper_stairs","block.minecraft.weathered_cut_copper_stairs","block.minecraft.oxidized_cut_copper_stairs","block.minecraft.cut_copper_slab","block.minecraft.exposed_cut_copper_slab","block.minecraft.weathered_cut_copper_slab","block.minecraft.oxidized_cut_copper_slab","block.minecraft.waxed_copper_block","block.minecraft.waxed_exposed_copper","block.minecraft.waxed_weathered_copper","block.minecraft.waxed_oxidized_copper","block.minecraft.waxed_chiseled_copper","block.minecraft.waxed_exposed_chiseled_copper","block.minecraft.waxed_weathered_chiseled_copper","block.minecraft.waxed_oxidized_chiseled_copper","block.minecraft.waxed_cut_copper","block.minecraft.waxed_exposed_cut_copper","block.minecraft.waxed_weathered_cut_copper","block.minecraft.waxed_oxidized_cut_copper","block.minecraft.waxed_cut_copper_stairs","block.minecraft.waxed_exposed_cut_copper_stairs","block.minecraft.waxed_weathered_cut_copper_stairs","block.minecraft.waxed_oxidized_cut_copper_stairs","block.minecraft.waxed_cut_copper_slab","block.minecraft.waxed_exposed_cut_copper_slab","block.minecraft.waxed_weathered_cut_copper_slab","block.minecraft.waxed_oxidized_cut_copper_slab","block.minecraft.oak_log","block.minecraft.spruce_log","block.minecraft.birch_log","block.minecraft.jungle_log","block.minecraft.acacia_log","block.minecraft.cherry_log","block.minecraft.pale_oak_log","block.minecraft.dark_oak_log","block.minecraft.mangrove_log","block.minecraft.mangrove_roots","block.minecraft.muddy_mangrove_roots","block.minecraft.crimson_stem","block.minecraft.warped_stem","block.minecraft.bamboo_block","block.minecraft.stripped_oak_log","block.minecraft.stripped_spruce_log","block.minecraft.stripped_birch_log","block.minecraft.stripped_jungle_log","block.minecraft.stripped_acacia_log","block.minecraft.stripped_cherry_log","block.minecraft.stripped_dark_oak_log","block.minecraft.stripped_pale_oak_log","block.minecraft.stripped_mangrove_log","block.minecraft.stripped_crimson_stem","block.minecraft.stripped_warped_stem","block.minecraft.stripped_oak_wood","block.minecraft.stripped_spruce_wood","block.minecraft.stripped_birch_wood","block.minecraft.stripped_jungle_wood","block.minecraft.stripped_acacia_wood","block.minecraft.stripped_cherry_wood","block.minecraft.stripped_dark_oak_wood","block.minecraft.stripped_pale_oak_wood","block.minecraft.stripped_mangrove_wood","block.minecraft.stripped_crimson_hyphae","block.minecraft.stripped_warped_hyphae","block.minecraft.stripped_bamboo_block","block.minecraft.oak_wood","block.minecraft.spruce_wood","block.minecraft.birch_wood","block.minecraft.jungle_wood","block.minecraft.acacia_wood","block.minecraft.cherry_wood","block.minecraft.pale_oak_wood","block.minecraft.dark_oak_wood","block.minecraft.mangrove_wood","block.minecraft.crimson_hyphae","block.minecraft.warped_hyphae","block.minecraft.oak_leaves","block.minecraft.spruce_leaves","block.minecraft.birch_leaves","block.minecraft.jungle_leaves","block.minecraft.acacia_leaves","block.minecraft.cherry_leaves","block.minecraft.dark_oak_leaves","block.minecraft.pale_oak_leaves","block.minecraft.mangrove_leaves","block.minecraft.azalea_leaves","block.minecraft.flowering_azalea_leaves","block.minecraft.sponge","block.minecraft.wet_sponge","block.minecraft.glass","block.minecraft.tinted_glass","block.minecraft.lapis_block","block.minecraft.sandstone","block.minecraft.chiseled_sandstone","block.minecraft.cut_sandstone","block.minecraft.cobweb","block.minecraft.short_grass","block.minecraft.fern","block.minecraft.bush","block.minecraft.azalea","block.minecraft.flowering_azalea","block.minecraft.dead_bush","block.minecraft.firefly_bush","block.minecraft.short_dry_grass","block.minecraft.tall_dry_grass","block.minecraft.seagrass","block.minecraft.sea_pickle","block.minecraft.white_wool","block.minecraft.orange_wool","block.minecraft.magenta_wool","block.minecraft.light_blue_wool","block.minecraft.yellow_wool","block.minecraft.lime_wool","block.minecraft.pink_wool","block.minecraft.gray_wool","block.minecraft.light_gray_wool","block.minecraft.cyan_wool","block.minecraft.purple_wool","block.minecraft.blue_wool","block.minecraft.brown_wool","block.minecraft.green_wool","block.minecraft.red_wool","block.minecraft.black_wool","block.minecraft.dandelion","block.minecraft.open_eyeblossom","block.minecraft.closed_eyeblossom","block.minecraft.poppy","block.minecraft.blue_orchid","block.minecraft.allium","block.minecraft.azure_bluet","block.minecraft.red_tulip","block.minecraft.orange_tulip","block.minecraft.white_tulip","block.minecraft.pink_tulip","block.minecraft.oxeye_daisy","block.minecraft.cornflower","block.minecraft.lily_of_the_valley","block.minecraft.wither_rose","block.minecraft.torchflower","block.minecraft.pitcher_plant","block.minecraft.spore_blossom","block.minecraft.brown_mushroom","block.minecraft.red_mushroom","block.minecraft.crimson_fungus","block.minecraft.warped_fungus","block.minecraft.crimson_roots","block.minecraft.warped_roots","block.minecraft.nether_sprouts","block.minecraft.weeping_vines","block.minecraft.twisting_vines","block.minecraft.sugar_cane","block.minecraft.kelp","block.minecraft.pink_petals","block.minecraft.wildflowers","block.minecraft.leaf_litter","block.minecraft.moss_carpet","block.minecraft.moss_block","block.minecraft.pale_moss_carpet","block.minecraft.pale_hanging_moss","block.minecraft.pale_moss_block","block.minecraft.hanging_roots","block.minecraft.big_dripleaf","block.minecraft.small_dripleaf","block.minecraft.bamboo","block.minecraft.oak_slab","block.minecraft.spruce_slab","block.minecraft.birch_slab","block.minecraft.jungle_slab","block.minecraft.acacia_slab","block.minecraft.cherry_slab","block.minecraft.dark_oak_slab","block.minecraft.pale_oak_slab","block.minecraft.mangrove_slab","block.minecraft.bamboo_slab","block.minecraft.bamboo_mosaic_slab","block.minecraft.crimson_slab","block.minecraft.warped_slab","block.minecraft.stone_slab","block.minecraft.smooth_stone_slab","block.minecraft.sandstone_slab","block.minecraft.cut_sandstone_slab","block.minecraft.petrified_oak_slab","block.minecraft.cobblestone_slab","block.minecraft.brick_slab","block.minecraft.stone_brick_slab","block.minecraft.mud_brick_slab","block.minecraft.nether_brick_slab","block.minecraft.quartz_slab","block.minecraft.red_sandstone_slab","block.minecraft.cut_red_sandstone_slab","block.minecraft.purpur_slab","block.minecraft.prismarine_slab","block.minecraft.prismarine_brick_slab","block.minecraft.dark_prismarine_slab","block.minecraft.smooth_quartz","block.minecraft.smooth_red_sandstone","block.minecraft.smooth_sandstone","block.minecraft.smooth_stone","block.minecraft.bricks","block.minecraft.acacia_shelf","block.minecraft.bamboo_shelf","block.minecraft.birch_shelf","block.minecraft.cherry_shelf","block.minecraft.crimson_shelf","block.minecraft.dark_oak_shelf","block.minecraft.jungle_shelf","block.minecraft.mangrove_shelf","block.minecraft.oak_shelf","block.minecraft.pale_oak_shelf","block.minecraft.spruce_shelf","block.minecraft.warped_shelf","block.minecraft.bookshelf","block.minecraft.chiseled_bookshelf","block.minecraft.decorated_pot","block.minecraft.mossy_cobblestone","block.minecraft.obsidian","block.minecraft.torch","block.minecraft.end_rod","block.minecraft.chorus_plant","block.minecraft.chorus_flower","block.minecraft.purpur_block","block.minecraft.purpur_pillar","block.minecraft.purpur_stairs","block.minecraft.spawner","block.minecraft.creaking_heart","block.minecraft.chest","block.minecraft.crafting_table","block.minecraft.farmland","block.minecraft.furnace","block.minecraft.ladder","block.minecraft.cobblestone_stairs","block.minecraft.snow","block.minecraft.ice","block.minecraft.snow_block","block.minecraft.cactus","block.minecraft.cactus_flower","block.minecraft.clay","block.minecraft.jukebox","block.minecraft.oak_fence","block.minecraft.spruce_fence","block.minecraft.birch_fence","block.minecraft.jungle_fence","block.minecraft.acacia_fence","block.minecraft.cherry_fence","block.minecraft.dark_oak_fence","block.minecraft.pale_oak_fence","block.minecraft.mangrove_fence","block.minecraft.bamboo_fence","block.minecraft.crimson_fence","block.minecraft.warped_fence","block.minecraft.pumpkin","block.minecraft.carved_pumpkin","block.minecraft.jack_o_lantern","block.minecraft.netherrack","block.minecraft.soul_sand","block.minecraft.soul_soil","block.minecraft.basalt","block.minecraft.polished_basalt","block.minecraft.smooth_basalt","block.minecraft.soul_torch","block.minecraft.copper_torch","block.minecraft.glowstone","block.minecraft.infested_stone","block.minecraft.infested_cobblestone","block.minecraft.infested_stone_bricks","block.minecraft.infested_mossy_stone_bricks","block.minecraft.infested_cracked_stone_bricks","block.minecraft.infested_chiseled_stone_bricks","block.minecraft.infested_deepslate","block.minecraft.stone_bricks","block.minecraft.mossy_stone_bricks","block.minecraft.cracked_stone_bricks","block.minecraft.chiseled_stone_bricks","block.minecraft.packed_mud","block.minecraft.mud_bricks","block.minecraft.deepslate_bricks","block.minecraft.cracked_deepslate_bricks","block.minecraft.deepslate_tiles","block.minecraft.cracked_deepslate_tiles","block.minecraft.chiseled_deepslate","block.minecraft.reinforced_deepslate","block.minecraft.brown_mushroom_block","block.minecraft.red_mushroom_block","block.minecraft.mushroom_stem","block.minecraft.iron_bars","block.minecraft.copper_bars","block.minecraft.exposed_copper_bars","block.minecraft.weathered_copper_bars","block.minecraft.oxidized_copper_bars","block.minecraft.waxed_copper_bars","block.minecraft.waxed_exposed_copper_bars","block.minecraft.waxed_weathered_copper_bars","block.minecraft.waxed_oxidized_copper_bars","block.minecraft.iron_chain","block.minecraft.copper_chain","block.minecraft.exposed_copper_chain","block.minecraft.weathered_copper_chain","block.minecraft.oxidized_copper_chain","block.minecraft.waxed_copper_chain","block.minecraft.waxed_exposed_copper_chain","block.minecraft.waxed_weathered_copper_chain","block.minecraft.waxed_oxidized_copper_chain","block.minecraft.glass_pane","block.minecraft.melon","block.minecraft.vine","block.minecraft.glow_lichen","item.minecraft.resin_clump","block.minecraft.resin_block","block.minecraft.resin_bricks","block.minecraft.resin_brick_stairs","block.minecraft.resin_brick_slab","block.minecraft.resin_brick_wall","block.minecraft.chiseled_resin_bricks","block.minecraft.brick_stairs","block.minecraft.stone_brick_stairs","block.minecraft.mud_brick_stairs","block.minecraft.mycelium","block.minecraft.lily_pad","block.minecraft.nether_bricks","block.minecraft.cracked_nether_bricks","block.minecraft.chiseled_nether_bricks","block.minecraft.nether_brick_fence","block.minecraft.nether_brick_stairs","block.minecraft.sculk","block.minecraft.sculk_vein","block.minecraft.sculk_catalyst","block.minecraft.sculk_shrieker","block.minecraft.enchanting_table","block.minecraft.end_portal_frame","block.minecraft.end_stone","block.minecraft.end_stone_bricks","block.minecraft.dragon_egg","block.minecraft.sandstone_stairs","block.minecraft.ender_chest","block.minecraft.emerald_block","block.minecraft.oak_stairs","block.minecraft.spruce_stairs","block.minecraft.birch_stairs","block.minecraft.jungle_stairs","block.minecraft.acacia_stairs","block.minecraft.cherry_stairs","block.minecraft.dark_oak_stairs","block.minecraft.pale_oak_stairs","block.minecraft.mangrove_stairs","block.minecraft.bamboo_stairs","block.minecraft.bamboo_mosaic_stairs","block.minecraft.crimson_stairs","block.minecraft.warped_stairs","block.minecraft.command_block","block.minecraft.beacon","block.minecraft.cobblestone_wall","block.minecraft.mossy_cobblestone_wall","block.minecraft.brick_wall","block.minecraft.prismarine_wall","block.minecraft.red_sandstone_wall","block.minecraft.mossy_stone_brick_wall","block.minecraft.granite_wall","block.minecraft.stone_brick_wall","block.minecraft.mud_brick_wall","block.minecraft.nether_brick_wall","block.minecraft.andesite_wall","block.minecraft.red_nether_brick_wall","block.minecraft.sandstone_wall","block.minecraft.end_stone_brick_wall","block.minecraft.diorite_wall","block.minecraft.blackstone_wall","block.minecraft.polished_blackstone_wall","block.minecraft.polished_blackstone_brick_wall","block.minecraft.cobbled_deepslate_wall","block.minecraft.polished_deepslate_wall","block.minecraft.deepslate_brick_wall","block.minecraft.deepslate_tile_wall","block.minecraft.anvil","block.minecraft.chipped_anvil","block.minecraft.damaged_anvil","block.minecraft.chiseled_quartz_block","block.minecraft.quartz_block","block.minecraft.quartz_bricks","block.minecraft.quartz_pillar","block.minecraft.quartz_stairs","block.minecraft.white_terracotta","block.minecraft.orange_terracotta","block.minecraft.magenta_terracotta","block.minecraft.light_blue_terracotta","block.minecraft.yellow_terracotta","block.minecraft.lime_terracotta","block.minecraft.pink_terracotta","block.minecraft.gray_terracotta","block.minecraft.light_gray_terracotta","block.minecraft.cyan_terracotta","block.minecraft.purple_terracotta","block.minecraft.blue_terracotta","block.minecraft.brown_terracotta","block.minecraft.green_terracotta","block.minecraft.red_terracotta","block.minecraft.black_terracotta","block.minecraft.barrier","block.minecraft.light","block.minecraft.hay_block","block.minecraft.white_carpet","block.minecraft.orange_carpet","block.minecraft.magenta_carpet","block.minecraft.light_blue_carpet","block.minecraft.yellow_carpet","block.minecraft.lime_carpet","block.minecraft.pink_carpet","block.minecraft.gray_carpet","block.minecraft.light_gray_carpet","block.minecraft.cyan_carpet","block.minecraft.purple_carpet","block.minecraft.blue_carpet","block.minecraft.brown_carpet","block.minecraft.green_carpet","block.minecraft.red_carpet","block.minecraft.black_carpet","block.minecraft.terracotta","block.minecraft.packed_ice","block.minecraft.dirt_path","block.minecraft.sunflower","block.minecraft.lilac","block.minecraft.rose_bush","block.minecraft.peony","block.minecraft.tall_grass","block.minecraft.large_fern","block.minecraft.white_stained_glass","block.minecraft.orange_stained_glass","block.minecraft.magenta_stained_glass","block.minecraft.light_blue_stained_glass","block.minecraft.yellow_stained_glass","block.minecraft.lime_stained_glass","block.minecraft.pink_stained_glass","block.minecraft.gray_stained_glass","block.minecraft.light_gray_stained_glass","block.minecraft.cyan_stained_glass","block.minecraft.purple_stained_glass","block.minecraft.blue_stained_glass","block.minecraft.brown_stained_glass","block.minecraft.green_stained_glass","block.minecraft.red_stained_glass","block.minecraft.black_stained_glass","block.minecraft.white_stained_glass_pane","block.minecraft.orange_stained_glass_pane","block.minecraft.magenta_stained_glass_pane","block.minecraft.light_blue_stained_glass_pane","block.minecraft.yellow_stained_glass_pane","block.minecraft.lime_stained_glass_pane","block.minecraft.pink_stained_glass_pane","block.minecraft.gray_stained_glass_pane","block.minecraft.light_gray_stained_glass_pane","block.minecraft.cyan_stained_glass_pane","block.minecraft.purple_stained_glass_pane","block.minecraft.blue_stained_glass_pane","block.minecraft.brown_stained_glass_pane","block.minecraft.green_stained_glass_pane","block.minecraft.red_stained_glass_pane","block.minecraft.black_stained_glass_pane","block.minecraft.prismarine","block.minecraft.prismarine_bricks","block.minecraft.dark_prismarine","block.minecraft.prismarine_stairs","block.minecraft.prismarine_brick_stairs","block.minecraft.dark_prismarine_stairs","block.minecraft.sea_lantern","block.minecraft.red_sandstone","block.minecraft.chiseled_red_sandstone","block.minecraft.cut_red_sandstone","block.minecraft.red_sandstone_stairs","block.minecraft.repeating_command_block","block.minecraft.chain_command_block","block.minecraft.magma_block","block.minecraft.nether_wart_block","block.minecraft.warped_wart_block","block.minecraft.red_nether_bricks","block.minecraft.bone_block","block.minecraft.structure_void","block.minecraft.shulker_box","block.minecraft.white_shulker_box","block.minecraft.orange_shulker_box","block.minecraft.magenta_shulker_box","block.minecraft.light_blue_shulker_box","block.minecraft.yellow_shulker_box","block.minecraft.lime_shulker_box","block.minecraft.pink_shulker_box","block.minecraft.gray_shulker_box","block.minecraft.light_gray_shulker_box","block.minecraft.cyan_shulker_box","block.minecraft.purple_shulker_box","block.minecraft.blue_shulker_box","block.minecraft.brown_shulker_box","block.minecraft.green_shulker_box","block.minecraft.red_shulker_box","block.minecraft.black_shulker_box","block.minecraft.white_glazed_terracotta","block.minecraft.orange_glazed_terracotta","block.minecraft.magenta_glazed_terracotta","block.minecraft.light_blue_glazed_terracotta","block.minecraft.yellow_glazed_terracotta","block.minecraft.lime_glazed_terracotta","block.minecraft.pink_glazed_terracotta","block.minecraft.gray_glazed_terracotta","block.minecraft.light_gray_glazed_terracotta","block.minecraft.cyan_glazed_terracotta","block.minecraft.purple_glazed_terracotta","block.minecraft.blue_glazed_terracotta","block.minecraft.brown_glazed_terracotta","block.minecraft.green_glazed_terracotta","block.minecraft.red_glazed_terracotta","block.minecraft.black_glazed_terracotta","block.minecraft.white_concrete","block.minecraft.orange_concrete","block.minecraft.magenta_concrete","block.minecraft.light_blue_concrete","block.minecraft.yellow_concrete","block.minecraft.lime_concrete","block.minecraft.pink_concrete","block.minecraft.gray_concrete","block.minecraft.light_gray_concrete","block.minecraft.cyan_concrete","block.minecraft.purple_concrete","block.minecraft.blue_concrete","block.minecraft.brown_concrete","block.minecraft.green_concrete","block.minecraft.red_concrete","block.minecraft.black_concrete","block.minecraft.white_concrete_powder","block.minecraft.orange_concrete_powder","block.minecraft.magenta_concrete_powder","block.minecraft.light_blue_concrete_powder","block.minecraft.yellow_concrete_powder","block.minecraft.lime_concrete_powder","block.minecraft.pink_concrete_powder","block.minecraft.gray_concrete_powder","block.minecraft.light_gray_concrete_powder","block.minecraft.cyan_concrete_powder","block.minecraft.purple_concrete_powder","block.minecraft.blue_concrete_powder","block.minecraft.brown_concrete_powder","block.minecraft.green_concrete_powder","block.minecraft.red_concrete_powder","block.minecraft.black_concrete_powder","block.minecraft.turtle_egg","block.minecraft.sniffer_egg","block.minecraft.dried_ghast","block.minecraft.dead_tube_coral_block","block.minecraft.dead_brain_coral_block","block.minecraft.dead_bubble_coral_block","block.minecraft.dead_fire_coral_block","block.minecraft.dead_horn_coral_block","block.minecraft.tube_coral_block","block.minecraft.brain_coral_block","block.minecraft.bubble_coral_block","block.minecraft.fire_coral_block","block.minecraft.horn_coral_block","block.minecraft.tube_coral","block.minecraft.brain_coral","block.minecraft.bubble_coral","block.minecraft.fire_coral","block.minecraft.horn_coral","block.minecraft.dead_brain_coral","block.minecraft.dead_bubble_coral","block.minecraft.dead_fire_coral","block.minecraft.dead_horn_coral","block.minecraft.dead_tube_coral","block.minecraft.tube_coral_fan","block.minecraft.brain_coral_fan","block.minecraft.bubble_coral_fan","block.minecraft.fire_coral_fan","block.minecraft.horn_coral_fan","block.minecraft.dead_tube_coral_fan","block.minecraft.dead_brain_coral_fan","block.minecraft.dead_bubble_coral_fan","block.minecraft.dead_fire_coral_fan","block.minecraft.dead_horn_coral_fan","block.minecraft.blue_ice","block.minecraft.conduit","block.minecraft.polished_granite_stairs","block.minecraft.smooth_red_sandstone_stairs","block.minecraft.mossy_stone_brick_stairs","block.minecraft.polished_diorite_stairs","block.minecraft.mossy_cobblestone_stairs","block.minecraft.end_stone_brick_stairs","block.minecraft.stone_stairs","block.minecraft.smooth_sandstone_stairs","block.minecraft.smooth_quartz_stairs","block.minecraft.granite_stairs","block.minecraft.andesite_stairs","block.minecraft.red_nether_brick_stairs","block.minecraft.polished_andesite_stairs","block.minecraft.diorite_stairs","block.minecraft.cobbled_deepslate_stairs","block.minecraft.polished_deepslate_stairs","block.minecraft.deepslate_brick_stairs","block.minecraft.deepslate_tile_stairs","block.minecraft.polished_granite_slab","block.minecraft.smooth_red_sandstone_slab","block.minecraft.mossy_stone_brick_slab","block.minecraft.polished_diorite_slab","block.minecraft.mossy_cobblestone_slab","block.minecraft.end_stone_brick_slab","block.minecraft.smooth_sandstone_slab","block.minecraft.smooth_quartz_slab","block.minecraft.granite_slab","block.minecraft.andesite_slab","block.minecraft.red_nether_brick_slab","block.minecraft.polished_andesite_slab","block.minecraft.diorite_slab","block.minecraft.cobbled_deepslate_slab","block.minecraft.polished_deepslate_slab","block.minecraft.deepslate_brick_slab","block.minecraft.deepslate_tile_slab","block.minecraft.scaffolding","item.minecraft.redstone","block.minecraft.redstone_torch","block.minecraft.redstone_block","block.minecraft.repeater","block.minecraft.comparator","block.minecraft.piston","block.minecraft.sticky_piston","block.minecraft.slime_block","block.minecraft.honey_block","block.minecraft.observer","block.minecraft.hopper","block.minecraft.dispenser","block.minecraft.dropper","block.minecraft.lectern","block.minecraft.target","block.minecraft.lever","block.minecraft.lightning_rod","block.minecraft.exposed_lightning_rod","block.minecraft.weathered_lightning_rod","block.minecraft.oxidized_lightning_rod","block.minecraft.waxed_lightning_rod","block.minecraft.waxed_exposed_lightning_rod","block.minecraft.waxed_weathered_lightning_rod","block.minecraft.waxed_oxidized_lightning_rod","block.minecraft.daylight_detector","block.minecraft.sculk_sensor","block.minecraft.calibrated_sculk_sensor","block.minecraft.tripwire_hook","block.minecraft.trapped_chest","block.minecraft.tnt","block.minecraft.redstone_lamp","block.minecraft.note_block","block.minecraft.stone_button","block.minecraft.polished_blackstone_button","block.minecraft.oak_button","block.minecraft.spruce_button","block.minecraft.birch_button","block.minecraft.jungle_button","block.minecraft.acacia_button","block.minecraft.cherry_button","block.minecraft.dark_oak_button","block.minecraft.pale_oak_button","block.minecraft.mangrove_button","block.minecraft.bamboo_button","block.minecraft.crimson_button","block.minecraft.warped_button","block.minecraft.stone_pressure_plate","block.minecraft.polished_blackstone_pressure_plate","block.minecraft.light_weighted_pressure_plate","block.minecraft.heavy_weighted_pressure_plate","block.minecraft.oak_pressure_plate","block.minecraft.spruce_pressure_plate","block.minecraft.birch_pressure_plate","block.minecraft.jungle_pressure_plate","block.minecraft.acacia_pressure_plate","block.minecraft.cherry_pressure_plate","block.minecraft.dark_oak_pressure_plate","block.minecraft.pale_oak_pressure_plate","block.minecraft.mangrove_pressure_plate","block.minecraft.bamboo_pressure_plate","block.minecraft.crimson_pressure_plate","block.minecraft.warped_pressure_plate","block.minecraft.iron_door","block.minecraft.oak_door","block.minecraft.spruce_door","block.minecraft.birch_door","block.minecraft.jungle_door","block.minecraft.acacia_door","block.minecraft.cherry_door","block.minecraft.dark_oak_door","block.minecraft.pale_oak_door","block.minecraft.mangrove_door","block.minecraft.bamboo_door","block.minecraft.crimson_door","block.minecraft.warped_door","block.minecraft.copper_door","block.minecraft.exposed_copper_door","block.minecraft.weathered_copper_door","block.minecraft.oxidized_copper_door","block.minecraft.waxed_copper_door","block.minecraft.waxed_exposed_copper_door","block.minecraft.waxed_weathered_copper_door","block.minecraft.waxed_oxidized_copper_door","block.minecraft.iron_trapdoor","block.minecraft.oak_trapdoor","block.minecraft.spruce_trapdoor","block.minecraft.birch_trapdoor","block.minecraft.jungle_trapdoor","block.minecraft.acacia_trapdoor","block.minecraft.cherry_trapdoor","block.minecraft.dark_oak_trapdoor","block.minecraft.pale_oak_trapdoor","block.minecraft.mangrove_trapdoor","block.minecraft.bamboo_trapdoor","block.minecraft.crimson_trapdoor","block.minecraft.warped_trapdoor","block.minecraft.copper_trapdoor","block.minecraft.exposed_copper_trapdoor","block.minecraft.weathered_copper_trapdoor","block.minecraft.oxidized_copper_trapdoor","block.minecraft.waxed_copper_trapdoor","block.minecraft.waxed_exposed_copper_trapdoor","block.minecraft.waxed_weathered_copper_trapdoor","block.minecraft.waxed_oxidized_copper_trapdoor","block.minecraft.oak_fence_gate","block.minecraft.spruce_fence_gate","block.minecraft.birch_fence_gate","block.minecraft.jungle_fence_gate","block.minecraft.acacia_fence_gate","block.minecraft.cherry_fence_gate","block.minecraft.dark_oak_fence_gate","block.minecraft.pale_oak_fence_gate","block.minecraft.mangrove_fence_gate","block.minecraft.bamboo_fence_gate","block.minecraft.crimson_fence_gate","block.minecraft.warped_fence_gate","block.minecraft.powered_rail","block.minecraft.detector_rail","block.minecraft.rail","block.minecraft.activator_rail","item.minecraft.saddle","item.minecraft.white_harness","item.minecraft.orange_harness","item.minecraft.magenta_harness","item.minecraft.light_blue_harness","item.minecraft.yellow_harness","item.minecraft.lime_harness","item.minecraft.pink_harness","item.minecraft.gray_harness","item.minecraft.light_gray_harness","item.minecraft.cyan_harness","item.minecraft.purple_harness","item.minecraft.blue_harness","item.minecraft.brown_harness","item.minecraft.green_harness","item.minecraft.red_harness","item.minecraft.black_harness","item.minecraft.minecart","item.minecraft.chest_minecart","item.minecraft.furnace_minecart","item.minecraft.tnt_minecart","item.minecraft.hopper_minecart","item.minecraft.carrot_on_a_stick","item.minecraft.warped_fungus_on_a_stick","item.minecraft.phantom_membrane","item.minecraft.elytra","item.minecraft.oak_boat","item.minecraft.oak_chest_boat","item.minecraft.spruce_boat","item.minecraft.spruce_chest_boat","item.minecraft.birch_boat","item.minecraft.birch_chest_boat","item.minecraft.jungle_boat","item.minecraft.jungle_chest_boat","item.minecraft.acacia_boat","item.minecraft.acacia_chest_boat","item.minecraft.cherry_boat","item.minecraft.cherry_chest_boat","item.minecraft.dark_oak_boat","item.minecraft.dark_oak_chest_boat","item.minecraft.pale_oak_boat","item.minecraft.pale_oak_chest_boat","item.minecraft.mangrove_boat","item.minecraft.mangrove_chest_boat","item.minecraft.bamboo_raft","item.minecraft.bamboo_chest_raft","block.minecraft.structure_block","block.minecraft.jigsaw","block.minecraft.test_block","block.minecraft.test_instance_block","item.minecraft.turtle_helmet","item.minecraft.turtle_scute","item.minecraft.armadillo_scute","item.minecraft.wolf_armor","item.minecraft.flint_and_steel","item.minecraft.bowl","item.minecraft.apple","item.minecraft.bow","item.minecraft.arrow","item.minecraft.coal","item.minecraft.charcoal","item.minecraft.diamond","item.minecraft.emerald","item.minecraft.lapis_lazuli","item.minecraft.quartz","item.minecraft.amethyst_shard","item.minecraft.raw_iron","item.minecraft.iron_ingot","item.minecraft.raw_copper","item.minecraft.copper_ingot","item.minecraft.raw_gold","item.minecraft.gold_ingot","item.minecraft.netherite_ingot","item.minecraft.netherite_scrap","item.minecraft.wooden_sword","item.minecraft.wooden_shovel","item.minecraft.wooden_pickaxe","item.minecraft.wooden_axe","item.minecraft.wooden_hoe","item.minecraft.copper_sword","item.minecraft.copper_shovel","item.minecraft.copper_pickaxe","item.minecraft.copper_axe","item.minecraft.copper_hoe","item.minecraft.stone_sword","item.minecraft.stone_shovel","item.minecraft.stone_pickaxe","item.minecraft.stone_axe","item.minecraft.stone_hoe","item.minecraft.golden_sword","item.minecraft.golden_shovel","item.minecraft.golden_pickaxe","item.minecraft.golden_axe","item.minecraft.golden_hoe","item.minecraft.iron_sword","item.minecraft.iron_shovel","item.minecraft.iron_pickaxe","item.minecraft.iron_axe","item.minecraft.iron_hoe","item.minecraft.diamond_sword","item.minecraft.diamond_shovel","item.minecraft.diamond_pickaxe","item.minecraft.diamond_axe","item.minecraft.diamond_hoe","item.minecraft.netherite_sword","item.minecraft.netherite_shovel","item.minecraft.netherite_pickaxe","item.minecraft.netherite_axe","item.minecraft.netherite_hoe","item.minecraft.stick","item.minecraft.mushroom_stew","item.minecraft.string","item.minecraft.feather","item.minecraft.gunpowder","item.minecraft.wheat_seeds","item.minecraft.wheat","item.minecraft.bread","item.minecraft.leather_helmet","item.minecraft.leather_chestplate","item.minecraft.leather_leggings","item.minecraft.leather_boots","item.minecraft.copper_helmet","item.minecraft.copper_chestplate","item.minecraft.copper_leggings","item.minecraft.copper_boots","item.minecraft.chainmail_helmet","item.minecraft.chainmail_chestplate","item.minecraft.chainmail_leggings","item.minecraft.chainmail_boots","item.minecraft.iron_helmet","item.minecraft.iron_chestplate","item.minecraft.iron_leggings","item.minecraft.iron_boots","item.minecraft.diamond_helmet","item.minecraft.diamond_chestplate","item.minecraft.diamond_leggings","item.minecraft.diamond_boots","item.minecraft.golden_helmet","item.minecraft.golden_chestplate","item.minecraft.golden_leggings","item.minecraft.golden_boots","item.minecraft.netherite_helmet","item.minecraft.netherite_chestplate","item.minecraft.netherite_leggings","item.minecraft.netherite_boots","item.minecraft.flint","item.minecraft.porkchop","item.minecraft.cooked_porkchop","item.minecraft.painting","item.minecraft.golden_apple","item.minecraft.enchanted_golden_apple","block.minecraft.oak_sign","block.minecraft.spruce_sign","block.minecraft.birch_sign","block.minecraft.jungle_sign","block.minecraft.acacia_sign","block.minecraft.cherry_sign","block.minecraft.dark_oak_sign","block.minecraft.pale_oak_sign","block.minecraft.mangrove_sign","block.minecraft.bamboo_sign","block.minecraft.crimson_sign","block.minecraft.warped_sign","block.minecraft.oak_hanging_sign","block.minecraft.spruce_hanging_sign","block.minecraft.birch_hanging_sign","block.minecraft.jungle_hanging_sign","block.minecraft.acacia_hanging_sign","block.minecraft.cherry_hanging_sign","block.minecraft.dark_oak_hanging_sign","block.minecraft.pale_oak_hanging_sign","block.minecraft.mangrove_hanging_sign","block.minecraft.bamboo_hanging_sign","block.minecraft.crimson_hanging_sign","block.minecraft.warped_hanging_sign","item.minecraft.bucket","item.minecraft.water_bucket","item.minecraft.lava_bucket","item.minecraft.powder_snow_bucket","item.minecraft.snowball","item.minecraft.leather","item.minecraft.milk_bucket","item.minecraft.pufferfish_bucket","item.minecraft.salmon_bucket","item.minecraft.cod_bucket","item.minecraft.tropical_fish_bucket","item.minecraft.axolotl_bucket","item.minecraft.tadpole_bucket","item.minecraft.brick","item.minecraft.clay_ball","block.minecraft.dried_kelp_block","item.minecraft.paper","item.minecraft.book","item.minecraft.slime_ball","item.minecraft.egg","item.minecraft.blue_egg","item.minecraft.brown_egg","item.minecraft.compass","item.minecraft.recovery_compass","item.minecraft.bundle","item.minecraft.white_bundle","item.minecraft.orange_bundle","item.minecraft.magenta_bundle","item.minecraft.light_blue_bundle","item.minecraft.yellow_bundle","item.minecraft.lime_bundle","item.minecraft.pink_bundle","item.minecraft.gray_bundle","item.minecraft.light_gray_bundle","item.minecraft.cyan_bundle","item.minecraft.purple_bundle","item.minecraft.blue_bundle","item.minecraft.brown_bundle","item.minecraft.green_bundle","item.minecraft.red_bundle","item.minecraft.black_bundle","item.minecraft.fishing_rod","item.minecraft.clock","item.minecraft.spyglass","item.minecraft.glowstone_dust","item.minecraft.cod","item.minecraft.salmon","item.minecraft.tropical_fish","item.minecraft.pufferfish","item.minecraft.cooked_cod","item.minecraft.cooked_salmon","item.minecraft.ink_sac","item.minecraft.glow_ink_sac","item.minecraft.cocoa_beans","item.minecraft.white_dye","item.minecraft.orange_dye","item.minecraft.magenta_dye","item.minecraft.light_blue_dye","item.minecraft.yellow_dye","item.minecraft.lime_dye","item.minecraft.pink_dye","item.minecraft.gray_dye","item.minecraft.light_gray_dye","item.minecraft.cyan_dye","item.minecraft.purple_dye","item.minecraft.blue_dye","item.minecraft.brown_dye","item.minecraft.green_dye","item.minecraft.red_dye","item.minecraft.black_dye","item.minecraft.bone_meal","item.minecraft.bone","item.minecraft.sugar","block.minecraft.cake","block.minecraft.white_bed","block.minecraft.orange_bed","block.minecraft.magenta_bed","block.minecraft.light_blue_bed","block.minecraft.yellow_bed","block.minecraft.lime_bed","block.minecraft.pink_bed","block.minecraft.gray_bed","block.minecraft.light_gray_bed","block.minecraft.cyan_bed","block.minecraft.purple_bed","block.minecraft.blue_bed","block.minecraft.brown_bed","block.minecraft.green_bed","block.minecraft.red_bed","block.minecraft.black_bed","item.minecraft.cookie","block.minecraft.crafter","item.minecraft.filled_map","item.minecraft.shears","item.minecraft.melon_slice","item.minecraft.dried_kelp","item.minecraft.pumpkin_seeds","item.minecraft.melon_seeds","item.minecraft.beef","item.minecraft.cooked_beef","item.minecraft.chicken","item.minecraft.cooked_chicken","item.minecraft.rotten_flesh","item.minecraft.ender_pearl","item.minecraft.blaze_rod","item.minecraft.ghast_tear","item.minecraft.gold_nugget","item.minecraft.nether_wart","item.minecraft.glass_bottle","item.minecraft.potion","item.minecraft.spider_eye","item.minecraft.fermented_spider_eye","item.minecraft.blaze_powder","item.minecraft.magma_cream","block.minecraft.brewing_stand","block.minecraft.cauldron","item.minecraft.ender_eye","item.minecraft.glistering_melon_slice","item.minecraft.chicken_spawn_egg","item.minecraft.cow_spawn_egg","item.minecraft.pig_spawn_egg","item.minecraft.sheep_spawn_egg","item.minecraft.camel_spawn_egg","item.minecraft.donkey_spawn_egg","item.minecraft.horse_spawn_egg","item.minecraft.mule_spawn_egg","item.minecraft.cat_spawn_egg","item.minecraft.parrot_spawn_egg","item.minecraft.wolf_spawn_egg","item.minecraft.armadillo_spawn_egg","item.minecraft.bat_spawn_egg","item.minecraft.bee_spawn_egg","item.minecraft.fox_spawn_egg","item.minecraft.goat_spawn_egg","item.minecraft.llama_spawn_egg","item.minecraft.ocelot_spawn_egg","item.minecraft.panda_spawn_egg","item.minecraft.polar_bear_spawn_egg","item.minecraft.rabbit_spawn_egg","item.minecraft.axolotl_spawn_egg","item.minecraft.cod_spawn_egg","item.minecraft.dolphin_spawn_egg","item.minecraft.frog_spawn_egg","item.minecraft.glow_squid_spawn_egg","item.minecraft.nautilus_spawn_egg","item.minecraft.pufferfish_spawn_egg","item.minecraft.salmon_spawn_egg","item.minecraft.squid_spawn_egg","item.minecraft.tadpole_spawn_egg","item.minecraft.tropical_fish_spawn_egg","item.minecraft.turtle_spawn_egg","item.minecraft.allay_spawn_egg","item.minecraft.mooshroom_spawn_egg","item.minecraft.sniffer_spawn_egg","item.minecraft.copper_golem_spawn_egg","item.minecraft.iron_golem_spawn_egg","item.minecraft.snow_golem_spawn_egg","item.minecraft.trader_llama_spawn_egg","item.minecraft.villager_spawn_egg","item.minecraft.wandering_trader_spawn_egg","item.minecraft.bogged_spawn_egg","item.minecraft.camel_husk_spawn_egg","item.minecraft.drowned_spawn_egg","item.minecraft.husk_spawn_egg","item.minecraft.parched_spawn_egg","item.minecraft.skeleton_spawn_egg","item.minecraft.skeleton_horse_spawn_egg","item.minecraft.stray_spawn_egg","item.minecraft.wither_spawn_egg","item.minecraft.wither_skeleton_spawn_egg","item.minecraft.zombie_spawn_egg","item.minecraft.zombie_horse_spawn_egg","item.minecraft.zombie_nautilus_spawn_egg","item.minecraft.zombie_villager_spawn_egg","item.minecraft.cave_spider_spawn_egg","item.minecraft.spider_spawn_egg","item.minecraft.breeze_spawn_egg","item.minecraft.creaking_spawn_egg","item.minecraft.creeper_spawn_egg","item.minecraft.elder_guardian_spawn_egg","item.minecraft.guardian_spawn_egg","item.minecraft.phantom_spawn_egg","item.minecraft.silverfish_spawn_egg","item.minecraft.slime_spawn_egg","item.minecraft.warden_spawn_egg","item.minecraft.witch_spawn_egg","item.minecraft.evoker_spawn_egg","item.minecraft.pillager_spawn_egg","item.minecraft.ravager_spawn_egg","item.minecraft.vindicator_spawn_egg","item.minecraft.vex_spawn_egg","item.minecraft.blaze_spawn_egg","item.minecraft.ghast_spawn_egg","item.minecraft.happy_ghast_spawn_egg","item.minecraft.hoglin_spawn_egg","item.minecraft.magma_cube_spawn_egg","item.minecraft.piglin_spawn_egg","item.minecraft.piglin_brute_spawn_egg","item.minecraft.strider_spawn_egg","item.minecraft.zoglin_spawn_egg","item.minecraft.zombified_piglin_spawn_egg","item.minecraft.ender_dragon_spawn_egg","item.minecraft.enderman_spawn_egg","item.minecraft.endermite_spawn_egg","item.minecraft.shulker_spawn_egg","item.minecraft.experience_bottle","item.minecraft.fire_charge","item.minecraft.wind_charge","item.minecraft.writable_book","item.minecraft.written_book","item.minecraft.breeze_rod","item.minecraft.mace","item.minecraft.item_frame","item.minecraft.glow_item_frame","block.minecraft.flower_pot","item.minecraft.carrot","item.minecraft.potato","item.minecraft.baked_potato","item.minecraft.poisonous_potato","item.minecraft.map","item.minecraft.golden_carrot","block.minecraft.skeleton_skull","block.minecraft.wither_skeleton_skull","block.minecraft.player_head","block.minecraft.zombie_head","block.minecraft.creeper_head","block.minecraft.dragon_head","block.minecraft.piglin_head","item.minecraft.nether_star","item.minecraft.pumpkin_pie","item.minecraft.firework_rocket","item.minecraft.firework_star","item.minecraft.enchanted_book","item.minecraft.nether_brick","item.minecraft.resin_brick","item.minecraft.prismarine_shard","item.minecraft.prismarine_crystals","item.minecraft.rabbit","item.minecraft.cooked_rabbit","item.minecraft.rabbit_stew","item.minecraft.rabbit_foot","item.minecraft.rabbit_hide","item.minecraft.armor_stand","item.minecraft.copper_horse_armor","item.minecraft.iron_horse_armor","item.minecraft.golden_horse_armor","item.minecraft.diamond_horse_armor","item.minecraft.netherite_horse_armor","item.minecraft.leather_horse_armor","item.minecraft.lead","item.minecraft.name_tag","item.minecraft.command_block_minecart","item.minecraft.mutton","item.minecraft.cooked_mutton","block.minecraft.white_banner","block.minecraft.orange_banner","block.minecraft.magenta_banner","block.minecraft.light_blue_banner","block.minecraft.yellow_banner","block.minecraft.lime_banner","block.minecraft.pink_banner","block.minecraft.gray_banner","block.minecraft.light_gray_banner","block.minecraft.cyan_banner","block.minecraft.purple_banner","block.minecraft.blue_banner","block.minecraft.brown_banner","block.minecraft.green_banner","block.minecraft.red_banner","block.minecraft.black_banner","item.minecraft.end_crystal","item.minecraft.chorus_fruit","item.minecraft.popped_chorus_fruit","item.minecraft.torchflower_seeds","item.minecraft.pitcher_pod","item.minecraft.beetroot","item.minecraft.beetroot_seeds","item.minecraft.beetroot_soup","item.minecraft.dragon_breath","item.minecraft.splash_potion","item.minecraft.spectral_arrow","item.minecraft.tipped_arrow","item.minecraft.lingering_potion","item.minecraft.shield","item.minecraft.wooden_spear","item.minecraft.stone_spear","item.minecraft.copper_spear","item.minecraft.iron_spear","item.minecraft.golden_spear","item.minecraft.diamond_spear","item.minecraft.netherite_spear","item.minecraft.totem_of_undying","item.minecraft.shulker_shell","item.minecraft.iron_nugget","item.minecraft.copper_nugget","item.minecraft.knowledge_book","item.minecraft.debug_stick","item.minecraft.music_disc_13","item.minecraft.music_disc_cat","item.minecraft.music_disc_blocks","item.minecraft.music_disc_chirp","item.minecraft.music_disc_creator","item.minecraft.music_disc_creator_music_box","item.minecraft.music_disc_far","item.minecraft.music_disc_lava_chicken","item.minecraft.music_disc_mall","item.minecraft.music_disc_mellohi","item.minecraft.music_disc_stal","item.minecraft.music_disc_strad","item.minecraft.music_disc_ward","item.minecraft.music_disc_11","item.minecraft.music_disc_wait","item.minecraft.music_disc_otherside","item.minecraft.music_disc_relic","item.minecraft.music_disc_5","item.minecraft.music_disc_pigstep","item.minecraft.music_disc_precipice","item.minecraft.music_disc_tears","item.minecraft.disc_fragment_5","item.minecraft.trident","item.minecraft.nautilus_shell","item.minecraft.iron_nautilus_armor","item.minecraft.golden_nautilus_armor","item.minecraft.diamond_nautilus_armor","item.minecraft.netherite_nautilus_armor","item.minecraft.copper_nautilus_armor","item.minecraft.heart_of_the_sea","item.minecraft.crossbow","item.minecraft.suspicious_stew","block.minecraft.loom","item.minecraft.flower_banner_pattern","item.minecraft.creeper_banner_pattern","item.minecraft.skull_banner_pattern","item.minecraft.mojang_banner_pattern","item.minecraft.globe_banner_pattern","item.minecraft.piglin_banner_pattern","item.minecraft.flow_banner_pattern","item.minecraft.guster_banner_pattern","item.minecraft.field_masoned_banner_pattern","item.minecraft.bordure_indented_banner_pattern","item.minecraft.goat_horn","block.minecraft.composter","block.minecraft.barrel","block.minecraft.smoker","block.minecraft.blast_furnace","block.minecraft.cartography_table","block.minecraft.fletching_table","block.minecraft.grindstone","block.minecraft.smithing_table","block.minecraft.stonecutter","block.minecraft.bell","block.minecraft.lantern","block.minecraft.soul_lantern","block.minecraft.copper_lantern","block.minecraft.exposed_copper_lantern","block.minecraft.weathered_copper_lantern","block.minecraft.oxidized_copper_lantern","block.minecraft.waxed_copper_lantern","block.minecraft.waxed_exposed_copper_lantern","block.minecraft.waxed_weathered_copper_lantern","block.minecraft.waxed_oxidized_copper_lantern","item.minecraft.sweet_berries","item.minecraft.glow_berries","block.minecraft.campfire","block.minecraft.soul_campfire","block.minecraft.shroomlight","item.minecraft.honeycomb","block.minecraft.bee_nest","block.minecraft.beehive","item.minecraft.honey_bottle","block.minecraft.honeycomb_block","block.minecraft.lodestone","block.minecraft.crying_obsidian","block.minecraft.blackstone","block.minecraft.blackstone_slab","block.minecraft.blackstone_stairs","block.minecraft.gilded_blackstone","block.minecraft.polished_blackstone","block.minecraft.polished_blackstone_slab","block.minecraft.polished_blackstone_stairs","block.minecraft.chiseled_polished_blackstone","block.minecraft.polished_blackstone_bricks","block.minecraft.polished_blackstone_brick_slab","block.minecraft.polished_blackstone_brick_stairs","block.minecraft.cracked_polished_blackstone_bricks","block.minecraft.respawn_anchor","block.minecraft.candle","block.minecraft.white_candle","block.minecraft.orange_candle","block.minecraft.magenta_candle","block.minecraft.light_blue_candle","block.minecraft.yellow_candle","block.minecraft.lime_candle","block.minecraft.pink_candle","block.minecraft.gray_candle","block.minecraft.light_gray_candle","block.minecraft.cyan_candle","block.minecraft.purple_candle","block.minecraft.blue_candle","block.minecraft.brown_candle","block.minecraft.green_candle","block.minecraft.red_candle","block.minecraft.black_candle","block.minecraft.small_amethyst_bud","block.minecraft.medium_amethyst_bud","block.minecraft.large_amethyst_bud","block.minecraft.amethyst_cluster","block.minecraft.pointed_dripstone","block.minecraft.ochre_froglight","block.minecraft.verdant_froglight","block.minecraft.pearlescent_froglight","block.minecraft.frogspawn","item.minecraft.echo_shard","item.minecraft.brush","item.minecraft.netherite_upgrade_smithing_template","item.minecraft.sentry_armor_trim_smithing_template","item.minecraft.dune_armor_trim_smithing_template","item.minecraft.coast_armor_trim_smithing_template","item.minecraft.wild_armor_trim_smithing_template","item.minecraft.ward_armor_trim_smithing_template","item.minecraft.eye_armor_trim_smithing_template","item.minecraft.vex_armor_trim_smithing_template","item.minecraft.tide_armor_trim_smithing_template","item.minecraft.snout_armor_trim_smithing_template","item.minecraft.rib_armor_trim_smithing_template","item.minecraft.spire_armor_trim_smithing_template","item.minecraft.wayfinder_armor_trim_smithing_template","item.minecraft.shaper_armor_trim_smithing_template","item.minecraft.silence_armor_trim_smithing_template","item.minecraft.raiser_armor_trim_smithing_template","item.minecraft.host_armor_trim_smithing_template","item.minecraft.flow_armor_trim_smithing_template","item.minecraft.bolt_armor_trim_smithing_template","item.minecraft.angler_pottery_sherd","item.minecraft.archer_pottery_sherd","item.minecraft.arms_up_pottery_sherd","item.minecraft.blade_pottery_sherd","item.minecraft.brewer_pottery_sherd","item.minecraft.burn_pottery_sherd","item.minecraft.danger_pottery_sherd","item.minecraft.explorer_pottery_sherd","item.minecraft.flow_pottery_sherd","item.minecraft.friend_pottery_sherd","item.minecraft.guster_pottery_sherd","item.minecraft.heart_pottery_sherd","item.minecraft.heartbreak_pottery_sherd","item.minecraft.howl_pottery_sherd","item.minecraft.miner_pottery_sherd","item.minecraft.mourner_pottery_sherd","item.minecraft.plenty_pottery_sherd","item.minecraft.prize_pottery_sherd","item.minecraft.scrape_pottery_sherd","item.minecraft.sheaf_pottery_sherd","item.minecraft.shelter_pottery_sherd","item.minecraft.skull_pottery_sherd","item.minecraft.snort_pottery_sherd","block.minecraft.copper_grate","block.minecraft.exposed_copper_grate","block.minecraft.weathered_copper_grate","block.minecraft.oxidized_copper_grate","block.minecraft.waxed_copper_grate","block.minecraft.waxed_exposed_copper_grate","block.minecraft.waxed_weathered_copper_grate","block.minecraft.waxed_oxidized_copper_grate","block.minecraft.copper_bulb","block.minecraft.exposed_copper_bulb","block.minecraft.weathered_copper_bulb","block.minecraft.oxidized_copper_bulb","block.minecraft.waxed_copper_bulb","block.minecraft.waxed_exposed_copper_bulb","block.minecraft.waxed_weathered_copper_bulb","block.minecraft.waxed_oxidized_copper_bulb","block.minecraft.copper_chest","block.minecraft.exposed_copper_chest","block.minecraft.weathered_copper_chest","block.minecraft.oxidized_copper_chest","block.minecraft.waxed_copper_chest","block.minecraft.waxed_exposed_copper_chest","block.minecraft.waxed_weathered_copper_chest","block.minecraft.waxed_oxidized_copper_chest","block.minecraft.copper_golem_statue","block.minecraft.exposed_copper_golem_statue","block.minecraft.weathered_copper_golem_statue","block.minecraft.oxidized_copper_golem_statue","block.minecraft.waxed_copper_golem_statue","block.minecraft.waxed_exposed_copper_golem_statue","block.minecraft.waxed_weathered_copper_golem_statue","block.minecraft.waxed_oxidized_copper_golem_statue","block.minecraft.trial_spawner","item.minecraft.trial_key","item.minecraft.ominous_trial_key","block.minecraft.vault","item.minecraft.ominous_bottle"];
+static ITEM_NAME_VALUES: [&str; 1506] = ["block.minecraft.air","block.minecraft.stone","block.minecraft.granite","block.minecraft.polished_granite","block.minecraft.diorite","block.minecraft.polished_diorite","block.minecraft.andesite","block.minecraft.polished_andesite","block.minecraft.deepslate","block.minecraft.cobbled_deepslate","block.minecraft.polished_deepslate","block.minecraft.calcite","block.minecraft.tuff","block.minecraft.tuff_slab","block.minecraft.tuff_stairs","block.minecraft.tuff_wall","block.minecraft.chiseled_tuff","block.minecraft.polished_tuff","block.minecraft.polished_tuff_slab","block.minecraft.polished_tuff_stairs","block.minecraft.polished_tuff_wall","block.minecraft.tuff_bricks","block.minecraft.tuff_brick_slab","block.minecraft.tuff_brick_stairs","block.minecraft.tuff_brick_wall","block.minecraft.chiseled_tuff_bricks","block.minecraft.dripstone_block","block.minecraft.grass_block","block.minecraft.dirt","block.minecraft.coarse_dirt","block.minecraft.podzol","block.minecraft.rooted_dirt","block.minecraft.mud","block.minecraft.crimson_nylium","block.minecraft.warped_nylium","block.minecraft.cobblestone","block.minecraft.oak_planks","block.minecraft.spruce_planks","block.minecraft.birch_planks","block.minecraft.jungle_planks","block.minecraft.acacia_planks","block.minecraft.cherry_planks","block.minecraft.dark_oak_planks","block.minecraft.pale_oak_planks","block.minecraft.mangrove_planks","block.minecraft.bamboo_planks","block.minecraft.crimson_planks","block.minecraft.warped_planks","block.minecraft.bamboo_mosaic","block.minecraft.oak_sapling","block.minecraft.spruce_sapling","block.minecraft.birch_sapling","block.minecraft.jungle_sapling","block.minecraft.acacia_sapling","block.minecraft.cherry_sapling","block.minecraft.dark_oak_sapling","block.minecraft.pale_oak_sapling","block.minecraft.mangrove_propagule","block.minecraft.bedrock","block.minecraft.sand","block.minecraft.suspicious_sand","block.minecraft.suspicious_gravel","block.minecraft.red_sand","block.minecraft.gravel","block.minecraft.coal_ore","block.minecraft.deepslate_coal_ore","block.minecraft.iron_ore","block.minecraft.deepslate_iron_ore","block.minecraft.copper_ore","block.minecraft.deepslate_copper_ore","block.minecraft.gold_ore","block.minecraft.deepslate_gold_ore","block.minecraft.redstone_ore","block.minecraft.deepslate_redstone_ore","block.minecraft.emerald_ore","block.minecraft.deepslate_emerald_ore","block.minecraft.lapis_ore","block.minecraft.deepslate_lapis_ore","block.minecraft.diamond_ore","block.minecraft.deepslate_diamond_ore","block.minecraft.nether_gold_ore","block.minecraft.nether_quartz_ore","block.minecraft.ancient_debris","block.minecraft.coal_block","block.minecraft.raw_iron_block","block.minecraft.raw_copper_block","block.minecraft.raw_gold_block","block.minecraft.heavy_core","block.minecraft.amethyst_block","block.minecraft.budding_amethyst","block.minecraft.iron_block","block.minecraft.copper_block","block.minecraft.gold_block","block.minecraft.diamond_block","block.minecraft.netherite_block","block.minecraft.exposed_copper","block.minecraft.weathered_copper","block.minecraft.oxidized_copper","block.minecraft.chiseled_copper","block.minecraft.exposed_chiseled_copper","block.minecraft.weathered_chiseled_copper","block.minecraft.oxidized_chiseled_copper","block.minecraft.cut_copper","block.minecraft.exposed_cut_copper","block.minecraft.weathered_cut_copper","block.minecraft.oxidized_cut_copper","block.minecraft.cut_copper_stairs","block.minecraft.exposed_cut_copper_stairs","block.minecraft.weathered_cut_copper_stairs","block.minecraft.oxidized_cut_copper_stairs","block.minecraft.cut_copper_slab","block.minecraft.exposed_cut_copper_slab","block.minecraft.weathered_cut_copper_slab","block.minecraft.oxidized_cut_copper_slab","block.minecraft.waxed_copper_block","block.minecraft.waxed_exposed_copper","block.minecraft.waxed_weathered_copper","block.minecraft.waxed_oxidized_copper","block.minecraft.waxed_chiseled_copper","block.minecraft.waxed_exposed_chiseled_copper","block.minecraft.waxed_weathered_chiseled_copper","block.minecraft.waxed_oxidized_chiseled_copper","block.minecraft.waxed_cut_copper","block.minecraft.waxed_exposed_cut_copper","block.minecraft.waxed_weathered_cut_copper","block.minecraft.waxed_oxidized_cut_copper","block.minecraft.waxed_cut_copper_stairs","block.minecraft.waxed_exposed_cut_copper_stairs","block.minecraft.waxed_weathered_cut_copper_stairs","block.minecraft.waxed_oxidized_cut_copper_stairs","block.minecraft.waxed_cut_copper_slab","block.minecraft.waxed_exposed_cut_copper_slab","block.minecraft.waxed_weathered_cut_copper_slab","block.minecraft.waxed_oxidized_cut_copper_slab","block.minecraft.oak_log","block.minecraft.spruce_log","block.minecraft.birch_log","block.minecraft.jungle_log","block.minecraft.acacia_log","block.minecraft.cherry_log","block.minecraft.pale_oak_log","block.minecraft.dark_oak_log","block.minecraft.mangrove_log","block.minecraft.mangrove_roots","block.minecraft.muddy_mangrove_roots","block.minecraft.crimson_stem","block.minecraft.warped_stem","block.minecraft.bamboo_block","block.minecraft.stripped_oak_log","block.minecraft.stripped_spruce_log","block.minecraft.stripped_birch_log","block.minecraft.stripped_jungle_log","block.minecraft.stripped_acacia_log","block.minecraft.stripped_cherry_log","block.minecraft.stripped_dark_oak_log","block.minecraft.stripped_pale_oak_log","block.minecraft.stripped_mangrove_log","block.minecraft.stripped_crimson_stem","block.minecraft.stripped_warped_stem","block.minecraft.stripped_oak_wood","block.minecraft.stripped_spruce_wood","block.minecraft.stripped_birch_wood","block.minecraft.stripped_jungle_wood","block.minecraft.stripped_acacia_wood","block.minecraft.stripped_cherry_wood","block.minecraft.stripped_dark_oak_wood","block.minecraft.stripped_pale_oak_wood","block.minecraft.stripped_mangrove_wood","block.minecraft.stripped_crimson_hyphae","block.minecraft.stripped_warped_hyphae","block.minecraft.stripped_bamboo_block","block.minecraft.oak_wood","block.minecraft.spruce_wood","block.minecraft.birch_wood","block.minecraft.jungle_wood","block.minecraft.acacia_wood","block.minecraft.cherry_wood","block.minecraft.pale_oak_wood","block.minecraft.dark_oak_wood","block.minecraft.mangrove_wood","block.minecraft.crimson_hyphae","block.minecraft.warped_hyphae","block.minecraft.oak_leaves","block.minecraft.spruce_leaves","block.minecraft.birch_leaves","block.minecraft.jungle_leaves","block.minecraft.acacia_leaves","block.minecraft.cherry_leaves","block.minecraft.dark_oak_leaves","block.minecraft.pale_oak_leaves","block.minecraft.mangrove_leaves","block.minecraft.azalea_leaves","block.minecraft.flowering_azalea_leaves","block.minecraft.sponge","block.minecraft.wet_sponge","block.minecraft.glass","block.minecraft.tinted_glass","block.minecraft.lapis_block","block.minecraft.sandstone","block.minecraft.chiseled_sandstone","block.minecraft.cut_sandstone","block.minecraft.cobweb","block.minecraft.short_grass","block.minecraft.fern","block.minecraft.bush","block.minecraft.azalea","block.minecraft.flowering_azalea","block.minecraft.dead_bush","block.minecraft.firefly_bush","block.minecraft.short_dry_grass","block.minecraft.tall_dry_grass","block.minecraft.seagrass","block.minecraft.sea_pickle","block.minecraft.white_wool","block.minecraft.orange_wool","block.minecraft.magenta_wool","block.minecraft.light_blue_wool","block.minecraft.yellow_wool","block.minecraft.lime_wool","block.minecraft.pink_wool","block.minecraft.gray_wool","block.minecraft.light_gray_wool","block.minecraft.cyan_wool","block.minecraft.purple_wool","block.minecraft.blue_wool","block.minecraft.brown_wool","block.minecraft.green_wool","block.minecraft.red_wool","block.minecraft.black_wool","block.minecraft.dandelion","block.minecraft.golden_dandelion","block.minecraft.open_eyeblossom","block.minecraft.closed_eyeblossom","block.minecraft.poppy","block.minecraft.blue_orchid","block.minecraft.allium","block.minecraft.azure_bluet","block.minecraft.red_tulip","block.minecraft.orange_tulip","block.minecraft.white_tulip","block.minecraft.pink_tulip","block.minecraft.oxeye_daisy","block.minecraft.cornflower","block.minecraft.lily_of_the_valley","block.minecraft.wither_rose","block.minecraft.torchflower","block.minecraft.pitcher_plant","block.minecraft.spore_blossom","block.minecraft.brown_mushroom","block.minecraft.red_mushroom","block.minecraft.crimson_fungus","block.minecraft.warped_fungus","block.minecraft.crimson_roots","block.minecraft.warped_roots","block.minecraft.nether_sprouts","block.minecraft.weeping_vines","block.minecraft.twisting_vines","block.minecraft.sugar_cane","block.minecraft.kelp","block.minecraft.pink_petals","block.minecraft.wildflowers","block.minecraft.leaf_litter","block.minecraft.moss_carpet","block.minecraft.moss_block","block.minecraft.pale_moss_carpet","block.minecraft.pale_hanging_moss","block.minecraft.pale_moss_block","block.minecraft.hanging_roots","block.minecraft.big_dripleaf","block.minecraft.small_dripleaf","block.minecraft.bamboo","block.minecraft.oak_slab","block.minecraft.spruce_slab","block.minecraft.birch_slab","block.minecraft.jungle_slab","block.minecraft.acacia_slab","block.minecraft.cherry_slab","block.minecraft.dark_oak_slab","block.minecraft.pale_oak_slab","block.minecraft.mangrove_slab","block.minecraft.bamboo_slab","block.minecraft.bamboo_mosaic_slab","block.minecraft.crimson_slab","block.minecraft.warped_slab","block.minecraft.stone_slab","block.minecraft.smooth_stone_slab","block.minecraft.sandstone_slab","block.minecraft.cut_sandstone_slab","block.minecraft.petrified_oak_slab","block.minecraft.cobblestone_slab","block.minecraft.brick_slab","block.minecraft.stone_brick_slab","block.minecraft.mud_brick_slab","block.minecraft.nether_brick_slab","block.minecraft.quartz_slab","block.minecraft.red_sandstone_slab","block.minecraft.cut_red_sandstone_slab","block.minecraft.purpur_slab","block.minecraft.prismarine_slab","block.minecraft.prismarine_brick_slab","block.minecraft.dark_prismarine_slab","block.minecraft.smooth_quartz","block.minecraft.smooth_red_sandstone","block.minecraft.smooth_sandstone","block.minecraft.smooth_stone","block.minecraft.bricks","block.minecraft.acacia_shelf","block.minecraft.bamboo_shelf","block.minecraft.birch_shelf","block.minecraft.cherry_shelf","block.minecraft.crimson_shelf","block.minecraft.dark_oak_shelf","block.minecraft.jungle_shelf","block.minecraft.mangrove_shelf","block.minecraft.oak_shelf","block.minecraft.pale_oak_shelf","block.minecraft.spruce_shelf","block.minecraft.warped_shelf","block.minecraft.bookshelf","block.minecraft.chiseled_bookshelf","block.minecraft.decorated_pot","block.minecraft.mossy_cobblestone","block.minecraft.obsidian","block.minecraft.torch","block.minecraft.end_rod","block.minecraft.chorus_plant","block.minecraft.chorus_flower","block.minecraft.purpur_block","block.minecraft.purpur_pillar","block.minecraft.purpur_stairs","block.minecraft.spawner","block.minecraft.creaking_heart","block.minecraft.chest","block.minecraft.crafting_table","block.minecraft.farmland","block.minecraft.furnace","block.minecraft.ladder","block.minecraft.cobblestone_stairs","block.minecraft.snow","block.minecraft.ice","block.minecraft.snow_block","block.minecraft.cactus","block.minecraft.cactus_flower","block.minecraft.clay","block.minecraft.jukebox","block.minecraft.oak_fence","block.minecraft.spruce_fence","block.minecraft.birch_fence","block.minecraft.jungle_fence","block.minecraft.acacia_fence","block.minecraft.cherry_fence","block.minecraft.dark_oak_fence","block.minecraft.pale_oak_fence","block.minecraft.mangrove_fence","block.minecraft.bamboo_fence","block.minecraft.crimson_fence","block.minecraft.warped_fence","block.minecraft.pumpkin","block.minecraft.carved_pumpkin","block.minecraft.jack_o_lantern","block.minecraft.netherrack","block.minecraft.soul_sand","block.minecraft.soul_soil","block.minecraft.basalt","block.minecraft.polished_basalt","block.minecraft.smooth_basalt","block.minecraft.soul_torch","block.minecraft.copper_torch","block.minecraft.glowstone","block.minecraft.infested_stone","block.minecraft.infested_cobblestone","block.minecraft.infested_stone_bricks","block.minecraft.infested_mossy_stone_bricks","block.minecraft.infested_cracked_stone_bricks","block.minecraft.infested_chiseled_stone_bricks","block.minecraft.infested_deepslate","block.minecraft.stone_bricks","block.minecraft.mossy_stone_bricks","block.minecraft.cracked_stone_bricks","block.minecraft.chiseled_stone_bricks","block.minecraft.packed_mud","block.minecraft.mud_bricks","block.minecraft.deepslate_bricks","block.minecraft.cracked_deepslate_bricks","block.minecraft.deepslate_tiles","block.minecraft.cracked_deepslate_tiles","block.minecraft.chiseled_deepslate","block.minecraft.reinforced_deepslate","block.minecraft.brown_mushroom_block","block.minecraft.red_mushroom_block","block.minecraft.mushroom_stem","block.minecraft.iron_bars","block.minecraft.copper_bars","block.minecraft.exposed_copper_bars","block.minecraft.weathered_copper_bars","block.minecraft.oxidized_copper_bars","block.minecraft.waxed_copper_bars","block.minecraft.waxed_exposed_copper_bars","block.minecraft.waxed_weathered_copper_bars","block.minecraft.waxed_oxidized_copper_bars","block.minecraft.iron_chain","block.minecraft.copper_chain","block.minecraft.exposed_copper_chain","block.minecraft.weathered_copper_chain","block.minecraft.oxidized_copper_chain","block.minecraft.waxed_copper_chain","block.minecraft.waxed_exposed_copper_chain","block.minecraft.waxed_weathered_copper_chain","block.minecraft.waxed_oxidized_copper_chain","block.minecraft.glass_pane","block.minecraft.melon","block.minecraft.vine","block.minecraft.glow_lichen","item.minecraft.resin_clump","block.minecraft.resin_block","block.minecraft.resin_bricks","block.minecraft.resin_brick_stairs","block.minecraft.resin_brick_slab","block.minecraft.resin_brick_wall","block.minecraft.chiseled_resin_bricks","block.minecraft.brick_stairs","block.minecraft.stone_brick_stairs","block.minecraft.mud_brick_stairs","block.minecraft.mycelium","block.minecraft.lily_pad","block.minecraft.nether_bricks","block.minecraft.cracked_nether_bricks","block.minecraft.chiseled_nether_bricks","block.minecraft.nether_brick_fence","block.minecraft.nether_brick_stairs","block.minecraft.sculk","block.minecraft.sculk_vein","block.minecraft.sculk_catalyst","block.minecraft.sculk_shrieker","block.minecraft.enchanting_table","block.minecraft.end_portal_frame","block.minecraft.end_stone","block.minecraft.end_stone_bricks","block.minecraft.dragon_egg","block.minecraft.sandstone_stairs","block.minecraft.ender_chest","block.minecraft.emerald_block","block.minecraft.oak_stairs","block.minecraft.spruce_stairs","block.minecraft.birch_stairs","block.minecraft.jungle_stairs","block.minecraft.acacia_stairs","block.minecraft.cherry_stairs","block.minecraft.dark_oak_stairs","block.minecraft.pale_oak_stairs","block.minecraft.mangrove_stairs","block.minecraft.bamboo_stairs","block.minecraft.bamboo_mosaic_stairs","block.minecraft.crimson_stairs","block.minecraft.warped_stairs","block.minecraft.command_block","block.minecraft.beacon","block.minecraft.cobblestone_wall","block.minecraft.mossy_cobblestone_wall","block.minecraft.brick_wall","block.minecraft.prismarine_wall","block.minecraft.red_sandstone_wall","block.minecraft.mossy_stone_brick_wall","block.minecraft.granite_wall","block.minecraft.stone_brick_wall","block.minecraft.mud_brick_wall","block.minecraft.nether_brick_wall","block.minecraft.andesite_wall","block.minecraft.red_nether_brick_wall","block.minecraft.sandstone_wall","block.minecraft.end_stone_brick_wall","block.minecraft.diorite_wall","block.minecraft.blackstone_wall","block.minecraft.polished_blackstone_wall","block.minecraft.polished_blackstone_brick_wall","block.minecraft.cobbled_deepslate_wall","block.minecraft.polished_deepslate_wall","block.minecraft.deepslate_brick_wall","block.minecraft.deepslate_tile_wall","block.minecraft.anvil","block.minecraft.chipped_anvil","block.minecraft.damaged_anvil","block.minecraft.chiseled_quartz_block","block.minecraft.quartz_block","block.minecraft.quartz_bricks","block.minecraft.quartz_pillar","block.minecraft.quartz_stairs","block.minecraft.white_terracotta","block.minecraft.orange_terracotta","block.minecraft.magenta_terracotta","block.minecraft.light_blue_terracotta","block.minecraft.yellow_terracotta","block.minecraft.lime_terracotta","block.minecraft.pink_terracotta","block.minecraft.gray_terracotta","block.minecraft.light_gray_terracotta","block.minecraft.cyan_terracotta","block.minecraft.purple_terracotta","block.minecraft.blue_terracotta","block.minecraft.brown_terracotta","block.minecraft.green_terracotta","block.minecraft.red_terracotta","block.minecraft.black_terracotta","block.minecraft.barrier","block.minecraft.light","block.minecraft.hay_block","block.minecraft.white_carpet","block.minecraft.orange_carpet","block.minecraft.magenta_carpet","block.minecraft.light_blue_carpet","block.minecraft.yellow_carpet","block.minecraft.lime_carpet","block.minecraft.pink_carpet","block.minecraft.gray_carpet","block.minecraft.light_gray_carpet","block.minecraft.cyan_carpet","block.minecraft.purple_carpet","block.minecraft.blue_carpet","block.minecraft.brown_carpet","block.minecraft.green_carpet","block.minecraft.red_carpet","block.minecraft.black_carpet","block.minecraft.terracotta","block.minecraft.packed_ice","block.minecraft.dirt_path","block.minecraft.sunflower","block.minecraft.lilac","block.minecraft.rose_bush","block.minecraft.peony","block.minecraft.tall_grass","block.minecraft.large_fern","block.minecraft.white_stained_glass","block.minecraft.orange_stained_glass","block.minecraft.magenta_stained_glass","block.minecraft.light_blue_stained_glass","block.minecraft.yellow_stained_glass","block.minecraft.lime_stained_glass","block.minecraft.pink_stained_glass","block.minecraft.gray_stained_glass","block.minecraft.light_gray_stained_glass","block.minecraft.cyan_stained_glass","block.minecraft.purple_stained_glass","block.minecraft.blue_stained_glass","block.minecraft.brown_stained_glass","block.minecraft.green_stained_glass","block.minecraft.red_stained_glass","block.minecraft.black_stained_glass","block.minecraft.white_stained_glass_pane","block.minecraft.orange_stained_glass_pane","block.minecraft.magenta_stained_glass_pane","block.minecraft.light_blue_stained_glass_pane","block.minecraft.yellow_stained_glass_pane","block.minecraft.lime_stained_glass_pane","block.minecraft.pink_stained_glass_pane","block.minecraft.gray_stained_glass_pane","block.minecraft.light_gray_stained_glass_pane","block.minecraft.cyan_stained_glass_pane","block.minecraft.purple_stained_glass_pane","block.minecraft.blue_stained_glass_pane","block.minecraft.brown_stained_glass_pane","block.minecraft.green_stained_glass_pane","block.minecraft.red_stained_glass_pane","block.minecraft.black_stained_glass_pane","block.minecraft.prismarine","block.minecraft.prismarine_bricks","block.minecraft.dark_prismarine","block.minecraft.prismarine_stairs","block.minecraft.prismarine_brick_stairs","block.minecraft.dark_prismarine_stairs","block.minecraft.sea_lantern","block.minecraft.red_sandstone","block.minecraft.chiseled_red_sandstone","block.minecraft.cut_red_sandstone","block.minecraft.red_sandstone_stairs","block.minecraft.repeating_command_block","block.minecraft.chain_command_block","block.minecraft.magma_block","block.minecraft.nether_wart_block","block.minecraft.warped_wart_block","block.minecraft.red_nether_bricks","block.minecraft.bone_block","block.minecraft.structure_void","block.minecraft.shulker_box","block.minecraft.white_shulker_box","block.minecraft.orange_shulker_box","block.minecraft.magenta_shulker_box","block.minecraft.light_blue_shulker_box","block.minecraft.yellow_shulker_box","block.minecraft.lime_shulker_box","block.minecraft.pink_shulker_box","block.minecraft.gray_shulker_box","block.minecraft.light_gray_shulker_box","block.minecraft.cyan_shulker_box","block.minecraft.purple_shulker_box","block.minecraft.blue_shulker_box","block.minecraft.brown_shulker_box","block.minecraft.green_shulker_box","block.minecraft.red_shulker_box","block.minecraft.black_shulker_box","block.minecraft.white_glazed_terracotta","block.minecraft.orange_glazed_terracotta","block.minecraft.magenta_glazed_terracotta","block.minecraft.light_blue_glazed_terracotta","block.minecraft.yellow_glazed_terracotta","block.minecraft.lime_glazed_terracotta","block.minecraft.pink_glazed_terracotta","block.minecraft.gray_glazed_terracotta","block.minecraft.light_gray_glazed_terracotta","block.minecraft.cyan_glazed_terracotta","block.minecraft.purple_glazed_terracotta","block.minecraft.blue_glazed_terracotta","block.minecraft.brown_glazed_terracotta","block.minecraft.green_glazed_terracotta","block.minecraft.red_glazed_terracotta","block.minecraft.black_glazed_terracotta","block.minecraft.white_concrete","block.minecraft.orange_concrete","block.minecraft.magenta_concrete","block.minecraft.light_blue_concrete","block.minecraft.yellow_concrete","block.minecraft.lime_concrete","block.minecraft.pink_concrete","block.minecraft.gray_concrete","block.minecraft.light_gray_concrete","block.minecraft.cyan_concrete","block.minecraft.purple_concrete","block.minecraft.blue_concrete","block.minecraft.brown_concrete","block.minecraft.green_concrete","block.minecraft.red_concrete","block.minecraft.black_concrete","block.minecraft.white_concrete_powder","block.minecraft.orange_concrete_powder","block.minecraft.magenta_concrete_powder","block.minecraft.light_blue_concrete_powder","block.minecraft.yellow_concrete_powder","block.minecraft.lime_concrete_powder","block.minecraft.pink_concrete_powder","block.minecraft.gray_concrete_powder","block.minecraft.light_gray_concrete_powder","block.minecraft.cyan_concrete_powder","block.minecraft.purple_concrete_powder","block.minecraft.blue_concrete_powder","block.minecraft.brown_concrete_powder","block.minecraft.green_concrete_powder","block.minecraft.red_concrete_powder","block.minecraft.black_concrete_powder","block.minecraft.turtle_egg","block.minecraft.sniffer_egg","block.minecraft.dried_ghast","block.minecraft.dead_tube_coral_block","block.minecraft.dead_brain_coral_block","block.minecraft.dead_bubble_coral_block","block.minecraft.dead_fire_coral_block","block.minecraft.dead_horn_coral_block","block.minecraft.tube_coral_block","block.minecraft.brain_coral_block","block.minecraft.bubble_coral_block","block.minecraft.fire_coral_block","block.minecraft.horn_coral_block","block.minecraft.tube_coral","block.minecraft.brain_coral","block.minecraft.bubble_coral","block.minecraft.fire_coral","block.minecraft.horn_coral","block.minecraft.dead_brain_coral","block.minecraft.dead_bubble_coral","block.minecraft.dead_fire_coral","block.minecraft.dead_horn_coral","block.minecraft.dead_tube_coral","block.minecraft.tube_coral_fan","block.minecraft.brain_coral_fan","block.minecraft.bubble_coral_fan","block.minecraft.fire_coral_fan","block.minecraft.horn_coral_fan","block.minecraft.dead_tube_coral_fan","block.minecraft.dead_brain_coral_fan","block.minecraft.dead_bubble_coral_fan","block.minecraft.dead_fire_coral_fan","block.minecraft.dead_horn_coral_fan","block.minecraft.blue_ice","block.minecraft.conduit","block.minecraft.polished_granite_stairs","block.minecraft.smooth_red_sandstone_stairs","block.minecraft.mossy_stone_brick_stairs","block.minecraft.polished_diorite_stairs","block.minecraft.mossy_cobblestone_stairs","block.minecraft.end_stone_brick_stairs","block.minecraft.stone_stairs","block.minecraft.smooth_sandstone_stairs","block.minecraft.smooth_quartz_stairs","block.minecraft.granite_stairs","block.minecraft.andesite_stairs","block.minecraft.red_nether_brick_stairs","block.minecraft.polished_andesite_stairs","block.minecraft.diorite_stairs","block.minecraft.cobbled_deepslate_stairs","block.minecraft.polished_deepslate_stairs","block.minecraft.deepslate_brick_stairs","block.minecraft.deepslate_tile_stairs","block.minecraft.polished_granite_slab","block.minecraft.smooth_red_sandstone_slab","block.minecraft.mossy_stone_brick_slab","block.minecraft.polished_diorite_slab","block.minecraft.mossy_cobblestone_slab","block.minecraft.end_stone_brick_slab","block.minecraft.smooth_sandstone_slab","block.minecraft.smooth_quartz_slab","block.minecraft.granite_slab","block.minecraft.andesite_slab","block.minecraft.red_nether_brick_slab","block.minecraft.polished_andesite_slab","block.minecraft.diorite_slab","block.minecraft.cobbled_deepslate_slab","block.minecraft.polished_deepslate_slab","block.minecraft.deepslate_brick_slab","block.minecraft.deepslate_tile_slab","block.minecraft.scaffolding","item.minecraft.redstone","block.minecraft.redstone_torch","block.minecraft.redstone_block","block.minecraft.repeater","block.minecraft.comparator","block.minecraft.piston","block.minecraft.sticky_piston","block.minecraft.slime_block","block.minecraft.honey_block","block.minecraft.observer","block.minecraft.hopper","block.minecraft.dispenser","block.minecraft.dropper","block.minecraft.lectern","block.minecraft.target","block.minecraft.lever","block.minecraft.lightning_rod","block.minecraft.exposed_lightning_rod","block.minecraft.weathered_lightning_rod","block.minecraft.oxidized_lightning_rod","block.minecraft.waxed_lightning_rod","block.minecraft.waxed_exposed_lightning_rod","block.minecraft.waxed_weathered_lightning_rod","block.minecraft.waxed_oxidized_lightning_rod","block.minecraft.daylight_detector","block.minecraft.sculk_sensor","block.minecraft.calibrated_sculk_sensor","block.minecraft.tripwire_hook","block.minecraft.trapped_chest","block.minecraft.tnt","block.minecraft.redstone_lamp","block.minecraft.note_block","block.minecraft.stone_button","block.minecraft.polished_blackstone_button","block.minecraft.oak_button","block.minecraft.spruce_button","block.minecraft.birch_button","block.minecraft.jungle_button","block.minecraft.acacia_button","block.minecraft.cherry_button","block.minecraft.dark_oak_button","block.minecraft.pale_oak_button","block.minecraft.mangrove_button","block.minecraft.bamboo_button","block.minecraft.crimson_button","block.minecraft.warped_button","block.minecraft.stone_pressure_plate","block.minecraft.polished_blackstone_pressure_plate","block.minecraft.light_weighted_pressure_plate","block.minecraft.heavy_weighted_pressure_plate","block.minecraft.oak_pressure_plate","block.minecraft.spruce_pressure_plate","block.minecraft.birch_pressure_plate","block.minecraft.jungle_pressure_plate","block.minecraft.acacia_pressure_plate","block.minecraft.cherry_pressure_plate","block.minecraft.dark_oak_pressure_plate","block.minecraft.pale_oak_pressure_plate","block.minecraft.mangrove_pressure_plate","block.minecraft.bamboo_pressure_plate","block.minecraft.crimson_pressure_plate","block.minecraft.warped_pressure_plate","block.minecraft.iron_door","block.minecraft.oak_door","block.minecraft.spruce_door","block.minecraft.birch_door","block.minecraft.jungle_door","block.minecraft.acacia_door","block.minecraft.cherry_door","block.minecraft.dark_oak_door","block.minecraft.pale_oak_door","block.minecraft.mangrove_door","block.minecraft.bamboo_door","block.minecraft.crimson_door","block.minecraft.warped_door","block.minecraft.copper_door","block.minecraft.exposed_copper_door","block.minecraft.weathered_copper_door","block.minecraft.oxidized_copper_door","block.minecraft.waxed_copper_door","block.minecraft.waxed_exposed_copper_door","block.minecraft.waxed_weathered_copper_door","block.minecraft.waxed_oxidized_copper_door","block.minecraft.iron_trapdoor","block.minecraft.oak_trapdoor","block.minecraft.spruce_trapdoor","block.minecraft.birch_trapdoor","block.minecraft.jungle_trapdoor","block.minecraft.acacia_trapdoor","block.minecraft.cherry_trapdoor","block.minecraft.dark_oak_trapdoor","block.minecraft.pale_oak_trapdoor","block.minecraft.mangrove_trapdoor","block.minecraft.bamboo_trapdoor","block.minecraft.crimson_trapdoor","block.minecraft.warped_trapdoor","block.minecraft.copper_trapdoor","block.minecraft.exposed_copper_trapdoor","block.minecraft.weathered_copper_trapdoor","block.minecraft.oxidized_copper_trapdoor","block.minecraft.waxed_copper_trapdoor","block.minecraft.waxed_exposed_copper_trapdoor","block.minecraft.waxed_weathered_copper_trapdoor","block.minecraft.waxed_oxidized_copper_trapdoor","block.minecraft.oak_fence_gate","block.minecraft.spruce_fence_gate","block.minecraft.birch_fence_gate","block.minecraft.jungle_fence_gate","block.minecraft.acacia_fence_gate","block.minecraft.cherry_fence_gate","block.minecraft.dark_oak_fence_gate","block.minecraft.pale_oak_fence_gate","block.minecraft.mangrove_fence_gate","block.minecraft.bamboo_fence_gate","block.minecraft.crimson_fence_gate","block.minecraft.warped_fence_gate","block.minecraft.powered_rail","block.minecraft.detector_rail","block.minecraft.rail","block.minecraft.activator_rail","item.minecraft.saddle","item.minecraft.white_harness","item.minecraft.orange_harness","item.minecraft.magenta_harness","item.minecraft.light_blue_harness","item.minecraft.yellow_harness","item.minecraft.lime_harness","item.minecraft.pink_harness","item.minecraft.gray_harness","item.minecraft.light_gray_harness","item.minecraft.cyan_harness","item.minecraft.purple_harness","item.minecraft.blue_harness","item.minecraft.brown_harness","item.minecraft.green_harness","item.minecraft.red_harness","item.minecraft.black_harness","item.minecraft.minecart","item.minecraft.chest_minecart","item.minecraft.furnace_minecart","item.minecraft.tnt_minecart","item.minecraft.hopper_minecart","item.minecraft.carrot_on_a_stick","item.minecraft.warped_fungus_on_a_stick","item.minecraft.phantom_membrane","item.minecraft.elytra","item.minecraft.oak_boat","item.minecraft.oak_chest_boat","item.minecraft.spruce_boat","item.minecraft.spruce_chest_boat","item.minecraft.birch_boat","item.minecraft.birch_chest_boat","item.minecraft.jungle_boat","item.minecraft.jungle_chest_boat","item.minecraft.acacia_boat","item.minecraft.acacia_chest_boat","item.minecraft.cherry_boat","item.minecraft.cherry_chest_boat","item.minecraft.dark_oak_boat","item.minecraft.dark_oak_chest_boat","item.minecraft.pale_oak_boat","item.minecraft.pale_oak_chest_boat","item.minecraft.mangrove_boat","item.minecraft.mangrove_chest_boat","item.minecraft.bamboo_raft","item.minecraft.bamboo_chest_raft","block.minecraft.structure_block","block.minecraft.jigsaw","block.minecraft.test_block","block.minecraft.test_instance_block","item.minecraft.turtle_helmet","item.minecraft.turtle_scute","item.minecraft.armadillo_scute","item.minecraft.wolf_armor","item.minecraft.flint_and_steel","item.minecraft.bowl","item.minecraft.apple","item.minecraft.bow","item.minecraft.arrow","item.minecraft.coal","item.minecraft.charcoal","item.minecraft.diamond","item.minecraft.emerald","item.minecraft.lapis_lazuli","item.minecraft.quartz","item.minecraft.amethyst_shard","item.minecraft.raw_iron","item.minecraft.iron_ingot","item.minecraft.raw_copper","item.minecraft.copper_ingot","item.minecraft.raw_gold","item.minecraft.gold_ingot","item.minecraft.netherite_ingot","item.minecraft.netherite_scrap","item.minecraft.wooden_sword","item.minecraft.wooden_shovel","item.minecraft.wooden_pickaxe","item.minecraft.wooden_axe","item.minecraft.wooden_hoe","item.minecraft.copper_sword","item.minecraft.copper_shovel","item.minecraft.copper_pickaxe","item.minecraft.copper_axe","item.minecraft.copper_hoe","item.minecraft.stone_sword","item.minecraft.stone_shovel","item.minecraft.stone_pickaxe","item.minecraft.stone_axe","item.minecraft.stone_hoe","item.minecraft.golden_sword","item.minecraft.golden_shovel","item.minecraft.golden_pickaxe","item.minecraft.golden_axe","item.minecraft.golden_hoe","item.minecraft.iron_sword","item.minecraft.iron_shovel","item.minecraft.iron_pickaxe","item.minecraft.iron_axe","item.minecraft.iron_hoe","item.minecraft.diamond_sword","item.minecraft.diamond_shovel","item.minecraft.diamond_pickaxe","item.minecraft.diamond_axe","item.minecraft.diamond_hoe","item.minecraft.netherite_sword","item.minecraft.netherite_shovel","item.minecraft.netherite_pickaxe","item.minecraft.netherite_axe","item.minecraft.netherite_hoe","item.minecraft.stick","item.minecraft.mushroom_stew","item.minecraft.string","item.minecraft.feather","item.minecraft.gunpowder","item.minecraft.wheat_seeds","item.minecraft.wheat","item.minecraft.bread","item.minecraft.leather_helmet","item.minecraft.leather_chestplate","item.minecraft.leather_leggings","item.minecraft.leather_boots","item.minecraft.copper_helmet","item.minecraft.copper_chestplate","item.minecraft.copper_leggings","item.minecraft.copper_boots","item.minecraft.chainmail_helmet","item.minecraft.chainmail_chestplate","item.minecraft.chainmail_leggings","item.minecraft.chainmail_boots","item.minecraft.iron_helmet","item.minecraft.iron_chestplate","item.minecraft.iron_leggings","item.minecraft.iron_boots","item.minecraft.diamond_helmet","item.minecraft.diamond_chestplate","item.minecraft.diamond_leggings","item.minecraft.diamond_boots","item.minecraft.golden_helmet","item.minecraft.golden_chestplate","item.minecraft.golden_leggings","item.minecraft.golden_boots","item.minecraft.netherite_helmet","item.minecraft.netherite_chestplate","item.minecraft.netherite_leggings","item.minecraft.netherite_boots","item.minecraft.flint","item.minecraft.porkchop","item.minecraft.cooked_porkchop","item.minecraft.painting","item.minecraft.golden_apple","item.minecraft.enchanted_golden_apple","block.minecraft.oak_sign","block.minecraft.spruce_sign","block.minecraft.birch_sign","block.minecraft.jungle_sign","block.minecraft.acacia_sign","block.minecraft.cherry_sign","block.minecraft.dark_oak_sign","block.minecraft.pale_oak_sign","block.minecraft.mangrove_sign","block.minecraft.bamboo_sign","block.minecraft.crimson_sign","block.minecraft.warped_sign","block.minecraft.oak_hanging_sign","block.minecraft.spruce_hanging_sign","block.minecraft.birch_hanging_sign","block.minecraft.jungle_hanging_sign","block.minecraft.acacia_hanging_sign","block.minecraft.cherry_hanging_sign","block.minecraft.dark_oak_hanging_sign","block.minecraft.pale_oak_hanging_sign","block.minecraft.mangrove_hanging_sign","block.minecraft.bamboo_hanging_sign","block.minecraft.crimson_hanging_sign","block.minecraft.warped_hanging_sign","item.minecraft.bucket","item.minecraft.water_bucket","item.minecraft.lava_bucket","item.minecraft.powder_snow_bucket","item.minecraft.snowball","item.minecraft.leather","item.minecraft.milk_bucket","item.minecraft.pufferfish_bucket","item.minecraft.salmon_bucket","item.minecraft.cod_bucket","item.minecraft.tropical_fish_bucket","item.minecraft.axolotl_bucket","item.minecraft.tadpole_bucket","item.minecraft.brick","item.minecraft.clay_ball","block.minecraft.dried_kelp_block","item.minecraft.paper","item.minecraft.book","item.minecraft.slime_ball","item.minecraft.egg","item.minecraft.blue_egg","item.minecraft.brown_egg","item.minecraft.compass","item.minecraft.recovery_compass","item.minecraft.bundle","item.minecraft.white_bundle","item.minecraft.orange_bundle","item.minecraft.magenta_bundle","item.minecraft.light_blue_bundle","item.minecraft.yellow_bundle","item.minecraft.lime_bundle","item.minecraft.pink_bundle","item.minecraft.gray_bundle","item.minecraft.light_gray_bundle","item.minecraft.cyan_bundle","item.minecraft.purple_bundle","item.minecraft.blue_bundle","item.minecraft.brown_bundle","item.minecraft.green_bundle","item.minecraft.red_bundle","item.minecraft.black_bundle","item.minecraft.fishing_rod","item.minecraft.clock","item.minecraft.spyglass","item.minecraft.glowstone_dust","item.minecraft.cod","item.minecraft.salmon","item.minecraft.tropical_fish","item.minecraft.pufferfish","item.minecraft.cooked_cod","item.minecraft.cooked_salmon","item.minecraft.ink_sac","item.minecraft.glow_ink_sac","item.minecraft.cocoa_beans","item.minecraft.white_dye","item.minecraft.orange_dye","item.minecraft.magenta_dye","item.minecraft.light_blue_dye","item.minecraft.yellow_dye","item.minecraft.lime_dye","item.minecraft.pink_dye","item.minecraft.gray_dye","item.minecraft.light_gray_dye","item.minecraft.cyan_dye","item.minecraft.purple_dye","item.minecraft.blue_dye","item.minecraft.brown_dye","item.minecraft.green_dye","item.minecraft.red_dye","item.minecraft.black_dye","item.minecraft.bone_meal","item.minecraft.bone","item.minecraft.sugar","block.minecraft.cake","block.minecraft.white_bed","block.minecraft.orange_bed","block.minecraft.magenta_bed","block.minecraft.light_blue_bed","block.minecraft.yellow_bed","block.minecraft.lime_bed","block.minecraft.pink_bed","block.minecraft.gray_bed","block.minecraft.light_gray_bed","block.minecraft.cyan_bed","block.minecraft.purple_bed","block.minecraft.blue_bed","block.minecraft.brown_bed","block.minecraft.green_bed","block.minecraft.red_bed","block.minecraft.black_bed","item.minecraft.cookie","block.minecraft.crafter","item.minecraft.filled_map","item.minecraft.shears","item.minecraft.melon_slice","item.minecraft.dried_kelp","item.minecraft.pumpkin_seeds","item.minecraft.melon_seeds","item.minecraft.beef","item.minecraft.cooked_beef","item.minecraft.chicken","item.minecraft.cooked_chicken","item.minecraft.rotten_flesh","item.minecraft.ender_pearl","item.minecraft.blaze_rod","item.minecraft.ghast_tear","item.minecraft.gold_nugget","item.minecraft.nether_wart","item.minecraft.glass_bottle","item.minecraft.potion","item.minecraft.spider_eye","item.minecraft.fermented_spider_eye","item.minecraft.blaze_powder","item.minecraft.magma_cream","block.minecraft.brewing_stand","block.minecraft.cauldron","item.minecraft.ender_eye","item.minecraft.glistering_melon_slice","item.minecraft.chicken_spawn_egg","item.minecraft.cow_spawn_egg","item.minecraft.pig_spawn_egg","item.minecraft.sheep_spawn_egg","item.minecraft.camel_spawn_egg","item.minecraft.donkey_spawn_egg","item.minecraft.horse_spawn_egg","item.minecraft.mule_spawn_egg","item.minecraft.cat_spawn_egg","item.minecraft.parrot_spawn_egg","item.minecraft.wolf_spawn_egg","item.minecraft.armadillo_spawn_egg","item.minecraft.bat_spawn_egg","item.minecraft.bee_spawn_egg","item.minecraft.fox_spawn_egg","item.minecraft.goat_spawn_egg","item.minecraft.llama_spawn_egg","item.minecraft.ocelot_spawn_egg","item.minecraft.panda_spawn_egg","item.minecraft.polar_bear_spawn_egg","item.minecraft.rabbit_spawn_egg","item.minecraft.axolotl_spawn_egg","item.minecraft.cod_spawn_egg","item.minecraft.dolphin_spawn_egg","item.minecraft.frog_spawn_egg","item.minecraft.glow_squid_spawn_egg","item.minecraft.nautilus_spawn_egg","item.minecraft.pufferfish_spawn_egg","item.minecraft.salmon_spawn_egg","item.minecraft.squid_spawn_egg","item.minecraft.tadpole_spawn_egg","item.minecraft.tropical_fish_spawn_egg","item.minecraft.turtle_spawn_egg","item.minecraft.allay_spawn_egg","item.minecraft.mooshroom_spawn_egg","item.minecraft.sniffer_spawn_egg","item.minecraft.copper_golem_spawn_egg","item.minecraft.iron_golem_spawn_egg","item.minecraft.snow_golem_spawn_egg","item.minecraft.trader_llama_spawn_egg","item.minecraft.villager_spawn_egg","item.minecraft.wandering_trader_spawn_egg","item.minecraft.bogged_spawn_egg","item.minecraft.camel_husk_spawn_egg","item.minecraft.drowned_spawn_egg","item.minecraft.husk_spawn_egg","item.minecraft.parched_spawn_egg","item.minecraft.skeleton_spawn_egg","item.minecraft.skeleton_horse_spawn_egg","item.minecraft.stray_spawn_egg","item.minecraft.wither_spawn_egg","item.minecraft.wither_skeleton_spawn_egg","item.minecraft.zombie_spawn_egg","item.minecraft.zombie_horse_spawn_egg","item.minecraft.zombie_nautilus_spawn_egg","item.minecraft.zombie_villager_spawn_egg","item.minecraft.cave_spider_spawn_egg","item.minecraft.spider_spawn_egg","item.minecraft.breeze_spawn_egg","item.minecraft.creaking_spawn_egg","item.minecraft.creeper_spawn_egg","item.minecraft.elder_guardian_spawn_egg","item.minecraft.guardian_spawn_egg","item.minecraft.phantom_spawn_egg","item.minecraft.silverfish_spawn_egg","item.minecraft.slime_spawn_egg","item.minecraft.warden_spawn_egg","item.minecraft.witch_spawn_egg","item.minecraft.evoker_spawn_egg","item.minecraft.pillager_spawn_egg","item.minecraft.ravager_spawn_egg","item.minecraft.vindicator_spawn_egg","item.minecraft.vex_spawn_egg","item.minecraft.blaze_spawn_egg","item.minecraft.ghast_spawn_egg","item.minecraft.happy_ghast_spawn_egg","item.minecraft.hoglin_spawn_egg","item.minecraft.magma_cube_spawn_egg","item.minecraft.piglin_spawn_egg","item.minecraft.piglin_brute_spawn_egg","item.minecraft.strider_spawn_egg","item.minecraft.zoglin_spawn_egg","item.minecraft.zombified_piglin_spawn_egg","item.minecraft.ender_dragon_spawn_egg","item.minecraft.enderman_spawn_egg","item.minecraft.endermite_spawn_egg","item.minecraft.shulker_spawn_egg","item.minecraft.experience_bottle","item.minecraft.fire_charge","item.minecraft.wind_charge","item.minecraft.writable_book","item.minecraft.written_book","item.minecraft.breeze_rod","item.minecraft.mace","item.minecraft.item_frame","item.minecraft.glow_item_frame","block.minecraft.flower_pot","item.minecraft.carrot","item.minecraft.potato","item.minecraft.baked_potato","item.minecraft.poisonous_potato","item.minecraft.map","item.minecraft.golden_carrot","block.minecraft.skeleton_skull","block.minecraft.wither_skeleton_skull","block.minecraft.player_head","block.minecraft.zombie_head","block.minecraft.creeper_head","block.minecraft.dragon_head","block.minecraft.piglin_head","item.minecraft.nether_star","item.minecraft.pumpkin_pie","item.minecraft.firework_rocket","item.minecraft.firework_star","item.minecraft.enchanted_book","item.minecraft.nether_brick","item.minecraft.resin_brick","item.minecraft.prismarine_shard","item.minecraft.prismarine_crystals","item.minecraft.rabbit","item.minecraft.cooked_rabbit","item.minecraft.rabbit_stew","item.minecraft.rabbit_foot","item.minecraft.rabbit_hide","item.minecraft.armor_stand","item.minecraft.copper_horse_armor","item.minecraft.iron_horse_armor","item.minecraft.golden_horse_armor","item.minecraft.diamond_horse_armor","item.minecraft.netherite_horse_armor","item.minecraft.leather_horse_armor","item.minecraft.lead","item.minecraft.name_tag","item.minecraft.command_block_minecart","item.minecraft.mutton","item.minecraft.cooked_mutton","block.minecraft.white_banner","block.minecraft.orange_banner","block.minecraft.magenta_banner","block.minecraft.light_blue_banner","block.minecraft.yellow_banner","block.minecraft.lime_banner","block.minecraft.pink_banner","block.minecraft.gray_banner","block.minecraft.light_gray_banner","block.minecraft.cyan_banner","block.minecraft.purple_banner","block.minecraft.blue_banner","block.minecraft.brown_banner","block.minecraft.green_banner","block.minecraft.red_banner","block.minecraft.black_banner","item.minecraft.end_crystal","item.minecraft.chorus_fruit","item.minecraft.popped_chorus_fruit","item.minecraft.torchflower_seeds","item.minecraft.pitcher_pod","item.minecraft.beetroot","item.minecraft.beetroot_seeds","item.minecraft.beetroot_soup","item.minecraft.dragon_breath","item.minecraft.splash_potion","item.minecraft.spectral_arrow","item.minecraft.tipped_arrow","item.minecraft.lingering_potion","item.minecraft.shield","item.minecraft.wooden_spear","item.minecraft.stone_spear","item.minecraft.copper_spear","item.minecraft.iron_spear","item.minecraft.golden_spear","item.minecraft.diamond_spear","item.minecraft.netherite_spear","item.minecraft.totem_of_undying","item.minecraft.shulker_shell","item.minecraft.iron_nugget","item.minecraft.copper_nugget","item.minecraft.knowledge_book","item.minecraft.debug_stick","item.minecraft.music_disc_13","item.minecraft.music_disc_cat","item.minecraft.music_disc_blocks","item.minecraft.music_disc_chirp","item.minecraft.music_disc_creator","item.minecraft.music_disc_creator_music_box","item.minecraft.music_disc_far","item.minecraft.music_disc_lava_chicken","item.minecraft.music_disc_mall","item.minecraft.music_disc_mellohi","item.minecraft.music_disc_stal","item.minecraft.music_disc_strad","item.minecraft.music_disc_ward","item.minecraft.music_disc_11","item.minecraft.music_disc_wait","item.minecraft.music_disc_otherside","item.minecraft.music_disc_relic","item.minecraft.music_disc_5","item.minecraft.music_disc_pigstep","item.minecraft.music_disc_precipice","item.minecraft.music_disc_tears","item.minecraft.disc_fragment_5","item.minecraft.trident","item.minecraft.nautilus_shell","item.minecraft.iron_nautilus_armor","item.minecraft.golden_nautilus_armor","item.minecraft.diamond_nautilus_armor","item.minecraft.netherite_nautilus_armor","item.minecraft.copper_nautilus_armor","item.minecraft.heart_of_the_sea","item.minecraft.crossbow","item.minecraft.suspicious_stew","block.minecraft.loom","item.minecraft.flower_banner_pattern","item.minecraft.creeper_banner_pattern","item.minecraft.skull_banner_pattern","item.minecraft.mojang_banner_pattern","item.minecraft.globe_banner_pattern","item.minecraft.piglin_banner_pattern","item.minecraft.flow_banner_pattern","item.minecraft.guster_banner_pattern","item.minecraft.field_masoned_banner_pattern","item.minecraft.bordure_indented_banner_pattern","item.minecraft.goat_horn","block.minecraft.composter","block.minecraft.barrel","block.minecraft.smoker","block.minecraft.blast_furnace","block.minecraft.cartography_table","block.minecraft.fletching_table","block.minecraft.grindstone","block.minecraft.smithing_table","block.minecraft.stonecutter","block.minecraft.bell","block.minecraft.lantern","block.minecraft.soul_lantern","block.minecraft.copper_lantern","block.minecraft.exposed_copper_lantern","block.minecraft.weathered_copper_lantern","block.minecraft.oxidized_copper_lantern","block.minecraft.waxed_copper_lantern","block.minecraft.waxed_exposed_copper_lantern","block.minecraft.waxed_weathered_copper_lantern","block.minecraft.waxed_oxidized_copper_lantern","item.minecraft.sweet_berries","item.minecraft.glow_berries","block.minecraft.campfire","block.minecraft.soul_campfire","block.minecraft.shroomlight","item.minecraft.honeycomb","block.minecraft.bee_nest","block.minecraft.beehive","item.minecraft.honey_bottle","block.minecraft.honeycomb_block","block.minecraft.lodestone","block.minecraft.crying_obsidian","block.minecraft.blackstone","block.minecraft.blackstone_slab","block.minecraft.blackstone_stairs","block.minecraft.gilded_blackstone","block.minecraft.polished_blackstone","block.minecraft.polished_blackstone_slab","block.minecraft.polished_blackstone_stairs","block.minecraft.chiseled_polished_blackstone","block.minecraft.polished_blackstone_bricks","block.minecraft.polished_blackstone_brick_slab","block.minecraft.polished_blackstone_brick_stairs","block.minecraft.cracked_polished_blackstone_bricks","block.minecraft.respawn_anchor","block.minecraft.candle","block.minecraft.white_candle","block.minecraft.orange_candle","block.minecraft.magenta_candle","block.minecraft.light_blue_candle","block.minecraft.yellow_candle","block.minecraft.lime_candle","block.minecraft.pink_candle","block.minecraft.gray_candle","block.minecraft.light_gray_candle","block.minecraft.cyan_candle","block.minecraft.purple_candle","block.minecraft.blue_candle","block.minecraft.brown_candle","block.minecraft.green_candle","block.minecraft.red_candle","block.minecraft.black_candle","block.minecraft.small_amethyst_bud","block.minecraft.medium_amethyst_bud","block.minecraft.large_amethyst_bud","block.minecraft.amethyst_cluster","block.minecraft.pointed_dripstone","block.minecraft.ochre_froglight","block.minecraft.verdant_froglight","block.minecraft.pearlescent_froglight","block.minecraft.frogspawn","item.minecraft.echo_shard","item.minecraft.brush","item.minecraft.netherite_upgrade_smithing_template","item.minecraft.sentry_armor_trim_smithing_template","item.minecraft.dune_armor_trim_smithing_template","item.minecraft.coast_armor_trim_smithing_template","item.minecraft.wild_armor_trim_smithing_template","item.minecraft.ward_armor_trim_smithing_template","item.minecraft.eye_armor_trim_smithing_template","item.minecraft.vex_armor_trim_smithing_template","item.minecraft.tide_armor_trim_smithing_template","item.minecraft.snout_armor_trim_smithing_template","item.minecraft.rib_armor_trim_smithing_template","item.minecraft.spire_armor_trim_smithing_template","item.minecraft.wayfinder_armor_trim_smithing_template","item.minecraft.shaper_armor_trim_smithing_template","item.minecraft.silence_armor_trim_smithing_template","item.minecraft.raiser_armor_trim_smithing_template","item.minecraft.host_armor_trim_smithing_template","item.minecraft.flow_armor_trim_smithing_template","item.minecraft.bolt_armor_trim_smithing_template","item.minecraft.angler_pottery_sherd","item.minecraft.archer_pottery_sherd","item.minecraft.arms_up_pottery_sherd","item.minecraft.blade_pottery_sherd","item.minecraft.brewer_pottery_sherd","item.minecraft.burn_pottery_sherd","item.minecraft.danger_pottery_sherd","item.minecraft.explorer_pottery_sherd","item.minecraft.flow_pottery_sherd","item.minecraft.friend_pottery_sherd","item.minecraft.guster_pottery_sherd","item.minecraft.heart_pottery_sherd","item.minecraft.heartbreak_pottery_sherd","item.minecraft.howl_pottery_sherd","item.minecraft.miner_pottery_sherd","item.minecraft.mourner_pottery_sherd","item.minecraft.plenty_pottery_sherd","item.minecraft.prize_pottery_sherd","item.minecraft.scrape_pottery_sherd","item.minecraft.sheaf_pottery_sherd","item.minecraft.shelter_pottery_sherd","item.minecraft.skull_pottery_sherd","item.minecraft.snort_pottery_sherd","block.minecraft.copper_grate","block.minecraft.exposed_copper_grate","block.minecraft.weathered_copper_grate","block.minecraft.oxidized_copper_grate","block.minecraft.waxed_copper_grate","block.minecraft.waxed_exposed_copper_grate","block.minecraft.waxed_weathered_copper_grate","block.minecraft.waxed_oxidized_copper_grate","block.minecraft.copper_bulb","block.minecraft.exposed_copper_bulb","block.minecraft.weathered_copper_bulb","block.minecraft.oxidized_copper_bulb","block.minecraft.waxed_copper_bulb","block.minecraft.waxed_exposed_copper_bulb","block.minecraft.waxed_weathered_copper_bulb","block.minecraft.waxed_oxidized_copper_bulb","block.minecraft.copper_chest","block.minecraft.exposed_copper_chest","block.minecraft.weathered_copper_chest","block.minecraft.oxidized_copper_chest","block.minecraft.waxed_copper_chest","block.minecraft.waxed_exposed_copper_chest","block.minecraft.waxed_weathered_copper_chest","block.minecraft.waxed_oxidized_copper_chest","block.minecraft.copper_golem_statue","block.minecraft.exposed_copper_golem_statue","block.minecraft.weathered_copper_golem_statue","block.minecraft.oxidized_copper_golem_statue","block.minecraft.waxed_copper_golem_statue","block.minecraft.waxed_exposed_copper_golem_statue","block.minecraft.waxed_weathered_copper_golem_statue","block.minecraft.waxed_oxidized_copper_golem_statue","block.minecraft.trial_spawner","item.minecraft.trial_key","item.minecraft.ominous_trial_key","block.minecraft.vault","item.minecraft.ominous_bottle"];
impl DefaultableComponent for ItemName {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = ITEM_NAME_VALUES[item as usize];
@@ -2081,7 +2133,7 @@ impl DefaultableComponent for Lore {
}
}
#[rustfmt::skip]
-static MAX_STACK_SIZE_VALUES: [i32; 1505] = [64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,64,64,64,1,64,64,1,1,64,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,1,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,64,64,64,64,64,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,1,1,1,16,64,1,1,1,1,1,1,1,64,64,64,64,64,64,16,16,16,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,64,64,1,64,64,64,64,64,64,64,64,64,16,64,64,64,64,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,16,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,64,64,64,64,64,64,1,64,64,16,1,1,1,1,1,1,64,64,1,64,64,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,64,64,64,64,64,64,64,1,64,1,64,64,1,1,1,1,1,1,1,1,1,1,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,1,64,1,1,1,1,1,64,1,1,64,1,1,1,1,1,1,1,1,1,1,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,16,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64];
+static MAX_STACK_SIZE_VALUES: [i32; 1506] = [64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,64,64,64,1,64,64,1,1,64,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,1,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,64,64,64,64,64,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,1,1,1,16,64,1,1,1,1,1,1,1,64,64,64,64,64,64,16,16,16,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,64,64,1,64,64,64,64,64,64,64,64,64,16,64,64,64,64,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,16,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,64,64,64,64,64,64,1,64,64,16,1,1,1,1,1,1,64,64,1,64,64,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,64,64,64,64,64,64,64,1,64,1,64,64,1,1,1,1,1,1,1,1,1,1,64,64,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,1,64,1,1,1,1,1,64,1,1,64,1,1,1,1,1,1,1,1,1,1,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,16,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64];
impl DefaultableComponent for MaxStackSize {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = MAX_STACK_SIZE_VALUES[item as usize];
@@ -2299,795 +2351,6 @@ impl DefaultableComponent for UseEffects {
Some(value)
}
}
-impl DefaultableComponent for Container {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::AcaciaShelf => vec![],
- ItemKind::BambooShelf => vec![],
- ItemKind::Barrel => vec![],
- ItemKind::BirchShelf => vec![],
- ItemKind::BlackShulkerBox => vec![],
- ItemKind::BlastFurnace => vec![],
- ItemKind::BlueShulkerBox => vec![],
- ItemKind::BrewingStand => vec![],
- ItemKind::BrownShulkerBox => vec![],
- ItemKind::Campfire => vec![],
- ItemKind::CherryShelf => vec![],
- ItemKind::Chest => vec![],
- ItemKind::ChiseledBookshelf => vec![],
- ItemKind::Crafter => vec![],
- ItemKind::CrimsonShelf => vec![],
- ItemKind::CyanShulkerBox => vec![],
- ItemKind::DarkOakShelf => vec![],
- ItemKind::DecoratedPot => vec![],
- ItemKind::Dispenser => vec![],
- ItemKind::Dropper => vec![],
- ItemKind::Furnace => vec![],
- ItemKind::GrayShulkerBox => vec![],
- ItemKind::GreenShulkerBox => vec![],
- ItemKind::Hopper => vec![],
- ItemKind::JungleShelf => vec![],
- ItemKind::LightBlueShulkerBox => vec![],
- ItemKind::LightGrayShulkerBox => vec![],
- ItemKind::LimeShulkerBox => vec![],
- ItemKind::MagentaShulkerBox => vec![],
- ItemKind::MangroveShelf => vec![],
- ItemKind::OakShelf => vec![],
- ItemKind::OrangeShulkerBox => vec![],
- ItemKind::PaleOakShelf => vec![],
- ItemKind::PinkShulkerBox => vec![],
- ItemKind::PurpleShulkerBox => vec![],
- ItemKind::RedShulkerBox => vec![],
- ItemKind::ShulkerBox => vec![],
- ItemKind::Smoker => vec![],
- ItemKind::SoulCampfire => vec![],
- ItemKind::SpruceShelf => vec![],
- ItemKind::TrappedChest => vec![],
- ItemKind::WarpedShelf => vec![],
- ItemKind::WhiteShulkerBox => vec![],
- ItemKind::YellowShulkerBox => vec![],
- _ => return None,
- };
- Some(Container { items: value })
- }
-}
-impl DefaultableComponent for EntityData {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::AllaySpawnEgg => EntityKind::Allay,
- ItemKind::ArmadilloSpawnEgg => EntityKind::Armadillo,
- ItemKind::AxolotlSpawnEgg => EntityKind::Axolotl,
- ItemKind::BatSpawnEgg => EntityKind::Bat,
- ItemKind::BeeSpawnEgg => EntityKind::Bee,
- ItemKind::BlazeSpawnEgg => EntityKind::Blaze,
- ItemKind::BoggedSpawnEgg => EntityKind::Bogged,
- ItemKind::BreezeSpawnEgg => EntityKind::Breeze,
- ItemKind::CamelHuskSpawnEgg => EntityKind::CamelHusk,
- ItemKind::CamelSpawnEgg => EntityKind::Camel,
- ItemKind::CatSpawnEgg => EntityKind::Cat,
- ItemKind::CaveSpiderSpawnEgg => EntityKind::CaveSpider,
- ItemKind::ChickenSpawnEgg => EntityKind::Chicken,
- ItemKind::CodSpawnEgg => EntityKind::Cod,
- ItemKind::CopperGolemSpawnEgg => EntityKind::CopperGolem,
- ItemKind::CowSpawnEgg => EntityKind::Cow,
- ItemKind::CreakingSpawnEgg => EntityKind::Creaking,
- ItemKind::CreeperSpawnEgg => EntityKind::Creeper,
- ItemKind::DolphinSpawnEgg => EntityKind::Dolphin,
- ItemKind::DonkeySpawnEgg => EntityKind::Donkey,
- ItemKind::DrownedSpawnEgg => EntityKind::Drowned,
- ItemKind::ElderGuardianSpawnEgg => EntityKind::ElderGuardian,
- ItemKind::EnderDragonSpawnEgg => EntityKind::EnderDragon,
- ItemKind::EndermanSpawnEgg => EntityKind::Enderman,
- ItemKind::EndermiteSpawnEgg => EntityKind::Endermite,
- ItemKind::EvokerSpawnEgg => EntityKind::Evoker,
- ItemKind::FoxSpawnEgg => EntityKind::Fox,
- ItemKind::FrogSpawnEgg => EntityKind::Frog,
- ItemKind::GhastSpawnEgg => EntityKind::Ghast,
- ItemKind::GlowSquidSpawnEgg => EntityKind::GlowSquid,
- ItemKind::GoatSpawnEgg => EntityKind::Goat,
- ItemKind::GuardianSpawnEgg => EntityKind::Guardian,
- ItemKind::HappyGhastSpawnEgg => EntityKind::HappyGhast,
- ItemKind::HoglinSpawnEgg => EntityKind::Hoglin,
- ItemKind::HorseSpawnEgg => EntityKind::Horse,
- ItemKind::HuskSpawnEgg => EntityKind::Husk,
- ItemKind::IronGolemSpawnEgg => EntityKind::IronGolem,
- ItemKind::LlamaSpawnEgg => EntityKind::Llama,
- ItemKind::MagmaCubeSpawnEgg => EntityKind::MagmaCube,
- ItemKind::MooshroomSpawnEgg => EntityKind::Mooshroom,
- ItemKind::MuleSpawnEgg => EntityKind::Mule,
- ItemKind::NautilusSpawnEgg => EntityKind::Nautilus,
- ItemKind::OcelotSpawnEgg => EntityKind::Ocelot,
- ItemKind::PandaSpawnEgg => EntityKind::Panda,
- ItemKind::ParchedSpawnEgg => EntityKind::Parched,
- ItemKind::ParrotSpawnEgg => EntityKind::Parrot,
- ItemKind::PhantomSpawnEgg => EntityKind::Phantom,
- ItemKind::PigSpawnEgg => EntityKind::Pig,
- ItemKind::PiglinBruteSpawnEgg => EntityKind::PiglinBrute,
- ItemKind::PiglinSpawnEgg => EntityKind::Piglin,
- ItemKind::PillagerSpawnEgg => EntityKind::Pillager,
- ItemKind::PolarBearSpawnEgg => EntityKind::PolarBear,
- ItemKind::PufferfishSpawnEgg => EntityKind::Pufferfish,
- ItemKind::RabbitSpawnEgg => EntityKind::Rabbit,
- ItemKind::RavagerSpawnEgg => EntityKind::Ravager,
- ItemKind::SalmonSpawnEgg => EntityKind::Salmon,
- ItemKind::SheepSpawnEgg => EntityKind::Sheep,
- ItemKind::ShulkerSpawnEgg => EntityKind::Shulker,
- ItemKind::SilverfishSpawnEgg => EntityKind::Silverfish,
- ItemKind::SkeletonHorseSpawnEgg => EntityKind::SkeletonHorse,
- ItemKind::SkeletonSpawnEgg => EntityKind::Skeleton,
- ItemKind::SlimeSpawnEgg => EntityKind::Slime,
- ItemKind::SnifferSpawnEgg => EntityKind::Sniffer,
- ItemKind::SnowGolemSpawnEgg => EntityKind::SnowGolem,
- ItemKind::SpiderSpawnEgg => EntityKind::Spider,
- ItemKind::SquidSpawnEgg => EntityKind::Squid,
- ItemKind::StraySpawnEgg => EntityKind::Stray,
- ItemKind::StriderSpawnEgg => EntityKind::Strider,
- ItemKind::TadpoleSpawnEgg => EntityKind::Tadpole,
- ItemKind::TraderLlamaSpawnEgg => EntityKind::TraderLlama,
- ItemKind::TropicalFishSpawnEgg => EntityKind::TropicalFish,
- ItemKind::TurtleSpawnEgg => EntityKind::Turtle,
- ItemKind::VexSpawnEgg => EntityKind::Vex,
- ItemKind::VillagerSpawnEgg => EntityKind::Villager,
- ItemKind::VindicatorSpawnEgg => EntityKind::Vindicator,
- ItemKind::WanderingTraderSpawnEgg => EntityKind::WanderingTrader,
- ItemKind::WardenSpawnEgg => EntityKind::Warden,
- ItemKind::WitchSpawnEgg => EntityKind::Witch,
- ItemKind::WitherSkeletonSpawnEgg => EntityKind::WitherSkeleton,
- ItemKind::WitherSpawnEgg => EntityKind::Wither,
- ItemKind::WolfSpawnEgg => EntityKind::Wolf,
- ItemKind::ZoglinSpawnEgg => EntityKind::Zoglin,
- ItemKind::ZombieHorseSpawnEgg => EntityKind::ZombieHorse,
- ItemKind::ZombieNautilusSpawnEgg => EntityKind::ZombieNautilus,
- ItemKind::ZombieSpawnEgg => EntityKind::Zombie,
- ItemKind::ZombieVillagerSpawnEgg => EntityKind::ZombieVillager,
- ItemKind::ZombifiedPiglinSpawnEgg => EntityKind::ZombifiedPiglin,
- _ => return None,
- };
- Some(EntityData {
- kind: value,
- data: NbtCompound::new(),
- })
- }
-}
-impl DefaultableComponent for ProvidesTrimMaterial {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::AmethystShard => {
- ProvidesTrimMaterial::Referenced("minecraft:amethyst".into())
- }
- ItemKind::CopperIngot => ProvidesTrimMaterial::Referenced("minecraft:copper".into()),
- ItemKind::Diamond => ProvidesTrimMaterial::Referenced("minecraft:diamond".into()),
- ItemKind::Emerald => ProvidesTrimMaterial::Referenced("minecraft:emerald".into()),
- ItemKind::GoldIngot => ProvidesTrimMaterial::Referenced("minecraft:gold".into()),
- ItemKind::IronIngot => ProvidesTrimMaterial::Referenced("minecraft:iron".into()),
- ItemKind::LapisLazuli => ProvidesTrimMaterial::Referenced("minecraft:lapis".into()),
- ItemKind::NetheriteIngot => {
- ProvidesTrimMaterial::Referenced("minecraft:netherite".into())
- }
- ItemKind::Quartz => ProvidesTrimMaterial::Referenced("minecraft:quartz".into()),
- ItemKind::Redstone => ProvidesTrimMaterial::Referenced("minecraft:redstone".into()),
- ItemKind::ResinBrick => ProvidesTrimMaterial::Referenced("minecraft:resin".into()),
- _ => return None,
- };
- Some(value)
- }
-}
-impl DefaultableComponent for DamageResistant {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::AncientDebris => "#minecraft:is_fire".into(),
- ItemKind::NetherStar => "#minecraft:is_explosion".into(),
- ItemKind::NetheriteAxe => "#minecraft:is_fire".into(),
- ItemKind::NetheriteBlock => "#minecraft:is_fire".into(),
- ItemKind::NetheriteBoots => "#minecraft:is_fire".into(),
- ItemKind::NetheriteChestplate => "#minecraft:is_fire".into(),
- ItemKind::NetheriteHelmet => "#minecraft:is_fire".into(),
- ItemKind::NetheriteHoe => "#minecraft:is_fire".into(),
- ItemKind::NetheriteHorseArmor => "#minecraft:is_fire".into(),
- ItemKind::NetheriteIngot => "#minecraft:is_fire".into(),
- ItemKind::NetheriteLeggings => "#minecraft:is_fire".into(),
- ItemKind::NetheriteNautilusArmor => "#minecraft:is_fire".into(),
- ItemKind::NetheritePickaxe => "#minecraft:is_fire".into(),
- ItemKind::NetheriteScrap => "#minecraft:is_fire".into(),
- ItemKind::NetheriteShovel => "#minecraft:is_fire".into(),
- ItemKind::NetheriteSpear => "#minecraft:is_fire".into(),
- ItemKind::NetheriteSword => "#minecraft:is_fire".into(),
- _ => return None,
- };
- Some(DamageResistant { types: value })
- }
-}
-impl DefaultableComponent for Consumable {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::Apple => Consumable::new(),
- ItemKind::BakedPotato => Consumable::new(),
- ItemKind::Beef => Consumable::new(),
- ItemKind::Beetroot => Consumable::new(),
- ItemKind::BeetrootSoup => Consumable::new(),
- ItemKind::Bread => Consumable::new(),
- ItemKind::Carrot => Consumable::new(),
- ItemKind::Chicken => Consumable {
- on_consume_effects: vec![ConsumeEffect::ApplyEffects {
- effects: vec![MobEffectInstance {
- id: MobEffect::Hunger,
- details: MobEffectDetails {
- duration: 600,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- }],
- probability: 0.3,
- }],
- ..Consumable::new()
- },
- ItemKind::ChorusFruit => Consumable {
- on_consume_effects: vec![ConsumeEffect::TeleportRandomly { diameter: 16.0 }],
- ..Consumable::new()
- },
- ItemKind::Cod => Consumable::new(),
- ItemKind::CookedBeef => Consumable::new(),
- ItemKind::CookedChicken => Consumable::new(),
- ItemKind::CookedCod => Consumable::new(),
- ItemKind::CookedMutton => Consumable::new(),
- ItemKind::CookedPorkchop => Consumable::new(),
- ItemKind::CookedRabbit => Consumable::new(),
- ItemKind::CookedSalmon => Consumable::new(),
- ItemKind::Cookie => Consumable::new(),
- ItemKind::DriedKelp => Consumable {
- consume_seconds: 0.8,
- ..Consumable::new()
- },
- ItemKind::EnchantedGoldenApple => Consumable {
- on_consume_effects: vec![ConsumeEffect::ApplyEffects {
- effects: vec![
- MobEffectInstance {
- id: MobEffect::Regeneration,
- details: MobEffectDetails {
- amplifier: 1,
- duration: 400,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- MobEffectInstance {
- id: MobEffect::Resistance,
- details: MobEffectDetails {
- duration: 6000,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- MobEffectInstance {
- id: MobEffect::FireResistance,
- details: MobEffectDetails {
- duration: 6000,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- MobEffectInstance {
- id: MobEffect::Absorption,
- details: MobEffectDetails {
- amplifier: 3,
- duration: 2400,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- ],
- probability: 1.0,
- }],
- ..Consumable::new()
- },
- ItemKind::GlowBerries => Consumable::new(),
- ItemKind::GoldenApple => Consumable {
- on_consume_effects: vec![ConsumeEffect::ApplyEffects {
- effects: vec![
- MobEffectInstance {
- id: MobEffect::Regeneration,
- details: MobEffectDetails {
- amplifier: 1,
- duration: 100,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- MobEffectInstance {
- id: MobEffect::Absorption,
- details: MobEffectDetails {
- duration: 2400,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- ],
- probability: 1.0,
- }],
- ..Consumable::new()
- },
- ItemKind::GoldenCarrot => Consumable::new(),
- ItemKind::HoneyBottle => Consumable {
- animation: ItemUseAnimation::Drink,
- consume_seconds: 2.0,
- has_consume_particles: false,
- on_consume_effects: vec![ConsumeEffect::RemoveEffects {
- effects: HolderSet::Direct {
- contents: vec![MobEffect::Poison],
- },
- }],
- sound: azalea_registry::Holder::Reference(SoundEvent::ItemHoneyBottleDrink),
- },
- ItemKind::MelonSlice => Consumable::new(),
- ItemKind::MilkBucket => Consumable {
- animation: ItemUseAnimation::Drink,
- has_consume_particles: false,
- on_consume_effects: vec![ConsumeEffect::ClearAllEffects {}],
- sound: azalea_registry::Holder::Reference(SoundEvent::EntityGenericDrink),
- ..Consumable::new()
- },
- ItemKind::MushroomStew => Consumable::new(),
- ItemKind::Mutton => Consumable::new(),
- ItemKind::OminousBottle => Consumable {
- animation: ItemUseAnimation::Drink,
- has_consume_particles: false,
- on_consume_effects: vec![ConsumeEffect::PlaySound {
- sound: SoundEvent::ItemOminousBottleDispose,
- }],
- sound: azalea_registry::Holder::Reference(SoundEvent::EntityGenericDrink),
- ..Consumable::new()
- },
- ItemKind::PoisonousPotato => Consumable {
- on_consume_effects: vec![ConsumeEffect::ApplyEffects {
- effects: vec![MobEffectInstance {
- id: MobEffect::Poison,
- details: MobEffectDetails {
- duration: 100,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- }],
- probability: 0.6,
- }],
- ..Consumable::new()
- },
- ItemKind::Porkchop => Consumable::new(),
- ItemKind::Potato => Consumable::new(),
- ItemKind::Potion => Consumable {
- animation: ItemUseAnimation::Drink,
- has_consume_particles: false,
- sound: azalea_registry::Holder::Reference(SoundEvent::EntityGenericDrink),
- ..Consumable::new()
- },
- ItemKind::Pufferfish => Consumable {
- on_consume_effects: vec![ConsumeEffect::ApplyEffects {
- effects: vec![
- MobEffectInstance {
- id: MobEffect::Poison,
- details: MobEffectDetails {
- amplifier: 1,
- duration: 1200,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- MobEffectInstance {
- id: MobEffect::Hunger,
- details: MobEffectDetails {
- amplifier: 2,
- duration: 300,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- MobEffectInstance {
- id: MobEffect::Nausea,
- details: MobEffectDetails {
- duration: 300,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- ],
- probability: 1.0,
- }],
- ..Consumable::new()
- },
- ItemKind::PumpkinPie => Consumable::new(),
- ItemKind::Rabbit => Consumable::new(),
- ItemKind::RabbitStew => Consumable::new(),
- ItemKind::RottenFlesh => Consumable {
- on_consume_effects: vec![ConsumeEffect::ApplyEffects {
- effects: vec![MobEffectInstance {
- id: MobEffect::Hunger,
- details: MobEffectDetails {
- duration: 600,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- }],
- probability: 0.8,
- }],
- ..Consumable::new()
- },
- ItemKind::Salmon => Consumable::new(),
- ItemKind::SpiderEye => Consumable {
- on_consume_effects: vec![ConsumeEffect::ApplyEffects {
- effects: vec![MobEffectInstance {
- id: MobEffect::Poison,
- details: MobEffectDetails {
- duration: 100,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- }],
- probability: 1.0,
- }],
- ..Consumable::new()
- },
- ItemKind::SuspiciousStew => Consumable::new(),
- ItemKind::SweetBerries => Consumable::new(),
- ItemKind::TropicalFish => Consumable::new(),
- _ => return None,
- };
- Some(value)
- }
-}
-impl DefaultableComponent for Food {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::Apple => Food {
- nutrition: 4,
- saturation: 2.4,
- ..Food::new()
- },
- ItemKind::BakedPotato => Food {
- nutrition: 5,
- saturation: 6.0,
- ..Food::new()
- },
- ItemKind::Beef => Food {
- nutrition: 3,
- saturation: 1.8000001,
- ..Food::new()
- },
- ItemKind::Beetroot => Food {
- nutrition: 1,
- saturation: 1.2,
- ..Food::new()
- },
- ItemKind::BeetrootSoup => Food {
- nutrition: 6,
- saturation: 7.2000003,
- ..Food::new()
- },
- ItemKind::Bread => Food {
- nutrition: 5,
- saturation: 6.0,
- ..Food::new()
- },
- ItemKind::Carrot => Food {
- nutrition: 3,
- saturation: 3.6000001,
- ..Food::new()
- },
- ItemKind::Chicken => Food {
- nutrition: 2,
- saturation: 1.2,
- ..Food::new()
- },
- ItemKind::ChorusFruit => Food {
- can_always_eat: true,
- nutrition: 4,
- saturation: 2.4,
- },
- ItemKind::Cod => Food {
- nutrition: 2,
- saturation: 0.4,
- ..Food::new()
- },
- ItemKind::CodBucket => Food {
- nutrition: 2,
- saturation: 0.4,
- ..Food::new()
- },
- ItemKind::CookedBeef => Food {
- nutrition: 8,
- saturation: 12.8,
- ..Food::new()
- },
- ItemKind::CookedChicken => Food {
- nutrition: 6,
- saturation: 7.2000003,
- ..Food::new()
- },
- ItemKind::CookedCod => Food {
- nutrition: 5,
- saturation: 6.0,
- ..Food::new()
- },
- ItemKind::CookedMutton => Food {
- nutrition: 6,
- saturation: 9.6,
- ..Food::new()
- },
- ItemKind::CookedPorkchop => Food {
- nutrition: 8,
- saturation: 12.8,
- ..Food::new()
- },
- ItemKind::CookedRabbit => Food {
- nutrition: 5,
- saturation: 6.0,
- ..Food::new()
- },
- ItemKind::CookedSalmon => Food {
- nutrition: 6,
- saturation: 9.6,
- ..Food::new()
- },
- ItemKind::Cookie => Food {
- nutrition: 2,
- saturation: 0.4,
- ..Food::new()
- },
- ItemKind::DriedKelp => Food {
- nutrition: 1,
- saturation: 0.6,
- ..Food::new()
- },
- ItemKind::EnchantedGoldenApple => Food {
- can_always_eat: true,
- nutrition: 4,
- saturation: 9.6,
- },
- ItemKind::GlowBerries => Food {
- nutrition: 2,
- saturation: 0.4,
- ..Food::new()
- },
- ItemKind::GoldenApple => Food {
- can_always_eat: true,
- nutrition: 4,
- saturation: 9.6,
- },
- ItemKind::GoldenCarrot => Food {
- nutrition: 6,
- saturation: 14.400001,
- ..Food::new()
- },
- ItemKind::HoneyBottle => Food {
- can_always_eat: true,
- nutrition: 6,
- saturation: 1.2,
- },
- ItemKind::MelonSlice => Food {
- nutrition: 2,
- saturation: 1.2,
- ..Food::new()
- },
- ItemKind::MushroomStew => Food {
- nutrition: 6,
- saturation: 7.2000003,
- ..Food::new()
- },
- ItemKind::Mutton => Food {
- nutrition: 2,
- saturation: 1.2,
- ..Food::new()
- },
- ItemKind::PoisonousPotato => Food {
- nutrition: 2,
- saturation: 1.2,
- ..Food::new()
- },
- ItemKind::Porkchop => Food {
- nutrition: 3,
- saturation: 1.8000001,
- ..Food::new()
- },
- ItemKind::Potato => Food {
- nutrition: 1,
- saturation: 0.6,
- ..Food::new()
- },
- ItemKind::Pufferfish => Food {
- nutrition: 1,
- saturation: 0.2,
- ..Food::new()
- },
- ItemKind::PufferfishBucket => Food {
- nutrition: 1,
- saturation: 0.2,
- ..Food::new()
- },
- ItemKind::PumpkinPie => Food {
- nutrition: 8,
- saturation: 4.8,
- ..Food::new()
- },
- ItemKind::Rabbit => Food {
- nutrition: 3,
- saturation: 1.8000001,
- ..Food::new()
- },
- ItemKind::RabbitStew => Food {
- nutrition: 10,
- saturation: 12.0,
- ..Food::new()
- },
- ItemKind::RottenFlesh => Food {
- nutrition: 4,
- saturation: 0.8,
- ..Food::new()
- },
- ItemKind::Salmon => Food {
- nutrition: 2,
- saturation: 0.4,
- ..Food::new()
- },
- ItemKind::SalmonBucket => Food {
- nutrition: 2,
- saturation: 0.4,
- ..Food::new()
- },
- ItemKind::SpiderEye => Food {
- nutrition: 2,
- saturation: 3.2,
- ..Food::new()
- },
- ItemKind::SuspiciousStew => Food {
- can_always_eat: true,
- nutrition: 6,
- saturation: 7.2000003,
- },
- ItemKind::SweetBerries => Food {
- nutrition: 2,
- saturation: 0.4,
- ..Food::new()
- },
- ItemKind::TropicalFish => Food {
- nutrition: 1,
- saturation: 0.2,
- ..Food::new()
- },
- ItemKind::TropicalFishBucket => Food {
- nutrition: 1,
- saturation: 0.2,
- ..Food::new()
- },
- _ => return None,
- };
- Some(value)
- }
-}
-impl DefaultableComponent for BucketEntityData {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::AxolotlBucket => NbtCompound::from_values(vec![]),
- ItemKind::CodBucket => NbtCompound::from_values(vec![]),
- ItemKind::PufferfishBucket => NbtCompound::from_values(vec![]),
- ItemKind::SalmonBucket => NbtCompound::from_values(vec![]),
- ItemKind::TadpoleBucket => NbtCompound::from_values(vec![]),
- ItemKind::TropicalFishBucket => NbtCompound::from_values(vec![]),
- _ => return None,
- };
- Some(BucketEntityData { entity: value })
- }
-}
-impl DefaultableComponent for Bees {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::BeeNest => vec![],
- ItemKind::Beehive => vec![],
- _ => return None,
- };
- Some(Bees { occupants: value })
- }
-}
-impl DefaultableComponent for BlockState {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::BeeNest => HashMap::from_iter([("honey_level".to_owned(), "0".to_owned())]),
- ItemKind::Beehive => HashMap::from_iter([("honey_level".to_owned(), "0".to_owned())]),
- ItemKind::CopperGolemStatue => {
- HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
- }
- ItemKind::ExposedCopperGolemStatue => {
- HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
- }
- ItemKind::Light => HashMap::from_iter([("level".to_owned(), "15".to_owned())]),
- ItemKind::OxidizedCopperGolemStatue => {
- HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
- }
- ItemKind::TestBlock => HashMap::from_iter([("mode".to_owned(), "start".to_owned())]),
- ItemKind::WaxedCopperGolemStatue => {
- HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
- }
- ItemKind::WaxedExposedCopperGolemStatue => {
- HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
- }
- ItemKind::WaxedOxidizedCopperGolemStatue => {
- HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
- }
- ItemKind::WaxedWeatheredCopperGolemStatue => {
- HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
- }
- ItemKind::WeatheredCopperGolemStatue => {
- HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
- }
- _ => return None,
- };
- Some(BlockState { properties: value })
- }
-}
-impl DefaultableComponent for UseRemainder {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::BeetrootSoup => ItemStack::from(ItemKind::Bowl),
- ItemKind::HoneyBottle => ItemStack::from(ItemKind::GlassBottle),
- ItemKind::MilkBucket => ItemStack::from(ItemKind::Bucket),
- ItemKind::MushroomStew => ItemStack::from(ItemKind::Bowl),
- ItemKind::Potion => ItemStack::from(ItemKind::GlassBottle),
- ItemKind::RabbitStew => ItemStack::from(ItemKind::Bowl),
- ItemKind::SuspiciousStew => ItemStack::from(ItemKind::Bowl),
- _ => return None,
- };
- Some(UseRemainder {
- convert_into: value,
- })
- }
-}
-impl DefaultableComponent for BannerPatterns {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::BlackBanner => vec![],
- ItemKind::BlueBanner => vec![],
- ItemKind::BrownBanner => vec![],
- ItemKind::CyanBanner => vec![],
- ItemKind::GrayBanner => vec![],
- ItemKind::GreenBanner => vec![],
- ItemKind::LightBlueBanner => vec![],
- ItemKind::LightGrayBanner => vec![],
- ItemKind::LimeBanner => vec![],
- ItemKind::MagentaBanner => vec![],
- ItemKind::OrangeBanner => vec![],
- ItemKind::PinkBanner => vec![],
- ItemKind::PurpleBanner => vec![],
- ItemKind::RedBanner => vec![],
- ItemKind::Shield => vec![],
- ItemKind::WhiteBanner => vec![],
- ItemKind::YellowBanner => vec![],
- _ => return None,
- };
- Some(BannerPatterns { patterns: value })
- }
-}
-impl DefaultableComponent for BundleContents {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::BlackBundle => vec![],
- ItemKind::BlueBundle => vec![],
- ItemKind::BrownBundle => vec![],
- ItemKind::Bundle => vec![],
- ItemKind::CyanBundle => vec![],
- ItemKind::GrayBundle => vec![],
- ItemKind::GreenBundle => vec![],
- ItemKind::LightBlueBundle => vec![],
- ItemKind::LightGrayBundle => vec![],
- ItemKind::LimeBundle => vec![],
- ItemKind::MagentaBundle => vec![],
- ItemKind::OrangeBundle => vec![],
- ItemKind::PinkBundle => vec![],
- ItemKind::PurpleBundle => vec![],
- ItemKind::RedBundle => vec![],
- ItemKind::WhiteBundle => vec![],
- ItemKind::YellowBundle => vec![],
- _ => return None,
- };
- Some(BundleContents { items: value })
- }
-}
impl DefaultableComponent for Equippable {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
@@ -3935,122 +3198,6 @@ impl DefaultableComponent for Equippable {
Some(value)
}
}
-impl DefaultableComponent for ChickenVariant {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::BlueEgg => ChickenVariant::Referenced("minecraft:cold".into()),
- ItemKind::BrownEgg => ChickenVariant::Referenced("minecraft:warm".into()),
- ItemKind::Egg => ChickenVariant::Referenced("minecraft:temperate".into()),
- _ => return None,
- };
- Some(value)
- }
-}
-impl DefaultableComponent for Enchantable {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::Book => 1,
- ItemKind::Bow => 1,
- ItemKind::ChainmailBoots => 12,
- ItemKind::ChainmailChestplate => 12,
- ItemKind::ChainmailHelmet => 12,
- ItemKind::ChainmailLeggings => 12,
- ItemKind::CopperAxe => 13,
- ItemKind::CopperBoots => 8,
- ItemKind::CopperChestplate => 8,
- ItemKind::CopperHelmet => 8,
- ItemKind::CopperHoe => 13,
- ItemKind::CopperLeggings => 8,
- ItemKind::CopperPickaxe => 13,
- ItemKind::CopperShovel => 13,
- ItemKind::CopperSpear => 13,
- ItemKind::CopperSword => 13,
- ItemKind::Crossbow => 1,
- ItemKind::DiamondAxe => 10,
- ItemKind::DiamondBoots => 10,
- ItemKind::DiamondChestplate => 10,
- ItemKind::DiamondHelmet => 10,
- ItemKind::DiamondHoe => 10,
- ItemKind::DiamondLeggings => 10,
- ItemKind::DiamondPickaxe => 10,
- ItemKind::DiamondShovel => 10,
- ItemKind::DiamondSpear => 10,
- ItemKind::DiamondSword => 10,
- ItemKind::FishingRod => 1,
- ItemKind::GoldenAxe => 22,
- ItemKind::GoldenBoots => 25,
- ItemKind::GoldenChestplate => 25,
- ItemKind::GoldenHelmet => 25,
- ItemKind::GoldenHoe => 22,
- ItemKind::GoldenLeggings => 25,
- ItemKind::GoldenPickaxe => 22,
- ItemKind::GoldenShovel => 22,
- ItemKind::GoldenSpear => 22,
- ItemKind::GoldenSword => 22,
- ItemKind::IronAxe => 14,
- ItemKind::IronBoots => 9,
- ItemKind::IronChestplate => 9,
- ItemKind::IronHelmet => 9,
- ItemKind::IronHoe => 14,
- ItemKind::IronLeggings => 9,
- ItemKind::IronPickaxe => 14,
- ItemKind::IronShovel => 14,
- ItemKind::IronSpear => 14,
- ItemKind::IronSword => 14,
- ItemKind::LeatherBoots => 15,
- ItemKind::LeatherChestplate => 15,
- ItemKind::LeatherHelmet => 15,
- ItemKind::LeatherLeggings => 15,
- ItemKind::Mace => 15,
- ItemKind::NetheriteAxe => 15,
- ItemKind::NetheriteBoots => 15,
- ItemKind::NetheriteChestplate => 15,
- ItemKind::NetheriteHelmet => 15,
- ItemKind::NetheriteHoe => 15,
- ItemKind::NetheriteLeggings => 15,
- ItemKind::NetheritePickaxe => 15,
- ItemKind::NetheriteShovel => 15,
- ItemKind::NetheriteSpear => 15,
- ItemKind::NetheriteSword => 15,
- ItemKind::StoneAxe => 5,
- ItemKind::StoneHoe => 5,
- ItemKind::StonePickaxe => 5,
- ItemKind::StoneShovel => 5,
- ItemKind::StoneSpear => 5,
- ItemKind::StoneSword => 5,
- ItemKind::Trident => 1,
- ItemKind::TurtleHelmet => 9,
- ItemKind::WoodenAxe => 15,
- ItemKind::WoodenHoe => 15,
- ItemKind::WoodenPickaxe => 15,
- ItemKind::WoodenShovel => 15,
- ItemKind::WoodenSpear => 15,
- ItemKind::WoodenSword => 15,
- _ => return None,
- };
- Some(Enchantable { value: value })
- }
-}
-impl DefaultableComponent for ProvidesBannerPatterns {
- fn default_for_item(item: ItemKind) -> Option<Self> {
- let value = match item {
- ItemKind::BordureIndentedBannerPattern => {
- "#minecraft:pattern_item/bordure_indented".into()
- }
- ItemKind::CreeperBannerPattern => "#minecraft:pattern_item/creeper".into(),
- ItemKind::FieldMasonedBannerPattern => "#minecraft:pattern_item/field_masoned".into(),
- ItemKind::FlowBannerPattern => "#minecraft:pattern_item/flow".into(),
- ItemKind::FlowerBannerPattern => "#minecraft:pattern_item/flower".into(),
- ItemKind::GlobeBannerPattern => "#minecraft:pattern_item/globe".into(),
- ItemKind::GusterBannerPattern => "#minecraft:pattern_item/guster".into(),
- ItemKind::MojangBannerPattern => "#minecraft:pattern_item/mojang".into(),
- ItemKind::PiglinBannerPattern => "#minecraft:pattern_item/piglin".into(),
- ItemKind::SkullBannerPattern => "#minecraft:pattern_item/skull".into(),
- _ => return None,
- };
- Some(ProvidesBannerPatterns { key: value })
- }
-}
impl DefaultableComponent for Damage {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
@@ -4143,6 +3290,91 @@ impl DefaultableComponent for Damage {
Some(Damage { amount: value })
}
}
+impl DefaultableComponent for Enchantable {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::Book => 1,
+ ItemKind::Bow => 1,
+ ItemKind::ChainmailBoots => 12,
+ ItemKind::ChainmailChestplate => 12,
+ ItemKind::ChainmailHelmet => 12,
+ ItemKind::ChainmailLeggings => 12,
+ ItemKind::CopperAxe => 13,
+ ItemKind::CopperBoots => 8,
+ ItemKind::CopperChestplate => 8,
+ ItemKind::CopperHelmet => 8,
+ ItemKind::CopperHoe => 13,
+ ItemKind::CopperLeggings => 8,
+ ItemKind::CopperPickaxe => 13,
+ ItemKind::CopperShovel => 13,
+ ItemKind::CopperSpear => 13,
+ ItemKind::CopperSword => 13,
+ ItemKind::Crossbow => 1,
+ ItemKind::DiamondAxe => 10,
+ ItemKind::DiamondBoots => 10,
+ ItemKind::DiamondChestplate => 10,
+ ItemKind::DiamondHelmet => 10,
+ ItemKind::DiamondHoe => 10,
+ ItemKind::DiamondLeggings => 10,
+ ItemKind::DiamondPickaxe => 10,
+ ItemKind::DiamondShovel => 10,
+ ItemKind::DiamondSpear => 10,
+ ItemKind::DiamondSword => 10,
+ ItemKind::FishingRod => 1,
+ ItemKind::GoldenAxe => 22,
+ ItemKind::GoldenBoots => 25,
+ ItemKind::GoldenChestplate => 25,
+ ItemKind::GoldenHelmet => 25,
+ ItemKind::GoldenHoe => 22,
+ ItemKind::GoldenLeggings => 25,
+ ItemKind::GoldenPickaxe => 22,
+ ItemKind::GoldenShovel => 22,
+ ItemKind::GoldenSpear => 22,
+ ItemKind::GoldenSword => 22,
+ ItemKind::IronAxe => 14,
+ ItemKind::IronBoots => 9,
+ ItemKind::IronChestplate => 9,
+ ItemKind::IronHelmet => 9,
+ ItemKind::IronHoe => 14,
+ ItemKind::IronLeggings => 9,
+ ItemKind::IronPickaxe => 14,
+ ItemKind::IronShovel => 14,
+ ItemKind::IronSpear => 14,
+ ItemKind::IronSword => 14,
+ ItemKind::LeatherBoots => 15,
+ ItemKind::LeatherChestplate => 15,
+ ItemKind::LeatherHelmet => 15,
+ ItemKind::LeatherLeggings => 15,
+ ItemKind::Mace => 15,
+ ItemKind::NetheriteAxe => 15,
+ ItemKind::NetheriteBoots => 15,
+ ItemKind::NetheriteChestplate => 15,
+ ItemKind::NetheriteHelmet => 15,
+ ItemKind::NetheriteHoe => 15,
+ ItemKind::NetheriteLeggings => 15,
+ ItemKind::NetheritePickaxe => 15,
+ ItemKind::NetheriteShovel => 15,
+ ItemKind::NetheriteSpear => 15,
+ ItemKind::NetheriteSword => 15,
+ ItemKind::StoneAxe => 5,
+ ItemKind::StoneHoe => 5,
+ ItemKind::StonePickaxe => 5,
+ ItemKind::StoneShovel => 5,
+ ItemKind::StoneSpear => 5,
+ ItemKind::StoneSword => 5,
+ ItemKind::Trident => 1,
+ ItemKind::TurtleHelmet => 9,
+ ItemKind::WoodenAxe => 15,
+ ItemKind::WoodenHoe => 15,
+ ItemKind::WoodenPickaxe => 15,
+ ItemKind::WoodenShovel => 15,
+ ItemKind::WoodenSpear => 15,
+ ItemKind::WoodenSword => 15,
+ _ => return None,
+ };
+ Some(Enchantable { value: value })
+ }
+}
impl DefaultableComponent for MaxDamage {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
@@ -4687,20 +3919,278 @@ impl DefaultableComponent for Repairable {
Some(Repairable { items: value })
}
}
-impl DefaultableComponent for UseCooldown {
+impl DefaultableComponent for BlockState {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::ChorusFruit => UseCooldown {
- seconds: 1.0,
- ..UseCooldown::new()
+ ItemKind::BeeNest => HashMap::from_iter([("honey_level".to_owned(), "0".to_owned())]),
+ ItemKind::Beehive => HashMap::from_iter([("honey_level".to_owned(), "0".to_owned())]),
+ ItemKind::CopperGolemStatue => {
+ HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
+ }
+ ItemKind::ExposedCopperGolemStatue => {
+ HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
+ }
+ ItemKind::Light => HashMap::from_iter([("level".to_owned(), "15".to_owned())]),
+ ItemKind::OxidizedCopperGolemStatue => {
+ HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
+ }
+ ItemKind::TestBlock => HashMap::from_iter([("mode".to_owned(), "start".to_owned())]),
+ ItemKind::WaxedCopperGolemStatue => {
+ HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
+ }
+ ItemKind::WaxedExposedCopperGolemStatue => {
+ HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
+ }
+ ItemKind::WaxedOxidizedCopperGolemStatue => {
+ HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
+ }
+ ItemKind::WaxedWeatheredCopperGolemStatue => {
+ HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
+ }
+ ItemKind::WeatheredCopperGolemStatue => {
+ HashMap::from_iter([("copper_golem_pose".to_owned(), "standing".to_owned())])
+ }
+ _ => return None,
+ };
+ Some(BlockState { properties: value })
+ }
+}
+impl DefaultableComponent for BucketEntityData {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::AxolotlBucket => NbtCompound::from_values(vec![]),
+ ItemKind::CodBucket => NbtCompound::from_values(vec![]),
+ ItemKind::PufferfishBucket => NbtCompound::from_values(vec![]),
+ ItemKind::SalmonBucket => NbtCompound::from_values(vec![]),
+ ItemKind::TadpoleBucket => NbtCompound::from_values(vec![]),
+ ItemKind::TropicalFishBucket => NbtCompound::from_values(vec![]),
+ _ => return None,
+ };
+ Some(BucketEntityData { entity: value })
+ }
+}
+impl DefaultableComponent for Food {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::Apple => Food {
+ nutrition: 4,
+ saturation: 2.4,
+ ..Food::new()
},
- ItemKind::EnderPearl => UseCooldown {
- seconds: 1.0,
- ..UseCooldown::new()
+ ItemKind::BakedPotato => Food {
+ nutrition: 5,
+ saturation: 6.0,
+ ..Food::new()
},
- ItemKind::WindCharge => UseCooldown {
- seconds: 0.5,
- ..UseCooldown::new()
+ ItemKind::Beef => Food {
+ nutrition: 3,
+ saturation: 1.8000001,
+ ..Food::new()
+ },
+ ItemKind::Beetroot => Food {
+ nutrition: 1,
+ saturation: 1.2,
+ ..Food::new()
+ },
+ ItemKind::BeetrootSoup => Food {
+ nutrition: 6,
+ saturation: 7.2000003,
+ ..Food::new()
+ },
+ ItemKind::Bread => Food {
+ nutrition: 5,
+ saturation: 6.0,
+ ..Food::new()
+ },
+ ItemKind::Carrot => Food {
+ nutrition: 3,
+ saturation: 3.6000001,
+ ..Food::new()
+ },
+ ItemKind::Chicken => Food {
+ nutrition: 2,
+ saturation: 1.2,
+ ..Food::new()
+ },
+ ItemKind::ChorusFruit => Food {
+ can_always_eat: true,
+ nutrition: 4,
+ saturation: 2.4,
+ },
+ ItemKind::Cod => Food {
+ nutrition: 2,
+ saturation: 0.4,
+ ..Food::new()
+ },
+ ItemKind::CodBucket => Food {
+ nutrition: 2,
+ saturation: 0.4,
+ ..Food::new()
+ },
+ ItemKind::CookedBeef => Food {
+ nutrition: 8,
+ saturation: 12.8,
+ ..Food::new()
+ },
+ ItemKind::CookedChicken => Food {
+ nutrition: 6,
+ saturation: 7.2000003,
+ ..Food::new()
+ },
+ ItemKind::CookedCod => Food {
+ nutrition: 5,
+ saturation: 6.0,
+ ..Food::new()
+ },
+ ItemKind::CookedMutton => Food {
+ nutrition: 6,
+ saturation: 9.6,
+ ..Food::new()
+ },
+ ItemKind::CookedPorkchop => Food {
+ nutrition: 8,
+ saturation: 12.8,
+ ..Food::new()
+ },
+ ItemKind::CookedRabbit => Food {
+ nutrition: 5,
+ saturation: 6.0,
+ ..Food::new()
+ },
+ ItemKind::CookedSalmon => Food {
+ nutrition: 6,
+ saturation: 9.6,
+ ..Food::new()
+ },
+ ItemKind::Cookie => Food {
+ nutrition: 2,
+ saturation: 0.4,
+ ..Food::new()
+ },
+ ItemKind::DriedKelp => Food {
+ nutrition: 1,
+ saturation: 0.6,
+ ..Food::new()
+ },
+ ItemKind::EnchantedGoldenApple => Food {
+ can_always_eat: true,
+ nutrition: 4,
+ saturation: 9.6,
+ },
+ ItemKind::GlowBerries => Food {
+ nutrition: 2,
+ saturation: 0.4,
+ ..Food::new()
+ },
+ ItemKind::GoldenApple => Food {
+ can_always_eat: true,
+ nutrition: 4,
+ saturation: 9.6,
+ },
+ ItemKind::GoldenCarrot => Food {
+ nutrition: 6,
+ saturation: 14.400001,
+ ..Food::new()
+ },
+ ItemKind::HoneyBottle => Food {
+ can_always_eat: true,
+ nutrition: 6,
+ saturation: 1.2,
+ },
+ ItemKind::MelonSlice => Food {
+ nutrition: 2,
+ saturation: 1.2,
+ ..Food::new()
+ },
+ ItemKind::MushroomStew => Food {
+ nutrition: 6,
+ saturation: 7.2000003,
+ ..Food::new()
+ },
+ ItemKind::Mutton => Food {
+ nutrition: 2,
+ saturation: 1.2,
+ ..Food::new()
+ },
+ ItemKind::PoisonousPotato => Food {
+ nutrition: 2,
+ saturation: 1.2,
+ ..Food::new()
+ },
+ ItemKind::Porkchop => Food {
+ nutrition: 3,
+ saturation: 1.8000001,
+ ..Food::new()
+ },
+ ItemKind::Potato => Food {
+ nutrition: 1,
+ saturation: 0.6,
+ ..Food::new()
+ },
+ ItemKind::Pufferfish => Food {
+ nutrition: 1,
+ saturation: 0.2,
+ ..Food::new()
+ },
+ ItemKind::PufferfishBucket => Food {
+ nutrition: 1,
+ saturation: 0.2,
+ ..Food::new()
+ },
+ ItemKind::PumpkinPie => Food {
+ nutrition: 8,
+ saturation: 4.8,
+ ..Food::new()
+ },
+ ItemKind::Rabbit => Food {
+ nutrition: 3,
+ saturation: 1.8000001,
+ ..Food::new()
+ },
+ ItemKind::RabbitStew => Food {
+ nutrition: 10,
+ saturation: 12.0,
+ ..Food::new()
+ },
+ ItemKind::RottenFlesh => Food {
+ nutrition: 4,
+ saturation: 0.8,
+ ..Food::new()
+ },
+ ItemKind::Salmon => Food {
+ nutrition: 2,
+ saturation: 0.4,
+ ..Food::new()
+ },
+ ItemKind::SalmonBucket => Food {
+ nutrition: 2,
+ saturation: 0.4,
+ ..Food::new()
+ },
+ ItemKind::SpiderEye => Food {
+ nutrition: 2,
+ saturation: 3.2,
+ ..Food::new()
+ },
+ ItemKind::SuspiciousStew => Food {
+ can_always_eat: true,
+ nutrition: 6,
+ saturation: 7.2000003,
+ },
+ ItemKind::SweetBerries => Food {
+ nutrition: 2,
+ saturation: 0.4,
+ ..Food::new()
+ },
+ ItemKind::TropicalFish => Food {
+ nutrition: 1,
+ saturation: 0.2,
+ ..Food::new()
+ },
+ ItemKind::TropicalFishBucket => Food {
+ nutrition: 1,
+ saturation: 0.2,
+ ..Food::new()
},
_ => return None,
};
@@ -5704,140 +5194,222 @@ impl DefaultableComponent for Tool {
Some(value)
}
}
-impl DefaultableComponent for Weapon {
+impl DefaultableComponent for Dye {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::CopperAxe => Weapon {
- disable_blocking_for_seconds: 5.0,
- item_damage_per_attack: 2,
- },
- ItemKind::CopperHoe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::CopperPickaxe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::CopperShovel => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::CopperSpear => Weapon::new(),
- ItemKind::CopperSword => Weapon::new(),
- ItemKind::DiamondAxe => Weapon {
- disable_blocking_for_seconds: 5.0,
- item_damage_per_attack: 2,
- },
- ItemKind::DiamondHoe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::DiamondPickaxe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::DiamondShovel => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::DiamondSpear => Weapon::new(),
- ItemKind::DiamondSword => Weapon::new(),
- ItemKind::GoldenAxe => Weapon {
- disable_blocking_for_seconds: 5.0,
- item_damage_per_attack: 2,
- },
- ItemKind::GoldenHoe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::GoldenPickaxe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::GoldenShovel => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::GoldenSpear => Weapon::new(),
- ItemKind::GoldenSword => Weapon::new(),
- ItemKind::IronAxe => Weapon {
- disable_blocking_for_seconds: 5.0,
- item_damage_per_attack: 2,
- },
- ItemKind::IronHoe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::IronPickaxe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::IronShovel => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::IronSpear => Weapon::new(),
- ItemKind::IronSword => Weapon::new(),
- ItemKind::Mace => Weapon::new(),
- ItemKind::NetheriteAxe => Weapon {
- disable_blocking_for_seconds: 5.0,
- item_damage_per_attack: 2,
- },
- ItemKind::NetheriteHoe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::NetheritePickaxe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::NetheriteShovel => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::NetheriteSpear => Weapon::new(),
- ItemKind::NetheriteSword => Weapon::new(),
- ItemKind::StoneAxe => Weapon {
- disable_blocking_for_seconds: 5.0,
- item_damage_per_attack: 2,
- },
- ItemKind::StoneHoe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::StonePickaxe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::StoneShovel => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::StoneSpear => Weapon::new(),
- ItemKind::StoneSword => Weapon::new(),
- ItemKind::Trident => Weapon::new(),
- ItemKind::WoodenAxe => Weapon {
- disable_blocking_for_seconds: 5.0,
- item_damage_per_attack: 2,
- },
- ItemKind::WoodenHoe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::WoodenPickaxe => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::WoodenShovel => Weapon {
- item_damage_per_attack: 2,
- ..Weapon::new()
- },
- ItemKind::WoodenSpear => Weapon::new(),
- ItemKind::WoodenSword => Weapon::new(),
+ ItemKind::BlackDye => DyeColor::Black,
+ ItemKind::BlueDye => DyeColor::Blue,
+ ItemKind::BrownDye => DyeColor::Brown,
+ ItemKind::CyanDye => DyeColor::Cyan,
+ ItemKind::GrayDye => DyeColor::Gray,
+ ItemKind::GreenDye => DyeColor::Green,
+ ItemKind::LightBlueDye => DyeColor::LightBlue,
+ ItemKind::LightGrayDye => DyeColor::LightGray,
+ ItemKind::LimeDye => DyeColor::Lime,
+ ItemKind::MagentaDye => DyeColor::Magenta,
+ ItemKind::OrangeDye => DyeColor::Orange,
+ ItemKind::PinkDye => DyeColor::Pink,
+ ItemKind::PurpleDye => DyeColor::Purple,
+ ItemKind::RedDye => DyeColor::Red,
+ ItemKind::WhiteDye => DyeColor::White,
+ ItemKind::YellowDye => DyeColor::Yellow,
_ => return None,
};
- Some(value)
+ Some(Dye { color: value })
+ }
+}
+impl DefaultableComponent for DamageResistant {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::AncientDebris => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetherStar => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteAxe => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteBlock => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteBoots => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteChestplate => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteHelmet => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteHoe => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteHorseArmor => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteIngot => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteLeggings => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteNautilusArmor => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheritePickaxe => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteScrap => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteShovel => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteSpear => HolderSet::Direct { contents: vec![] },
+ ItemKind::NetheriteSword => HolderSet::Direct { contents: vec![] },
+ _ => return None,
+ };
+ Some(DamageResistant { types: value })
+ }
+}
+impl DefaultableComponent for EntityData {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::AllaySpawnEgg => EntityKind::Allay,
+ ItemKind::ArmadilloSpawnEgg => EntityKind::Armadillo,
+ ItemKind::AxolotlSpawnEgg => EntityKind::Axolotl,
+ ItemKind::BatSpawnEgg => EntityKind::Bat,
+ ItemKind::BeeSpawnEgg => EntityKind::Bee,
+ ItemKind::BlazeSpawnEgg => EntityKind::Blaze,
+ ItemKind::BoggedSpawnEgg => EntityKind::Bogged,
+ ItemKind::BreezeSpawnEgg => EntityKind::Breeze,
+ ItemKind::CamelHuskSpawnEgg => EntityKind::CamelHusk,
+ ItemKind::CamelSpawnEgg => EntityKind::Camel,
+ ItemKind::CatSpawnEgg => EntityKind::Cat,
+ ItemKind::CaveSpiderSpawnEgg => EntityKind::CaveSpider,
+ ItemKind::ChickenSpawnEgg => EntityKind::Chicken,
+ ItemKind::CodSpawnEgg => EntityKind::Cod,
+ ItemKind::CopperGolemSpawnEgg => EntityKind::CopperGolem,
+ ItemKind::CowSpawnEgg => EntityKind::Cow,
+ ItemKind::CreakingSpawnEgg => EntityKind::Creaking,
+ ItemKind::CreeperSpawnEgg => EntityKind::Creeper,
+ ItemKind::DolphinSpawnEgg => EntityKind::Dolphin,
+ ItemKind::DonkeySpawnEgg => EntityKind::Donkey,
+ ItemKind::DrownedSpawnEgg => EntityKind::Drowned,
+ ItemKind::ElderGuardianSpawnEgg => EntityKind::ElderGuardian,
+ ItemKind::EnderDragonSpawnEgg => EntityKind::EnderDragon,
+ ItemKind::EndermanSpawnEgg => EntityKind::Enderman,
+ ItemKind::EndermiteSpawnEgg => EntityKind::Endermite,
+ ItemKind::EvokerSpawnEgg => EntityKind::Evoker,
+ ItemKind::FoxSpawnEgg => EntityKind::Fox,
+ ItemKind::FrogSpawnEgg => EntityKind::Frog,
+ ItemKind::GhastSpawnEgg => EntityKind::Ghast,
+ ItemKind::GlowSquidSpawnEgg => EntityKind::GlowSquid,
+ ItemKind::GoatSpawnEgg => EntityKind::Goat,
+ ItemKind::GuardianSpawnEgg => EntityKind::Guardian,
+ ItemKind::HappyGhastSpawnEgg => EntityKind::HappyGhast,
+ ItemKind::HoglinSpawnEgg => EntityKind::Hoglin,
+ ItemKind::HorseSpawnEgg => EntityKind::Horse,
+ ItemKind::HuskSpawnEgg => EntityKind::Husk,
+ ItemKind::IronGolemSpawnEgg => EntityKind::IronGolem,
+ ItemKind::LlamaSpawnEgg => EntityKind::Llama,
+ ItemKind::MagmaCubeSpawnEgg => EntityKind::MagmaCube,
+ ItemKind::MooshroomSpawnEgg => EntityKind::Mooshroom,
+ ItemKind::MuleSpawnEgg => EntityKind::Mule,
+ ItemKind::NautilusSpawnEgg => EntityKind::Nautilus,
+ ItemKind::OcelotSpawnEgg => EntityKind::Ocelot,
+ ItemKind::PandaSpawnEgg => EntityKind::Panda,
+ ItemKind::ParchedSpawnEgg => EntityKind::Parched,
+ ItemKind::ParrotSpawnEgg => EntityKind::Parrot,
+ ItemKind::PhantomSpawnEgg => EntityKind::Phantom,
+ ItemKind::PigSpawnEgg => EntityKind::Pig,
+ ItemKind::PiglinBruteSpawnEgg => EntityKind::PiglinBrute,
+ ItemKind::PiglinSpawnEgg => EntityKind::Piglin,
+ ItemKind::PillagerSpawnEgg => EntityKind::Pillager,
+ ItemKind::PolarBearSpawnEgg => EntityKind::PolarBear,
+ ItemKind::PufferfishSpawnEgg => EntityKind::Pufferfish,
+ ItemKind::RabbitSpawnEgg => EntityKind::Rabbit,
+ ItemKind::RavagerSpawnEgg => EntityKind::Ravager,
+ ItemKind::SalmonSpawnEgg => EntityKind::Salmon,
+ ItemKind::SheepSpawnEgg => EntityKind::Sheep,
+ ItemKind::ShulkerSpawnEgg => EntityKind::Shulker,
+ ItemKind::SilverfishSpawnEgg => EntityKind::Silverfish,
+ ItemKind::SkeletonHorseSpawnEgg => EntityKind::SkeletonHorse,
+ ItemKind::SkeletonSpawnEgg => EntityKind::Skeleton,
+ ItemKind::SlimeSpawnEgg => EntityKind::Slime,
+ ItemKind::SnifferSpawnEgg => EntityKind::Sniffer,
+ ItemKind::SnowGolemSpawnEgg => EntityKind::SnowGolem,
+ ItemKind::SpiderSpawnEgg => EntityKind::Spider,
+ ItemKind::SquidSpawnEgg => EntityKind::Squid,
+ ItemKind::StraySpawnEgg => EntityKind::Stray,
+ ItemKind::StriderSpawnEgg => EntityKind::Strider,
+ ItemKind::TadpoleSpawnEgg => EntityKind::Tadpole,
+ ItemKind::TraderLlamaSpawnEgg => EntityKind::TraderLlama,
+ ItemKind::TropicalFishSpawnEgg => EntityKind::TropicalFish,
+ ItemKind::TurtleSpawnEgg => EntityKind::Turtle,
+ ItemKind::VexSpawnEgg => EntityKind::Vex,
+ ItemKind::VillagerSpawnEgg => EntityKind::Villager,
+ ItemKind::VindicatorSpawnEgg => EntityKind::Vindicator,
+ ItemKind::WanderingTraderSpawnEgg => EntityKind::WanderingTrader,
+ ItemKind::WardenSpawnEgg => EntityKind::Warden,
+ ItemKind::WitchSpawnEgg => EntityKind::Witch,
+ ItemKind::WitherSkeletonSpawnEgg => EntityKind::WitherSkeleton,
+ ItemKind::WitherSpawnEgg => EntityKind::Wither,
+ ItemKind::WolfSpawnEgg => EntityKind::Wolf,
+ ItemKind::ZoglinSpawnEgg => EntityKind::Zoglin,
+ ItemKind::ZombieHorseSpawnEgg => EntityKind::ZombieHorse,
+ ItemKind::ZombieNautilusSpawnEgg => EntityKind::ZombieNautilus,
+ ItemKind::ZombieSpawnEgg => EntityKind::Zombie,
+ ItemKind::ZombieVillagerSpawnEgg => EntityKind::ZombieVillager,
+ ItemKind::ZombifiedPiglinSpawnEgg => EntityKind::ZombifiedPiglin,
+ _ => return None,
+ };
+ Some(EntityData {
+ kind: value,
+ data: NbtCompound::new(),
+ })
+ }
+}
+impl DefaultableComponent for JukeboxPlayable {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::MusicDisc11 => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDisc13 => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDisc5 => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscBlocks => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscCat => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscChirp => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscCreator => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscCreatorMusicBox => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscFar => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscLavaChicken => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscMall => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscMellohi => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscOtherside => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscPigstep => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscPrecipice => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscRelic => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscStal => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscStrad => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscTears => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscWait => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ ItemKind::MusicDiscWard => {
+ azalea_registry::Holder::Reference(azalea_registry::data::JukeboxSong::new_raw(0))
+ }
+ _ => return None,
+ };
+ Some(JukeboxPlayable { value: value })
}
}
impl DefaultableComponent for AttackRange {
@@ -5908,29 +5480,29 @@ impl DefaultableComponent for DamageType {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
ItemKind::CopperSpear => {
- DamageType::Registry(azalea_registry::data::DamageKind::new_raw(0))
+ azalea_registry::Holder::Reference(azalea_registry::data::DamageKind::new_raw(0))
}
ItemKind::DiamondSpear => {
- DamageType::Registry(azalea_registry::data::DamageKind::new_raw(0))
+ azalea_registry::Holder::Reference(azalea_registry::data::DamageKind::new_raw(0))
}
ItemKind::GoldenSpear => {
- DamageType::Registry(azalea_registry::data::DamageKind::new_raw(0))
+ azalea_registry::Holder::Reference(azalea_registry::data::DamageKind::new_raw(0))
}
ItemKind::IronSpear => {
- DamageType::Registry(azalea_registry::data::DamageKind::new_raw(0))
+ azalea_registry::Holder::Reference(azalea_registry::data::DamageKind::new_raw(0))
}
ItemKind::NetheriteSpear => {
- DamageType::Registry(azalea_registry::data::DamageKind::new_raw(0))
+ azalea_registry::Holder::Reference(azalea_registry::data::DamageKind::new_raw(0))
}
ItemKind::StoneSpear => {
- DamageType::Registry(azalea_registry::data::DamageKind::new_raw(0))
+ azalea_registry::Holder::Reference(azalea_registry::data::DamageKind::new_raw(0))
}
ItemKind::WoodenSpear => {
- DamageType::Registry(azalea_registry::data::DamageKind::new_raw(0))
+ azalea_registry::Holder::Reference(azalea_registry::data::DamageKind::new_raw(0))
}
_ => return None,
};
- Some(value)
+ Some(DamageType { value: value })
}
}
impl DefaultableComponent for KineticWeapon {
@@ -5946,7 +5518,7 @@ impl DefaultableComponent for KineticWeapon {
delay_ticks: 13,
dismount_conditions: Some(KineticWeaponCondition {
max_duration_ticks: 80,
- min_speed: 9.0,
+ min_speed: 12.0,
..KineticWeaponCondition::new()
}),
forward_movement: 0.38,
@@ -5969,7 +5541,7 @@ impl DefaultableComponent for KineticWeapon {
delay_ticks: 10,
dismount_conditions: Some(KineticWeaponCondition {
max_duration_ticks: 60,
- min_speed: 7.5,
+ min_speed: 10.0,
..KineticWeaponCondition::new()
}),
forward_movement: 0.38,
@@ -5992,7 +5564,7 @@ impl DefaultableComponent for KineticWeapon {
delay_ticks: 14,
dismount_conditions: Some(KineticWeaponCondition {
max_duration_ticks: 70,
- min_speed: 10.0,
+ min_speed: 13.0,
..KineticWeaponCondition::new()
}),
forward_movement: 0.38,
@@ -6015,7 +5587,7 @@ impl DefaultableComponent for KineticWeapon {
delay_ticks: 12,
dismount_conditions: Some(KineticWeaponCondition {
max_duration_ticks: 50,
- min_speed: 8.0,
+ min_speed: 11.0,
..KineticWeaponCondition::new()
}),
forward_movement: 0.38,
@@ -6038,7 +5610,7 @@ impl DefaultableComponent for KineticWeapon {
delay_ticks: 8,
dismount_conditions: Some(KineticWeaponCondition {
max_duration_ticks: 50,
- min_speed: 7.0,
+ min_speed: 9.0,
..KineticWeaponCondition::new()
}),
forward_movement: 0.38,
@@ -6061,7 +5633,7 @@ impl DefaultableComponent for KineticWeapon {
delay_ticks: 14,
dismount_conditions: Some(KineticWeaponCondition {
max_duration_ticks: 90,
- min_speed: 10.0,
+ min_speed: 13.0,
..KineticWeaponCondition::new()
}),
forward_movement: 0.38,
@@ -6180,22 +5752,426 @@ impl DefaultableComponent for PiercingWeapon {
Some(value)
}
}
-impl DefaultableComponent for ChargedProjectiles {
+impl DefaultableComponent for Weapon {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::Crossbow => vec![],
+ ItemKind::CopperAxe => Weapon {
+ disable_blocking_for_seconds: 5.0,
+ item_damage_per_attack: 2,
+ },
+ ItemKind::CopperHoe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::CopperPickaxe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::CopperShovel => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::CopperSpear => Weapon::new(),
+ ItemKind::CopperSword => Weapon::new(),
+ ItemKind::DiamondAxe => Weapon {
+ disable_blocking_for_seconds: 5.0,
+ item_damage_per_attack: 2,
+ },
+ ItemKind::DiamondHoe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::DiamondPickaxe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::DiamondShovel => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::DiamondSpear => Weapon::new(),
+ ItemKind::DiamondSword => Weapon::new(),
+ ItemKind::GoldenAxe => Weapon {
+ disable_blocking_for_seconds: 5.0,
+ item_damage_per_attack: 2,
+ },
+ ItemKind::GoldenHoe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::GoldenPickaxe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::GoldenShovel => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::GoldenSpear => Weapon::new(),
+ ItemKind::GoldenSword => Weapon::new(),
+ ItemKind::IronAxe => Weapon {
+ disable_blocking_for_seconds: 5.0,
+ item_damage_per_attack: 2,
+ },
+ ItemKind::IronHoe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::IronPickaxe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::IronShovel => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::IronSpear => Weapon::new(),
+ ItemKind::IronSword => Weapon::new(),
+ ItemKind::Mace => Weapon::new(),
+ ItemKind::NetheriteAxe => Weapon {
+ disable_blocking_for_seconds: 5.0,
+ item_damage_per_attack: 2,
+ },
+ ItemKind::NetheriteHoe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::NetheritePickaxe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::NetheriteShovel => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::NetheriteSpear => Weapon::new(),
+ ItemKind::NetheriteSword => Weapon::new(),
+ ItemKind::StoneAxe => Weapon {
+ disable_blocking_for_seconds: 5.0,
+ item_damage_per_attack: 2,
+ },
+ ItemKind::StoneHoe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::StonePickaxe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::StoneShovel => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::StoneSpear => Weapon::new(),
+ ItemKind::StoneSword => Weapon::new(),
+ ItemKind::Trident => Weapon::new(),
+ ItemKind::WoodenAxe => Weapon {
+ disable_blocking_for_seconds: 5.0,
+ item_damage_per_attack: 2,
+ },
+ ItemKind::WoodenHoe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::WoodenPickaxe => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::WoodenShovel => Weapon {
+ item_damage_per_attack: 2,
+ ..Weapon::new()
+ },
+ ItemKind::WoodenSpear => Weapon::new(),
+ ItemKind::WoodenSword => Weapon::new(),
_ => return None,
};
- Some(ChargedProjectiles { items: value })
+ Some(value)
}
}
-impl DefaultableComponent for DebugStickState {
+impl DefaultableComponent for Consumable {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::DebugStick => NbtCompound::from_values(vec![]),
+ ItemKind::Apple => Consumable::new(),
+ ItemKind::BakedPotato => Consumable::new(),
+ ItemKind::Beef => Consumable::new(),
+ ItemKind::Beetroot => Consumable::new(),
+ ItemKind::BeetrootSoup => Consumable::new(),
+ ItemKind::Bread => Consumable::new(),
+ ItemKind::Carrot => Consumable::new(),
+ ItemKind::Chicken => Consumable {
+ on_consume_effects: vec![ConsumeEffect::ApplyEffects {
+ effects: vec![MobEffectInstance {
+ id: MobEffect::Hunger,
+ details: MobEffectDetails {
+ duration: 600,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ }],
+ probability: 0.3,
+ }],
+ ..Consumable::new()
+ },
+ ItemKind::ChorusFruit => Consumable {
+ on_consume_effects: vec![ConsumeEffect::TeleportRandomly { diameter: 16.0 }],
+ ..Consumable::new()
+ },
+ ItemKind::Cod => Consumable::new(),
+ ItemKind::CookedBeef => Consumable::new(),
+ ItemKind::CookedChicken => Consumable::new(),
+ ItemKind::CookedCod => Consumable::new(),
+ ItemKind::CookedMutton => Consumable::new(),
+ ItemKind::CookedPorkchop => Consumable::new(),
+ ItemKind::CookedRabbit => Consumable::new(),
+ ItemKind::CookedSalmon => Consumable::new(),
+ ItemKind::Cookie => Consumable::new(),
+ ItemKind::DriedKelp => Consumable {
+ consume_seconds: 0.8,
+ ..Consumable::new()
+ },
+ ItemKind::EnchantedGoldenApple => Consumable {
+ on_consume_effects: vec![ConsumeEffect::ApplyEffects {
+ effects: vec![
+ MobEffectInstance {
+ id: MobEffect::Regeneration,
+ details: MobEffectDetails {
+ amplifier: 1,
+ duration: 400,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ MobEffectInstance {
+ id: MobEffect::Resistance,
+ details: MobEffectDetails {
+ duration: 6000,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ MobEffectInstance {
+ id: MobEffect::FireResistance,
+ details: MobEffectDetails {
+ duration: 6000,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ MobEffectInstance {
+ id: MobEffect::Absorption,
+ details: MobEffectDetails {
+ amplifier: 3,
+ duration: 2400,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ ],
+ probability: 1.0,
+ }],
+ ..Consumable::new()
+ },
+ ItemKind::GlowBerries => Consumable::new(),
+ ItemKind::GoldenApple => Consumable {
+ on_consume_effects: vec![ConsumeEffect::ApplyEffects {
+ effects: vec![
+ MobEffectInstance {
+ id: MobEffect::Regeneration,
+ details: MobEffectDetails {
+ amplifier: 1,
+ duration: 100,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ MobEffectInstance {
+ id: MobEffect::Absorption,
+ details: MobEffectDetails {
+ duration: 2400,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ ],
+ probability: 1.0,
+ }],
+ ..Consumable::new()
+ },
+ ItemKind::GoldenCarrot => Consumable::new(),
+ ItemKind::HoneyBottle => Consumable {
+ animation: ItemUseAnimation::Drink,
+ consume_seconds: 2.0,
+ has_consume_particles: false,
+ on_consume_effects: vec![ConsumeEffect::RemoveEffects {
+ effects: HolderSet::Direct {
+ contents: vec![MobEffect::Poison],
+ },
+ }],
+ sound: azalea_registry::Holder::Reference(SoundEvent::ItemHoneyBottleDrink),
+ },
+ ItemKind::MelonSlice => Consumable::new(),
+ ItemKind::MilkBucket => Consumable {
+ animation: ItemUseAnimation::Drink,
+ has_consume_particles: false,
+ on_consume_effects: vec![ConsumeEffect::ClearAllEffects {}],
+ sound: azalea_registry::Holder::Reference(SoundEvent::EntityGenericDrink),
+ ..Consumable::new()
+ },
+ ItemKind::MushroomStew => Consumable::new(),
+ ItemKind::Mutton => Consumable::new(),
+ ItemKind::OminousBottle => Consumable {
+ animation: ItemUseAnimation::Drink,
+ has_consume_particles: false,
+ on_consume_effects: vec![ConsumeEffect::PlaySound {
+ sound: SoundEvent::ItemOminousBottleDispose,
+ }],
+ sound: azalea_registry::Holder::Reference(SoundEvent::EntityGenericDrink),
+ ..Consumable::new()
+ },
+ ItemKind::PoisonousPotato => Consumable {
+ on_consume_effects: vec![ConsumeEffect::ApplyEffects {
+ effects: vec![MobEffectInstance {
+ id: MobEffect::Poison,
+ details: MobEffectDetails {
+ duration: 100,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ }],
+ probability: 0.6,
+ }],
+ ..Consumable::new()
+ },
+ ItemKind::Porkchop => Consumable::new(),
+ ItemKind::Potato => Consumable::new(),
+ ItemKind::Potion => Consumable {
+ animation: ItemUseAnimation::Drink,
+ has_consume_particles: false,
+ sound: azalea_registry::Holder::Reference(SoundEvent::EntityGenericDrink),
+ ..Consumable::new()
+ },
+ ItemKind::Pufferfish => Consumable {
+ on_consume_effects: vec![ConsumeEffect::ApplyEffects {
+ effects: vec![
+ MobEffectInstance {
+ id: MobEffect::Poison,
+ details: MobEffectDetails {
+ amplifier: 1,
+ duration: 1200,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ MobEffectInstance {
+ id: MobEffect::Hunger,
+ details: MobEffectDetails {
+ amplifier: 2,
+ duration: 300,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ MobEffectInstance {
+ id: MobEffect::Nausea,
+ details: MobEffectDetails {
+ duration: 300,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ ],
+ probability: 1.0,
+ }],
+ ..Consumable::new()
+ },
+ ItemKind::PumpkinPie => Consumable::new(),
+ ItemKind::Rabbit => Consumable::new(),
+ ItemKind::RabbitStew => Consumable::new(),
+ ItemKind::RottenFlesh => Consumable {
+ on_consume_effects: vec![ConsumeEffect::ApplyEffects {
+ effects: vec![MobEffectInstance {
+ id: MobEffect::Hunger,
+ details: MobEffectDetails {
+ duration: 600,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ }],
+ probability: 0.8,
+ }],
+ ..Consumable::new()
+ },
+ ItemKind::Salmon => Consumable::new(),
+ ItemKind::SpiderEye => Consumable {
+ on_consume_effects: vec![ConsumeEffect::ApplyEffects {
+ effects: vec![MobEffectInstance {
+ id: MobEffect::Poison,
+ details: MobEffectDetails {
+ duration: 100,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ }],
+ probability: 1.0,
+ }],
+ ..Consumable::new()
+ },
+ ItemKind::SuspiciousStew => Consumable::new(),
+ ItemKind::SweetBerries => Consumable::new(),
+ ItemKind::TropicalFish => Consumable::new(),
_ => return None,
};
- Some(DebugStickState { properties: value })
+ Some(value)
+ }
+}
+impl DefaultableComponent for BannerPatterns {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::BlackBanner => vec![],
+ ItemKind::BlueBanner => vec![],
+ ItemKind::BrownBanner => vec![],
+ ItemKind::CyanBanner => vec![],
+ ItemKind::GrayBanner => vec![],
+ ItemKind::GreenBanner => vec![],
+ ItemKind::LightBlueBanner => vec![],
+ ItemKind::LightGrayBanner => vec![],
+ ItemKind::LimeBanner => vec![],
+ ItemKind::MagentaBanner => vec![],
+ ItemKind::OrangeBanner => vec![],
+ ItemKind::PinkBanner => vec![],
+ ItemKind::PurpleBanner => vec![],
+ ItemKind::RedBanner => vec![],
+ ItemKind::Shield => vec![],
+ ItemKind::WhiteBanner => vec![],
+ ItemKind::YellowBanner => vec![],
+ _ => return None,
+ };
+ Some(BannerPatterns { patterns: value })
+ }
+}
+impl DefaultableComponent for BundleContents {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::BlackBundle => vec![],
+ ItemKind::BlueBundle => vec![],
+ ItemKind::BrownBundle => vec![],
+ ItemKind::Bundle => vec![],
+ ItemKind::CyanBundle => vec![],
+ ItemKind::GrayBundle => vec![],
+ ItemKind::GreenBundle => vec![],
+ ItemKind::LightBlueBundle => vec![],
+ ItemKind::LightGrayBundle => vec![],
+ ItemKind::LimeBundle => vec![],
+ ItemKind::MagentaBundle => vec![],
+ ItemKind::OrangeBundle => vec![],
+ ItemKind::PinkBundle => vec![],
+ ItemKind::PurpleBundle => vec![],
+ ItemKind::RedBundle => vec![],
+ ItemKind::WhiteBundle => vec![],
+ ItemKind::YellowBundle => vec![],
+ _ => return None,
+ };
+ Some(BundleContents { items: value })
}
}
impl DefaultableComponent for EnchantmentGlintOverride {
@@ -6213,156 +6189,235 @@ impl DefaultableComponent for EnchantmentGlintOverride {
Some(EnchantmentGlintOverride { show_glint: value })
}
}
-impl DefaultableComponent for PotDecorations {
+impl DefaultableComponent for ProvidesTrimMaterial {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::DecoratedPot => vec![
- ItemKind::Brick,
- ItemKind::Brick,
- ItemKind::Brick,
- ItemKind::Brick,
- ],
+ ItemKind::AmethystShard => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::CopperIngot => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::Diamond => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::Emerald => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::GoldIngot => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::IronIngot => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::LapisLazuli => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::NetheriteIngot => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::Quartz => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::Redstone => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
+ ItemKind::ResinBrick => {
+ azalea_registry::Holder::Reference(azalea_registry::data::TrimMaterial::new_raw(0))
+ }
_ => return None,
};
- Some(PotDecorations { items: value })
+ Some(ProvidesTrimMaterial { value: value })
}
}
-impl DefaultableComponent for Glider {
+impl DefaultableComponent for PotionContents {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::Elytra => Glider,
+ ItemKind::LingeringPotion => PotionContents::new(),
+ ItemKind::Potion => PotionContents::new(),
+ ItemKind::SplashPotion => PotionContents::new(),
+ ItemKind::TippedArrow => PotionContents::new(),
_ => return None,
};
Some(value)
}
}
-impl DefaultableComponent for StoredEnchantments {
+impl DefaultableComponent for UseRemainder {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::EnchantedBook => HashMap::from_iter([]),
+ ItemKind::BeetrootSoup => ItemStack::from(ItemKind::Bowl),
+ ItemKind::HoneyBottle => ItemStack::from(ItemKind::GlassBottle),
+ ItemKind::MilkBucket => ItemStack::from(ItemKind::Bucket),
+ ItemKind::MushroomStew => ItemStack::from(ItemKind::Bowl),
+ ItemKind::Potion => ItemStack::from(ItemKind::GlassBottle),
+ ItemKind::RabbitStew => ItemStack::from(ItemKind::Bowl),
+ ItemKind::SuspiciousStew => ItemStack::from(ItemKind::Bowl),
_ => return None,
};
- Some(StoredEnchantments {
- enchantments: value,
+ Some(UseRemainder {
+ convert_into: value,
})
}
}
-impl DefaultableComponent for MapColor {
+impl DefaultableComponent for PotionDurationScale {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::FilledMap => 4603950,
+ ItemKind::LingeringPotion => 0.25,
+ ItemKind::TippedArrow => 0.125,
_ => return None,
};
- Some(MapColor { color: value })
+ Some(PotionDurationScale { value: value })
}
}
-impl DefaultableComponent for MapDecorations {
+impl DefaultableComponent for ChargedProjectiles {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::FilledMap => NbtCompound::from_values(vec![]),
+ ItemKind::Crossbow => vec![],
_ => return None,
};
- Some(MapDecorations { decorations: value })
+ Some(ChargedProjectiles { items: value })
}
}
-impl DefaultableComponent for Fireworks {
+impl DefaultableComponent for DeathProtection {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::FireworkRocket => Fireworks {
- flight_duration: 1,
- ..Fireworks::new()
- },
+ ItemKind::TotemOfUndying => vec![
+ ConsumeEffect::ClearAllEffects {},
+ ConsumeEffect::ApplyEffects {
+ effects: vec![
+ MobEffectInstance {
+ id: MobEffect::Regeneration,
+ details: MobEffectDetails {
+ amplifier: 1,
+ duration: 900,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ MobEffectInstance {
+ id: MobEffect::Absorption,
+ details: MobEffectDetails {
+ amplifier: 1,
+ duration: 100,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ MobEffectInstance {
+ id: MobEffect::FireResistance,
+ details: MobEffectDetails {
+ duration: 800,
+ show_icon: true,
+ ..MobEffectDetails::new()
+ },
+ },
+ ],
+ probability: 1.0,
+ },
+ ],
_ => return None,
};
- Some(value)
+ Some(DeathProtection {
+ death_effects: value,
+ })
}
}
-impl DefaultableComponent for Instrument {
+impl DefaultableComponent for OminousBottleAmplifier {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::GoatHorn => {
- Instrument::Registry(azalea_registry::data::Instrument::new_raw(0))
- }
+ ItemKind::OminousBottle => 0,
_ => return None,
};
- Some(value)
+ Some(OminousBottleAmplifier { amplifier: value })
}
}
-impl DefaultableComponent for Recipes {
+impl DefaultableComponent for ProvidesBannerPatterns {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::KnowledgeBook => vec![],
+ ItemKind::BordureIndentedBannerPattern => HolderSet::Direct { contents: vec![] },
+ ItemKind::CreeperBannerPattern => HolderSet::Direct { contents: vec![] },
+ ItemKind::FieldMasonedBannerPattern => HolderSet::Direct { contents: vec![] },
+ ItemKind::FlowBannerPattern => HolderSet::Direct { contents: vec![] },
+ ItemKind::FlowerBannerPattern => HolderSet::Direct { contents: vec![] },
+ ItemKind::GlobeBannerPattern => HolderSet::Direct { contents: vec![] },
+ ItemKind::GusterBannerPattern => HolderSet::Direct { contents: vec![] },
+ ItemKind::MojangBannerPattern => HolderSet::Direct { contents: vec![] },
+ ItemKind::PiglinBannerPattern => HolderSet::Direct { contents: vec![] },
+ ItemKind::SkullBannerPattern => HolderSet::Direct { contents: vec![] },
_ => return None,
};
- Some(Recipes { recipes: value })
+ Some(ProvidesBannerPatterns { key: value })
}
}
-impl DefaultableComponent for PotionContents {
+impl DefaultableComponent for Bees {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::LingeringPotion => PotionContents::new(),
- ItemKind::Potion => PotionContents::new(),
- ItemKind::SplashPotion => PotionContents::new(),
- ItemKind::TippedArrow => PotionContents::new(),
+ ItemKind::BeeNest => vec![],
+ ItemKind::Beehive => vec![],
_ => return None,
};
- Some(value)
+ Some(Bees { occupants: value })
}
}
-impl DefaultableComponent for PotionDurationScale {
+impl DefaultableComponent for UseCooldown {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::LingeringPotion => 0.25,
- ItemKind::TippedArrow => 0.125,
+ ItemKind::ChorusFruit => UseCooldown {
+ seconds: 1.0,
+ ..UseCooldown::new()
+ },
+ ItemKind::EnderPearl => UseCooldown {
+ seconds: 1.0,
+ ..UseCooldown::new()
+ },
+ ItemKind::WindCharge => UseCooldown {
+ seconds: 0.5,
+ ..UseCooldown::new()
+ },
_ => return None,
};
- Some(PotionDurationScale { value: value })
+ Some(value)
}
}
-impl DefaultableComponent for JukeboxPlayable {
+impl DefaultableComponent for Fireworks {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::MusicDisc11 => JukeboxPlayable::Referenced("minecraft:11".into()),
- ItemKind::MusicDisc13 => JukeboxPlayable::Referenced("minecraft:13".into()),
- ItemKind::MusicDisc5 => JukeboxPlayable::Referenced("minecraft:5".into()),
- ItemKind::MusicDiscBlocks => JukeboxPlayable::Referenced("minecraft:blocks".into()),
- ItemKind::MusicDiscCat => JukeboxPlayable::Referenced("minecraft:cat".into()),
- ItemKind::MusicDiscChirp => JukeboxPlayable::Referenced("minecraft:chirp".into()),
- ItemKind::MusicDiscCreator => JukeboxPlayable::Referenced("minecraft:creator".into()),
- ItemKind::MusicDiscCreatorMusicBox => {
- JukeboxPlayable::Referenced("minecraft:creator_music_box".into())
- }
- ItemKind::MusicDiscFar => JukeboxPlayable::Referenced("minecraft:far".into()),
- ItemKind::MusicDiscLavaChicken => {
- JukeboxPlayable::Referenced("minecraft:lava_chicken".into())
- }
- ItemKind::MusicDiscMall => JukeboxPlayable::Referenced("minecraft:mall".into()),
- ItemKind::MusicDiscMellohi => JukeboxPlayable::Referenced("minecraft:mellohi".into()),
- ItemKind::MusicDiscOtherside => {
- JukeboxPlayable::Referenced("minecraft:otherside".into())
- }
- ItemKind::MusicDiscPigstep => JukeboxPlayable::Referenced("minecraft:pigstep".into()),
- ItemKind::MusicDiscPrecipice => {
- JukeboxPlayable::Referenced("minecraft:precipice".into())
- }
- ItemKind::MusicDiscRelic => JukeboxPlayable::Referenced("minecraft:relic".into()),
- ItemKind::MusicDiscStal => JukeboxPlayable::Referenced("minecraft:stal".into()),
- ItemKind::MusicDiscStrad => JukeboxPlayable::Referenced("minecraft:strad".into()),
- ItemKind::MusicDiscTears => JukeboxPlayable::Referenced("minecraft:tears".into()),
- ItemKind::MusicDiscWait => JukeboxPlayable::Referenced("minecraft:wait".into()),
- ItemKind::MusicDiscWard => JukeboxPlayable::Referenced("minecraft:ward".into()),
+ ItemKind::FireworkRocket => Fireworks {
+ flight_duration: 1,
+ ..Fireworks::new()
+ },
_ => return None,
};
Some(value)
}
}
-impl DefaultableComponent for OminousBottleAmplifier {
+impl DefaultableComponent for WritableBookContent {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::OminousBottle => 0,
+ ItemKind::WritableBook => Vec::new(),
_ => return None,
};
- Some(OminousBottleAmplifier { amplifier: value })
+ Some(WritableBookContent { pages: value })
+ }
+}
+impl DefaultableComponent for SuspiciousStewEffects {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::SuspiciousStew => vec![],
+ _ => return None,
+ };
+ Some(SuspiciousStewEffects { effects: value })
+ }
+}
+impl DefaultableComponent for ChickenVariant {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::BlueEgg => azalea_registry::data::ChickenVariant::new_raw(0),
+ ItemKind::BrownEgg => azalea_registry::data::ChickenVariant::new_raw(0),
+ ItemKind::Egg => azalea_registry::data::ChickenVariant::new_raw(0),
+ _ => return None,
+ };
+ Some(ChickenVariant { data: value })
}
}
impl DefaultableComponent for BlocksAttacks {
@@ -6373,7 +6428,7 @@ impl DefaultableComponent for BlocksAttacks {
block_sound: Some(azalea_registry::Holder::Reference(
SoundEvent::ItemShieldBlock,
)),
- bypassed_by: Some("#minecraft:bypasses_shield".into()),
+ bypassed_by: Some(HolderSet::Direct { contents: vec![] }),
disabled_sound: Some(azalea_registry::Holder::Reference(
SoundEvent::ItemShieldBreak,
)),
@@ -6389,65 +6444,84 @@ impl DefaultableComponent for BlocksAttacks {
Some(value)
}
}
-impl DefaultableComponent for SuspiciousStewEffects {
+impl DefaultableComponent for DebugStickState {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::SuspiciousStew => vec![],
+ ItemKind::DebugStick => NbtCompound::from_values(vec![]),
_ => return None,
};
- Some(SuspiciousStewEffects { effects: value })
+ Some(DebugStickState { properties: value })
}
}
-impl DefaultableComponent for DeathProtection {
+impl DefaultableComponent for PotDecorations {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::TotemOfUndying => vec![
- ConsumeEffect::ClearAllEffects {},
- ConsumeEffect::ApplyEffects {
- effects: vec![
- MobEffectInstance {
- id: MobEffect::Regeneration,
- details: MobEffectDetails {
- amplifier: 1,
- duration: 900,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- MobEffectInstance {
- id: MobEffect::Absorption,
- details: MobEffectDetails {
- amplifier: 1,
- duration: 100,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- MobEffectInstance {
- id: MobEffect::FireResistance,
- details: MobEffectDetails {
- duration: 800,
- show_icon: true,
- ..MobEffectDetails::new()
- },
- },
- ],
- probability: 1.0,
- },
+ ItemKind::DecoratedPot => vec![
+ ItemKind::Brick,
+ ItemKind::Brick,
+ ItemKind::Brick,
+ ItemKind::Brick,
],
_ => return None,
};
- Some(DeathProtection {
- death_effects: value,
+ Some(PotDecorations { items: value })
+ }
+}
+impl DefaultableComponent for StoredEnchantments {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::EnchantedBook => HashMap::from_iter([]),
+ _ => return None,
+ };
+ Some(StoredEnchantments {
+ enchantments: value,
})
}
}
-impl DefaultableComponent for WritableBookContent {
+impl DefaultableComponent for MapColor {
fn default_for_item(item: ItemKind) -> Option<Self> {
let value = match item {
- ItemKind::WritableBook => Vec::new(),
+ ItemKind::FilledMap => 4603950,
_ => return None,
};
- Some(WritableBookContent { pages: value })
+ Some(MapColor { color: value })
+ }
+}
+impl DefaultableComponent for MapDecorations {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::FilledMap => NbtCompound::from_values(vec![]),
+ _ => return None,
+ };
+ Some(MapDecorations { decorations: value })
+ }
+}
+impl DefaultableComponent for Glider {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::Elytra => Glider,
+ _ => return None,
+ };
+ Some(value)
+ }
+}
+impl DefaultableComponent for Recipes {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::KnowledgeBook => vec![],
+ _ => return None,
+ };
+ Some(Recipes { recipes: value })
+ }
+}
+impl DefaultableComponent for Instrument {
+ fn default_for_item(item: ItemKind) -> Option<Self> {
+ let value = match item {
+ ItemKind::GoatHorn => {
+ azalea_registry::Holder::Reference(azalea_registry::data::Instrument::new_raw(0))
+ }
+ _ => return None,
+ };
+ Some(Instrument { value: value })
}
}
diff --git a/azalea-inventory/src/slot.rs b/azalea-inventory/src/slot.rs
index c06ac71a..d0d41d75 100644
--- a/azalea-inventory/src/slot.rs
+++ b/azalea-inventory/src/slot.rs
@@ -3,6 +3,7 @@ use std::{
borrow::Cow,
fmt::{self, Debug},
io::{self, Cursor, Write},
+ sync::LazyLock,
};
use azalea_buf::{AzBuf, AzBufVar, BufReadError};
@@ -111,6 +112,11 @@ impl ItemStack {
}
}
+ pub fn component_patch(&self) -> &DataComponentPatch {
+ self.as_present()
+ .map_or_else(|| &*EMPTY_DATA_COMPONENT_PATCH, |i| &i.component_patch)
+ }
+
/// Get the value of a data component for this item.
///
/// This is used for things like getting the damage of an item, or seeing
@@ -283,6 +289,9 @@ pub struct DataComponentPatch {
components: Box<IndexMap<DataComponentKind, Option<DataComponentUnion>>>,
}
+static EMPTY_DATA_COMPONENT_PATCH: LazyLock<DataComponentPatch> =
+ LazyLock::new(DataComponentPatch::default);
+
impl DataComponentPatch {
/// Returns the value of the component in the generic argument for this
/// item.
diff --git a/azalea-language/src/en_us.json b/azalea-language/src/en_us.json
index 04b3fc47..5a89301e 100644
--- a/azalea-language/src/en_us.json
+++ b/azalea-language/src/en_us.json
@@ -1673,6 +1673,7 @@
"block.minecraft.glowstone": "Glowstone",
"block.minecraft.gold_block": "Block of Gold",
"block.minecraft.gold_ore": "Gold Ore",
+ "block.minecraft.golden_dandelion": "Golden Dandelion",
"block.minecraft.granite": "Granite",
"block.minecraft.granite_slab": "Granite Slab",
"block.minecraft.granite_stairs": "Granite Stairs",
@@ -2036,6 +2037,7 @@
"block.minecraft.potted_dead_bush": "Potted Dead Bush",
"block.minecraft.potted_fern": "Potted Fern",
"block.minecraft.potted_flowering_azalea_bush": "Potted Flowering Azalea",
+ "block.minecraft.potted_golden_dandelion": "Potted Golden Dandelion",
"block.minecraft.potted_jungle_sapling": "Potted Jungle Sapling",
"block.minecraft.potted_lily_of_the_valley": "Potted Lily of the Valley",
"block.minecraft.potted_mangrove_propagule": "Potted Mangrove Propagule",
@@ -2436,8 +2438,20 @@
"book.sign.titlebox": "Title",
"book.signButton": "Sign",
"book.view.title": "Book View Screen",
+ "build.spawn_protection": "%s is under spawn protection",
"build.tooHigh": "Height limit for building is %s",
+ "build.tooLow": "Minimum height for building is %s",
+ "chat_restriction.chat_and_commands_disabled_by_options": "Chat is restricted in client settings.",
+ "chat_restriction.chat_disabled_by_options": "Player chat is restricted in client settings.",
+ "chat_restriction.chat_disabled_by_options.action": "Go to the Chat Settings screen",
+ "chat_restriction.disabled_by_launcher": "Chat is restricted by the launcher",
+ "chat_restriction.disabled_by_profile": "Chat is restricted by profile settings.",
+ "chat_restriction.disabled_by_profile.action": "Go to your profile settings",
+ "chat_screen.commands_not_allowed": "Sending commands is not allowed",
"chat_screen.message": "Message to send: %s",
+ "chat_screen.messages_not_allowed": "Sending chat messages is not allowed",
+ "chat_screen.restricted": "Chat is restricted. Click this message for details.",
+ "chat_screen.restricted.narration": "Chat is restricted. Go to the Restrictions screen in World Options.",
"chat_screen.title": "Chat screen",
"chat_screen.usage": "Input message and press Enter to send",
"chat.cannotSend": "Cannot send chat message",
@@ -2512,6 +2526,7 @@
"command.expected.separator": "Expected whitespace to end one argument, but found trailing data",
"command.failed": "An unexpected error occurred trying to execute that command",
"command.forkLimit": "Maximum number of contexts (%s) reached",
+ "command.trailing_data": "Trailing data found: %s",
"command.unknown.argument": "Incorrect argument for command",
"command.unknown.command": "Unknown or incomplete command. See below for error",
"commands.advancement.criterionNotFound": "The advancement %1$s does not contain the criterion '%2$s'",
@@ -2697,12 +2712,14 @@
"commands.experience.set.points.success.single": "Set %s experience points on %s",
"commands.fetchprofile.copy_component": "Copy Component",
"commands.fetchprofile.copy_text": "Copy %s",
+ "commands.fetchprofile.entity.success": "Resolved profile for entity %s: %s",
"commands.fetchprofile.failed_to_serialize": "Failed to serialize profile: %s",
"commands.fetchprofile.give_item": "Give Item",
"commands.fetchprofile.id.failure": "Failed to resolve profile for ID %s",
"commands.fetchprofile.id.success": "Resolved profile for ID %s: %s",
"commands.fetchprofile.name.failure": "Failed to resolve profile for name %s",
"commands.fetchprofile.name.success": "Resolved profile for name %s: %s",
+ "commands.fetchprofile.no_profile": "Entity %s has no profile",
"commands.fetchprofile.summon_mannequin": "Summon Mannequin",
"commands.fill.failed": "No blocks were filled",
"commands.fill.success": "Successfully filled %s block(s)",
@@ -2934,6 +2951,9 @@
"commands.summon.failed.uuid": "Unable to summon entity due to duplicate UUIDs",
"commands.summon.invalidPosition": "Invalid position for summon",
"commands.summon.success": "Summoned new %s",
+ "commands.swing.failed.notliving": "No living entities were found to swing",
+ "commands.swing.success.multiple": "Made %s entities swing their arms",
+ "commands.swing.success.single": "Made %s swing an arm",
"commands.tag.add.failed": "Target either already has the tag or has too many tags",
"commands.tag.add.success.multiple": "Added tag '%s' to %s entities",
"commands.tag.add.success.single": "Added tag '%s' to %s",
@@ -3024,8 +3044,20 @@
"commands.tick.step.stop.fail": "No tick step in progress",
"commands.tick.step.stop.success": "Interrupted the current tick step",
"commands.tick.step.success": "Stepping %s tick(s)",
+ "commands.time.no_default_clock": "There is no default clock in dimension %s",
+ "commands.time.no_time_marker_found": "Time marker %s does not exist for clock %s",
+ "commands.time.pause": "Paused clock %s",
"commands.time.query": "The time is %s",
+ "commands.time.query.absolute": "Clock %s is at %s tick(s)",
+ "commands.time.query.gametime": "The game time is %s tick(s)",
+ "commands.time.query.timeline": "Timeline %s is at %s tick(s)",
+ "commands.time.query.timeline.repetitions": "Timeline %s has passed %s repetition(s)",
+ "commands.time.rate": "Clock %s will now advance at %sx normal rate",
+ "commands.time.resume": "Resumed clock %s",
"commands.time.set": "Set the time to %s",
+ "commands.time.set.absolute": "Set %s to %s tick(s)",
+ "commands.time.set.time_marker": "Set %s to time marker %s",
+ "commands.time.wrong_timeline_for_clock": "Timeline %s is not valid for clock %s",
"commands.title.cleared.multiple": "Cleared titles for %s players",
"commands.title.cleared.single": "Cleared titles for %s",
"commands.title.reset.multiple": "Reset title options for %s players",
@@ -3420,6 +3452,11 @@
"download.pack.progress.percent": "Progress: %s%%",
"download.pack.title": "Downloading resource pack %s/%s",
"editGamerule.default": "Default: %s",
+ "editGamerule.inGame.button": "Edit Game Rules...",
+ "editGamerule.inGame.disabled.tooltip": "Updating game rules requires operator permissions.",
+ "editGamerule.inGame.discardChanges.message": "Are you sure you want to discard your pending game rule changes?",
+ "editGamerule.inGame.discardChanges.title": "Game rule Changes",
+ "editGamerule.inGame.downloadingGamerules": "Retrieving game rules...",
"editGamerule.title": "Edit Game Rules",
"effect.duration.infinite": "\u221e",
"effect.minecraft.absorption": "Absorption",
@@ -3841,6 +3878,7 @@
"gamerule.minecraft.fire_spread_radius_around_player.description": "The radius in blocks around a player in which fire can spread",
"gamerule.minecraft.player_movement_check": "Do player movement check",
"gamerule.minecraft.raids": "Do raids",
+ "gamerule.minecraft.universal_anger.description": "Angered neutral mobs attack any nearby player, not just the player that angered them. Works best if forgive_dead_players is disabled.",
"gamerule.mobExplosionDropDecay": "In mob explosions, some blocks won't drop their loot",
"gamerule.mobExplosionDropDecay.description": "Some of the drops from blocks destroyed by explosions caused by mobs are lost in the explosion.",
"gamerule.mobGriefing": "Allow destructive mob actions",
@@ -4028,6 +4066,7 @@
"gui.experience.level": "%s",
"gui.fileDropFailure.detail": "Rejected %s files",
"gui.fileDropFailure.title": "Failed to add files",
+ "gui.game_rule.search": "Search...",
"gui.hours": "%s hour(s)",
"gui.language.search": "Search...",
"gui.loadingMinecraft": "Loading Minecraft",
@@ -4081,6 +4120,7 @@
"gui.socialInteractions.title": "Social Interactions",
"gui.socialInteractions.tooltip.hide": "Hide messages",
"gui.socialInteractions.tooltip.report": "Report player",
+ "gui.socialInteractions.tooltip.report.chat_disabled_or_blocked": "This player can't be reported because chat is disabled or blocked",
"gui.socialInteractions.tooltip.report.disabled": "The reporting service is unavailable",
"gui.socialInteractions.tooltip.report.no_messages": "No reportable messages from player %s",
"gui.socialInteractions.tooltip.report.not_reportable": "This player can't be reported, because their chat messages can't be verified on this server",
@@ -4971,6 +5011,7 @@
"key.debug.dumpVersion": "Dump Version Info",
"key.debug.focusPause": "Toggle Lost Focus Pause",
"key.debug.fpsCharts": "FPS Charts",
+ "key.debug.lightmapTexture": "Lightmap Texture",
"key.debug.modifier": "Debug Modifier Key",
"key.debug.networkCharts": "Network Charts",
"key.debug.overlay": "Toggle Overlay",
@@ -5866,6 +5907,8 @@
"options.discrete_mouse_scroll": "Discrete Scrolling",
"options.entityDistanceScaling": "Entity Distance",
"options.entityShadows": "Entity Shadows",
+ "options.exclusiveFullscreen": "Exclusive Fullscreen",
+ "options.exclusiveFullscreen.warningTooltip": "This option might prevent some input methods from working.",
"options.font": "Font Settings...",
"options.font.title": "Font Settings",
"options.forceUnicodeFont": "Force Unicode Font",
@@ -5971,6 +6014,7 @@
"options.narrator.notavailable": "Not Available",
"options.narrator.off": "OFF",
"options.narrator.system": "Narrates System",
+ "options.needsRestart": "Option will be applied after restart.",
"options.notifications.display_time": "Notification Time",
"options.notifications.display_time.tooltip": "Affects the length of time that all notifications stay visible on the screen.",
"options.off": "OFF",
@@ -6052,6 +6096,8 @@
"options.vsync": "VSync",
"options.weatherRadius": "Weather Effect Radius",
"options.weatherRadius.tooltip": "Radius of the area where rain and snow effects are visible. Very low performance impact.",
+ "options.worldOptions.button": "World Options...",
+ "options.worldOptions.title": "World Options",
"outOfMemory.message": "Minecraft has run out of memory.\n\nThis could be caused by a bug in the game or by the Java Virtual Machine not being allocated enough memory.\n\nTo prevent world corruption, the current game has quit. We've tried to free up enough memory to let you go back to the main menu and back to playing, but this may not have worked.\n\nPlease restart the game if you see this message again.",
"outOfMemory.title": "Out of memory!",
"pack.available.title": "Available",
@@ -6270,8 +6316,19 @@
"resourcePack.title": "Select Resource Packs",
"resourcePack.vanilla.description": "The default look and feel of Minecraft",
"resourcePack.vanilla.name": "Default",
+ "restrictions_screen.button": "Restrictions...",
+ "restrictions_screen.permission.receive_player_messages.allowed": "You can receive messages from players",
+ "restrictions_screen.permission.receive_player_messages.denied": "You can't receive messages from players",
+ "restrictions_screen.permission.receive_system_messages.allowed": "You can receive system messages from the server",
+ "restrictions_screen.permission.receive_system_messages.denied": "You can't receive system messages from the server",
+ "restrictions_screen.permission.send_commands.allowed": "You can send commands",
+ "restrictions_screen.permission.send_commands.denied": "You can't send commands",
+ "restrictions_screen.permission.send_messages.allowed": "You can send chat messages",
+ "restrictions_screen.permission.send_messages.denied": "You can't send chat messages",
+ "restrictions_screen.title": "Restrictions",
"screenshot.failure": "Couldn't save screenshot: %s",
"screenshot.success": "Saved screenshot as %s",
+ "selecteWorld.backupRequiredTooltip": "Loading the world requires taking a backup first",
"selectServer.add": "Add Server",
"selectServer.defaultName": "Minecraft Server",
"selectServer.delete": "Delete",
@@ -6293,11 +6350,13 @@
"selectWorld.backupQuestion.customized": "Customized worlds are no longer supported",
"selectWorld.backupQuestion.downgrade": "Downgrading a world is not supported",
"selectWorld.backupQuestion.experimental": "Worlds using Experimental Settings are not supported",
+ "selectWorld.backupQuestion.file_fixing_required": "Create a backup before upgrading this world?",
"selectWorld.backupQuestion.snapshot": "Do you really want to load this world?",
"selectWorld.backupWarning.customized": "Unfortunately, we do not support customized worlds in this version of Minecraft. We can still load this world and keep everything the way it was, but any newly generated terrain will no longer be customized. We're sorry for the inconvenience!",
"selectWorld.backupWarning.downgrade": "This world was last played in version %s; you are on version %s. Downgrading a world could cause corruption - we cannot guarantee that it will load or work. If you still want to continue, please make a backup.",
"selectWorld.backupWarning.experimental": "This world uses experimental settings that could stop working at any time. We cannot guarantee it will load or work. Here be dragons!",
- "selectWorld.backupWarning.snapshot": "This world was last played in version %s; you are on version %s. Please make a backup in case you experience world corruptions.",
+ "selectWorld.backupWarning.file_fixing_required": "This world needs to be upgraded before you can play it. We strongly suggest creating a backup before continuing in case you experience world corruption.",
+ "selectWorld.backupWarning.snapshot": "This world was last played in version %s; you are on version %s. Please make a backup in case you experience world corruption.",
"selectWorld.bonusItems": "Bonus Chest",
"selectWorld.cheats": "Cheats",
"selectWorld.commands": "Commands",
@@ -6382,6 +6441,9 @@
"selectWorld.recreate.customized.title": "Customized worlds are no longer supported",
"selectWorld.recreate.error.text": "Something went wrong while trying to recreate a world.",
"selectWorld.recreate.error.title": "An error occurred!",
+ "selectWorld.requiresFileFixingTooltip.edit": "This world needs to be upgraded to the latest version before you can edit it due to underlying changes to the world format.",
+ "selectWorld.requiresFileFixingTooltip.play": "This world needs to be upgraded to the latest version before you can play it due to underlying changes to the world format.",
+ "selectWorld.requiresFileFixingTooltip.recreate": "This world needs to be upgraded to the latest version before you can recreate it due to underlying changes to the world format.",
"selectWorld.resource_load": "Preparing Resources...",
"selectWorld.resultFolder": "Will be saved in:",
"selectWorld.search": "search for worlds",
@@ -6394,11 +6456,14 @@
"selectWorld.tooltip.snapshot1": "Don't forget to back up this world",
"selectWorld.tooltip.snapshot2": "before you load it in this snapshot.",
"selectWorld.unable_to_load": "Unable to load worlds",
+ "selectWorld.upgrade_and_play": "Upgrade and Play",
"selectWorld.version": "Version:",
"selectWorld.versionJoinButton": "Load Anyway",
"selectWorld.versionQuestion": "Do you really want to load this world?",
"selectWorld.versionUnknown": "unknown",
"selectWorld.versionWarning": "This world was last played in version %s and loading it in this version could cause corruption!",
+ "selectWorld.waitingForBackup.message": "Depending on the size of your world, this may take a while. Please do not close the game or shut off your device.",
+ "selectWorld.waitingForBackup.title": "Creating Backup",
"selectWorld.warning.deprecated.question": "Some features used are deprecated and will stop working in the future. Do you wish to proceed?",
"selectWorld.warning.deprecated.title": "Warning! These settings are using deprecated features",
"selectWorld.warning.experimental.question": "These settings are experimental and could one day stop working. Do you wish to proceed?",
@@ -6406,6 +6471,7 @@
"selectWorld.warning.lowDiskSpace.description": "There is not much space left on your device.\nRunning out of disk space while in game can lead to your world being damaged.",
"selectWorld.warning.lowDiskSpace.title": "Warning! Low disk space!",
"selectWorld.world": "World",
+ "selectWorld.world_gen_settings_access": "Unable to read or access the world gen settings file! %s",
"sign.edit": "Edit Sign Message",
"sleep.not_possible": "No amount of rest can pass this night",
"sleep.players_sleeping": "%s/%s players sleeping",
@@ -6787,6 +6853,23 @@
"subtitles.entity.axolotl.idle_water": "Axolotl chirps",
"subtitles.entity.axolotl.splash": "Axolotl splashes",
"subtitles.entity.axolotl.swim": "Axolotl swims",
+ "subtitles.entity.baby_cat.ambient": "Kitten meows",
+ "subtitles.entity.baby_cat.beg_for_food": "Kitten begs",
+ "subtitles.entity.baby_cat.death": "Kitten dies",
+ "subtitles.entity.baby_cat.eat": "Kitten eats",
+ "subtitles.entity.baby_cat.hiss": "Kitten hisses",
+ "subtitles.entity.baby_cat.hurt": "Kitten hurts",
+ "subtitles.entity.baby_cat.purr": "Kitten purrs",
+ "subtitles.entity.baby_chicken.ambient": "Chick peeps",
+ "subtitles.entity.baby_chicken.death": "Chick dies",
+ "subtitles.entity.baby_chicken.hurts": "Chick hurts",
+ "subtitles.entity.baby_horse.ambient": "Foal neighs",
+ "subtitles.entity.baby_horse.angry": "Foal neighs",
+ "subtitles.entity.baby_horse.breathe": "Foal breathes",
+ "subtitles.entity.baby_horse.death": "Foal dies",
+ "subtitles.entity.baby_horse.eat": "Foal eats",
+ "subtitles.entity.baby_horse.hurt": "Foal hurts",
+ "subtitles.entity.baby_horse.land": "Foal lands",
"subtitles.entity.baby_nautilus.ambient": "Baby Nautilus chitters",
"subtitles.entity.baby_nautilus.ambient_land": "Baby Nautilus chitters",
"subtitles.entity.baby_nautilus.death": "Baby Nautilus dies",
@@ -6795,6 +6878,16 @@
"subtitles.entity.baby_nautilus.hurt": "Baby Nautilus hurts",
"subtitles.entity.baby_nautilus.hurt_land": "Baby Nautilus hurts",
"subtitles.entity.baby_nautilus.swim": "Baby Nautilus swims",
+ "subtitles.entity.baby_pig.ambient": "Baby Pig oinks",
+ "subtitles.entity.baby_pig.death": "Baby Pig dies",
+ "subtitles.entity.baby_pig.eat": "Baby Pig eats",
+ "subtitles.entity.baby_pig.hurt": "Baby Pig hurts",
+ "subtitles.entity.baby_wolf.ambient": "Puppy yips",
+ "subtitles.entity.baby_wolf.death": "Puppy dies",
+ "subtitles.entity.baby_wolf.growl": "Puppy growls",
+ "subtitles.entity.baby_wolf.hurt": "Puppy hurts",
+ "subtitles.entity.baby_wolf.pant": "Puppy pants",
+ "subtitles.entity.baby_wolf.whine": "Puppy whines",
"subtitles.entity.bat.ambient": "Bat screeches",
"subtitles.entity.bat.death": "Bat dies",
"subtitles.entity.bat.hurt": "Bat hurts",
@@ -7183,6 +7276,7 @@
"subtitles.entity.phantom.swoop": "Phantom swoops",
"subtitles.entity.pig.ambient": "Pig oinks",
"subtitles.entity.pig.death": "Pig dies",
+ "subtitles.entity.pig.eat": "Pig eats",
"subtitles.entity.pig.hurt": "Pig hurts",
"subtitles.entity.pig.saddle": "Saddle equips",
"subtitles.entity.piglin_brute.ambient": "Piglin Brute snorts",
@@ -7503,6 +7597,8 @@
"subtitles.item.flintandsteel.use": "Flint and Steel click",
"subtitles.item.glow_ink_sac.use": "Glow Ink Sac splotches",
"subtitles.item.goat_horn.play": "Goat Horn plays",
+ "subtitles.item.golden_dandelion.unuse": "Golden Dandelion starts aging",
+ "subtitles.item.golden_dandelion.use": "Golden Dandelion halts aging",
"subtitles.item.hoe.till": "Hoe tills",
"subtitles.item.honey_bottle.drink": "Gulping",
"subtitles.item.honeycomb.wax_on": "Wax on",
@@ -7660,6 +7756,7 @@
"test.error.entity_property": "Entity %s failed test: %s",
"test.error.entity_property_details": "Entity %s failed test: %s. Expected %s: was %s",
"test.error.expected_block": "Expected block %s: got %s",
+ "test.error.expected_block_present": "Expected block %s to be present",
"test.error.expected_block_tag": "Expected block in #%s: got %s",
"test.error.expected_container_contents": "Container should contain: %s",
"test.error.expected_container_contents_single": "Container should contain a single: %s",
@@ -7680,10 +7777,12 @@
"test.error.fail": "Fail conditions met",
"test.error.invalid_block_type": "Unexpected block type found: %s",
"test.error.missing_block_entity": "Missing block entity",
+ "test.error.not_a_block_item": "Given block is not a block item",
"test.error.position": "%s at %s, %s, %s (relative: %s, %s, %s) on tick %s",
"test.error.sequence.condition_already_triggered": "Condition already triggered at %s",
"test.error.sequence.condition_not_triggered": "Condition not triggered",
"test.error.sequence.invalid_tick": "Succeeded in invalid tick: expected %s",
+ "test.error.sequence.minimum_tick": "Succeeded before expected tick: expected to wait %s",
"test.error.sequence.not_completed": "Test timed out before sequence completed",
"test.error.set_biome": "Failed to set biome for test",
"test.error.spawn_failure": "Failed to create entity %s",
@@ -7765,5 +7864,25 @@
"tutorial.punch_tree.title": "Destroy the tree",
"tutorial.socialInteractions.description": "Press %s to open",
"tutorial.socialInteractions.title": "Social Interactions",
- "upgrade.minecraft.netherite_upgrade": "Netherite Upgrade"
+ "upgrade.minecraft.netherite_upgrade": "Netherite Upgrade",
+ "upgradeWorld.aborted.message": "This may happen if another program accessed the world during the upgrade.\nIt may help to restart your computer and try again. If the issue persists, please consider reporting a bug.",
+ "upgradeWorld.aborted.reportBug": "Report a Bug",
+ "upgradeWorld.aborted.title": "Failed to upgrade the world",
+ "upgradeWorld.canceled.message": "Your world remains as it was before.",
+ "upgradeWorld.canceled.title": "World upgrade canceled",
+ "upgradeWorld.done": "Upgrading World Completed",
+ "upgradeWorld.failed_cleanup.message": "The world was successfully upgraded to the current version and is now available in the world list.\nWe encountered issues when cleaning up outdated data, therefore the name of the world folder has changed to %s.",
+ "upgradeWorld.failed_cleanup.title": "Successfully upgraded the world",
+ "upgradeWorld.info.converted": "Upgraded: %s",
+ "upgradeWorld.info.file_fix_stage": "Stage: %s/%s",
+ "upgradeWorld.info.scanning": "Scanning files...",
+ "upgradeWorld.info.total": "Total: %s",
+ "upgradeWorld.joinNow": "Do you want to join the world now?",
+ "upgradeWorld.progress.percentage": "%s%%",
+ "upgradeWorld.progress.type.files": "Moving files",
+ "upgradeWorld.progress.type.legacy_structures": "Upgrading legacy structures",
+ "upgradeWorld.progress.type.region": "Upgrading regions",
+ "upgradeWorld.symlink.message": "The selected world contains symbolic links.\nThe required steps to upgrade the world to the current version do not support the use of symbolic links. To upgrade the world, the links need to be resolved first.",
+ "upgradeWorld.symlink.title": "Can't upgrade the world",
+ "upgradeWorld.title": "Upgrading World Files"
} \ No newline at end of file
diff --git a/azalea-physics/src/collision/blocks.rs b/azalea-physics/src/collision/blocks.rs
index a22d77b0..f06e591f 100644
--- a/azalea-physics/src/collision/blocks.rs
+++ b/azalea-physics/src/collision/blocks.rs
@@ -5986,7 +5986,7 @@ impl BlockWithShape for BlockState {
}
}
-static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
+static BASIC_COLLISION_SHAPES_MAP: &[u8; 29873] = &[
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6041,7 +6041,13 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6049,11 +6055,12 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2,
+ 2, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -6061,7 +6068,7 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6085,8 +6092,7 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6102,11 +6108,11 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6146,8 +6152,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6157,13 +6163,13 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6189,21 +6195,21 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
- 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 1, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
- 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6223,13 +6229,13 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6241,7 +6247,7 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6250,19 +6256,20 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
- 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
+ 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6271,20 +6278,19 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0,
- 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2,
+ 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6292,7 +6298,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
+ 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6302,8 +6309,7 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2,
- 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6313,7 +6319,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6321,8 +6328,7 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6331,15 +6337,15 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6372,10 +6378,10 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6383,8 +6389,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -6394,24 +6400,24 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1,
- 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2,
2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2,
1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1,
- 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1,
- 1, 1, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
- 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
- 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
- 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
- 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
- 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
- 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
- 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
- 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2,
+ 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2,
+ 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
+ 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
+ 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
+ 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
+ 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
+ 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
+ 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
+ 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
+ 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
+ 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6440,25 +6446,26 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 2,
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6493,10 +6500,9 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2,
- 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1,
2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2,
- 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2,
+ 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6506,7 +6512,7 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6516,7 +6522,7 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6526,8 +6532,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6536,8 +6542,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6546,9 +6552,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2,
- 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6557,8 +6562,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6567,8 +6572,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6577,8 +6582,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6587,8 +6592,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6597,8 +6602,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6607,9 +6612,9 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6617,9 +6622,9 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6628,45 +6633,46 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
- 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1,
+ 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
- 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2,
- 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 0, 0,
+ 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0,
+ 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2,
+ 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6675,12 +6681,11 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
- 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2,
+ 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6688,12 +6693,12 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6702,8 +6707,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6712,11 +6717,12 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2,
+ 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6726,10 +6732,10 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 1, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6739,10 +6745,10 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6752,7 +6758,7 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6767,12 +6773,12 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6782,8 +6788,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1,
+ 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6793,7 +6799,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1,
+ 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6825,9 +6832,8 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6848,15 +6854,15 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2,
- 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 0, 0, 2,
+ 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6866,10 +6872,10 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2,
- 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6879,11 +6885,10 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 0,
- 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6891,10 +6896,12 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2,
+ 2, 2, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -6904,20 +6911,19 @@ static BASIC_COLLISION_SHAPES_MAP: &[u8; 29671] = &[
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1,
+ 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 1, 1, 1, 1, 1, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 2, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0,
];
-static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
+static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29873] = [
&SHAPE0, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE0,
@@ -7091,6 +7097,26 @@ static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE8, &SHAPE9, &SHAPE8, &SHAPE9, &SHAPE9, &SHAPE8, &SHAPE9, &SHAPE8, &SHAPE10,
&SHAPE11, &SHAPE10, &SHAPE11, &SHAPE11, &SHAPE10, &SHAPE11, &SHAPE10, &SHAPE8, &SHAPE9,
&SHAPE8, &SHAPE9, &SHAPE9, &SHAPE8, &SHAPE9, &SHAPE8, &SHAPE10, &SHAPE11, &SHAPE10, &SHAPE11,
@@ -7133,6 +7159,7 @@ static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE1, &SHAPE1, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
+ &SHAPE0, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
@@ -7158,15 +7185,7 @@ static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
- &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
- &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40,
- &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE41, &SHAPE41,
- &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41,
- &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42,
- &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42,
- &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
&SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
&SHAPE39, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40,
&SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE41,
@@ -7244,7 +7263,14 @@ static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41,
&SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE42, &SHAPE42,
&SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42,
- &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE1, &SHAPE1, &SHAPE0, &SHAPE0, &SHAPE0,
+ &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
+ &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
+ &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40,
+ &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40,
+ &SHAPE40, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41,
+ &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE42,
+ &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42,
+ &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE1, &SHAPE1, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
@@ -7296,18 +7322,18 @@ static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
- &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
- &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87,
- &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91,
- &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96,
- &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100,
- &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101,
- &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88,
- &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93,
- &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89,
- &SHAPE98, &SHAPE98, &SHAPE104, &SHAPE104, &SHAPE105, &SHAPE105, &SHAPE106, &SHAPE106,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
+ &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86,
+ &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91,
+ &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95,
+ &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100,
+ &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83,
+ &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88,
+ &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84,
+ &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89,
+ &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE104, &SHAPE104, &SHAPE105, &SHAPE105, &SHAPE106, &SHAPE106,
&SHAPE104, &SHAPE104, &SHAPE106, &SHAPE106, &SHAPE105, &SHAPE105, &SHAPE104, &SHAPE104,
&SHAPE107, &SHAPE107, &SHAPE108, &SHAPE108, &SHAPE104, &SHAPE104, &SHAPE108, &SHAPE108,
&SHAPE107, &SHAPE107, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
@@ -8043,7 +8069,7 @@ static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38,
&SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38,
&SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38,
- &SHAPE38, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
+ &SHAPE38, &SHAPE38, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
@@ -8068,50 +8094,50 @@ static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
- &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563,
- &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562,
+ &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563,
- &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562,
+ &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563,
- &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562,
+ &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563,
- &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562,
+ &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563,
- &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562,
+ &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563,
- &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE566, &SHAPE566, &SHAPE566,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562,
+ &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE566, &SHAPE566,
&SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566,
&SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566,
&SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566,
- &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE567, &SHAPE567, &SHAPE568,
- &SHAPE568, &SHAPE569, &SHAPE569, &SHAPE570, &SHAPE570, &SHAPE571, &SHAPE571, &SHAPE572,
- &SHAPE572, &SHAPE571, &SHAPE571, &SHAPE572, &SHAPE572, &SHAPE571, &SHAPE571, &SHAPE572,
- &SHAPE572, &SHAPE104, &SHAPE104, &SHAPE105, &SHAPE105, &SHAPE106, &SHAPE106, &SHAPE104,
- &SHAPE104, &SHAPE106, &SHAPE106, &SHAPE105, &SHAPE105, &SHAPE104, &SHAPE104, &SHAPE107,
- &SHAPE107, &SHAPE108, &SHAPE108, &SHAPE104, &SHAPE104, &SHAPE108, &SHAPE108, &SHAPE107,
- &SHAPE107, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
+ &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE567, &SHAPE567,
+ &SHAPE568, &SHAPE568, &SHAPE569, &SHAPE569, &SHAPE570, &SHAPE570, &SHAPE571, &SHAPE571,
+ &SHAPE572, &SHAPE572, &SHAPE571, &SHAPE571, &SHAPE572, &SHAPE572, &SHAPE571, &SHAPE571,
+ &SHAPE572, &SHAPE572, &SHAPE104, &SHAPE104, &SHAPE105, &SHAPE105, &SHAPE106, &SHAPE106,
+ &SHAPE104, &SHAPE104, &SHAPE106, &SHAPE106, &SHAPE105, &SHAPE105, &SHAPE104, &SHAPE104,
+ &SHAPE107, &SHAPE107, &SHAPE108, &SHAPE108, &SHAPE104, &SHAPE104, &SHAPE108, &SHAPE108,
+ &SHAPE107, &SHAPE107, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
- &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
+ &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
&SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
&SHAPE12, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191,
&SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191,
@@ -10317,7 +10343,7 @@ static COLLISION_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE38, &SHAPE38, &SHAPE0,
];
-static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
+static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29873] = [
&SHAPE0, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE2,
@@ -10491,6 +10517,26 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE8, &SHAPE9, &SHAPE8, &SHAPE9, &SHAPE9, &SHAPE8, &SHAPE9, &SHAPE8, &SHAPE10,
&SHAPE11, &SHAPE10, &SHAPE11, &SHAPE11, &SHAPE10, &SHAPE11, &SHAPE10, &SHAPE8, &SHAPE9,
&SHAPE8, &SHAPE9, &SHAPE9, &SHAPE8, &SHAPE9, &SHAPE8, &SHAPE10, &SHAPE11, &SHAPE10, &SHAPE11,
@@ -10533,7 +10579,7 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE0,
&SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
&SHAPE0, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37,
- &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE38, &SHAPE38, &SHAPE1,
+ &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE37, &SHAPE38, &SHAPE38,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
@@ -10560,14 +10606,7 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
- &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE40,
- &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40,
- &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE41, &SHAPE41, &SHAPE41,
- &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41,
- &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42,
- &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42,
- &SHAPE42, &SHAPE42, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
+ &SHAPE1, &SHAPE1, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
&SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
&SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40,
&SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE41, &SHAPE41,
@@ -10645,15 +10684,15 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41,
&SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE42, &SHAPE42, &SHAPE42,
&SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42,
- &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE1, &SHAPE1, &SHAPE43, &SHAPE44, &SHAPE45,
- &SHAPE46, &SHAPE47, &SHAPE48, &SHAPE49, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE54,
- &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE58, &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63,
- &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE72,
- &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE76, &SHAPE77, &SHAPE78, &SHAPE79, &SHAPE48, &SHAPE49,
- &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE54, &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE58,
- &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63, &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67,
- &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE72, &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE76,
- &SHAPE77, &SHAPE78, &SHAPE79, &SHAPE48, &SHAPE49, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53,
+ &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
+ &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39, &SHAPE39,
+ &SHAPE39, &SHAPE39, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40,
+ &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40, &SHAPE40,
+ &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41,
+ &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE41, &SHAPE42, &SHAPE42,
+ &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42,
+ &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE42, &SHAPE1, &SHAPE1, &SHAPE43, &SHAPE44,
+ &SHAPE45, &SHAPE46, &SHAPE47, &SHAPE48, &SHAPE49, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53,
&SHAPE54, &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE58, &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE62,
&SHAPE63, &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71,
&SHAPE72, &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE76, &SHAPE77, &SHAPE78, &SHAPE79, &SHAPE48,
@@ -10703,22 +10742,28 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE52, &SHAPE53, &SHAPE54, &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE58, &SHAPE59, &SHAPE60,
&SHAPE61, &SHAPE62, &SHAPE63, &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE68, &SHAPE69,
&SHAPE70, &SHAPE71, &SHAPE72, &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE76, &SHAPE77, &SHAPE78,
- &SHAPE79, &SHAPE79, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE79, &SHAPE48, &SHAPE49, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE54, &SHAPE55,
+ &SHAPE56, &SHAPE57, &SHAPE58, &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63, &SHAPE64,
+ &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE72, &SHAPE73,
+ &SHAPE74, &SHAPE75, &SHAPE76, &SHAPE77, &SHAPE78, &SHAPE79, &SHAPE48, &SHAPE49, &SHAPE50,
+ &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE54, &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE58, &SHAPE59,
+ &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63, &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE68,
+ &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE72, &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE76, &SHAPE77,
+ &SHAPE78, &SHAPE79, &SHAPE79, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83,
- &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88,
- &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92,
- &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97,
- &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92,
- &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97,
- &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102,
- &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103,
- &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98,
- &SHAPE104, &SHAPE104, &SHAPE105, &SHAPE105, &SHAPE106, &SHAPE106, &SHAPE104, &SHAPE104,
- &SHAPE106, &SHAPE106, &SHAPE105, &SHAPE105, &SHAPE104, &SHAPE104, &SHAPE107, &SHAPE107,
- &SHAPE108, &SHAPE108, &SHAPE104, &SHAPE104, &SHAPE108, &SHAPE108, &SHAPE107, &SHAPE107,
- &SHAPE109, &SHAPE110, &SHAPE111, &SHAPE112, &SHAPE113, &SHAPE114, &SHAPE115, &SHAPE116,
- &SHAPE117, &SHAPE109, &SHAPE110, &SHAPE111, &SHAPE112, &SHAPE113, &SHAPE114, &SHAPE115,
+ &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83,
+ &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87,
+ &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92,
+ &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96,
+ &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92,
+ &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101,
+ &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102,
+ &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93,
+ &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98,
+ &SHAPE98, &SHAPE104, &SHAPE104, &SHAPE105, &SHAPE105, &SHAPE106, &SHAPE106, &SHAPE104,
+ &SHAPE104, &SHAPE106, &SHAPE106, &SHAPE105, &SHAPE105, &SHAPE104, &SHAPE104, &SHAPE107,
+ &SHAPE107, &SHAPE108, &SHAPE108, &SHAPE104, &SHAPE104, &SHAPE108, &SHAPE108, &SHAPE107,
+ &SHAPE107, &SHAPE109, &SHAPE110, &SHAPE111, &SHAPE112, &SHAPE113, &SHAPE114, &SHAPE115,
&SHAPE116, &SHAPE117, &SHAPE109, &SHAPE110, &SHAPE111, &SHAPE112, &SHAPE113, &SHAPE114,
&SHAPE115, &SHAPE116, &SHAPE117, &SHAPE109, &SHAPE110, &SHAPE111, &SHAPE112, &SHAPE113,
&SHAPE114, &SHAPE115, &SHAPE116, &SHAPE117, &SHAPE109, &SHAPE110, &SHAPE111, &SHAPE112,
@@ -10735,8 +10780,8 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE112, &SHAPE113, &SHAPE114, &SHAPE115, &SHAPE116, &SHAPE117, &SHAPE109, &SHAPE110,
&SHAPE111, &SHAPE112, &SHAPE113, &SHAPE114, &SHAPE115, &SHAPE116, &SHAPE117, &SHAPE109,
&SHAPE110, &SHAPE111, &SHAPE112, &SHAPE113, &SHAPE114, &SHAPE115, &SHAPE116, &SHAPE117,
- &SHAPE118, &SHAPE119, &SHAPE120, &SHAPE121, &SHAPE122, &SHAPE123, &SHAPE124, &SHAPE125,
- &SHAPE126, &SHAPE118, &SHAPE119, &SHAPE120, &SHAPE121, &SHAPE122, &SHAPE123, &SHAPE124,
+ &SHAPE109, &SHAPE110, &SHAPE111, &SHAPE112, &SHAPE113, &SHAPE114, &SHAPE115, &SHAPE116,
+ &SHAPE117, &SHAPE118, &SHAPE119, &SHAPE120, &SHAPE121, &SHAPE122, &SHAPE123, &SHAPE124,
&SHAPE125, &SHAPE126, &SHAPE118, &SHAPE119, &SHAPE120, &SHAPE121, &SHAPE122, &SHAPE123,
&SHAPE124, &SHAPE125, &SHAPE126, &SHAPE118, &SHAPE119, &SHAPE120, &SHAPE121, &SHAPE122,
&SHAPE123, &SHAPE124, &SHAPE125, &SHAPE126, &SHAPE118, &SHAPE119, &SHAPE120, &SHAPE121,
@@ -10753,8 +10798,8 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE121, &SHAPE122, &SHAPE123, &SHAPE124, &SHAPE125, &SHAPE126, &SHAPE118, &SHAPE119,
&SHAPE120, &SHAPE121, &SHAPE122, &SHAPE123, &SHAPE124, &SHAPE125, &SHAPE126, &SHAPE118,
&SHAPE119, &SHAPE120, &SHAPE121, &SHAPE122, &SHAPE123, &SHAPE124, &SHAPE125, &SHAPE126,
- &SHAPE127, &SHAPE128, &SHAPE129, &SHAPE130, &SHAPE131, &SHAPE132, &SHAPE133, &SHAPE134,
- &SHAPE135, &SHAPE127, &SHAPE128, &SHAPE129, &SHAPE130, &SHAPE131, &SHAPE132, &SHAPE133,
+ &SHAPE118, &SHAPE119, &SHAPE120, &SHAPE121, &SHAPE122, &SHAPE123, &SHAPE124, &SHAPE125,
+ &SHAPE126, &SHAPE127, &SHAPE128, &SHAPE129, &SHAPE130, &SHAPE131, &SHAPE132, &SHAPE133,
&SHAPE134, &SHAPE135, &SHAPE127, &SHAPE128, &SHAPE129, &SHAPE130, &SHAPE131, &SHAPE132,
&SHAPE133, &SHAPE134, &SHAPE135, &SHAPE127, &SHAPE128, &SHAPE129, &SHAPE130, &SHAPE131,
&SHAPE132, &SHAPE133, &SHAPE134, &SHAPE135, &SHAPE127, &SHAPE128, &SHAPE129, &SHAPE130,
@@ -10771,8 +10816,8 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE130, &SHAPE131, &SHAPE132, &SHAPE133, &SHAPE134, &SHAPE135, &SHAPE127, &SHAPE128,
&SHAPE129, &SHAPE130, &SHAPE131, &SHAPE132, &SHAPE133, &SHAPE134, &SHAPE135, &SHAPE127,
&SHAPE128, &SHAPE129, &SHAPE130, &SHAPE131, &SHAPE132, &SHAPE133, &SHAPE134, &SHAPE135,
- &SHAPE136, &SHAPE137, &SHAPE138, &SHAPE139, &SHAPE140, &SHAPE141, &SHAPE142, &SHAPE143,
- &SHAPE144, &SHAPE136, &SHAPE137, &SHAPE138, &SHAPE139, &SHAPE140, &SHAPE141, &SHAPE142,
+ &SHAPE127, &SHAPE128, &SHAPE129, &SHAPE130, &SHAPE131, &SHAPE132, &SHAPE133, &SHAPE134,
+ &SHAPE135, &SHAPE136, &SHAPE137, &SHAPE138, &SHAPE139, &SHAPE140, &SHAPE141, &SHAPE142,
&SHAPE143, &SHAPE144, &SHAPE136, &SHAPE137, &SHAPE138, &SHAPE139, &SHAPE140, &SHAPE141,
&SHAPE142, &SHAPE143, &SHAPE144, &SHAPE136, &SHAPE137, &SHAPE138, &SHAPE139, &SHAPE140,
&SHAPE141, &SHAPE142, &SHAPE143, &SHAPE144, &SHAPE136, &SHAPE137, &SHAPE138, &SHAPE139,
@@ -10789,8 +10834,8 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE139, &SHAPE140, &SHAPE141, &SHAPE142, &SHAPE143, &SHAPE144, &SHAPE136, &SHAPE137,
&SHAPE138, &SHAPE139, &SHAPE140, &SHAPE141, &SHAPE142, &SHAPE143, &SHAPE144, &SHAPE136,
&SHAPE137, &SHAPE138, &SHAPE139, &SHAPE140, &SHAPE141, &SHAPE142, &SHAPE143, &SHAPE144,
- &SHAPE145, &SHAPE146, &SHAPE147, &SHAPE148, &SHAPE149, &SHAPE150, &SHAPE151, &SHAPE152,
- &SHAPE153, &SHAPE145, &SHAPE146, &SHAPE147, &SHAPE148, &SHAPE149, &SHAPE150, &SHAPE151,
+ &SHAPE136, &SHAPE137, &SHAPE138, &SHAPE139, &SHAPE140, &SHAPE141, &SHAPE142, &SHAPE143,
+ &SHAPE144, &SHAPE145, &SHAPE146, &SHAPE147, &SHAPE148, &SHAPE149, &SHAPE150, &SHAPE151,
&SHAPE152, &SHAPE153, &SHAPE145, &SHAPE146, &SHAPE147, &SHAPE148, &SHAPE149, &SHAPE150,
&SHAPE151, &SHAPE152, &SHAPE153, &SHAPE145, &SHAPE146, &SHAPE147, &SHAPE148, &SHAPE149,
&SHAPE150, &SHAPE151, &SHAPE152, &SHAPE153, &SHAPE145, &SHAPE146, &SHAPE147, &SHAPE148,
@@ -10807,8 +10852,8 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE148, &SHAPE149, &SHAPE150, &SHAPE151, &SHAPE152, &SHAPE153, &SHAPE145, &SHAPE146,
&SHAPE147, &SHAPE148, &SHAPE149, &SHAPE150, &SHAPE151, &SHAPE152, &SHAPE153, &SHAPE145,
&SHAPE146, &SHAPE147, &SHAPE148, &SHAPE149, &SHAPE150, &SHAPE151, &SHAPE152, &SHAPE153,
- &SHAPE154, &SHAPE155, &SHAPE156, &SHAPE157, &SHAPE158, &SHAPE159, &SHAPE160, &SHAPE161,
- &SHAPE162, &SHAPE154, &SHAPE155, &SHAPE156, &SHAPE157, &SHAPE158, &SHAPE159, &SHAPE160,
+ &SHAPE145, &SHAPE146, &SHAPE147, &SHAPE148, &SHAPE149, &SHAPE150, &SHAPE151, &SHAPE152,
+ &SHAPE153, &SHAPE154, &SHAPE155, &SHAPE156, &SHAPE157, &SHAPE158, &SHAPE159, &SHAPE160,
&SHAPE161, &SHAPE162, &SHAPE154, &SHAPE155, &SHAPE156, &SHAPE157, &SHAPE158, &SHAPE159,
&SHAPE160, &SHAPE161, &SHAPE162, &SHAPE154, &SHAPE155, &SHAPE156, &SHAPE157, &SHAPE158,
&SHAPE159, &SHAPE160, &SHAPE161, &SHAPE162, &SHAPE154, &SHAPE155, &SHAPE156, &SHAPE157,
@@ -10825,8 +10870,8 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE157, &SHAPE158, &SHAPE159, &SHAPE160, &SHAPE161, &SHAPE162, &SHAPE154, &SHAPE155,
&SHAPE156, &SHAPE157, &SHAPE158, &SHAPE159, &SHAPE160, &SHAPE161, &SHAPE162, &SHAPE154,
&SHAPE155, &SHAPE156, &SHAPE157, &SHAPE158, &SHAPE159, &SHAPE160, &SHAPE161, &SHAPE162,
- &SHAPE163, &SHAPE164, &SHAPE165, &SHAPE166, &SHAPE167, &SHAPE168, &SHAPE169, &SHAPE170,
- &SHAPE171, &SHAPE163, &SHAPE164, &SHAPE165, &SHAPE166, &SHAPE167, &SHAPE168, &SHAPE169,
+ &SHAPE154, &SHAPE155, &SHAPE156, &SHAPE157, &SHAPE158, &SHAPE159, &SHAPE160, &SHAPE161,
+ &SHAPE162, &SHAPE163, &SHAPE164, &SHAPE165, &SHAPE166, &SHAPE167, &SHAPE168, &SHAPE169,
&SHAPE170, &SHAPE171, &SHAPE163, &SHAPE164, &SHAPE165, &SHAPE166, &SHAPE167, &SHAPE168,
&SHAPE169, &SHAPE170, &SHAPE171, &SHAPE163, &SHAPE164, &SHAPE165, &SHAPE166, &SHAPE167,
&SHAPE168, &SHAPE169, &SHAPE170, &SHAPE171, &SHAPE163, &SHAPE164, &SHAPE165, &SHAPE166,
@@ -10843,8 +10888,8 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE166, &SHAPE167, &SHAPE168, &SHAPE169, &SHAPE170, &SHAPE171, &SHAPE163, &SHAPE164,
&SHAPE165, &SHAPE166, &SHAPE167, &SHAPE168, &SHAPE169, &SHAPE170, &SHAPE171, &SHAPE163,
&SHAPE164, &SHAPE165, &SHAPE166, &SHAPE167, &SHAPE168, &SHAPE169, &SHAPE170, &SHAPE171,
- &SHAPE172, &SHAPE173, &SHAPE174, &SHAPE175, &SHAPE176, &SHAPE177, &SHAPE178, &SHAPE179,
- &SHAPE180, &SHAPE172, &SHAPE173, &SHAPE174, &SHAPE175, &SHAPE176, &SHAPE177, &SHAPE178,
+ &SHAPE163, &SHAPE164, &SHAPE165, &SHAPE166, &SHAPE167, &SHAPE168, &SHAPE169, &SHAPE170,
+ &SHAPE171, &SHAPE172, &SHAPE173, &SHAPE174, &SHAPE175, &SHAPE176, &SHAPE177, &SHAPE178,
&SHAPE179, &SHAPE180, &SHAPE172, &SHAPE173, &SHAPE174, &SHAPE175, &SHAPE176, &SHAPE177,
&SHAPE178, &SHAPE179, &SHAPE180, &SHAPE172, &SHAPE173, &SHAPE174, &SHAPE175, &SHAPE176,
&SHAPE177, &SHAPE178, &SHAPE179, &SHAPE180, &SHAPE172, &SHAPE173, &SHAPE174, &SHAPE175,
@@ -10861,8 +10906,8 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE175, &SHAPE176, &SHAPE177, &SHAPE178, &SHAPE179, &SHAPE180, &SHAPE172, &SHAPE173,
&SHAPE174, &SHAPE175, &SHAPE176, &SHAPE177, &SHAPE178, &SHAPE179, &SHAPE180, &SHAPE172,
&SHAPE173, &SHAPE174, &SHAPE175, &SHAPE176, &SHAPE177, &SHAPE178, &SHAPE179, &SHAPE180,
- &SHAPE181, &SHAPE182, &SHAPE183, &SHAPE184, &SHAPE185, &SHAPE186, &SHAPE187, &SHAPE188,
- &SHAPE189, &SHAPE181, &SHAPE182, &SHAPE183, &SHAPE184, &SHAPE185, &SHAPE186, &SHAPE187,
+ &SHAPE172, &SHAPE173, &SHAPE174, &SHAPE175, &SHAPE176, &SHAPE177, &SHAPE178, &SHAPE179,
+ &SHAPE180, &SHAPE181, &SHAPE182, &SHAPE183, &SHAPE184, &SHAPE185, &SHAPE186, &SHAPE187,
&SHAPE188, &SHAPE189, &SHAPE181, &SHAPE182, &SHAPE183, &SHAPE184, &SHAPE185, &SHAPE186,
&SHAPE187, &SHAPE188, &SHAPE189, &SHAPE181, &SHAPE182, &SHAPE183, &SHAPE184, &SHAPE185,
&SHAPE186, &SHAPE187, &SHAPE188, &SHAPE189, &SHAPE181, &SHAPE182, &SHAPE183, &SHAPE184,
@@ -10879,10 +10924,11 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE184, &SHAPE185, &SHAPE186, &SHAPE187, &SHAPE188, &SHAPE189, &SHAPE181, &SHAPE182,
&SHAPE183, &SHAPE184, &SHAPE185, &SHAPE186, &SHAPE187, &SHAPE188, &SHAPE189, &SHAPE181,
&SHAPE182, &SHAPE183, &SHAPE184, &SHAPE185, &SHAPE186, &SHAPE187, &SHAPE188, &SHAPE189,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE12, &SHAPE190, &SHAPE191, &SHAPE13, &SHAPE192,
- &SHAPE18, &SHAPE193, &SHAPE1, &SHAPE194, &SHAPE194, &SHAPE194, &SHAPE194, &SHAPE194, &SHAPE194,
- &SHAPE194, &SHAPE194, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
+ &SHAPE181, &SHAPE182, &SHAPE183, &SHAPE184, &SHAPE185, &SHAPE186, &SHAPE187, &SHAPE188,
+ &SHAPE189, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE12, &SHAPE190, &SHAPE191, &SHAPE13,
+ &SHAPE192, &SHAPE18, &SHAPE193, &SHAPE1, &SHAPE194, &SHAPE194, &SHAPE194, &SHAPE194, &SHAPE194,
+ &SHAPE194, &SHAPE194, &SHAPE194, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
@@ -10922,264 +10968,264 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE196, &SHAPE196,
- &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
- &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
- &SHAPE12, &SHAPE12, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83,
- &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87,
- &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92,
- &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96,
- &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92,
- &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101,
- &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102,
- &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93,
- &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98,
- &SHAPE98, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203,
- &SHAPE203, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
- &SHAPE205, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210, &SHAPE210,
- &SHAPE210, &SHAPE211, &SHAPE211, &SHAPE211, &SHAPE211, &SHAPE212, &SHAPE212, &SHAPE212,
- &SHAPE212, &SHAPE213, &SHAPE213, &SHAPE214, &SHAPE214, &SHAPE215, &SHAPE215, &SHAPE216,
- &SHAPE216, &SHAPE217, &SHAPE217, &SHAPE217, &SHAPE217, &SHAPE218, &SHAPE218, &SHAPE218,
- &SHAPE218, &SHAPE219, &SHAPE220, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
- &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
- &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
- &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
- &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
- &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
- &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
- &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
- &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219,
- &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219,
- &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE43, &SHAPE43, &SHAPE44, &SHAPE44, &SHAPE45, &SHAPE45, &SHAPE46,
- &SHAPE46, &SHAPE47, &SHAPE47, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224,
- &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230,
- &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236,
- &SHAPE235, &SHAPE236, &SHAPE12, &SHAPE190, &SHAPE191, &SHAPE13, &SHAPE192, &SHAPE18, &SHAPE193,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23,
+ &SHAPE195, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197,
+ &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199,
+ &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198,
+ &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196,
+ &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE196,
+ &SHAPE196, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
+ &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
+ &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
+ &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87,
+ &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91,
+ &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96,
+ &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100,
+ &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101,
+ &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88,
+ &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93,
+ &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89,
+ &SHAPE98, &SHAPE98, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE204, &SHAPE204, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE206, &SHAPE206, &SHAPE205, &SHAPE205, &SHAPE205, &SHAPE205,
+ &SHAPE205, &SHAPE205, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE208, &SHAPE210, &SHAPE210,
+ &SHAPE210, &SHAPE210, &SHAPE211, &SHAPE211, &SHAPE211, &SHAPE211, &SHAPE212, &SHAPE212,
+ &SHAPE212, &SHAPE212, &SHAPE213, &SHAPE213, &SHAPE214, &SHAPE214, &SHAPE215, &SHAPE215,
+ &SHAPE216, &SHAPE216, &SHAPE217, &SHAPE217, &SHAPE217, &SHAPE217, &SHAPE218, &SHAPE218,
+ &SHAPE218, &SHAPE218, &SHAPE219, &SHAPE220, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197,
+ &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197,
+ &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
+ &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
+ &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
+ &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
+ &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196,
+ &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196,
+ &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220,
+ &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220,
+ &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE43, &SHAPE43, &SHAPE44, &SHAPE44, &SHAPE45, &SHAPE45,
+ &SHAPE46, &SHAPE46, &SHAPE47, &SHAPE47, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223,
+ &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229,
+ &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235,
+ &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE12, &SHAPE190, &SHAPE191, &SHAPE13, &SHAPE192, &SHAPE18,
+ &SHAPE193, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23,
&SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23, &SHAPE23,
- &SHAPE23, &SHAPE238, &SHAPE1, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24,
+ &SHAPE23, &SHAPE23, &SHAPE238, &SHAPE1, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24,
&SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24, &SHAPE24,
- &SHAPE24, &SHAPE1, &SHAPE1, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246,
- &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254,
- &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262,
- &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270,
- &SHAPE268, &SHAPE270, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE43, &SHAPE44, &SHAPE45, &SHAPE46, &SHAPE47, &SHAPE43, &SHAPE44, &SHAPE45,
- &SHAPE46, &SHAPE47, &SHAPE1, &SHAPE252, &SHAPE258, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE271, &SHAPE272, &SHAPE273, &SHAPE274, &SHAPE275, &SHAPE276,
- &SHAPE277, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
+ &SHAPE24, &SHAPE24, &SHAPE1, &SHAPE1, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE43, &SHAPE44, &SHAPE45, &SHAPE46, &SHAPE47, &SHAPE43, &SHAPE44,
+ &SHAPE45, &SHAPE46, &SHAPE47, &SHAPE1, &SHAPE252, &SHAPE258, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE271, &SHAPE272, &SHAPE273, &SHAPE274,
+ &SHAPE275, &SHAPE276, &SHAPE277, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
&SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
&SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
&SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
&SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
&SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
&SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
- &SHAPE12, &SHAPE12, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
@@ -11200,94 +11246,112 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
- &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
- &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
- &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
- &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
- &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
- &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
- &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
- &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
- &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
- &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
- &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
- &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
- &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
- &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
- &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
- &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
- &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
- &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
- &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
- &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
- &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
- &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
- &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
- &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
- &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
- &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
- &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
- &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
- &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
- &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
- &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
- &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
- &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
- &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
- &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
- &SHAPE295, &SHAPE296, &SHAPE296, &SHAPE297, &SHAPE297, &SHAPE298, &SHAPE298, &SHAPE296,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
+ &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
+ &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
+ &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
+ &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
+ &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
+ &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
+ &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
+ &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
+ &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
+ &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
+ &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
+ &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
+ &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
+ &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
+ &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
+ &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
+ &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
+ &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
+ &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
+ &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
+ &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
+ &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
+ &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
+ &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
+ &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
+ &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
+ &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
+ &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
+ &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
+ &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
+ &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
+ &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
+ &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
+ &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
+ &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
+ &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE296, &SHAPE296, &SHAPE297, &SHAPE297, &SHAPE298,
+ &SHAPE298, &SHAPE296, &SHAPE296, &SHAPE297, &SHAPE297, &SHAPE298, &SHAPE298, &SHAPE296,
&SHAPE296, &SHAPE297, &SHAPE297, &SHAPE298, &SHAPE298, &SHAPE296, &SHAPE296, &SHAPE297,
&SHAPE297, &SHAPE298, &SHAPE298, &SHAPE296, &SHAPE296, &SHAPE297, &SHAPE297, &SHAPE298,
&SHAPE298, &SHAPE296, &SHAPE296, &SHAPE297, &SHAPE297, &SHAPE298, &SHAPE298, &SHAPE296,
&SHAPE296, &SHAPE297, &SHAPE297, &SHAPE298, &SHAPE298, &SHAPE296, &SHAPE296, &SHAPE297,
&SHAPE297, &SHAPE298, &SHAPE298, &SHAPE296, &SHAPE296, &SHAPE297, &SHAPE297, &SHAPE298,
- &SHAPE298, &SHAPE296, &SHAPE296, &SHAPE297, &SHAPE297, &SHAPE298, &SHAPE298, &SHAPE280,
- &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
- &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
- &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
- &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE1, &SHAPE1,
- &SHAPE299, &SHAPE300, &SHAPE301, &SHAPE302, &SHAPE299, &SHAPE300, &SHAPE301, &SHAPE302,
- &SHAPE303, &SHAPE304, &SHAPE305, &SHAPE306, &SHAPE307, &SHAPE308, &SHAPE309, &SHAPE295,
- &SHAPE303, &SHAPE304, &SHAPE305, &SHAPE306, &SHAPE307, &SHAPE308, &SHAPE309, &SHAPE295,
- &SHAPE48, &SHAPE49, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE54, &SHAPE55, &SHAPE56,
- &SHAPE57, &SHAPE58, &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63, &SHAPE64, &SHAPE65,
- &SHAPE66, &SHAPE67, &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE72, &SHAPE73, &SHAPE74,
- &SHAPE75, &SHAPE76, &SHAPE77, &SHAPE78, &SHAPE1, &SHAPE310, &SHAPE311, &SHAPE310, &SHAPE311,
- &SHAPE312, &SHAPE313, &SHAPE312, &SHAPE313, &SHAPE314, &SHAPE315, &SHAPE314, &SHAPE315,
- &SHAPE316, &SHAPE317, &SHAPE316, &SHAPE317, &SHAPE318, &SHAPE319, &SHAPE318, &SHAPE319,
- &SHAPE320, &SHAPE321, &SHAPE320, &SHAPE321, &SHAPE322, &SHAPE323, &SHAPE322, &SHAPE323,
- &SHAPE324, &SHAPE325, &SHAPE324, &SHAPE325, &SHAPE326, &SHAPE327, &SHAPE326, &SHAPE327,
- &SHAPE328, &SHAPE329, &SHAPE328, &SHAPE329, &SHAPE330, &SHAPE331, &SHAPE330, &SHAPE331,
- &SHAPE332, &SHAPE333, &SHAPE332, &SHAPE333, &SHAPE334, &SHAPE335, &SHAPE334, &SHAPE335,
- &SHAPE336, &SHAPE337, &SHAPE336, &SHAPE337, &SHAPE338, &SHAPE339, &SHAPE338, &SHAPE339,
- &SHAPE340, &SHAPE79, &SHAPE340, &SHAPE79, &SHAPE48, &SHAPE49, &SHAPE48, &SHAPE49, &SHAPE50,
- &SHAPE51, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE52, &SHAPE53, &SHAPE54, &SHAPE55,
- &SHAPE54, &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE56, &SHAPE57, &SHAPE58, &SHAPE59, &SHAPE58,
- &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63, &SHAPE62, &SHAPE63,
- &SHAPE64, &SHAPE65, &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE66, &SHAPE67, &SHAPE68,
- &SHAPE69, &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE70, &SHAPE71, &SHAPE72, &SHAPE73,
- &SHAPE72, &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE74, &SHAPE75, &SHAPE76, &SHAPE77, &SHAPE76,
- &SHAPE77, &SHAPE78, &SHAPE1, &SHAPE78, &SHAPE1, &SHAPE310, &SHAPE311, &SHAPE310, &SHAPE311,
- &SHAPE312, &SHAPE313, &SHAPE312, &SHAPE313, &SHAPE314, &SHAPE315, &SHAPE314, &SHAPE315,
- &SHAPE316, &SHAPE317, &SHAPE316, &SHAPE317, &SHAPE318, &SHAPE319, &SHAPE318, &SHAPE319,
- &SHAPE320, &SHAPE321, &SHAPE320, &SHAPE321, &SHAPE322, &SHAPE323, &SHAPE322, &SHAPE323,
- &SHAPE324, &SHAPE325, &SHAPE324, &SHAPE325, &SHAPE326, &SHAPE327, &SHAPE326, &SHAPE327,
- &SHAPE328, &SHAPE329, &SHAPE328, &SHAPE329, &SHAPE330, &SHAPE331, &SHAPE330, &SHAPE331,
- &SHAPE332, &SHAPE333, &SHAPE332, &SHAPE333, &SHAPE334, &SHAPE335, &SHAPE334, &SHAPE335,
- &SHAPE336, &SHAPE337, &SHAPE336, &SHAPE337, &SHAPE338, &SHAPE339, &SHAPE338, &SHAPE339,
- &SHAPE340, &SHAPE79, &SHAPE340, &SHAPE79, &SHAPE48, &SHAPE49, &SHAPE48, &SHAPE49, &SHAPE50,
- &SHAPE51, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE52, &SHAPE53, &SHAPE54, &SHAPE55,
- &SHAPE54, &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE56, &SHAPE57, &SHAPE58, &SHAPE59, &SHAPE58,
- &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63, &SHAPE62, &SHAPE63,
- &SHAPE64, &SHAPE65, &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE66, &SHAPE67, &SHAPE68,
- &SHAPE69, &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE70, &SHAPE71, &SHAPE72, &SHAPE73,
- &SHAPE72, &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE74, &SHAPE75, &SHAPE76, &SHAPE77, &SHAPE76,
- &SHAPE77, &SHAPE78, &SHAPE1, &SHAPE78, &SHAPE1, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341,
- &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341,
- &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342,
- &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342,
- &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
+ &SHAPE298, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282,
+ &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286,
+ &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290,
+ &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294,
+ &SHAPE295, &SHAPE1, &SHAPE1, &SHAPE299, &SHAPE300, &SHAPE301, &SHAPE302, &SHAPE299, &SHAPE300,
+ &SHAPE301, &SHAPE302, &SHAPE303, &SHAPE304, &SHAPE305, &SHAPE306, &SHAPE307, &SHAPE308,
+ &SHAPE309, &SHAPE295, &SHAPE303, &SHAPE304, &SHAPE305, &SHAPE306, &SHAPE307, &SHAPE308,
+ &SHAPE309, &SHAPE295, &SHAPE48, &SHAPE49, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE54,
+ &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE58, &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63,
+ &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE72,
+ &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE76, &SHAPE77, &SHAPE78, &SHAPE1, &SHAPE310, &SHAPE311,
+ &SHAPE310, &SHAPE311, &SHAPE312, &SHAPE313, &SHAPE312, &SHAPE313, &SHAPE314, &SHAPE315,
+ &SHAPE314, &SHAPE315, &SHAPE316, &SHAPE317, &SHAPE316, &SHAPE317, &SHAPE318, &SHAPE319,
+ &SHAPE318, &SHAPE319, &SHAPE320, &SHAPE321, &SHAPE320, &SHAPE321, &SHAPE322, &SHAPE323,
+ &SHAPE322, &SHAPE323, &SHAPE324, &SHAPE325, &SHAPE324, &SHAPE325, &SHAPE326, &SHAPE327,
+ &SHAPE326, &SHAPE327, &SHAPE328, &SHAPE329, &SHAPE328, &SHAPE329, &SHAPE330, &SHAPE331,
+ &SHAPE330, &SHAPE331, &SHAPE332, &SHAPE333, &SHAPE332, &SHAPE333, &SHAPE334, &SHAPE335,
+ &SHAPE334, &SHAPE335, &SHAPE336, &SHAPE337, &SHAPE336, &SHAPE337, &SHAPE338, &SHAPE339,
+ &SHAPE338, &SHAPE339, &SHAPE340, &SHAPE79, &SHAPE340, &SHAPE79, &SHAPE48, &SHAPE49, &SHAPE48,
+ &SHAPE49, &SHAPE50, &SHAPE51, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE52, &SHAPE53,
+ &SHAPE54, &SHAPE55, &SHAPE54, &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE56, &SHAPE57, &SHAPE58,
+ &SHAPE59, &SHAPE58, &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63,
+ &SHAPE62, &SHAPE63, &SHAPE64, &SHAPE65, &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE66,
+ &SHAPE67, &SHAPE68, &SHAPE69, &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE70, &SHAPE71,
+ &SHAPE72, &SHAPE73, &SHAPE72, &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE74, &SHAPE75, &SHAPE76,
+ &SHAPE77, &SHAPE76, &SHAPE77, &SHAPE78, &SHAPE1, &SHAPE78, &SHAPE1, &SHAPE310, &SHAPE311,
+ &SHAPE310, &SHAPE311, &SHAPE312, &SHAPE313, &SHAPE312, &SHAPE313, &SHAPE314, &SHAPE315,
+ &SHAPE314, &SHAPE315, &SHAPE316, &SHAPE317, &SHAPE316, &SHAPE317, &SHAPE318, &SHAPE319,
+ &SHAPE318, &SHAPE319, &SHAPE320, &SHAPE321, &SHAPE320, &SHAPE321, &SHAPE322, &SHAPE323,
+ &SHAPE322, &SHAPE323, &SHAPE324, &SHAPE325, &SHAPE324, &SHAPE325, &SHAPE326, &SHAPE327,
+ &SHAPE326, &SHAPE327, &SHAPE328, &SHAPE329, &SHAPE328, &SHAPE329, &SHAPE330, &SHAPE331,
+ &SHAPE330, &SHAPE331, &SHAPE332, &SHAPE333, &SHAPE332, &SHAPE333, &SHAPE334, &SHAPE335,
+ &SHAPE334, &SHAPE335, &SHAPE336, &SHAPE337, &SHAPE336, &SHAPE337, &SHAPE338, &SHAPE339,
+ &SHAPE338, &SHAPE339, &SHAPE340, &SHAPE79, &SHAPE340, &SHAPE79, &SHAPE48, &SHAPE49, &SHAPE48,
+ &SHAPE49, &SHAPE50, &SHAPE51, &SHAPE50, &SHAPE51, &SHAPE52, &SHAPE53, &SHAPE52, &SHAPE53,
+ &SHAPE54, &SHAPE55, &SHAPE54, &SHAPE55, &SHAPE56, &SHAPE57, &SHAPE56, &SHAPE57, &SHAPE58,
+ &SHAPE59, &SHAPE58, &SHAPE59, &SHAPE60, &SHAPE61, &SHAPE60, &SHAPE61, &SHAPE62, &SHAPE63,
+ &SHAPE62, &SHAPE63, &SHAPE64, &SHAPE65, &SHAPE64, &SHAPE65, &SHAPE66, &SHAPE67, &SHAPE66,
+ &SHAPE67, &SHAPE68, &SHAPE69, &SHAPE68, &SHAPE69, &SHAPE70, &SHAPE71, &SHAPE70, &SHAPE71,
+ &SHAPE72, &SHAPE73, &SHAPE72, &SHAPE73, &SHAPE74, &SHAPE75, &SHAPE74, &SHAPE75, &SHAPE76,
+ &SHAPE77, &SHAPE76, &SHAPE77, &SHAPE78, &SHAPE1, &SHAPE78, &SHAPE1, &SHAPE341, &SHAPE341,
+ &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
+ &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
+ &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
+ &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE80, &SHAPE80, &SHAPE81,
+ &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85,
+ &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90,
+ &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94,
+ &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99,
+ &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94,
+ &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99,
+ &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91,
+ &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96,
+ &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81,
+ &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86,
+ &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90,
+ &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95,
+ &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99,
+ &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83,
+ &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99,
+ &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84,
+ &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96,
+ &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
&SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86,
&SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91,
&SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95,
@@ -11296,7 +11360,76 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88,
&SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84,
&SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89,
- &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
+ &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE1, &SHAPE1, &SHAPE343, &SHAPE1, &SHAPE1, &SHAPE80,
+ &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84,
+ &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89,
+ &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93,
+ &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98,
+ &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81,
+ &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86,
+ &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82,
+ &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87,
+ &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE344, &SHAPE344,
+ &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347,
+ &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355,
+ &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE358,
+ &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363, &SHAPE364,
+ &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369, &SHAPE371,
+ &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE374,
+ &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379, &SHAPE381, &SHAPE382,
+ &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE388, &SHAPE389,
+ &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE391,
+ &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394, &SHAPE395, &SHAPE396,
+ &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE400, &SHAPE401,
+ &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE403,
+ &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406, &SHAPE407, &SHAPE408,
+ &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE413, &SHAPE415,
+ &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE418,
+ &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423, &SHAPE425, &SHAPE426,
+ &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE432, &SHAPE433,
+ &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE435,
+ &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439, &SHAPE441, &SHAPE442,
+ &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE449, &SHAPE451,
+ &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE454,
+ &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458, &SHAPE459, &SHAPE460,
+ &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE464, &SHAPE465,
+ &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE467,
+ &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470, &SHAPE471, &SHAPE472,
+ &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE476, &SHAPE477,
+ &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE479,
+ &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482, &SHAPE483, &SHAPE484,
+ &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE488, &SHAPE489,
+ &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE491,
+ &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494, &SHAPE495, &SHAPE496,
+ &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE500, &SHAPE501,
+ &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE503,
+ &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506, &SHAPE507, &SHAPE508,
+ &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE512, &SHAPE513,
+ &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE515,
+ &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518, &SHAPE519, &SHAPE520,
+ &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525,
+ &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527,
+ &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532,
+ &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE1, &SHAPE1, &SHAPE240,
+ &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248,
+ &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256,
+ &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264,
+ &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE80,
+ &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84,
+ &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89,
+ &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93,
+ &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98,
+ &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81,
+ &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86,
+ &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82,
+ &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87,
+ &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE536, &SHAPE13,
+ &SHAPE537, &SHAPE193, &SHAPE18, &SHAPE538, &SHAPE538, &SHAPE538, &SHAPE538, &SHAPE538,
+ &SHAPE538, &SHAPE538, &SHAPE538, &SHAPE539, &SHAPE539, &SHAPE539, &SHAPE539, &SHAPE539,
+ &SHAPE539, &SHAPE539, &SHAPE539, &SHAPE540, &SHAPE541, &SHAPE541, &SHAPE541, &SHAPE541,
+ &SHAPE21, &SHAPE21, &SHAPE21, &SHAPE21, &SHAPE1, &SHAPE23, &SHAPE1, &SHAPE1, &SHAPE542,
+ &SHAPE543, &SHAPE544, &SHAPE545, &SHAPE546, &SHAPE547, &SHAPE548, &SHAPE549, &SHAPE550,
+ &SHAPE551, &SHAPE552, &SHAPE553, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
&SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87,
&SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91,
&SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96,
@@ -11305,97 +11438,10 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88,
&SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93,
&SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89,
- &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83,
- &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87,
- &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92,
- &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96,
- &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92,
- &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101,
- &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102,
- &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93,
- &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98,
- &SHAPE98, &SHAPE1, &SHAPE1, &SHAPE343, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81,
- &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85,
- &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90,
- &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94,
- &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99,
- &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94,
- &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99,
- &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91,
- &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96,
- &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13,
- &SHAPE1, &SHAPE1, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0,
- &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355, &SHAPE356,
- &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE358, &SHAPE360,
- &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE365,
- &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369, &SHAPE371, &SHAPE372,
- &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE374, &SHAPE376,
- &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE384,
- &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE388, &SHAPE389, &SHAPE390,
- &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE391, &SHAPE392,
- &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE397,
- &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE400, &SHAPE401, &SHAPE402,
- &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE403, &SHAPE404,
- &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE409,
- &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE413, &SHAPE415, &SHAPE416,
- &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE418, &SHAPE420,
- &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE428,
- &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE432, &SHAPE433, &SHAPE434,
- &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE435, &SHAPE436,
- &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE444,
- &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE449, &SHAPE451, &SHAPE452,
- &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE454, &SHAPE456,
- &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE461,
- &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE464, &SHAPE465, &SHAPE466,
- &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE467, &SHAPE468,
- &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE473,
- &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE476, &SHAPE477, &SHAPE478,
- &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE479, &SHAPE480,
- &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE485,
- &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE488, &SHAPE489, &SHAPE490,
- &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE491, &SHAPE492,
- &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE497,
- &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE500, &SHAPE501, &SHAPE502,
- &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE503, &SHAPE504,
- &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE509,
- &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE512, &SHAPE513, &SHAPE514,
- &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE515, &SHAPE516,
- &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE521,
- &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525, &SHAPE526,
- &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527, &SHAPE528,
- &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE533,
- &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE1, &SHAPE1, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE80, &SHAPE80, &SHAPE81,
- &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85,
- &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90,
- &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94,
- &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99,
- &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94,
- &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99,
- &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91,
- &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96,
- &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE536, &SHAPE13, &SHAPE537, &SHAPE193,
- &SHAPE18, &SHAPE538, &SHAPE538, &SHAPE538, &SHAPE538, &SHAPE538, &SHAPE538, &SHAPE538,
- &SHAPE538, &SHAPE539, &SHAPE539, &SHAPE539, &SHAPE539, &SHAPE539, &SHAPE539, &SHAPE539,
- &SHAPE539, &SHAPE540, &SHAPE541, &SHAPE541, &SHAPE541, &SHAPE541, &SHAPE21, &SHAPE21, &SHAPE21,
- &SHAPE21, &SHAPE1, &SHAPE23, &SHAPE1, &SHAPE1, &SHAPE542, &SHAPE543, &SHAPE544, &SHAPE545,
- &SHAPE546, &SHAPE547, &SHAPE548, &SHAPE549, &SHAPE550, &SHAPE551, &SHAPE552, &SHAPE553,
- &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84,
- &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88,
- &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93,
- &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97,
- &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81,
- &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97,
- &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82,
- &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103,
- &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE1,
- &SHAPE1, &SHAPE104, &SHAPE104, &SHAPE104, &SHAPE104, &SHAPE104, &SHAPE104, &SHAPE104,
- &SHAPE104, &SHAPE554, &SHAPE554, &SHAPE555, &SHAPE555, &SHAPE556, &SHAPE556, &SHAPE557,
- &SHAPE557, &SHAPE554, &SHAPE554, &SHAPE555, &SHAPE555, &SHAPE556, &SHAPE556, &SHAPE557,
- &SHAPE557, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558,
+ &SHAPE98, &SHAPE98, &SHAPE1, &SHAPE1, &SHAPE104, &SHAPE104, &SHAPE104, &SHAPE104, &SHAPE104,
+ &SHAPE104, &SHAPE104, &SHAPE104, &SHAPE554, &SHAPE554, &SHAPE555, &SHAPE555, &SHAPE556,
+ &SHAPE556, &SHAPE557, &SHAPE557, &SHAPE554, &SHAPE554, &SHAPE555, &SHAPE555, &SHAPE556,
+ &SHAPE556, &SHAPE557, &SHAPE557, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558,
&SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558,
&SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558,
&SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558,
@@ -11403,14 +11449,32 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558,
&SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558,
&SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE558,
- &SHAPE558, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
+ &SHAPE558, &SHAPE558, &SHAPE558, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
&SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
&SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
&SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
&SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
&SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
&SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
+ &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81,
+ &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86,
+ &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90,
+ &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95,
+ &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99,
+ &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83,
+ &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99,
+ &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84,
+ &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96,
+ &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
+ &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86,
+ &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91,
+ &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95,
+ &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100,
+ &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83,
+ &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88,
+ &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84,
+ &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89,
+ &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
&SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87,
&SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91,
&SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96,
@@ -11419,306 +11483,253 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88,
&SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93,
&SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89,
- &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83,
- &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87,
- &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92,
- &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96,
- &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92,
- &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101,
- &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102,
- &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93,
- &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98,
- &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83,
- &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88,
- &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92,
- &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97,
- &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92,
- &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97,
- &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102,
- &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103,
- &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347, &SHAPE348,
- &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355, &SHAPE356,
- &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE358, &SHAPE360,
- &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE365,
- &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369, &SHAPE371, &SHAPE372,
- &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE374, &SHAPE376,
- &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE384,
- &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE388, &SHAPE389, &SHAPE390,
- &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE391, &SHAPE392,
- &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE397,
- &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE400, &SHAPE401, &SHAPE402,
- &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE403, &SHAPE404,
- &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE409,
- &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE413, &SHAPE415, &SHAPE416,
- &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE418, &SHAPE420,
- &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE428,
- &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE432, &SHAPE433, &SHAPE434,
- &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE435, &SHAPE436,
- &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE444,
- &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE449, &SHAPE451, &SHAPE452,
- &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE454, &SHAPE456,
- &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE461,
- &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE464, &SHAPE465, &SHAPE466,
- &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE467, &SHAPE468,
- &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE473,
- &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE476, &SHAPE477, &SHAPE478,
- &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE479, &SHAPE480,
- &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE485,
- &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE488, &SHAPE489, &SHAPE490,
- &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE491, &SHAPE492,
- &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE497,
- &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE500, &SHAPE501, &SHAPE502,
- &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE503, &SHAPE504,
- &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE509,
- &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE512, &SHAPE513, &SHAPE514,
- &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE515, &SHAPE516,
- &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE521,
- &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525, &SHAPE526,
- &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527, &SHAPE528,
- &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE533,
- &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE195, &SHAPE347, &SHAPE348,
- &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351,
- &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360,
- &SHAPE361, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362,
- &SHAPE363, &SHAPE364, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367,
- &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376,
- &SHAPE377, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379,
- &SHAPE381, &SHAPE382, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387,
- &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392,
- &SHAPE393, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394,
- &SHAPE395, &SHAPE396, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399,
- &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404,
- &SHAPE405, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406,
- &SHAPE407, &SHAPE408, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411,
- &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420,
- &SHAPE421, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423,
- &SHAPE425, &SHAPE426, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431,
- &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436,
- &SHAPE437, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439,
- &SHAPE441, &SHAPE442, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447,
- &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456,
- &SHAPE457, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458,
- &SHAPE459, &SHAPE460, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463,
- &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468,
- &SHAPE469, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470,
- &SHAPE471, &SHAPE472, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475,
- &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480,
- &SHAPE481, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482,
- &SHAPE483, &SHAPE484, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487,
- &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492,
- &SHAPE493, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494,
- &SHAPE495, &SHAPE496, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499,
- &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504,
- &SHAPE505, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506,
- &SHAPE507, &SHAPE508, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511,
- &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516,
- &SHAPE517, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518,
- &SHAPE519, &SHAPE520, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523,
- &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528,
- &SHAPE529, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530,
- &SHAPE531, &SHAPE532, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535,
- &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38,
+ &SHAPE98, &SHAPE98, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195,
+ &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353,
+ &SHAPE355, &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361,
+ &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363,
+ &SHAPE364, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369,
+ &SHAPE371, &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376, &SHAPE377,
+ &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379, &SHAPE381,
+ &SHAPE382, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE388,
+ &SHAPE389, &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392, &SHAPE393,
+ &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394, &SHAPE395,
+ &SHAPE396, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE400,
+ &SHAPE401, &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404, &SHAPE405,
+ &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406, &SHAPE407,
+ &SHAPE408, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE413,
+ &SHAPE415, &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420, &SHAPE421,
+ &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423, &SHAPE425,
+ &SHAPE426, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE432,
+ &SHAPE433, &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436, &SHAPE437,
+ &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439, &SHAPE441,
+ &SHAPE442, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE449,
+ &SHAPE451, &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456, &SHAPE457,
+ &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458, &SHAPE459,
+ &SHAPE460, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE464,
+ &SHAPE465, &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468, &SHAPE469,
+ &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470, &SHAPE471,
+ &SHAPE472, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE476,
+ &SHAPE477, &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480, &SHAPE481,
+ &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482, &SHAPE483,
+ &SHAPE484, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE488,
+ &SHAPE489, &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492, &SHAPE493,
+ &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494, &SHAPE495,
+ &SHAPE496, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE500,
+ &SHAPE501, &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504, &SHAPE505,
+ &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506, &SHAPE507,
+ &SHAPE508, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE512,
+ &SHAPE513, &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516, &SHAPE517,
+ &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518, &SHAPE519,
+ &SHAPE520, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524,
+ &SHAPE525, &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529,
+ &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531,
+ &SHAPE532, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE195,
+ &SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0,
+ &SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356,
+ &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363,
+ &SHAPE364, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365,
+ &SHAPE366, &SHAPE367, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372,
+ &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381,
+ &SHAPE382, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384,
+ &SHAPE386, &SHAPE387, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390,
+ &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395,
+ &SHAPE396, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397,
+ &SHAPE398, &SHAPE399, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402,
+ &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407,
+ &SHAPE408, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409,
+ &SHAPE410, &SHAPE411, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416,
+ &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425,
+ &SHAPE426, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428,
+ &SHAPE430, &SHAPE431, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434,
+ &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441,
+ &SHAPE442, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444,
+ &SHAPE446, &SHAPE447, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452,
+ &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459,
+ &SHAPE460, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461,
+ &SHAPE462, &SHAPE463, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466,
+ &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471,
+ &SHAPE472, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473,
+ &SHAPE474, &SHAPE475, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478,
+ &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483,
+ &SHAPE484, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485,
+ &SHAPE486, &SHAPE487, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490,
+ &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495,
+ &SHAPE496, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497,
+ &SHAPE498, &SHAPE499, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502,
+ &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507,
+ &SHAPE508, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509,
+ &SHAPE510, &SHAPE511, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514,
+ &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519,
+ &SHAPE520, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521,
+ &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526,
+ &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531,
+ &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533,
+ &SHAPE534, &SHAPE535, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38,
&SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38,
&SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38,
- &SHAPE38, &SHAPE38, &SHAPE12, &SHAPE279, &SHAPE190, &SHAPE536, &SHAPE191, &SHAPE559, &SHAPE13,
- &SHAPE560, &SHAPE12, &SHAPE279, &SHAPE190, &SHAPE536, &SHAPE191, &SHAPE559, &SHAPE13,
- &SHAPE560, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223,
- &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231,
- &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235,
- &SHAPE236, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE12, &SHAPE279, &SHAPE190, &SHAPE536,
+ &SHAPE191, &SHAPE559, &SHAPE13, &SHAPE560, &SHAPE12, &SHAPE279, &SHAPE190, &SHAPE536,
+ &SHAPE191, &SHAPE559, &SHAPE13, &SHAPE560, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222,
+ &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228,
+ &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234,
+ &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565,
- &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563,
+ &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565,
- &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563,
+ &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565,
- &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563,
+ &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565,
- &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563,
+ &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565,
- &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563,
+ &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
&SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561,
- &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563, &SHAPE564, &SHAPE564, &SHAPE565,
- &SHAPE565, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566,
+ &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE561, &SHAPE562, &SHAPE562, &SHAPE563, &SHAPE563,
+ &SHAPE564, &SHAPE564, &SHAPE565, &SHAPE565, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566,
&SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566,
&SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566,
&SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566,
- &SHAPE566, &SHAPE567, &SHAPE567, &SHAPE568, &SHAPE568, &SHAPE569, &SHAPE569, &SHAPE570,
- &SHAPE570, &SHAPE571, &SHAPE571, &SHAPE572, &SHAPE572, &SHAPE571, &SHAPE571, &SHAPE572,
- &SHAPE572, &SHAPE571, &SHAPE571, &SHAPE572, &SHAPE572, &SHAPE104, &SHAPE104, &SHAPE105,
- &SHAPE105, &SHAPE106, &SHAPE106, &SHAPE104, &SHAPE104, &SHAPE106, &SHAPE106, &SHAPE105,
- &SHAPE105, &SHAPE104, &SHAPE104, &SHAPE107, &SHAPE107, &SHAPE108, &SHAPE108, &SHAPE104,
- &SHAPE104, &SHAPE108, &SHAPE108, &SHAPE107, &SHAPE107, &SHAPE220, &SHAPE219, &SHAPE219,
+ &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE566, &SHAPE567, &SHAPE567, &SHAPE568, &SHAPE568,
+ &SHAPE569, &SHAPE569, &SHAPE570, &SHAPE570, &SHAPE571, &SHAPE571, &SHAPE572, &SHAPE572,
+ &SHAPE571, &SHAPE571, &SHAPE572, &SHAPE572, &SHAPE571, &SHAPE571, &SHAPE572, &SHAPE572,
+ &SHAPE104, &SHAPE104, &SHAPE105, &SHAPE105, &SHAPE106, &SHAPE106, &SHAPE104, &SHAPE104,
+ &SHAPE106, &SHAPE106, &SHAPE105, &SHAPE105, &SHAPE104, &SHAPE104, &SHAPE107, &SHAPE107,
+ &SHAPE108, &SHAPE108, &SHAPE104, &SHAPE104, &SHAPE108, &SHAPE108, &SHAPE107, &SHAPE107,
+ &SHAPE220, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219,
&SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219,
- &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE219,
+ &SHAPE220, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219,
&SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219,
- &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE219, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
&SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12,
- &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191,
+ &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE191, &SHAPE191,
&SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191,
&SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191,
&SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191,
- &SHAPE191, &SHAPE191, &SHAPE1, &SHAPE1, &SHAPE573, &SHAPE574, &SHAPE575, &SHAPE576, &SHAPE577,
- &SHAPE573, &SHAPE574, &SHAPE575, &SHAPE576, &SHAPE577, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83,
- &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88,
- &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92,
- &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97,
- &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92,
- &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97,
- &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102,
- &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103,
- &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98,
- &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
- &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE13, &SHAPE13,
- &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE191, &SHAPE1, &SHAPE1, &SHAPE573,
+ &SHAPE574, &SHAPE575, &SHAPE576, &SHAPE577, &SHAPE573, &SHAPE574, &SHAPE575, &SHAPE576,
+ &SHAPE577, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81,
+ &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86,
+ &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90,
+ &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95,
+ &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99,
+ &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83,
+ &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99,
+ &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84,
+ &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96,
+ &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE12, &SHAPE13,
+ &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE12, &SHAPE12,
+ &SHAPE12, &SHAPE12, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280, &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282,
- &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284, &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286,
- &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288, &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290,
- &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292, &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294,
- &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
- &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87,
- &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91,
- &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96,
- &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100,
- &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101,
- &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88,
- &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93,
- &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89,
- &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83,
- &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87,
- &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92,
- &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96,
- &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92,
- &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101,
- &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102,
- &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93,
- &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98,
- &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83,
- &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88,
- &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92,
- &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97,
- &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92,
- &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97,
- &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102,
- &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103,
- &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98,
- &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84,
- &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88,
- &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93,
- &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97,
- &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81,
- &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97,
- &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82,
- &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103,
- &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE280,
+ &SHAPE281, &SHAPE280, &SHAPE281, &SHAPE282, &SHAPE283, &SHAPE282, &SHAPE283, &SHAPE284,
+ &SHAPE285, &SHAPE284, &SHAPE285, &SHAPE286, &SHAPE287, &SHAPE286, &SHAPE287, &SHAPE288,
+ &SHAPE289, &SHAPE288, &SHAPE289, &SHAPE290, &SHAPE291, &SHAPE290, &SHAPE291, &SHAPE292,
+ &SHAPE293, &SHAPE292, &SHAPE293, &SHAPE294, &SHAPE295, &SHAPE294, &SHAPE295, &SHAPE80,
&SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84,
&SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89,
&SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93,
@@ -11745,19 +11756,25 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99,
&SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91,
&SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96,
- &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE0, &SHAPE0,
- &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
- &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
- &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
- &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
- &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
- &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
- &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
- &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
- &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
- &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278,
- &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
+ &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81,
+ &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86,
+ &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90,
+ &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95,
+ &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99,
+ &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83,
+ &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99,
+ &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84,
+ &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96,
+ &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
+ &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86,
+ &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91,
+ &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95,
+ &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100,
+ &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83,
+ &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88,
+ &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84,
+ &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89,
+ &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
&SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87,
&SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91,
&SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96,
@@ -11775,21 +11792,51 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102,
&SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93,
&SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98,
- &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83,
- &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88,
- &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92,
- &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97,
- &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92,
- &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97,
- &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102,
- &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103,
- &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98,
- &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
- &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79,
+ &SHAPE98, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
+ &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
+ &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0,
+ &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE197, &SHAPE197, &SHAPE197,
+ &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197, &SHAPE197,
+ &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199, &SHAPE199,
+ &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199, &SHAPE199,
+ &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198, &SHAPE198,
+ &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198, &SHAPE198,
+ &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196, &SHAPE196,
+ &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196, &SHAPE196,
+ &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE80,
+ &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84,
+ &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89,
+ &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93,
+ &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98,
+ &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81,
+ &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86,
+ &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82,
+ &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87,
+ &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80,
+ &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85,
+ &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89,
+ &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94,
+ &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98,
+ &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94,
+ &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86,
+ &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91,
+ &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87,
+ &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81,
+ &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85,
+ &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90,
+ &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94,
+ &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99,
+ &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94,
+ &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99,
+ &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91,
+ &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96,
+ &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13,
+ &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344,
+ &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE79,
&SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79,
- &SHAPE79, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE195, &SHAPE195, &SHAPE195,
+ &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE79, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
@@ -11821,7 +11868,7 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
- &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE578, &SHAPE579, &SHAPE580,
+ &SHAPE195, &SHAPE578, &SHAPE579, &SHAPE580, &SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580,
&SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580, &SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580,
&SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580, &SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580,
&SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580, &SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580,
@@ -11829,187 +11876,7 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580, &SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580,
&SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580, &SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580,
&SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580, &SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580,
- &SHAPE581, &SHAPE578, &SHAPE579, &SHAPE580, &SHAPE581, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE80,
- &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84,
- &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89,
- &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93,
- &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98,
- &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81,
- &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86,
- &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82,
- &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87,
- &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
- &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
- &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
- &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
- &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
- &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
- &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
- &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
- &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242,
- &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250,
- &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258,
- &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266,
- &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196,
- &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198,
- &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197,
- &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199,
- &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE582, &SHAPE583,
- &SHAPE582, &SHAPE583, &SHAPE270, &SHAPE270, &SHAPE584, &SHAPE585, &SHAPE586, &SHAPE587,
- &SHAPE588, &SHAPE589, &SHAPE590, &SHAPE591, &SHAPE592, &SHAPE593, &SHAPE594, &SHAPE595,
- &SHAPE596, &SHAPE597, &SHAPE598, &SHAPE599, &SHAPE600, &SHAPE601, &SHAPE602, &SHAPE603,
- &SHAPE604, &SHAPE605, &SHAPE606, &SHAPE607, &SHAPE608, &SHAPE609, &SHAPE610, &SHAPE611,
- &SHAPE612, &SHAPE205, &SHAPE613, &SHAPE614, &SHAPE615, &SHAPE616, &SHAPE617, &SHAPE618,
- &SHAPE619, &SHAPE620, &SHAPE621, &SHAPE622, &SHAPE623, &SHAPE624, &SHAPE625, &SHAPE626,
- &SHAPE627, &SHAPE628, &SHAPE629, &SHAPE630, &SHAPE631, &SHAPE632, &SHAPE633, &SHAPE634,
- &SHAPE635, &SHAPE636, &SHAPE637, &SHAPE638, &SHAPE639, &SHAPE640, &SHAPE641, &SHAPE642,
- &SHAPE643, &SHAPE644, &SHAPE645, &SHAPE646, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
+ &SHAPE581, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
&SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86,
&SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91,
&SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95,
@@ -12018,13 +11885,192 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88,
&SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84,
&SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89,
- &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE1, &SHAPE38, &SHAPE647, &SHAPE0, &SHAPE648, &SHAPE0,
- &SHAPE650, &SHAPE0, &SHAPE651, &SHAPE652, &SHAPE651, &SHAPE653, &SHAPE651, &SHAPE1, &SHAPE1,
- &SHAPE12, &SHAPE190, &SHAPE191, &SHAPE13, &SHAPE194, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
+ &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
+ &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
+ &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
+ &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
+ &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
+ &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
+ &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
+ &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252,
+ &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258,
+ &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244,
+ &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252,
+ &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260,
+ &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268,
+ &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198,
+ &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
+ &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
+ &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197,
+ &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE582, &SHAPE583, &SHAPE582, &SHAPE583, &SHAPE270,
+ &SHAPE270, &SHAPE584, &SHAPE585, &SHAPE586, &SHAPE587, &SHAPE588, &SHAPE589, &SHAPE590,
+ &SHAPE591, &SHAPE592, &SHAPE593, &SHAPE594, &SHAPE595, &SHAPE596, &SHAPE597, &SHAPE598,
+ &SHAPE599, &SHAPE600, &SHAPE601, &SHAPE602, &SHAPE603, &SHAPE604, &SHAPE605, &SHAPE606,
+ &SHAPE607, &SHAPE608, &SHAPE609, &SHAPE610, &SHAPE611, &SHAPE612, &SHAPE205, &SHAPE613,
+ &SHAPE614, &SHAPE615, &SHAPE616, &SHAPE617, &SHAPE618, &SHAPE619, &SHAPE620, &SHAPE621,
+ &SHAPE622, &SHAPE623, &SHAPE624, &SHAPE625, &SHAPE626, &SHAPE627, &SHAPE628, &SHAPE629,
+ &SHAPE630, &SHAPE631, &SHAPE632, &SHAPE633, &SHAPE634, &SHAPE635, &SHAPE636, &SHAPE637,
+ &SHAPE638, &SHAPE639, &SHAPE640, &SHAPE641, &SHAPE642, &SHAPE643, &SHAPE644, &SHAPE645,
+ &SHAPE646, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83,
+ &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88,
+ &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92,
+ &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97,
+ &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92,
+ &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97,
+ &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102,
+ &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103,
+ &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98,
+ &SHAPE1, &SHAPE38, &SHAPE647, &SHAPE0, &SHAPE648, &SHAPE0, &SHAPE650, &SHAPE0, &SHAPE651,
+ &SHAPE652, &SHAPE651, &SHAPE653, &SHAPE651, &SHAPE1, &SHAPE1, &SHAPE12, &SHAPE190, &SHAPE191,
+ &SHAPE13, &SHAPE194, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE654, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE654, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
@@ -12045,62 +12091,36 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE560, &SHAPE560,
+ &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560,
&SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560,
&SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560,
- &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE1, &SHAPE1, &SHAPE655, &SHAPE655, &SHAPE655, &SHAPE656,
- &SHAPE656, &SHAPE656, &SHAPE656, &SHAPE656, &SHAPE656, &SHAPE656, &SHAPE656, &SHAPE656,
- &SHAPE657, &SHAPE657, &SHAPE657, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658,
+ &SHAPE1, &SHAPE1, &SHAPE655, &SHAPE655, &SHAPE655, &SHAPE656, &SHAPE656, &SHAPE656, &SHAPE656,
+ &SHAPE656, &SHAPE656, &SHAPE656, &SHAPE656, &SHAPE656, &SHAPE657, &SHAPE657, &SHAPE657,
&SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658,
&SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658,
&SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658,
- &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659,
+ &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658, &SHAPE658,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659,
&SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659,
- &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE660, &SHAPE660,
+ &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE659, &SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660,
&SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660,
&SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660, &SHAPE660,
- &SHAPE660, &SHAPE660, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663,
- &SHAPE664, &SHAPE664, &SHAPE665, &SHAPE665, &SHAPE666, &SHAPE666, &SHAPE667, &SHAPE667,
- &SHAPE668, &SHAPE668, &SHAPE1, &SHAPE654, &SHAPE654, &SHAPE669, &SHAPE671, &SHAPE671,
- &SHAPE671, &SHAPE671, &SHAPE672, &SHAPE672, &SHAPE671, &SHAPE671, &SHAPE671, &SHAPE671,
- &SHAPE672, &SHAPE672, &SHAPE38, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE80, &SHAPE80,
- &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85,
- &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89,
- &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94,
- &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98,
- &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94,
- &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86,
- &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91,
- &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87,
- &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81,
- &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85,
- &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90,
- &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94,
- &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99,
- &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94,
- &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99,
- &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91,
- &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96,
- &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81,
- &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86,
- &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90,
- &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95,
- &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99,
- &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83,
- &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99,
- &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84,
- &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96,
- &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE661, &SHAPE661, &SHAPE662, &SHAPE662, &SHAPE663, &SHAPE663, &SHAPE664, &SHAPE664,
+ &SHAPE665, &SHAPE665, &SHAPE666, &SHAPE666, &SHAPE667, &SHAPE667, &SHAPE668, &SHAPE668,
+ &SHAPE1, &SHAPE654, &SHAPE654, &SHAPE669, &SHAPE671, &SHAPE671, &SHAPE671, &SHAPE671,
+ &SHAPE672, &SHAPE672, &SHAPE671, &SHAPE671, &SHAPE671, &SHAPE671, &SHAPE672, &SHAPE672,
+ &SHAPE38, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE0, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
&SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86,
&SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91,
&SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95,
@@ -12198,7 +12218,33 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88,
&SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93,
&SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89,
- &SHAPE98, &SHAPE98, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344,
+ &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83,
+ &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87,
+ &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92,
+ &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96,
+ &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92,
+ &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101,
+ &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102,
+ &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93,
+ &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98,
+ &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83,
+ &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88,
+ &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92,
+ &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97,
+ &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92,
+ &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97,
+ &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102,
+ &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103,
+ &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98,
+ &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84,
+ &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88,
+ &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93,
+ &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97,
+ &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81,
+ &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97,
+ &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82,
+ &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103,
+ &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE344,
&SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13,
&SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344,
&SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13,
@@ -12206,7 +12252,48 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13,
&SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344,
&SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13,
- &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE195,
+ &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344,
+ &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195,
+ &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353,
+ &SHAPE355, &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361,
+ &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363,
+ &SHAPE364, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369,
+ &SHAPE371, &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376, &SHAPE377,
+ &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379, &SHAPE381,
+ &SHAPE382, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE388,
+ &SHAPE389, &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392, &SHAPE393,
+ &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394, &SHAPE395,
+ &SHAPE396, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE400,
+ &SHAPE401, &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404, &SHAPE405,
+ &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406, &SHAPE407,
+ &SHAPE408, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE413,
+ &SHAPE415, &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420, &SHAPE421,
+ &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423, &SHAPE425,
+ &SHAPE426, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE432,
+ &SHAPE433, &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436, &SHAPE437,
+ &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439, &SHAPE441,
+ &SHAPE442, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE449,
+ &SHAPE451, &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456, &SHAPE457,
+ &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458, &SHAPE459,
+ &SHAPE460, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE464,
+ &SHAPE465, &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468, &SHAPE469,
+ &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470, &SHAPE471,
+ &SHAPE472, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE476,
+ &SHAPE477, &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480, &SHAPE481,
+ &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482, &SHAPE483,
+ &SHAPE484, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE488,
+ &SHAPE489, &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492, &SHAPE493,
+ &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494, &SHAPE495,
+ &SHAPE496, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE500,
+ &SHAPE501, &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504, &SHAPE505,
+ &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506, &SHAPE507,
+ &SHAPE508, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE512,
+ &SHAPE513, &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516, &SHAPE517,
+ &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518, &SHAPE519,
+ &SHAPE520, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524,
+ &SHAPE525, &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529,
+ &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531,
+ &SHAPE532, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE195,
&SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0,
&SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356,
&SHAPE358, &SHAPE360, &SHAPE361, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363,
@@ -12691,68 +12778,28 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525, &SHAPE526,
&SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527, &SHAPE528,
&SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE533,
- &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE195, &SHAPE347, &SHAPE348,
- &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351,
- &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360,
- &SHAPE361, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362,
- &SHAPE363, &SHAPE364, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367,
- &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376,
- &SHAPE377, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379,
- &SHAPE381, &SHAPE382, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387,
- &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392,
- &SHAPE393, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394,
- &SHAPE395, &SHAPE396, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399,
- &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404,
- &SHAPE405, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406,
- &SHAPE407, &SHAPE408, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411,
- &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420,
- &SHAPE421, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423,
- &SHAPE425, &SHAPE426, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431,
- &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436,
- &SHAPE437, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439,
- &SHAPE441, &SHAPE442, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447,
- &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456,
- &SHAPE457, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458,
- &SHAPE459, &SHAPE460, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463,
- &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468,
- &SHAPE469, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470,
- &SHAPE471, &SHAPE472, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475,
- &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480,
- &SHAPE481, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482,
- &SHAPE483, &SHAPE484, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487,
- &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492,
- &SHAPE493, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494,
- &SHAPE495, &SHAPE496, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499,
- &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504,
- &SHAPE505, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506,
- &SHAPE507, &SHAPE508, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511,
- &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516,
- &SHAPE517, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518,
- &SHAPE519, &SHAPE520, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523,
- &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528,
- &SHAPE529, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530,
- &SHAPE531, &SHAPE532, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535,
+ &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE674, &SHAPE674, &SHAPE674,
&SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674,
- &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674,
- &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673,
+ &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE674, &SHAPE673, &SHAPE673, &SHAPE673,
&SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673,
+ &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE673, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE675, &SHAPE675, &SHAPE676, &SHAPE676, &SHAPE677,
- &SHAPE678, &SHAPE679, &SHAPE680, &SHAPE681, &SHAPE681, &SHAPE682, &SHAPE682, &SHAPE684,
- &SHAPE684, &SHAPE684, &SHAPE684, &SHAPE685, &SHAPE685, &SHAPE685, &SHAPE685, &SHAPE686,
- &SHAPE686, &SHAPE686, &SHAPE686, &SHAPE687, &SHAPE687, &SHAPE687, &SHAPE687, &SHAPE1,
- &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE560, &SHAPE688, &SHAPE688, &SHAPE688, &SHAPE688,
- &SHAPE689, &SHAPE689, &SHAPE689, &SHAPE689, &SHAPE690, &SHAPE690, &SHAPE690, &SHAPE690,
- &SHAPE690, &SHAPE690, &SHAPE690, &SHAPE690, &SHAPE691, &SHAPE691, &SHAPE692, &SHAPE692,
- &SHAPE693, &SHAPE693, &SHAPE694, &SHAPE694, &SHAPE695, &SHAPE695, &SHAPE695, &SHAPE695,
- &SHAPE696, &SHAPE696, &SHAPE696, &SHAPE696, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698,
- &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698,
- &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698,
- &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698,
- &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698,
- &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559,
+ &SHAPE675, &SHAPE675, &SHAPE676, &SHAPE676, &SHAPE677, &SHAPE678, &SHAPE679, &SHAPE680,
+ &SHAPE681, &SHAPE681, &SHAPE682, &SHAPE682, &SHAPE684, &SHAPE684, &SHAPE684, &SHAPE684,
+ &SHAPE685, &SHAPE685, &SHAPE685, &SHAPE685, &SHAPE686, &SHAPE686, &SHAPE686, &SHAPE686,
+ &SHAPE687, &SHAPE687, &SHAPE687, &SHAPE687, &SHAPE1, &SHAPE560, &SHAPE560, &SHAPE560,
+ &SHAPE560, &SHAPE688, &SHAPE688, &SHAPE688, &SHAPE688, &SHAPE689, &SHAPE689, &SHAPE689,
+ &SHAPE689, &SHAPE690, &SHAPE690, &SHAPE690, &SHAPE690, &SHAPE690, &SHAPE690, &SHAPE690,
+ &SHAPE690, &SHAPE691, &SHAPE691, &SHAPE692, &SHAPE692, &SHAPE693, &SHAPE693, &SHAPE694,
+ &SHAPE694, &SHAPE695, &SHAPE695, &SHAPE695, &SHAPE695, &SHAPE696, &SHAPE696, &SHAPE696,
+ &SHAPE696, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698,
+ &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698,
+ &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698,
+ &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698,
+ &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698, &SHAPE698, &SHAPE697, &SHAPE697, &SHAPE698,
+ &SHAPE698, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559,
&SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559,
&SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559,
&SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559,
@@ -12760,91 +12807,91 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559,
&SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559,
&SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559,
- &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE559, &SHAPE566, &SHAPE23, &SHAPE23, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE699, &SHAPE1, &SHAPE20, &SHAPE700, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE699,
- &SHAPE1, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701,
+ &SHAPE559, &SHAPE566, &SHAPE23, &SHAPE23, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE699, &SHAPE1,
+ &SHAPE20, &SHAPE700, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE699, &SHAPE1, &SHAPE701, &SHAPE701,
+ &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701,
&SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701,
&SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE701,
- &SHAPE701, &SHAPE701, &SHAPE701, &SHAPE23, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702,
+ &SHAPE23, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702,
&SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702,
&SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702,
- &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE195, &SHAPE20, &SHAPE1,
- &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE240,
- &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248,
- &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256,
- &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264,
- &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240,
- &SHAPE242, &SHAPE240, &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248,
- &SHAPE250, &SHAPE248, &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256,
- &SHAPE258, &SHAPE256, &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264,
- &SHAPE266, &SHAPE264, &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197,
- &SHAPE197, &SHAPE197, &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199,
- &SHAPE199, &SHAPE199, &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198,
- &SHAPE198, &SHAPE198, &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196,
- &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341,
- &SHAPE341, &SHAPE341, &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342,
- &SHAPE342, &SHAPE342, &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE80,
- &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84,
- &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89,
- &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93,
- &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98,
- &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81,
- &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86,
- &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82,
- &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87,
- &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80,
- &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85,
- &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89,
- &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94,
- &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98,
- &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94,
- &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86,
- &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91,
- &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87,
- &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE221, &SHAPE222, &SHAPE221,
- &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227,
- &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233,
- &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221,
- &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227,
- &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233,
- &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE196, &SHAPE196, &SHAPE197,
- &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197,
- &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
- &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199,
- &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198,
- &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198,
- &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
- &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196,
- &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197,
- &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197,
- &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199,
- &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199,
- &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198,
- &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198,
- &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196,
- &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196,
- &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE195, &SHAPE195, &SHAPE195,
+ &SHAPE702, &SHAPE702, &SHAPE702, &SHAPE195, &SHAPE20, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
+ &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
+ &SHAPE1, &SHAPE219, &SHAPE220, &SHAPE219, &SHAPE220, &SHAPE240, &SHAPE242, &SHAPE240,
+ &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248,
+ &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256,
+ &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264,
+ &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE240, &SHAPE242, &SHAPE240,
+ &SHAPE242, &SHAPE244, &SHAPE246, &SHAPE244, &SHAPE246, &SHAPE248, &SHAPE250, &SHAPE248,
+ &SHAPE250, &SHAPE252, &SHAPE254, &SHAPE252, &SHAPE254, &SHAPE256, &SHAPE258, &SHAPE256,
+ &SHAPE258, &SHAPE260, &SHAPE262, &SHAPE260, &SHAPE262, &SHAPE264, &SHAPE266, &SHAPE264,
+ &SHAPE266, &SHAPE268, &SHAPE270, &SHAPE268, &SHAPE270, &SHAPE197, &SHAPE197, &SHAPE197,
+ &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197, &SHAPE197,
+ &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199, &SHAPE199,
+ &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199, &SHAPE199,
+ &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198, &SHAPE198,
+ &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198, &SHAPE198,
+ &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196, &SHAPE196,
+ &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196, &SHAPE196,
+ &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE197, &SHAPE197, &SHAPE197,
+ &SHAPE197, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE197, &SHAPE197, &SHAPE197,
+ &SHAPE197, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE199, &SHAPE199, &SHAPE199,
+ &SHAPE199, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE199, &SHAPE199, &SHAPE199,
+ &SHAPE199, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE198, &SHAPE198, &SHAPE198,
+ &SHAPE198, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE198, &SHAPE198, &SHAPE198,
+ &SHAPE198, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE196, &SHAPE196, &SHAPE196,
+ &SHAPE196, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE278, &SHAPE196, &SHAPE196, &SHAPE196,
+ &SHAPE196, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE279, &SHAPE341, &SHAPE341, &SHAPE341,
+ &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341,
+ &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342,
+ &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342,
+ &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE341, &SHAPE341, &SHAPE341,
+ &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE341, &SHAPE341, &SHAPE341,
+ &SHAPE341, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE252, &SHAPE342, &SHAPE342, &SHAPE342,
+ &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE342, &SHAPE342, &SHAPE342,
+ &SHAPE342, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE258, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81,
+ &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86,
+ &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90,
+ &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95,
+ &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99,
+ &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83,
+ &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99,
+ &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84,
+ &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96,
+ &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
+ &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86,
+ &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91,
+ &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95,
+ &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100,
+ &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83,
+ &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88,
+ &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84,
+ &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89,
+ &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224,
+ &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230,
+ &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236,
+ &SHAPE235, &SHAPE236, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223, &SHAPE224,
+ &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229, &SHAPE230,
+ &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235, &SHAPE236,
+ &SHAPE235, &SHAPE236, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
+ &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
+ &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196,
+ &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196,
+ &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
+ &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
+ &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197,
+ &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197,
+ &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
+ &SHAPE197, &SHAPE197, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198,
+ &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196,
+ &SHAPE199, &SHAPE199, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196,
+ &SHAPE199, &SHAPE199, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
+ &SHAPE198, &SHAPE198, &SHAPE197, &SHAPE197, &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199,
+ &SHAPE198, &SHAPE198, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197,
+ &SHAPE196, &SHAPE196, &SHAPE199, &SHAPE199, &SHAPE196, &SHAPE196, &SHAPE197, &SHAPE197,
+ &SHAPE196, &SHAPE196, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
@@ -12852,219 +12899,20 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
&SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195,
- &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE195, &SHAPE200, &SHAPE200, &SHAPE201,
- &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201,
- &SHAPE201, &SHAPE202, &SHAPE202, &SHAPE203, &SHAPE203, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE703, &SHAPE704, &SHAPE705,
- &SHAPE706, &SHAPE707, &SHAPE708, &SHAPE709, &SHAPE710, &SHAPE710, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE195, &SHAPE195, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE200, &SHAPE200, &SHAPE201, &SHAPE201, &SHAPE202, &SHAPE202,
+ &SHAPE203, &SHAPE203, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE703, &SHAPE704, &SHAPE705, &SHAPE706, &SHAPE707, &SHAPE708,
+ &SHAPE709, &SHAPE710, &SHAPE710, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
&SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE1, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE38, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80,
- &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85,
- &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89,
- &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94,
- &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98,
- &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94,
- &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86,
- &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91,
- &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87,
- &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE195, &SHAPE347, &SHAPE348,
- &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351,
- &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360,
- &SHAPE361, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362,
- &SHAPE363, &SHAPE364, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367,
- &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376,
- &SHAPE377, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379,
- &SHAPE381, &SHAPE382, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387,
- &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392,
- &SHAPE393, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394,
- &SHAPE395, &SHAPE396, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399,
- &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404,
- &SHAPE405, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406,
- &SHAPE407, &SHAPE408, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411,
- &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420,
- &SHAPE421, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423,
- &SHAPE425, &SHAPE426, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431,
- &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436,
- &SHAPE437, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439,
- &SHAPE441, &SHAPE442, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447,
- &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456,
- &SHAPE457, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458,
- &SHAPE459, &SHAPE460, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463,
- &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468,
- &SHAPE469, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470,
- &SHAPE471, &SHAPE472, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475,
- &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480,
- &SHAPE481, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482,
- &SHAPE483, &SHAPE484, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487,
- &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492,
- &SHAPE493, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494,
- &SHAPE495, &SHAPE496, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499,
- &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504,
- &SHAPE505, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506,
- &SHAPE507, &SHAPE508, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511,
- &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516,
- &SHAPE517, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518,
- &SHAPE519, &SHAPE520, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523,
- &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528,
- &SHAPE529, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530,
- &SHAPE531, &SHAPE532, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535,
- &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1,
- &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81,
- &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85,
- &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90,
- &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94,
- &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99,
- &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94,
- &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99,
- &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91,
- &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96,
- &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195,
- &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353,
- &SHAPE355, &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361,
- &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363,
- &SHAPE364, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369,
- &SHAPE371, &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376, &SHAPE377,
- &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379, &SHAPE381,
- &SHAPE382, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE388,
- &SHAPE389, &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392, &SHAPE393,
- &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394, &SHAPE395,
- &SHAPE396, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE400,
- &SHAPE401, &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404, &SHAPE405,
- &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406, &SHAPE407,
- &SHAPE408, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE413,
- &SHAPE415, &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420, &SHAPE421,
- &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423, &SHAPE425,
- &SHAPE426, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE432,
- &SHAPE433, &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436, &SHAPE437,
- &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439, &SHAPE441,
- &SHAPE442, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE449,
- &SHAPE451, &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456, &SHAPE457,
- &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458, &SHAPE459,
- &SHAPE460, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE464,
- &SHAPE465, &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468, &SHAPE469,
- &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470, &SHAPE471,
- &SHAPE472, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE476,
- &SHAPE477, &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480, &SHAPE481,
- &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482, &SHAPE483,
- &SHAPE484, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE488,
- &SHAPE489, &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492, &SHAPE493,
- &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494, &SHAPE495,
- &SHAPE496, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE500,
- &SHAPE501, &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504, &SHAPE505,
- &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506, &SHAPE507,
- &SHAPE508, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE512,
- &SHAPE513, &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516, &SHAPE517,
- &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518, &SHAPE519,
- &SHAPE520, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524,
- &SHAPE525, &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529,
- &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531,
- &SHAPE532, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE1, &SHAPE80,
- &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84,
- &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89,
- &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93,
- &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98,
- &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81,
- &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86,
- &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82,
- &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87,
- &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE219, &SHAPE220, &SHAPE221, &SHAPE222, &SHAPE221,
- &SHAPE222, &SHAPE223, &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227,
- &SHAPE228, &SHAPE229, &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233,
- &SHAPE234, &SHAPE235, &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE195, &SHAPE347, &SHAPE348,
- &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351,
- &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360,
- &SHAPE361, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362,
- &SHAPE363, &SHAPE364, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367,
- &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376,
- &SHAPE377, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379,
- &SHAPE381, &SHAPE382, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387,
- &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392,
- &SHAPE393, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394,
- &SHAPE395, &SHAPE396, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399,
- &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404,
- &SHAPE405, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406,
- &SHAPE407, &SHAPE408, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411,
- &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420,
- &SHAPE421, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423,
- &SHAPE425, &SHAPE426, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431,
- &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436,
- &SHAPE437, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439,
- &SHAPE441, &SHAPE442, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447,
- &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456,
- &SHAPE457, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458,
- &SHAPE459, &SHAPE460, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463,
- &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468,
- &SHAPE469, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470,
- &SHAPE471, &SHAPE472, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475,
- &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480,
- &SHAPE481, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482,
- &SHAPE483, &SHAPE484, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487,
- &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492,
- &SHAPE493, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494,
- &SHAPE495, &SHAPE496, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499,
- &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504,
- &SHAPE505, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506,
- &SHAPE507, &SHAPE508, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511,
- &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516,
- &SHAPE517, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518,
- &SHAPE519, &SHAPE520, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523,
- &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528,
- &SHAPE529, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530,
- &SHAPE531, &SHAPE532, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535,
- &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711,
- &SHAPE711, &SHAPE711, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713,
- &SHAPE713, &SHAPE713, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714,
- &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714,
- &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714,
- &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714,
- &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE1, &SHAPE1, &SHAPE715, &SHAPE715, &SHAPE716,
- &SHAPE716, &SHAPE717, &SHAPE717, &SHAPE718, &SHAPE718, &SHAPE719, &SHAPE719, &SHAPE720,
- &SHAPE720, &SHAPE721, &SHAPE721, &SHAPE722, &SHAPE722, &SHAPE723, &SHAPE723, &SHAPE724,
- &SHAPE724, &SHAPE725, &SHAPE725, &SHAPE726, &SHAPE726, &SHAPE727, &SHAPE727, &SHAPE728,
- &SHAPE728, &SHAPE729, &SHAPE729, &SHAPE730, &SHAPE730, &SHAPE731, &SHAPE731, &SHAPE732,
- &SHAPE732, &SHAPE733, &SHAPE733, &SHAPE734, &SHAPE734, &SHAPE735, &SHAPE735, &SHAPE736,
- &SHAPE736, &SHAPE737, &SHAPE737, &SHAPE738, &SHAPE738, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
- &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
+ &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE38, &SHAPE38, &SHAPE38,
+ &SHAPE38, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
&SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87,
&SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91,
&SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96,
@@ -13113,7 +12961,8 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525, &SHAPE526,
&SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527, &SHAPE528,
&SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE533,
- &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
&SHAPE13, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
&SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87,
&SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91,
@@ -13163,18 +13012,216 @@ static OUTLINE_SHAPES_MAP: [&LazyLock<VoxelShape>; 29671] = [
&SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525, &SHAPE526,
&SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527, &SHAPE528,
&SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE533,
- &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344,
- &SHAPE13, &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82,
- &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86,
- &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91,
- &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95,
- &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100,
- &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83,
- &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88,
- &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84,
- &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89,
- &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347, &SHAPE348,
- &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355, &SHAPE356,
+ &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81,
+ &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85,
+ &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90,
+ &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94,
+ &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99,
+ &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94,
+ &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99,
+ &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91,
+ &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96,
+ &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13,
+ &SHAPE1, &SHAPE1, &SHAPE219, &SHAPE220, &SHAPE221, &SHAPE222, &SHAPE221, &SHAPE222, &SHAPE223,
+ &SHAPE224, &SHAPE223, &SHAPE224, &SHAPE225, &SHAPE226, &SHAPE227, &SHAPE228, &SHAPE229,
+ &SHAPE230, &SHAPE231, &SHAPE232, &SHAPE233, &SHAPE234, &SHAPE233, &SHAPE234, &SHAPE235,
+ &SHAPE236, &SHAPE235, &SHAPE236, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347,
+ &SHAPE348, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355,
+ &SHAPE356, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE358,
+ &SHAPE360, &SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363, &SHAPE364,
+ &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369, &SHAPE371,
+ &SHAPE372, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE374,
+ &SHAPE376, &SHAPE377, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379, &SHAPE381, &SHAPE382,
+ &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE388, &SHAPE389,
+ &SHAPE390, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE391,
+ &SHAPE392, &SHAPE393, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394, &SHAPE395, &SHAPE396,
+ &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE400, &SHAPE401,
+ &SHAPE402, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE403,
+ &SHAPE404, &SHAPE405, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406, &SHAPE407, &SHAPE408,
+ &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE413, &SHAPE415,
+ &SHAPE416, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE418,
+ &SHAPE420, &SHAPE421, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423, &SHAPE425, &SHAPE426,
+ &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE432, &SHAPE433,
+ &SHAPE434, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE435,
+ &SHAPE436, &SHAPE437, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439, &SHAPE441, &SHAPE442,
+ &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE449, &SHAPE451,
+ &SHAPE452, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE454,
+ &SHAPE456, &SHAPE457, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458, &SHAPE459, &SHAPE460,
+ &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE464, &SHAPE465,
+ &SHAPE466, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE467,
+ &SHAPE468, &SHAPE469, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470, &SHAPE471, &SHAPE472,
+ &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE476, &SHAPE477,
+ &SHAPE478, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE479,
+ &SHAPE480, &SHAPE481, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482, &SHAPE483, &SHAPE484,
+ &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE488, &SHAPE489,
+ &SHAPE490, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE491,
+ &SHAPE492, &SHAPE493, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494, &SHAPE495, &SHAPE496,
+ &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE500, &SHAPE501,
+ &SHAPE502, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE503,
+ &SHAPE504, &SHAPE505, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506, &SHAPE507, &SHAPE508,
+ &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE512, &SHAPE513,
+ &SHAPE514, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE515,
+ &SHAPE516, &SHAPE517, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518, &SHAPE519, &SHAPE520,
+ &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525,
+ &SHAPE526, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527,
+ &SHAPE528, &SHAPE529, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532,
+ &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE1, &SHAPE1, &SHAPE1,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE305, &SHAPE711, &SHAPE711, &SHAPE711, &SHAPE711,
+ &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE712, &SHAPE713, &SHAPE713, &SHAPE713, &SHAPE713,
+ &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714,
+ &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714,
+ &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714,
+ &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714, &SHAPE714,
+ &SHAPE714, &SHAPE714, &SHAPE1, &SHAPE1, &SHAPE715, &SHAPE715, &SHAPE716, &SHAPE716, &SHAPE717,
+ &SHAPE717, &SHAPE718, &SHAPE718, &SHAPE719, &SHAPE719, &SHAPE720, &SHAPE720, &SHAPE721,
+ &SHAPE721, &SHAPE722, &SHAPE722, &SHAPE723, &SHAPE723, &SHAPE724, &SHAPE724, &SHAPE725,
+ &SHAPE725, &SHAPE726, &SHAPE726, &SHAPE727, &SHAPE727, &SHAPE728, &SHAPE728, &SHAPE729,
+ &SHAPE729, &SHAPE730, &SHAPE730, &SHAPE731, &SHAPE731, &SHAPE732, &SHAPE732, &SHAPE733,
+ &SHAPE733, &SHAPE734, &SHAPE734, &SHAPE735, &SHAPE735, &SHAPE736, &SHAPE736, &SHAPE737,
+ &SHAPE737, &SHAPE738, &SHAPE738, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13, &SHAPE1,
+ &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83, &SHAPE83,
+ &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87, &SHAPE88,
+ &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92, &SHAPE92,
+ &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96, &SHAPE97,
+ &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92, &SHAPE92,
+ &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101, &SHAPE97,
+ &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102, &SHAPE102,
+ &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93, &SHAPE103,
+ &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98, &SHAPE98,
+ &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350,
+ &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE353,
+ &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE358, &SHAPE360, &SHAPE361,
+ &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE365, &SHAPE366,
+ &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE369,
+ &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE374, &SHAPE376, &SHAPE377,
+ &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE384, &SHAPE386,
+ &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE388,
+ &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE391, &SHAPE392, &SHAPE393,
+ &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE397, &SHAPE398,
+ &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE400,
+ &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE403, &SHAPE404, &SHAPE405,
+ &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE409, &SHAPE410,
+ &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE413,
+ &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE418, &SHAPE420, &SHAPE421,
+ &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE428, &SHAPE430,
+ &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE432,
+ &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE435, &SHAPE436, &SHAPE437,
+ &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE444, &SHAPE446,
+ &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE449,
+ &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE454, &SHAPE456, &SHAPE457,
+ &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE461, &SHAPE462,
+ &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE464,
+ &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE467, &SHAPE468, &SHAPE469,
+ &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE473, &SHAPE474,
+ &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE476,
+ &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE479, &SHAPE480, &SHAPE481,
+ &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE485, &SHAPE486,
+ &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE488,
+ &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE491, &SHAPE492, &SHAPE493,
+ &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE497, &SHAPE498,
+ &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE500,
+ &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE503, &SHAPE504, &SHAPE505,
+ &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE509, &SHAPE510,
+ &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE512,
+ &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE515, &SHAPE516, &SHAPE517,
+ &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE521, &SHAPE522,
+ &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE524,
+ &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527, &SHAPE528, &SHAPE529,
+ &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE533, &SHAPE534,
+ &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13, &SHAPE13,
+ &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82, &SHAPE83,
+ &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87, &SHAPE87,
+ &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91, &SHAPE92,
+ &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96, &SHAPE96,
+ &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100, &SHAPE92,
+ &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101, &SHAPE101,
+ &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88, &SHAPE102,
+ &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93, &SHAPE93,
+ &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89, &SHAPE98,
+ &SHAPE98, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0, &SHAPE350,
+ &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355, &SHAPE356, &SHAPE353,
+ &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE358, &SHAPE360, &SHAPE361,
+ &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE365, &SHAPE366,
+ &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369, &SHAPE371, &SHAPE372, &SHAPE369,
+ &SHAPE371, &SHAPE372, &SHAPE374, &SHAPE376, &SHAPE377, &SHAPE374, &SHAPE376, &SHAPE377,
+ &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE379, &SHAPE381, &SHAPE382, &SHAPE384, &SHAPE386,
+ &SHAPE387, &SHAPE384, &SHAPE386, &SHAPE387, &SHAPE388, &SHAPE389, &SHAPE390, &SHAPE388,
+ &SHAPE389, &SHAPE390, &SHAPE391, &SHAPE392, &SHAPE393, &SHAPE391, &SHAPE392, &SHAPE393,
+ &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE394, &SHAPE395, &SHAPE396, &SHAPE397, &SHAPE398,
+ &SHAPE399, &SHAPE397, &SHAPE398, &SHAPE399, &SHAPE400, &SHAPE401, &SHAPE402, &SHAPE400,
+ &SHAPE401, &SHAPE402, &SHAPE403, &SHAPE404, &SHAPE405, &SHAPE403, &SHAPE404, &SHAPE405,
+ &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE406, &SHAPE407, &SHAPE408, &SHAPE409, &SHAPE410,
+ &SHAPE411, &SHAPE409, &SHAPE410, &SHAPE411, &SHAPE413, &SHAPE415, &SHAPE416, &SHAPE413,
+ &SHAPE415, &SHAPE416, &SHAPE418, &SHAPE420, &SHAPE421, &SHAPE418, &SHAPE420, &SHAPE421,
+ &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE423, &SHAPE425, &SHAPE426, &SHAPE428, &SHAPE430,
+ &SHAPE431, &SHAPE428, &SHAPE430, &SHAPE431, &SHAPE432, &SHAPE433, &SHAPE434, &SHAPE432,
+ &SHAPE433, &SHAPE434, &SHAPE435, &SHAPE436, &SHAPE437, &SHAPE435, &SHAPE436, &SHAPE437,
+ &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE439, &SHAPE441, &SHAPE442, &SHAPE444, &SHAPE446,
+ &SHAPE447, &SHAPE444, &SHAPE446, &SHAPE447, &SHAPE449, &SHAPE451, &SHAPE452, &SHAPE449,
+ &SHAPE451, &SHAPE452, &SHAPE454, &SHAPE456, &SHAPE457, &SHAPE454, &SHAPE456, &SHAPE457,
+ &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE458, &SHAPE459, &SHAPE460, &SHAPE461, &SHAPE462,
+ &SHAPE463, &SHAPE461, &SHAPE462, &SHAPE463, &SHAPE464, &SHAPE465, &SHAPE466, &SHAPE464,
+ &SHAPE465, &SHAPE466, &SHAPE467, &SHAPE468, &SHAPE469, &SHAPE467, &SHAPE468, &SHAPE469,
+ &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE470, &SHAPE471, &SHAPE472, &SHAPE473, &SHAPE474,
+ &SHAPE475, &SHAPE473, &SHAPE474, &SHAPE475, &SHAPE476, &SHAPE477, &SHAPE478, &SHAPE476,
+ &SHAPE477, &SHAPE478, &SHAPE479, &SHAPE480, &SHAPE481, &SHAPE479, &SHAPE480, &SHAPE481,
+ &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE482, &SHAPE483, &SHAPE484, &SHAPE485, &SHAPE486,
+ &SHAPE487, &SHAPE485, &SHAPE486, &SHAPE487, &SHAPE488, &SHAPE489, &SHAPE490, &SHAPE488,
+ &SHAPE489, &SHAPE490, &SHAPE491, &SHAPE492, &SHAPE493, &SHAPE491, &SHAPE492, &SHAPE493,
+ &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE494, &SHAPE495, &SHAPE496, &SHAPE497, &SHAPE498,
+ &SHAPE499, &SHAPE497, &SHAPE498, &SHAPE499, &SHAPE500, &SHAPE501, &SHAPE502, &SHAPE500,
+ &SHAPE501, &SHAPE502, &SHAPE503, &SHAPE504, &SHAPE505, &SHAPE503, &SHAPE504, &SHAPE505,
+ &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE506, &SHAPE507, &SHAPE508, &SHAPE509, &SHAPE510,
+ &SHAPE511, &SHAPE509, &SHAPE510, &SHAPE511, &SHAPE512, &SHAPE513, &SHAPE514, &SHAPE512,
+ &SHAPE513, &SHAPE514, &SHAPE515, &SHAPE516, &SHAPE517, &SHAPE515, &SHAPE516, &SHAPE517,
+ &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE518, &SHAPE519, &SHAPE520, &SHAPE521, &SHAPE522,
+ &SHAPE523, &SHAPE521, &SHAPE522, &SHAPE523, &SHAPE524, &SHAPE525, &SHAPE526, &SHAPE524,
+ &SHAPE525, &SHAPE526, &SHAPE527, &SHAPE528, &SHAPE529, &SHAPE527, &SHAPE528, &SHAPE529,
+ &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE530, &SHAPE531, &SHAPE532, &SHAPE533, &SHAPE534,
+ &SHAPE535, &SHAPE533, &SHAPE534, &SHAPE535, &SHAPE1, &SHAPE1, &SHAPE344, &SHAPE344, &SHAPE13,
+ &SHAPE13, &SHAPE1, &SHAPE1, &SHAPE80, &SHAPE80, &SHAPE81, &SHAPE81, &SHAPE82, &SHAPE82,
+ &SHAPE83, &SHAPE83, &SHAPE84, &SHAPE84, &SHAPE85, &SHAPE85, &SHAPE86, &SHAPE86, &SHAPE87,
+ &SHAPE87, &SHAPE88, &SHAPE88, &SHAPE89, &SHAPE89, &SHAPE90, &SHAPE90, &SHAPE91, &SHAPE91,
+ &SHAPE92, &SHAPE92, &SHAPE93, &SHAPE93, &SHAPE94, &SHAPE94, &SHAPE95, &SHAPE95, &SHAPE96,
+ &SHAPE96, &SHAPE97, &SHAPE97, &SHAPE98, &SHAPE98, &SHAPE99, &SHAPE99, &SHAPE100, &SHAPE100,
+ &SHAPE92, &SHAPE92, &SHAPE81, &SHAPE81, &SHAPE94, &SHAPE94, &SHAPE83, &SHAPE83, &SHAPE101,
+ &SHAPE101, &SHAPE97, &SHAPE97, &SHAPE86, &SHAPE86, &SHAPE99, &SHAPE99, &SHAPE88, &SHAPE88,
+ &SHAPE102, &SHAPE102, &SHAPE82, &SHAPE82, &SHAPE91, &SHAPE91, &SHAPE84, &SHAPE84, &SHAPE93,
+ &SHAPE93, &SHAPE103, &SHAPE103, &SHAPE87, &SHAPE87, &SHAPE96, &SHAPE96, &SHAPE89, &SHAPE89,
+ &SHAPE98, &SHAPE98, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE195, &SHAPE347, &SHAPE348, &SHAPE0,
+ &SHAPE350, &SHAPE351, &SHAPE0, &SHAPE350, &SHAPE351, &SHAPE353, &SHAPE355, &SHAPE356,
&SHAPE353, &SHAPE355, &SHAPE356, &SHAPE358, &SHAPE360, &SHAPE361, &SHAPE358, &SHAPE360,
&SHAPE361, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE362, &SHAPE363, &SHAPE364, &SHAPE365,
&SHAPE366, &SHAPE367, &SHAPE365, &SHAPE366, &SHAPE367, &SHAPE369, &SHAPE371, &SHAPE372,
diff --git a/azalea-protocol/src/common/recipe.rs b/azalea-protocol/src/common/recipe.rs
index e0e10ecc..5e1f93c9 100644
--- a/azalea-protocol/src/common/recipe.rs
+++ b/azalea-protocol/src/common/recipe.rs
@@ -1,6 +1,11 @@
use azalea_buf::AzBuf;
use azalea_inventory::ItemStack;
-use azalea_registry::{HolderSet, builtin::ItemKind, data::TrimPattern, identifier::Identifier};
+use azalea_registry::{
+ HolderSet,
+ builtin::{DataComponentKind, ItemKind},
+ data::TrimPattern,
+ identifier::Identifier,
+};
/// [`azalea_registry::builtin::RecipeDisplay`]
#[derive(AzBuf, Clone, Debug, PartialEq)]
@@ -63,15 +68,28 @@ pub struct Ingredient {
pub enum SlotDisplayData {
Empty,
AnyFuel,
+ WithAnyPotion(Box<WithAnyPotionSlotDisplay>),
+ OnlyWithComponent(Box<OnlyWithComponentSlotDisplay>),
Item(ItemSlotDisplay),
ItemStack(ItemStackSlotDisplay),
Tag(TagSlotDisplay),
+ Dyed(Box<DyedSlotDemo>),
SmithingTrim(Box<SmithingTrimDemoSlotDisplay>),
WithRemainder(Box<WithRemainderSlotDisplay>),
Composite(CompositeSlotDisplay),
}
#[derive(AzBuf, Clone, Debug, PartialEq)]
+pub struct WithAnyPotionSlotDisplay {
+ pub contents: SlotDisplayData,
+}
+#[derive(AzBuf, Clone, Debug, PartialEq)]
+pub struct OnlyWithComponentSlotDisplay {
+ pub contents: SlotDisplayData,
+ pub component: DataComponentKind,
+}
+
+#[derive(AzBuf, Clone, Debug, PartialEq)]
pub struct ItemSlotDisplay {
pub item: ItemKind,
}
@@ -80,6 +98,11 @@ pub struct ItemStackSlotDisplay {
pub stack: ItemStack,
}
#[derive(AzBuf, Clone, Debug, PartialEq)]
+pub struct DyedSlotDemo {
+ pub dye: SlotDisplayData,
+ pub target: SlotDisplayData,
+}
+#[derive(AzBuf, Clone, Debug, PartialEq)]
pub struct TagSlotDisplay {
pub tag: Identifier,
}
diff --git a/azalea-protocol/src/packets/game/c_game_rule_values.rs b/azalea-protocol/src/packets/game/c_game_rule_values.rs
new file mode 100644
index 00000000..3fc2b619
--- /dev/null
+++ b/azalea-protocol/src/packets/game/c_game_rule_values.rs
@@ -0,0 +1,9 @@
+use azalea_buf::AzBuf;
+use azalea_protocol_macros::ClientboundGamePacket;
+use azalea_registry::builtin::GameRule;
+use indexmap::IndexMap;
+
+#[derive(Clone, Debug, AzBuf, PartialEq, ClientboundGamePacket)]
+pub struct ClientboundGameRuleValues {
+ pub values: IndexMap<GameRule, String>,
+}
diff --git a/azalea-protocol/src/packets/game/c_low_disk_space_warning.rs b/azalea-protocol/src/packets/game/c_low_disk_space_warning.rs
new file mode 100644
index 00000000..e3b3e72a
--- /dev/null
+++ b/azalea-protocol/src/packets/game/c_low_disk_space_warning.rs
@@ -0,0 +1,5 @@
+use azalea_buf::AzBuf;
+use azalea_protocol_macros::ClientboundGamePacket;
+
+#[derive(Clone, Debug, AzBuf, PartialEq, ClientboundGamePacket)]
+pub struct ClientboundLowDiskSpaceWarning;
diff --git a/azalea-protocol/src/packets/game/c_set_entity_data.rs b/azalea-protocol/src/packets/game/c_set_entity_data.rs
index 1b4b46cd..d3fce384 100644
--- a/azalea-protocol/src/packets/game/c_set_entity_data.rs
+++ b/azalea-protocol/src/packets/game/c_set_entity_data.rs
@@ -9,25 +9,3 @@ pub struct ClientboundSetEntityData {
pub id: MinecraftEntityId,
pub packed_items: EntityMetadataItems,
}
-
-#[cfg(test)]
-mod tests {
- use std::io::Cursor;
-
- use azalea_buf::AzBuf;
-
- use super::*;
-
- #[test]
- fn test_read_6b6t_entity_data() {
- let contents = [
- 254, 180, 160, 8, 11, 33, 190, 230, 102, 102, 0, 0, 0, 0, 191, 0, 0, 0, 12, 33, 63,
- 102, 102, 102, 63, 25, 153, 154, 63, 102, 102, 102, 23, 14, 234, 64, 255,
- ];
- let mut buf = Cursor::new(contents.as_slice());
- let packet = ClientboundSetEntityData::azalea_read(&mut buf).unwrap();
- println!("{packet:?}");
-
- assert_eq!(buf.position(), contents.len() as u64);
- }
-}
diff --git a/azalea-protocol/src/packets/game/c_set_time.rs b/azalea-protocol/src/packets/game/c_set_time.rs
index ff795e87..efc95e0d 100644
--- a/azalea-protocol/src/packets/game/c_set_time.rs
+++ b/azalea-protocol/src/packets/game/c_set_time.rs
@@ -1,9 +1,18 @@
use azalea_buf::AzBuf;
use azalea_protocol_macros::ClientboundGamePacket;
+use azalea_registry::data::WorldClock;
+use indexmap::IndexMap;
#[derive(AzBuf, ClientboundGamePacket, Clone, Debug, PartialEq)]
pub struct ClientboundSetTime {
pub game_time: u64,
- pub day_time: u64,
- pub tick_day_time: bool,
+ pub clock_updates: IndexMap<WorldClock, ClockState>,
+}
+
+#[derive(AzBuf, Clone, Debug, PartialEq)]
+pub struct ClockState {
+ #[var]
+ pub total_ticks: u64,
+ pub partial_tick: f32,
+ pub rate: f32,
}
diff --git a/azalea-protocol/src/packets/game/mod.rs b/azalea-protocol/src/packets/game/mod.rs
index 3235231c..d42d46eb 100644
--- a/azalea-protocol/src/packets/game/mod.rs
+++ b/azalea-protocol/src/packets/game/mod.rs
@@ -44,6 +44,7 @@ declare_state_packets!(GamePacket,
explode,
forget_level_chunk,
game_event,
+ game_rule_values,
game_test_highlight_pos,
mount_screen_open,
hurt_animation,
@@ -54,6 +55,7 @@ declare_state_packets!(GamePacket,
level_particles,
light_update,
login,
+ low_disk_space_warning,
map_item_data,
merchant_offers,
move_entity_pos,
@@ -147,6 +149,7 @@ declare_state_packets!(GamePacket,
],
Serverbound => [
accept_teleportation,
+ attack,
block_entity_tag_query,
bundle_item_selected,
change_difficulty,
@@ -202,10 +205,12 @@ declare_state_packets!(GamePacket,
set_command_block,
set_command_minecart,
set_creative_mode_slot,
+ set_game_rule,
set_jigsaw_block,
set_structure_block,
set_test_block,
sign_update,
+ spectate_entity,
swing,
teleport_to_entity,
test_instance_block_action,
diff --git a/azalea-protocol/src/packets/game/s_attack.rs b/azalea-protocol/src/packets/game/s_attack.rs
new file mode 100644
index 00000000..0edc2395
--- /dev/null
+++ b/azalea-protocol/src/packets/game/s_attack.rs
@@ -0,0 +1,8 @@
+use azalea_buf::AzBuf;
+use azalea_core::entity_id::MinecraftEntityId;
+use azalea_protocol_macros::ServerboundGamePacket;
+
+#[derive(Clone, Debug, AzBuf, PartialEq, ServerboundGamePacket)]
+pub struct ServerboundAttack {
+ pub entity_id: MinecraftEntityId,
+}
diff --git a/azalea-protocol/src/packets/game/s_client_command.rs b/azalea-protocol/src/packets/game/s_client_command.rs
index 04fe8936..5212b5ee 100644
--- a/azalea-protocol/src/packets/game/s_client_command.rs
+++ b/azalea-protocol/src/packets/game/s_client_command.rs
@@ -10,4 +10,5 @@ pub struct ServerboundClientCommand {
pub enum Action {
PerformRespawn = 0,
RequestStats = 1,
+ RequestGameruleValues = 2,
}
diff --git a/azalea-protocol/src/packets/game/s_interact.rs b/azalea-protocol/src/packets/game/s_interact.rs
index bd04e09d..2f0494ae 100644
--- a/azalea-protocol/src/packets/game/s_interact.rs
+++ b/azalea-protocol/src/packets/game/s_interact.rs
@@ -1,78 +1,17 @@
-use std::io::{self, Cursor, Write};
-
-use azalea_buf::{AzBuf, AzBufVar};
-use azalea_core::{
- entity_id::MinecraftEntityId,
- position::{Vec3, Vec3f32},
-};
+use azalea_buf::AzBuf;
+use azalea_core::{delta::LpVec3, entity_id::MinecraftEntityId};
use azalea_protocol_macros::ServerboundGamePacket;
-use crate::packets::BufReadError;
-
#[derive(AzBuf, Clone, Debug, PartialEq, ServerboundGamePacket)]
pub struct ServerboundInteract {
#[var]
pub entity_id: MinecraftEntityId,
- pub action: ActionType,
- /// Whether the player is sneaking
+ pub hand: InteractionHand,
+ pub location: LpVec3,
+ /// Whether the player is sneaking.
pub using_secondary_action: bool,
}
-#[derive(Clone, Copy, Debug, PartialEq)]
-pub enum ActionType {
- Interact {
- hand: InteractionHand,
- },
- Attack,
- InteractAt {
- location: Vec3,
- hand: InteractionHand,
- },
-}
-
-impl AzBuf for ActionType {
- fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> {
- let action_type = u32::azalea_read_var(buf)?;
- match action_type {
- 0 => {
- let hand = InteractionHand::azalea_read(buf)?;
- Ok(ActionType::Interact { hand })
- }
- 1 => Ok(ActionType::Attack),
- 2 => {
- let pos = Vec3f32::azalea_read(buf)?;
- let hand = InteractionHand::azalea_read(buf)?;
- Ok(ActionType::InteractAt {
- location: Vec3::from(pos),
- hand,
- })
- }
- _ => Err(BufReadError::UnexpectedEnumVariant {
- id: action_type as i32,
- }),
- }
- }
- fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> {
- match self {
- ActionType::Interact { hand } => {
- 0u32.azalea_write_var(buf)?;
- hand.azalea_write(buf)?;
- }
- ActionType::Attack => {
- 1u32.azalea_write_var(buf)?;
- }
- ActionType::InteractAt { location, hand } => {
- 2u32.azalea_write_var(buf)?;
- (location.x as f32).azalea_write(buf)?;
- (location.y as f32).azalea_write(buf)?;
- (location.z as f32).azalea_write(buf)?;
- hand.azalea_write(buf)?;
- }
- }
- Ok(())
- }
-}
-
#[derive(AzBuf, Clone, Copy, Debug, Default, PartialEq)]
pub enum InteractionHand {
#[default]
diff --git a/azalea-protocol/src/packets/game/s_set_game_rule.rs b/azalea-protocol/src/packets/game/s_set_game_rule.rs
new file mode 100644
index 00000000..c49d97b9
--- /dev/null
+++ b/azalea-protocol/src/packets/game/s_set_game_rule.rs
@@ -0,0 +1,15 @@
+use azalea_buf::AzBuf;
+use azalea_protocol_macros::ServerboundGamePacket;
+use azalea_registry::identifier::Identifier;
+
+#[derive(Clone, Debug, AzBuf, PartialEq, ServerboundGamePacket)]
+pub struct ServerboundSetGameRule {
+ pub entries: Vec<GameRuleEntry>,
+}
+
+#[derive(Clone, Debug, AzBuf, PartialEq)]
+pub struct GameRuleEntry {
+ /// An identifier for a [`GameRule`](azalea_registry::builtin::GameRule).
+ pub key: Identifier,
+ pub value: String,
+}
diff --git a/azalea-protocol/src/packets/game/s_spectate_entity.rs b/azalea-protocol/src/packets/game/s_spectate_entity.rs
new file mode 100644
index 00000000..c9e5a985
--- /dev/null
+++ b/azalea-protocol/src/packets/game/s_spectate_entity.rs
@@ -0,0 +1,8 @@
+use azalea_buf::AzBuf;
+use azalea_core::entity_id::MinecraftEntityId;
+use azalea_protocol_macros::ServerboundGamePacket;
+
+#[derive(Clone, Debug, AzBuf, PartialEq, ServerboundGamePacket)]
+pub struct ServerboundSpectateEntity {
+ pub entity_id: MinecraftEntityId,
+}
diff --git a/azalea-protocol/src/packets/mod.rs b/azalea-protocol/src/packets/mod.rs
index 202bc4ee..10a7dcd1 100644
--- a/azalea-protocol/src/packets/mod.rs
+++ b/azalea-protocol/src/packets/mod.rs
@@ -11,8 +11,8 @@ use azalea_buf::{AzBuf, AzBufVar, BufReadError};
use crate::read::ReadPacketError;
-pub const PROTOCOL_VERSION: i32 = 774;
-pub const VERSION_NAME: &str = "1.21.11";
+pub const PROTOCOL_VERSION: i32 = 775;
+pub const VERSION_NAME: &str = "26.1";
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
pub enum ConnectionProtocol {
diff --git a/azalea-registry/src/builtin.rs b/azalea-registry/src/builtin.rs
index fad65f96..34324fe2 100644
--- a/azalea-registry/src/builtin.rs
+++ b/azalea-registry/src/builtin.rs
@@ -580,6 +580,7 @@ enum IntProviderKind {
Clamped => "clamped",
WeightedList => "weighted_list",
ClampedNormal => "clamped_normal",
+ Trapezoid => "trapezoid",
}
}
@@ -604,6 +605,7 @@ enum LootConditionKind {
TimeCheck => "time_check",
ValueCheck => "value_check",
EnchantmentActiveCheck => "enchantment_active_check",
+ EnvironmentAttributeCheck => "environment_attribute_check",
}
}
@@ -637,6 +639,8 @@ enum LootFunctionKind {
CopyState => "copy_state",
SetBannerPattern => "set_banner_pattern",
SetPotion => "set_potion",
+ SetRandomDyes => "set_random_dyes",
+ SetRandomPotion => "set_random_potion",
SetInstrument => "set_instrument",
Reference => "reference",
Sequence => "sequence",
@@ -667,7 +671,9 @@ enum LootNumberProviderKind {
Binomial => "binomial",
Score => "score",
Storage => "storage",
+ Sum => "sum",
EnchantmentLevel => "enchantment_level",
+ EnvironmentAttribute => "environment_attribute",
}
}
@@ -715,7 +721,6 @@ enum MemoryModuleKind {
BreedTarget => "breed_target",
RideTarget => "ride_target",
Path => "path",
- InteractableDoors => "interactable_doors",
DoorsToClose => "doors_to_close",
NearestBed => "nearest_bed",
HurtBy => "hurt_by",
@@ -911,6 +916,8 @@ enum ParticleKind {
Item => "item",
Vibration => "vibration",
Trail => "trail",
+ PauseMobGrowth => "pause_mob_growth",
+ ResetMobGrowth => "reset_mob_growth",
ItemSlime => "item_slime",
ItemCobweb => "item_cobweb",
ItemSnowball => "item_snowball",
@@ -1075,17 +1082,17 @@ registry! {
enum RecipeSerializer {
CraftingShaped => "crafting_shaped",
CraftingShapeless => "crafting_shapeless",
- CraftingSpecialArmordye => "crafting_special_armordye",
+ CraftingDye => "crafting_dye",
+ CraftingImbue => "crafting_imbue",
+ CraftingTransmute => "crafting_transmute",
+ CraftingDecoratedPot => "crafting_decorated_pot",
CraftingSpecialBookcloning => "crafting_special_bookcloning",
- CraftingSpecialMapcloning => "crafting_special_mapcloning",
CraftingSpecialMapextending => "crafting_special_mapextending",
CraftingSpecialFireworkRocket => "crafting_special_firework_rocket",
CraftingSpecialFireworkStar => "crafting_special_firework_star",
CraftingSpecialFireworkStarFade => "crafting_special_firework_star_fade",
- CraftingSpecialTippedarrow => "crafting_special_tippedarrow",
CraftingSpecialBannerduplicate => "crafting_special_bannerduplicate",
CraftingSpecialShielddecoration => "crafting_special_shielddecoration",
- CraftingTransmute => "crafting_transmute",
CraftingSpecialRepairitem => "crafting_special_repairitem",
Smelting => "smelting",
Blasting => "blasting",
@@ -1094,7 +1101,6 @@ enum RecipeSerializer {
Stonecutting => "stonecutting",
SmithingTransform => "smithing_transform",
SmithingTrim => "smithing_trim",
- CraftingDecoratedPot => "crafting_decorated_pot",
}
}
@@ -1433,15 +1439,33 @@ enum SoundEvent {
BlockCandleHit => "block.candle.hit",
BlockCandlePlace => "block.candle.place",
BlockCandleStep => "block.candle.step",
+ EntityBabyCatAmbient => "entity.baby_cat.ambient",
+ EntityBabyCatStrayAmbient => "entity.baby_cat.stray_ambient",
+ EntityBabyCatDeath => "entity.baby_cat.death",
+ EntityBabyCatEat => "entity.baby_cat.eat",
+ EntityBabyCatHiss => "entity.baby_cat.hiss",
+ EntityBabyCatBegForFood => "entity.baby_cat.beg_for_food",
+ EntityBabyCatHurt => "entity.baby_cat.hurt",
+ EntityBabyCatPurr => "entity.baby_cat.purr",
+ EntityBabyCatPurreow => "entity.baby_cat.purreow",
EntityCatAmbient => "entity.cat.ambient",
EntityCatStrayAmbient => "entity.cat.stray_ambient",
+ EntityCatHiss => "entity.cat.hiss",
+ EntityCatHurt => "entity.cat.hurt",
EntityCatDeath => "entity.cat.death",
EntityCatEat => "entity.cat.eat",
- EntityCatHiss => "entity.cat.hiss",
EntityCatBegForFood => "entity.cat.beg_for_food",
- EntityCatHurt => "entity.cat.hurt",
EntityCatPurr => "entity.cat.purr",
EntityCatPurreow => "entity.cat.purreow",
+ EntityCatRoyalAmbient => "entity.cat_royal.ambient",
+ EntityCatRoyalStrayAmbient => "entity.cat_royal.stray_ambient",
+ EntityCatRoyalHiss => "entity.cat_royal.hiss",
+ EntityCatRoyalHurt => "entity.cat_royal.hurt",
+ EntityCatRoyalDeath => "entity.cat_royal.death",
+ EntityCatRoyalEat => "entity.cat_royal.eat",
+ EntityCatRoyalBegForFood => "entity.cat_royal.beg_for_food",
+ EntityCatRoyalPurr => "entity.cat_royal.purr",
+ EntityCatRoyalPurreow => "entity.cat_royal.purreow",
BlockCaveVinesBreak => "block.cave_vines.break",
BlockCaveVinesFall => "block.cave_vines.fall",
BlockCaveVinesHit => "block.cave_vines.hit",
@@ -1486,11 +1510,18 @@ enum SoundEvent {
BlockChestClose => "block.chest.close",
BlockChestLocked => "block.chest.locked",
BlockChestOpen => "block.chest.open",
- EntityChickenAmbient => "entity.chicken.ambient",
- EntityChickenDeath => "entity.chicken.death",
+ EntityBabyChickenAmbient => "entity.baby_chicken.ambient",
+ EntityBabyChickenDeath => "entity.baby_chicken.death",
EntityChickenEgg => "entity.chicken.egg",
- EntityChickenHurt => "entity.chicken.hurt",
+ EntityBabyChickenHurt => "entity.baby_chicken.hurt",
EntityChickenStep => "entity.chicken.step",
+ EntityBabyChickenStep => "entity.baby_chicken.step",
+ EntityChickenAmbient => "entity.chicken.ambient",
+ EntityChickenHurt => "entity.chicken.hurt",
+ EntityChickenDeath => "entity.chicken.death",
+ EntityChickenPickyAmbient => "entity.chicken_picky.ambient",
+ EntityChickenPickyHurt => "entity.chicken_picky.hurt",
+ EntityChickenPickyDeath => "entity.chicken_picky.death",
BlockChiseledBookshelfBreak => "block.chiseled_bookshelf.break",
BlockChiseledBookshelfFall => "block.chiseled_bookshelf.fall",
BlockChiseledBookshelfHit => "block.chiseled_bookshelf.hit",
@@ -1578,11 +1609,15 @@ enum SoundEvent {
BlockCoralBlockHit => "block.coral_block.hit",
BlockCoralBlockPlace => "block.coral_block.place",
BlockCoralBlockStep => "block.coral_block.step",
+ EntityCowMilk => "entity.cow.milk",
EntityCowAmbient => "entity.cow.ambient",
- EntityCowDeath => "entity.cow.death",
EntityCowHurt => "entity.cow.hurt",
- EntityCowMilk => "entity.cow.milk",
+ EntityCowDeath => "entity.cow.death",
EntityCowStep => "entity.cow.step",
+ EntityCowMoodyAmbient => "entity.cow_moody.ambient",
+ EntityCowMoodyHurt => "entity.cow_moody.hurt",
+ EntityCowMoodyDeath => "entity.cow_moody.death",
+ EntityCowMoodyStep => "entity.cow_moody.step",
BlockCrafterCraft => "block.crafter.craft",
BlockCrafterFail => "block.crafter.fail",
EntityCreakingAmbient => "entity.creaking.ambient",
@@ -1878,6 +1913,8 @@ enum SoundEvent {
EntityGoatScreamingPrepareRam => "entity.goat.screaming.prepare_ram",
EntityGoatScreamingRamImpact => "entity.goat.screaming.ram_impact",
EntityGoatStep => "entity.goat.step",
+ ItemGoldenDandelionUse => "item.golden_dandelion.use",
+ ItemGoldenDandelionUnuse => "item.golden_dandelion.unuse",
BlockGrassBreak => "block.grass.break",
BlockGrassFall => "block.grass.fall",
BlockGrassHit => "block.grass.hit",
@@ -1973,18 +2010,26 @@ enum SoundEvent {
ItemGoatHornSound6 => "item.goat_horn.sound.6",
ItemGoatHornSound7 => "item.goat_horn.sound.7",
EntityHorseAmbient => "entity.horse.ambient",
+ EntityBabyHorseAmbient => "entity.baby_horse.ambient",
EntityHorseAngry => "entity.horse.angry",
+ EntityBabyHorseAngry => "entity.baby_horse.angry",
EntityHorseArmor => "entity.horse.armor",
ItemHorseArmorUnequip => "item.horse_armor.unequip",
EntityHorseBreathe => "entity.horse.breathe",
+ EntityBabyHorseBreathe => "entity.baby_horse.breathe",
EntityHorseDeath => "entity.horse.death",
+ EntityBabyHorseDeath => "entity.baby_horse.death",
EntityHorseEat => "entity.horse.eat",
+ EntityBabyHorseEat => "entity.baby_horse.eat",
EntityHorseGallop => "entity.horse.gallop",
EntityHorseHurt => "entity.horse.hurt",
+ EntityBabyHorseHurt => "entity.baby_horse.hurt",
EntityHorseJump => "entity.horse.jump",
EntityHorseLand => "entity.horse.land",
+ EntityBabyHorseLand => "entity.baby_horse.land",
EntityHorseSaddle => "entity.horse.saddle",
EntityHorseStep => "entity.horse.step",
+ EntityBabyHorseStep => "entity.baby_horse.step",
EntityHorseStepWood => "entity.horse.step_wood",
EntityHostileBigFall => "entity.hostile.big_fall",
EntityHostileDeath => "entity.hostile.death",
@@ -2284,6 +2329,10 @@ enum SoundEvent {
BlockNoteBlockHat => "block.note_block.hat",
BlockNoteBlockPling => "block.note_block.pling",
BlockNoteBlockSnare => "block.note_block.snare",
+ BlockNoteBlockTrumpet => "block.note_block.trumpet",
+ BlockNoteBlockTrumpetExposed => "block.note_block.trumpet_exposed",
+ BlockNoteBlockTrumpetOxidized => "block.note_block.trumpet_oxidized",
+ BlockNoteBlockTrumpetWeathered => "block.note_block.trumpet_weathered",
BlockNoteBlockXylophone => "block.note_block.xylophone",
BlockNoteBlockIronXylophone => "block.note_block.iron_xylophone",
BlockNoteBlockCowBell => "block.note_block.cow_bell",
@@ -2370,11 +2419,25 @@ enum SoundEvent {
EntityPhantomFlap => "entity.phantom.flap",
EntityPhantomHurt => "entity.phantom.hurt",
EntityPhantomSwoop => "entity.phantom.swoop",
- EntityPigAmbient => "entity.pig.ambient",
- EntityPigDeath => "entity.pig.death",
- EntityPigHurt => "entity.pig.hurt",
EntityPigSaddle => "entity.pig.saddle",
EntityPigStep => "entity.pig.step",
+ EntityBabyPigStep => "entity.baby_pig.step",
+ EntityBabyPigAmbient => "entity.baby_pig.ambient",
+ EntityBabyPigEat => "entity.baby_pig.eat",
+ EntityBabyPigHurt => "entity.baby_pig.hurt",
+ EntityBabyPigDeath => "entity.baby_pig.death",
+ EntityPigAmbient => "entity.pig.ambient",
+ EntityPigHurt => "entity.pig.hurt",
+ EntityPigDeath => "entity.pig.death",
+ EntityPigEat => "entity.pig.eat",
+ EntityPigMiniAmbient => "entity.pig_mini.ambient",
+ EntityPigMiniHurt => "entity.pig_mini.hurt",
+ EntityPigMiniDeath => "entity.pig_mini.death",
+ EntityPigMiniEat => "entity.pig_mini.eat",
+ EntityPigBigAmbient => "entity.pig_big.ambient",
+ EntityPigBigHurt => "entity.pig_big.hurt",
+ EntityPigBigDeath => "entity.pig_big.death",
+ EntityPigBigEat => "entity.pig_big.eat",
EntityPiglinAdmiringItem => "entity.piglin.admiring_item",
EntityPiglinAmbient => "entity.piglin.ambient",
EntityPiglinAngry => "entity.piglin.angry",
@@ -2880,11 +2943,18 @@ enum SoundEvent {
EntityWitherSkeletonStep => "entity.wither_skeleton.step",
EntityWitherSpawn => "entity.wither.spawn",
ItemWolfArmorBreak => "item.wolf_armor.break",
+ EntityBabyWolfAmbient => "entity.baby_wolf.ambient",
ItemWolfArmorCrack => "item.wolf_armor.crack",
ItemWolfArmorDamage => "item.wolf_armor.damage",
ItemWolfArmorRepair => "item.wolf_armor.repair",
+ EntityBabyWolfDeath => "entity.baby_wolf.death",
+ EntityBabyWolfGrowl => "entity.baby_wolf.growl",
+ EntityBabyWolfHurt => "entity.baby_wolf.hurt",
+ EntityBabyWolfPant => "entity.baby_wolf.pant",
EntityWolfShake => "entity.wolf.shake",
EntityWolfStep => "entity.wolf.step",
+ EntityBabyWolfStep => "entity.baby_wolf.step",
+ EntityBabyWolfWhine => "entity.baby_wolf.whine",
EntityWolfAmbient => "entity.wolf.ambient",
EntityWolfDeath => "entity.wolf.death",
EntityWolfGrowl => "entity.wolf.growl",
@@ -3061,6 +3131,7 @@ enum WorldgenBlockStateProviderKind {
DualNoiseProvider => "dual_noise_provider",
RotatedBlockProvider => "rotated_block_provider",
RandomizedIntStateProvider => "randomized_int_state_provider",
+ RuleBasedStateProvider => "rule_based_state_provider",
}
}
@@ -3124,9 +3195,6 @@ enum WorldgenFeature {
NoOp => "no_op",
Tree => "tree",
FallenTree => "fallen_tree",
- Flower => "flower",
- NoBonemealFlower => "no_bonemeal_flower",
- RandomPatch => "random_patch",
BlockPile => "block_pile",
SpringFeature => "spring_feature",
ChorusPlant => "chorus_plant",
@@ -3136,7 +3204,7 @@ enum WorldgenFeature {
Fossil => "fossil",
HugeRedMushroom => "huge_red_mushroom",
HugeBrownMushroom => "huge_brown_mushroom",
- IceSpike => "ice_spike",
+ Spike => "spike",
GlowstoneBlob => "glowstone_blob",
FreezeTopLayer => "freeze_top_layer",
Vines => "vines",
@@ -3149,7 +3217,7 @@ enum WorldgenFeature {
MonsterRoom => "monster_room",
BlueIce => "blue_ice",
Iceberg => "iceberg",
- ForestRock => "forest_rock",
+ BlockBlob => "block_blob",
Disk => "disk",
Lake => "lake",
Ore => "ore",
@@ -3630,6 +3698,7 @@ enum BlockKind {
BlackWool => "black_wool",
MovingPiston => "moving_piston",
Dandelion => "dandelion",
+ GoldenDandelion => "golden_dandelion",
Torchflower => "torchflower",
Poppy => "poppy",
BlueOrchid => "blue_orchid",
@@ -3895,6 +3964,7 @@ enum BlockKind {
PottedMangrovePropagule => "potted_mangrove_propagule",
PottedFern => "potted_fern",
PottedDandelion => "potted_dandelion",
+ PottedGoldenDandelion => "potted_golden_dandelion",
PottedPoppy => "potted_poppy",
PottedBlueOrchid => "potted_blue_orchid",
PottedAllium => "potted_allium",
@@ -4763,7 +4833,9 @@ enum DataComponentKind {
PiercingWeapon => "piercing_weapon",
KineticWeapon => "kinetic_weapon",
SwingAnimation => "swing_animation",
+ AdditionalTradeCost => "additional_trade_cost",
StoredEnchantments => "stored_enchantments",
+ Dye => "dye",
DyedColor => "dyed_color",
MapColor => "map_color",
MapId => "map_id",
@@ -4814,8 +4886,11 @@ enum DataComponentKind {
MooshroomVariant => "mooshroom/variant",
RabbitVariant => "rabbit/variant",
PigVariant => "pig/variant",
+ PigSoundVariant => "pig/sound_variant",
CowVariant => "cow/variant",
+ CowSoundVariant => "cow/sound_variant",
ChickenVariant => "chicken/variant",
+ ChickenSoundVariant => "chicken/sound_variant",
ZombieNautilusVariant => "zombie_nautilus/variant",
FrogVariant => "frog/variant",
HorseVariant => "horse/variant",
@@ -4823,6 +4898,7 @@ enum DataComponentKind {
LlamaVariant => "llama/variant",
AxolotlVariant => "axolotl/variant",
CatVariant => "cat/variant",
+ CatSoundVariant => "cat/sound_variant",
CatCollar => "cat/collar",
SheepColor => "sheep/color",
ShulkerColor => "shulker/color",
@@ -4892,7 +4968,6 @@ enum EnchantmentEffectComponentKind {
PostPiercingAttack => "post_piercing_attack",
HitBlock => "hit_block",
ItemDamage => "item_damage",
- Attributes => "attributes",
EquipmentDrops => "equipment_drops",
LocationChanged => "location_changed",
Tick => "tick",
@@ -4907,6 +4982,7 @@ enum EnchantmentEffectComponentKind {
BlockExperience => "block_experience",
MobExperience => "mob_experience",
RepairWithXp => "repair_with_xp",
+ Attributes => "attributes",
CrossbowChargeTime => "crossbow_charge_time",
CrossbowChargingSounds => "crossbow_charging_sounds",
TridentSound => "trident_sound",
@@ -5058,9 +5134,12 @@ registry! {
enum SlotDisplay {
Empty => "empty",
AnyFuel => "any_fuel",
+ WithAnyPotion => "with_any_potion",
+ OnlyWithComponent => "only_with_component",
Item => "item",
ItemStack => "item_stack",
Tag => "tag",
+ Dyed => "dyed",
SmithingTrim => "smithing_trim",
WithRemainder => "with_remainder",
Composite => "composite",
@@ -5085,7 +5164,8 @@ registry! {
enum TestEnvironmentDefinitionKind {
AllOf => "all_of",
GameRules => "game_rules",
- TimeOfDay => "time_of_day",
+ ClockTime => "clock_time",
+ TimelineAttributes => "timeline_attributes",
Weather => "weather",
Function => "function",
}
@@ -5120,6 +5200,7 @@ enum DataComponentPredicateKind {
AttributeModifiers => "attribute_modifiers",
Trim => "trim",
JukeboxPlayable => "jukebox_playable",
+ VillagerVariant => "villager/variant",
}
}
@@ -5296,6 +5377,7 @@ enum AttributeKind {
AngleDegrees => "angle_degrees",
RgbColor => "rgb_color",
ArgbColor => "argb_color",
+ Integer => "integer",
MoonPhase => "moon_phase",
Activity => "activity",
BedRule => "bed_rule",
@@ -5325,8 +5407,11 @@ enum EnvironmentAttribute {
VisualStarAngle => "visual/star_angle",
VisualMoonPhase => "visual/moon_phase",
VisualStarBrightness => "visual/star_brightness",
+ VisualBlockLightTint => "visual/block_light_tint",
VisualSkyLightColor => "visual/sky_light_color",
VisualSkyLightFactor => "visual/sky_light_factor",
+ VisualNightVisionColor => "visual/night_vision_color",
+ VisualAmbientLightColor => "visual/ambient_light_color",
VisualDefaultDripstoneParticle => "visual/default_dripstone_particle",
VisualAmbientParticles => "visual/ambient_particles",
AudioBackgroundMusic => "audio/background_music",
@@ -5532,7 +5617,7 @@ enum AbstractBlockKind {
EndPortalFrame => "end_portal_frame",
EndRod => "end_rod",
Eyeblossom => "eyeblossom",
- Farm => "farm",
+ Farmland => "farmland",
BonemealableFeaturePlacer => "bonemealable_feature_placer",
Fence => "fence",
FenceGate => "fence_gate",
@@ -5542,7 +5627,7 @@ enum AbstractBlockKind {
FlowerPot => "flower_pot",
Frogspawn => "frogspawn",
FrostedIce => "frosted_ice",
- Fungus => "fungus",
+ NetherFungus => "nether_fungus",
Furnace => "furnace",
GlazedTerracotta => "glazed_terracotta",
GlowLichen => "glow_lichen",
@@ -5616,7 +5701,7 @@ enum AbstractBlockKind {
Repeater => "repeater",
RespawnAnchor => "respawn_anchor",
RootedDirt => "rooted_dirt",
- Roots => "roots",
+ NetherRoots => "nether_roots",
RotatedPillar => "rotated_pillar",
Sapling => "sapling",
Sand => "sand",
@@ -5686,7 +5771,7 @@ enum AbstractBlockKind {
WallSkull => "wall_skull",
WallTorch => "wall_torch",
Wall => "wall",
- Waterlily => "waterlily",
+ LilyPad => "lily_pad",
WaterloggedTransparent => "waterlogged_transparent",
WeatheringCopperBar => "weathering_copper_bar",
WeatheringCopperBulb => "weathering_copper_bulb",
@@ -5954,6 +6039,7 @@ enum ItemKind {
RedWool => "red_wool",
BlackWool => "black_wool",
Dandelion => "dandelion",
+ GoldenDandelion => "golden_dandelion",
OpenEyeblossom => "open_eyeblossom",
ClosedEyeblossom => "closed_eyeblossom",
Poppy => "poppy",
diff --git a/azalea-registry/src/data.rs b/azalea-registry/src/data.rs
index a8e2d304..9ed87d3b 100644
--- a/azalea-registry/src/data.rs
+++ b/azalea-registry/src/data.rs
@@ -479,55 +479,6 @@ enum DamageKindKey {
}
data_registry! {
-BannerPattern => "banner_pattern",
-enum BannerPatternKey {
- Base => "base",
- Border => "border",
- Bricks => "bricks",
- Circle => "circle",
- Creeper => "creeper",
- Cross => "cross",
- CurlyBorder => "curly_border",
- DiagonalLeft => "diagonal_left",
- DiagonalRight => "diagonal_right",
- DiagonalUpLeft => "diagonal_up_left",
- DiagonalUpRight => "diagonal_up_right",
- Flow => "flow",
- Flower => "flower",
- Globe => "globe",
- Gradient => "gradient",
- GradientUp => "gradient_up",
- Guster => "guster",
- HalfHorizontal => "half_horizontal",
- HalfHorizontalBottom => "half_horizontal_bottom",
- HalfVertical => "half_vertical",
- HalfVerticalRight => "half_vertical_right",
- Mojang => "mojang",
- Piglin => "piglin",
- Rhombus => "rhombus",
- Skull => "skull",
- SmallStripes => "small_stripes",
- SquareBottomLeft => "square_bottom_left",
- SquareBottomRight => "square_bottom_right",
- SquareTopLeft => "square_top_left",
- SquareTopRight => "square_top_right",
- StraightCross => "straight_cross",
- StripeBottom => "stripe_bottom",
- StripeCenter => "stripe_center",
- StripeDownleft => "stripe_downleft",
- StripeDownright => "stripe_downright",
- StripeLeft => "stripe_left",
- StripeMiddle => "stripe_middle",
- StripeRight => "stripe_right",
- StripeTop => "stripe_top",
- TriangleBottom => "triangle_bottom",
- TriangleTop => "triangle_top",
- TrianglesBottom => "triangles_bottom",
- TrianglesTop => "triangles_top",
-}
-}
-
-data_registry! {
EnchantmentProvider => "enchantment_provider",
enum EnchantmentProviderKey {
EndermanLootDrop => "enderman_loot_drop",
@@ -638,7 +589,6 @@ enum RecipeKey {
AndesiteWall => "andesite_wall",
AndesiteWallFromAndesiteStonecutting => "andesite_wall_from_andesite_stonecutting",
Anvil => "anvil",
- ArmorDye => "armor_dye",
ArmorStand => "armor_stand",
Arrow => "arrow",
BakedPotato => "baked_potato",
@@ -662,7 +612,6 @@ enum RecipeKey {
BambooSlab => "bamboo_slab",
BambooStairs => "bamboo_stairs",
BambooTrapdoor => "bamboo_trapdoor",
- BannerDuplicate => "banner_duplicate",
Barrel => "barrel",
Beacon => "beacon",
Beehive => "beehive",
@@ -683,6 +632,7 @@ enum RecipeKey {
BirchTrapdoor => "birch_trapdoor",
BirchWood => "birch_wood",
BlackBanner => "black_banner",
+ BlackBannerDuplicate => "black_banner_duplicate",
BlackBed => "black_bed",
BlackBundle => "black_bundle",
BlackCandle => "black_candle",
@@ -706,6 +656,7 @@ enum RecipeKey {
BlastFurnace => "blast_furnace",
BlazePowder => "blaze_powder",
BlueBanner => "blue_banner",
+ BlueBannerDuplicate => "blue_banner_duplicate",
BlueBed => "blue_bed",
BlueBundle => "blue_bundle",
BlueCandle => "blue_candle",
@@ -743,6 +694,7 @@ enum RecipeKey {
BrickWallFromBricksStonecutting => "brick_wall_from_bricks_stonecutting",
Bricks => "bricks",
BrownBanner => "brown_banner",
+ BrownBannerDuplicate => "brown_banner_duplicate",
BrownBed => "brown_bed",
BrownBundle => "brown_bundle",
BrownCandle => "brown_candle",
@@ -790,6 +742,7 @@ enum RecipeKey {
ChiseledCopperFromCutCopperStonecutting => "chiseled_copper_from_cut_copper_stonecutting",
ChiseledDeepslate => "chiseled_deepslate",
ChiseledDeepslateFromCobbledDeepslateStonecutting => "chiseled_deepslate_from_cobbled_deepslate_stonecutting",
+ ChiseledDeepslateFromDeepslateStonecutting => "chiseled_deepslate_from_deepslate_stonecutting",
ChiseledNetherBricks => "chiseled_nether_bricks",
ChiseledNetherBricksFromNetherBricksStonecutting => "chiseled_nether_bricks_from_nether_bricks_stonecutting",
ChiseledPolishedBlackstone => "chiseled_polished_blackstone",
@@ -805,7 +758,7 @@ enum RecipeKey {
ChiseledSandstoneFromSandstoneStonecutting => "chiseled_sandstone_from_sandstone_stonecutting",
ChiseledStoneBricks => "chiseled_stone_bricks",
ChiseledStoneBricksFromStoneBricksStonecutting => "chiseled_stone_bricks_from_stone_bricks_stonecutting",
- ChiseledStoneBricksStoneFromStonecutting => "chiseled_stone_bricks_stone_from_stonecutting",
+ ChiseledStoneBricksFromStoneStonecutting => "chiseled_stone_bricks_from_stone_stonecutting",
ChiseledTuff => "chiseled_tuff",
ChiseledTuffBricks => "chiseled_tuff_bricks",
ChiseledTuffBricksFromPolishedTuffStonecutting => "chiseled_tuff_bricks_from_polished_tuff_stonecutting",
@@ -823,18 +776,26 @@ enum RecipeKey {
CoarseDirt => "coarse_dirt",
CoastArmorTrimSmithingTemplate => "coast_armor_trim_smithing_template",
CoastArmorTrimSmithingTemplateSmithingTrim => "coast_armor_trim_smithing_template_smithing_trim",
+ CobbledDeepslateFromDeepslateStonecutting => "cobbled_deepslate_from_deepslate_stonecutting",
CobbledDeepslateSlab => "cobbled_deepslate_slab",
CobbledDeepslateSlabFromCobbledDeepslateStonecutting => "cobbled_deepslate_slab_from_cobbled_deepslate_stonecutting",
+ CobbledDeepslateSlabFromDeepslateStonecutting => "cobbled_deepslate_slab_from_deepslate_stonecutting",
CobbledDeepslateStairs => "cobbled_deepslate_stairs",
CobbledDeepslateStairsFromCobbledDeepslateStonecutting => "cobbled_deepslate_stairs_from_cobbled_deepslate_stonecutting",
+ CobbledDeepslateStairsFromDeepslateStonecutting => "cobbled_deepslate_stairs_from_deepslate_stonecutting",
CobbledDeepslateWall => "cobbled_deepslate_wall",
CobbledDeepslateWallFromCobbledDeepslateStonecutting => "cobbled_deepslate_wall_from_cobbled_deepslate_stonecutting",
+ CobbledDeepslateWallFromDeepslateStonecutting => "cobbled_deepslate_wall_from_deepslate_stonecutting",
+ CobblestoneFromStoneStonecutting => "cobblestone_from_stone_stonecutting",
CobblestoneSlab => "cobblestone_slab",
CobblestoneSlabFromCobblestoneStonecutting => "cobblestone_slab_from_cobblestone_stonecutting",
+ CobblestoneSlabFromStoneStonecutting => "cobblestone_slab_from_stone_stonecutting",
CobblestoneStairs => "cobblestone_stairs",
CobblestoneStairsFromCobblestoneStonecutting => "cobblestone_stairs_from_cobblestone_stonecutting",
+ CobblestoneStairsFromStoneStonecutting => "cobblestone_stairs_from_stone_stonecutting",
CobblestoneWall => "cobblestone_wall",
CobblestoneWallFromCobblestoneStonecutting => "cobblestone_wall_from_cobblestone_stonecutting",
+ CobblestoneWallFromStoneStonecutting => "cobblestone_wall_from_stone_stonecutting",
Comparator => "comparator",
Compass => "compass",
Composter => "composter",
@@ -936,6 +897,7 @@ enum RecipeKey {
CutSandstoneSlabFromCutSandstoneStonecutting => "cut_sandstone_slab_from_cut_sandstone_stonecutting",
CutSandstoneSlabFromSandstoneStonecutting => "cut_sandstone_slab_from_sandstone_stonecutting",
CyanBanner => "cyan_banner",
+ CyanBannerDuplicate => "cyan_banner_duplicate",
CyanBed => "cyan_bed",
CyanBundle => "cyan_bundle",
CyanCandle => "cyan_candle",
@@ -977,36 +939,44 @@ enum RecipeKey {
DeepslateBrickSlab => "deepslate_brick_slab",
DeepslateBrickSlabFromCobbledDeepslateStonecutting => "deepslate_brick_slab_from_cobbled_deepslate_stonecutting",
DeepslateBrickSlabFromDeepslateBricksStonecutting => "deepslate_brick_slab_from_deepslate_bricks_stonecutting",
+ DeepslateBrickSlabFromDeepslateStonecutting => "deepslate_brick_slab_from_deepslate_stonecutting",
DeepslateBrickSlabFromPolishedDeepslateStonecutting => "deepslate_brick_slab_from_polished_deepslate_stonecutting",
DeepslateBrickStairs => "deepslate_brick_stairs",
DeepslateBrickStairsFromCobbledDeepslateStonecutting => "deepslate_brick_stairs_from_cobbled_deepslate_stonecutting",
DeepslateBrickStairsFromDeepslateBricksStonecutting => "deepslate_brick_stairs_from_deepslate_bricks_stonecutting",
+ DeepslateBrickStairsFromDeepslateStonecutting => "deepslate_brick_stairs_from_deepslate_stonecutting",
DeepslateBrickStairsFromPolishedDeepslateStonecutting => "deepslate_brick_stairs_from_polished_deepslate_stonecutting",
DeepslateBrickWall => "deepslate_brick_wall",
DeepslateBrickWallFromCobbledDeepslateStonecutting => "deepslate_brick_wall_from_cobbled_deepslate_stonecutting",
DeepslateBrickWallFromDeepslateBricksStonecutting => "deepslate_brick_wall_from_deepslate_bricks_stonecutting",
+ DeepslateBrickWallFromDeepslateStonecutting => "deepslate_brick_wall_from_deepslate_stonecutting",
DeepslateBrickWallFromPolishedDeepslateStonecutting => "deepslate_brick_wall_from_polished_deepslate_stonecutting",
DeepslateBricks => "deepslate_bricks",
DeepslateBricksFromCobbledDeepslateStonecutting => "deepslate_bricks_from_cobbled_deepslate_stonecutting",
+ DeepslateBricksFromDeepslateStonecutting => "deepslate_bricks_from_deepslate_stonecutting",
DeepslateBricksFromPolishedDeepslateStonecutting => "deepslate_bricks_from_polished_deepslate_stonecutting",
DeepslateTileSlab => "deepslate_tile_slab",
DeepslateTileSlabFromCobbledDeepslateStonecutting => "deepslate_tile_slab_from_cobbled_deepslate_stonecutting",
DeepslateTileSlabFromDeepslateBricksStonecutting => "deepslate_tile_slab_from_deepslate_bricks_stonecutting",
+ DeepslateTileSlabFromDeepslateStonecutting => "deepslate_tile_slab_from_deepslate_stonecutting",
DeepslateTileSlabFromDeepslateTilesStonecutting => "deepslate_tile_slab_from_deepslate_tiles_stonecutting",
DeepslateTileSlabFromPolishedDeepslateStonecutting => "deepslate_tile_slab_from_polished_deepslate_stonecutting",
DeepslateTileStairs => "deepslate_tile_stairs",
DeepslateTileStairsFromCobbledDeepslateStonecutting => "deepslate_tile_stairs_from_cobbled_deepslate_stonecutting",
DeepslateTileStairsFromDeepslateBricksStonecutting => "deepslate_tile_stairs_from_deepslate_bricks_stonecutting",
+ DeepslateTileStairsFromDeepslateStonecutting => "deepslate_tile_stairs_from_deepslate_stonecutting",
DeepslateTileStairsFromDeepslateTilesStonecutting => "deepslate_tile_stairs_from_deepslate_tiles_stonecutting",
DeepslateTileStairsFromPolishedDeepslateStonecutting => "deepslate_tile_stairs_from_polished_deepslate_stonecutting",
DeepslateTileWall => "deepslate_tile_wall",
DeepslateTileWallFromCobbledDeepslateStonecutting => "deepslate_tile_wall_from_cobbled_deepslate_stonecutting",
DeepslateTileWallFromDeepslateBricksStonecutting => "deepslate_tile_wall_from_deepslate_bricks_stonecutting",
+ DeepslateTileWallFromDeepslateStonecutting => "deepslate_tile_wall_from_deepslate_stonecutting",
DeepslateTileWallFromDeepslateTilesStonecutting => "deepslate_tile_wall_from_deepslate_tiles_stonecutting",
DeepslateTileWallFromPolishedDeepslateStonecutting => "deepslate_tile_wall_from_polished_deepslate_stonecutting",
DeepslateTiles => "deepslate_tiles",
DeepslateTilesFromCobbledDeepslateStonecutting => "deepslate_tiles_from_cobbled_deepslate_stonecutting",
DeepslateTilesFromDeepslateBricksStonecutting => "deepslate_tiles_from_deepslate_bricks_stonecutting",
+ DeepslateTilesFromDeepslateStonecutting => "deepslate_tiles_from_deepslate_stonecutting",
DeepslateTilesFromPolishedDeepslateStonecutting => "deepslate_tiles_from_polished_deepslate_stonecutting",
DetectorRail => "detector_rail",
Diamond => "diamond",
@@ -1117,13 +1087,13 @@ enum RecipeKey {
EndCrystal => "end_crystal",
EndRod => "end_rod",
EndStoneBrickSlab => "end_stone_brick_slab",
- EndStoneBrickSlabFromEndStoneBrickStonecutting => "end_stone_brick_slab_from_end_stone_brick_stonecutting",
+ EndStoneBrickSlabFromEndStoneBricksStonecutting => "end_stone_brick_slab_from_end_stone_bricks_stonecutting",
EndStoneBrickSlabFromEndStoneStonecutting => "end_stone_brick_slab_from_end_stone_stonecutting",
EndStoneBrickStairs => "end_stone_brick_stairs",
- EndStoneBrickStairsFromEndStoneBrickStonecutting => "end_stone_brick_stairs_from_end_stone_brick_stonecutting",
+ EndStoneBrickStairsFromEndStoneBricksStonecutting => "end_stone_brick_stairs_from_end_stone_bricks_stonecutting",
EndStoneBrickStairsFromEndStoneStonecutting => "end_stone_brick_stairs_from_end_stone_stonecutting",
EndStoneBrickWall => "end_stone_brick_wall",
- EndStoneBrickWallFromEndStoneBrickStonecutting => "end_stone_brick_wall_from_end_stone_brick_stonecutting",
+ EndStoneBrickWallFromEndStoneBricksStonecutting => "end_stone_brick_wall_from_end_stone_bricks_stonecutting",
EndStoneBrickWallFromEndStoneStonecutting => "end_stone_brick_wall_from_end_stone_stonecutting",
EndStoneBricks => "end_stone_bricks",
EndStoneBricksFromEndStoneStonecutting => "end_stone_bricks_from_end_stone_stonecutting",
@@ -1186,6 +1156,7 @@ enum RecipeKey {
GoldenBoots => "golden_boots",
GoldenCarrot => "golden_carrot",
GoldenChestplate => "golden_chestplate",
+ GoldenDandelion => "golden_dandelion",
GoldenHelmet => "golden_helmet",
GoldenHoe => "golden_hoe",
GoldenLeggings => "golden_leggings",
@@ -1201,6 +1172,7 @@ enum RecipeKey {
GraniteWall => "granite_wall",
GraniteWallFromGraniteStonecutting => "granite_wall_from_granite_stonecutting",
GrayBanner => "gray_banner",
+ GrayBannerDuplicate => "gray_banner_duplicate",
GrayBed => "gray_bed",
GrayBundle => "gray_bundle",
GrayCandle => "gray_candle",
@@ -1216,6 +1188,7 @@ enum RecipeKey {
GrayStainedGlassPaneFromGlassPane => "gray_stained_glass_pane_from_glass_pane",
GrayTerracotta => "gray_terracotta",
GreenBanner => "green_banner",
+ GreenBannerDuplicate => "green_banner_duplicate",
GreenBed => "green_bed",
GreenBundle => "green_bundle",
GreenCandle => "green_candle",
@@ -1295,13 +1268,19 @@ enum RecipeKey {
LeafLitter => "leaf_litter",
Leather => "leather",
LeatherBoots => "leather_boots",
+ LeatherBootsDyed => "leather_boots_dyed",
LeatherChestplate => "leather_chestplate",
+ LeatherChestplateDyed => "leather_chestplate_dyed",
LeatherHelmet => "leather_helmet",
+ LeatherHelmetDyed => "leather_helmet_dyed",
LeatherHorseArmor => "leather_horse_armor",
+ LeatherHorseArmorDyed => "leather_horse_armor_dyed",
LeatherLeggings => "leather_leggings",
+ LeatherLeggingsDyed => "leather_leggings_dyed",
Lectern => "lectern",
Lever => "lever",
LightBlueBanner => "light_blue_banner",
+ LightBlueBannerDuplicate => "light_blue_banner_duplicate",
LightBlueBed => "light_blue_bed",
LightBlueBundle => "light_blue_bundle",
LightBlueCandle => "light_blue_candle",
@@ -1317,6 +1296,7 @@ enum RecipeKey {
LightBlueStainedGlassPaneFromGlassPane => "light_blue_stained_glass_pane_from_glass_pane",
LightBlueTerracotta => "light_blue_terracotta",
LightGrayBanner => "light_gray_banner",
+ LightGrayBannerDuplicate => "light_gray_banner_duplicate",
LightGrayBed => "light_gray_bed",
LightGrayBundle => "light_gray_bundle",
LightGrayCandle => "light_gray_candle",
@@ -1337,6 +1317,7 @@ enum RecipeKey {
LightWeightedPressurePlate => "light_weighted_pressure_plate",
LightningRod => "lightning_rod",
LimeBanner => "lime_banner",
+ LimeBannerDuplicate => "lime_banner_duplicate",
LimeBed => "lime_bed",
LimeBundle => "lime_bundle",
LimeCandle => "lime_candle",
@@ -1355,6 +1336,7 @@ enum RecipeKey {
Loom => "loom",
Mace => "mace",
MagentaBanner => "magenta_banner",
+ MagentaBannerDuplicate => "magenta_banner_duplicate",
MagentaBed => "magenta_bed",
MagentaBundle => "magenta_bundle",
MagentaCandle => "magenta_candle",
@@ -1406,11 +1388,11 @@ enum RecipeKey {
MossyCobblestoneWall => "mossy_cobblestone_wall",
MossyCobblestoneWallFromMossyCobblestoneStonecutting => "mossy_cobblestone_wall_from_mossy_cobblestone_stonecutting",
MossyStoneBrickSlab => "mossy_stone_brick_slab",
- MossyStoneBrickSlabFromMossyStoneBrickStonecutting => "mossy_stone_brick_slab_from_mossy_stone_brick_stonecutting",
+ MossyStoneBrickSlabFromMossyStoneBricksStonecutting => "mossy_stone_brick_slab_from_mossy_stone_bricks_stonecutting",
MossyStoneBrickStairs => "mossy_stone_brick_stairs",
- MossyStoneBrickStairsFromMossyStoneBrickStonecutting => "mossy_stone_brick_stairs_from_mossy_stone_brick_stonecutting",
+ MossyStoneBrickStairsFromMossyStoneBricksStonecutting => "mossy_stone_brick_stairs_from_mossy_stone_bricks_stonecutting",
MossyStoneBrickWall => "mossy_stone_brick_wall",
- MossyStoneBrickWallFromMossyStoneBrickStonecutting => "mossy_stone_brick_wall_from_mossy_stone_brick_stonecutting",
+ MossyStoneBrickWallFromMossyStoneBricksStonecutting => "mossy_stone_brick_wall_from_mossy_stone_bricks_stonecutting",
MossyStoneBricksFromMossBlock => "mossy_stone_bricks_from_moss_block",
MossyStoneBricksFromVine => "mossy_stone_bricks_from_vine",
MudBrickSlab => "mud_brick_slab",
@@ -1423,6 +1405,7 @@ enum RecipeKey {
MuddyMangroveRoots => "muddy_mangrove_roots",
MushroomStew => "mushroom_stew",
MusicDisc5 => "music_disc_5",
+ NameTag => "name_tag",
NetherBrick => "nether_brick",
NetherBrickFence => "nether_brick_fence",
NetherBrickSlab => "nether_brick_slab",
@@ -1469,6 +1452,7 @@ enum RecipeKey {
OakWood => "oak_wood",
Observer => "observer",
OrangeBanner => "orange_banner",
+ OrangeBannerDuplicate => "orange_banner_duplicate",
OrangeBed => "orange_bed",
OrangeBundle => "orange_bundle",
OrangeCandle => "orange_candle",
@@ -1520,6 +1504,7 @@ enum RecipeKey {
PaleOakWood => "pale_oak_wood",
Paper => "paper",
PinkBanner => "pink_banner",
+ PinkBannerDuplicate => "pink_banner_duplicate",
PinkBed => "pink_bed",
PinkBundle => "pink_bundle",
PinkCandle => "pink_candle",
@@ -1578,14 +1563,18 @@ enum RecipeKey {
PolishedBlackstoneWallFromPolishedBlackstoneStonecutting => "polished_blackstone_wall_from_polished_blackstone_stonecutting",
PolishedDeepslate => "polished_deepslate",
PolishedDeepslateFromCobbledDeepslateStonecutting => "polished_deepslate_from_cobbled_deepslate_stonecutting",
+ PolishedDeepslateFromDeepslateStonecutting => "polished_deepslate_from_deepslate_stonecutting",
PolishedDeepslateSlab => "polished_deepslate_slab",
PolishedDeepslateSlabFromCobbledDeepslateStonecutting => "polished_deepslate_slab_from_cobbled_deepslate_stonecutting",
+ PolishedDeepslateSlabFromDeepslateStonecutting => "polished_deepslate_slab_from_deepslate_stonecutting",
PolishedDeepslateSlabFromPolishedDeepslateStonecutting => "polished_deepslate_slab_from_polished_deepslate_stonecutting",
PolishedDeepslateStairs => "polished_deepslate_stairs",
PolishedDeepslateStairsFromCobbledDeepslateStonecutting => "polished_deepslate_stairs_from_cobbled_deepslate_stonecutting",
+ PolishedDeepslateStairsFromDeepslateStonecutting => "polished_deepslate_stairs_from_deepslate_stonecutting",
PolishedDeepslateStairsFromPolishedDeepslateStonecutting => "polished_deepslate_stairs_from_polished_deepslate_stonecutting",
PolishedDeepslateWall => "polished_deepslate_wall",
PolishedDeepslateWallFromCobbledDeepslateStonecutting => "polished_deepslate_wall_from_cobbled_deepslate_stonecutting",
+ PolishedDeepslateWallFromDeepslateStonecutting => "polished_deepslate_wall_from_deepslate_stonecutting",
PolishedDeepslateWallFromPolishedDeepslateStonecutting => "polished_deepslate_wall_from_polished_deepslate_stonecutting",
PolishedDiorite => "polished_diorite",
PolishedDioriteFromDioriteStonecutting => "polished_diorite_from_diorite_stonecutting",
@@ -1618,9 +1607,9 @@ enum RecipeKey {
PoweredRail => "powered_rail",
Prismarine => "prismarine",
PrismarineBrickSlab => "prismarine_brick_slab",
- PrismarineBrickSlabFromPrismarineStonecutting => "prismarine_brick_slab_from_prismarine_stonecutting",
+ PrismarineBrickSlabFromPrismarineBricksStonecutting => "prismarine_brick_slab_from_prismarine_bricks_stonecutting",
PrismarineBrickStairs => "prismarine_brick_stairs",
- PrismarineBrickStairsFromPrismarineStonecutting => "prismarine_brick_stairs_from_prismarine_stonecutting",
+ PrismarineBrickStairsFromPrismarineBricksStonecutting => "prismarine_brick_stairs_from_prismarine_bricks_stonecutting",
PrismarineBricks => "prismarine_bricks",
PrismarineSlab => "prismarine_slab",
PrismarineSlabFromPrismarineStonecutting => "prismarine_slab_from_prismarine_stonecutting",
@@ -1631,6 +1620,7 @@ enum RecipeKey {
PumpkinPie => "pumpkin_pie",
PumpkinSeeds => "pumpkin_seeds",
PurpleBanner => "purple_banner",
+ PurpleBannerDuplicate => "purple_banner_duplicate",
PurpleBed => "purple_bed",
PurpleBundle => "purple_bundle",
PurpleCandle => "purple_candle",
@@ -1659,7 +1649,7 @@ enum RecipeKey {
QuartzPillar => "quartz_pillar",
QuartzPillarFromQuartzBlockStonecutting => "quartz_pillar_from_quartz_block_stonecutting",
QuartzSlab => "quartz_slab",
- QuartzSlabFromStonecutting => "quartz_slab_from_stonecutting",
+ QuartzSlabFromQuartzBlockStonecutting => "quartz_slab_from_quartz_block_stonecutting",
QuartzStairs => "quartz_stairs",
QuartzStairsFromQuartzBlockStonecutting => "quartz_stairs_from_quartz_block_stonecutting",
RabbitStewFromBrownMushroom => "rabbit_stew_from_brown_mushroom",
@@ -1675,6 +1665,7 @@ enum RecipeKey {
RawIronBlock => "raw_iron_block",
RecoveryCompass => "recovery_compass",
RedBanner => "red_banner",
+ RedBannerDuplicate => "red_banner_duplicate",
RedBed => "red_bed",
RedBundle => "red_bundle",
RedCandle => "red_candle",
@@ -1812,7 +1803,7 @@ enum RecipeKey {
StoneBrickStairsFromStoneStonecutting => "stone_brick_stairs_from_stone_stonecutting",
StoneBrickWall => "stone_brick_wall",
StoneBrickWallFromStoneBricksStonecutting => "stone_brick_wall_from_stone_bricks_stonecutting",
- StoneBrickWallsFromStoneStonecutting => "stone_brick_walls_from_stone_stonecutting",
+ StoneBrickWallFromStoneStonecutting => "stone_brick_wall_from_stone_stonecutting",
StoneBricks => "stone_bricks",
StoneBricksFromStoneStonecutting => "stone_bricks_from_stone_stonecutting",
StoneButton => "stone_button",
@@ -1846,6 +1837,7 @@ enum RecipeKey {
SuspiciousStewFromClosedEyeblossom => "suspicious_stew_from_closed_eyeblossom",
SuspiciousStewFromCornflower => "suspicious_stew_from_cornflower",
SuspiciousStewFromDandelion => "suspicious_stew_from_dandelion",
+ SuspiciousStewFromGoldenDandelion => "suspicious_stew_from_golden_dandelion",
SuspiciousStewFromLilyOfTheValley => "suspicious_stew_from_lily_of_the_valley",
SuspiciousStewFromOpenEyeblossom => "suspicious_stew_from_open_eyeblossom",
SuspiciousStewFromOrangeTulip => "suspicious_stew_from_orange_tulip",
@@ -2041,6 +2033,7 @@ enum RecipeKey {
WeatheredCutCopperStairsFromWeatheredCutCopperStonecutting => "weathered_cut_copper_stairs_from_weathered_cut_copper_stonecutting",
Wheat => "wheat",
WhiteBanner => "white_banner",
+ WhiteBannerDuplicate => "white_banner_duplicate",
WhiteBed => "white_bed",
WhiteBundle => "white_bundle",
WhiteCandle => "white_candle",
@@ -2060,6 +2053,7 @@ enum RecipeKey {
WildArmorTrimSmithingTemplateSmithingTrim => "wild_armor_trim_smithing_template_smithing_trim",
WindCharge => "wind_charge",
WolfArmor => "wolf_armor",
+ WolfArmorDyed => "wolf_armor_dyed",
WoodenAxe => "wooden_axe",
WoodenHoe => "wooden_hoe",
WoodenPickaxe => "wooden_pickaxe",
@@ -2068,12 +2062,14 @@ enum RecipeKey {
WoodenSword => "wooden_sword",
WritableBook => "writable_book",
YellowBanner => "yellow_banner",
+ YellowBannerDuplicate => "yellow_banner_duplicate",
YellowBed => "yellow_bed",
YellowBundle => "yellow_bundle",
YellowCandle => "yellow_candle",
YellowCarpet => "yellow_carpet",
YellowConcretePowder => "yellow_concrete_powder",
YellowDyeFromDandelion => "yellow_dye_from_dandelion",
+ YellowDyeFromGoldenDandelion => "yellow_dye_from_golden_dandelion",
YellowDyeFromSunflower => "yellow_dye_from_sunflower",
YellowDyeFromWildflowers => "yellow_dye_from_wildflowers",
YellowGlazedTerracotta => "yellow_glazed_terracotta",
@@ -2160,3 +2156,93 @@ enum BiomeKey {
WoodedBadlands => "wooded_badlands",
}
}
+
+data_registry! {
+WorldClock => "world_clock",
+enum WorldClockKey {
+ Overworld => "overworld",
+ TheEnd => "the_end",
+}
+}
+
+data_registry! {
+PigSoundVariant => "pig_sound_variant",
+enum PigSoundVariantKey {
+ Big => "big",
+ Classic => "classic",
+ Mini => "mini",
+}
+}
+
+data_registry! {
+CatSoundVariant => "cat_sound_variant",
+enum CatSoundVariantKey {
+ Classic => "classic",
+ Royal => "royal",
+}
+}
+
+data_registry! {
+CowSoundVariant => "cow_sound_variant",
+enum CowSoundVariantKey {
+ Classic => "classic",
+ Moody => "moody",
+}
+}
+
+data_registry! {
+ChickenSoundVariant => "chicken_sound_variant",
+enum ChickenSoundVariantKey {
+ Classic => "classic",
+ Picky => "picky",
+}
+}
+
+data_registry! {
+BannerPatternKind => "banner_pattern",
+enum BannerPatternKindKey {
+ Base => "base",
+ Border => "border",
+ Bricks => "bricks",
+ Circle => "circle",
+ Creeper => "creeper",
+ Cross => "cross",
+ CurlyBorder => "curly_border",
+ DiagonalLeft => "diagonal_left",
+ DiagonalRight => "diagonal_right",
+ DiagonalUpLeft => "diagonal_up_left",
+ DiagonalUpRight => "diagonal_up_right",
+ Flow => "flow",
+ Flower => "flower",
+ Globe => "globe",
+ Gradient => "gradient",
+ GradientUp => "gradient_up",
+ Guster => "guster",
+ HalfHorizontal => "half_horizontal",
+ HalfHorizontalBottom => "half_horizontal_bottom",
+ HalfVertical => "half_vertical",
+ HalfVerticalRight => "half_vertical_right",
+ Mojang => "mojang",
+ Piglin => "piglin",
+ Rhombus => "rhombus",
+ Skull => "skull",
+ SmallStripes => "small_stripes",
+ SquareBottomLeft => "square_bottom_left",
+ SquareBottomRight => "square_bottom_right",
+ SquareTopLeft => "square_top_left",
+ SquareTopRight => "square_top_right",
+ StraightCross => "straight_cross",
+ StripeBottom => "stripe_bottom",
+ StripeCenter => "stripe_center",
+ StripeDownleft => "stripe_downleft",
+ StripeDownright => "stripe_downright",
+ StripeLeft => "stripe_left",
+ StripeMiddle => "stripe_middle",
+ StripeRight => "stripe_right",
+ StripeTop => "stripe_top",
+ TriangleBottom => "triangle_bottom",
+ TriangleTop => "triangle_top",
+ TrianglesBottom => "triangles_bottom",
+ TrianglesTop => "triangles_top",
+}
+}
diff --git a/azalea-registry/src/tags/blocks.rs b/azalea-registry/src/tags/blocks.rs
index 6ef95597..b2a0c2f0 100644
--- a/azalea-registry/src/tags/blocks.rs
+++ b/azalea-registry/src/tags/blocks.rs
@@ -229,27 +229,6 @@ pub static BADLANDS_TERRACOTTA: LazyLock<RegistryTag<BlockKind>> = LazyLock::new
pub static BAMBOO_BLOCKS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![BlockKind::BambooBlock, BlockKind::StrippedBambooBlock])
});
-pub static BAMBOO_PLANTABLE_ON: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
- RegistryTag::new(vec![
- BlockKind::GrassBlock,
- BlockKind::Dirt,
- BlockKind::CoarseDirt,
- BlockKind::Podzol,
- BlockKind::Sand,
- BlockKind::SuspiciousSand,
- BlockKind::RedSand,
- BlockKind::Gravel,
- BlockKind::SuspiciousGravel,
- BlockKind::MuddyMangroveRoots,
- BlockKind::Mycelium,
- BlockKind::BambooSapling,
- BlockKind::Bamboo,
- BlockKind::MossBlock,
- BlockKind::RootedDirt,
- BlockKind::Mud,
- BlockKind::PaleMossBlock,
- ])
-});
pub static BANNERS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::WhiteBanner,
@@ -405,22 +384,36 @@ pub static BEE_GROWABLES: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
});
pub static BEEHIVES: LazyLock<RegistryTag<BlockKind>> =
LazyLock::new(|| RegistryTag::new(vec![BlockKind::BeeNest, BlockKind::Beehive]));
-pub static BIG_DRIPLEAF_PLACEABLE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
- RegistryTag::new(vec![
- BlockKind::GrassBlock,
- BlockKind::Dirt,
- BlockKind::CoarseDirt,
- BlockKind::Podzol,
- BlockKind::MuddyMangroveRoots,
- BlockKind::Farmland,
- BlockKind::Clay,
- BlockKind::Mycelium,
- BlockKind::MossBlock,
- BlockKind::MossBlock,
- BlockKind::RootedDirt,
- BlockKind::Mud,
- ])
-});
+pub static BENEATH_BAMBOO_PODZOL_REPLACEABLE: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+ });
+pub static BENEATH_TREE_PODZOL_REPLACEABLE: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+ });
pub static BIRCH_LOGS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::BirchLog,
@@ -534,6 +527,30 @@ pub static CANDLES: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
BlockKind::BlackCandle,
])
});
+pub static CANNOT_REPLACE_BELOW_TREE_TRUNK: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+ });
+pub static CANNOT_SUPPORT_KELP: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::MagmaBlock]));
+pub static CANNOT_SUPPORT_SEAGRASS: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::MagmaBlock]));
+pub static CANNOT_SUPPORT_SNOW_LAYER: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::Ice,
+ BlockKind::Barrier,
+ BlockKind::PackedIce,
+ ])
+});
pub static CAULDRONS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::Cauldron,
@@ -853,16 +870,9 @@ pub static DIAMOND_ORES: LazyLock<RegistryTag<BlockKind>> =
LazyLock::new(|| RegistryTag::new(vec![BlockKind::DiamondOre, BlockKind::DeepslateDiamondOre]));
pub static DIRT: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
- BlockKind::GrassBlock,
BlockKind::Dirt,
BlockKind::CoarseDirt,
- BlockKind::Podzol,
- BlockKind::MuddyMangroveRoots,
- BlockKind::Mycelium,
- BlockKind::MossBlock,
BlockKind::RootedDirt,
- BlockKind::Mud,
- BlockKind::PaleMossBlock,
])
});
pub static DOES_NOT_BLOCK_HOPPERS: LazyLock<RegistryTag<BlockKind>> =
@@ -928,41 +938,6 @@ pub static DRIPSTONE_REPLACEABLE_BLOCKS: LazyLock<RegistryTag<BlockKind>> = Lazy
BlockKind::Deepslate,
])
});
-pub static DRY_VEGETATION_MAY_PLACE_ON: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
- RegistryTag::new(vec![
- BlockKind::GrassBlock,
- BlockKind::Dirt,
- BlockKind::CoarseDirt,
- BlockKind::Podzol,
- BlockKind::Sand,
- BlockKind::SuspiciousSand,
- BlockKind::RedSand,
- BlockKind::MuddyMangroveRoots,
- BlockKind::Farmland,
- BlockKind::Mycelium,
- BlockKind::WhiteTerracotta,
- BlockKind::OrangeTerracotta,
- BlockKind::MagentaTerracotta,
- BlockKind::LightBlueTerracotta,
- BlockKind::YellowTerracotta,
- BlockKind::LimeTerracotta,
- BlockKind::PinkTerracotta,
- BlockKind::GrayTerracotta,
- BlockKind::LightGrayTerracotta,
- BlockKind::CyanTerracotta,
- BlockKind::PurpleTerracotta,
- BlockKind::BlueTerracotta,
- BlockKind::BrownTerracotta,
- BlockKind::GreenTerracotta,
- BlockKind::RedTerracotta,
- BlockKind::BlackTerracotta,
- BlockKind::Terracotta,
- BlockKind::MossBlock,
- BlockKind::RootedDirt,
- BlockKind::Mud,
- BlockKind::PaleMossBlock,
- ])
-});
pub static EDIBLE_FOR_SHEEP: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::ShortGrass,
@@ -973,6 +948,10 @@ pub static EDIBLE_FOR_SHEEP: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(||
});
pub static EMERALD_ORES: LazyLock<RegistryTag<BlockKind>> =
LazyLock::new(|| RegistryTag::new(vec![BlockKind::EmeraldOre, BlockKind::DeepslateEmeraldOre]));
+pub static ENABLES_BUBBLE_COLUMN_DRAG_DOWN: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::MagmaBlock]));
+pub static ENABLES_BUBBLE_COLUMN_PUSH_UP: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::SoulSand]));
pub static ENCHANTMENT_POWER_PROVIDER: LazyLock<RegistryTag<BlockKind>> =
LazyLock::new(|| RegistryTag::new(vec![BlockKind::Bookshelf]));
pub static ENCHANTMENT_POWER_TRANSMITTER: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
@@ -1019,6 +998,7 @@ pub static ENDERMAN_HOLDABLE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|
BlockKind::Gravel,
BlockKind::MuddyMangroveRoots,
BlockKind::Dandelion,
+ BlockKind::GoldenDandelion,
BlockKind::Torchflower,
BlockKind::Poppy,
BlockKind::BlueOrchid,
@@ -1132,6 +1112,7 @@ pub static FLOWER_POTS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
BlockKind::PottedMangrovePropagule,
BlockKind::PottedFern,
BlockKind::PottedDandelion,
+ BlockKind::PottedGoldenDandelion,
BlockKind::PottedPoppy,
BlockKind::PottedBlueOrchid,
BlockKind::PottedAllium,
@@ -1165,6 +1146,7 @@ pub static FLOWERS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
BlockKind::CherryLeaves,
BlockKind::FloweringAzaleaLeaves,
BlockKind::Dandelion,
+ BlockKind::GoldenDandelion,
BlockKind::Torchflower,
BlockKind::Poppy,
BlockKind::BlueOrchid,
@@ -1193,6 +1175,26 @@ pub static FLOWERS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
BlockKind::ClosedEyeblossom,
])
});
+pub static FOREST_ROCK_CAN_PLACE_ON: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::Stone,
+ BlockKind::Granite,
+ BlockKind::Diorite,
+ BlockKind::Andesite,
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Mycelium,
+ BlockKind::Tuff,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::Deepslate,
+ BlockKind::PaleMossBlock,
+ ])
+});
pub static FOXES_SPAWNABLE_ON: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::GrassBlock,
@@ -1239,6 +1241,15 @@ pub static GOLD_ORES: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
BlockKind::NetherGoldOre,
])
});
+pub static GRASS_BLOCKS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Podzol,
+ BlockKind::Mycelium,
+ ])
+});
+pub static GROWS_CROPS: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::Farmland]));
pub static GUARDED_BY_PIGLINS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::GoldOre,
@@ -1296,6 +1307,43 @@ pub static HOGLIN_REPELLENTS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|
BlockKind::PottedWarpedFungus,
])
});
+pub static HUGE_BROWN_MUSHROOM_CAN_PLACE_ON: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Mycelium,
+ BlockKind::Mycelium,
+ BlockKind::WarpedNylium,
+ BlockKind::CrimsonNylium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+ });
+pub static HUGE_RED_MUSHROOM_CAN_PLACE_ON: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Mycelium,
+ BlockKind::Mycelium,
+ BlockKind::WarpedNylium,
+ BlockKind::CrimsonNylium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
pub static ICE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::Ice,
@@ -1304,6 +1352,22 @@ pub static ICE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
BlockKind::BlueIce,
])
});
+pub static ICE_SPIKE_REPLACEABLE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Ice,
+ BlockKind::SnowBlock,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
pub static IMPERMEABLE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::Glass,
@@ -1865,17 +1929,30 @@ pub static LUSH_GROUND_REPLACEABLE: LazyLock<RegistryTag<BlockKind>> = LazyLock:
});
pub static MAINTAINS_FARMLAND: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
+ BlockKind::MovingPiston,
BlockKind::Torchflower,
BlockKind::Wheat,
BlockKind::AttachedPumpkinStem,
BlockKind::AttachedMelonStem,
BlockKind::PumpkinStem,
BlockKind::MelonStem,
+ BlockKind::OakFenceGate,
BlockKind::Carrots,
BlockKind::Potatoes,
+ BlockKind::SpruceFenceGate,
+ BlockKind::BirchFenceGate,
+ BlockKind::JungleFenceGate,
+ BlockKind::AcaciaFenceGate,
+ BlockKind::CherryFenceGate,
+ BlockKind::DarkOakFenceGate,
+ BlockKind::PaleOakFenceGate,
+ BlockKind::MangroveFenceGate,
+ BlockKind::BambooFenceGate,
BlockKind::TorchflowerCrop,
BlockKind::PitcherCrop,
BlockKind::Beetroots,
+ BlockKind::CrimsonFenceGate,
+ BlockKind::WarpedFenceGate,
])
});
pub static MANGROVE_LOGS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
@@ -2789,6 +2866,8 @@ pub static MOB_INTERACTABLE_DOORS: LazyLock<RegistryTag<BlockKind>> = LazyLock::
});
pub static MOOSHROOMS_SPAWNABLE_ON: LazyLock<RegistryTag<BlockKind>> =
LazyLock::new(|| RegistryTag::new(vec![BlockKind::Mycelium]));
+pub static MOSS_BLOCKS: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::MossBlock, BlockKind::PaleMossBlock]));
pub static MOSS_REPLACEABLE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::Stone,
@@ -2811,14 +2890,8 @@ pub static MOSS_REPLACEABLE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(||
BlockKind::PaleMossBlock,
])
});
-pub static MUSHROOM_GROW_BLOCK: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
- RegistryTag::new(vec![
- BlockKind::Podzol,
- BlockKind::Mycelium,
- BlockKind::WarpedNylium,
- BlockKind::CrimsonNylium,
- ])
-});
+pub static MUD: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::MuddyMangroveRoots, BlockKind::Mud]));
pub static NEEDS_DIAMOND_TOOL: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::Obsidian,
@@ -2998,6 +3071,15 @@ pub static OCCLUDES_VIBRATION_SIGNALS: LazyLock<RegistryTag<BlockKind>> = LazyLo
BlockKind::BlackWool,
])
});
+pub static OVERRIDES_MUSHROOM_LIGHT_REQUIREMENT: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::Podzol,
+ BlockKind::Mycelium,
+ BlockKind::WarpedNylium,
+ BlockKind::CrimsonNylium,
+ ])
+ });
pub static OVERWORLD_CARVER_REPLACEABLES: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::Stone,
@@ -3198,6 +3280,54 @@ pub static PREVENT_MOB_SPAWNING_INSIDE: LazyLock<RegistryTag<BlockKind>> = LazyL
BlockKind::ActivatorRail,
])
});
+pub static PREVENTS_NEARBY_LEAF_DECAY: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::PaleOakWood,
+ BlockKind::OakLog,
+ BlockKind::SpruceLog,
+ BlockKind::BirchLog,
+ BlockKind::JungleLog,
+ BlockKind::AcaciaLog,
+ BlockKind::CherryLog,
+ BlockKind::DarkOakLog,
+ BlockKind::PaleOakLog,
+ BlockKind::MangroveLog,
+ BlockKind::StrippedSpruceLog,
+ BlockKind::StrippedBirchLog,
+ BlockKind::StrippedJungleLog,
+ BlockKind::StrippedAcaciaLog,
+ BlockKind::StrippedCherryLog,
+ BlockKind::StrippedDarkOakLog,
+ BlockKind::StrippedPaleOakLog,
+ BlockKind::StrippedOakLog,
+ BlockKind::StrippedMangroveLog,
+ BlockKind::OakWood,
+ BlockKind::SpruceWood,
+ BlockKind::BirchWood,
+ BlockKind::JungleWood,
+ BlockKind::AcaciaWood,
+ BlockKind::CherryWood,
+ BlockKind::DarkOakWood,
+ BlockKind::MangroveWood,
+ BlockKind::StrippedOakWood,
+ BlockKind::StrippedSpruceWood,
+ BlockKind::StrippedBirchWood,
+ BlockKind::StrippedJungleWood,
+ BlockKind::StrippedAcaciaWood,
+ BlockKind::StrippedCherryWood,
+ BlockKind::StrippedDarkOakWood,
+ BlockKind::StrippedPaleOakWood,
+ BlockKind::StrippedMangroveWood,
+ BlockKind::WarpedStem,
+ BlockKind::StrippedWarpedStem,
+ BlockKind::WarpedHyphae,
+ BlockKind::StrippedWarpedHyphae,
+ BlockKind::CrimsonStem,
+ BlockKind::StrippedCrimsonStem,
+ BlockKind::CrimsonHyphae,
+ BlockKind::StrippedCrimsonHyphae,
+ ])
+});
pub static RABBITS_SPAWNABLE_ON: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::GrassBlock,
@@ -3276,6 +3406,7 @@ pub static REPLACEABLE_BY_MUSHROOMS: LazyLock<RegistryTag<BlockKind>> = LazyLock
BlockKind::Seagrass,
BlockKind::TallSeagrass,
BlockKind::Dandelion,
+ BlockKind::GoldenDandelion,
BlockKind::Torchflower,
BlockKind::Poppy,
BlockKind::BlueOrchid,
@@ -3336,6 +3467,7 @@ pub static REPLACEABLE_BY_TREES: LazyLock<RegistryTag<BlockKind>> = LazyLock::ne
BlockKind::Seagrass,
BlockKind::TallSeagrass,
BlockKind::Dandelion,
+ BlockKind::GoldenDandelion,
BlockKind::Torchflower,
BlockKind::Poppy,
BlockKind::BlueOrchid,
@@ -3620,11 +3752,10 @@ pub static SLABS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
BlockKind::DeepslateBrickSlab,
])
});
-pub static SMALL_DRIPLEAF_PLACEABLE: LazyLock<RegistryTag<BlockKind>> =
- LazyLock::new(|| RegistryTag::new(vec![BlockKind::Clay, BlockKind::MossBlock]));
pub static SMALL_FLOWERS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::Dandelion,
+ BlockKind::GoldenDandelion,
BlockKind::Torchflower,
BlockKind::Poppy,
BlockKind::BlueOrchid,
@@ -3685,20 +3816,6 @@ pub static SNOW: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
BlockKind::PowderSnow,
])
});
-pub static SNOW_LAYER_CAN_SURVIVE_ON: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
- RegistryTag::new(vec![
- BlockKind::SoulSand,
- BlockKind::HoneyBlock,
- BlockKind::Mud,
- ])
-});
-pub static SNOW_LAYER_CANNOT_SURVIVE_ON: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
- RegistryTag::new(vec![
- BlockKind::Ice,
- BlockKind::Barrier,
- BlockKind::PackedIce,
- ])
-});
pub static SOUL_FIRE_BASE_BLOCKS: LazyLock<RegistryTag<BlockKind>> =
LazyLock::new(|| RegistryTag::new(vec![BlockKind::SoulSand, BlockKind::SoulSoil]));
pub static SOUL_SPEED_BLOCKS: LazyLock<RegistryTag<BlockKind>> =
@@ -3819,6 +3936,359 @@ pub static STONE_PRESSURE_PLATES: LazyLock<RegistryTag<BlockKind>> = LazyLock::n
});
pub static STRIDER_WARM_BLOCKS: LazyLock<RegistryTag<BlockKind>> =
LazyLock::new(|| RegistryTag::new(vec![BlockKind::Lava]));
+pub static SUBSTRATE_OVERWORLD: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORT_OVERRIDE_CACTUS_FLOWER: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::Farmland, BlockKind::Cactus]));
+pub static SUPPORT_OVERRIDE_SNOW_LAYER: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::SoulSand,
+ BlockKind::HoneyBlock,
+ BlockKind::Mud,
+ ])
+});
+pub static SUPPORTS_AZALEA: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::Clay,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_BAMBOO: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::Sand,
+ BlockKind::SuspiciousSand,
+ BlockKind::RedSand,
+ BlockKind::Gravel,
+ BlockKind::SuspiciousGravel,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Mycelium,
+ BlockKind::BambooSapling,
+ BlockKind::Bamboo,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_BIG_DRIPLEAF: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::Clay,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ ])
+});
+pub static SUPPORTS_CACTUS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::Sand,
+ BlockKind::SuspiciousSand,
+ BlockKind::RedSand,
+ ])
+});
+pub static SUPPORTS_CHORUS_FLOWER: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::EndStone]));
+pub static SUPPORTS_CHORUS_PLANT: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::EndStone]));
+pub static SUPPORTS_COCOA: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::JungleLog,
+ BlockKind::StrippedJungleLog,
+ BlockKind::JungleWood,
+ BlockKind::StrippedJungleWood,
+ ])
+});
+pub static SUPPORTS_CRIMSON_FUNGUS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::SoulSoil,
+ BlockKind::Mycelium,
+ BlockKind::Mycelium,
+ BlockKind::WarpedNylium,
+ BlockKind::CrimsonNylium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_CRIMSON_ROOTS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::SoulSoil,
+ BlockKind::Mycelium,
+ BlockKind::WarpedNylium,
+ BlockKind::CrimsonNylium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_CROPS: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::Farmland]));
+pub static SUPPORTS_DRY_VEGETATION: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::Sand,
+ BlockKind::SuspiciousSand,
+ BlockKind::RedSand,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::Mycelium,
+ BlockKind::WhiteTerracotta,
+ BlockKind::OrangeTerracotta,
+ BlockKind::MagentaTerracotta,
+ BlockKind::LightBlueTerracotta,
+ BlockKind::YellowTerracotta,
+ BlockKind::LimeTerracotta,
+ BlockKind::PinkTerracotta,
+ BlockKind::GrayTerracotta,
+ BlockKind::LightGrayTerracotta,
+ BlockKind::CyanTerracotta,
+ BlockKind::PurpleTerracotta,
+ BlockKind::BlueTerracotta,
+ BlockKind::BrownTerracotta,
+ BlockKind::GreenTerracotta,
+ BlockKind::RedTerracotta,
+ BlockKind::BlackTerracotta,
+ BlockKind::Terracotta,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_FROGSPAWN: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![]));
+pub static SUPPORTS_HANGING_MANGROVE_PROPAGULE: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::MangroveLeaves]));
+pub static SUPPORTS_LILY_PAD: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::Ice, BlockKind::FrostedIce]));
+pub static SUPPORTS_MANGROVE_PROPAGULE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::Clay,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_MELON_STEM: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::Farmland]));
+pub static SUPPORTS_MELON_STEM_FRUIT: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_NETHER_SPROUTS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::SoulSoil,
+ BlockKind::Mycelium,
+ BlockKind::WarpedNylium,
+ BlockKind::CrimsonNylium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_NETHER_WART: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::SoulSand]));
+pub static SUPPORTS_PUMPKIN_STEM: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::Farmland]));
+pub static SUPPORTS_PUMPKIN_STEM_FRUIT: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_SMALL_DRIPLEAF: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::Clay, BlockKind::MossBlock]));
+pub static SUPPORTS_STEM_CROPS: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::Farmland]));
+pub static SUPPORTS_STEM_FRUIT: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_SUGAR_CANE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::Sand,
+ BlockKind::SuspiciousSand,
+ BlockKind::RedSand,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_SUGAR_CANE_ADJACENTLY: LazyLock<RegistryTag<BlockKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![BlockKind::FrostedIce]));
+pub static SUPPORTS_VEGETATION: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_WARPED_FUNGUS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::SoulSoil,
+ BlockKind::Mycelium,
+ BlockKind::Mycelium,
+ BlockKind::WarpedNylium,
+ BlockKind::CrimsonNylium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_WARPED_ROOTS: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::SoulSoil,
+ BlockKind::Mycelium,
+ BlockKind::WarpedNylium,
+ BlockKind::CrimsonNylium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
+pub static SUPPORTS_WITHER_ROSE: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ BlockKind::GrassBlock,
+ BlockKind::Dirt,
+ BlockKind::CoarseDirt,
+ BlockKind::Podzol,
+ BlockKind::MuddyMangroveRoots,
+ BlockKind::Farmland,
+ BlockKind::Netherrack,
+ BlockKind::SoulSand,
+ BlockKind::SoulSoil,
+ BlockKind::Mycelium,
+ BlockKind::MossBlock,
+ BlockKind::RootedDirt,
+ BlockKind::Mud,
+ BlockKind::PaleMossBlock,
+ ])
+});
pub static SWORD_EFFICIENT: LazyLock<RegistryTag<BlockKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
BlockKind::OakLeaves,
diff --git a/azalea-registry/src/tags/entities.rs b/azalea-registry/src/tags/entities.rs
index 3680d35a..a8a7c961 100644
--- a/azalea-registry/src/tags/entities.rs
+++ b/azalea-registry/src/tags/entities.rs
@@ -154,6 +154,13 @@ pub static CAN_WEAR_NAUTILUS_ARMOR: LazyLock<RegistryTag<EntityKind>> =
LazyLock::new(|| RegistryTag::new(vec![EntityKind::Nautilus, EntityKind::ZombieNautilus]));
pub static CANDIDATE_FOR_IRON_GOLEM_GIFT: LazyLock<RegistryTag<EntityKind>> =
LazyLock::new(|| RegistryTag::new(vec![EntityKind::CopperGolem, EntityKind::Villager]));
+pub static CANNOT_BE_AGE_LOCKED: LazyLock<RegistryTag<EntityKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ EntityKind::SkeletonHorse,
+ EntityKind::Villager,
+ EntityKind::ZombieHorse,
+ ])
+});
pub static CANNOT_BE_PUSHED_ONTO_BOATS: LazyLock<RegistryTag<EntityKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
EntityKind::Cod,
diff --git a/azalea-registry/src/tags/fluids.rs b/azalea-registry/src/tags/fluids.rs
index 3e8d5062..6928f342 100644
--- a/azalea-registry/src/tags/fluids.rs
+++ b/azalea-registry/src/tags/fluids.rs
@@ -4,7 +4,15 @@ use std::sync::LazyLock;
use crate::{builtin::Fluid, tags::RegistryTag};
+pub static BUBBLE_COLUMN_CAN_OCCUPY: LazyLock<RegistryTag<Fluid>> =
+ LazyLock::new(|| RegistryTag::new(vec![Fluid::Water]));
pub static LAVA: LazyLock<RegistryTag<Fluid>> =
LazyLock::new(|| RegistryTag::new(vec![Fluid::FlowingLava, Fluid::Lava]));
+pub static SUPPORTS_FROGSPAWN: LazyLock<RegistryTag<Fluid>> =
+ LazyLock::new(|| RegistryTag::new(vec![Fluid::Water]));
+pub static SUPPORTS_LILY_PAD: LazyLock<RegistryTag<Fluid>> =
+ LazyLock::new(|| RegistryTag::new(vec![Fluid::Water]));
+pub static SUPPORTS_SUGAR_CANE_ADJACENTLY: LazyLock<RegistryTag<Fluid>> =
+ LazyLock::new(|| RegistryTag::new(vec![Fluid::FlowingWater, Fluid::Water]));
pub static WATER: LazyLock<RegistryTag<Fluid>> =
LazyLock::new(|| RegistryTag::new(vec![Fluid::FlowingWater, Fluid::Water]));
diff --git a/azalea-registry/src/tags/items.rs b/azalea-registry/src/tags/items.rs
index d76efbd2..f798f57f 100644
--- a/azalea-registry/src/tags/items.rs
+++ b/azalea-registry/src/tags/items.rs
@@ -288,8 +288,38 @@ pub static CANDLES: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
ItemKind::BlackCandle,
])
});
+pub static CAT_COLLAR_DYES: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ ItemKind::WhiteDye,
+ ItemKind::OrangeDye,
+ ItemKind::MagentaDye,
+ ItemKind::LightBlueDye,
+ ItemKind::YellowDye,
+ ItemKind::LimeDye,
+ ItemKind::PinkDye,
+ ItemKind::GrayDye,
+ ItemKind::LightGrayDye,
+ ItemKind::CyanDye,
+ ItemKind::PurpleDye,
+ ItemKind::BlueDye,
+ ItemKind::BrownDye,
+ ItemKind::GreenDye,
+ ItemKind::RedDye,
+ ItemKind::BlackDye,
+ ])
+});
pub static CAT_FOOD: LazyLock<RegistryTag<ItemKind>> =
LazyLock::new(|| RegistryTag::new(vec![ItemKind::Cod, ItemKind::Salmon]));
+pub static CAULDRON_CAN_REMOVE_DYE: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ ItemKind::WolfArmor,
+ ItemKind::LeatherHelmet,
+ ItemKind::LeatherChestplate,
+ ItemKind::LeatherLeggings,
+ ItemKind::LeatherBoots,
+ ItemKind::LeatherHorseArmor,
+ ])
+});
pub static CHAINS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
ItemKind::IronChain,
@@ -597,16 +627,9 @@ pub static DIAMOND_TOOL_MATERIALS: LazyLock<RegistryTag<ItemKind>> =
LazyLock::new(|| RegistryTag::new(vec![ItemKind::Diamond]));
pub static DIRT: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
- ItemKind::GrassBlock,
ItemKind::Dirt,
ItemKind::CoarseDirt,
- ItemKind::Podzol,
ItemKind::RootedDirt,
- ItemKind::Mud,
- ItemKind::MuddyMangroveRoots,
- ItemKind::MossBlock,
- ItemKind::PaleMossBlock,
- ItemKind::Mycelium,
])
});
pub static DOORS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
@@ -638,14 +661,24 @@ pub static DROWNED_PREFERRED_WEAPONS: LazyLock<RegistryTag<ItemKind>> =
LazyLock::new(|| RegistryTag::new(vec![ItemKind::Trident]));
pub static DUPLICATES_ALLAYS: LazyLock<RegistryTag<ItemKind>> =
LazyLock::new(|| RegistryTag::new(vec![ItemKind::AmethystShard]));
-pub static DYEABLE: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
- RegistryTag::new(vec![
- ItemKind::WolfArmor,
- ItemKind::LeatherHelmet,
- ItemKind::LeatherChestplate,
- ItemKind::LeatherLeggings,
- ItemKind::LeatherBoots,
- ItemKind::LeatherHorseArmor,
+pub static DYES: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ ItemKind::WhiteDye,
+ ItemKind::OrangeDye,
+ ItemKind::MagentaDye,
+ ItemKind::LightBlueDye,
+ ItemKind::YellowDye,
+ ItemKind::LimeDye,
+ ItemKind::PinkDye,
+ ItemKind::GrayDye,
+ ItemKind::LightGrayDye,
+ ItemKind::CyanDye,
+ ItemKind::PurpleDye,
+ ItemKind::BlueDye,
+ ItemKind::BrownDye,
+ ItemKind::GreenDye,
+ ItemKind::RedDye,
+ ItemKind::BlackDye,
])
});
pub static EGGS: LazyLock<RegistryTag<ItemKind>> =
@@ -1190,6 +1223,7 @@ pub static FLOWERS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
ItemKind::FloweringAzaleaLeaves,
ItemKind::FloweringAzalea,
ItemKind::Dandelion,
+ ItemKind::GoldenDandelion,
ItemKind::OpenEyeblossom,
ItemKind::ClosedEyeblossom,
ItemKind::Poppy,
@@ -1256,6 +1290,13 @@ pub static GOLD_ORES: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
});
pub static GOLD_TOOL_MATERIALS: LazyLock<RegistryTag<ItemKind>> =
LazyLock::new(|| RegistryTag::new(vec![ItemKind::GoldIngot]));
+pub static GRASS_BLOCKS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ ItemKind::GrassBlock,
+ ItemKind::Podzol,
+ ItemKind::Mycelium,
+ ])
+});
pub static HANGING_SIGNS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
ItemKind::OakHangingSign,
@@ -1521,6 +1562,40 @@ pub static LOGS_THAT_BURN: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
ItemKind::MangroveWood,
])
});
+pub static LOOM_DYES: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ ItemKind::WhiteDye,
+ ItemKind::OrangeDye,
+ ItemKind::MagentaDye,
+ ItemKind::LightBlueDye,
+ ItemKind::YellowDye,
+ ItemKind::LimeDye,
+ ItemKind::PinkDye,
+ ItemKind::GrayDye,
+ ItemKind::LightGrayDye,
+ ItemKind::CyanDye,
+ ItemKind::PurpleDye,
+ ItemKind::BlueDye,
+ ItemKind::BrownDye,
+ ItemKind::GreenDye,
+ ItemKind::RedDye,
+ ItemKind::BlackDye,
+ ])
+});
+pub static LOOM_PATTERNS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ ItemKind::FlowerBannerPattern,
+ ItemKind::CreeperBannerPattern,
+ ItemKind::SkullBannerPattern,
+ ItemKind::MojangBannerPattern,
+ ItemKind::GlobeBannerPattern,
+ ItemKind::PiglinBannerPattern,
+ ItemKind::FlowBannerPattern,
+ ItemKind::GusterBannerPattern,
+ ItemKind::FieldMasonedBannerPattern,
+ ItemKind::BordureIndentedBannerPattern,
+ ])
+});
pub static MANGROVE_LOGS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
ItemKind::MangroveLog,
@@ -1546,6 +1621,17 @@ pub static MEAT: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
ItemKind::CookedMutton,
])
});
+pub static METAL_NUGGETS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ ItemKind::GoldNugget,
+ ItemKind::IronNugget,
+ ItemKind::CopperNugget,
+ ])
+});
+pub static MOSS_BLOCKS: LazyLock<RegistryTag<ItemKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![ItemKind::MossBlock, ItemKind::PaleMossBlock]));
+pub static MUD: LazyLock<RegistryTag<ItemKind>> =
+ LazyLock::new(|| RegistryTag::new(vec![ItemKind::Mud, ItemKind::MuddyMangroveRoots]));
pub static NAUTILUS_BUCKET_FOOD: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
ItemKind::PufferfishBucket,
@@ -1676,6 +1762,7 @@ pub static PIGLIN_LOVED: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
ItemKind::NetherGoldOre,
ItemKind::RawGoldBlock,
ItemKind::GoldBlock,
+ ItemKind::GoldenDandelion,
ItemKind::LightWeightedPressurePlate,
ItemKind::RawGold,
ItemKind::GoldIngot,
@@ -1926,6 +2013,7 @@ pub static SLABS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
pub static SMALL_FLOWERS: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
ItemKind::Dandelion,
+ ItemKind::GoldenDandelion,
ItemKind::OpenEyeblossom,
ItemKind::ClosedEyeblossom,
ItemKind::Poppy,
@@ -2235,6 +2323,26 @@ pub static WART_BLOCKS: LazyLock<RegistryTag<ItemKind>> =
LazyLock::new(|| RegistryTag::new(vec![ItemKind::NetherWartBlock, ItemKind::WarpedWartBlock]));
pub static WITHER_SKELETON_DISLIKED_WEAPONS: LazyLock<RegistryTag<ItemKind>> =
LazyLock::new(|| RegistryTag::new(vec![ItemKind::Bow, ItemKind::Crossbow]));
+pub static WOLF_COLLAR_DYES: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
+ RegistryTag::new(vec![
+ ItemKind::WhiteDye,
+ ItemKind::OrangeDye,
+ ItemKind::MagentaDye,
+ ItemKind::LightBlueDye,
+ ItemKind::YellowDye,
+ ItemKind::LimeDye,
+ ItemKind::PinkDye,
+ ItemKind::GrayDye,
+ ItemKind::LightGrayDye,
+ ItemKind::CyanDye,
+ ItemKind::PurpleDye,
+ ItemKind::BlueDye,
+ ItemKind::BrownDye,
+ ItemKind::GreenDye,
+ ItemKind::RedDye,
+ ItemKind::BlackDye,
+ ])
+});
pub static WOLF_FOOD: LazyLock<RegistryTag<ItemKind>> = LazyLock::new(|| {
RegistryTag::new(vec![
ItemKind::Porkchop,
diff --git a/azalea-world/src/chunk/mod.rs b/azalea-world/src/chunk/mod.rs
index cd52026a..48cb202c 100644
--- a/azalea-world/src/chunk/mod.rs
+++ b/azalea-world/src/chunk/mod.rs
@@ -44,6 +44,10 @@ pub struct Section {
/// This may be updated every time [`Self::get_and_set_block_state`] is
/// called.
pub block_count: u16,
+ /// Similar to [`Self::block_count`], but for fluids.
+ ///
+ /// Unlike [`Self::block_count`], this is currently not updated by Azalea.
+ pub fluid_count: u16,
pub states: PalettedContainer<BlockState>,
pub biomes: PalettedContainer<Biome>,
}
@@ -178,6 +182,7 @@ pub fn get_block_state_from_sections(
impl AzBuf for Section {
fn azalea_read(buf: &mut Cursor<&[u8]>) -> Result<Self, BufReadError> {
let block_count = u16::azalea_read(buf)?;
+ let fluid_count = u16::azalea_read(buf)?;
// this is commented out because the vanilla server is wrong
// TODO: ^ this comment was written ages ago. needs more investigation.
@@ -200,12 +205,14 @@ impl AzBuf for Section {
let biomes = PalettedContainer::<Biome>::read(buf)?;
Ok(Section {
block_count,
+ fluid_count,
states,
biomes,
})
}
fn azalea_write(&self, buf: &mut impl Write) -> io::Result<()> {
self.block_count.azalea_write(buf)?;
+ self.fluid_count.azalea_write(buf)?;
self.states.write(buf)?;
self.biomes.write(buf)?;
Ok(())
@@ -289,6 +296,7 @@ mod tests {
let biomes = PalettedContainer::new();
let section = Section {
block_count: 2,
+ fluid_count: 0,
states,
biomes,
};
diff --git a/azalea/examples/testbot/commands/debug.rs b/azalea/examples/testbot/commands/debug.rs
index 62baef1d..55b41403 100644
--- a/azalea/examples/testbot/commands/debug.rs
+++ b/azalea/examples/testbot/commands/debug.rs
@@ -168,6 +168,22 @@ pub fn register(commands: &mut CommandDispatcher<Mutex<CommandSource>>) {
})),
)));
+ commands.register(literal("inventory").executes(|ctx: &Ctx| {
+ let source = ctx.source.lock();
+ for item in source.bot.menu().slots() {
+ if item.is_empty() {
+ continue;
+ }
+ println!("{item:?}");
+ for (kind, data) in item.component_patch().iter() {
+ if let Some(data) = data {
+ println!("- {kind} {data:?}");
+ }
+ }
+ }
+ 1
+ }));
+
commands.register(literal("pathfinderstate").executes(|ctx: &Ctx| {
let source = ctx.source.lock();
let pathfinder = source.bot.get_component::<Pathfinder>();
diff --git a/codegen/README.md b/codegen/README.md
index 3e259349..90149dcc 100644
--- a/codegen/README.md
+++ b/codegen/README.md
@@ -41,7 +41,7 @@ If it all works, make a pull request. If the version you updated to is a snapsho
At the time of writing, the following data generators are used:
- [Vanilla data generator](https://minecraft.wiki/w/Minecraft_Wiki:Projects/wiki.vg_merge/Data_Generators)
-- [Burger](https://github.com/mat-1/Burger)
+- [Azalea Burger](https://github.com/azalea-rs/azalea-burger)
- [Pumpkin Extractor](https://github.com/Pumpkin-MC/Extractor)
Some things can be obtained from multiple generators. You should prefer them by the order above (the vanilla generator is the most reliable).
diff --git a/codegen/genentities.py b/codegen/genentities.py
index 944a1a4e..d7ac5dc3 100644
--- a/codegen/genentities.py
+++ b/codegen/genentities.py
@@ -6,14 +6,13 @@ import lib.extract
version_id = lib.code.version.get_version_id()
-mappings = lib.download.get_mappings_for_version(version_id)
burger_data = lib.extract.get_burger_data_for_version(version_id)
-burger_entities_data = burger_data[0]['entities']
+burger_entities_data = burger_data[0]["entities"]
-lib.code.entity.generate_entity_metadata(burger_entities_data, mappings)
+lib.code.entity.generate_entity_metadata(burger_entities_data)
lib.code.entity.generate_entity_dimensions(burger_entities_data)
lib.code.utils.fmt()
-print('Done!')
+print("Done!")
diff --git a/codegen/lib/code/data_components.py b/codegen/lib/code/data_components.py
index e6de6201..992ba83f 100644
--- a/codegen/lib/code/data_components.py
+++ b/codegen/lib/code/data_components.py
@@ -360,7 +360,7 @@ use crate::{
)
elif target_rust_type == "ItemStack":
item_rust_value = python_to_rust_value(python_value["id"], "ItemKind")
- count = python_value["count"]
+ count = python_value.get("count", 1)
if count == 1:
return f"ItemStack::from({item_rust_value})"
else:
@@ -411,9 +411,6 @@ use crate::{
fields_for_rust_type = enum_and_struct_fields.get(target_rust_type, [])
if "Referenced(Identifier)" in fields_for_rust_type:
return f"{target_rust_type}::Referenced({python_to_rust_value(python_value, 'Identifier')})"
- elif "Registry(data::Instrument)" in fields_for_rust_type:
- # TODO
- return f"{target_rust_type}::Registry(azalea_registry::data::Instrument::new_raw(0))"
elif target_rust_type.startswith("HolderSet<"):
holderset_type = target_rust_type.split("<", 1)[1].split(",", 1)[0]
main_vec = python_to_rust_value(
@@ -429,10 +426,10 @@ use crate::{
elif target_rust_type == "Identifier":
# convert minecraft:air into Identifier::from_static("minecraft:air")
return f'"{python_value}".into()'
- elif target_rust_type == "DamageType":
+ elif target_rust_type.startswith("azalea_registry::data::"):
# TODO: this is intentionally incorrect, see the comment in
# azalea-registry/src/data.rs to see how to fix this properly
- return "DamageType::Registry(azalea_registry::data::DamageKind::new_raw(0))"
+ return f"{target_rust_type}::new_raw(0)"
else:
# enum variant
return f"{target_rust_type}::{to_camel_case(identifier_to_path(python_value))}"
@@ -472,9 +469,17 @@ use crate::{
tag_module = "blocks"
else:
tag_module = "FIXME_UNKNOWN_MODULE"
- vectors.append(
- f"azalea_registry::tags::{tag_module}::{tag_name}.clone().into_iter().collect()"
- )
+
+ # TODO: it's not currently possible to have a holderset for data registry items
+ # (because registries would need to be translated during packet parsing/writing),
+ # so we leave this empty for now.
+ if inner_type in {"BannerPatternKind", "DamageKind"}:
+ pass
+ else:
+ vectors.append(
+ f"azalea_registry::tags::{tag_module}::{tag_name}.clone().into_iter().collect()"
+ )
+
continue
main_vec += python_to_rust_value(v, inner_type) + ","
main_vec = main_vec.rstrip(",") + "]"
@@ -533,11 +538,11 @@ use crate::{
item_defaults_original = item_defaults
item_defaults = {}
- for k, v in item_defaults_original.items():
+ for k, v in sorted(item_defaults_original.items(), key=lambda i: i[0]):
item_defaults[k] = python_to_rust_value(v, field_type)
default_values_frequency = {}
- for value in item_defaults.values():
+ for value in sorted(item_defaults.values()):
if value not in default_values_frequency:
default_values_frequency[value] = 0
default_values_frequency[value] += 1
diff --git a/codegen/lib/code/entity.py b/codegen/lib/code/entity.py
index d10a159f..992d9b19 100644
--- a/codegen/lib/code/entity.py
+++ b/codegen/lib/code/entity.py
@@ -1,5 +1,4 @@
from lib.utils import to_camel_case, to_snake_case, get_dir_location, upper_first_letter
-from lib.mappings import Mappings
from typing import Optional
import re
@@ -8,18 +7,19 @@ DATA_RS_DIR = get_dir_location("../azalea-entity/src/data.rs")
DIMENSIONS_RS_DIR = get_dir_location("../azalea-entity/src/dimensions.rs")
-def generate_metadata_names(burger_dataserializers: dict, mappings: Mappings):
+def generate_metadata_names(burger_dataserializers: dict):
serializer_names: list[Optional[str]] = [None] * len(burger_dataserializers)
for burger_serializer in burger_dataserializers.values():
print(burger_serializer)
+ # TODO: remove these comments
# burger gives us the wrong class, so we do this instead
- data_serializers_class = mappings.get_class_from_deobfuscated_name(
- "net.minecraft.network.syncher.EntityDataSerializers"
- )
- mojmap_name = mappings.get_field(
- data_serializers_class, burger_serializer["field"]
- ).lower()
+ # data_serializers_class = "net/minecraft/network/syncher/EntityDataSerializers"
+ # mojmap_name = mappings.get_field(
+ # data_serializers_class, burger_serializer["field"]
+ # ).lower()
+
+ mojmap_name = burger_serializer["field"].lower()
if mojmap_name == "component":
mojmap_name = "formatted_text"
@@ -58,11 +58,11 @@ def parse_metadata_types_from_code():
return data
-def generate_entity_metadata(burger_entities_data: dict, mappings: Mappings):
+def generate_entity_metadata(burger_entities_data: dict):
burger_entity_metadata = burger_entities_data["entity"]
new_metadata_names = generate_metadata_names(
- burger_entities_data["dataserializers"], mappings
+ burger_entities_data["dataserializers"]
)
parsed_metadata_types = parse_metadata_types_from_code()
@@ -173,7 +173,7 @@ impl From<EntityDataValue> for UpdateMetadataError {
for entity_id in burger_entity_metadata.keys():
field_name_map[entity_id] = {}
for field_name_or_bitfield in get_entity_metadata_names(
- entity_id, burger_entity_metadata, mappings
+ entity_id, burger_entity_metadata
).values():
if isinstance(field_name_or_bitfield, str):
if field_name_or_bitfield in previous_field_names:
@@ -204,7 +204,7 @@ impl From<EntityDataValue> for UpdateMetadataError {
# and now figure out what to rename them to
for entity_id in burger_entity_metadata.keys():
for index, field_name_or_bitfield in get_entity_metadata_names(
- entity_id, burger_entity_metadata, mappings
+ entity_id, burger_entity_metadata
).items():
if isinstance(field_name_or_bitfield, str):
new_field_name = field_name_or_bitfield
@@ -245,7 +245,7 @@ impl From<EntityDataValue> for UpdateMetadataError {
parents = get_entity_parents(entity_id, burger_entity_metadata)
for parent_id in list(reversed(parents)):
for index, name_or_bitfield in get_entity_metadata_names(
- parent_id, burger_entity_metadata, mappings
+ parent_id, burger_entity_metadata
).items():
assert index == len(all_field_names_or_bitfields)
all_field_names_or_bitfields.append(name_or_bitfield)
@@ -462,7 +462,7 @@ impl From<EntityDataValue> for UpdateMetadataError {
if parent_struct_name:
code.append(f" parent: {parent_struct_name}MetadataBundle,")
for index, name_or_bitfield in get_entity_metadata_names(
- entity_id, burger_entity_metadata, mappings
+ entity_id, burger_entity_metadata
).items():
if isinstance(name_or_bitfield, str):
name_or_bitfield = maybe_rename_field(name_or_bitfield, index)
@@ -514,7 +514,7 @@ impl From<EntityDataValue> for UpdateMetadataError {
code.append(" parent: Default::default(),")
for index, name_or_bitfield in get_entity_metadata_names(
- this_entity_id, burger_entity_metadata, mappings
+ this_entity_id, burger_entity_metadata
).items():
default = next(
filter(lambda i: i["index"] == index, entity_metadatas)
@@ -792,22 +792,19 @@ def get_entity_metadata(entity_id: str, burger_entity_metadata: dict):
# returns a dict of {index: (name or bitfield)}
-def get_entity_metadata_names(
- entity_id: str, burger_entity_metadata: dict, mappings: Mappings
-):
+def get_entity_metadata_names(entity_id: str, burger_entity_metadata: dict):
entity_metadata = burger_entity_metadata[entity_id]["metadata"]
mapped_metadata_names = {}
for metadata_item in entity_metadata:
if "data" in metadata_item:
- obfuscated_class = metadata_item["class"]
+ # obfuscated_class = metadata_item["class"]
# mojang_class = mappings.get_class(obfuscated_class)
first_byte_index = None
for metadata_attribute in metadata_item["data"]:
- obfuscated_field = metadata_attribute["field"]
- mojang_field = mappings.get_field(obfuscated_class, obfuscated_field)
+ mojang_field = metadata_attribute["field"]
pretty_mojang_name = prettify_mojang_field(mojang_field)
mapped_metadata_names[metadata_attribute["index"]] = pretty_mojang_name
@@ -820,12 +817,10 @@ def get_entity_metadata_names(
if metadata_item["bitfields"] and first_byte_index is not None:
clean_bitfield = {}
for bitfield_item in metadata_item["bitfields"]:
- bitfield_item_obfuscated_class = bitfield_item.get(
- "class", obfuscated_class
- )
- mojang_bitfield_item_name = mappings.get_method(
- bitfield_item_obfuscated_class, bitfield_item["method"], ""
- )
+ # bitfield_item_obfuscated_class = bitfield_item.get(
+ # "class", obfuscated_class
+ # )
+ mojang_bitfield_item_name = bitfield_item["method"]
bitfield_item_name = prettify_mojang_method(
mojang_bitfield_item_name
)
diff --git a/codegen/lib/code/packet.py b/codegen/lib/code/packet.py
index 9ce5c137..1131cb49 100644
--- a/codegen/lib/code/packet.py
+++ b/codegen/lib/code/packet.py
@@ -1,6 +1,5 @@
from lib.utils import identifier_to_path, to_snake_case, to_camel_case, get_dir_location
from lib.code.utils import burger_type_to_rust_type, write_packet_file
-from lib.mappings import Mappings
from typing import Optional
import os
import re
@@ -175,7 +174,6 @@ def burger_instruction_to_code(
instructions: list[dict],
index: int,
generated_packet_code: list[str],
- mappings: Mappings,
obfuscated_class_name: str,
uses: set,
extra_code: list[str],
@@ -208,8 +206,7 @@ def burger_instruction_to_code(
and next_next_instruction
and next_next_instruction["operation"] == "loop"
):
- obfuscated_field_name = instruction["field"].split(".")[0]
- field_name = mappings.get_field(obfuscated_class_name, obfuscated_field_name)
+ field_name = instruction["field"].split("/")[0]
# figure out what kind of iterator it is
loop_instructions = next_next_instruction["instructions"]
@@ -218,7 +215,6 @@ def burger_instruction_to_code(
loop_instructions[1]["type"],
None,
loop_instructions[1],
- mappings,
obfuscated_class_name,
)
field_type_rs = f"Vec<{entry_type_rs}>"
@@ -235,7 +231,6 @@ def burger_instruction_to_code(
loop_instructions[1]["type"],
None,
loop_instructions[1],
- mappings,
obfuscated_class_name,
)
)
@@ -248,7 +243,6 @@ def burger_instruction_to_code(
loop_instructions[2]["type"],
None,
loop_instructions[2],
- mappings,
obfuscated_class_name,
)
)
@@ -277,16 +271,14 @@ def burger_instruction_to_code(
)
):
print("ok is option")
- obfuscated_field_name = instruction["field"].split(".")[0].split(" ")[0]
+ field_name = instruction["field"].split(".")[0].split(" ")[0]
- if obfuscated_field_name in known_variable_types:
- # just use the known name since it's not gonna be in the mappings
- obfuscated_field_name = known_variable_types[obfuscated_field_name]
-
- field_name = mappings.get_field(obfuscated_class_name, obfuscated_field_name)
+ # if obfuscated_field_name in known_variable_types:
+ # just use the known name since it's not gonna be in the mappings
+ # obfuscated_field_name = known_variable_types[obfuscated_field_name]
if field_name is None:
- field_name = obfuscated_field_name.split("/")[-1]
+ field_name = field_name.split("/")[-1]
if "<" in field_name:
field_name = "value"
@@ -306,7 +298,6 @@ def burger_instruction_to_code(
condition_instruction["type"],
None,
condition_instruction,
- mappings,
obfuscated_class_name,
)
)
@@ -321,54 +312,35 @@ def burger_instruction_to_code(
skip = 1
else:
field_type = instruction["type"]
- obfuscated_field_name = instruction["field"]
+ field_name = instruction["field"]
- if obfuscated_field_name.startswith("(float)"):
- obfuscated_field_name = obfuscated_field_name[len("(float)") :]
-
- field_name = mappings.get_field(
- obfuscated_class_name, obfuscated_field_name
- ) or mappings.get_field(
- obfuscated_class_name.split("$")[0], obfuscated_field_name
- )
+ if field_name.startswith("(float)"):
+ field_name = field_name[len("(float)") :]
field_type_rs, is_var, instruction_uses, instruction_extra_code = (
burger_type_to_rust_type(
- field_type, field_name, instruction, mappings, obfuscated_class_name
+ field_type, field_name, instruction, obfuscated_class_name
)
)
- if obfuscated_field_name in known_variable_types:
+ if field_name in known_variable_types:
# just use the known name since it's not gonna be in the mappings
- field_name = obfuscated_field_name
+ pass
- elif (
- "." in obfuscated_field_name
- or " " in obfuscated_field_name
- or "(" in obfuscated_field_name
- ):
- field_type_rs2, obfuscated_field_name, field_comment = burger_field_to_type(
- obfuscated_field_name,
- mappings,
+ elif "." in field_name or " " in field_name or "(" in field_name:
+ field_type_rs2, field_name, field_comment = burger_field_to_type(
+ field_name,
obfuscated_class_name,
known_variable_types,
)
if not field_type_rs2:
generated_packet_code.append(f"// TODO: {instruction}")
return
- if obfuscated_field_name in known_variable_types:
+ if field_name in known_variable_types:
# just use the known name since it's not gonna be in the mappings
- obfuscated_field_name = known_variable_types[obfuscated_field_name]
- print("got obfuscated_field_name", obfuscated_field_name)
-
- # try to get the field name again with the new stuff we know
- field_name = mappings.get_field(
- obfuscated_class_name, obfuscated_field_name
- ) or mappings.get_field(
- obfuscated_class_name.split("$")[0], obfuscated_field_name
- )
- if field_name is None:
- field_name = obfuscated_field_name.split("/")[-1]
+ field_name = known_variable_types[field_name]
+ print("got obfuscated_field_name", field_name)
+
uses.update(instruction_uses)
extra_code.extend(instruction_extra_code)
@@ -387,7 +359,7 @@ def burger_instruction_to_code(
def burger_field_to_type(
- field, mappings: Mappings, obfuscated_class_name: str, known_variable_types={}
+ field, obfuscated_class_name: str, known_variable_types={}
) -> tuple[Optional[str], str, Optional[str]]:
"""
Returns field_type_rs, obfuscated_field_name, field_comment
@@ -399,38 +371,18 @@ def burger_field_to_type(
match = re.match(r"^\w+\.\w+\(\)$", field)
if match:
print("field", field)
- obfuscated_first = field.split(".")[0]
- obfuscated_second = field.split(".")[1].split("(")[0]
+ first_type = field.split(".")[0]
+ second_type = field.split(".")[1].split("(")[0]
# first = mappings.get_field(obfuscated_class_name, obfuscated_first)
- if obfuscated_first in known_variable_types:
- first_type = known_variable_types[obfuscated_first]
- else:
- try:
- first_type = mappings.get_field_type(
- obfuscated_class_name, obfuscated_first
- )
- except Exception:
- first_type = "TODO"
- first_obfuscated_class_name: Optional[str] = (
- mappings.get_class_from_deobfuscated_name(first_type)
- )
- if first_obfuscated_class_name:
- try:
- second = mappings.get_method(
- first_obfuscated_class_name, obfuscated_second, ""
- )
- except Exception:
- # if this happens then the field is probably from a super class
- second = obfuscated_second
- else:
- second = obfuscated_second
- first_type_short = first_type.split(".")[-1]
- if second in {"byteValue"}:
- return (first_type_short, obfuscated_first, None)
+ if first_type in known_variable_types:
+ first_type = known_variable_types[first_type]
+ first_type_short = first_type.split("/")[-1]
+ if second_type in {"byteValue"}:
+ return (first_type_short, first_type, None)
return (
first_type_short,
- obfuscated_first,
- f"TODO: Does {first_type_short}::{second}, may not be implemented",
+ first_type,
+ f"TODO: Does {first_type_short}::{second_type}, may not be implemented",
)
return None, field, None
diff --git a/codegen/lib/code/registry.py b/codegen/lib/code/registry.py
index 01462e1f..9c30a273 100644
--- a/codegen/lib/code/registry.py
+++ b/codegen/lib/code/registry.py
@@ -154,7 +154,7 @@ def registry_name_to_enum_name(registry_name: str) -> str:
# change _type to _kind because that's Rustier (and because _type
# is a reserved keyword)
registry_name = registry_name[:-5] + "_kind"
- elif registry_name in {"menu", "block", "item"}:
+ elif registry_name in {"menu", "block", "item", "banner_pattern"}:
registry_name += "_kind"
return to_camel_case(registry_name)
diff --git a/codegen/lib/code/tags.py b/codegen/lib/code/tags.py
index b6e225ac..2a44d35c 100644
--- a/codegen/lib/code/tags.py
+++ b/codegen/lib/code/tags.py
@@ -1,25 +1,45 @@
from lib.code.registry import registry_name_to_enum_name
-from lib.utils import identifier_to_namespace, identifier_to_path, to_snake_case, upper_first_letter, get_dir_location, to_camel_case
+from lib.utils import (
+ identifier_to_namespace,
+ identifier_to_path,
+ to_snake_case,
+ upper_first_letter,
+ get_dir_location,
+ to_camel_case,
+)
TAGS_DIR = get_dir_location("../azalea-registry/src/tags")
-def generate_tags(registries: dict, tags: dict, file_name: str, registry_name: str):
+def generate_tags(
+ registries: dict,
+ tags: dict,
+ file_name: str,
+ registry_name: str,
+ is_data_registry: bool = False,
+):
struct_name = registry_name_to_enum_name(registry_name)
tags_dir = f"{TAGS_DIR}/{file_name}.rs"
+ registry_module = "data" if is_data_registry else "builtin"
+ if is_data_registry:
+ struct_name += "Key"
+
generated = f"""// This file was @generated by codegen/lib/code/tags.py, don't edit it manually!
use std::sync::LazyLock;
-use crate::{{builtin::{struct_name}, tags::RegistryTag}};
+use crate::{{{registry_module}::{struct_name}, tags::RegistryTag}};
"""
- protocol_ids = {}
- for k, v in registries["minecraft:" + registry_name]["entries"].items():
- protocol_ids[identifier_to_path(k)] = v["protocol_id"]
+ if is_data_registry:
+ protocol_ids = None
+ else:
+ protocol_ids = {}
+ for k, v in registries[f"minecraft:{registry_name}"]["entries"].items():
+ protocol_ids[identifier_to_path(k)] = v["protocol_id"]
for tag_name, tag in sorted(tags.items(), key=lambda x: x[0]):
entries = []
@@ -41,9 +61,10 @@ use crate::{{builtin::{struct_name}, tags::RegistryTag}};
generated += f"pub static {static_set_name}: LazyLock<RegistryTag<{struct_name}>> = LazyLock::new(|| RegistryTag::new(vec!["
- # this is important because we binary search registries in some cases
- # and they need to be sorted by their rust Ord order
- entries.sort(key=lambda e: protocol_ids[e])
+ if not is_data_registry:
+ # this is important because we binary search registries in some cases
+ # and they need to be sorted by their rust Ord order
+ entries.sort(key=lambda e: protocol_ids[e])
for entry_name in entries:
generated += (
diff --git a/codegen/lib/code/utils.py b/codegen/lib/code/utils.py
index 62b4627b..9bfb3504 100644
--- a/codegen/lib/code/utils.py
+++ b/codegen/lib/code/utils.py
@@ -1,7 +1,6 @@
# utilities specifically for codegen
from lib.utils import to_camel_case, to_snake_case, get_dir_location
-from lib.mappings import Mappings
from typing import Optional
import os
@@ -10,8 +9,7 @@ def burger_type_to_rust_type(
burger_type,
field_name: Optional[str] = None,
instruction=None,
- mappings: Optional[Mappings] = None,
- obfuscated_class_name: Optional[str] = None,
+ class_name: Optional[str] = None,
):
is_var = False
uses = set()
@@ -90,7 +88,7 @@ def burger_type_to_rust_type(
# depends on context
field_type_rs = "todo!()"
elif burger_type == "enum":
- if not instruction or not mappings or not obfuscated_class_name:
+ if not instruction or not class_name:
field_type_rs = 'todo!("enum")'
else:
# generate the whole enum :)
@@ -98,57 +96,20 @@ def burger_type_to_rust_type(
enum_field = instruction["field"]
# enums with a.b() as the field
if "." in enum_field:
- enum_first_part_name = mappings.get_field_type(
- obfuscated_class_name, enum_field.split(".")[0]
- )
- enum_first_part_obfuscated_name = (
- mappings.get_class_from_deobfuscated_name(enum_first_part_name)
- )
- print(
- "enum_first_part_obfuscated_name", enum_first_part_obfuscated_name
- )
+ enum_first_part_name = enum_field.split("/")[0]
+ print("enum_first_part_name", enum_first_part_name)
print("enum field", enum_field.split(".")[1].split("(")[0])
- try:
- enum_name = mappings.get_method_type(
- enum_first_part_obfuscated_name,
- enum_field.split(".")[1].split("(")[0],
- "",
- )
- except KeyError:
- # sometimes enums are fields instead of methods
- enum_name = mappings.get_field_type(
- enum_first_part_obfuscated_name,
- enum_field.split(".")[1].split("(")[0],
- )
+ enum_name = enum_field.split("$")[1].split("(")[0]
print("hm", enum_name)
else:
- try:
- enum_name = mappings.get_field_type(
- obfuscated_class_name, enum_field
- )
- except Exception:
- enum_name = mappings.get_class(obfuscated_class_name)
- print(
- f"failed getting {obfuscated_class_name}.{enum_field} but continuing with {enum_name} anyways"
- )
+ enum_name = enum_field or class_name
print("enum_name", enum_name)
- enum_obfuscated_name = mappings.get_class_from_deobfuscated_name(enum_name)
+ enum_obfuscated_name = enum_name
print("enum_obfuscated_name", enum_obfuscated_name)
enum_variants = []
- for obfuscated_field_name in mappings.fields[enum_obfuscated_name]:
- field_name = mappings.get_field(
- enum_obfuscated_name, obfuscated_field_name
- )
-
- # get the type just to make sure it's actually a variant and not something else
- field_type = mappings.get_field_type(
- enum_obfuscated_name, obfuscated_field_name
- )
- if field_type != enum_name:
- continue
-
- enum_variants.append(field_name)
+ raise RuntimeError("TODO: extracting enum variants")
+ enum_variants.append(field_name)
field_type_rs = to_camel_case(enum_name.split(".")[-1].split("$")[-1])
extra_code.append("")
@@ -165,28 +126,19 @@ def burger_type_to_rust_type(
field_type_rs = f"Vec<{field_type_rs}>"
# sometimes burger gives us a slightly incorrect type
- if mappings and instruction:
+ if instruction:
if field_type_rs == "Vec<u8>":
field = instruction["field"]
if field.endswith(".copy()"):
field = field[:-7]
- try:
- array_type = mappings.get_field_type(obfuscated_class_name, field)
- except KeyError:
- print("Error getting array type", field)
- return field_type_rs, is_var, uses, extra_code
+ array_type = field
if array_type == "net.minecraft.network.FriendlyByteBuf":
field_type_rs = "UnsizedByteArray"
uses.add("azalea_buf::UnsizedByteArray")
else:
print("instruction that we errored on:", instruction)
- deobfuscated_class_name = (
- mappings.get_class(obfuscated_class_name) if obfuscated_class_name else None
- )
- raise Exception(
- f"Unknown field type: {burger_type} ({deobfuscated_class_name or obfuscated_class_name})"
- )
+ raise Exception(f"Unknown field type: {burger_type} ({class_name})")
return field_type_rs, is_var, uses, extra_code
diff --git a/codegen/lib/download.py b/codegen/lib/download.py
index 8819cf61..43b42aa5 100644
--- a/codegen/lib/download.py
+++ b/codegen/lib/download.py
@@ -1,12 +1,11 @@
-from lib.utils import get_dir_location
+from .utils import get_dir_location
import xml.etree.ElementTree as ET
-from .mappings import Mappings
import requests
import json
import os
-PUMPKIN_EXTRACTOR_COMMIT = "82926545925baf5f50414cc9374f1cc340b7de0f"
-BURGER_COMMIT = "366d6e4bed0e9e6505d9c40c83628ab80a5fe001"
+PUMPKIN_EXTRACTOR_COMMIT = "f3019d598c06f0d6fd4f3568fbf2d5bebae71173q"
+BURGER_COMMIT = "bb84700e43bf7090877d9a4eb5d87c3125a8d22e"
# make sure the cache directory exists
print("Making __cache__")
@@ -16,26 +15,26 @@ if not os.path.exists(get_dir_location("__cache__")):
def get_burger():
- if not os.path.exists(get_dir_location("__cache__/Burger")):
- print("\033[92mDownloading Burger...\033[m")
+ if not os.path.exists(get_dir_location("__cache__/azalea-burger")):
+ print("\033[92mDownloading azalea-burger...\033[m")
os.system(
- f"cd {get_dir_location('__cache__')} && git clone https://github.com/mat-1/Burger && cd Burger && git pull && git reset --hard {BURGER_COMMIT}"
+ f"cd {get_dir_location('__cache__')} && git clone https://github.com/azalea-rs/azalea-burger && cd azalea-burger && git pull && git reset --hard {BURGER_COMMIT}"
)
print("\033[92mInstalling dependencies...\033[m")
os.system(
- f"cd {get_dir_location('__cache__')}/Burger && python -m venv venv && venv/bin/pip install six jawa"
+ f"cd {get_dir_location('__cache__')}/azalea-burger && python -m venv venv && venv/bin/pip install six jawa"
)
def get_pumpkin_extractor():
- if not os.path.exists(get_dir_location("__cache__/pumpkin-extractor")):
- print("\033[92mDownloading Pumpkin-MC/Extractor...\033[m")
+ if not os.path.exists(get_dir_location("__cache__/azalea-pumpkin-extractor")):
+ print("\033[92mDownloading mat-1/azalea-pumpkin-extractor...\033[m")
os.system(
- f"cd {get_dir_location('__cache__')} && git clone https://github.com/Pumpkin-MC/Extractor pumpkin-extractor && cd pumpkin-extractor && git pull && git reset --hard {PUMPKIN_EXTRACTOR_COMMIT}"
+ f"cd {get_dir_location('__cache__')} && git clone https://github.com/azalea-rs/azalea-pumpkin-extractor && cd azalea-pumpkin-extractor && git pull && git reset --hard {PUMPKIN_EXTRACTOR_COMMIT}"
)
- return get_dir_location("__cache__/pumpkin-extractor")
+ return get_dir_location("__cache__/azalea-pumpkin-extractor")
def get_version_manifest():
@@ -94,29 +93,13 @@ def get_server_jar(version_id: str):
f.write(requests.get(server_jar_url).content)
-def get_mappings_for_version(version_id: str):
- if not os.path.exists(get_dir_location(f"__cache__/mappings-{version_id}.txt")):
- package_data = get_version_data(version_id)
-
- client_mappings_url = package_data["downloads"]["client_mappings"]["url"]
-
- mappings_text = requests.get(client_mappings_url).text
-
- with open(get_dir_location(f"__cache__/mappings-{version_id}.txt"), "w") as f:
- f.write(mappings_text)
- else:
- with open(get_dir_location(f"__cache__/mappings-{version_id}.txt"), "r") as f:
- mappings_text = f.read()
- return Mappings.parse(mappings_text)
-
-
def get_fabric_data(version_id: str):
# https://meta.fabricmc.net/v2/versions/yarn
path = get_dir_location(f"__cache__/fabric-{version_id}.json")
if not os.path.exists(path):
print(f"\033[92mDownloading Fabric metadata for {version_id}...\033[m")
- url = f"https://meta.fabricmc.net/v1/versions/loader/{version_id}"
+ url = f"https://meta.fabricmc.net/v2/versions/loader/{version_id}"
yarn_versions_data = requests.get(url).json()
with open(path, "w") as f:
json.dump(yarn_versions_data, f)
@@ -247,10 +230,10 @@ def clear_version_cache():
if os.path.exists(get_dir_location(f"__cache__/{file}")):
os.remove(get_dir_location(f"__cache__/{file}"))
- burger_path = get_dir_location("__cache__/Burger")
+ burger_path = get_dir_location("__cache__/azalea-burger")
if os.path.exists(burger_path):
os.system(f"cd {burger_path} && git pull && git reset --hard {BURGER_COMMIT}")
- pumpkin_path = get_dir_location("__cache__/pumpkin-extractor")
+ pumpkin_path = get_dir_location("__cache__/azalea-pumpkin-extractor")
if os.path.exists(pumpkin_path):
os.system(
f"cd {pumpkin_path} && git add . && git stash && git checkout master && git pull && git stash pop && git reset --hard {PUMPKIN_EXTRACTOR_COMMIT}"
diff --git a/codegen/lib/extract.py b/codegen/lib/extract.py
index f2f7f4a2..9faa2e22 100644
--- a/codegen/lib/extract.py
+++ b/codegen/lib/extract.py
@@ -1,18 +1,16 @@
# Extracting data from the Minecraft jars
import shutil
-from lib.download import (
+from .download import (
get_fabric_api_version,
get_latest_fabric_kotlin_version,
- get_latest_fabric_loom_version,
- get_mappings_for_version,
get_pumpkin_extractor,
get_server_jar,
get_burger,
get_client_jar,
get_fabric_data,
)
-from lib.utils import get_dir_location, to_camel_case, upper_first_letter
+from .utils import get_dir_location
from zipfile import ZipFile
import subprocess
import json
@@ -43,7 +41,23 @@ def get_packets_report(version_id: str):
def get_items_report(version_id: str):
- return get_report(version_id, "items")
+ generate_data_from_server_jar(version_id)
+ items_dir = get_dir_location(
+ f"__cache__/generated-{version_id}/reports/minecraft/components/item"
+ )
+ if not os.path.exists(items_dir):
+ return {}
+ items = {}
+ for root, dirs, files in os.walk(items_dir, topdown=False):
+ for name in files:
+ file = os.path.join(root, name)
+ relative_path = file.replace(items_dir, "")[1:]
+ if not file.endswith(".json"):
+ continue
+ with open(file, "r") as f:
+ items[relative_path[:-5]] = json.load(f)
+
+ return items
def get_report(version_id: str, name: str):
@@ -143,14 +157,12 @@ def get_burger_data_for_version(version_id: str):
if not os.path.exists(get_dir_location(f"__cache__/burger-{version_id}.json")):
get_burger()
get_client_jar(version_id)
- get_mappings_for_version(version_id)
- print("\033[92mRunning Burger...\033[m")
+ print("\033[92mRunning azalea-burger...\033[m")
run_python_command_and_download_deps(
- f"cd {get_dir_location('__cache__/Burger')} && "
+ f"cd {get_dir_location('__cache__/azalea-burger')} && "
f"venv/bin/python munch.py {get_dir_location('__cache__')}/client-{version_id}.jar "
f"--output {get_dir_location('__cache__')}/burger-{version_id}.json "
- f"--mappings {get_dir_location('__cache__')}/mappings-{version_id}.txt"
)
with open(get_dir_location(f"__cache__/burger-{version_id}.json"), "r") as f:
return json.load(f)
@@ -183,12 +195,11 @@ def get_pumpkin_data(version_id: str, category: str):
fabric_kotlin_version = get_latest_fabric_kotlin_version()
gradle_properties = f"""# Done to increase the memory available to gradle.
-org.gradle.jvmargs=-Xmx1G
+org.gradle.jvmargs=-Xmx2G
org.gradle.parallel=true
# Fabric Properties
-# check these on https://modmuss50.me/fabric.html
+# check these on https://fabricmc.net/develop/
minecraft_version={version_id}
-yarn_mappings={fabric_data["mappings"]["version"]}
loader_version={fabric_data["loader"]["version"]}
kotlin_loader_version={fabric_kotlin_version}
# Mod Properties
@@ -200,24 +211,9 @@ fabric_version={fabric_api_version}
with open(f"{pumpkin_dir}/gradle.properties", "w") as f:
f.write(gradle_properties)
- # update the minecraft version dependency in src/main/resources/fabric.mod.json
- fabric_mod_json_path = f"{pumpkin_dir}/src/main/resources/fabric.mod.json"
- with open(fabric_mod_json_path, "r") as f:
- fabric_mod_json = f.read()
- with open(f"{pumpkin_dir}/build.gradle.kts", "r") as f:
- build_gradle_kts = f.read()
- with open(f"{pumpkin_dir}/build.gradle.kts", "w") as f:
- # build_gradle_kts = re.sub(
- # r'(id\("fabric-loom"\) version )"[^"]+"',
- # rf'\1"{fabric_loom_version}"',
- # build_gradle_kts,
- # )
- f.write(build_gradle_kts)
-
# run ./gradlew runServer until it logs "(pumpkin_extractor) Done"
p = subprocess.Popen(
- # the gradle wrapper (./gradlew) is sometimes on the wrong version so just prefer the system's gradle installation
- f"cd {pumpkin_dir} && gradle clean && gradle runServer",
+ f"cd {pumpkin_dir} && ./gradlew clean && ./gradlew runServer",
stderr=subprocess.PIPE,
stdout=subprocess.PIPE,
shell=True,
@@ -253,34 +249,3 @@ def get_file_from_jar(version_id: str, file_dir: str):
def get_en_us_lang(version_id: str):
return json.loads(get_file_from_jar(version_id, "assets/minecraft/lang/en_us.json"))
-
-
-# burger packet id extraction is broken since 1.20.5 (always returns -1, so we have to determine packet id ourselves from the mappings).
-# this is very much not ideal.
-
-
-def get_packet_list(version_id: str):
- if version_id != "1.21":
- return []
-
- generate_data_from_server_jar(version_id)
- with open(
- get_dir_location(f"__cache__/generated-{version_id}/reports/packets.json"), "r"
- ) as f:
- packets_report = json.load(f)
- packet_list = []
- for state, state_value in packets_report.items():
- for direction, direction_value in state_value.items():
- for packet_identifier, packet_value in direction_value.items():
- assert packet_identifier.startswith("minecraft:")
- packet_identifier = upper_first_letter(
- to_camel_case(packet_identifier[len("minecraft:") :])
- )
- packet_list.append(
- {
- "state": state,
- "direction": direction,
- "name": packet_identifier,
- "id": packet_value["protocol_id"],
- }
- )
diff --git a/codegen/lib/mappings.py b/codegen/lib/mappings.py
deleted file mode 100644
index 9c39fc2b..00000000
--- a/codegen/lib/mappings.py
+++ /dev/null
@@ -1,93 +0,0 @@
-from typing import Optional
-
-
-class Mappings:
- __slots__ = ('classes', 'fields', 'methods', 'field_types', 'method_types')
-
- def __init__(self, classes, fields, methods, field_types, method_types):
- self.classes = classes
- self.fields = fields
- self.methods = methods
- self.field_types = field_types
- self.method_types = method_types
-
- @staticmethod
- def parse(mappings_txt):
- classes = {}
- fields = {}
- methods = {}
- field_types = {}
- method_types = {}
-
- current_obfuscated_class_name = None
-
- for line in mappings_txt.splitlines():
- if line.startswith('#') or line == '':
- continue
-
- if line.startswith(' '):
- # if a line starts with 4 spaces, that means it's a method or a field
- if '(' in line:
- # if it has an opening parenthesis, it's a method
- real_name_with_parameters_and_line, obfuscated_name = line.strip().split(' -> ')
- real_name_with_parameters = real_name_with_parameters_and_line.split(
- ':')[-1]
-
- real_type, real_name = real_name_with_parameters.split('(')[
- 0].split(' ')
- parameters = real_name_with_parameters.split('(')[1].split(')')[
- 0]
-
- if current_obfuscated_class_name not in methods:
- methods[current_obfuscated_class_name] = {}
- method_types[current_obfuscated_class_name] = {}
- methods[current_obfuscated_class_name][
- f'{obfuscated_name}({parameters})'] = real_name
- method_types[current_obfuscated_class_name][
- f'{obfuscated_name}({parameters})'] = real_type
- else:
- # otherwise, it's a field
- real_name_with_type, obfuscated_name = line.strip().split(' -> ')
- real_type, real_name = real_name_with_type.split(' ')
-
- if current_obfuscated_class_name not in fields:
- fields[current_obfuscated_class_name] = {}
- field_types[current_obfuscated_class_name] = {}
- fields[current_obfuscated_class_name][obfuscated_name] = real_name
- field_types[current_obfuscated_class_name][obfuscated_name] = real_type
- else:
- # otherwise it's a class
- real_name, obfuscated_name = line.strip(':').split(' -> ')
- current_obfuscated_class_name = obfuscated_name
-
- classes[obfuscated_name] = real_name
-
- return Mappings(classes, fields, methods, field_types, method_types)
-
- def get_field(self, obfuscated_class_name, obfuscated_field_name):
- return self.fields.get(obfuscated_class_name, {}).get(obfuscated_field_name)
-
- def get_class(self, obfuscated_class_name):
- if '<' in obfuscated_class_name:
- first_part, args = obfuscated_class_name.split('<')
- args = args.rstrip('>').strip(';').split(';')
- print(args)
- assert len(args) == 1
- arg = self.get_class(args[0][1:])
- return f'{first_part}<{arg}>'
- return self.classes[obfuscated_class_name]
-
- def get_method(self, obfuscated_class_name, obfuscated_method_name, obfuscated_signature):
- return self.methods[obfuscated_class_name][f'{obfuscated_method_name}({obfuscated_signature})']
-
- def get_field_type(self, obfuscated_class_name, obfuscated_field_name) -> str:
- return self.field_types[obfuscated_class_name][obfuscated_field_name]
-
- def get_method_type(self, obfuscated_class_name, obfuscated_method_name, obfuscated_signature) -> str:
- return self.method_types[obfuscated_class_name][f'{obfuscated_method_name}({obfuscated_signature})']
-
- def get_class_from_deobfuscated_name(self, deobfuscated_name) -> Optional[str]:
- for obfuscated_name, real_name in self.classes.items():
- if real_name == deobfuscated_name:
- return obfuscated_name
- return None
diff --git a/codegen/migrate.py b/codegen/migrate.py
index bf7dde5a..100eaf17 100644
--- a/codegen/migrate.py
+++ b/codegen/migrate.py
@@ -24,11 +24,9 @@ if len(sys.argv) == 1:
old_version_id = lib.code.version.get_version_id()
-old_mappings = lib.download.get_mappings_for_version(old_version_id)
old_burger_data = lib.extract.get_burger_data_for_version(old_version_id)
new_version_id = sys.argv[1]
-new_mappings = lib.download.get_mappings_for_version(new_version_id)
new_burger_data = lib.extract.get_burger_data_for_version(new_version_id)
new_packets_report = lib.extract.get_packets_report(new_version_id)
@@ -63,7 +61,7 @@ genregistries.generate(new_version_id)
print("Generating entity data...")
burger_entities_data = new_burger_data[0]["entities"]
-lib.code.entity.generate_entity_metadata(burger_entities_data, new_mappings)
+lib.code.entity.generate_entity_metadata(burger_entities_data)
lib.code.entity.generate_entity_dimensions(burger_entities_data)
print("Generating item components...")