diff options
| -rwxr-xr-x | Cargo.lock | 2 | ||||
| -rwxr-xr-x | azalea-client/src/connect.rs | 48 | ||||
| -rw-r--r-- | azalea-client/src/player.rs | 1 | ||||
| -rw-r--r-- | azalea-core/src/block_pos.rs | 6 | ||||
| -rwxr-xr-x | azalea-core/src/lib.rs | 4 | ||||
| -rw-r--r-- | azalea-core/src/position.rs | 24 | ||||
| -rwxr-xr-x | azalea-nbt/src/tag.rs | 6 | ||||
| -rw-r--r-- | azalea-protocol/src/packets/game/clientbound_level_chunk_with_light_packet.rs | 15 | ||||
| -rw-r--r-- | azalea-protocol/src/packets/game/clientbound_set_chunk_cache_center.rs | 2 | ||||
| -rw-r--r-- | azalea-world/Cargo.toml | 2 | ||||
| -rw-r--r-- | azalea-world/src/lib.rs | 189 | ||||
| -rw-r--r-- | azalea-world/src/palette.rs | 73 | ||||
| -rw-r--r-- | bot/src/main.rs | 2 | ||||
| -rw-r--r-- | login.txt | 4245 |
14 files changed, 4523 insertions, 96 deletions
@@ -166,6 +166,8 @@ dependencies = [ name = "azalea-world" version = "0.1.0" dependencies = [ + "azalea-core", + "azalea-nbt", "azalea-protocol", ] diff --git a/azalea-client/src/connect.rs b/azalea-client/src/connect.rs index be268eee..e4d7d7e5 100755 --- a/azalea-client/src/connect.rs +++ b/azalea-client/src/connect.rs @@ -1,5 +1,5 @@ use crate::Player; -use azalea_core::resource_location::ResourceLocation; +use azalea_core::{resource_location::ResourceLocation, ChunkPos}; use azalea_protocol::{ connect::{GameConnection, HandshakeConnection}, packets::{ @@ -13,8 +13,8 @@ use azalea_protocol::{ }, resolver, ServerAddress, }; -use azalea_world::Chunk; -use std::sync::Arc; +use azalea_world::{Chunk, ChunkStorage, World}; +use std::{fmt::Debug, ops::Deref, sync::Arc}; use tokio::sync::mpsc::{self, UnboundedReceiver, UnboundedSender}; use tokio::sync::Mutex; @@ -27,8 +27,8 @@ pub struct Account { #[derive(Default)] pub struct ClientState { - // placeholder pub player: Player, + pub world: Option<World>, } /// A player that you can control that is currently in a Minecraft server. @@ -173,8 +173,31 @@ impl Client { match packet { GamePacket::ClientboundLoginPacket(p) => { println!("Got login packet {:?}", p); + std::fs::write("login.txt", format!("{:#?}", p)).expect("Unable to write file"); + + let mut state = state.lock().await; + state.player.entity.id = p.player_id; + let dimension_type = p + .dimension_type + .as_compound() + .expect("Dimension type is not compound") + .get("") + .expect("No \"\" tag") + .as_compound() + .expect("\"\" tag is not compound"); + let height = (*dimension_type + .get("height") + .expect("No height tag") + .as_int() + .expect("height tag is not int")) + .try_into() + .expect("height is not a u32"); + + state.world = Some(World { + height, + storage: ChunkStorage::new(16), + }); - state.lock().await.player.entity.id = p.player_id; conn.lock() .await .write( @@ -231,10 +254,25 @@ impl Client { } GamePacket::ClientboundSetChunkCacheCenterPacket(p) => { println!("Got chunk cache center packet {:?}", p); + state + .lock() + .await + .world + .as_mut() + .unwrap() + .update_view_center(&ChunkPos::new(p.x, p.z)); } GamePacket::ClientboundLevelChunkWithLightPacket(p) => { println!("Got chunk with light packet {} {}", p.x, p.z); + let pos = ChunkPos::new(p.x, p.z); // let chunk = Chunk::read_with_world_height(&mut p.chunk_data); + // println("chunk {:?}") + state + .lock() + .await + .world + .replace_with_packet_data(&pos, &mut p.chunk_data.data.as_slice()) + .unwrap(); } GamePacket::ClientboundLightUpdatePacket(p) => { println!("Got light update packet {:?}", p); diff --git a/azalea-client/src/player.rs b/azalea-client/src/player.rs index fc54ff93..70ac1c76 100644 --- a/azalea-client/src/player.rs +++ b/azalea-client/src/player.rs @@ -1,4 +1,5 @@ use crate::Entity; +use azalea_world::World; #[derive(Default)] pub struct Player { diff --git a/azalea-core/src/block_pos.rs b/azalea-core/src/block_pos.rs deleted file mode 100644 index 96a234cb..00000000 --- a/azalea-core/src/block_pos.rs +++ /dev/null @@ -1,6 +0,0 @@ -#[derive(Clone, Copy, Debug)] -pub struct BlockPos { - pub x: i32, - pub y: i32, - pub z: i32, -} diff --git a/azalea-core/src/lib.rs b/azalea-core/src/lib.rs index c6b51cb1..6f0c25cc 100755 --- a/azalea-core/src/lib.rs +++ b/azalea-core/src/lib.rs @@ -8,8 +8,8 @@ pub mod serializable_uuid; mod slot; pub use slot::{Slot, SlotData}; -mod block_pos; -pub use block_pos::BlockPos; +mod position; +pub use position::{BlockPos, ChunkPos}; mod direction; pub use direction::Direction; diff --git a/azalea-core/src/position.rs b/azalea-core/src/position.rs new file mode 100644 index 00000000..aa82c1f9 --- /dev/null +++ b/azalea-core/src/position.rs @@ -0,0 +1,24 @@ +#[derive(Clone, Copy, Debug, Default)] +pub struct BlockPos { + pub x: i32, + pub y: i32, + pub z: i32, +} + +impl BlockPos { + pub fn new(x: i32, y: i32, z: i32) -> Self { + BlockPos { x, y, z } + } +} + +#[derive(Clone, Copy, Debug, Default)] +pub struct ChunkPos { + pub x: i32, + pub z: i32, +} + +impl ChunkPos { + pub fn new(x: i32, z: i32) -> Self { + ChunkPos { x, z } + } +} diff --git a/azalea-nbt/src/tag.rs b/azalea-nbt/src/tag.rs index 61bd15ba..e2df08f7 100755 --- a/azalea-nbt/src/tag.rs +++ b/azalea-nbt/src/tag.rs @@ -17,6 +17,12 @@ pub enum Tag { LongArray(Vec<i64>), // 12 } +impl Default for Tag { + fn default() -> Self { + Tag::End + } +} + impl Tag { #[inline] pub fn id(&self) -> u8 { diff --git a/azalea-protocol/src/packets/game/clientbound_level_chunk_with_light_packet.rs b/azalea-protocol/src/packets/game/clientbound_level_chunk_with_light_packet.rs index 6810ceb2..1d4bf58c 100644 --- a/azalea-protocol/src/packets/game/clientbound_level_chunk_with_light_packet.rs +++ b/azalea-protocol/src/packets/game/clientbound_level_chunk_with_light_packet.rs @@ -12,18 +12,17 @@ pub struct ClientboundLevelChunkWithLightPacket { #[derive(Clone, Debug, McBufReadable, McBufWritable)] pub struct ClientboundLevelChunkPacketData { - heightmaps: azalea_nbt::Tag, + pub heightmaps: azalea_nbt::Tag, // we can't parse the data in azalea-protocol because it dependso on context from other packets - data: Vec<u8>, - block_entities: Vec<BlockEntity>, + pub data: Vec<u8>, + pub block_entities: Vec<BlockEntity>, } #[derive(Clone, Debug, McBufReadable, McBufWritable)] pub struct BlockEntity { - packed_xz: u8, - y: u16, + pub packed_xz: u8, + pub y: u16, #[varint] - type_: i32, - data: azalea_nbt::Tag, + pub type_: i32, + pub data: azalea_nbt::Tag, } - diff --git a/azalea-protocol/src/packets/game/clientbound_set_chunk_cache_center.rs b/azalea-protocol/src/packets/game/clientbound_set_chunk_cache_center.rs index 482dc0c7..5b6de0c9 100644 --- a/azalea-protocol/src/packets/game/clientbound_set_chunk_cache_center.rs +++ b/azalea-protocol/src/packets/game/clientbound_set_chunk_cache_center.rs @@ -5,5 +5,5 @@ pub struct ClientboundSetChunkCacheCenterPacket { #[varint] pub x: i32, #[varint] - pub y: i32, + pub z: i32, } diff --git a/azalea-world/Cargo.toml b/azalea-world/Cargo.toml index 54326fb7..e8d81ac3 100644 --- a/azalea-world/Cargo.toml +++ b/azalea-world/Cargo.toml @@ -6,4 +6,6 @@ version = "0.1.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +azalea-core = {path = "../azalea-core"} +azalea-nbt = {path = "../azalea-nbt"} azalea-protocol = {path = "../azalea-protocol"} diff --git a/azalea-world/src/lib.rs b/azalea-world/src/lib.rs index 8e60a6d6..51bc0764 100644 --- a/azalea-world/src/lib.rs +++ b/azalea-world/src/lib.rs @@ -1,5 +1,13 @@ -use azalea_protocol::mc_buf::{McBufReadable, McBufWritable, Readable, Writable}; -use std::io::{Read, Write}; +mod palette; + +use azalea_core::ChunkPos; +use azalea_protocol::mc_buf::{McBufReadable, McBufWritable}; +use palette::PalettedContainer; +use std::{ + io::{Read, Write}, + ops::{Index, IndexMut}, + sync::{Arc, Mutex}, +}; #[cfg(test)] mod tests { @@ -13,14 +21,107 @@ mod tests { const SECTION_HEIGHT: u32 = 16; pub struct World { - + pub storage: ChunkStorage, + pub height: u32, +} + +impl World { + pub fn replace_with_packet_data( + &mut self, + pos: &ChunkPos, + data: &mut impl Read, + ) -> Result<(), String> { + if !self.storage.in_range(pos) { + println!( + "Ignoring chunk since it's not in the view range: {}, {}", + pos.x, pos.z + ); + return Ok(()); + } + let existing_chunk = &self.storage[pos]; + if let Some(existing_chunk) = existing_chunk { + existing_chunk + .lock() + .expect("Couldn't get lock on existing chunk") + .replace_with_packet_data(data)?; + } else { + let chunk = Arc::new(Mutex::new(Chunk::read_with_world(data, self)?)); + println!("Loaded chunk {:?}", chunk); + self.storage[pos] = Some(chunk); + } + + Ok(()) + } + + pub fn update_view_center(&mut self, pos: &ChunkPos) { + self.storage.view_center = *pos; + } +} + +pub struct ChunkStorage { + view_center: ChunkPos, + chunk_radius: u32, + view_range: u32, + // chunks is a list of size chunk_radius * chunk_radius + chunks: Vec<Option<Arc<Mutex<Chunk>>>>, +} + +// java moment +// it might be possible to replace this with just a modulo, but i copied java's floorMod just in case +fn floor_mod(x: i32, y: u32) -> u32 { + if x < 0 { + y - ((-x) as u32 % y) + } else { + x as u32 % y + } +} + +impl ChunkStorage { + pub fn new(chunk_radius: u32) -> Self { + let view_range = chunk_radius * 2 + 1; + ChunkStorage { + view_center: ChunkPos::new(0, 0), + chunk_radius, + view_range, + chunks: vec![None; (view_range * view_range) as usize], + } + } + + fn get_index(&self, chunk_pos: &ChunkPos) -> usize { + (floor_mod(chunk_pos.x, self.view_range) * self.view_range + + floor_mod(chunk_pos.z, self.view_range)) as usize + } + + pub fn in_range(&self, chunk_pos: &ChunkPos) -> bool { + (chunk_pos.x - self.view_center.x).unsigned_abs() <= self.chunk_radius + && (chunk_pos.z - self.view_center.z).unsigned_abs() <= self.chunk_radius + } +} + +impl Index<&ChunkPos> for ChunkStorage { + type Output = Option<Arc<Mutex<Chunk>>>; + + fn index(&self, pos: &ChunkPos) -> &Self::Output { + &self.chunks[self.get_index(pos)] + } +} +impl IndexMut<&ChunkPos> for ChunkStorage { + fn index_mut<'a>(&'a mut self, pos: &ChunkPos) -> &'a mut Self::Output { + let index = self.get_index(pos); + &mut self.chunks[index] + } } +#[derive(Debug)] pub struct Chunk { pub sections: Vec<Section>, } impl Chunk { + pub fn read_with_world(buf: &mut impl Read, data: &World) -> Result<Self, String> { + Self::read_with_world_height(buf, data.height) + } + pub fn read_with_world_height(buf: &mut impl Read, world_height: u32) -> Result<Self, String> { let section_count = world_height / SECTION_HEIGHT; let mut sections = Vec::with_capacity(section_count as usize); @@ -30,6 +131,18 @@ impl Chunk { } Ok(Chunk { sections }) } + + fn replace_with_packet_data(&mut self, data: &mut impl Read) -> Result<(), String> { + let section_count = self.sections.len(); + + // this should also replace block entities and set the heightmap + + for i in 0..section_count { + self.sections[i] = Section::read_into(data)?; + } + + Ok(()) + } } impl McBufWritable for Chunk { @@ -69,73 +182,3 @@ impl McBufWritable for Section { Ok(()) } } - -#[derive(Clone, Debug)] -pub struct PalettedContainer { - pub bits_per_entry: u8, - pub palette: Palette, - /// Compacted list of indices pointing to entry IDs in the Palette. - pub data: Vec<i64>, -} - -impl McBufReadable for PalettedContainer { - fn read_into(buf: &mut impl Read) -> Result<Self, String> { - let bits_per_entry = buf.read_byte()?; - let palette = Palette::read_with_bits_per_entry(buf, bits_per_entry)?; - let data = Vec::<i64>::read_into(buf)?; - Ok(PalettedContainer { - bits_per_entry, - palette, - data, - }) - } -} -impl McBufWritable for PalettedContainer { - fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { - buf.write_byte(self.bits_per_entry)?; - self.palette.write_into(buf)?; - self.data.write_into(buf)?; - Ok(()) - } -} - -#[derive(Clone, Debug)] -pub enum Palette { - /// ID of the corresponding entry in its global palette - SingleValue(u32), - LinearPalette(Vec<u32>), - HashmapPalette(Vec<u32>), - GlobalPalette, -} - -impl Palette { - pub fn read_with_bits_per_entry( - buf: &mut impl Read, - bits_per_entry: u8, - ) -> Result<Palette, String> { - Ok(match bits_per_entry { - 0 => Palette::SingleValue(u32::read_into(buf)?), - 1..=4 => Palette::LinearPalette(Vec::<u32>::read_into(buf)?), - 5..=8 => Palette::HashmapPalette(Vec::<u32>::read_into(buf)?), - _ => Palette::GlobalPalette, - }) - } -} - -impl McBufWritable for Palette { - fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { - match self { - Palette::SingleValue(value) => { - value.write_into(buf)?; - } - Palette::LinearPalette(values) => { - values.write_into(buf)?; - } - Palette::HashmapPalette(values) => { - values.write_into(buf)?; - } - Palette::GlobalPalette => {} - } - Ok(()) - } -} diff --git a/azalea-world/src/palette.rs b/azalea-world/src/palette.rs new file mode 100644 index 00000000..a8ec50c9 --- /dev/null +++ b/azalea-world/src/palette.rs @@ -0,0 +1,73 @@ +use std::io::{Read, Write}; + +use azalea_protocol::mc_buf::{McBufReadable, McBufWritable, Readable, Writable}; + +#[derive(Clone, Debug)] +pub struct PalettedContainer { + pub bits_per_entry: u8, + pub palette: Palette, + /// Compacted list of indices pointing to entry IDs in the Palette. + pub data: Vec<i64>, +} + +impl McBufReadable for PalettedContainer { + fn read_into(buf: &mut impl Read) -> Result<Self, String> { + let bits_per_entry = buf.read_byte()?; + let palette = Palette::read_with_bits_per_entry(buf, bits_per_entry)?; + let data = Vec::<i64>::read_into(buf)?; + Ok(PalettedContainer { + bits_per_entry, + palette, + data, + }) + } +} +impl McBufWritable for PalettedContainer { + fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { + buf.write_byte(self.bits_per_entry)?; + self.palette.write_into(buf)?; + self.data.write_into(buf)?; + Ok(()) + } +} + +#[derive(Clone, Debug)] +pub enum Palette { + /// ID of the corresponding entry in its global palette + SingleValue(u32), + LinearPalette(Vec<u32>), + HashmapPalette(Vec<u32>), + GlobalPalette, +} + +impl Palette { + pub fn read_with_bits_per_entry( + buf: &mut impl Read, + bits_per_entry: u8, + ) -> Result<Palette, String> { + Ok(match bits_per_entry { + 0 => Palette::SingleValue(u32::read_into(buf)?), + 1..=4 => Palette::LinearPalette(Vec::<u32>::read_into(buf)?), + 5..=8 => Palette::HashmapPalette(Vec::<u32>::read_into(buf)?), + _ => Palette::GlobalPalette, + }) + } +} + +impl McBufWritable for Palette { + fn write_into(&self, buf: &mut impl Write) -> Result<(), std::io::Error> { + match self { + Palette::SingleValue(value) => { + value.write_into(buf)?; + } + Palette::LinearPalette(values) => { + values.write_into(buf)?; + } + Palette::HashmapPalette(values) => { + values.write_into(buf)?; + } + Palette::GlobalPalette => {} + } + Ok(()) + } +} diff --git a/bot/src/main.rs b/bot/src/main.rs index 8314eb5c..6a2d5959 100644 --- a/bot/src/main.rs +++ b/bot/src/main.rs @@ -5,7 +5,7 @@ async fn main() { println!("Hello, world!"); // let address = "95.111.249.143:10000"; - let address = "172.23.192.1:58024"; + let address = "172.23.192.1:59152"; // let response = azalea_client::ping::ping_server(&address.try_into().unwrap()) // .await // .unwrap(); diff --git a/login.txt b/login.txt new file mode 100644 index 00000000..15e011e3 --- /dev/null +++ b/login.txt @@ -0,0 +1,4245 @@ +ClientboundLoginPacket { + player_id: 26888, + hardcore: false, + game_type: CREATIVE, + previous_game_type: None, + levels: [ + minecraft:overworld, + minecraft:the_end, + minecraft:the_nether, + ], + registry_holder: Compound( + { + "": Compound( + { + "minecraft:worldgen/biome": Compound( + { + "type": String( + "minecraft:worldgen/biome", + ), + "value": List( + [ + Compound( + { + "element": Compound( + { + "precipitation": String( + "none", + ), + "temperature": Float( + 0.5, + ), + "category": String( + "none", + ), + "effects": Compound( + { + "sky_color": Int( + 8103167, + ), + "fog_color": Int( + 12638463, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + }, + ), + "water_color": Int( + 4159204, + ), + }, + ), + "downfall": Float( + 0.5, + ), + }, + ), + "name": String( + "minecraft:the_void", + ), + "id": Int( + 0, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:plains", + ), + "id": Int( + 1, + ), + "element": Compound( + { + "category": String( + "plains", + ), + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "tick_delay": Int( + 6000, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 7907327, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + }, + ), + "precipitation": String( + "rain", + ), + "temperature": Float( + 0.8, + ), + "downfall": Float( + 0.4, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:sunflower_plains", + ), + "id": Int( + 2, + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.4, + ), + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + }, + ), + "sky_color": Int( + 7907327, + ), + }, + ), + "category": String( + "plains", + ), + "temperature": Float( + 0.8, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:snowy_plains", + ), + "element": Compound( + { + "category": String( + "icy", + ), + "temperature": Float( + 0.0, + ), + "precipitation": String( + "snow", + ), + "downfall": Float( + 0.5, + ), + "effects": Compound( + { + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + "sky_color": Int( + 8364543, + ), + "fog_color": Int( + 12638463, + ), + }, + ), + }, + ), + "id": Int( + 3, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:ice_spikes", + ), + "element": Compound( + { + "precipitation": String( + "snow", + ), + "temperature": Float( + 0.0, + ), + "category": String( + "icy", + ), + "downfall": Float( + 0.5, + ), + "effects": Compound( + { + "water_fog_color": Int( + 329011, + ), + "sky_color": Int( + 8364543, + ), + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + }, + ), + }, + ), + "id": Int( + 4, + ), + }, + ), + Compound( + { + "id": Int( + 5, + ), + "name": String( + "minecraft:desert", + ), + "element": Compound( + { + "category": String( + "desert", + ), + "temperature": Float( + 2.0, + ), + "downfall": Float( + 0.0, + ), + "precipitation": String( + "none", + ), + "effects": Compound( + { + "sky_color": Int( + 7254527, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + }, + ), + }, + ), + }, + ), + Compound( + { + "element": Compound( + { + "category": String( + "swamp", + ), + "effects": Compound( + { + "water_color": Int( + 6388580, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 7907327, + ), + "grass_color_modifier": String( + "swamp", + ), + "foliage_color": Int( + 6975545, + ), + "water_fog_color": Int( + 2302743, + ), + "fog_color": Int( + 12638463, + ), + }, + ), + "precipitation": String( + "rain", + ), + "temperature": Float( + 0.8, + ), + "downfall": Float( + 0.9, + ), + }, + ), + "id": Int( + 6, + ), + "name": String( + "minecraft:swamp", + ), + }, + ), + Compound( + { + "id": Int( + 7, + ), + "element": Compound( + { + "temperature": Float( + 0.7, + ), + "category": String( + "forest", + ), + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.8, + ), + "effects": Compound( + { + "water_fog_color": Int( + 329011, + ), + "sky_color": Int( + 7972607, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + }, + ), + "fog_color": Int( + 12638463, + ), + }, + ), + }, + ), + "name": String( + "minecraft:forest", + ), + }, + ), + Compound( + { + "id": Int( + 8, + ), + "element": Compound( + { + "effects": Compound( + { + "sky_color": Int( + 7972607, + ), + "water_color": Int( + 4159204, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + }, + ), + "precipitation": String( + "rain", + ), + "category": String( + "forest", + ), + "temperature": Float( + 0.7, + ), + "downfall": Float( + 0.8, + ), + }, + ), + "name": String( + "minecraft:flower_forest", + ), + }, + ), + Compound( + { + "name": String( + "minecraft:birch_forest", + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "effects": Compound( + { + "sky_color": Int( + 8037887, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + }, + ), + "fog_color": Int( + 12638463, + ), + }, + ), + "downfall": Float( + 0.6, + ), + "temperature": Float( + 0.6, + ), + "category": String( + "forest", + ), + }, + ), + "id": Int( + 9, + ), + }, + ), + Compound( + { + "id": Int( + 10, + ), + "element": Compound( + { + "downfall": Float( + 0.8, + ), + "precipitation": String( + "rain", + ), + "category": String( + "forest", + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "grass_color_modifier": String( + "dark_forest", + ), + "sky_color": Int( + 7972607, + ), + "fog_color": Int( + 12638463, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + }, + ), + "temperature": Float( + 0.7, + ), + }, + ), + "name": String( + "minecraft:dark_forest", + ), + }, + ), + Compound( + { + "id": Int( + 11, + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.6, + ), + "temperature": Float( + 0.6, + ), + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "sky_color": Int( + 8037887, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "tick_delay": Int( + 6000, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + }, + ), + "category": String( + "forest", + ), + }, + ), + "name": String( + "minecraft:old_growth_birch_forest", + ), + }, + ), + Compound( + { + "name": String( + "minecraft:old_growth_pine_taiga", + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "category": String( + "taiga", + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "sky_color": Int( + 8168447, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + }, + ), + "fog_color": Int( + 12638463, + ), + }, + ), + "temperature": Float( + 0.3, + ), + "downfall": Float( + 0.8, + ), + }, + ), + "id": Int( + 12, + ), + }, + ), + Compound( + { + "id": Int( + 13, + ), + "name": String( + "minecraft:old_growth_spruce_taiga", + ), + "element": Compound( + { + "category": String( + "taiga", + ), + "downfall": Float( + 0.8, + ), + "precipitation": String( + "rain", + ), + "effects": Compound( + { + "sky_color": Int( + 8233983, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + }, + ), + "temperature": Float( + 0.25, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:taiga", + ), + "id": Int( + 14, + ), + "element": Compound( + { + "temperature": Float( + 0.25, + ), + "downfall": Float( + 0.8, + ), + "precipitation": String( + "rain", + ), + "category": String( + "taiga", + ), + "effects": Compound( + { + "sky_color": Int( + 8233983, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "fog_color": Int( + 12638463, + ), + }, + ), + }, + ), + }, + ), + Compound( + { + "id": Int( + 15, + ), + "element": Compound( + { + "downfall": Float( + 0.4, + ), + "temperature": Float( + -0.5, + ), + "effects": Compound( + { + "water_color": Int( + 4020182, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "fog_color": Int( + 12638463, + ), + "sky_color": Int( + 8625919, + ), + "water_fog_color": Int( + 329011, + ), + }, + ), + "category": String( + "taiga", + ), + "precipitation": String( + "snow", + ), + }, + ), + "name": String( + "minecraft:snowy_taiga", + ), + }, + ), + Compound( + { + "element": Compound( + { + "temperature": Float( + 2.0, + ), + "downfall": Float( + 0.0, + ), + "effects": Compound( + { + "sky_color": Int( + 7254527, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + }, + ), + }, + ), + "precipitation": String( + "none", + ), + "category": String( + "savanna", + ), + }, + ), + "name": String( + "minecraft:savanna", + ), + "id": Int( + 16, + ), + }, + ), + Compound( + { + "id": Int( + 17, + ), + "name": String( + "minecraft:savanna_plateau", + ), + "element": Compound( + { + "downfall": Float( + 0.0, + ), + "category": String( + "savanna", + ), + "precipitation": String( + "none", + ), + "temperature": Float( + 2.0, + ), + "effects": Compound( + { + "mood_sound": Compound( + { + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + }, + ), + "water_color": Int( + 4159204, + ), + "fog_color": Int( + 12638463, + ), + "sky_color": Int( + 7254527, + ), + "water_fog_color": Int( + 329011, + ), + }, + ), + }, + ), + }, + ), + Compound( + { + "id": Int( + 18, + ), + "name": String( + "minecraft:windswept_hills", + ), + "element": Compound( + { + "temperature": Float( + 0.2, + ), + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.3, + ), + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "sky_color": Int( + 8233727, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + }, + ), + "category": String( + "extreme_hills", + ), + }, + ), + }, + ), + Compound( + { + "id": Int( + 19, + ), + "element": Compound( + { + "temperature": Float( + 0.2, + ), + "precipitation": String( + "rain", + ), + "category": String( + "extreme_hills", + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "water_fog_color": Int( + 329011, + ), + "sky_color": Int( + 8233727, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + }, + ), + "downfall": Float( + 0.3, + ), + }, + ), + "name": String( + "minecraft:windswept_gravelly_hills", + ), + }, + ), + Compound( + { + "name": String( + "minecraft:windswept_forest", + ), + "id": Int( + 20, + ), + "element": Compound( + { + "category": String( + "extreme_hills", + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "sky_color": Int( + 8233727, + ), + }, + ), + "downfall": Float( + 0.3, + ), + "precipitation": String( + "rain", + ), + "temperature": Float( + 0.2, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:windswept_savanna", + ), + "element": Compound( + { + "temperature": Float( + 2.0, + ), + "downfall": Float( + 0.0, + ), + "category": String( + "savanna", + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + }, + ), + "sky_color": Int( + 7254527, + ), + "fog_color": Int( + 12638463, + ), + }, + ), + "precipitation": String( + "none", + ), + }, + ), + "id": Int( + 21, + ), + }, + ), + Compound( + { + "id": Int( + 22, + ), + "name": String( + "minecraft:jungle", + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "temperature": Float( + 0.95, + ), + "downfall": Float( + 0.9, + ), + "category": String( + "jungle", + ), + "effects": Compound( + { + "sky_color": Int( + 7842047, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "water_color": Int( + 4159204, + ), + "water_fog_color": Int( + 329011, + ), + }, + ), + }, + ), + }, + ), + Compound( + { + "element": Compound( + { + "temperature": Float( + 0.95, + ), + "precipitation": String( + "rain", + ), + "effects": Compound( + { + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 7842047, + ), + }, + ), + "category": String( + "jungle", + ), + "downfall": Float( + 0.8, + ), + }, + ), + "id": Int( + 23, + ), + "name": String( + "minecraft:sparse_jungle", + ), + }, + ), + Compound( + { + "name": String( + "minecraft:bamboo_jungle", + ), + "id": Int( + 24, + ), + "element": Compound( + { + "effects": Compound( + { + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 7842047, + ), + "water_color": Int( + 4159204, + ), + }, + ), + "downfall": Float( + 0.9, + ), + "temperature": Float( + 0.95, + ), + "precipitation": String( + "rain", + ), + "category": String( + "jungle", + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:badlands", + ), + "id": Int( + 25, + ), + "element": Compound( + { + "effects": Compound( + { + "sky_color": Int( + 7254527, + ), + "foliage_color": Int( + 10387789, + ), + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + "grass_color": Int( + 9470285, + ), + }, + ), + "category": String( + "mesa", + ), + "precipitation": String( + "none", + ), + "downfall": Float( + 0.0, + ), + "temperature": Float( + 2.0, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:eroded_badlands", + ), + "id": Int( + 26, + ), + "element": Compound( + { + "downfall": Float( + 0.0, + ), + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "grass_color": Int( + 9470285, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + }, + ), + "foliage_color": Int( + 10387789, + ), + "sky_color": Int( + 7254527, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + }, + ), + "precipitation": String( + "none", + ), + "category": String( + "mesa", + ), + "temperature": Float( + 2.0, + ), + }, + ), + }, + ), + Compound( + { + "element": Compound( + { + "effects": Compound( + { + "sky_color": Int( + 7254527, + ), + "foliage_color": Int( + 10387789, + ), + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "tick_delay": Int( + 6000, + ), + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + }, + ), + "grass_color": Int( + 9470285, + ), + "water_fog_color": Int( + 329011, + ), + }, + ), + "temperature": Float( + 2.0, + ), + "downfall": Float( + 0.0, + ), + "category": String( + "mesa", + ), + "precipitation": String( + "none", + ), + }, + ), + "name": String( + "minecraft:wooded_badlands", + ), + "id": Int( + 27, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:meadow", + ), + "id": Int( + 28, + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "temperature": Float( + 0.5, + ), + "effects": Compound( + { + "sky_color": Int( + 8103167, + ), + "water_color": Int( + 937679, + ), + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + "music": Compound( + { + "sound": String( + "minecraft:music.overworld.meadow", + ), + "replace_current_music": Byte( + 0, + ), + "max_delay": Int( + 24000, + ), + "min_delay": Int( + 12000, + ), + }, + ), + }, + ), + "category": String( + "mountain", + ), + "downfall": Float( + 0.8, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:grove", + ), + "id": Int( + 29, + ), + "element": Compound( + { + "precipitation": String( + "snow", + ), + "effects": Compound( + { + "music": Compound( + { + "min_delay": Int( + 12000, + ), + "max_delay": Int( + 24000, + ), + "replace_current_music": Byte( + 0, + ), + "sound": String( + "minecraft:music.overworld.grove", + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + }, + ), + "sky_color": Int( + 8495359, + ), + "water_color": Int( + 4159204, + ), + }, + ), + "temperature": Float( + -0.2, + ), + "downfall": Float( + 0.8, + ), + "category": String( + "forest", + ), + }, + ), + }, + ), + Compound( + { + "element": Compound( + { + "temperature": Float( + -0.3, + ), + "precipitation": String( + "snow", + ), + "category": String( + "mountain", + ), + "effects": Compound( + { + "music": Compound( + { + "sound": String( + "minecraft:music.overworld.snowy_slopes", + ), + "min_delay": Int( + 12000, + ), + "max_delay": Int( + 24000, + ), + "replace_current_music": Byte( + 0, + ), + }, + ), + "sky_color": Int( + 8560639, + ), + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + "water_color": Int( + 4159204, + ), + }, + ), + "downfall": Float( + 0.9, + ), + }, + ), + "name": String( + "minecraft:snowy_slopes", + ), + "id": Int( + 30, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:frozen_peaks", + ), + "id": Int( + 31, + ), + "element": Compound( + { + "category": String( + "mountain", + ), + "precipitation": String( + "snow", + ), + "downfall": Float( + 0.9, + ), + "temperature": Float( + -0.7, + ), + "effects": Compound( + { + "sky_color": Int( + 8756735, + ), + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "music": Compound( + { + "sound": String( + "minecraft:music.overworld.frozen_peaks", + ), + "min_delay": Int( + 12000, + ), + "replace_current_music": Byte( + 0, + ), + "max_delay": Int( + 24000, + ), + }, + ), + }, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:jagged_peaks", + ), + "id": Int( + 32, + ), + "element": Compound( + { + "precipitation": String( + "snow", + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "music": Compound( + { + "replace_current_music": Byte( + 0, + ), + "max_delay": Int( + 24000, + ), + "sound": String( + "minecraft:music.overworld.jagged_peaks", + ), + "min_delay": Int( + 12000, + ), + }, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 8756735, + ), + "water_fog_color": Int( + 329011, + ), + }, + ), + "temperature": Float( + -0.7, + ), + "downfall": Float( + 0.9, + ), + "category": String( + "mountain", + ), + }, + ), + }, + ), + Compound( + { + "id": Int( + 33, + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.3, + ), + "temperature": Float( + 1.0, + ), + "category": String( + "mountain", + ), + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "water_fog_color": Int( + 329011, + ), + "music": Compound( + { + "sound": String( + "minecraft:music.overworld.stony_peaks", + ), + "replace_current_music": Byte( + 0, + ), + "max_delay": Int( + 24000, + ), + "min_delay": Int( + 12000, + ), + }, + ), + "mood_sound": Compound( + { + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 7776511, + ), + "water_color": Int( + 4159204, + ), + }, + ), + }, + ), + "name": String( + "minecraft:stony_peaks", + ), + }, + ), + Compound( + { + "id": Int( + 34, + ), + "element": Compound( + { + "temperature": Float( + 0.5, + ), + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "sky_color": Int( + 8103167, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + }, + ), + }, + ), + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.5, + ), + "category": String( + "river", + ), + }, + ), + "name": String( + "minecraft:river", + ), + }, + ), + Compound( + { + "element": Compound( + { + "category": String( + "river", + ), + "precipitation": String( + "snow", + ), + "effects": Compound( + { + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + }, + ), + "sky_color": Int( + 8364543, + ), + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 3750089, + ), + "water_fog_color": Int( + 329011, + ), + }, + ), + "temperature": Float( + 0.0, + ), + "downfall": Float( + 0.5, + ), + }, + ), + "name": String( + "minecraft:frozen_river", + ), + "id": Int( + 35, + ), + }, + ), + Compound( + { + "id": Int( + 36, + ), + "name": String( + "minecraft:beach", + ), + "element": Compound( + { + "temperature": Float( + 0.8, + ), + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.4, + ), + "category": String( + "beach", + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "sky_color": Int( + 7907327, + ), + "fog_color": Int( + 12638463, + ), + }, + ), + }, + ), + }, + ), + Compound( + { + "element": Compound( + { + "downfall": Float( + 0.3, + ), + "category": String( + "beach", + ), + "precipitation": String( + "snow", + ), + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "sky_color": Int( + 8364543, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4020182, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + }, + ), + "temperature": Float( + 0.05, + ), + }, + ), + "id": Int( + 37, + ), + "name": String( + "minecraft:snowy_beach", + ), + }, + ), + Compound( + { + "name": String( + "minecraft:stony_shore", + ), + "element": Compound( + { + "temperature": Float( + 0.2, + ), + "category": String( + "beach", + ), + "downfall": Float( + 0.3, + ), + "precipitation": String( + "rain", + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "fog_color": Int( + 12638463, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + "sky_color": Int( + 8233727, + ), + }, + ), + }, + ), + "id": Int( + 38, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:warm_ocean", + ), + "id": Int( + 39, + ), + "element": Compound( + { + "downfall": Float( + 0.5, + ), + "precipitation": String( + "rain", + ), + "temperature": Float( + 0.5, + ), + "category": String( + "ocean", + ), + "effects": Compound( + { + "sky_color": Int( + 8103167, + ), + "water_color": Int( + 4445678, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + "water_fog_color": Int( + 270131, + ), + "fog_color": Int( + 12638463, + ), + }, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:lukewarm_ocean", + ), + "element": Compound( + { + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4566514, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 8103167, + ), + "water_fog_color": Int( + 267827, + ), + }, + ), + "temperature": Float( + 0.5, + ), + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.5, + ), + "category": String( + "ocean", + ), + }, + ), + "id": Int( + 40, + ), + }, + ), + Compound( + { + "id": Int( + 41, + ), + "element": Compound( + { + "temperature": Float( + 0.5, + ), + "downfall": Float( + 0.5, + ), + "effects": Compound( + { + "sky_color": Int( + 8103167, + ), + "water_fog_color": Int( + 267827, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "water_color": Int( + 4566514, + ), + }, + ), + "precipitation": String( + "rain", + ), + "category": String( + "ocean", + ), + }, + ), + "name": String( + "minecraft:deep_lukewarm_ocean", + ), + }, + ), + Compound( + { + "element": Compound( + { + "category": String( + "ocean", + ), + "temperature": Float( + 0.5, + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "sky_color": Int( + 8103167, + ), + "fog_color": Int( + 12638463, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + }, + ), + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.5, + ), + }, + ), + "id": Int( + 42, + ), + "name": String( + "minecraft:ocean", + ), + }, + ), + Compound( + { + "name": String( + "minecraft:deep_ocean", + ), + "id": Int( + 43, + ), + "element": Compound( + { + "downfall": Float( + 0.5, + ), + "effects": Compound( + { + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + "fog_color": Int( + 12638463, + ), + "sky_color": Int( + 8103167, + ), + }, + ), + "category": String( + "ocean", + ), + "temperature": Float( + 0.5, + ), + "precipitation": String( + "rain", + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:cold_ocean", + ), + "element": Compound( + { + "temperature": Float( + 0.5, + ), + "downfall": Float( + 0.5, + ), + "precipitation": String( + "rain", + ), + "category": String( + "ocean", + ), + "effects": Compound( + { + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "sky_color": Int( + 8103167, + ), + "water_color": Int( + 4020182, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + }, + ), + }, + ), + "id": Int( + 44, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:deep_cold_ocean", + ), + "id": Int( + 45, + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "downfall": Float( + 0.5, + ), + "temperature": Float( + 0.5, + ), + "category": String( + "ocean", + ), + "effects": Compound( + { + "water_fog_color": Int( + 329011, + ), + "sky_color": Int( + 8103167, + ), + "water_color": Int( + 4020182, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + }, + ), + }, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:frozen_ocean", + ), + "element": Compound( + { + "effects": Compound( + { + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "sky_color": Int( + 8364543, + ), + "water_color": Int( + 3750089, + ), + }, + ), + "precipitation": String( + "snow", + ), + "temperature": Float( + 0.0, + ), + "downfall": Float( + 0.5, + ), + "temperature_modifier": String( + "frozen", + ), + "category": String( + "ocean", + ), + }, + ), + "id": Int( + 46, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:deep_frozen_ocean", + ), + "id": Int( + 47, + ), + "element": Compound( + { + "temperature_modifier": String( + "frozen", + ), + "temperature": Float( + 0.5, + ), + "downfall": Float( + 0.5, + ), + "precipitation": String( + "rain", + ), + "effects": Compound( + { + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 12638463, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "water_color": Int( + 3750089, + ), + "sky_color": Int( + 8103167, + ), + }, + ), + "category": String( + "ocean", + ), + }, + ), + }, + ), + Compound( + { + "id": Int( + 48, + ), + "name": String( + "minecraft:mushroom_fields", + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 7842047, + ), + "fog_color": Int( + 12638463, + ), + "water_fog_color": Int( + 329011, + ), + }, + ), + "downfall": Float( + 1.0, + ), + "temperature": Float( + 0.9, + ), + "category": String( + "mushroom", + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:dripstone_caves", + ), + "id": Int( + 49, + ), + "element": Compound( + { + "precipitation": String( + "rain", + ), + "temperature": Float( + 0.8, + ), + "downfall": Float( + 0.4, + ), + "category": String( + "underground", + ), + "effects": Compound( + { + "sky_color": Int( + 7907327, + ), + "water_fog_color": Int( + 329011, + ), + "music": Compound( + { + "sound": String( + "minecraft:music.overworld.dripstone_caves", + ), + "max_delay": Int( + 24000, + ), + "min_delay": Int( + 12000, + ), + "replace_current_music": Byte( + 0, + ), + }, + ), + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + }, + ), + }, + ), + }, + ), + Compound( + { + "element": Compound( + { + "downfall": Float( + 0.5, + ), + "temperature": Float( + 0.5, + ), + "category": String( + "underground", + ), + "effects": Compound( + { + "fog_color": Int( + 12638463, + ), + "water_color": Int( + 4159204, + ), + "sky_color": Int( + 8103167, + ), + "music": Compound( + { + "sound": String( + "minecraft:music.overworld.lush_caves", + ), + "min_delay": Int( + 12000, + ), + "max_delay": Int( + 24000, + ), + "replace_current_music": Byte( + 0, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + }, + ), + }, + ), + "precipitation": String( + "rain", + ), + }, + ), + "id": Int( + 50, + ), + "name": String( + "minecraft:lush_caves", + ), + }, + ), + Compound( + { + "element": Compound( + { + "effects": Compound( + { + "music": Compound( + { + "max_delay": Int( + 24000, + ), + "sound": String( + "minecraft:music.nether.nether_wastes", + ), + "min_delay": Int( + 12000, + ), + "replace_current_music": Byte( + 0, + ), + }, + ), + "fog_color": Int( + 3344392, + ), + "sky_color": Int( + 7254527, + ), + "water_color": Int( + 4159204, + ), + "water_fog_color": Int( + 329011, + ), + "ambient_sound": String( + "minecraft:ambient.nether_wastes.loop", + ), + "additions_sound": Compound( + { + "sound": String( + "minecraft:ambient.nether_wastes.additions", + ), + "tick_chance": Double( + 0.0111, + ), + }, + ), + "mood_sound": Compound( + { + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "block_search_extent": Int( + 8, + ), + "sound": String( + "minecraft:ambient.nether_wastes.mood", + ), + }, + ), + }, + ), + "temperature": Float( + 2.0, + ), + "precipitation": String( + "none", + ), + "category": String( + "nether", + ), + "downfall": Float( + 0.0, + ), + }, + ), + "id": Int( + 51, + ), + "name": String( + "minecraft:nether_wastes", + ), + }, + ), + Compound( + { + "element": Compound( + { + "downfall": Float( + 0.0, + ), + "category": String( + "nether", + ), + "effects": Compound( + { + "water_fog_color": Int( + 329011, + ), + "sky_color": Int( + 7254527, + ), + "fog_color": Int( + 1705242, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.warped_forest.mood", + ), + "block_search_extent": Int( + 8, + ), + "offset": Double( + 2.0, + ), + }, + ), + "music": Compound( + { + "sound": String( + "minecraft:music.nether.warped_forest", + ), + "replace_current_music": Byte( + 0, + ), + "min_delay": Int( + 12000, + ), + "max_delay": Int( + 24000, + ), + }, + ), + "water_color": Int( + 4159204, + ), + "additions_sound": Compound( + { + "sound": String( + "minecraft:ambient.warped_forest.additions", + ), + "tick_chance": Double( + 0.0111, + ), + }, + ), + "ambient_sound": String( + "minecraft:ambient.warped_forest.loop", + ), + "particle": Compound( + { + "options": Compound( + { + "type": String( + "minecraft:warped_spore", + ), + }, + ), + "probability": Float( + 0.01428, + ), + }, + ), + }, + ), + "temperature": Float( + 2.0, + ), + "precipitation": String( + "none", + ), + }, + ), + "id": Int( + 52, + ), + "name": String( + "minecraft:warped_forest", + ), + }, + ), + Compound( + { + "name": String( + "minecraft:crimson_forest", + ), + "id": Int( + 53, + ), + "element": Compound( + { + "precipitation": String( + "none", + ), + "downfall": Float( + 0.0, + ), + "temperature": Float( + 2.0, + ), + "effects": Compound( + { + "sky_color": Int( + 7254527, + ), + "water_color": Int( + 4159204, + ), + "particle": Compound( + { + "probability": Float( + 0.025, + ), + "options": Compound( + { + "type": String( + "minecraft:crimson_spore", + ), + }, + ), + }, + ), + "ambient_sound": String( + "minecraft:ambient.crimson_forest.loop", + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.crimson_forest.mood", + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "additions_sound": Compound( + { + "tick_chance": Double( + 0.0111, + ), + "sound": String( + "minecraft:ambient.crimson_forest.additions", + ), + }, + ), + "fog_color": Int( + 3343107, + ), + "music": Compound( + { + "max_delay": Int( + 24000, + ), + "sound": String( + "minecraft:music.nether.crimson_forest", + ), + "replace_current_music": Byte( + 0, + ), + "min_delay": Int( + 12000, + ), + }, + ), + }, + ), + "category": String( + "nether", + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:soul_sand_valley", + ), + "id": Int( + 54, + ), + "element": Compound( + { + "category": String( + "nether", + ), + "effects": Compound( + { + "sky_color": Int( + 7254527, + ), + "additions_sound": Compound( + { + "tick_chance": Double( + 0.0111, + ), + "sound": String( + "minecraft:ambient.soul_sand_valley.additions", + ), + }, + ), + "particle": Compound( + { + "options": Compound( + { + "type": String( + "minecraft:ash", + ), + }, + ), + "probability": Float( + 0.00625, + ), + }, + ), + "water_color": Int( + 4159204, + ), + "music": Compound( + { + "min_delay": Int( + 12000, + ), + "replace_current_music": Byte( + 0, + ), + "max_delay": Int( + 24000, + ), + "sound": String( + "minecraft:music.nether.soul_sand_valley", + ), + }, + ), + "fog_color": Int( + 1787717, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.soul_sand_valley.mood", + ), + }, + ), + "ambient_sound": String( + "minecraft:ambient.soul_sand_valley.loop", + ), + "water_fog_color": Int( + 329011, + ), + }, + ), + "precipitation": String( + "none", + ), + "downfall": Float( + 0.0, + ), + "temperature": Float( + 2.0, + ), + }, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:basalt_deltas", + ), + "element": Compound( + { + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "music": Compound( + { + "replace_current_music": Byte( + 0, + ), + "min_delay": Int( + 12000, + ), + "sound": String( + "minecraft:music.nether.basalt_deltas", + ), + "max_delay": Int( + 24000, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "particle": Compound( + { + "probability": Float( + 0.118093334, + ), + "options": Compound( + { + "type": String( + "minecraft:white_ash", + ), + }, + ), + }, + ), + "sky_color": Int( + 7254527, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + "sound": String( + "minecraft:ambient.basalt_deltas.mood", + ), + }, + ), + "ambient_sound": String( + "minecraft:ambient.basalt_deltas.loop", + ), + "additions_sound": Compound( + { + "tick_chance": Double( + 0.0111, + ), + "sound": String( + "minecraft:ambient.basalt_deltas.additions", + ), + }, + ), + "fog_color": Int( + 6840176, + ), + }, + ), + "temperature": Float( + 2.0, + ), + "downfall": Float( + 0.0, + ), + "category": String( + "nether", + ), + "precipitation": String( + "none", + ), + }, + ), + "id": Int( + 55, + ), + }, + ), + Compound( + { + "id": Int( + 56, + ), + "element": Compound( + { + "precipitation": String( + "none", + ), + "temperature": Float( + 0.5, + ), + "effects": Compound( + { + "sky_color": Int( + 0, + ), + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "fog_color": Int( + 10518688, + ), + }, + ), + "category": String( + "the_end", + ), + "downfall": Float( + 0.5, + ), + }, + ), + "name": String( + "minecraft:the_end", + ), + }, + ), + Compound( + { + "element": Compound( + { + "temperature": Float( + 0.5, + ), + "downfall": Float( + 0.5, + ), + "precipitation": String( + "none", + ), + "category": String( + "the_end", + ), + "effects": Compound( + { + "water_fog_color": Int( + 329011, + ), + "water_color": Int( + 4159204, + ), + "fog_color": Int( + 10518688, + ), + "mood_sound": Compound( + { + "block_search_extent": Int( + 8, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + }, + ), + "sky_color": Int( + 0, + ), + }, + ), + }, + ), + "id": Int( + 57, + ), + "name": String( + "minecraft:end_highlands", + ), + }, + ), + Compound( + { + "name": String( + "minecraft:end_midlands", + ), + "id": Int( + 58, + ), + "element": Compound( + { + "temperature": Float( + 0.5, + ), + "effects": Compound( + { + "fog_color": Int( + 10518688, + ), + "water_color": Int( + 4159204, + ), + "water_fog_color": Int( + 329011, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 0, + ), + }, + ), + "category": String( + "the_end", + ), + "precipitation": String( + "none", + ), + "downfall": Float( + 0.5, + ), + }, + ), + }, + ), + Compound( + { + "id": Int( + 59, + ), + "element": Compound( + { + "category": String( + "the_end", + ), + "precipitation": String( + "none", + ), + "downfall": Float( + 0.5, + ), + "effects": Compound( + { + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "sound": String( + "minecraft:ambient.cave", + ), + "offset": Double( + 2.0, + ), + "tick_delay": Int( + 6000, + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "sky_color": Int( + 0, + ), + "water_fog_color": Int( + 329011, + ), + "fog_color": Int( + 10518688, + ), + }, + ), + "temperature": Float( + 0.5, + ), + }, + ), + "name": String( + "minecraft:small_end_islands", + ), + }, + ), + Compound( + { + "name": String( + "minecraft:end_barrens", + ), + "id": Int( + 60, + ), + "element": Compound( + { + "precipitation": String( + "none", + ), + "effects": Compound( + { + "fog_color": Int( + 10518688, + ), + "water_color": Int( + 4159204, + ), + "mood_sound": Compound( + { + "tick_delay": Int( + 6000, + ), + "offset": Double( + 2.0, + ), + "sound": String( + "minecraft:ambient.cave", + ), + "block_search_extent": Int( + 8, + ), + }, + ), + "water_fog_color": Int( + 329011, + ), + "sky_color": Int( + 0, + ), + }, + ), + "downfall": Float( + 0.5, + ), + "temperature": Float( + 0.5, + ), + "category": String( + "the_end", + ), + }, + ), + }, + ), + ], + ), + }, + ), + "minecraft:dimension_type": Compound( + { + "type": String( + "minecraft:dimension_type", + ), + "value": List( + [ + Compound( + { + "name": String( + "minecraft:overworld", + ), + "element": Compound( + { + "ambient_light": Float( + 0.0, + ), + "effects": String( + "minecraft:overworld", + ), + "min_y": Int( + -64, + ), + "bed_works": Byte( + 1, + ), + "has_raids": Byte( + 1, + ), + "height": Int( + 384, + ), + "natural": Byte( + 1, + ), + "has_ceiling": Byte( + 0, + ), + "has_skylight": Byte( + 1, + ), + "respawn_anchor_works": Byte( + 0, + ), + "coordinate_scale": Double( + 1.0, + ), + "ultrawarm": Byte( + 0, + ), + "piglin_safe": Byte( + 0, + ), + "infiniburn": String( + "#minecraft:infiniburn_overworld", + ), + "logical_height": Int( + 384, + ), + }, + ), + "id": Int( + 0, + ), + }, + ), + Compound( + { + "name": String( + "minecraft:overworld_caves", + ), + "element": Compound( + { + "piglin_safe": Byte( + 0, + ), + "has_ceiling": Byte( + 1, + ), + "has_raids": Byte( + 1, + ), + "effects": String( + "minecraft:overworld", + ), + "infiniburn": String( + "#minecraft:infiniburn_overworld", + ), + "min_y": Int( + -64, + ), + "has_skylight": Byte( + 1, + ), + "ultrawarm": Byte( + 0, + ), + "logical_height": Int( + 384, + ), + "coordinate_scale": Double( + 1.0, + ), + "ambient_light": Float( + 0.0, + ), + "respawn_anchor_works": Byte( + 0, + ), + "bed_works": Byte( + 1, + ), + "height": Int( + 384, + ), + "natural": Byte( + 1, + ), + }, + ), + "id": Int( + 1, + ), + }, + ), + Compound( + { + "id": Int( + 2, + ), + "element": Compound( + { + "respawn_anchor_works": Byte( + 1, + ), + "infiniburn": String( + "#minecraft:infiniburn_nether", + ), + "ambient_light": Float( + 0.1, + ), + "has_skylight": Byte( + 0, + ), + "fixed_time": Long( + 18000, + ), + "bed_works": Byte( + 0, + ), + "effects": String( + "minecraft:the_nether", + ), + "coordinate_scale": Double( + 8.0, + ), + "logical_height": Int( + 128, + ), + "has_raids": Byte( + 0, + ), + "height": Int( + 256, + ), + "min_y": Int( + 0, + ), + "natural": Byte( + 0, + ), + "has_ceiling": Byte( + 1, + ), + "piglin_safe": Byte( + 1, + ), + "ultrawarm": Byte( + 1, + ), + }, + ), + "name": String( + "minecraft:the_nether", + ), + }, + ), + Compound( + { + "id": Int( + 3, + ), + "name": String( + "minecraft:the_end", + ), + "element": Compound( + { + "height": Int( + 256, + ), + "logical_height": Int( + 256, + ), + "ambient_light": Float( + 0.0, + ), + "natural": Byte( + 0, + ), + "has_ceiling": Byte( + 0, + ), + "respawn_anchor_works": Byte( + 0, + ), + "min_y": Int( + 0, + ), + "piglin_safe": Byte( + 0, + ), + "has_skylight": Byte( + 0, + ), + "bed_works": Byte( + 0, + ), + "infiniburn": String( + "#minecraft:infiniburn_end", + ), + "effects": String( + "minecraft:the_end", + ), + "fixed_time": Long( + 6000, + ), + "has_raids": Byte( + 1, + ), + "coordinate_scale": Double( + 1.0, + ), + "ultrawarm": Byte( + 0, + ), + }, + ), + }, + ), + ], + ), + }, + ), + }, + ), + }, + ), + dimension_type: Compound( + { + "": Compound( + { + "coordinate_scale": Double( + 1.0, + ), + "ambient_light": Float( + 0.0, + ), + "effects": String( + "minecraft:overworld", + ), + "min_y": Int( + -64, + ), + "ultrawarm": Byte( + 0, + ), + "has_skylight": Byte( + 1, + ), + "bed_works": Byte( + 1, + ), + "logical_height": Int( + 384, + ), + "natural": Byte( + 1, + ), + "has_raids": Byte( + 1, + ), + "piglin_safe": Byte( + 0, + ), + "respawn_anchor_works": Byte( + 0, + ), + "has_ceiling": Byte( + 0, + ), + "infiniburn": String( + "#minecraft:infiniburn_overworld", + ), + "height": Int( + 384, + ), + }, + ), + }, + ), + dimension: minecraft:overworld, + seed: -8740116197493662413, + max_players: 8, + chunk_radius: 8, + simulation_distance: 5, + reduced_debug_info: false, + show_death_screen: true, + is_debug: false, + is_flat: false, +}
\ No newline at end of file |
