aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xCargo.lock2
-rwxr-xr-xazalea-client/src/connect.rs48
-rw-r--r--azalea-client/src/player.rs1
-rw-r--r--azalea-core/src/block_pos.rs6
-rwxr-xr-xazalea-core/src/lib.rs4
-rw-r--r--azalea-core/src/position.rs24
-rwxr-xr-xazalea-nbt/src/tag.rs6
-rw-r--r--azalea-protocol/src/packets/game/clientbound_level_chunk_with_light_packet.rs15
-rw-r--r--azalea-protocol/src/packets/game/clientbound_set_chunk_cache_center.rs2
-rw-r--r--azalea-world/Cargo.toml2
-rw-r--r--azalea-world/src/lib.rs189
-rw-r--r--azalea-world/src/palette.rs73
-rw-r--r--bot/src/main.rs2
-rw-r--r--login.txt4245
14 files changed, 4523 insertions, 96 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 3633a1af..73a8dafd 100755
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -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