diff --git a/README.md b/README.md index ea237802..ec28b354 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Symbol `X` means all minor versions. - [x] 1.18.X - [x] 1.19.X - [x] 1.20.X -- [x] 1.21 +- [x] 1.21.X The server **doesn't** support snapshots. diff --git a/src/main/java/ua/nanit/limbo/connection/PacketHandler.java b/src/main/java/ua/nanit/limbo/connection/PacketHandler.java index f1bacda1..2d7365ab 100644 --- a/src/main/java/ua/nanit/limbo/connection/PacketHandler.java +++ b/src/main/java/ua/nanit/limbo/connection/PacketHandler.java @@ -21,10 +21,8 @@ import ua.nanit.limbo.LimboConstants; import ua.nanit.limbo.protocol.packets.PacketHandshake; import ua.nanit.limbo.protocol.packets.configuration.PacketFinishConfiguration; -import ua.nanit.limbo.protocol.packets.login.PacketLoginAcknowledged; -import ua.nanit.limbo.protocol.packets.login.PacketLoginPluginRequest; -import ua.nanit.limbo.protocol.packets.login.PacketLoginPluginResponse; -import ua.nanit.limbo.protocol.packets.login.PacketLoginStart; +import ua.nanit.limbo.protocol.packets.configuration.PacketPlayerLoaded; +import ua.nanit.limbo.protocol.packets.login.*; import ua.nanit.limbo.protocol.packets.status.PacketStatusPing; import ua.nanit.limbo.protocol.packets.status.PacketStatusRequest; import ua.nanit.limbo.protocol.packets.status.PacketStatusResponse; @@ -137,4 +135,7 @@ public void handle(ClientConnection conn, PacketFinishConfiguration packet) { conn.spawnPlayer(); } + public void handle(ClientConnection conn, PacketPlayerLoaded packet) { + } + } diff --git a/src/main/java/ua/nanit/limbo/connection/PacketSnapshots.java b/src/main/java/ua/nanit/limbo/connection/PacketSnapshots.java index 99a03792..18beabd4 100644 --- a/src/main/java/ua/nanit/limbo/connection/PacketSnapshots.java +++ b/src/main/java/ua/nanit/limbo/connection/PacketSnapshots.java @@ -199,9 +199,9 @@ public static void initPackets(LimboServer server) { PACKET_REGISTRY_DATA = PacketSnapshot.of(packetRegistryData); - Dimension dimension1_21 = server.getDimensionRegistry().getDimension_1_21(); + Dimension dimension1_21_4 = server.getDimensionRegistry().getDimension_1_21_4(); List packetRegistries = new ArrayList<>(); - CompoundBinaryTag dimensionTag = dimension1_21.getData(); + CompoundBinaryTag dimensionTag = dimension1_21_4.getData(); for (String registryType : dimensionTag.keySet()) { CompoundBinaryTag compoundRegistryType = dimensionTag.getCompound(registryType); diff --git a/src/main/java/ua/nanit/limbo/protocol/packets/configuration/PacketPlayerLoaded.java b/src/main/java/ua/nanit/limbo/protocol/packets/configuration/PacketPlayerLoaded.java new file mode 100644 index 00000000..352e0f94 --- /dev/null +++ b/src/main/java/ua/nanit/limbo/protocol/packets/configuration/PacketPlayerLoaded.java @@ -0,0 +1,33 @@ +package ua.nanit.limbo.protocol.packets.configuration; + +import ua.nanit.limbo.connection.ClientConnection; +import ua.nanit.limbo.protocol.ByteMessage; +import ua.nanit.limbo.protocol.PacketIn; +import ua.nanit.limbo.protocol.registry.Version; +import ua.nanit.limbo.server.LimboServer; +import ua.nanit.limbo.server.Log; + +public class PacketPlayerLoaded implements PacketIn { + + private String locale; + + public String getLocale() { + return locale; + } + + @Override + public void decode(ByteMessage msg, Version version) { + locale = msg.readString(); + } + + @Override + public void handle(ClientConnection conn, LimboServer server) { + server.getPacketHandler().handle(conn, this); + } + + @Override + public String toString() { + return getClass().getSimpleName(); + } + +} diff --git a/src/main/java/ua/nanit/limbo/protocol/packets/login/PacketLoginSuccess.java b/src/main/java/ua/nanit/limbo/protocol/packets/login/PacketLoginSuccess.java index 309fb3e5..6d4034bc 100644 --- a/src/main/java/ua/nanit/limbo/protocol/packets/login/PacketLoginSuccess.java +++ b/src/main/java/ua/nanit/limbo/protocol/packets/login/PacketLoginSuccess.java @@ -49,7 +49,7 @@ public void encode(ByteMessage msg, Version version) { if (version.moreOrEqual(Version.V1_19)) { msg.writeVarInt(0); } - if (version.moreOrEqual(Version.V1_20_5)) { + if (version.fromTo(Version.V1_20_5, Version.V1_21)) { msg.writeBoolean(true); } } diff --git a/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketJoinGame.java b/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketJoinGame.java index ffefa2b1..ba7cac62 100644 --- a/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketJoinGame.java +++ b/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketJoinGame.java @@ -20,6 +20,7 @@ import ua.nanit.limbo.protocol.ByteMessage; import ua.nanit.limbo.protocol.PacketOut; import ua.nanit.limbo.protocol.registry.Version; +import ua.nanit.limbo.server.Log; import ua.nanit.limbo.world.DimensionRegistry; public class PacketJoinGame implements PacketOut { @@ -280,7 +281,7 @@ public void encode(ByteMessage msg, Version version) { msg.writeVarInt(0); } - if (version.moreOrEqual(Version.V1_20_5)) { + if (version.fromTo(Version.V1_20_5, Version.V1_21)) { msg.writeBoolean(isHardcore); msg.writeStringsArray(worldNames); msg.writeVarInt(maxPlayers); @@ -300,6 +301,50 @@ public void encode(ByteMessage msg, Version version) { msg.writeVarInt(0); msg.writeBoolean(secureProfile); } + + if (version.equals(Version.V1_21_2)) { + msg.writeBoolean(isHardcore); + msg.writeStringsArray(worldNames); + msg.writeVarInt(maxPlayers); + msg.writeVarInt(viewDistance); + msg.writeVarInt(viewDistance); // Simulation Distance + msg.writeBoolean(reducedDebugInfo); + msg.writeBoolean(enableRespawnScreen); + msg.writeBoolean(limitedCrafting); + msg.writeVarInt(dimensionRegistry.getDimension_1_21().getId()); + msg.writeString(worldName); + msg.writeLong(hashedSeed); + msg.writeByte(gameMode); + msg.writeByte(previousGameMode); + msg.writeBoolean(isDebug); + msg.writeBoolean(isFlat); + msg.writeBoolean(false); + msg.writeVarInt(0); + msg.writeVarInt(0); + msg.writeBoolean(secureProfile); + } + + if (version.moreOrEqual(Version.V1_21_4)) { + msg.writeBoolean(isHardcore); + msg.writeStringsArray(worldNames); + msg.writeVarInt(maxPlayers); + msg.writeVarInt(viewDistance); + msg.writeVarInt(viewDistance); // Simulation Distance + msg.writeBoolean(reducedDebugInfo); + msg.writeBoolean(enableRespawnScreen); + msg.writeBoolean(limitedCrafting); + msg.writeVarInt(dimensionRegistry.getDimension_1_21_4().getId()); + msg.writeString(worldName); + msg.writeLong(hashedSeed); + msg.writeByte(gameMode); + msg.writeByte(previousGameMode); + msg.writeBoolean(isDebug); + msg.writeBoolean(isFlat); + msg.writeBoolean(false); + msg.writeVarInt(0); + msg.writeVarInt(0); + msg.writeBoolean(secureProfile); + } } } diff --git a/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketKeepAlive.java b/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketKeepAlive.java index f18d398a..2d2b80f7 100644 --- a/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketKeepAlive.java +++ b/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketKeepAlive.java @@ -20,6 +20,7 @@ import ua.nanit.limbo.protocol.ByteMessage; import ua.nanit.limbo.protocol.Packet; import ua.nanit.limbo.protocol.registry.Version; +import ua.nanit.limbo.server.Log; public class PacketKeepAlive implements Packet { diff --git a/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketPlayerPositionAndLook.java b/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketPlayerPositionAndLook.java index 15e48272..347a1931 100644 --- a/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketPlayerPositionAndLook.java +++ b/src/main/java/ua/nanit/limbo/protocol/packets/play/PacketPlayerPositionAndLook.java @@ -30,7 +30,8 @@ public class PacketPlayerPositionAndLook implements PacketOut { private float pitch; private int teleportId; - public PacketPlayerPositionAndLook() {} + public PacketPlayerPositionAndLook() { + } public PacketPlayerPositionAndLook(double x, double y, double z, float yaw, float pitch, int teleportId) { this.x = x; @@ -43,6 +44,15 @@ public PacketPlayerPositionAndLook(double x, double y, double z, float yaw, floa @Override public void encode(ByteMessage msg, Version version) { + if (version.moreOrEqual(Version.V1_21_2)) { + encodeModern(msg, version); + return; + } + + encodeLegacy(msg, version); + } + + private void encodeLegacy(ByteMessage msg, Version version) { msg.writeDouble(x); msg.writeDouble(y + (version.less(Version.V1_8) ? 1.62F : 0)); msg.writeDouble(z); @@ -64,4 +74,20 @@ public void encode(ByteMessage msg, Version version) { } } + private void encodeModern(ByteMessage msg, Version version) { + msg.writeVarInt(teleportId); + + msg.writeDouble(x); + msg.writeDouble(y); + msg.writeDouble(z); + + msg.writeDouble(0); + msg.writeDouble(0); + msg.writeDouble(0); + + msg.writeFloat(yaw); + msg.writeFloat(pitch); + + msg.writeInt(0x08); + } } diff --git a/src/main/java/ua/nanit/limbo/protocol/registry/State.java b/src/main/java/ua/nanit/limbo/protocol/registry/State.java index f679c720..b974b408 100644 --- a/src/main/java/ua/nanit/limbo/protocol/registry/State.java +++ b/src/main/java/ua/nanit/limbo/protocol/registry/State.java @@ -19,9 +19,11 @@ import ua.nanit.limbo.protocol.Packet; import ua.nanit.limbo.protocol.packets.PacketHandshake; +import ua.nanit.limbo.protocol.packets.configuration.PacketFinishConfiguration; +import ua.nanit.limbo.protocol.packets.configuration.PacketPlayerLoaded; +import ua.nanit.limbo.protocol.packets.configuration.PacketRegistryData; import ua.nanit.limbo.protocol.packets.login.*; import ua.nanit.limbo.protocol.packets.play.*; -import ua.nanit.limbo.protocol.packets.configuration.*; import ua.nanit.limbo.protocol.packets.status.PacketStatusPing; import ua.nanit.limbo.protocol.packets.status.PacketStatusRequest; import ua.nanit.limbo.protocol.packets.status.PacketStatusResponse; @@ -84,43 +86,46 @@ public enum State { clientBound.register( PacketPluginMessage::new, map(0x00, V1_20_2, V1_20_3), - map(0x01, V1_20_5, V1_21) + map(0x01, V1_20_5, V1_21_4) ); clientBound.register( PacketDisconnect::new, map(0x01, V1_20_2, V1_20_3), - map(0x02, V1_20_5, V1_21) + map(0x02, V1_20_5, V1_21_4) ); clientBound.register( PacketFinishConfiguration::new, map(0x02, V1_20_2, V1_20_3), - map(0x03, V1_20_5, V1_21) + map(0x03, V1_20_5, V1_21_4) ); clientBound.register( PacketKeepAlive::new, map(0x03, V1_20_2, V1_20_3), - map(0x04, V1_20_5, V1_21) + map(0x04, V1_20_5, V1_21_4) ); clientBound.register( PacketRegistryData::new, map(0x05, V1_20_2, V1_20_3), - map(0x07, V1_20_5, V1_21) + map(0x07, V1_20_5, V1_21_4) ); + serverBound.register(PacketPlayerLoaded::new, + map(0x00, V1_21_4, V1_21_4) + ); serverBound.register( PacketPluginMessage::new, map(0x01, V1_20_2, V1_20_3), - map(0x02, V1_20_2, V1_21) + map(0x02, V1_20_2, V1_21_4) ); serverBound.register( PacketFinishConfiguration::new, map(0x02, V1_20_2, V1_20_3), - map(0x03, V1_20_5, V1_21) + map(0x03, V1_20_5, V1_21_4) ); serverBound.register( PacketKeepAlive::new, map(0x03, V1_20_2, V1_20_3), - map(0x04, V1_20_5, V1_21) + map(0x04, V1_20_5, V1_21_4) ); } }, @@ -141,7 +146,8 @@ public enum State { map(0x12, V1_19_4, V1_20), map(0x14, V1_20_2, V1_20_2), map(0x15, V1_20_3, V1_20_3), - map(0x18, V1_20_5, V1_21) + map(0x18, V1_20_5, V1_21), + map(0x1A, V1_21_2, V1_21_4) ); clientBound.register(PacketDeclareCommands::new, @@ -153,7 +159,7 @@ public enum State { map(0x0F, V1_19, V1_19_1), map(0x0E, V1_19_3, V1_19_3), map(0x10, V1_19_4, V1_20), - map(0x11, V1_20_2, V1_21) + map(0x11, V1_20_2, V1_21_4) ); clientBound.register(PacketJoinGame::new, map(0x01, V1_7_2, V1_8), @@ -168,7 +174,8 @@ public enum State { map(0x24, V1_19_3, V1_19_3), map(0x28, V1_19_4, V1_20), map(0x29, V1_20_2, V1_20_3), - map(0x2B, V1_20_5, V1_21) + map(0x2B, V1_20_5, V1_21), + map(0x2C, V1_21_2, V1_21_4) ); clientBound.register(PacketPluginMessage::new, map(0x19, V1_13, V1_13_2), @@ -182,7 +189,7 @@ public enum State { map(0x15, V1_19_3, V1_19_3), map(0x17, V1_19_4, V1_20), map(0x18, V1_20_2, V1_20_3), - map(0x19, V1_20_5, V1_21) + map(0x19, V1_20_5, V1_21_4) ); clientBound.register(PacketPlayerAbilities::new, map(0x39, V1_7_2, V1_8), @@ -199,7 +206,8 @@ public enum State { map(0x30, V1_19_3, V1_19_3), map(0x34, V1_19_4, V1_20), map(0x36, V1_20_2, V1_20_3), - map(0x38, V1_20_5, V1_21) + map(0x38, V1_20_5, V1_21), + map(0x3A, V1_21_2, V1_21_4) ); clientBound.register(PacketPlayerPositionAndLook::new, map(0x08, V1_7_2, V1_8), @@ -216,7 +224,8 @@ public enum State { map(0x38, V1_19_3, V1_19_3), map(0x3C, V1_19_4, V1_20), map(0x3E, V1_20_2, V1_20_3), - map(0x40, V1_20_5, V1_21) + map(0x40, V1_20_5, V1_21), + map(0x42, V1_21_2, V1_21_4) ); clientBound.register(PacketKeepAlive::new, map(0x00, V1_7_2, V1_8), @@ -232,7 +241,8 @@ public enum State { map(0x1F, V1_19_3, V1_19_3), map(0x23, V1_19_4, V1_20), map(0x24, V1_20_2, V1_20_3), - map(0x26, V1_20_5, V1_21) + map(0x26, V1_20_5, V1_21), + map(0x27, V1_21_2, V1_21_4) ); clientBound.register(PacketChatMessage::new, map(0x02, V1_7_2, V1_8), @@ -247,7 +257,8 @@ public enum State { map(0x64, V1_19_4, V1_20), map(0x67, V1_20_2, V1_20_2), map(0x69, V1_20_3, V1_20_3), - map(0x6C, V1_20_5, V1_21) + map(0x6C, V1_20_5, V1_21), + map(0x73, V1_21_2, V1_21_4) ); clientBound.register(PacketBossBar::new, map(0x0C, V1_9, V1_14_4), @@ -256,7 +267,7 @@ public enum State { map(0x0D, V1_17, V1_18_2), map(0x0A, V1_19, V1_19_3), map(0x0B, V1_19_4, V1_20), - map(0x0A, V1_20_2, V1_21) + map(0x0A, V1_20_2, V1_21_4) ); clientBound.register(PacketPlayerInfo::new, map(0x38, V1_7_2, V1_8), @@ -273,7 +284,8 @@ public enum State { map(0x36, V1_19_3, V1_19_3), map(0x3A, V1_19_4, V1_20), map(0x3C, V1_20_2, V1_20_3), - map(0x3E, V1_20_5, V1_21) + map(0x3E, V1_20_5, V1_21), + map(0x40, V1_21_2, V1_21_4) ); clientBound.register(PacketTitleLegacy::new, map(0x45, V1_8, V1_11_1), @@ -292,7 +304,8 @@ public enum State { map(0x5F, V1_19_4, V1_20), map(0x61, V1_20_2, V1_20_2), map(0x63, V1_20_3, V1_20_3), - map(0x65, V1_20_5, V1_21) + map(0x65, V1_20_5, V1_21), + map(0x6C, V1_21_2, V1_21_4) ); clientBound.register(PacketTitleSetSubTitle::new, map(0x57, V1_17, V1_17_1), @@ -302,7 +315,8 @@ public enum State { map(0x5D, V1_19_4, V1_20), map(0x5F, V1_20_2, V1_20_2), map(0x61, V1_20_3, V1_20_3), - map(0x63, V1_20_5, V1_21) + map(0x63, V1_20_5, V1_21), + map(0x6A, V1_21_2, V1_21_4) ); clientBound.register(PacketTitleTimes::new, map(0x5A, V1_17, V1_17_1), @@ -312,7 +326,8 @@ public enum State { map(0x60, V1_19_4, V1_20), map(0x62, V1_20_2, V1_20_2), map(0x64, V1_20_3, V1_20_3), - map(0x66, V1_20_5, V1_21) + map(0x66, V1_20_5, V1_21), + map(0x6D, V1_21_2, V1_21_4) ); clientBound.register(PacketPlayerListHeader::new, map(0x47, V1_8, V1_8), @@ -332,22 +347,26 @@ public enum State { map(0x65, V1_19_4, V1_20), map(0x68, V1_20_2, V1_20_2), map(0x6A, V1_20_3, V1_20_3), - map(0x6D, V1_20_5, V1_21) + map(0x6D, V1_20_5, V1_21), + map(0x74, V1_21_2, V1_21_4) ); clientBound.register(PacketSpawnPosition::new, map(0x4C, V1_19_3, V1_19_3), map(0x50, V1_19_4, V1_20), map(0x52, V1_20_2, V1_20_2), map(0x54, V1_20_3, V1_20_3), - map(0x56, V1_20_5, V1_21) + map(0x56, V1_20_5, V1_21), + map(0x5B, V1_21_2, V1_21_4) ); clientBound.register(PacketGameEvent::new, map(0x20, V1_20_3, V1_20_3), - map(0x22, V1_20_5, V1_21) + map(0x22, V1_20_5, V1_21), + map(0x23, V1_21_2, V1_21_4) ); clientBound.register(PacketEmptyChunk::new, map(0x25, V1_20_3, V1_20_3), - map(0x27, V1_20_5, V1_21) + map(0x27, V1_20_5, V1_21), + map(0x28, V1_21_2, V1_21_4) ); } }; @@ -455,9 +474,10 @@ public Mapping(int packetId, Version from, Version to) { /** * Map packet id to version range + * * @param packetId Packet id - * @param from Minimal version (include) - * @param to Last version (include) + * @param from Minimal version (include) + * @param to Last version (include) * @return Created mapping */ private static Mapping map(int packetId, Version from, Version to) { diff --git a/src/main/java/ua/nanit/limbo/protocol/registry/Version.java b/src/main/java/ua/nanit/limbo/protocol/registry/Version.java index 911529f5..beed2f84 100644 --- a/src/main/java/ua/nanit/limbo/protocol/registry/Version.java +++ b/src/main/java/ua/nanit/limbo/protocol/registry/Version.java @@ -74,7 +74,10 @@ public enum Version { V1_20_3(765), V1_20_5(766), // 1.20.6 has same protocol number - V1_21(767); + V1_21(767), + V1_21_2(768), + // 1.21.3 has same protocol number + V1_21_4(769); private static final Map VERSION_MAP; private static final Version MAX; diff --git a/src/main/java/ua/nanit/limbo/world/DimensionRegistry.java b/src/main/java/ua/nanit/limbo/world/DimensionRegistry.java index 935a1f4d..6c7ca1a4 100644 --- a/src/main/java/ua/nanit/limbo/world/DimensionRegistry.java +++ b/src/main/java/ua/nanit/limbo/world/DimensionRegistry.java @@ -35,6 +35,7 @@ public final class DimensionRegistry { private Dimension defaultDimension_1_18_2; private Dimension dimension_1_20_5; private Dimension dimension_1_21; + private Dimension dimension_1_21_4; private CompoundBinaryTag codec_1_16; private CompoundBinaryTag codec_1_18_2; @@ -43,6 +44,7 @@ public final class DimensionRegistry { private CompoundBinaryTag codec_1_19_4; private CompoundBinaryTag codec_1_20; private CompoundBinaryTag codec_1_21; + private CompoundBinaryTag codec_1_21_4; private CompoundBinaryTag oldCodec; public DimensionRegistry(LimboServer server) { @@ -77,6 +79,10 @@ public CompoundBinaryTag getCodec_1_21() { return codec_1_21; } + public CompoundBinaryTag getCodec_1_21_4() { + return codec_1_21_4; + } + public CompoundBinaryTag getOldCodec() { return oldCodec; } @@ -97,6 +103,10 @@ public Dimension getDimension_1_21() { return dimension_1_21; } + public Dimension getDimension_1_21_4() { + return dimension_1_21_4; + } + public void load(String def) throws IOException { // On 1.16-1.16.1 different codec format oldCodec = readCodecFile("/dimension/codec_old.snbt"); @@ -107,12 +117,14 @@ public void load(String def) throws IOException { codec_1_19_4 = readCodecFile("/dimension/codec_1_19_4.snbt"); codec_1_20 = readCodecFile("/dimension/codec_1_20.snbt"); codec_1_21 = readCodecFile("/dimension/codec_1_21.snbt"); + codec_1_21_4 = readCodecFile("/dimension/codec_1_21_4.snbt"); defaultDimension_1_16 = getDefaultDimension(def, codec_1_16); defaultDimension_1_18_2 = getDefaultDimension(def, codec_1_18_2); dimension_1_20_5 = getModernDimension(def, codec_1_20); dimension_1_21 = getModernDimension(def, codec_1_21); + dimension_1_21_4 = getModernDimension(def, codec_1_21_4); } private Dimension getDefaultDimension(String def, CompoundBinaryTag tag) { diff --git a/src/main/resources/dimension/codec_1_21.snbt b/src/main/resources/dimension/codec_1_21.snbt index 00213f49..b486477b 100644 --- a/src/main/resources/dimension/codec_1_21.snbt +++ b/src/main/resources/dimension/codec_1_21.snbt @@ -703,6 +703,15 @@ message_id: "witherSkull" } }, + { + name: "minecraft:ender_pearl", + id: 43, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "witherSkull" + } + }, ] }, "minecraft:worldgen/biome": { diff --git a/src/main/resources/dimension/codec_1_21_4.snbt b/src/main/resources/dimension/codec_1_21_4.snbt new file mode 100644 index 00000000..d774bc77 --- /dev/null +++ b/src/main/resources/dimension/codec_1_21_4.snbt @@ -0,0 +1,2820 @@ +{ + "minecraft:chat_type": { + type: "minecraft:chat_type", + value: [ + { + name: "minecraft:chat", + id: 0, + element: { + chat: { + style: {}, + translation_key: "chat.type.text", + parameters: [ + "sender", + "content", + ] + }, + narration: { + style: {}, + translation_key: "chat.type.text.narrate", + parameters: [ + "sender", + "content", + ] + }, + }, + }, + { + name: "minecraft:system", + id: 1, + element: { + chat: { + style: {}, + translation_key: "chat.type.system", + parameters: [ + "sender", + "content", + ] + }, + narration: { + style: {}, + translation_key: "chat.type.system.narrate", + parameters: [ + "sender", + "content", + ] + }, + }, + }, + { + name: "minecraft:game_info", + id: 2, + element: { + overlay: {}, + chat: { + style: {}, + translation_key: "chat.type.game_info", + parameters: [ + "sender", + "content", + ] + }, + narration: { + style: {}, + translation_key: "chat.type.game_info.narrate", + parameters: [ + "sender", + "content", + ] + } + }, + }, + { + name: "minecraft:say_command", + id: 3, + element: { + chat: { + style: {}, + translation_key: "chat.type.announcement", + parameters: [ + "sender", + "content", + ] + }, + narration: { + style: {}, + translation_key: "chat.type.announcement.narrate", + parameters: [ + "sender", + "content", + ] + }, + }, + }, + { + name: "minecraft:msg_command", + id: 4, + element: { + chat: { + style: { + color: "gray", + italic: 1, + }, + translation_key: "commands.message.display.incoming", + parameters: [ + "sender", + "content", + ] + }, + narration: { + style: {}, + translation_key: "chat.type.text.narrate", + parameters: [ + "sender", + "content", + ] + }, + }, + }, + { + name: "minecraft:team_msg_command", + id: 5, + element: { + chat: { + style: {}, + translation_key: "chat.type.team.text", + parameters: [ + "sender", + "content", + ] + }, + narration: { + style: {}, + translation_key: "chat.type.text.narrate", + parameters: [ + "sender", + "content", + ] + }, + }, + }, + { + name: "minecraft:emote_command", + id: 6, + element: { + chat: { + style: {}, + translation_key: "chat.type.emote", + parameters: [ + "sender", + "content", + ] + }, + narration: { + style: {}, + translation_key: "chat.type.emote", + parameters: [ + "sender", + "content", + ] + }, + }, + }, + { + name: "minecraft:tellraw_command", + id: 7, + element: { + chat: { + style: {}, + translation_key: "chat.type.text", + parameters: [ + "sender", + "content", + ] + }, + narration: { + style: {}, + translation_key: "chat.type.text.narrate", + parameters: [ + "sender", + "content", + ] + }, + }, + }, + ] + }, + "minecraft:dimension_type": { + type: "minecraft:dimension_type", + value: [ + { + name: "minecraft:overworld", + id: 0, + element: { + piglin_safe: 0b, + natural: 1b, + ambient_light: 0.0f, + infiniburn: "#minecraft:infiniburn_overworld", + respawn_anchor_works: 0b, + has_skylight: 1b, + bed_works: 1b, + effects: "minecraft:overworld", + has_raids: 1b, + monster_spawn_light_level: 0, + monster_spawn_block_light_limit: 0, + min_y: 0, + height: 256, + logical_height: 256, + coordinate_scale: 1.0d, + ultrawarm: 0b, + has_ceiling: 0b + } + }, + { + name: "minecraft:overworld_caves", + id: 1, + element: { + piglin_safe: 0b, + natural: 1b, + ambient_light: 0.0f, + infiniburn: "#minecraft:infiniburn_overworld", + respawn_anchor_works: 0b, + has_skylight: 1b, + bed_works: 1b, + effects: "minecraft:overworld", + has_raids: 1b, + monster_spawn_light_level: 0, + monster_spawn_block_light_limit: 0, + min_y: 0, + height: 256, + logical_height: 256, + coordinate_scale: 1.0d, + ultrawarm: 0b, + has_ceiling: 1b + } + }, + { + name: "minecraft:the_nether", + id: 2, + element: { + piglin_safe: 1b, + natural: 0b, + ambient_light: 0.1f, + infiniburn: "#minecraft:infiniburn_nether", + respawn_anchor_works: 1b, + has_skylight: 0b, + bed_works: 0b, + effects: "minecraft:the_nether", + fixed_time: 18000L, + has_raids: 0b, + monster_spawn_light_level: 0, + monster_spawn_block_light_limit: 0, + min_y: 0, + height: 256, + logical_height: 128, + coordinate_scale: 8.0d, + ultrawarm: 1b, + has_ceiling: 1b + } + }, + { + name: "minecraft:the_end", + id: 3, + element: { + piglin_safe: 0b, + natural: 0b, + ambient_light: 0.0f, + infiniburn: "#minecraft:infiniburn_end", + respawn_anchor_works: 0b, + has_skylight: 0b, + bed_works: 0b, + effects: "minecraft:the_end", + fixed_time: 6000L, + has_raids: 1b, + monster_spawn_light_level: 0, + monster_spawn_block_light_limit: 0, + min_y: 0, + height: 256, + logical_height: 256, + coordinate_scale: 1.0d, + ultrawarm: 0b, + has_ceiling: 0b + } + } + ] + }, + "minecraft:damage_type": { + type: "minecraft:damage_type", + value: [ + { + name: "minecraft:arrow", + id: 0, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "arrow" + } + }, + { + name: "minecraft:bad_respawn_point", + id: 1, + element: { + scaling: "always", + exhaustion: 0.1f, + message_id: "badRespawnPoint", + death_message_type: "intentional_game_design" + } + }, + { + name: "minecraft:cactus", + id: 2, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "cactus" + } + }, + { + name: "minecraft:cramming", + id: 3, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "cramming" + } + }, + { + name: "minecraft:dragon_breath", + id: 4, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "dragonBreath" + } + }, + { + name: "minecraft:drown", + id: 5, + element: { + effects: "drowning", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "drown" + } + }, + { + name: "minecraft:dry_out", + id: 6, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "dryout" + } + }, + { + name: "minecraft:explosion", + id: 7, + element: { + scaling: "always", + exhaustion: 0.1f, + message_id: "explosion" + } + }, + { + name: "minecraft:fall", + id: 8, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "fall", + death_message_type: "fall_variants" + } + }, + { + name: "minecraft:falling_anvil", + id: 9, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "anvil" + } + }, + { + name: "minecraft:falling_block", + id: 10, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "fallingBlock" + } + }, + { + name: "minecraft:falling_stalactite", + id: 11, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "fallingStalactite" + } + }, + { + name: "minecraft:fireball", + id: 12, + element: { + effects: "burning", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "fireball" + } + }, + { + name: "minecraft:fireworks", + id: 13, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "fireworks" + } + }, + { + name: "minecraft:fly_into_wall", + id: 14, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "flyIntoWall" + } + }, + { + name: "minecraft:freeze", + id: 15, + element: { + effects: "freezing", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "freeze" + } + }, + { + name: "minecraft:generic", + id: 16, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "generic" + } + }, + { + name: "minecraft:generic_kill", + id: 16, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "genericKill" + } + }, + { + name: "minecraft:hot_floor", + id: 17, + element: { + effects: "burning", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "hotFloor" + } + }, + { + name: "minecraft:in_fire", + id: 18, + element: { + effects: "burning", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "inFire" + } + }, + { + name: "minecraft:in_wall", + id: 19, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "inWall" + } + }, + { + name: "minecraft:indirect_magic", + id: 20, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "indirectMagic" + } + }, + { + name: "minecraft:lava", + id: 21, + element: { + effects: "burning", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "lava" + } + }, + { + name: "minecraft:lightning_bolt", + id: 22, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "lightningBolt" + } + }, + { + name: "minecraft:magic", + id: 23, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "magic" + } + }, + { + name: "minecraft:mob_attack", + id: 24, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "mob" + } + }, + { + name: "minecraft:mob_attack_no_aggro", + id: 25, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "mob" + } + }, + { + name: "minecraft:mob_projectile", + id: 26, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "mob" + } + }, + { + name: "minecraft:on_fire", + id: 27, + element: { + effects: "burning", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "onFire" + } + }, + { + name: "minecraft:out_of_world", + id: 28, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "outOfWorld" + } + }, + { + name: "minecraft:outside_border", + id: 28, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "outsideBorder" + } + }, + { + name: "minecraft:player_attack", + id: 29, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "player" + } + }, + { + name: "minecraft:player_explosion", + id: 30, + element: { + scaling: "always", + exhaustion: 0.1f, + message_id: "explosion.player" + } + }, + { + name: "minecraft:sonic_boom", + id: 31, + element: { + scaling: "always", + exhaustion: 0.0f, + message_id: "sonic_boom" + } + }, + { + name: "minecraft:stalagmite", + id: 32, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "stalagmite" + } + }, + { + name: "minecraft:starve", + id: 33, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "starve" + } + }, + { + name: "minecraft:sting", + id: 34, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "sting" + } + }, + { + name: "minecraft:sweet_berry_bush", + id: 35, + element: { + effects: "poking", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "sweetBerryBush" + } + }, + { + name: "minecraft:thorns", + id: 36, + element: { + effects: "thorns", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "thorns" + } + }, + { + name: "minecraft:thrown", + id: 37, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "thrown" + } + }, + { + name: "minecraft:trident", + id: 38, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "trident" + } + }, + { + name: "minecraft:unattributed_fireball", + id: 39, + element: { + effects: "burning", + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "onFire" + } + }, + { + name: "minecraft:wither", + id: 40, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.0f, + message_id: "wither" + } + }, + { + name: "minecraft:wither_skull", + id: 41, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "witherSkull" + } + }, + { + name: "minecraft:campfire", + id: 42, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "witherSkull" + } + }, + { + name: "minecraft:ender_pearl", + id: 43, + element: { + scaling: "when_caused_by_living_non_player", + exhaustion: 0.1f, + message_id: "witherSkull" + } + }, + ] + }, + "minecraft:worldgen/biome": { + type: "minecraft:worldgen/biome", + value: [ + { + name: "minecraft:ocean", + id: 0, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.0f, + temperature: 0.5f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + has_precipitation: 0 + } + }, + { + name: "minecraft:plains", + id: 1, + element: { + precipitation: "rain", + effects: { + sky_color: 7907327, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.125f, + temperature: 0.8f, + scale: 0.05f, + downfall: 0.4f, + category: "plains", + has_precipitation: 0 + } + }, + { + name: "minecraft:desert", + id: 2, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.125f, + temperature: 2.0f, + scale: 0.05f, + downfall: 0.0f, + category: "desert", + has_precipitation: 0 + } + }, + { + name: "minecraft:mountains", + id: 3, + element: { + precipitation: "rain", + effects: { + sky_color: 8233727, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 1.0f, + temperature: 0.2f, + scale: 0.5f, + downfall: 0.3f, + category: "extreme_hills", + has_precipitation: 0 + } + }, + { + name: "minecraft:forest", + id: 4, + element: { + precipitation: "rain", + effects: { + sky_color: 7972607, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.7f, + scale: 0.2f, + downfall: 0.8f, + category: "forest", + has_precipitation: 0 + } + }, + { + name: "minecraft:taiga", + id: 5, + element: { + precipitation: "rain", + effects: { + sky_color: 8233983, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: 0.25f, + scale: 0.2f, + downfall: 0.8f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:swamp", + id: 6, + element: { + precipitation: "rain", + effects: { + grass_color_modifier: "swamp", + sky_color: 7907327, + foliage_color: 6975545, + water_fog_color: 2302743, + fog_color: 12638463, + water_color: 6388580, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -0.2f, + temperature: 0.8f, + scale: 0.1f, + downfall: 0.9f, + category: "swamp", + has_precipitation: 0 + } + }, + { + name: "minecraft:river", + id: 7, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -0.5f, + temperature: 0.5f, + scale: 0.0f, + downfall: 0.5f, + category: "river", + has_precipitation: 0 + } + }, + { + name: "minecraft:nether_wastes", + id: 8, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + ambient_sound: "minecraft:ambient.nether_wastes.loop", + additions_sound: { + sound: "minecraft:ambient.nether_wastes.additions", + tick_chance: 0.0111d + }, + water_fog_color: 329011, + fog_color: 3344392, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.nether_wastes.mood", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 2.0f, + scale: 0.2f, + downfall: 0.0f, + category: "nether", + has_precipitation: 0 + } + }, + { + name: "minecraft:the_end", + id: 9, + element: { + precipitation: "none", + effects: { + sky_color: 0, + water_fog_color: 329011, + fog_color: 10518688, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.5f, + scale: 0.2f, + downfall: 0.5f, + category: "the_end", + has_precipitation: 0 + } + }, + { + name: "minecraft:frozen_ocean", + id: 10, + element: { + precipitation: "snow", + effects: { + sky_color: 8364543, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 3750089, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.0f, + temperature: 0.0f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + temperature_modifier: "frozen", + has_precipitation: 0 + } + }, + { + name: "minecraft:frozen_river", + id: 11, + element: { + precipitation: "snow", + effects: { + sky_color: 8364543, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 3750089, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -0.5f, + temperature: 0.0f, + scale: 0.0f, + downfall: 0.5f, + category: "river", + has_precipitation: 0 + } + }, + { + name: "minecraft:snowy_tundra", + id: 12, + element: { + precipitation: "snow", + effects: { + sky_color: 8364543, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.125f, + temperature: 0.0f, + scale: 0.05f, + downfall: 0.5f, + category: "icy", + has_precipitation: 0 + } + }, + { + name: "minecraft:snowy_mountains", + id: 13, + element: { + precipitation: "snow", + effects: { + sky_color: 8364543, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 0.0f, + scale: 0.3f, + downfall: 0.5f, + category: "icy", + has_precipitation: 0 + } + }, + { + name: "minecraft:mushroom_fields", + id: 14, + element: { + precipitation: "rain", + effects: { + sky_color: 7842047, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: 0.9f, + scale: 0.3f, + downfall: 1.0f, + category: "mushroom", + has_precipitation: 0 + } + }, + { + name: "minecraft:mushroom_field_shore", + id: 15, + element: { + precipitation: "rain", + effects: { + sky_color: 7842047, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.0f, + temperature: 0.9f, + scale: 0.025f, + downfall: 1.0f, + category: "mushroom", + has_precipitation: 0 + } + }, + { + name: "minecraft:beach", + id: 16, + element: { + precipitation: "rain", + effects: { + sky_color: 7907327, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.0f, + temperature: 0.8f, + scale: 0.025f, + downfall: 0.4f, + category: "beach", + has_precipitation: 0 + } + }, + { + name: "minecraft:desert_hills", + id: 17, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 2.0f, + scale: 0.3f, + downfall: 0.0f, + category: "desert", + has_precipitation: 0 + } + }, + { + name: "minecraft:wooded_hills", + id: 18, + element: { + precipitation: "rain", + effects: { + sky_color: 7972607, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 0.7f, + scale: 0.3f, + downfall: 0.8f, + category: "forest", + has_precipitation: 0 + } + }, + { + name: "minecraft:taiga_hills", + id: 19, + element: { + precipitation: "rain", + effects: { + sky_color: 8233983, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 0.25f, + scale: 0.3f, + downfall: 0.8f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:mountain_edge", + id: 20, + element: { + precipitation: "rain", + effects: { + sky_color: 8233727, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.8f, + temperature: 0.2f, + scale: 0.3f, + downfall: 0.3f, + category: "extreme_hills", + has_precipitation: 0 + } + }, + { + name: "minecraft:jungle", + id: 21, + element: { + precipitation: "rain", + effects: { + sky_color: 7842047, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.95f, + scale: 0.2f, + downfall: 0.9f, + category: "jungle", + has_precipitation: 0 + } + }, + { + name: "minecraft:jungle_hills", + id: 22, + element: { + precipitation: "rain", + effects: { + sky_color: 7842047, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 0.95f, + scale: 0.3f, + downfall: 0.9f, + category: "jungle", + has_precipitation: 0 + } + }, + { + name: "minecraft:jungle_edge", + id: 23, + element: { + precipitation: "rain", + effects: { + sky_color: 7842047, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.95f, + scale: 0.2f, + downfall: 0.8f, + category: "jungle", + has_precipitation: 0 + } + }, + { + name: "minecraft:deep_ocean", + id: 24, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.8f, + temperature: 0.5f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + has_precipitation: 0 + } + }, + { + name: "minecraft:stone_shore", + id: 25, + element: { + precipitation: "rain", + effects: { + sky_color: 8233727, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.2f, + scale: 0.8f, + downfall: 0.3f, + category: "none", + has_precipitation: 0 + } + }, + { + name: "minecraft:snowy_beach", + id: 26, + element: { + precipitation: "snow", + effects: { + sky_color: 8364543, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4020182, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.0f, + temperature: 0.05f, + scale: 0.025f, + downfall: 0.3f, + category: "beach", + has_precipitation: 0 + } + }, + { + name: "minecraft:birch_forest", + id: 27, + element: { + precipitation: "rain", + effects: { + sky_color: 8037887, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.6f, + scale: 0.2f, + downfall: 0.6f, + category: "forest", + has_precipitation: 0 + } + }, + { + name: "minecraft:birch_forest_hills", + id: 28, + element: { + precipitation: "rain", + effects: { + sky_color: 8037887, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 0.6f, + scale: 0.3f, + downfall: 0.6f, + category: "forest", + has_precipitation: 0 + } + }, + { + name: "minecraft:dark_forest", + id: 29, + element: { + precipitation: "rain", + effects: { + grass_color_modifier: "dark_forest", + sky_color: 7972607, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.7f, + scale: 0.2f, + downfall: 0.8f, + category: "forest", + has_precipitation: 0 + } + }, + { + name: "minecraft:snowy_taiga", + id: 30, + element: { + precipitation: "snow", + effects: { + sky_color: 8625919, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4020182, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: -0.5f, + scale: 0.2f, + downfall: 0.4f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:snowy_taiga_hills", + id: 31, + element: { + precipitation: "snow", + effects: { + sky_color: 8625919, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4020182, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: -0.5f, + scale: 0.3f, + downfall: 0.4f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:giant_tree_taiga", + id: 32, + element: { + precipitation: "rain", + effects: { + sky_color: 8168447, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: 0.3f, + scale: 0.2f, + downfall: 0.8f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:giant_tree_taiga_hills", + id: 33, + element: { + precipitation: "rain", + effects: { + sky_color: 8168447, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 0.3f, + scale: 0.3f, + downfall: 0.8f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:wooded_mountains", + id: 34, + element: { + precipitation: "rain", + effects: { + sky_color: 8233727, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 1.0f, + temperature: 0.2f, + scale: 0.5f, + downfall: 0.3f, + category: "extreme_hills", + has_precipitation: 0 + } + }, + { + name: "minecraft:savanna", + id: 35, + element: { + precipitation: "none", + effects: { + sky_color: 7711487, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.125f, + temperature: 1.2f, + scale: 0.05f, + downfall: 0.0f, + category: "savanna", + has_precipitation: 0 + } + }, + { + name: "minecraft:savanna_plateau", + id: 36, + element: { + precipitation: "none", + effects: { + sky_color: 7776511, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 1.5f, + temperature: 1.0f, + scale: 0.025f, + downfall: 0.0f, + category: "savanna", + has_precipitation: 0 + } + }, + { + name: "minecraft:badlands", + id: 37, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + grass_color: 9470285, + foliage_color: 10387789, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 2.0f, + scale: 0.2f, + downfall: 0.0f, + category: "mesa", + has_precipitation: 0 + } + }, + { + name: "minecraft:wooded_badlands_plateau", + id: 38, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + grass_color: 9470285, + foliage_color: 10387789, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 1.5f, + temperature: 2.0f, + scale: 0.025f, + downfall: 0.0f, + category: "mesa", + has_precipitation: 0 + } + }, + { + name: "minecraft:badlands_plateau", + id: 39, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + grass_color: 9470285, + foliage_color: 10387789, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 1.5f, + temperature: 2.0f, + scale: 0.025f, + downfall: 0.0f, + category: "mesa", + has_precipitation: 0 + } + }, + { + name: "minecraft:small_end_islands", + id: 40, + element: { + precipitation: "none", + effects: { + sky_color: 0, + water_fog_color: 329011, + fog_color: 10518688, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.5f, + scale: 0.2f, + downfall: 0.5f, + category: "the_end", + has_precipitation: 0 + } + }, + { + name: "minecraft:end_midlands", + id: 41, + element: { + precipitation: "none", + effects: { + sky_color: 0, + water_fog_color: 329011, + fog_color: 10518688, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.5f, + scale: 0.2f, + downfall: 0.5f, + category: "the_end", + has_precipitation: 0 + } + }, + { + name: "minecraft:end_highlands", + id: 42, + element: { + precipitation: "none", + effects: { + sky_color: 0, + water_fog_color: 329011, + fog_color: 10518688, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.5f, + scale: 0.2f, + downfall: 0.5f, + category: "the_end", + has_precipitation: 0 + } + }, + { + name: "minecraft:end_barrens", + id: 43, + element: { + precipitation: "none", + effects: { + sky_color: 0, + water_fog_color: 329011, + fog_color: 10518688, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.5f, + scale: 0.2f, + downfall: 0.5f, + category: "the_end", + has_precipitation: 0 + } + }, + { + name: "minecraft:warm_ocean", + id: 44, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 270131, + fog_color: 12638463, + water_color: 4445678, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.0f, + temperature: 0.5f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + has_precipitation: 0 + } + }, + { + name: "minecraft:lukewarm_ocean", + id: 45, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 267827, + fog_color: 12638463, + water_color: 4566514, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.0f, + temperature: 0.5f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + has_precipitation: 0 + } + }, + { + name: "minecraft:cold_ocean", + id: 46, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4020182, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.0f, + temperature: 0.5f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + has_precipitation: 0 + } + }, + { + name: "minecraft:deep_warm_ocean", + id: 47, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 270131, + fog_color: 12638463, + water_color: 4445678, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.8f, + temperature: 0.5f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + has_precipitation: 0 + } + }, + { + name: "minecraft:deep_lukewarm_ocean", + id: 48, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 267827, + fog_color: 12638463, + water_color: 4566514, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.8f, + temperature: 0.5f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + has_precipitation: 0 + } + }, + { + name: "minecraft:deep_cold_ocean", + id: 49, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4020182, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.8f, + temperature: 0.5f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + has_precipitation: 0 + } + }, + { + name: "minecraft:deep_frozen_ocean", + id: 50, + element: { + precipitation: "rain", + effects: { + sky_color: 8103167, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 3750089, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -1.8f, + temperature: 0.5f, + scale: 0.1f, + downfall: 0.5f, + category: "ocean", + temperature_modifier: "frozen", + has_precipitation: 0 + } + }, + { + name: "minecraft:the_void", + id: 127, + element: { + precipitation: "none", + effects: { + sky_color: 8103167, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.5f, + scale: 0.2f, + downfall: 0.5f, + category: "none", + has_precipitation: 0 + } + }, + { + name: "minecraft:sunflower_plains", + id: 129, + element: { + precipitation: "rain", + effects: { + sky_color: 7907327, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.125f, + temperature: 0.8f, + scale: 0.05f, + downfall: 0.4f, + category: "plains", + has_precipitation: 0 + } + }, + { + name: "minecraft:desert_lakes", + id: 130, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.225f, + temperature: 2.0f, + scale: 0.25f, + downfall: 0.0f, + category: "desert", + has_precipitation: 0 + } + }, + { + name: "minecraft:gravelly_mountains", + id: 131, + element: { + precipitation: "rain", + effects: { + sky_color: 8233727, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 1.0f, + temperature: 0.2f, + scale: 0.5f, + downfall: 0.3f, + category: "extreme_hills", + has_precipitation: 0 + } + }, + { + name: "minecraft:flower_forest", + id: 132, + element: { + precipitation: "rain", + effects: { + sky_color: 7972607, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.7f, + scale: 0.4f, + downfall: 0.8f, + category: "forest", + has_precipitation: 0 + } + }, + { + name: "minecraft:taiga_mountains", + id: 133, + element: { + precipitation: "rain", + effects: { + sky_color: 8233983, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.3f, + temperature: 0.25f, + scale: 0.4f, + downfall: 0.8f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:swamp_hills", + id: 134, + element: { + precipitation: "rain", + effects: { + grass_color_modifier: "swamp", + sky_color: 7907327, + foliage_color: 6975545, + water_fog_color: 2302743, + fog_color: 12638463, + water_color: 6388580, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: -0.1f, + temperature: 0.8f, + scale: 0.3f, + downfall: 0.9f, + category: "swamp", + has_precipitation: 0 + } + }, + { + name: "minecraft:ice_spikes", + id: 140, + element: { + precipitation: "snow", + effects: { + sky_color: 8364543, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.425f, + temperature: 0.0f, + scale: 0.45000002f, + downfall: 0.5f, + category: "icy", + has_precipitation: 0 + } + }, + { + name: "minecraft:modified_jungle", + id: 149, + element: { + precipitation: "rain", + effects: { + sky_color: 7842047, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: 0.95f, + scale: 0.4f, + downfall: 0.9f, + category: "jungle", + has_precipitation: 0 + } + }, + { + name: "minecraft:modified_jungle_edge", + id: 151, + element: { + precipitation: "rain", + effects: { + sky_color: 7842047, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: 0.95f, + scale: 0.4f, + downfall: 0.8f, + category: "jungle", + has_precipitation: 0 + } + }, + { + name: "minecraft:tall_birch_forest", + id: 155, + element: { + precipitation: "rain", + effects: { + sky_color: 8037887, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: 0.6f, + scale: 0.4f, + downfall: 0.6f, + category: "forest", + has_precipitation: 0 + } + }, + { + name: "minecraft:tall_birch_hills", + id: 156, + element: { + precipitation: "rain", + effects: { + sky_color: 8037887, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.55f, + temperature: 0.6f, + scale: 0.5f, + downfall: 0.6f, + category: "forest", + has_precipitation: 0 + } + }, + { + name: "minecraft:dark_forest_hills", + id: 157, + element: { + precipitation: "rain", + effects: { + grass_color_modifier: "dark_forest", + sky_color: 7972607, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: 0.7f, + scale: 0.4f, + downfall: 0.8f, + category: "forest", + has_precipitation: 0 + } + }, + { + name: "minecraft:snowy_taiga_mountains", + id: 158, + element: { + precipitation: "snow", + effects: { + sky_color: 8625919, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4020182, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.3f, + temperature: -0.5f, + scale: 0.4f, + downfall: 0.4f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:giant_spruce_taiga", + id: 160, + element: { + precipitation: "rain", + effects: { + sky_color: 8233983, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: 0.25f, + scale: 0.2f, + downfall: 0.8f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:giant_spruce_taiga_hills", + id: 161, + element: { + precipitation: "rain", + effects: { + sky_color: 8233983, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.2f, + temperature: 0.25f, + scale: 0.2f, + downfall: 0.8f, + category: "taiga", + has_precipitation: 0 + } + }, + { + name: "minecraft:modified_gravelly_mountains", + id: 162, + element: { + precipitation: "rain", + effects: { + sky_color: 8233727, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 1.0f, + temperature: 0.2f, + scale: 0.5f, + downfall: 0.3f, + category: "extreme_hills", + has_precipitation: 0 + } + }, + { + name: "minecraft:shattered_savanna", + id: 163, + element: { + precipitation: "none", + effects: { + sky_color: 7776767, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.3625f, + temperature: 1.1f, + scale: 1.225f, + downfall: 0.0f, + category: "savanna", + has_precipitation: 0 + } + }, + { + name: "minecraft:shattered_savanna_plateau", + id: 164, + element: { + precipitation: "none", + effects: { + sky_color: 7776511, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 1.05f, + temperature: 1.0f, + scale: 1.2125001f, + downfall: 0.0f, + category: "savanna", + has_precipitation: 0 + } + }, + { + name: "minecraft:eroded_badlands", + id: 165, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + grass_color: 9470285, + foliage_color: 10387789, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 2.0f, + scale: 0.2f, + downfall: 0.0f, + category: "mesa", + has_precipitation: 0 + } + }, + { + name: "minecraft:modified_wooded_badlands_plateau", + id: 166, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + grass_color: 9470285, + foliage_color: 10387789, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 2.0f, + scale: 0.3f, + downfall: 0.0f, + category: "mesa", + has_precipitation: 0 + } + }, + { + name: "minecraft:modified_badlands_plateau", + id: 167, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + grass_color: 9470285, + foliage_color: 10387789, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 2.0f, + scale: 0.3f, + downfall: 0.0f, + category: "mesa", + has_precipitation: 0 + } + }, + { + name: "minecraft:bamboo_jungle", + id: 168, + element: { + precipitation: "rain", + effects: { + sky_color: 7842047, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.95f, + scale: 0.2f, + downfall: 0.9f, + category: "jungle", + has_precipitation: 0 + } + }, + { + name: "minecraft:bamboo_jungle_hills", + id: 169, + element: { + precipitation: "rain", + effects: { + sky_color: 7842047, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.45f, + temperature: 0.95f, + scale: 0.3f, + downfall: 0.9f, + category: "jungle", + has_precipitation: 0 + } + }, + { + name: "minecraft:soul_sand_valley", + id: 170, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + ambient_sound: "minecraft:ambient.soul_sand_valley.loop", + additions_sound: { + sound: "minecraft:ambient.soul_sand_valley.additions", + tick_chance: 0.0111d + }, + particle: { + probability: 0.00625f, + options: { + type: "minecraft:ash" + } + }, + water_fog_color: 329011, + fog_color: 1787717, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.soul_sand_valley.mood", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 2.0f, + scale: 0.2f, + downfall: 0.0f, + category: "nether", + has_precipitation: 0 + } + }, + { + name: "minecraft:crimson_forest", + id: 171, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + ambient_sound: "minecraft:ambient.crimson_forest.loop", + additions_sound: { + sound: "minecraft:ambient.crimson_forest.additions", + tick_chance: 0.0111d + }, + particle: { + probability: 0.025f, + options: { + type: "minecraft:crimson_spore" + } + }, + water_fog_color: 329011, + fog_color: 3343107, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.crimson_forest.mood", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 2.0f, + scale: 0.2f, + downfall: 0.0f, + category: "nether", + has_precipitation: 0 + } + }, + { + name: "minecraft:warped_forest", + id: 172, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + ambient_sound: "minecraft:ambient.warped_forest.loop", + additions_sound: { + sound: "minecraft:ambient.warped_forest.additions", + tick_chance: 0.0111d + }, + particle: { + probability: 0.01428f, + options: { + type: "minecraft:warped_spore" + } + }, + water_fog_color: 329011, + fog_color: 1705242, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.warped_forest.mood", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 2.0f, + scale: 0.2f, + downfall: 0.0f, + category: "nether", + has_precipitation: 0 + } + }, + { + name: "minecraft:basalt_deltas", + id: 173, + element: { + precipitation: "none", + effects: { + sky_color: 7254527, + ambient_sound: "minecraft:ambient.basalt_deltas.loop", + additions_sound: { + sound: "minecraft:ambient.basalt_deltas.additions", + tick_chance: 0.0111d + }, + particle: { + probability: 0.118093334f, + options: { + type: "minecraft:white_ash" + } + }, + water_fog_color: 4341314, + fog_color: 6840176, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.basalt_deltas.mood", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 2.0f, + scale: 0.2f, + downfall: 0.0f, + category: "nether", + has_precipitation: 0 + } + }, + { + name: "minecraft:pale_garden", + id: 4, + element: { + precipitation: "rain", + effects: { + sky_color: 7972607, + water_fog_color: 329011, + fog_color: 12638463, + water_color: 4159204, + mood_sound: { + tick_delay: 6000, + offset: 2.0d, + sound: "minecraft:ambient.cave", + block_search_extent: 8 + } + }, + depth: 0.1f, + temperature: 0.7f, + scale: 0.2f, + downfall: 0.8f, + category: "forest", + has_precipitation: 0 + } + } + ] + }, + "minecraft:wolf_variant": { + type: "minecraft:wolf_variant", + value: [ + { + name: "minecraft:default", + id: 0, + element: { + wild_texture: "minecraft:entity/wolf/wolf", + angry_texture: "minecraft:entity/wolf/wolf_angry", + tame_texture: "minecraft:entity/wolf/wolf_tame", + biomes: "minecraft:taiga" + } + } + ] + }, + "minecraft:painting_variant": { + type: "minecraft:painting_variant", + value: [ + { + name: "minecraft:default", + id: 0, + element: { + asset_id: "minecraft:backyard", + height: 3, + width: 4 + } + } + ] + } +}