diff --git a/Cargo.lock b/Cargo.lock index 79c2d81ce..9a62acda8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -357,9 +357,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.58" +version = "1.2.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e928d4b69e3077709075a938a05ffbedfa53a84c8f766efbf8220bb1ff60e1" +checksum = "b7a4d3ec6524d28a329fc53654bbadc9bdd7b0431f5d65f1a56ffb28a1ee5283" dependencies = [ "find-msvc-tools", "jobserver", @@ -491,9 +491,9 @@ dependencies = [ [[package]] name = "cmov" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0758edba32d61d1fd9f4d69491b47604b91ee2f7e6b33de7e54ca4ebe55dc3" +checksum = "3f88a43d011fc4a6876cb7344703e297c71dda42494fee094d5f7c76bf13f746" [[package]] name = "cobs" @@ -982,9 +982,9 @@ dependencies = [ [[package]] name = "ctutils" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1005a6d4446f5120ef475ad3d2af2b30c49c2c9c6904258e3bb30219bebed5e4" +checksum = "7d5515a3834141de9eafb9717ad39eea8247b5674e6066c404e8c4b365d2a29e" dependencies = [ "cmov", ] @@ -1663,18 +1663,18 @@ checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" [[package]] name = "hybrid-array" -version = "0.4.8" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8655f91cd07f2b9d0c24137bd650fe69617773435ee5ec83022377777ce65ef1" +checksum = "3944cf8cf766b40e2a1a333ee5e9b563f854d5fa49d6a8ca2764e97c6eddb214" dependencies = [ "typenum", ] [[package]] name = "hyper" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab2d4f250c3d7b1c9fcdff1cece94ea4e2dfbec68614f7b87cb205f24ca9d11" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" dependencies = [ "atomic-waker", "bytes", @@ -1687,7 +1687,6 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "pin-utils", "smallvec", "tokio", "want", @@ -1752,12 +1751,13 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" dependencies = [ "displaydoc", "potential_utf", + "utf8_iter", "yoke", "zerofrom", "zerovec", @@ -1765,9 +1765,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" dependencies = [ "displaydoc", "litemap", @@ -1778,9 +1778,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -1792,15 +1792,15 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" [[package]] name = "icu_properties" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" dependencies = [ "icu_collections", "icu_locale_core", @@ -1812,15 +1812,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.2" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" [[package]] name = "icu_provider" -version = "2.1.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" dependencies = [ "displaydoc", "icu_locale_core", @@ -1874,9 +1874,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +checksum = "45a8a2b9cb3e0b0c1803dbb0758ffac5de2f425b23c28f518faabd9d805342ff" dependencies = [ "equivalent", "hashbrown 0.16.1", @@ -1971,9 +1971,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.92" +version = "0.3.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc4c90f45aa2e6eacbe8645f77fdea542ac97a494bcd117a67df9ff4d611f995" +checksum = "2e04e2ef80ce82e13552136fabeef8a5ed1f985a96805761cbb9a2c34e7664d9" dependencies = [ "once_cell", "wasm-bindgen", @@ -1999,9 +1999,9 @@ checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" [[package]] name = "libc" -version = "0.2.183" +version = "0.2.184" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" +checksum = "48f5d2a454e16a5ea0f4ced81bd44e4cfc7bd3a507b61887c99fd3538b28e4af" [[package]] name = "libloading" @@ -2042,9 +2042,9 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" [[package]] name = "litrs" @@ -2487,12 +2487,6 @@ version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - [[package]] name = "pkcs1" version = "0.8.0-rc.4" @@ -2565,9 +2559,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" dependencies = [ "zerovec", ] @@ -2766,7 +2760,7 @@ version = "0.1.0-dev+26.1" dependencies = [ "pumpkin-util", "serde", - "toml 1.1.0+spec-1.1.0", + "toml 1.1.2+spec-1.1.0", "tracing", "uuid", ] @@ -3354,9 +3348,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876ac351060d4f882bb1032b6369eb0aef79ad9df1ea8bc404874d8cc3d0cd98" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" dependencies = [ "serde_core", ] @@ -3737,9 +3731,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" dependencies = [ "displaydoc", "zerovec", @@ -3757,9 +3751,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.50.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +checksum = "2bd1c4c0fc4a7ab90fc15ef6daaa3ec3b893f004f915f2392557ed23237820cd" dependencies = [ "bytes", "libc", @@ -3774,9 +3768,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.6.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c55a2eff8b69ce66c84f85e1da1c233edc36ceb85a2058d11b0d6a3c7e7569c" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", @@ -3825,17 +3819,17 @@ dependencies = [ [[package]] name = "toml" -version = "1.1.0+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8195ca05e4eb728f4ba94f3e3291661320af739c4e43779cbdfae82ab239fcc" +checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" dependencies = [ "indexmap", "serde_core", "serde_spanned", - "toml_datetime 1.1.0+spec-1.1.0", + "toml_datetime 1.1.1+spec-1.1.0", "toml_parser", "toml_writer", - "winnow 1.0.0", + "winnow 1.0.1", ] [[package]] @@ -3849,27 +3843,27 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "1.1.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97251a7c317e03ad83774a8752a7e81fb6067740609f75ea2b585b569a59198f" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" dependencies = [ "serde_core", ] [[package]] name = "toml_parser" -version = "1.1.0+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2334f11ee363607eb04df9b8fc8a13ca1715a72ba8662a26ac285c98aabb4011" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" dependencies = [ - "winnow 1.0.0", + "winnow 1.0.1", ] [[package]] name = "toml_writer" -version = "1.1.0+spec-1.1.0" +version = "1.1.1+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d282ade6016312faf3e41e57ebbba0c073e4056dab1232ab1cb624199648f8ed" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" [[package]] name = "tonic" @@ -4219,9 +4213,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.115" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6523d69017b7633e396a89c5efab138161ed5aafcbc8d3e5c5a42ae38f50495a" +checksum = "0551fc1bb415591e3372d0bc4780db7e587d84e2a7e79da121051c5c4b89d0b0" dependencies = [ "cfg-if", "once_cell", @@ -4232,9 +4226,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.115" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e3a6c758eb2f701ed3d052ff5737f5bfe6614326ea7f3bbac7156192dc32e67" +checksum = "7fbdf9a35adf44786aecd5ff89b4563a90325f9da0923236f6104e603c7e86be" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4242,9 +4236,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.115" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "921de2737904886b52bcbb237301552d05969a6f9c40d261eb0533c8b055fedf" +checksum = "dca9693ef2bab6d4e6707234500350d8dad079eb508dca05530c85dc3a529ff2" dependencies = [ "bumpalo", "proc-macro2", @@ -4255,9 +4249,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.115" +version = "0.2.117" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a93e946af942b58934c604527337bad9ae33ba1d5c6900bbb41c2c07c2364a93" +checksum = "39129a682a6d2d841b6c429d0c51e5cb0ed1a03829d8b3d1e69a011e62cb3d3b" dependencies = [ "unicode-ident", ] @@ -4303,6 +4297,16 @@ dependencies = [ "wasmparser 0.245.1", ] +[[package]] +name = "wasm-encoder" +version = "0.246.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e1929aad146499e47362c876fcbcbb0363f730951d93438f511178626e999a8" +dependencies = [ + "leb128fmt", + "wasmparser 0.246.1", +] + [[package]] name = "wasm-metadata" version = "0.244.0" @@ -4687,24 +4691,24 @@ dependencies = [ [[package]] name = "wast" -version = "245.0.1" +version = "246.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cf1149285569120b8ce39db8b465e8a2b55c34cbb586bd977e43e2bc7300bf" +checksum = "96cf2d50bc7478dcca61d00df4dadf922ef46c5924db20a97e6daaf09fe1cb09" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width", - "wasm-encoder 0.245.1", + "wasm-encoder 0.246.1", ] [[package]] name = "wat" -version = "1.245.1" +version = "1.246.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd48d1679b6858988cb96b154dda0ec5bbb09275b71db46057be37332d5477be" +checksum = "723f2473b47f738c12fc11c8e0bb8b27ce7cf9c78cf1a29dadbc2d34a2513292" dependencies = [ - "wast 245.0.1", + "wast 246.0.1", ] [[package]] @@ -4964,9 +4968,9 @@ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" [[package]] name = "winnow" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90e88e4667264a994d34e6d1ab2d26d398dcdca8b7f52bec8668957517fc7d8" +checksum = "09dac053f1cd375980747450bfc7250c264eaae0583872e845c0c7cd578872b5" [[package]] name = "winx" @@ -5170,15 +5174,15 @@ dependencies = [ [[package]] name = "writeable" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" [[package]] name = "yoke" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" dependencies = [ "stable_deref_trait", "yoke-derive", @@ -5187,9 +5191,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.8.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", @@ -5219,18 +5223,18 @@ dependencies = [ [[package]] name = "zerofrom" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", @@ -5246,9 +5250,9 @@ checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" [[package]] name = "zerotrie" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" dependencies = [ "displaydoc", "yoke", @@ -5257,9 +5261,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" dependencies = [ "yoke", "zerofrom", @@ -5268,9 +5272,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 62f5abcae..4ef28588a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -90,7 +90,7 @@ debug = true strip = false [workspace.dependencies] -tokio = { version = "1.50", default-features = false } +tokio = { version = "1.51", default-features = false } syn = { version = "2.0", default-features = false, features = ["printing"] } diff --git a/assets/entities.json b/assets/entities.json index 53324959a..6b6721e40 100644 --- a/assets/entities.json +++ b/assets/entities.json @@ -1 +1 @@ -{"acacia_boat":{"id":0,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"acacia_chest_boat":{"id":1,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"allay":{"id":2,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.35,0.6],"eye_height":0.36,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/allay"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"area_effect_cloud":{"id":3,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":true,"category":"MISC","can_spawn_far_from_player":true,"dimension":[6.0,0.5],"eye_height":0.425,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"armadillo":{"id":4,"max_health":12.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.7,0.65],"eye_height":0.26,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/armadillo"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"armor_stand":{"id":5,"max_health":20.0,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,1.975],"eye_height":1.7775,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/armor_stand"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"arrow":{"id":6,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.13,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"axolotl":{"id":7,"max_health":14.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"AXOLOTLS","can_spawn_far_from_player":false,"dimension":[0.75,0.42],"eye_height":0.2751,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/axolotl"},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bamboo_chest_raft":{"id":8,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bamboo_raft":{"id":9,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bat":{"id":10,"max_health":6.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"AMBIENT","can_spawn_far_from_player":false,"dimension":[0.5,0.9],"eye_height":0.45,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/bat"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bee":{"id":11,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.7,0.6],"eye_height":0.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/bee"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"birch_boat":{"id":12,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"birch_chest_boat":{"id":13,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"blaze":{"id":14,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.8],"eye_height":1.53,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/blaze","pools":[{"entries":[{"name":"minecraft:blaze_rod","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"block_display":{"id":15,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bogged":{"id":16,"max_health":16.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.99],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/bogged","pools":[{"entries":[{"name":"minecraft:arrow","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:tipped_arrow","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"limit":1,"function":"minecraft:enchanted_count_increase"},{"id":"minecraft:poison","function":"minecraft:set_potion"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"breeze":{"id":17,"max_health":30.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.77],"eye_height":1.3452,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/breeze","pools":[{"entries":[{"name":"minecraft:breeze_rod","functions":[{"count":{"min":1.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":1.0,"max":2.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"breeze_wind_charge":{"id":18,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"camel":{"id":19,"max_health":32.0,"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.7,2.375],"eye_height":2.275,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/camel"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"camel_husk":{"id":20,"max_health":32.0,"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.7,2.375],"eye_height":2.275,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/camel_husk","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":2.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cat":{"id":21,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,0.7],"eye_height":0.35,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/cat","pools":[{"entries":[{"name":"minecraft:string","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cave_spider":{"id":22,"max_health":12.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.7,0.5],"eye_height":0.45,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/cave_spider","pools":[{"entries":[{"name":"minecraft:string","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:spider_eye","functions":[{"count":{"min":-1.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cherry_boat":{"id":23,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cherry_chest_boat":{"id":24,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"chest_minecart":{"id":25,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"chicken":{"id":26,"max_health":4.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.4,0.7],"eye_height":0.644,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/chicken","pools":[{"entries":[{"name":"minecraft:feather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:chicken","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cod":{"id":27,"max_health":3.0,"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_AMBIENT","can_spawn_far_from_player":false,"dimension":[0.5,0.3],"eye_height":0.195,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/cod","pools":[{"entries":[{"name":"minecraft:cod","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone_meal","type":"minecraft:item"}],"conditions":[{"chance":0.05,"condition":"minecraft:random_chance"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"copper_golem":{"id":28,"max_health":12.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.49,0.98],"eye_height":0.8125,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/copper_golem","pools":[{"entries":[{"name":"minecraft:copper_ingot","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"command_block_minecart":{"id":29,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cow":{"id":30,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.4],"eye_height":1.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/cow","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:beef","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"creaking":{"id":31,"max_health":1.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.9,2.7],"eye_height":2.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/creaking"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"creeper":{"id":32,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.7],"eye_height":1.445,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/creeper","pools":[{"entries":[{"name":"minecraft:gunpowder","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:creeper_drop_music_discs","expand":true,"type":"minecraft:tag"}],"conditions":[{"predicate":{"type":"#minecraft:skeletons"},"entity":"attacker","condition":"minecraft:entity_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"dark_oak_boat":{"id":33,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"dark_oak_chest_boat":{"id":34,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"dolphin":{"id":35,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_CREATURE","can_spawn_far_from_player":false,"dimension":[0.9,0.6],"eye_height":0.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/dolphin","pools":[{"entries":[{"name":"minecraft:cod","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"donkey":{"id":36,"max_health":53.0,"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3964844,1.5],"eye_height":1.425,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/donkey","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"dragon_fireball":{"id":37,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.0,1.0],"eye_height":0.85,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"drowned":{"id":38,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/drowned","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:copper_ingot","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.11,"enchanted_chance":{"base":0.13,"per_level_above_first":0.02,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"egg":{"id":39,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"elder_guardian":{"id":40,"max_health":80.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.9975,1.9975],"eye_height":0.99875,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/elder_guardian","pools":[{"entries":[{"name":"minecraft:prismarine_shard","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:cod","weight":3,"functions":[{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"},{"name":"minecraft:prismarine_crystals","weight":2,"functions":[{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"type":"minecraft:empty"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:wet_sponge","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"value":"minecraft:gameplay/fishing/fish","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:loot_table"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"weight":4,"type":"minecraft:empty"},{"name":"minecraft:tide_armor_trim_smithing_template","type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"enderman":{"id":41,"max_health":40.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,2.9],"eye_height":2.55,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/enderman","pools":[{"entries":[{"name":"minecraft:ender_pearl","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"endermite":{"id":42,"max_health":8.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.4,0.3],"eye_height":0.13,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/endermite"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ender_dragon":{"id":43,"max_health":200.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[16.0,8.0],"eye_height":6.8,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/ender_dragon"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ender_pearl":{"id":44,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"end_crystal":{"id":45,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":true,"category":"MISC","can_spawn_far_from_player":true,"dimension":[2.0,2.0],"eye_height":1.7,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"evoker":{"id":46,"max_health":24.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.6575,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/evoker","pools":[{"entries":[{"name":"minecraft:totem_of_undying","type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:emerald","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"evoker_fangs":{"id":47,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.8],"eye_height":0.68,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"experience_bottle":{"id":48,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"experience_orb":{"id":49,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.425,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"eye_of_ender":{"id":50,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"falling_block":{"id":51,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.98],"eye_height":0.83300006,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"fireball":{"id":52,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.0,1.0],"eye_height":0.85,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"firework_rocket":{"id":53,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"fox":{"id":54,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,0.7],"eye_height":0.4,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/fox"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"frog":{"id":55,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.425,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/frog"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"furnace_minecart":{"id":56,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ghast":{"id":57,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":1,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[4.0,4.0],"eye_height":2.6,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/ghast","pools":[{"entries":[{"name":"minecraft:ghast_tear","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:gunpowder","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:music_disc_tears","type":"minecraft:item"}],"conditions":[{"predicate":{"tags":[{"id":"minecraft:is_projectile","expected":true}],"direct_entity":{"type":"minecraft:fireball"}},"condition":"minecraft:damage_source_properties"},{"condition":"minecraft:killed_by_player"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"happy_ghast":{"id":58,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":1,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[4.0,4.0],"eye_height":2.6,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/happy_ghast"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"giant":{"id":59,"max_health":100.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[3.6,12.0],"eye_height":10.44,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/giant"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"glow_item_frame":{"id":60,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"glow_squid":{"id":61,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"UNDERGROUND_WATER_CREATURE","can_spawn_far_from_player":false,"dimension":[0.8,0.8],"eye_height":0.4,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/glow_squid","pools":[{"entries":[{"name":"minecraft:glow_ink_sac","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"goat":{"id":62,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.3],"eye_height":1.105,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/goat"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"guardian":{"id":63,"max_health":30.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.85,0.85],"eye_height":0.425,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/guardian","pools":[{"entries":[{"name":"minecraft:prismarine_shard","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:cod","weight":2,"functions":[{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"},{"name":"minecraft:prismarine_crystals","weight":2,"functions":[{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"type":"minecraft:empty"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"value":"minecraft:gameplay/fishing/fish","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:loot_table"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"hoglin":{"id":64,"max_health":40.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.3964844,1.4],"eye_height":1.19,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/hoglin","pools":[{"entries":[{"name":"minecraft:porkchop","functions":[{"count":{"min":2.0,"max":4.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"hopper_minecart":{"id":65,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"horse":{"id":66,"max_health":53.0,"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3964844,1.6],"eye_height":1.52,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/horse","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"husk":{"id":67,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/husk","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:rabbit_foot","conditions":[{"predicate":{"vehicle":{"type":"minecraft:camel_husk"}},"entity":"this","condition":"minecraft:entity_properties"}],"functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:iron_ingot","type":"minecraft:item"},{"name":"minecraft:carrot","type":"minecraft:item"},{"name":"minecraft:potato","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"illusioner":{"id":68,"max_health":32.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.6575,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/illusioner"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"interaction":{"id":69,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"iron_golem":{"id":70,"max_health":100.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.4,2.7],"eye_height":2.295,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/iron_golem","pools":[{"entries":[{"name":"minecraft:poppy","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:iron_ingot","functions":[{"count":{"min":3.0,"max":5.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"item":{"id":71,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"item_display":{"id":72,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"item_frame":{"id":73,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"jungle_boat":{"id":74,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"jungle_chest_boat":{"id":75,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"leash_knot":{"id":76,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":false,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.375,0.5],"eye_height":0.0625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"lightning_bolt":{"id":77,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":false,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"llama":{"id":78,"max_health":53.0,"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.87],"eye_height":1.7765,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/llama","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"llama_spit":{"id":79,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"magma_cube":{"id":80,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.52,0.52],"eye_height":0.325,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/magma_cube","pools":[{"entries":[{"name":"minecraft:magma_cream","conditions":[{"term":{"predicate":{"source_entity":{"type":"minecraft:frog"}},"condition":"minecraft:damage_source_properties"},"condition":"minecraft:inverted"},{"predicate":{"type_specific":{"size":{"min":2},"type":"minecraft:slime"}},"entity":"this","condition":"minecraft:entity_properties"}],"functions":[{"count":{"min":-2.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:pearlescent_froglight","conditions":[{"predicate":{"source_entity":{"type":"minecraft:frog","components":{"minecraft:frog/variant":"minecraft:warm"}}},"condition":"minecraft:damage_source_properties"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"},{"name":"minecraft:verdant_froglight","conditions":[{"predicate":{"source_entity":{"type":"minecraft:frog","components":{"minecraft:frog/variant":"minecraft:cold"}}},"condition":"minecraft:damage_source_properties"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"},{"name":"minecraft:ochre_froglight","conditions":[{"predicate":{"source_entity":{"type":"minecraft:frog","components":{"minecraft:frog/variant":"minecraft:temperate"}}},"condition":"minecraft:damage_source_properties"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mangrove_boat":{"id":81,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mangrove_chest_boat":{"id":82,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mannequin":{"id":83,"max_health":20.0,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.6,1.8],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/mannequin"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"marker":{"id":84,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"minecart":{"id":85,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mooshroom":{"id":86,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.4],"eye_height":1.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/mooshroom","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:beef","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mule":{"id":87,"max_health":53.0,"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3964844,1.6],"eye_height":1.52,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/mule","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"nautilus":{"id":88,"max_health":15.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_CREATURE","can_spawn_far_from_player":false,"dimension":[0.875,0.95],"eye_height":0.2751,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/nautilus","pools":[{"entries":[{"name":"minecraft:nautilus_shell","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.05,"enchanted_chance":{"base":0.060000002,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"oak_boat":{"id":89,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"oak_chest_boat":{"id":90,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ocelot":{"id":91,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,0.7],"eye_height":0.595,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/ocelot"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING"}},"ominous_item_spawner":{"id":92,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"painting":{"id":93,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.425,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pale_oak_boat":{"id":94,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pale_oak_chest_boat":{"id":95,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"panda":{"id":96,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3,1.25],"eye_height":1.0625,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/panda","pools":[{"entries":[{"name":"minecraft:bamboo","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"parched":{"id":97,"max_health":16.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.99],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/parched","pools":[{"entries":[{"name":"minecraft:arrow","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:tipped_arrow","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"limit":1,"function":"minecraft:enchanted_count_increase"},{"id":"minecraft:weakness","function":"minecraft:set_potion"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"parrot":{"id":98,"max_health":6.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.5,0.9],"eye_height":0.54,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/parrot","pools":[{"entries":[{"name":"minecraft:feather","functions":[{"count":{"min":1.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING"}},"phantom":{"id":99,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.9,0.5],"eye_height":0.175,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/phantom","pools":[{"entries":[{"name":"minecraft:phantom_membrane","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pig":{"id":100,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,0.9],"eye_height":0.765,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/pig","pools":[{"entries":[{"name":"minecraft:porkchop","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"piglin":{"id":101,"max_health":16.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.79,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/piglin"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"piglin_brute":{"id":102,"max_health":50.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.79,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/piglin_brute"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pillager":{"id":103,"max_health":24.0,"attackable":true,"mob":true,"limit_per_chunk":1,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":true,"dimension":[0.6,1.95],"eye_height":1.6575,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/pillager","pools":[{"entries":[{"name":"minecraft:ominous_bottle","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"},{"amplifier":{"min":0.0,"max":4.0,"type":"minecraft:uniform"},"function":"minecraft:set_ominous_bottle_amplifier"}],"type":"minecraft:item"}],"conditions":[{"predicate":{"type_specific":{"is_captain":true,"type":"minecraft:raider"}},"entity":"this","condition":"minecraft:entity_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"polar_bear":{"id":104,"max_health":30.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.4,1.4],"eye_height":1.19,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/polar_bear","pools":[{"entries":[{"name":"minecraft:cod","weight":3,"functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:salmon","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"splash_potion":{"id":105,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"lingering_potion":{"id":106,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pufferfish":{"id":107,"max_health":3.0,"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_AMBIENT","can_spawn_far_from_player":false,"dimension":[0.7,0.7],"eye_height":0.455,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/pufferfish","pools":[{"entries":[{"name":"minecraft:pufferfish","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone_meal","type":"minecraft:item"}],"conditions":[{"chance":0.05,"condition":"minecraft:random_chance"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"rabbit":{"id":108,"max_health":3.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.49,0.6],"eye_height":0.59,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/rabbit","pools":[{"entries":[{"name":"minecraft:rabbit_hide","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:rabbit","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:rabbit_foot","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.1,"enchanted_chance":{"base":0.13,"per_level_above_first":0.03,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ravager":{"id":109,"max_health":100.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.95,2.2],"eye_height":1.8700001,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/ravager","pools":[{"entries":[{"name":"minecraft:saddle","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"salmon":{"id":110,"max_health":3.0,"attackable":true,"mob":true,"limit_per_chunk":5,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_AMBIENT","can_spawn_far_from_player":false,"dimension":[0.7,0.4],"eye_height":0.26,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/salmon","pools":[{"entries":[{"name":"minecraft:salmon","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone_meal","type":"minecraft:item"}],"conditions":[{"chance":0.05,"condition":"minecraft:random_chance"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"sheep":{"id":111,"max_health":8.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.3],"eye_height":1.235,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/sheep","pools":[{"entries":[{"name":"minecraft:mutton","functions":[{"count":{"min":1.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"children":[{"value":"minecraft:entities/sheep/white","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"white"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/orange","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"orange"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/magenta","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"magenta"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/light_blue","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"light_blue"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/yellow","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"yellow"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/lime","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"lime"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/pink","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"pink"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/gray","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"gray"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/light_gray","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"light_gray"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/cyan","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"cyan"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/purple","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"purple"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/blue","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"blue"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/brown","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"brown"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/green","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"green"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/red","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"red"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/black","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"black"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"}],"type":"minecraft:alternatives"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"shulker":{"id":112,"max_health":30.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":true,"dimension":[1.0,1.0],"eye_height":0.5,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/shulker","pools":[{"entries":[{"name":"minecraft:shulker_shell","type":"minecraft:item"}],"conditions":[{"unenchanted_chance":0.5,"enchanted_chance":{"base":0.5625,"per_level_above_first":0.0625,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"shulker_bullet":{"id":113,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.265625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"silverfish":{"id":114,"max_health":8.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.4,0.3],"eye_height":0.13,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/silverfish"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"skeleton":{"id":115,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.99],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/skeleton","pools":[{"entries":[{"name":"minecraft:arrow","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"skeleton_horse":{"id":116,"max_health":15.0,"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3964844,1.6],"eye_height":1.52,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/skeleton_horse","pools":[{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"slime":{"id":117,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.52,0.52],"eye_height":0.325,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/slime","pools":[{"entries":[{"name":"minecraft:slime_ball","conditions":[{"term":{"predicate":{"source_entity":{"type":"minecraft:frog"}},"condition":"minecraft:damage_source_properties"},"condition":"minecraft:inverted"}],"functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:slime_ball","conditions":[{"predicate":{"source_entity":{"type":"minecraft:frog"}},"condition":"minecraft:damage_source_properties"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"conditions":[{"predicate":{"type_specific":{"size":1,"type":"minecraft:slime"}},"entity":"this","condition":"minecraft:entity_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"small_fireball":{"id":118,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.265625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"sniffer":{"id":119,"max_health":14.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.9,1.75],"eye_height":1.05,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/sniffer"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"snowball":{"id":120,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"snow_golem":{"id":121,"max_health":4.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.7,1.9],"eye_height":1.7,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/snow_golem","pools":[{"entries":[{"name":"minecraft:snowball","functions":[{"count":{"min":0.0,"max":15.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spawner_minecart":{"id":122,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spectral_arrow":{"id":123,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.13,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spider":{"id":124,"max_health":16.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.4,0.9],"eye_height":0.65,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/spider","pools":[{"entries":[{"name":"minecraft:string","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:spider_eye","functions":[{"count":{"min":-1.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spruce_boat":{"id":125,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spruce_chest_boat":{"id":126,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"squid":{"id":127,"max_health":10.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_CREATURE","can_spawn_far_from_player":false,"dimension":[0.8,0.8],"eye_height":0.4,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/squid","pools":[{"entries":[{"name":"minecraft:ink_sac","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"stray":{"id":128,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.99],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/stray","pools":[{"entries":[{"name":"minecraft:arrow","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:tipped_arrow","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"limit":1,"function":"minecraft:enchanted_count_increase"},{"id":"minecraft:slowness","function":"minecraft:set_potion"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"strider":{"id":129,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.7],"eye_height":1.445,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/strider","pools":[{"entries":[{"name":"minecraft:string","functions":[{"count":{"min":2.0,"max":5.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_LAVA","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"tadpole":{"id":130,"max_health":6.0,"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.4,0.3],"eye_height":0.19500001,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/tadpole"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"text_display":{"id":131,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"tnt":{"id":132,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":true,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.98],"eye_height":0.15,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"tnt_minecart":{"id":133,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"trader_llama":{"id":134,"max_health":53.0,"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.87],"eye_height":1.7765,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/trader_llama","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"trident":{"id":135,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.13,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"tropical_fish":{"id":136,"max_health":3.0,"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_AMBIENT","can_spawn_far_from_player":false,"dimension":[0.5,0.4],"eye_height":0.26,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/tropical_fish","pools":[{"entries":[{"name":"minecraft:tropical_fish","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone_meal","type":"minecraft:item"}],"conditions":[{"chance":0.05,"condition":"minecraft:random_chance"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"turtle":{"id":137,"max_health":30.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.2,0.4],"eye_height":0.34,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/turtle","pools":[{"entries":[{"name":"minecraft:seagrass","weight":3,"functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bowl","type":"minecraft:item"}],"conditions":[{"predicate":{"tags":[{"id":"minecraft:is_lightning","expected":true}]},"condition":"minecraft:damage_source_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"vex":{"id":138,"max_health":14.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.4,0.8],"eye_height":0.51875,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/vex"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"villager":{"id":139,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.6,1.95],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/villager"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"vindicator":{"id":140,"max_health":24.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.6575,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/vindicator","pools":[{"entries":[{"name":"minecraft:emerald","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wandering_trader":{"id":141,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,1.95],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/wandering_trader"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"warden":{"id":142,"max_health":500.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.9,2.9],"eye_height":2.4650002,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/warden","pools":[{"entries":[{"name":"minecraft:sculk_catalyst","type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wind_charge":{"id":143,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"witch":{"id":144,"max_health":26.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/witch","pools":[{"entries":[{"name":"minecraft:glowstone_dust","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:sugar","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:spider_eye","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:glass_bottle","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:gunpowder","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:stick","weight":2,"functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"bonus_rolls":0.0},{"entries":[{"name":"minecraft:redstone","functions":[{"count":{"min":4.0,"max":8.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wither":{"id":145,"max_health":300.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.9,3.5],"eye_height":2.9750001,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/wither"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wither_skeleton":{"id":146,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.7,2.4],"eye_height":2.1,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/wither_skeleton","pools":[{"entries":[{"name":"minecraft:coal","functions":[{"count":{"min":-1.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:wither_skeleton_skull","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wither_skull":{"id":147,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.265625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wolf":{"id":148,"max_health":8.0,"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,0.85],"eye_height":0.68,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/wolf"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zoglin":{"id":149,"max_health":40.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.3964844,1.4],"eye_height":1.19,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zoglin","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombie":{"id":150,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombie","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:red_mushroom","conditions":[{"predicate":{"vehicle":{"type":"minecraft:zombie_horse"}},"entity":"this","condition":"minecraft:entity_properties"}],"functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:iron_ingot","type":"minecraft:item"},{"name":"minecraft:carrot","type":"minecraft:item"},{"name":"minecraft:potato","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:music_disc_lava_chicken","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"predicate":{"flags":{"is_baby":true},"vehicle":{"type":"minecraft:chicken"}},"entity":"this","condition":"minecraft:entity_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombie_horse":{"id":151,"max_health":25.0,"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.3964844,1.6],"eye_height":1.52,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombie_horse","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":2.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombie_nautilus":{"id":152,"max_health":15.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.875,0.95],"eye_height":0.2751,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombie_nautilus","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombie_villager":{"id":153,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombie_villager","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:iron_ingot","type":"minecraft:item"},{"name":"minecraft:carrot","type":"minecraft:item"},{"name":"minecraft:potato","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombified_piglin":{"id":154,"max_health":20.0,"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.79,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombified_piglin","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:gold_nugget","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:gold_ingot","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"player":{"id":155,"summonable":false,"saveable":false,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.6,1.8],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/player"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"fishing_bobber":{"id":156,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":false,"saveable":false,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}}} \ No newline at end of file +{"acacia_boat":{"id":0,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"acacia_chest_boat":{"id":1,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"allay":{"id":2,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.10000000149011612},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:flying_speed":0.10000000149011612},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.35,0.6],"eye_height":0.36,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/allay"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"area_effect_cloud":{"id":3,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":true,"category":"MISC","can_spawn_far_from_player":true,"dimension":[6.0,0.5],"eye_height":0.425,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"armadillo":{"id":4,"attributes":[{"minecraft:max_health":12.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.14},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.7,0.65],"eye_height":0.26,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/armadillo"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"armor_stand":{"id":5,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0}],"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,1.975],"eye_height":1.7775,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/armor_stand"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"arrow":{"id":6,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.13,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"axolotl":{"id":7,"attributes":[{"minecraft:max_health":14.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":1.0},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"AXOLOTLS","can_spawn_far_from_player":false,"dimension":[0.75,0.42],"eye_height":0.2751,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/axolotl"},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bamboo_chest_raft":{"id":8,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bamboo_raft":{"id":9,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bat":{"id":10,"attributes":[{"minecraft:max_health":6.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"AMBIENT","can_spawn_far_from_player":false,"dimension":[0.5,0.9],"eye_height":0.45,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/bat"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bee":{"id":11,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:flying_speed":0.6000000238418579},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.7,0.6],"eye_height":0.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/bee"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"birch_boat":{"id":12,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"birch_chest_boat":{"id":13,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"blaze":{"id":14,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.23000000417232513},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":48.0},{"minecraft:attack_damage":6.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.8],"eye_height":1.53,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/blaze","pools":[{"entries":[{"name":"minecraft:blaze_rod","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"block_display":{"id":15,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"bogged":{"id":16,"attributes":[{"minecraft:max_health":16.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.99],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/bogged","pools":[{"entries":[{"name":"minecraft:arrow","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:tipped_arrow","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"limit":1,"function":"minecraft:enchanted_count_increase"},{"id":"minecraft:poison","function":"minecraft:set_potion"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"breeze":{"id":17,"attributes":[{"minecraft:max_health":30.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.6299999952316284},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":24.0},{"minecraft:attack_damage":3.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.77],"eye_height":1.3452,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/breeze","pools":[{"entries":[{"name":"minecraft:breeze_rod","functions":[{"count":{"min":1.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":1.0,"max":2.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"breeze_wind_charge":{"id":18,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"camel":{"id":19,"attributes":[{"minecraft:max_health":32.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.09000000357627869},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.5},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":6.0},{"minecraft:fall_damage_multiplier":0.5},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.7,2.375],"eye_height":2.275,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/camel"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"camel_husk":{"id":20,"attributes":[{"minecraft:max_health":32.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.09000000357627869},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.5},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":6.0},{"minecraft:fall_damage_multiplier":0.5},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.7,2.375],"eye_height":2.275,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/camel_husk","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":2.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cat":{"id":21,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":3.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,0.7],"eye_height":0.35,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/cat","pools":[{"entries":[{"name":"minecraft:string","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cave_spider":{"id":22,"attributes":[{"minecraft:max_health":12.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.7,0.5],"eye_height":0.45,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/cave_spider","pools":[{"entries":[{"name":"minecraft:string","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:spider_eye","functions":[{"count":{"min":-1.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cherry_boat":{"id":23,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cherry_chest_boat":{"id":24,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"chest_minecart":{"id":25,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"chicken":{"id":26,"attributes":[{"minecraft:max_health":4.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.4,0.7],"eye_height":0.644,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/chicken","pools":[{"entries":[{"name":"minecraft:feather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:chicken","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cod":{"id":27,"attributes":[{"minecraft:max_health":3.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_AMBIENT","can_spawn_far_from_player":false,"dimension":[0.5,0.3],"eye_height":0.195,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/cod","pools":[{"entries":[{"name":"minecraft:cod","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone_meal","type":"minecraft:item"}],"conditions":[{"chance":0.05,"condition":"minecraft:random_chance"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"copper_golem":{"id":28,"attributes":[{"minecraft:max_health":12.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.20000000298023224},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.49,0.98],"eye_height":0.8125,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/copper_golem","pools":[{"entries":[{"name":"minecraft:copper_ingot","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"command_block_minecart":{"id":29,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"cow":{"id":30,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.20000000298023224},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.4],"eye_height":1.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/cow","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:beef","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"creaking":{"id":31,"attributes":[{"minecraft:max_health":1.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.4000000059604645},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0625},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":32.0},{"minecraft:attack_damage":3.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.9,2.7],"eye_height":2.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/creaking"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"creeper":{"id":32,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.7],"eye_height":1.445,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/creeper","pools":[{"entries":[{"name":"minecraft:gunpowder","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:creeper_drop_music_discs","expand":true,"type":"minecraft:tag"}],"conditions":[{"predicate":{"type":"#minecraft:skeletons"},"entity":"attacker","condition":"minecraft:entity_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"dark_oak_boat":{"id":33,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"dark_oak_chest_boat":{"id":34,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"dolphin":{"id":35,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":1.2000000476837158},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":3.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_CREATURE","can_spawn_far_from_player":false,"dimension":[0.9,0.6],"eye_height":0.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/dolphin","pools":[{"entries":[{"name":"minecraft:cod","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"donkey":{"id":36,"attributes":[{"minecraft:max_health":53.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.17499999701976776},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":6.0},{"minecraft:fall_damage_multiplier":0.5},{"minecraft:jump_strength":0.5},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3964844,1.5],"eye_height":1.425,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/donkey","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"dragon_fireball":{"id":37,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.0,1.0],"eye_height":0.85,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"drowned":{"id":38,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.23000000417232513},{"minecraft:armor":2.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":35.0},{"minecraft:attack_damage":3.0},{"minecraft:spawn_reinforcements":0.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/drowned","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:copper_ingot","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.11,"enchanted_chance":{"base":0.13,"per_level_above_first":0.02,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"egg":{"id":39,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"elder_guardian":{"id":40,"attributes":[{"minecraft:max_health":80.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":8.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.9975,1.9975],"eye_height":0.99875,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/elder_guardian","pools":[{"entries":[{"name":"minecraft:prismarine_shard","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:cod","weight":3,"functions":[{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"},{"name":"minecraft:prismarine_crystals","weight":2,"functions":[{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"type":"minecraft:empty"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:wet_sponge","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"value":"minecraft:gameplay/fishing/fish","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:loot_table"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"weight":4,"type":"minecraft:empty"},{"name":"minecraft:tide_armor_trim_smithing_template","type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"enderman":{"id":41,"attributes":[{"minecraft:max_health":40.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":64.0},{"minecraft:attack_damage":7.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,2.9],"eye_height":2.55,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/enderman","pools":[{"entries":[{"name":"minecraft:ender_pearl","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"endermite":{"id":42,"attributes":[{"minecraft:max_health":8.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.4,0.3],"eye_height":0.13,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/endermite"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ender_dragon":{"id":43,"attributes":[{"minecraft:max_health":200.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":16.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[16.0,8.0],"eye_height":6.8,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/ender_dragon"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ender_pearl":{"id":44,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"end_crystal":{"id":45,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":true,"category":"MISC","can_spawn_far_from_player":true,"dimension":[2.0,2.0],"eye_height":1.7,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"evoker":{"id":46,"attributes":[{"minecraft:max_health":24.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.5},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":12.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.6575,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/evoker","pools":[{"entries":[{"name":"minecraft:totem_of_undying","type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:emerald","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"evoker_fangs":{"id":47,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.8],"eye_height":0.68,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"experience_bottle":{"id":48,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"experience_orb":{"id":49,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.425,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"eye_of_ender":{"id":50,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"falling_block":{"id":51,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.98],"eye_height":0.83300006,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"fireball":{"id":52,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.0,1.0],"eye_height":0.85,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"firework_rocket":{"id":53,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"fox":{"id":54,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":5.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":32.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,0.7],"eye_height":0.4,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/fox"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"frog":{"id":55,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":1.0},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.425,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/frog"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"furnace_minecart":{"id":56,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ghast":{"id":57,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":8.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":100.0},{"minecraft:flying_speed":0.06}],"attackable":true,"mob":true,"limit_per_chunk":1,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[4.0,4.0],"eye_height":2.6,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/ghast","pools":[{"entries":[{"name":"minecraft:ghast_tear","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:gunpowder","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:music_disc_tears","type":"minecraft:item"}],"conditions":[{"predicate":{"tags":[{"id":"minecraft:is_projectile","expected":true}],"direct_entity":{"type":"minecraft:fireball"}},"condition":"minecraft:damage_source_properties"},{"condition":"minecraft:killed_by_player"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"happy_ghast":{"id":58,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.05},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":8.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":16.0},{"minecraft:flying_speed":0.05}],"attackable":true,"mob":true,"limit_per_chunk":1,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[4.0,4.0],"eye_height":2.6,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/happy_ghast"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"giant":{"id":59,"attributes":[{"minecraft:max_health":100.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.5},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":16.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":50.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[3.6,12.0],"eye_height":10.44,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/giant"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"glow_item_frame":{"id":60,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"glow_squid":{"id":61,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"UNDERGROUND_WATER_CREATURE","can_spawn_far_from_player":false,"dimension":[0.8,0.8],"eye_height":0.4,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/glow_squid","pools":[{"entries":[{"name":"minecraft:glow_ink_sac","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"goat":{"id":62,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.20000000298023224},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.3],"eye_height":1.105,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/goat"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"guardian":{"id":63,"attributes":[{"minecraft:max_health":30.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.5},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":6.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.85,0.85],"eye_height":0.425,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/guardian","pools":[{"entries":[{"name":"minecraft:prismarine_shard","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:cod","weight":2,"functions":[{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"},{"name":"minecraft:prismarine_crystals","weight":2,"functions":[{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"type":"minecraft:empty"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"value":"minecraft:gameplay/fishing/fish","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:loot_table"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"hoglin":{"id":64,"attributes":[{"minecraft:max_health":40.0},{"minecraft:knockback_resistance":0.6000000238418579},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":1.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":6.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.3964844,1.4],"eye_height":1.19,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/hoglin","pools":[{"entries":[{"name":"minecraft:porkchop","functions":[{"count":{"min":2.0,"max":4.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"hopper_minecart":{"id":65,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"horse":{"id":66,"attributes":[{"minecraft:max_health":53.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.22499999403953552},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":6.0},{"minecraft:fall_damage_multiplier":0.5},{"minecraft:jump_strength":0.7},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3964844,1.6],"eye_height":1.52,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/horse","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"husk":{"id":67,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.23000000417232513},{"minecraft:armor":2.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":35.0},{"minecraft:attack_damage":3.0},{"minecraft:spawn_reinforcements":0.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/husk","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:rabbit_foot","conditions":[{"predicate":{"vehicle":{"type":"minecraft:camel_husk"}},"entity":"this","condition":"minecraft:entity_properties"}],"functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:iron_ingot","type":"minecraft:item"},{"name":"minecraft:carrot","type":"minecraft:item"},{"name":"minecraft:potato","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"illusioner":{"id":68,"attributes":[{"minecraft:max_health":32.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.5},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":18.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.6575,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/illusioner"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"interaction":{"id":69,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"iron_golem":{"id":70,"attributes":[{"minecraft:max_health":100.0},{"minecraft:knockback_resistance":1.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":15.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.4,2.7],"eye_height":2.295,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/iron_golem","pools":[{"entries":[{"name":"minecraft:poppy","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:iron_ingot","functions":[{"count":{"min":3.0,"max":5.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"item":{"id":71,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"item_display":{"id":72,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"item_frame":{"id":73,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"jungle_boat":{"id":74,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"jungle_chest_boat":{"id":75,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"leash_knot":{"id":76,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":false,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.375,0.5],"eye_height":0.0625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"lightning_bolt":{"id":77,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":false,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"llama":{"id":78,"attributes":[{"minecraft:max_health":53.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.17499999701976776},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":6.0},{"minecraft:fall_damage_multiplier":0.5},{"minecraft:jump_strength":0.5},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.87],"eye_height":1.7765,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/llama","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"llama_spit":{"id":79,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"magma_cube":{"id":80,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.20000000298023224},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.52,0.52],"eye_height":0.325,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/magma_cube","pools":[{"entries":[{"name":"minecraft:magma_cream","conditions":[{"term":{"predicate":{"source_entity":{"type":"minecraft:frog"}},"condition":"minecraft:damage_source_properties"},"condition":"minecraft:inverted"},{"predicate":{"type_specific":{"size":{"min":2},"type":"minecraft:slime"}},"entity":"this","condition":"minecraft:entity_properties"}],"functions":[{"count":{"min":-2.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:pearlescent_froglight","conditions":[{"predicate":{"source_entity":{"type":"minecraft:frog","components":{"minecraft:frog/variant":"minecraft:warm"}}},"condition":"minecraft:damage_source_properties"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"},{"name":"minecraft:verdant_froglight","conditions":[{"predicate":{"source_entity":{"type":"minecraft:frog","components":{"minecraft:frog/variant":"minecraft:cold"}}},"condition":"minecraft:damage_source_properties"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"},{"name":"minecraft:ochre_froglight","conditions":[{"predicate":{"source_entity":{"type":"minecraft:frog","components":{"minecraft:frog/variant":"minecraft:temperate"}}},"condition":"minecraft:damage_source_properties"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mangrove_boat":{"id":81,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mangrove_chest_boat":{"id":82,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mannequin":{"id":83,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0}],"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.6,1.8],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/mannequin"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"marker":{"id":84,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"minecart":{"id":85,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mooshroom":{"id":86,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.20000000298023224},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.4],"eye_height":1.3,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/mooshroom","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:beef","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"mule":{"id":87,"attributes":[{"minecraft:max_health":53.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.17499999701976776},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":6.0},{"minecraft:fall_damage_multiplier":0.5},{"minecraft:jump_strength":0.5},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3964844,1.6],"eye_height":1.52,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/mule","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"nautilus":{"id":88,"attributes":[{"minecraft:max_health":15.0},{"minecraft:knockback_resistance":0.30000001192092896},{"minecraft:movement_speed":1.0},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":3.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_CREATURE","can_spawn_far_from_player":false,"dimension":[0.875,0.95],"eye_height":0.2751,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/nautilus","pools":[{"entries":[{"name":"minecraft:nautilus_shell","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.05,"enchanted_chance":{"base":0.060000002,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"oak_boat":{"id":89,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"oak_chest_boat":{"id":90,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ocelot":{"id":91,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":3.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,0.7],"eye_height":0.595,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/ocelot"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING"}},"ominous_item_spawner":{"id":92,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"painting":{"id":93,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.425,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pale_oak_boat":{"id":94,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pale_oak_chest_boat":{"id":95,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"panda":{"id":96,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.15000000596046448},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":6.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3,1.25],"eye_height":1.0625,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/panda","pools":[{"entries":[{"name":"minecraft:bamboo","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"parched":{"id":97,"attributes":[{"minecraft:max_health":16.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.99],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/parched","pools":[{"entries":[{"name":"minecraft:arrow","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:tipped_arrow","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"limit":1,"function":"minecraft:enchanted_count_increase"},{"id":"minecraft:weakness","function":"minecraft:set_potion"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"parrot":{"id":98,"attributes":[{"minecraft:max_health":6.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.20000000298023224},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:flying_speed":0.4000000059604645},{"minecraft:attack_damage":3.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.5,0.9],"eye_height":0.54,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/parrot","pools":[{"entries":[{"name":"minecraft:feather","functions":[{"count":{"min":1.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING"}},"phantom":{"id":99,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.9,0.5],"eye_height":0.175,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/phantom","pools":[{"entries":[{"name":"minecraft:phantom_membrane","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pig":{"id":100,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,0.9],"eye_height":0.765,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/pig","pools":[{"entries":[{"name":"minecraft:porkchop","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"piglin":{"id":101,"attributes":[{"minecraft:max_health":16.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.3499999940395355},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":5.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.79,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/piglin"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"piglin_brute":{"id":102,"attributes":[{"minecraft:max_health":50.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.3499999940395355},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":12.0},{"minecraft:attack_damage":7.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.79,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/piglin_brute"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pillager":{"id":103,"attributes":[{"minecraft:max_health":24.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.3499999940395355},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":32.0},{"minecraft:attack_damage":5.0}],"attackable":true,"mob":true,"limit_per_chunk":1,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":true,"dimension":[0.6,1.95],"eye_height":1.6575,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/pillager","pools":[{"entries":[{"name":"minecraft:ominous_bottle","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"},{"amplifier":{"min":0.0,"max":4.0,"type":"minecraft:uniform"},"function":"minecraft:set_ominous_bottle_amplifier"}],"type":"minecraft:item"}],"conditions":[{"predicate":{"type_specific":{"is_captain":true,"type":"minecraft:raider"}},"entity":"this","condition":"minecraft:entity_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"polar_bear":{"id":104,"attributes":[{"minecraft:max_health":30.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":20.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":6.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.4,1.4],"eye_height":1.19,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/polar_bear","pools":[{"entries":[{"name":"minecraft:cod","weight":3,"functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:salmon","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"splash_potion":{"id":105,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"lingering_potion":{"id":106,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"pufferfish":{"id":107,"attributes":[{"minecraft:max_health":3.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_AMBIENT","can_spawn_far_from_player":false,"dimension":[0.7,0.7],"eye_height":0.455,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/pufferfish","pools":[{"entries":[{"name":"minecraft:pufferfish","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone_meal","type":"minecraft:item"}],"conditions":[{"chance":0.05,"condition":"minecraft:random_chance"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"rabbit":{"id":108,"attributes":[{"minecraft:max_health":3.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":3.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.49,0.6],"eye_height":0.59,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/rabbit","pools":[{"entries":[{"name":"minecraft:rabbit_hide","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:rabbit","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:rabbit_foot","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.1,"enchanted_chance":{"base":0.13,"per_level_above_first":0.03,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"ravager":{"id":109,"attributes":[{"minecraft:max_health":100.0},{"minecraft:knockback_resistance":0.75},{"minecraft:movement_speed":0.3},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":1.5},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":32.0},{"minecraft:attack_damage":12.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.95,2.2],"eye_height":1.8700001,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/ravager","pools":[{"entries":[{"name":"minecraft:saddle","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"salmon":{"id":110,"attributes":[{"minecraft:max_health":3.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":5,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_AMBIENT","can_spawn_far_from_player":false,"dimension":[0.7,0.4],"eye_height":0.26,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/salmon","pools":[{"entries":[{"name":"minecraft:salmon","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone_meal","type":"minecraft:item"}],"conditions":[{"chance":0.05,"condition":"minecraft:random_chance"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"sheep":{"id":111,"attributes":[{"minecraft:max_health":8.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.23000000417232513},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.3],"eye_height":1.235,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/sheep","pools":[{"entries":[{"name":"minecraft:mutton","functions":[{"count":{"min":1.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"children":[{"value":"minecraft:entities/sheep/white","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"white"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/orange","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"orange"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/magenta","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"magenta"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/light_blue","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"light_blue"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/yellow","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"yellow"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/lime","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"lime"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/pink","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"pink"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/gray","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"gray"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/light_gray","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"light_gray"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/cyan","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"cyan"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/purple","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"purple"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/blue","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"blue"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/brown","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"brown"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/green","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"green"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/red","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"red"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"},{"value":"minecraft:entities/sheep/black","conditions":[{"predicate":{"type_specific":{"sheared":false,"type":"minecraft:sheep"},"components":{"minecraft:sheep/color":"black"}},"entity":"this","condition":"minecraft:entity_properties"}],"type":"minecraft:loot_table"}],"type":"minecraft:alternatives"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"shulker":{"id":112,"attributes":[{"minecraft:max_health":30.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":true,"dimension":[1.0,1.0],"eye_height":0.5,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/shulker","pools":[{"entries":[{"name":"minecraft:shulker_shell","type":"minecraft:item"}],"conditions":[{"unenchanted_chance":0.5,"enchanted_chance":{"base":0.5625,"per_level_above_first":0.0625,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"shulker_bullet":{"id":113,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.265625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"silverfish":{"id":114,"attributes":[{"minecraft:max_health":8.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":1.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.4,0.3],"eye_height":0.13,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/silverfish"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"skeleton":{"id":115,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.99],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/skeleton","pools":[{"entries":[{"name":"minecraft:arrow","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"skeleton_horse":{"id":116,"attributes":[{"minecraft:max_health":15.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.20000000298023224},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":6.0},{"minecraft:fall_damage_multiplier":0.5},{"minecraft:jump_strength":0.7},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.3964844,1.6],"eye_height":1.52,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/skeleton_horse","pools":[{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"slime":{"id":117,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.52,0.52],"eye_height":0.325,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/slime","pools":[{"entries":[{"name":"minecraft:slime_ball","conditions":[{"term":{"predicate":{"source_entity":{"type":"minecraft:frog"}},"condition":"minecraft:damage_source_properties"},"condition":"minecraft:inverted"}],"functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:slime_ball","conditions":[{"predicate":{"source_entity":{"type":"minecraft:frog"}},"condition":"minecraft:damage_source_properties"}],"functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"conditions":[{"predicate":{"type_specific":{"size":1,"type":"minecraft:slime"}},"entity":"this","condition":"minecraft:entity_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"small_fireball":{"id":118,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.265625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"sniffer":{"id":119,"attributes":[{"minecraft:max_health":14.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.10000000149011612},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.9,1.75],"eye_height":1.05,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/sniffer"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"snowball":{"id":120,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"snow_golem":{"id":121,"attributes":[{"minecraft:max_health":4.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.20000000298023224},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.7,1.9],"eye_height":1.7,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/snow_golem","pools":[{"entries":[{"name":"minecraft:snowball","functions":[{"count":{"min":0.0,"max":15.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spawner_minecart":{"id":122,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spectral_arrow":{"id":123,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.13,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spider":{"id":124,"attributes":[{"minecraft:max_health":16.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.4,0.9],"eye_height":0.65,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/spider","pools":[{"entries":[{"name":"minecraft:string","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:spider_eye","functions":[{"count":{"min":-1.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spruce_boat":{"id":125,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"spruce_chest_boat":{"id":126,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[1.375,0.5625],"eye_height":0.5625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"squid":{"id":127,"attributes":[{"minecraft:max_health":10.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_CREATURE","can_spawn_far_from_player":false,"dimension":[0.8,0.8],"eye_height":0.4,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/squid","pools":[{"entries":[{"name":"minecraft:ink_sac","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"stray":{"id":128,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.99],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/stray","pools":[{"entries":[{"name":"minecraft:arrow","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:tipped_arrow","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"limit":1,"function":"minecraft:enchanted_count_increase"},{"id":"minecraft:slowness","function":"minecraft:set_potion"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"strider":{"id":129,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.17499999701976776},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.7],"eye_height":1.445,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/strider","pools":[{"entries":[{"name":"minecraft:string","functions":[{"count":{"min":2.0,"max":5.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_LAVA","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"tadpole":{"id":130,"attributes":[{"minecraft:max_health":6.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":1.0},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.4,0.3],"eye_height":0.19500001,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/tadpole"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"text_display":{"id":131,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.0,0.0],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"tnt":{"id":132,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":true,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.98],"eye_height":0.15,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"tnt_minecart":{"id":133,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.98,0.7],"eye_height":0.595,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"trader_llama":{"id":134,"attributes":[{"minecraft:max_health":53.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.17499999701976776},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":6.0},{"minecraft:fall_damage_multiplier":0.5},{"minecraft:jump_strength":0.5},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.9,1.87],"eye_height":1.7765,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/trader_llama","pools":[{"entries":[{"name":"minecraft:leather","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"trident":{"id":135,"attackable":false,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.5,0.5],"eye_height":0.13,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"tropical_fish":{"id":136,"attributes":[{"minecraft:max_health":3.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"WATER_AMBIENT","can_spawn_far_from_player":false,"dimension":[0.5,0.4],"eye_height":0.26,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/tropical_fish","pools":[{"entries":[{"name":"minecraft:tropical_fish","functions":[{"count":1.0,"add":false,"function":"minecraft:set_count"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone_meal","type":"minecraft:item"}],"conditions":[{"chance":0.05,"condition":"minecraft:random_chance"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"IN_WATER","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"turtle":{"id":137,"attributes":[{"minecraft:max_health":30.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[1.2,0.4],"eye_height":0.34,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/turtle","pools":[{"entries":[{"name":"minecraft:seagrass","weight":3,"functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bowl","type":"minecraft:item"}],"conditions":[{"predicate":{"tags":[{"id":"minecraft:is_lightning","expected":true}]},"condition":"minecraft:damage_source_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"vex":{"id":138,"attributes":[{"minecraft:max_health":14.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":4.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.4,0.8],"eye_height":0.51875,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/vex"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"villager":{"id":139,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.5},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.6,1.95],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/villager"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"vindicator":{"id":140,"attributes":[{"minecraft:max_health":24.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.3499999940395355},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":12.0},{"minecraft:attack_damage":5.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.6575,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/vindicator","pools":[{"entries":[{"name":"minecraft:emerald","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wandering_trader":{"id":141,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.7},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,1.95],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/wandering_trader"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"warden":{"id":142,"attributes":[{"minecraft:max_health":500.0},{"minecraft:knockback_resistance":1.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":1.5},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":24.0},{"minecraft:attack_damage":30.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.9,2.9],"eye_height":2.4650002,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/warden","pools":[{"entries":[{"name":"minecraft:sculk_catalyst","type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wind_charge":{"id":143,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.0,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"witch":{"id":144,"attributes":[{"minecraft:max_health":26.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/witch","pools":[{"entries":[{"name":"minecraft:glowstone_dust","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:sugar","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:spider_eye","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:glass_bottle","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:gunpowder","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"},{"name":"minecraft:stick","weight":2,"functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"bonus_rolls":0.0},{"entries":[{"name":"minecraft:redstone","functions":[{"count":{"min":4.0,"max":8.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wither":{"id":145,"attributes":[{"minecraft:max_health":300.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.6000000238418579},{"minecraft:armor":4.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":40.0},{"minecraft:attack_damage":2.0},{"minecraft:flying_speed":0.6000000238418579}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.9,3.5],"eye_height":2.9750001,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/wither"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wither_skeleton":{"id":146,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.25},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":2.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.7,2.4],"eye_height":2.1,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/wither_skeleton","pools":[{"entries":[{"name":"minecraft:coal","functions":[{"count":{"min":-1.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:bone","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:wither_skeleton_skull","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wither_skull":{"id":147,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":true,"saveable":true,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.3125,0.3125],"eye_height":0.265625,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"wolf":{"id":148,"attributes":[{"minecraft:max_health":8.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":4.0}],"attackable":true,"mob":true,"limit_per_chunk":8,"summonable":true,"saveable":true,"fire_immune":false,"category":"CREATURE","can_spawn_far_from_player":true,"dimension":[0.6,0.85],"eye_height":0.68,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/wolf"},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zoglin":{"id":149,"attributes":[{"minecraft:max_health":40.0},{"minecraft:knockback_resistance":0.6000000238418579},{"minecraft:movement_speed":0.30000001192092896},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":1.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:attack_damage":6.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.3964844,1.4],"eye_height":1.19,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zoglin","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":1.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombie":{"id":150,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.23000000417232513},{"minecraft:armor":2.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":35.0},{"minecraft:attack_damage":3.0},{"minecraft:spawn_reinforcements":0.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombie","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:red_mushroom","conditions":[{"predicate":{"vehicle":{"type":"minecraft:zombie_horse"}},"entity":"this","condition":"minecraft:entity_properties"}],"functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:iron_ingot","type":"minecraft:item"},{"name":"minecraft:carrot","type":"minecraft:item"},{"name":"minecraft:potato","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:music_disc_lava_chicken","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"predicate":{"flags":{"is_baby":true},"vehicle":{"type":"minecraft:chicken"}},"entity":"this","condition":"minecraft:entity_properties"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombie_horse":{"id":151,"attributes":[{"minecraft:max_health":25.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.22499999403953552},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":1.0},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":6.0},{"minecraft:fall_damage_multiplier":0.5},{"minecraft:jump_strength":0.7},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0}],"attackable":true,"mob":true,"limit_per_chunk":6,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[1.3964844,1.6],"eye_height":1.52,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombie_horse","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":2.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombie_nautilus":{"id":152,"attributes":[{"minecraft:max_health":15.0},{"minecraft:knockback_resistance":0.30000001192092896},{"minecraft:movement_speed":1.100000023841858},{"minecraft:armor":0.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":16.0},{"minecraft:tempt_range":10.0},{"minecraft:attack_damage":3.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.875,0.95],"eye_height":0.2751,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombie_nautilus","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":3.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombie_villager":{"id":153,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.23000000417232513},{"minecraft:armor":2.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":35.0},{"minecraft:attack_damage":3.0},{"minecraft:spawn_reinforcements":0.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":false,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.74,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombie_villager","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":2.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:iron_ingot","type":"minecraft:item"},{"name":"minecraft:carrot","type":"minecraft:item"},{"name":"minecraft:potato","functions":[{"conditions":[{"terms":[{"predicate":{"flags":{"is_on_fire":true}},"entity":"this","condition":"minecraft:entity_properties"},{"predicate":{"equipment":{"mainhand":{"predicates":{"minecraft:enchantments":[{"enchantments":"#minecraft:smelts_loot"}]}}}},"entity":"direct_attacker","condition":"minecraft:entity_properties"}],"condition":"minecraft:any_of"}],"function":"minecraft:furnace_smelt"}],"type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"zombified_piglin":{"id":154,"attributes":[{"minecraft:max_health":20.0},{"minecraft:knockback_resistance":0.0},{"minecraft:movement_speed":0.23000000417232513},{"minecraft:armor":2.0},{"minecraft:armor_toughness":0.0},{"minecraft:max_absorption":0.0},{"minecraft:step_height":0.6},{"minecraft:scale":1.0},{"minecraft:gravity":0.08},{"minecraft:safe_fall_distance":3.0},{"minecraft:fall_damage_multiplier":1.0},{"minecraft:jump_strength":0.41999998688697815},{"minecraft:entity_interaction_range":3.0},{"minecraft:oxygen_bonus":0.0},{"minecraft:burning_time":1.0},{"minecraft:explosion_knockback_resistance":0.0},{"minecraft:water_movement_efficiency":0.0},{"minecraft:movement_efficiency":0.0},{"minecraft:attack_knockback":0.0},{"minecraft:camera_distance":4.0},{"minecraft:waypoint_transmit_range":0.0},{"minecraft:follow_range":35.0},{"minecraft:attack_damage":5.0},{"minecraft:spawn_reinforcements":0.0}],"attackable":true,"mob":true,"limit_per_chunk":4,"summonable":true,"saveable":true,"fire_immune":true,"category":"MONSTER","can_spawn_far_from_player":false,"dimension":[0.6,1.95],"eye_height":1.79,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/zombified_piglin","pools":[{"entries":[{"name":"minecraft:rotten_flesh","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:gold_nugget","functions":[{"count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"add":false,"function":"minecraft:set_count"},{"enchantment":"minecraft:looting","count":{"min":0.0,"max":1.0,"type":"minecraft:uniform"},"function":"minecraft:enchanted_count_increase"}],"type":"minecraft:item"}],"rolls":1.0,"bonus_rolls":0.0},{"entries":[{"name":"minecraft:gold_ingot","type":"minecraft:item"}],"conditions":[{"condition":"minecraft:killed_by_player"},{"unenchanted_chance":0.025,"enchanted_chance":{"base":0.035,"per_level_above_first":0.01,"type":"minecraft:linear"},"enchantment":"minecraft:looting","condition":"minecraft:random_chance_with_enchanted_bonus"}],"rolls":1.0,"bonus_rolls":0.0}]},"spawn_restriction":{"location":"ON_GROUND","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"player":{"id":155,"summonable":false,"saveable":false,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.6,1.8],"eye_height":1.62,"loot_table":{"type":"minecraft:entity","random_sequence":"minecraft:entities/player"},"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}},"fishing_bobber":{"id":156,"attackable":true,"mob":false,"limit_per_chunk":0,"summonable":false,"saveable":false,"fire_immune":false,"category":"MISC","can_spawn_far_from_player":true,"dimension":[0.25,0.25],"eye_height":0.2125,"spawn_restriction":{"location":"UNRESTRICTED","heightmap":"MOTION_BLOCKING_NO_LEAVES"}}} \ No newline at end of file diff --git a/assets/meta_data_type/26_1_meta_data_type.json b/assets/meta_data_type/26_1_meta_data_type.json index 9e26dfeeb..9d5321083 100644 --- a/assets/meta_data_type/26_1_meta_data_type.json +++ b/assets/meta_data_type/26_1_meta_data_type.json @@ -1 +1 @@ -{} \ No newline at end of file +{"byte":0,"int":1,"long":2,"float":3,"string":4,"component":5,"optional_component":6,"item_stack":7,"block_state":14,"optional_block_state":15,"boolean":8,"particle":16,"particles":17,"rotations":9,"block_pos":10,"optional_block_pos":11,"direction":12,"optional_living_entity_reference":13,"optional_global_pos":33,"villager_data":18,"optional_unsigned_int":19,"pose":20,"cat_variant":21,"cat_sound_variant":22,"chicken_variant":30,"chicken_sound_variant":31,"cow_variant":23,"cow_sound_variant":24,"wolf_variant":25,"wolf_sound_variant":26,"frog_variant":27,"pig_variant":28,"pig_sound_variant":29,"zombie_nautilus_variant":32,"painting_variant":34,"armadillo_state":36,"sniffer_state":35,"weathering_copper_state":38,"copper_golem_state":37,"vector3":39,"quaternion":40,"resolvable_profile":41,"humanoid_arm":42} diff --git a/pumpkin-codegen/Cargo.lock b/pumpkin-codegen/Cargo.lock index 4958444e2..9046ab4ed 100644 --- a/pumpkin-codegen/Cargo.lock +++ b/pumpkin-codegen/Cargo.lock @@ -905,9 +905,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.50.0" +version = "1.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ad5e34374e03cfffefc301becb44e9dc3c17584f414349ebe29ed26661822d" +checksum = "2bd1c4c0fc4a7ab90fc15ef6daaa3ec3b893f004f915f2392557ed23237820cd" dependencies = [ "pin-project-lite", ] diff --git a/pumpkin-codegen/src/chunk_gen_settings.rs b/pumpkin-codegen/src/chunk_gen_settings.rs index 97dcb16ec..143f9c0de 100644 --- a/pumpkin-codegen/src/chunk_gen_settings.rs +++ b/pumpkin-codegen/src/chunk_gen_settings.rs @@ -381,9 +381,7 @@ impl ToTokens for MaterialConditionStruct { "floor" => quote!( pumpkin_util::math::vertical_surface_type::VerticalSurfaceType::Floor ), - _ => quote!( - pumpkin_util::math::vertical_surface_type::VerticalSurfaceType::Floor - ), + _ => quote!(panic!("Unknown surface type")), }; tokens.extend(quote!( diff --git a/pumpkin-codegen/src/entity_type.rs b/pumpkin-codegen/src/entity_type.rs index 525209d8d..aed141849 100644 --- a/pumpkin-codegen/src/entity_type.rs +++ b/pumpkin-codegen/src/entity_type.rs @@ -13,8 +13,7 @@ use crate::loot::LootTableStruct; pub struct EntityType { /// Numeric registry ID for this entity type. pub id: u16, - /// Base maximum health points, if defined. - pub max_health: Option, + pub attributes: Option>>, /// Whether this entity can be attacked by players or other entities. pub attackable: Option, /// Whether this entity is classified as a mob (affects spawning mechanics). @@ -85,11 +84,18 @@ impl ToTokens for NamedEntityType<'_> { let entity = self.1; let id = LitInt::new(&entity.id.to_string(), proc_macro2::Span::call_site()); - let max_health = if let Some(mh) = entity.max_health { - quote! { Some(#mh) } - } else { - quote! { None } - }; + let attribute_tokens = entity.attributes.as_ref().map(|vec| { + vec.iter().map(|map| { + let (key, value) = map.iter().next().unwrap(); + let key = key.strip_prefix("minecraft:").unwrap_or(key); + // Replace dots with underscores and uppercase for Enum naming (e.g. generic.max_health -> GENERIC_MAX_HEALTH) + let enum_variant = format_ident!("{}", key.replace('.', "_").to_uppercase()); + + quote! { (Attributes::#enum_variant, #value) } + }).collect::>() + }).unwrap_or_default(); + + let attributes_field = quote! { &[#(#attribute_tokens),*] }; let attackable = if let Some(a) = entity.attackable { quote! { Some(#a) } @@ -160,7 +166,7 @@ impl ToTokens for NamedEntityType<'_> { tokens.extend(quote! { EntityType { id: #id, - max_health: #max_health, + attributes: #attributes_field, attackable: #attackable, mob: #mob, saveable: #saveable, @@ -213,6 +219,7 @@ pub fn build() -> TokenStream { use crate::data_component_impl::IDSetContent; use crate::tag::Taggable; use crate::tag::RegistryKey; + use crate::attributes::Attributes; use pumpkin_util::loot_table::*; use pumpkin_util::HeightMap; use std::hash::Hash; @@ -220,7 +227,7 @@ pub fn build() -> TokenStream { #[derive(Debug, Clone)] pub struct EntityType { pub id: u16, - pub max_health: Option, + pub attributes: &'static [(Attributes, f64)], pub attackable: Option, pub mob: bool, pub saveable: bool, diff --git a/pumpkin-codegen/src/placed_feature.rs b/pumpkin-codegen/src/placed_feature.rs index 03f0681ee..ceec5e8e4 100644 --- a/pumpkin-codegen/src/placed_feature.rs +++ b/pumpkin-codegen/src/placed_feature.rs @@ -126,8 +126,7 @@ fn value_to_placement_modifier(v: &Value) -> TokenStream { quote! { PlacementModifier::FixedPlacement(vec![#(#positions),*]) } } "minecraft:heightmap" => { - let heightmap = - value_to_height_map(v["heightmap"].as_str().unwrap_or("MOTION_BLOCKING")); + let heightmap = value_to_height_map(v["heightmap"].as_str().unwrap()); quote! { PlacementModifier::Heightmap(HeightmapPlacementModifier { heightmap: #heightmap, diff --git a/pumpkin-data/src/generated/entity_type.rs b/pumpkin-data/src/generated/entity_type.rs index 440a43a66..0e83aed43 100644 --- a/pumpkin-data/src/generated/entity_type.rs +++ b/pumpkin-data/src/generated/entity_type.rs @@ -1,4 +1,5 @@ /* This file is generated. Do not edit manually. */ +use crate::attributes::Attributes; use crate::data_component_impl::IDSetContent; use crate::tag::RegistryKey; use crate::tag::Taggable; @@ -8,7 +9,7 @@ use std::hash::Hash; #[derive(Debug, Clone)] pub struct EntityType { pub id: u16, - pub max_health: Option, + pub attributes: &'static [(Attributes, f64)], pub attackable: Option, pub mob: bool, pub saveable: bool, @@ -145,7 +146,7 @@ impl MobCategory { impl EntityType { pub const ACACIA_BOAT: EntityType = EntityType { id: 0, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -165,7 +166,7 @@ impl EntityType { }; pub const ACACIA_CHEST_BOAT: EntityType = EntityType { id: 1, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -185,7 +186,32 @@ impl EntityType { }; pub const ALLAY: EntityType = EntityType { id: 2, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.10000000149011612f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::FLYING_SPEED, 0.10000000149011612f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -209,7 +235,7 @@ impl EntityType { }; pub const AREA_EFFECT_CLOUD: EntityType = EntityType { id: 3, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -229,7 +255,31 @@ impl EntityType { }; pub const ARMADILLO: EntityType = EntityType { id: 4, - max_health: Some(12f32), + attributes: &[ + (Attributes::MAX_HEALTH, 12f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.14f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -253,7 +303,29 @@ impl EntityType { }; pub const ARMOR_STAND: EntityType = EntityType { id: 5, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + ], attackable: Some(true), mob: false, saveable: true, @@ -277,7 +349,7 @@ impl EntityType { }; pub const ARROW: EntityType = EntityType { id: 6, - max_health: None, + attributes: &[], attackable: Some(false), mob: false, saveable: true, @@ -297,7 +369,32 @@ impl EntityType { }; pub const AXOLOTL: EntityType = EntityType { id: 7, - max_health: Some(14f32), + attributes: &[ + (Attributes::MAX_HEALTH, 14f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 1f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -321,7 +418,7 @@ impl EntityType { }; pub const BAMBOO_CHEST_RAFT: EntityType = EntityType { id: 8, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -341,7 +438,7 @@ impl EntityType { }; pub const BAMBOO_RAFT: EntityType = EntityType { id: 9, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -361,7 +458,30 @@ impl EntityType { }; pub const BAT: EntityType = EntityType { id: 10, - max_health: Some(6f32), + attributes: &[ + (Attributes::MAX_HEALTH, 6f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -385,7 +505,33 @@ impl EntityType { }; pub const BEE: EntityType = EntityType { id: 11, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::FLYING_SPEED, 0.6000000238418579f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -409,7 +555,7 @@ impl EntityType { }; pub const BIRCH_BOAT: EntityType = EntityType { id: 12, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -429,7 +575,7 @@ impl EntityType { }; pub const BIRCH_CHEST_BOAT: EntityType = EntityType { id: 13, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -449,7 +595,31 @@ impl EntityType { }; pub const BLAZE: EntityType = EntityType { id: 14, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.2300000041723251f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 48f64), + (Attributes::ATTACK_DAMAGE, 6f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -500,7 +670,7 @@ impl EntityType { }; pub const BLOCK_DISPLAY: EntityType = EntityType { id: 15, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -520,7 +690,31 @@ impl EntityType { }; pub const BOGGED: EntityType = EntityType { id: 16, - max_health: Some(16f32), + attributes: &[ + (Attributes::MAX_HEALTH, 16f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -633,7 +827,31 @@ impl EntityType { }; pub const BREEZE: EntityType = EntityType { id: 17, - max_health: Some(30f32), + attributes: &[ + (Attributes::MAX_HEALTH, 30f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.6299999952316284f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 24f64), + (Attributes::ATTACK_DAMAGE, 3f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -684,7 +902,7 @@ impl EntityType { }; pub const BREEZE_WIND_CHARGE: EntityType = EntityType { id: 18, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -704,7 +922,31 @@ impl EntityType { }; pub const CAMEL: EntityType = EntityType { id: 19, - max_health: Some(32f32), + attributes: &[ + (Attributes::MAX_HEALTH, 32f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.09000000357627869f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1.5f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 6f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 0.5f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -728,7 +970,31 @@ impl EntityType { }; pub const CAMEL_HUSK: EntityType = EntityType { id: 20, - max_health: Some(32f32), + attributes: &[ + (Attributes::MAX_HEALTH, 32f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.09000000357627869f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1.5f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 6f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 0.5f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -779,7 +1045,32 @@ impl EntityType { }; pub const CAT: EntityType = EntityType { id: 21, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 3f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -824,7 +1115,31 @@ impl EntityType { }; pub const CAVE_SPIDER: EntityType = EntityType { id: 22, - max_health: Some(12f32), + attributes: &[ + (Attributes::MAX_HEALTH, 12f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -905,7 +1220,7 @@ impl EntityType { }; pub const CHERRY_BOAT: EntityType = EntityType { id: 23, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -925,7 +1240,7 @@ impl EntityType { }; pub const CHERRY_CHEST_BOAT: EntityType = EntityType { id: 24, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -945,7 +1260,7 @@ impl EntityType { }; pub const CHEST_MINECART: EntityType = EntityType { id: 25, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -965,7 +1280,31 @@ impl EntityType { }; pub const CHICKEN: EntityType = EntityType { id: 26, - max_health: Some(4f32), + attributes: &[ + (Attributes::MAX_HEALTH, 4f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1040,7 +1379,30 @@ impl EntityType { }; pub const COD: EntityType = EntityType { id: 27, - max_health: Some(3f32), + attributes: &[ + (Attributes::MAX_HEALTH, 3f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1094,7 +1456,7 @@ impl EntityType { }; pub const COMMAND_BLOCK_MINECART: EntityType = EntityType { id: 29, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -1114,7 +1476,30 @@ impl EntityType { }; pub const COPPER_GOLEM: EntityType = EntityType { id: 28, - max_health: Some(12f32), + attributes: &[ + (Attributes::MAX_HEALTH, 12f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.20000000298023224f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1165,7 +1550,31 @@ impl EntityType { }; pub const COW: EntityType = EntityType { id: 30, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.20000000298023224f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1250,7 +1659,31 @@ impl EntityType { }; pub const CREAKING: EntityType = EntityType { id: 31, - max_health: Some(1f32), + attributes: &[ + (Attributes::MAX_HEALTH, 1f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.4000000059604645f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1.0625f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 32f64), + (Attributes::ATTACK_DAMAGE, 3f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1274,7 +1707,31 @@ impl EntityType { }; pub const CREEPER: EntityType = EntityType { id: 32, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1338,7 +1795,7 @@ impl EntityType { }; pub const DARK_OAK_BOAT: EntityType = EntityType { id: 33, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -1358,7 +1815,7 @@ impl EntityType { }; pub const DARK_OAK_CHEST_BOAT: EntityType = EntityType { id: 34, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -1378,7 +1835,31 @@ impl EntityType { }; pub const DOLPHIN: EntityType = EntityType { id: 35, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 1.2000000476837158f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 3f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1433,7 +1914,31 @@ impl EntityType { }; pub const DONKEY: EntityType = EntityType { id: 36, - max_health: Some(53f32), + attributes: &[ + (Attributes::MAX_HEALTH, 53f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.17499999701976776f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 6f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 0.5f64), + (Attributes::JUMP_STRENGTH, 0.5f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1484,7 +1989,7 @@ impl EntityType { }; pub const DRAGON_FIREBALL: EntityType = EntityType { id: 37, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -1504,7 +2009,32 @@ impl EntityType { }; pub const DROWNED: EntityType = EntityType { id: 38, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.2300000041723251f64), + (Attributes::ARMOR, 2f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 35f64), + (Attributes::ATTACK_DAMAGE, 3f64), + (Attributes::SPAWN_REINFORCEMENTS, 0f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1573,7 +2103,7 @@ impl EntityType { }; pub const EGG: EntityType = EntityType { id: 39, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -1593,7 +2123,31 @@ impl EntityType { }; pub const ELDER_GUARDIAN: EntityType = EntityType { id: 40, - max_health: Some(80f32), + attributes: &[ + (Attributes::MAX_HEALTH, 80f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 8f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1735,7 +2289,7 @@ impl EntityType { }; pub const END_CRYSTAL: EntityType = EntityType { id: 45, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -1755,7 +2309,30 @@ impl EntityType { }; pub const ENDER_DRAGON: EntityType = EntityType { id: 43, - max_health: Some(200f32), + attributes: &[ + (Attributes::MAX_HEALTH, 200f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 16f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1779,7 +2356,7 @@ impl EntityType { }; pub const ENDER_PEARL: EntityType = EntityType { id: 44, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -1799,7 +2376,31 @@ impl EntityType { }; pub const ENDERMAN: EntityType = EntityType { id: 41, - max_health: Some(40f32), + attributes: &[ + (Attributes::MAX_HEALTH, 40f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 64f64), + (Attributes::ATTACK_DAMAGE, 7f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1850,7 +2451,31 @@ impl EntityType { }; pub const ENDERMITE: EntityType = EntityType { id: 42, - max_health: Some(8f32), + attributes: &[ + (Attributes::MAX_HEALTH, 8f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1874,7 +2499,31 @@ impl EntityType { }; pub const EVOKER: EntityType = EntityType { id: 46, - max_health: Some(24f32), + attributes: &[ + (Attributes::MAX_HEALTH, 24f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.5f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 12f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -1940,7 +2589,7 @@ impl EntityType { }; pub const EVOKER_FANGS: EntityType = EntityType { id: 47, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -1960,7 +2609,7 @@ impl EntityType { }; pub const EXPERIENCE_BOTTLE: EntityType = EntityType { id: 48, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -1980,7 +2629,7 @@ impl EntityType { }; pub const EXPERIENCE_ORB: EntityType = EntityType { id: 49, - max_health: None, + attributes: &[], attackable: Some(false), mob: false, saveable: true, @@ -2000,7 +2649,7 @@ impl EntityType { }; pub const EYE_OF_ENDER: EntityType = EntityType { id: 50, - max_health: None, + attributes: &[], attackable: Some(false), mob: false, saveable: true, @@ -2020,7 +2669,7 @@ impl EntityType { }; pub const FALLING_BLOCK: EntityType = EntityType { id: 51, - max_health: None, + attributes: &[], attackable: Some(false), mob: false, saveable: true, @@ -2040,7 +2689,7 @@ impl EntityType { }; pub const FIREBALL: EntityType = EntityType { id: 52, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -2060,7 +2709,7 @@ impl EntityType { }; pub const FIREWORK_ROCKET: EntityType = EntityType { id: 53, - max_health: None, + attributes: &[], attackable: Some(false), mob: false, saveable: true, @@ -2080,7 +2729,7 @@ impl EntityType { }; pub const FISHING_BOBBER: EntityType = EntityType { id: 156, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: false, @@ -2100,7 +2749,32 @@ impl EntityType { }; pub const FOX: EntityType = EntityType { id: 54, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 5f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 32f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2124,7 +2798,32 @@ impl EntityType { }; pub const FROG: EntityType = EntityType { id: 55, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 1f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2148,7 +2847,7 @@ impl EntityType { }; pub const FURNACE_MINECART: EntityType = EntityType { id: 56, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -2168,7 +2867,31 @@ impl EntityType { }; pub const GHAST: EntityType = EntityType { id: 57, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 8f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 100f64), + (Attributes::FLYING_SPEED, 0.06f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2271,7 +2994,31 @@ impl EntityType { }; pub const GIANT: EntityType = EntityType { id: 59, - max_health: Some(100f32), + attributes: &[ + (Attributes::MAX_HEALTH, 100f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.5f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 16f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 50f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2295,7 +3042,7 @@ impl EntityType { }; pub const GLOW_ITEM_FRAME: EntityType = EntityType { id: 60, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -2315,7 +3062,30 @@ impl EntityType { }; pub const GLOW_SQUID: EntityType = EntityType { id: 61, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2366,7 +3136,32 @@ impl EntityType { }; pub const GOAT: EntityType = EntityType { id: 62, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.20000000298023224f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2390,7 +3185,31 @@ impl EntityType { }; pub const GUARDIAN: EntityType = EntityType { id: 63, - max_health: Some(30f32), + attributes: &[ + (Attributes::MAX_HEALTH, 30f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.5f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 6f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2499,7 +3318,32 @@ impl EntityType { }; pub const HAPPY_GHAST: EntityType = EntityType { id: 58, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.05f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 8f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 16f64), + (Attributes::FLYING_SPEED, 0.05f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2523,7 +3367,31 @@ impl EntityType { }; pub const HOGLIN: EntityType = EntityType { id: 64, - max_health: Some(40f32), + attributes: &[ + (Attributes::MAX_HEALTH, 40f64), + (Attributes::KNOCKBACK_RESISTANCE, 0.6000000238418579f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 1f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 6f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2608,7 +3476,7 @@ impl EntityType { }; pub const HOPPER_MINECART: EntityType = EntityType { id: 65, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -2628,7 +3496,31 @@ impl EntityType { }; pub const HORSE: EntityType = EntityType { id: 66, - max_health: Some(53f32), + attributes: &[ + (Attributes::MAX_HEALTH, 53f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.22499999403953552f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 6f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 0.5f64), + (Attributes::JUMP_STRENGTH, 0.7f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2679,7 +3571,32 @@ impl EntityType { }; pub const HUSK: EntityType = EntityType { id: 67, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.2300000041723251f64), + (Attributes::ARMOR, 2f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 35f64), + (Attributes::ATTACK_DAMAGE, 3f64), + (Attributes::SPAWN_REINFORCEMENTS, 0f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2795,7 +3712,31 @@ impl EntityType { }; pub const ILLUSIONER: EntityType = EntityType { id: 68, - max_health: Some(32f32), + attributes: &[ + (Attributes::MAX_HEALTH, 32f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.5f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 18f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2819,7 +3760,7 @@ impl EntityType { }; pub const INTERACTION: EntityType = EntityType { id: 69, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -2839,7 +3780,31 @@ impl EntityType { }; pub const IRON_GOLEM: EntityType = EntityType { id: 70, - max_health: Some(100f32), + attributes: &[ + (Attributes::MAX_HEALTH, 100f64), + (Attributes::KNOCKBACK_RESISTANCE, 1f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 15f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -2908,7 +3873,7 @@ impl EntityType { }; pub const ITEM: EntityType = EntityType { id: 71, - max_health: None, + attributes: &[], attackable: Some(false), mob: false, saveable: true, @@ -2928,7 +3893,7 @@ impl EntityType { }; pub const ITEM_DISPLAY: EntityType = EntityType { id: 72, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -2948,7 +3913,7 @@ impl EntityType { }; pub const ITEM_FRAME: EntityType = EntityType { id: 73, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -2968,7 +3933,7 @@ impl EntityType { }; pub const JUNGLE_BOAT: EntityType = EntityType { id: 74, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -2988,7 +3953,7 @@ impl EntityType { }; pub const JUNGLE_CHEST_BOAT: EntityType = EntityType { id: 75, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3008,7 +3973,7 @@ impl EntityType { }; pub const LEASH_KNOT: EntityType = EntityType { id: 76, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: false, @@ -3028,7 +3993,7 @@ impl EntityType { }; pub const LIGHTNING_BOLT: EntityType = EntityType { id: 77, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: false, @@ -3048,7 +4013,7 @@ impl EntityType { }; pub const LINGERING_POTION: EntityType = EntityType { id: 106, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3068,7 +4033,31 @@ impl EntityType { }; pub const LLAMA: EntityType = EntityType { id: 78, - max_health: Some(53f32), + attributes: &[ + (Attributes::MAX_HEALTH, 53f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.17499999701976776f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 6f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 0.5f64), + (Attributes::JUMP_STRENGTH, 0.5f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3119,7 +4108,7 @@ impl EntityType { }; pub const LLAMA_SPIT: EntityType = EntityType { id: 79, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3139,7 +4128,31 @@ impl EntityType { }; pub const MAGMA_CUBE: EntityType = EntityType { id: 80, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.20000000298023224f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3234,7 +4247,7 @@ impl EntityType { }; pub const MANGROVE_BOAT: EntityType = EntityType { id: 81, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3254,7 +4267,7 @@ impl EntityType { }; pub const MANGROVE_CHEST_BOAT: EntityType = EntityType { id: 82, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3274,7 +4287,29 @@ impl EntityType { }; pub const MANNEQUIN: EntityType = EntityType { id: 83, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + ], attackable: Some(true), mob: false, saveable: true, @@ -3298,7 +4333,7 @@ impl EntityType { }; pub const MARKER: EntityType = EntityType { id: 84, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3318,7 +4353,7 @@ impl EntityType { }; pub const MINECART: EntityType = EntityType { id: 85, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3338,7 +4373,31 @@ impl EntityType { }; pub const MOOSHROOM: EntityType = EntityType { id: 86, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.20000000298023224f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3423,7 +4482,31 @@ impl EntityType { }; pub const MULE: EntityType = EntityType { id: 87, - max_health: Some(53f32), + attributes: &[ + (Attributes::MAX_HEALTH, 53f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.17499999701976776f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 6f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 0.5f64), + (Attributes::JUMP_STRENGTH, 0.5f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3474,7 +4557,32 @@ impl EntityType { }; pub const NAUTILUS: EntityType = EntityType { id: 88, - max_health: Some(15f32), + attributes: &[ + (Attributes::MAX_HEALTH, 15f64), + (Attributes::KNOCKBACK_RESISTANCE, 0.30000001192092896f64), + (Attributes::MOVEMENT_SPEED, 1f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 3f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3513,7 +4621,7 @@ impl EntityType { }; pub const OAK_BOAT: EntityType = EntityType { id: 89, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3533,7 +4641,7 @@ impl EntityType { }; pub const OAK_CHEST_BOAT: EntityType = EntityType { id: 90, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3553,7 +4661,32 @@ impl EntityType { }; pub const OCELOT: EntityType = EntityType { id: 91, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 3f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3577,7 +4710,7 @@ impl EntityType { }; pub const OMINOUS_ITEM_SPAWNER: EntityType = EntityType { id: 92, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3597,7 +4730,7 @@ impl EntityType { }; pub const PAINTING: EntityType = EntityType { id: 93, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3617,7 +4750,7 @@ impl EntityType { }; pub const PALE_OAK_BOAT: EntityType = EntityType { id: 94, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3637,7 +4770,7 @@ impl EntityType { }; pub const PALE_OAK_CHEST_BOAT: EntityType = EntityType { id: 95, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -3657,7 +4790,32 @@ impl EntityType { }; pub const PANDA: EntityType = EntityType { id: 96, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.15000000596046448f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 6f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3699,7 +4857,31 @@ impl EntityType { }; pub const PARCHED: EntityType = EntityType { id: 97, - max_health: Some(16f32), + attributes: &[ + (Attributes::MAX_HEALTH, 16f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3812,7 +4994,33 @@ impl EntityType { }; pub const PARROT: EntityType = EntityType { id: 98, - max_health: Some(6f32), + attributes: &[ + (Attributes::MAX_HEALTH, 6f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.20000000298023224f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::FLYING_SPEED, 0.4000000059604645f64), + (Attributes::ATTACK_DAMAGE, 3f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3863,7 +5071,31 @@ impl EntityType { }; pub const PHANTOM: EntityType = EntityType { id: 99, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3914,7 +5146,31 @@ impl EntityType { }; pub const PIG: EntityType = EntityType { id: 100, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3969,7 +5225,31 @@ impl EntityType { }; pub const PIGLIN: EntityType = EntityType { id: 101, - max_health: Some(16f32), + attributes: &[ + (Attributes::MAX_HEALTH, 16f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.3499999940395355f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 5f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -3993,7 +5273,31 @@ impl EntityType { }; pub const PIGLIN_BRUTE: EntityType = EntityType { id: 102, - max_health: Some(50f32), + attributes: &[ + (Attributes::MAX_HEALTH, 50f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.3499999940395355f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 12f64), + (Attributes::ATTACK_DAMAGE, 7f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4017,7 +5321,31 @@ impl EntityType { }; pub const PILLAGER: EntityType = EntityType { id: 103, - max_health: Some(24f32), + attributes: &[ + (Attributes::MAX_HEALTH, 24f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.3499999940395355f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 32f64), + (Attributes::ATTACK_DAMAGE, 5f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4065,7 +5393,7 @@ impl EntityType { }; pub const PLAYER: EntityType = EntityType { id: 155, - max_health: None, + attributes: &[], attackable: None, mob: false, saveable: false, @@ -4089,7 +5417,32 @@ impl EntityType { }; pub const POLAR_BEAR: EntityType = EntityType { id: 104, - max_health: Some(30f32), + attributes: &[ + (Attributes::MAX_HEALTH, 30f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 20f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 6f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4172,7 +5525,30 @@ impl EntityType { }; pub const PUFFERFISH: EntityType = EntityType { id: 107, - max_health: Some(3f32), + attributes: &[ + (Attributes::MAX_HEALTH, 3f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4229,7 +5605,32 @@ impl EntityType { }; pub const RABBIT: EntityType = EntityType { id: 108, - max_health: Some(3f32), + attributes: &[ + (Attributes::MAX_HEALTH, 3f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 3f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4327,7 +5728,31 @@ impl EntityType { }; pub const RAVAGER: EntityType = EntityType { id: 109, - max_health: Some(100f32), + attributes: &[ + (Attributes::MAX_HEALTH, 100f64), + (Attributes::KNOCKBACK_RESISTANCE, 0.75f64), + (Attributes::MOVEMENT_SPEED, 0.3f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 1.5f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 32f64), + (Attributes::ATTACK_DAMAGE, 12f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4369,7 +5794,30 @@ impl EntityType { }; pub const SALMON: EntityType = EntityType { id: 110, - max_health: Some(3f32), + attributes: &[ + (Attributes::MAX_HEALTH, 3f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4423,7 +5871,31 @@ impl EntityType { }; pub const SHEEP: EntityType = EntityType { id: 111, - max_health: Some(8f32), + attributes: &[ + (Attributes::MAX_HEALTH, 8f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.2300000041723251f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4574,7 +6046,30 @@ impl EntityType { }; pub const SHULKER: EntityType = EntityType { id: 112, - max_health: Some(30f32), + attributes: &[ + (Attributes::MAX_HEALTH, 30f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4610,7 +6105,7 @@ impl EntityType { }; pub const SHULKER_BULLET: EntityType = EntityType { id: 113, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -4630,7 +6125,31 @@ impl EntityType { }; pub const SILVERFISH: EntityType = EntityType { id: 114, - max_health: Some(8f32), + attributes: &[ + (Attributes::MAX_HEALTH, 8f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 1f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4654,7 +6173,31 @@ impl EntityType { }; pub const SKELETON: EntityType = EntityType { id: 115, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4735,7 +6278,31 @@ impl EntityType { }; pub const SKELETON_HORSE: EntityType = EntityType { id: 116, - max_health: Some(15f32), + attributes: &[ + (Attributes::MAX_HEALTH, 15f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.20000000298023224f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 6f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 0.5f64), + (Attributes::JUMP_STRENGTH, 0.7f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4786,7 +6353,31 @@ impl EntityType { }; pub const SLIME: EntityType = EntityType { id: 117, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4852,7 +6443,7 @@ impl EntityType { }; pub const SMALL_FIREBALL: EntityType = EntityType { id: 118, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -4872,7 +6463,31 @@ impl EntityType { }; pub const SNIFFER: EntityType = EntityType { id: 119, - max_health: Some(14f32), + attributes: &[ + (Attributes::MAX_HEALTH, 14f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.10000000149011612f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4896,7 +6511,30 @@ impl EntityType { }; pub const SNOW_GOLEM: EntityType = EntityType { id: 121, - max_health: Some(4f32), + attributes: &[ + (Attributes::MAX_HEALTH, 4f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.20000000298023224f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -4941,7 +6579,7 @@ impl EntityType { }; pub const SNOWBALL: EntityType = EntityType { id: 120, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -4961,7 +6599,7 @@ impl EntityType { }; pub const SPAWNER_MINECART: EntityType = EntityType { id: 122, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -4981,7 +6619,7 @@ impl EntityType { }; pub const SPECTRAL_ARROW: EntityType = EntityType { id: 123, - max_health: None, + attributes: &[], attackable: Some(false), mob: false, saveable: true, @@ -5001,7 +6639,31 @@ impl EntityType { }; pub const SPIDER: EntityType = EntityType { id: 124, - max_health: Some(16f32), + attributes: &[ + (Attributes::MAX_HEALTH, 16f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5082,7 +6744,7 @@ impl EntityType { }; pub const SPLASH_POTION: EntityType = EntityType { id: 105, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -5102,7 +6764,7 @@ impl EntityType { }; pub const SPRUCE_BOAT: EntityType = EntityType { id: 125, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -5122,7 +6784,7 @@ impl EntityType { }; pub const SPRUCE_CHEST_BOAT: EntityType = EntityType { id: 126, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -5142,7 +6804,30 @@ impl EntityType { }; pub const SQUID: EntityType = EntityType { id: 127, - max_health: Some(10f32), + attributes: &[ + (Attributes::MAX_HEALTH, 10f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5193,7 +6878,31 @@ impl EntityType { }; pub const STRAY: EntityType = EntityType { id: 128, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5306,7 +7015,31 @@ impl EntityType { }; pub const STRIDER: EntityType = EntityType { id: 129, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.17499999701976776f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5357,7 +7090,31 @@ impl EntityType { }; pub const TADPOLE: EntityType = EntityType { id: 130, - max_health: Some(6f32), + attributes: &[ + (Attributes::MAX_HEALTH, 6f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 1f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5381,7 +7138,7 @@ impl EntityType { }; pub const TEXT_DISPLAY: EntityType = EntityType { id: 131, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -5401,7 +7158,7 @@ impl EntityType { }; pub const TNT: EntityType = EntityType { id: 132, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -5421,7 +7178,7 @@ impl EntityType { }; pub const TNT_MINECART: EntityType = EntityType { id: 133, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -5441,7 +7198,31 @@ impl EntityType { }; pub const TRADER_LLAMA: EntityType = EntityType { id: 134, - max_health: Some(53f32), + attributes: &[ + (Attributes::MAX_HEALTH, 53f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.17499999701976776f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 6f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 0.5f64), + (Attributes::JUMP_STRENGTH, 0.5f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5492,7 +7273,7 @@ impl EntityType { }; pub const TRIDENT: EntityType = EntityType { id: 135, - max_health: None, + attributes: &[], attackable: Some(false), mob: false, saveable: true, @@ -5512,7 +7293,30 @@ impl EntityType { }; pub const TROPICAL_FISH: EntityType = EntityType { id: 136, - max_health: Some(3f32), + attributes: &[ + (Attributes::MAX_HEALTH, 3f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5569,7 +7373,31 @@ impl EntityType { }; pub const TURTLE: EntityType = EntityType { id: 137, - max_health: Some(30f32), + attributes: &[ + (Attributes::MAX_HEALTH, 30f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5635,7 +7463,31 @@ impl EntityType { }; pub const VEX: EntityType = EntityType { id: 138, - max_health: Some(14f32), + attributes: &[ + (Attributes::MAX_HEALTH, 14f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 4f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5659,7 +7511,30 @@ impl EntityType { }; pub const VILLAGER: EntityType = EntityType { id: 139, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.5f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5683,7 +7558,31 @@ impl EntityType { }; pub const VINDICATOR: EntityType = EntityType { id: 140, - max_health: Some(24f32), + attributes: &[ + (Attributes::MAX_HEALTH, 24f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.3499999940395355f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 12f64), + (Attributes::ATTACK_DAMAGE, 5f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5734,7 +7633,30 @@ impl EntityType { }; pub const WANDERING_TRADER: EntityType = EntityType { id: 141, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.7f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5758,7 +7680,31 @@ impl EntityType { }; pub const WARDEN: EntityType = EntityType { id: 142, - max_health: Some(500f32), + attributes: &[ + (Attributes::MAX_HEALTH, 500f64), + (Attributes::KNOCKBACK_RESISTANCE, 1f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 1.5f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 24f64), + (Attributes::ATTACK_DAMAGE, 30f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -5794,7 +7740,7 @@ impl EntityType { }; pub const WIND_CHARGE: EntityType = EntityType { id: 143, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -5814,7 +7760,31 @@ impl EntityType { }; pub const WITCH: EntityType = EntityType { id: 144, - max_health: Some(26f32), + attributes: &[ + (Attributes::MAX_HEALTH, 26f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -6012,7 +7982,32 @@ impl EntityType { }; pub const WITHER: EntityType = EntityType { id: 145, - max_health: Some(300f32), + attributes: &[ + (Attributes::MAX_HEALTH, 300f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.6000000238418579f64), + (Attributes::ARMOR, 4f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 40f64), + (Attributes::ATTACK_DAMAGE, 2f64), + (Attributes::FLYING_SPEED, 0.6000000238418579f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -6036,7 +8031,31 @@ impl EntityType { }; pub const WITHER_SKELETON: EntityType = EntityType { id: 146, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.25f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 2f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -6133,7 +8152,7 @@ impl EntityType { }; pub const WITHER_SKULL: EntityType = EntityType { id: 147, - max_health: None, + attributes: &[], attackable: Some(true), mob: false, saveable: true, @@ -6153,7 +8172,32 @@ impl EntityType { }; pub const WOLF: EntityType = EntityType { id: 148, - max_health: Some(8f32), + attributes: &[ + (Attributes::MAX_HEALTH, 8f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 4f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -6177,7 +8221,31 @@ impl EntityType { }; pub const ZOGLIN: EntityType = EntityType { id: 149, - max_health: Some(40f32), + attributes: &[ + (Attributes::MAX_HEALTH, 40f64), + (Attributes::KNOCKBACK_RESISTANCE, 0.6000000238418579f64), + (Attributes::MOVEMENT_SPEED, 0.30000001192092896f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 1f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::ATTACK_DAMAGE, 6f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -6228,7 +8296,32 @@ impl EntityType { }; pub const ZOMBIE: EntityType = EntityType { id: 150, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.2300000041723251f64), + (Attributes::ARMOR, 2f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 35f64), + (Attributes::ATTACK_DAMAGE, 3f64), + (Attributes::SPAWN_REINFORCEMENTS, 0f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -6360,7 +8453,31 @@ impl EntityType { }; pub const ZOMBIE_HORSE: EntityType = EntityType { id: 151, - max_health: Some(25f32), + attributes: &[ + (Attributes::MAX_HEALTH, 25f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.22499999403953552f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 1f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 6f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 0.5f64), + (Attributes::JUMP_STRENGTH, 0.7f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -6411,7 +8528,32 @@ impl EntityType { }; pub const ZOMBIE_NAUTILUS: EntityType = EntityType { id: 152, - max_health: Some(15f32), + attributes: &[ + (Attributes::MAX_HEALTH, 15f64), + (Attributes::KNOCKBACK_RESISTANCE, 0.30000001192092896f64), + (Attributes::MOVEMENT_SPEED, 1.100000023841858f64), + (Attributes::ARMOR, 0f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 16f64), + (Attributes::TEMPT_RANGE, 10f64), + (Attributes::ATTACK_DAMAGE, 3f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -6462,7 +8604,32 @@ impl EntityType { }; pub const ZOMBIE_VILLAGER: EntityType = EntityType { id: 153, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.2300000041723251f64), + (Attributes::ARMOR, 2f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 35f64), + (Attributes::ATTACK_DAMAGE, 3f64), + (Attributes::SPAWN_REINFORCEMENTS, 0f64), + ], attackable: Some(true), mob: true, saveable: true, @@ -6550,7 +8717,32 @@ impl EntityType { }; pub const ZOMBIFIED_PIGLIN: EntityType = EntityType { id: 154, - max_health: Some(20f32), + attributes: &[ + (Attributes::MAX_HEALTH, 20f64), + (Attributes::KNOCKBACK_RESISTANCE, 0f64), + (Attributes::MOVEMENT_SPEED, 0.2300000041723251f64), + (Attributes::ARMOR, 2f64), + (Attributes::ARMOR_TOUGHNESS, 0f64), + (Attributes::MAX_ABSORPTION, 0f64), + (Attributes::STEP_HEIGHT, 0.6f64), + (Attributes::SCALE, 1f64), + (Attributes::GRAVITY, 0.08f64), + (Attributes::SAFE_FALL_DISTANCE, 3f64), + (Attributes::FALL_DAMAGE_MULTIPLIER, 1f64), + (Attributes::JUMP_STRENGTH, 0.41999998688697815f64), + (Attributes::ENTITY_INTERACTION_RANGE, 3f64), + (Attributes::OXYGEN_BONUS, 0f64), + (Attributes::BURNING_TIME, 1f64), + (Attributes::EXPLOSION_KNOCKBACK_RESISTANCE, 0f64), + (Attributes::WATER_MOVEMENT_EFFICIENCY, 0f64), + (Attributes::MOVEMENT_EFFICIENCY, 0f64), + (Attributes::ATTACK_KNOCKBACK, 0f64), + (Attributes::CAMERA_DISTANCE, 4f64), + (Attributes::WAYPOINT_TRANSMIT_RANGE, 0f64), + (Attributes::FOLLOW_RANGE, 35f64), + (Attributes::ATTACK_DAMAGE, 5f64), + (Attributes::SPAWN_REINFORCEMENTS, 0f64), + ], attackable: Some(true), mob: true, saveable: true, diff --git a/pumpkin-data/src/generated/meta_data_type.rs b/pumpkin-data/src/generated/meta_data_type.rs index 5eadd4dc3..d86797714 100644 --- a/pumpkin-data/src/generated/meta_data_type.rs +++ b/pumpkin-data/src/generated/meta_data_type.rs @@ -32,7 +32,7 @@ impl MetaDataType { v1_21_7: 32i32, v1_21_9: 31i32, v1_21_11: 32i32, - v26_1: -1i32, + v26_1: 36i32, }; pub const BLOCK_POS: MetaDataType = MetaDataType { v1_21: 10i32, @@ -43,7 +43,7 @@ impl MetaDataType { v1_21_7: 10i32, v1_21_9: 10i32, v1_21_11: 10i32, - v26_1: -1i32, + v26_1: 10i32, }; pub const BLOCK_STATE: MetaDataType = MetaDataType { v1_21: 14i32, @@ -54,7 +54,7 @@ impl MetaDataType { v1_21_7: 14i32, v1_21_9: 14i32, v1_21_11: 14i32, - v26_1: -1i32, + v26_1: 14i32, }; pub const BOOLEAN: MetaDataType = MetaDataType { v1_21: 8i32, @@ -65,7 +65,7 @@ impl MetaDataType { v1_21_7: 8i32, v1_21_9: 8i32, v1_21_11: 8i32, - v26_1: -1i32, + v26_1: 8i32, }; pub const BYTE: MetaDataType = MetaDataType { v1_21: 0i32, @@ -76,7 +76,18 @@ impl MetaDataType { v1_21_7: 0i32, v1_21_9: 0i32, v1_21_11: 0i32, - v26_1: -1i32, + v26_1: 0i32, + }; + pub const CAT_SOUND_VARIANT: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 22i32, }; pub const CAT_VARIANT: MetaDataType = MetaDataType { v1_21: 22i32, @@ -87,7 +98,18 @@ impl MetaDataType { v1_21_7: 22i32, v1_21_9: 21i32, v1_21_11: 21i32, - v26_1: -1i32, + v26_1: 21i32, + }; + pub const CHICKEN_SOUND_VARIANT: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 31i32, }; pub const CHICKEN_VARIANT: MetaDataType = MetaDataType { v1_21: -1i32, @@ -98,7 +120,18 @@ impl MetaDataType { v1_21_7: 28i32, v1_21_9: 27i32, v1_21_11: 27i32, - v26_1: -1i32, + v26_1: 30i32, + }; + pub const COMPONENT: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 5i32, }; pub const COPPER_GOLEM_STATE: MetaDataType = MetaDataType { v1_21: -1i32, @@ -109,7 +142,18 @@ impl MetaDataType { v1_21_7: -1i32, v1_21_9: 32i32, v1_21_11: 33i32, - v26_1: -1i32, + v26_1: 37i32, + }; + pub const COW_SOUND_VARIANT: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 24i32, }; pub const COW_VARIANT: MetaDataType = MetaDataType { v1_21: -1i32, @@ -120,7 +164,18 @@ impl MetaDataType { v1_21_7: 23i32, v1_21_9: 22i32, v1_21_11: 22i32, - v26_1: -1i32, + v26_1: 23i32, + }; + pub const DIRECTION: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 12i32, }; pub const ENTITY_POSE: MetaDataType = MetaDataType { v1_21: 21i32, @@ -153,7 +208,7 @@ impl MetaDataType { v1_21_7: 3i32, v1_21_9: 3i32, v1_21_11: 3i32, - v26_1: -1i32, + v26_1: 3i32, }; pub const FROG_VARIANT: MetaDataType = MetaDataType { v1_21: 24i32, @@ -164,7 +219,29 @@ impl MetaDataType { v1_21_7: 26i32, v1_21_9: 25i32, v1_21_11: 25i32, - v26_1: -1i32, + v26_1: 27i32, + }; + pub const HUMANOID_ARM: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 42i32, + }; + pub const INT: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 1i32, }; pub const INTEGER: MetaDataType = MetaDataType { v1_21: 1i32, @@ -186,7 +263,7 @@ impl MetaDataType { v1_21_7: 7i32, v1_21_9: 7i32, v1_21_11: 7i32, - v26_1: -1i32, + v26_1: 7i32, }; pub const LAZY_ENTITY_REFERENCE: MetaDataType = MetaDataType { v1_21: -1i32, @@ -208,7 +285,7 @@ impl MetaDataType { v1_21_7: 2i32, v1_21_9: 2i32, v1_21_11: 2i32, - v26_1: -1i32, + v26_1: 2i32, }; pub const NBT_COMPOUND: MetaDataType = MetaDataType { v1_21: 16i32, @@ -230,7 +307,7 @@ impl MetaDataType { v1_21_7: 11i32, v1_21_9: 11i32, v1_21_11: 11i32, - v26_1: -1i32, + v26_1: 11i32, }; pub const OPTIONAL_BLOCK_STATE: MetaDataType = MetaDataType { v1_21: 15i32, @@ -241,7 +318,18 @@ impl MetaDataType { v1_21_7: 15i32, v1_21_9: 15i32, v1_21_11: 15i32, - v26_1: -1i32, + v26_1: 15i32, + }; + pub const OPTIONAL_COMPONENT: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 6i32, }; pub const OPTIONAL_GLOBAL_POS: MetaDataType = MetaDataType { v1_21: 25i32, @@ -252,7 +340,7 @@ impl MetaDataType { v1_21_7: 29i32, v1_21_9: 28i32, v1_21_11: 29i32, - v26_1: -1i32, + v26_1: 33i32, }; pub const OPTIONAL_INT: MetaDataType = MetaDataType { v1_21: 20i32, @@ -265,6 +353,17 @@ impl MetaDataType { v1_21_11: 19i32, v26_1: -1i32, }; + pub const OPTIONAL_LIVING_ENTITY_REFERENCE: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 13i32, + }; pub const OPTIONAL_TEXT_COMPONENT: MetaDataType = MetaDataType { v1_21: 6i32, v1_21_2: 6i32, @@ -276,6 +375,17 @@ impl MetaDataType { v1_21_11: 6i32, v26_1: -1i32, }; + pub const OPTIONAL_UNSIGNED_INT: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 19i32, + }; pub const OPTIONAL_UUID: MetaDataType = MetaDataType { v1_21: 13i32, v1_21_2: 13i32, @@ -307,7 +417,7 @@ impl MetaDataType { v1_21_7: 30i32, v1_21_9: 29i32, v1_21_11: 30i32, - v26_1: -1i32, + v26_1: 34i32, }; pub const PARTICLE: MetaDataType = MetaDataType { v1_21: 17i32, @@ -318,7 +428,7 @@ impl MetaDataType { v1_21_7: 17i32, v1_21_9: 16i32, v1_21_11: 16i32, - v26_1: -1i32, + v26_1: 16i32, }; pub const PARTICLE_LIST: MetaDataType = MetaDataType { v1_21: 18i32, @@ -331,6 +441,28 @@ impl MetaDataType { v1_21_11: 17i32, v26_1: -1i32, }; + pub const PARTICLES: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 17i32, + }; + pub const PIG_SOUND_VARIANT: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 29i32, + }; pub const PIG_VARIANT: MetaDataType = MetaDataType { v1_21: -1i32, v1_21_2: -1i32, @@ -340,7 +472,18 @@ impl MetaDataType { v1_21_7: 27i32, v1_21_9: 26i32, v1_21_11: 26i32, - v26_1: -1i32, + v26_1: 28i32, + }; + pub const POSE: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 20i32, }; pub const PROFILE: MetaDataType = MetaDataType { v1_21: -1i32, @@ -353,6 +496,17 @@ impl MetaDataType { v1_21_11: 37i32, v26_1: -1i32, }; + pub const QUATERNION: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 40i32, + }; pub const QUATERNION_F: MetaDataType = MetaDataType { v1_21: 30i32, v1_21_2: 30i32, @@ -364,6 +518,17 @@ impl MetaDataType { v1_21_11: 36i32, v26_1: -1i32, }; + pub const RESOLVABLE_PROFILE: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 41i32, + }; pub const ROTATION: MetaDataType = MetaDataType { v1_21: 9i32, v1_21_2: 9i32, @@ -375,6 +540,17 @@ impl MetaDataType { v1_21_11: 9i32, v26_1: -1i32, }; + pub const ROTATIONS: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 9i32, + }; pub const SNIFFER_STATE: MetaDataType = MetaDataType { v1_21: 27i32, v1_21_2: 27i32, @@ -384,7 +560,7 @@ impl MetaDataType { v1_21_7: 31i32, v1_21_9: 30i32, v1_21_11: 31i32, - v26_1: -1i32, + v26_1: 35i32, }; pub const STRING: MetaDataType = MetaDataType { v1_21: 4i32, @@ -395,7 +571,7 @@ impl MetaDataType { v1_21_7: 4i32, v1_21_9: 4i32, v1_21_11: 4i32, - v26_1: -1i32, + v26_1: 4i32, }; pub const TEXT_COMPONENT: MetaDataType = MetaDataType { v1_21: 5i32, @@ -408,6 +584,17 @@ impl MetaDataType { v1_21_11: 5i32, v26_1: -1i32, }; + pub const VECTOR3: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 39i32, + }; pub const VECTOR_3F: MetaDataType = MetaDataType { v1_21: 29i32, v1_21_2: 29i32, @@ -428,7 +615,18 @@ impl MetaDataType { v1_21_7: 19i32, v1_21_9: 18i32, v1_21_11: 18i32, - v26_1: -1i32, + v26_1: 18i32, + }; + pub const WEATHERING_COPPER_STATE: MetaDataType = MetaDataType { + v1_21: -1i32, + v1_21_2: -1i32, + v1_21_4: -1i32, + v1_21_5: -1i32, + v1_21_6: -1i32, + v1_21_7: -1i32, + v1_21_9: -1i32, + v1_21_11: -1i32, + v26_1: 38i32, }; pub const WOLF_SOUND_VARIANT: MetaDataType = MetaDataType { v1_21: -1i32, @@ -439,7 +637,7 @@ impl MetaDataType { v1_21_7: 25i32, v1_21_9: 24i32, v1_21_11: 24i32, - v26_1: -1i32, + v26_1: 26i32, }; pub const WOLF_VARIANT: MetaDataType = MetaDataType { v1_21: 23i32, @@ -450,7 +648,7 @@ impl MetaDataType { v1_21_7: 24i32, v1_21_9: 23i32, v1_21_11: 23i32, - v26_1: -1i32, + v26_1: 25i32, }; pub const ZOMBIE_NAUTILUS_VARIANT: MetaDataType = MetaDataType { v1_21: -1i32, @@ -461,7 +659,7 @@ impl MetaDataType { v1_21_7: -1i32, v1_21_9: -1i32, v1_21_11: 28i32, - v26_1: -1i32, + v26_1: 32i32, }; pub const fn id(&self, version: pumpkin_util::version::MinecraftVersion) -> i32 { match version { diff --git a/pumpkin-protocol/src/java/client/play/entity_metadata.rs b/pumpkin-protocol/src/java/client/play/entity_metadata.rs index 9b86ecb87..30d13f859 100644 --- a/pumpkin-protocol/src/java/client/play/entity_metadata.rs +++ b/pumpkin-protocol/src/java/client/play/entity_metadata.rs @@ -55,8 +55,8 @@ impl ClientPacket for CSetEntityMetadata { } pub struct Metadata { - index: TrackedId, - r#type: MetaDataType, + pub index: TrackedId, + pub r#type: MetaDataType, value: T, } diff --git a/pumpkin-world/src/generation/structure/structures/nether_fossil.rs b/pumpkin-world/src/generation/structure/structures/nether_fossil.rs index cce1ad1bd..f4ee86365 100644 --- a/pumpkin-world/src/generation/structure/structures/nether_fossil.rs +++ b/pumpkin-world/src/generation/structure/structures/nether_fossil.rs @@ -5,7 +5,6 @@ use pumpkin_util::{ math::{block_box::BlockBox, position::BlockPos, vector3::Vector3}, random::{RandomDeriverImpl, RandomGenerator, RandomImpl}, }; -use tracing::debug; use crate::{ ProtoChunk, @@ -100,11 +99,6 @@ impl StructureGenerator for NetherFossilGenerator { collector.add_piece(Box::new(piece)); - debug!( - "Nether fossil candidate at ({}, {}, {}), template={}, rotation={:?}", - x, initial_y, z, template_name, rotation - ); - Some(StructurePosition { start_pos: BlockPos::new(x, initial_y, z), collector: Arc::new(collector.into()), @@ -175,12 +169,6 @@ impl StructurePieceBase for NetherFossilPiece { ) { // Vanilla column scan: find air above soul sand or solid block let Some(placement_y) = self.find_placement_y(chunk) else { - debug!( - "Nether fossil at ({}, {}) failed column scan from Y={}, no valid placement", - self.shiftable_structure_piece.piece.bounding_box.min.x, - self.shiftable_structure_piece.piece.bounding_box.min.z, - self.initial_y - ); return; }; @@ -192,11 +180,6 @@ impl StructurePieceBase for NetherFossilPiece { let origin = self.shiftable_structure_piece.piece.bounding_box.min; - debug!( - "Placing nether fossil at ({}, {}, {}), rotation={:?}", - origin.x, origin.y, origin.z, self.rotation - ); - // Vanilla uses IGNORE_AIR_AND_STRUCTURE_BLOCKS processor place_template(chunk, &self.template, origin, (0, 0), self.rotation, true); diff --git a/pumpkin/src/block/blocks/plant/cactus.rs b/pumpkin/src/block/blocks/plant/cactus.rs index 55716e80b..c8a8e138a 100644 --- a/pumpkin/src/block/blocks/plant/cactus.rs +++ b/pumpkin/src/block/blocks/plant/cactus.rs @@ -129,6 +129,6 @@ async fn can_place_at(world: &dyn BlockAccessor, block_pos: &BlockPos) -> bool { } } let block = world.get_block(&block_pos.down()).await; - (block == &Block::CACTUS || block.has_tag(&tag::Block::MINECRAFT_SAND)) + (block == &Block::CACTUS || block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_CACTUS)) && !world.get_block_state(&block_pos.up()).await.is_liquid() } diff --git a/pumpkin/src/block/blocks/plant/cactus_flower.rs b/pumpkin/src/block/blocks/plant/cactus_flower.rs index 97c2ba2ae..6e2536a11 100644 --- a/pumpkin/src/block/blocks/plant/cactus_flower.rs +++ b/pumpkin/src/block/blocks/plant/cactus_flower.rs @@ -1,5 +1,6 @@ use crate::block::blocks::plant::PlantBlockBase; use crate::block::{BlockBehaviour, BlockFuture, CanPlaceAtArgs, GetStateForNeighborUpdateArgs}; +use pumpkin_data::tag::{self, Taggable}; use pumpkin_data::{Block, BlockDirection, BlockState}; use pumpkin_macros::pumpkin_block; use pumpkin_util::math::position::BlockPos; @@ -58,7 +59,6 @@ impl PlantBlockBase for CactusFlowerBlock { } } fn supports_cactus_flower(block: &Block, block_state: &BlockState) -> bool { - block == &Block::FARMLAND - || block == &Block::CACTUS + block.has_tag(&tag::Block::MINECRAFT_SUPPORT_OVERRIDE_CACTUS_FLOWER) || block_state.is_center_solid(BlockDirection::Up) } diff --git a/pumpkin/src/block/blocks/plant/crop/gourds/attached_stem.rs b/pumpkin/src/block/blocks/plant/crop/gourds/attached_stem.rs index 613cee6d4..9e5a7b88e 100644 --- a/pumpkin/src/block/blocks/plant/crop/gourds/attached_stem.rs +++ b/pumpkin/src/block/blocks/plant/crop/gourds/attached_stem.rs @@ -3,6 +3,7 @@ use pumpkin_data::{ block_properties::{ BlockProperties, EnumVariants, Integer0To7, WallTorchLikeProperties, WheatLikeProperties, }, + tag::{self, Taggable}, }; use pumpkin_util::math::position::BlockPos; use pumpkin_world::{BlockStateId, world::BlockAccessor}; @@ -79,6 +80,10 @@ impl BlockBehaviour for AttachedStemBlock { impl PlantBlockBase for AttachedStemBlock { async fn can_plant_on_top(&self, block_accessor: &dyn BlockAccessor, pos: &BlockPos) -> bool { let block = block_accessor.get_block(pos).await; - block == &Block::FARMLAND + if block == &Block::ATTACHED_PUMPKIN_STEM { + block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_PUMPKIN_STEM) + } else { + block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_MELON_STEM) + } } } diff --git a/pumpkin/src/block/blocks/plant/crop/gourds/stem.rs b/pumpkin/src/block/blocks/plant/crop/gourds/stem.rs index 677b98add..a5e4e0ae1 100644 --- a/pumpkin/src/block/blocks/plant/crop/gourds/stem.rs +++ b/pumpkin/src/block/blocks/plant/crop/gourds/stem.rs @@ -134,6 +134,10 @@ impl BlockBehaviour for StemBlock { impl PlantBlockBase for StemBlock { async fn can_plant_on_top(&self, block_accessor: &dyn BlockAccessor, pos: &BlockPos) -> bool { let block = block_accessor.get_block(pos).await; - block == &Block::FARMLAND + if block == &Block::PUMPKIN_STEM { + block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_PUMPKIN_STEM) + } else { + block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_MELON_STEM) + } } } diff --git a/pumpkin/src/block/blocks/plant/crop/nether_wart.rs b/pumpkin/src/block/blocks/plant/crop/nether_wart.rs index 4c73c0484..677432b8d 100644 --- a/pumpkin/src/block/blocks/plant/crop/nether_wart.rs +++ b/pumpkin/src/block/blocks/plant/crop/nether_wart.rs @@ -3,6 +3,7 @@ use std::sync::Arc; use pumpkin_data::{ Block, block_properties::{BlockProperties, EnumVariants, Integer0To3, NetherWartLikeProperties}, + tag::{self, Taggable}, }; use pumpkin_macros::pumpkin_block; use pumpkin_util::math::position::BlockPos; @@ -55,7 +56,7 @@ impl BlockBehaviour for NetherWartBlock { impl PlantBlockBase for NetherWartBlock { async fn can_plant_on_top(&self, block_accessor: &dyn BlockAccessor, pos: &BlockPos) -> bool { let block = block_accessor.get_block(pos).await; - block == &Block::SOUL_SAND + block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_NETHER_WART) } async fn can_place_at(&self, block_accessor: &dyn BlockAccessor, block_pos: &BlockPos) -> bool { diff --git a/pumpkin/src/block/blocks/plant/crop/sweet_berry_bush.rs b/pumpkin/src/block/blocks/plant/crop/sweet_berry_bush.rs index 3c6b68f5c..8af36eee4 100644 --- a/pumpkin/src/block/blocks/plant/crop/sweet_berry_bush.rs +++ b/pumpkin/src/block/blocks/plant/crop/sweet_berry_bush.rs @@ -16,7 +16,6 @@ use pumpkin_data::{ entity::EntityType, item::Item, item_stack::ItemStack, - tag::{self, Taggable}, }; use pumpkin_macros::pumpkin_block; use pumpkin_util::math::position::BlockPos; @@ -150,11 +149,6 @@ impl BlockBehaviour for SweetBerryBushBlock { } impl PlantBlockBase for SweetBerryBushBlock { - async fn can_plant_on_top(&self, block_accessor: &dyn BlockAccessor, pos: &BlockPos) -> bool { - let block = block_accessor.get_block(pos).await; - block.has_tag(&tag::Block::MINECRAFT_DIRT) - } - async fn get_state_for_neighbor_update( &self, block_accessor: &dyn BlockAccessor, diff --git a/pumpkin/src/block/blocks/plant/fungus.rs b/pumpkin/src/block/blocks/plant/fungus.rs index be20539d5..5914ae95c 100644 --- a/pumpkin/src/block/blocks/plant/fungus.rs +++ b/pumpkin/src/block/blocks/plant/fungus.rs @@ -49,11 +49,9 @@ impl PlantBlockBase for FungusBlock { } #[must_use] pub fn supports_fungus(block: &Block) -> bool { - block.has_tag(&tag::Block::MINECRAFT_DIRT) - || block == &Block::FARMLAND - || block == &Block::WARPED_NYLIUM - || block == &Block::CRIMSON_NYLIUM - || block == &Block::SOUL_SOIL - || block == &Block::MUD - || block == &Block::MUDDY_MANGROVE_ROOTS + if block == &Block::WARPED_FUNGUS { + block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_WARPED_FUNGUS) + } else { + block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_CRIMSON_FUNGUS) + } } diff --git a/pumpkin/src/block/blocks/plant/lily_pad.rs b/pumpkin/src/block/blocks/plant/lily_pad.rs index de6f78fdb..00080c9c1 100644 --- a/pumpkin/src/block/blocks/plant/lily_pad.rs +++ b/pumpkin/src/block/blocks/plant/lily_pad.rs @@ -1,4 +1,4 @@ -use pumpkin_data::Block; +use pumpkin_data::tag::{self, Taggable}; use pumpkin_macros::pumpkin_block; use pumpkin_util::math::position::BlockPos; use pumpkin_world::{ @@ -55,9 +55,11 @@ impl BlockBehaviour for LilyPadBlock { impl PlantBlockBase for LilyPadBlock { async fn can_plant_on_top(&self, block_accessor: &dyn BlockAccessor, pos: &BlockPos) -> bool { + // TODO: get and use fluids not blocks let block = block_accessor.get_block(pos).await; let above_fluid = block_accessor.get_block(&pos.up()).await; - (block == &Block::WATER || block == &Block::ICE) - && (above_fluid != &Block::WATER && above_fluid != &Block::LAVA) + (block.has_tag(&tag::Fluid::MINECRAFT_SUPPORTS_LILY_PAD) + || block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_LILY_PAD)) + && above_fluid.is_air() } } diff --git a/pumpkin/src/block/blocks/plant/roots.rs b/pumpkin/src/block/blocks/plant/roots.rs index 53fa69478..7bc1b7f32 100644 --- a/pumpkin/src/block/blocks/plant/roots.rs +++ b/pumpkin/src/block/blocks/plant/roots.rs @@ -43,10 +43,11 @@ impl BlockBehaviour for RootsBlock { impl PlantBlockBase for RootsBlock { async fn can_plant_on_top(&self, block_accessor: &dyn BlockAccessor, pos: &BlockPos) -> bool { let block_below = block_accessor.get_block(pos).await; - block_below.has_tag(&tag::Block::MINECRAFT_NYLIUM) - || block_below == &Block::SOUL_SOIL - || block_below.has_tag(&tag::Block::MINECRAFT_DIRT) - || block_below == &Block::FARMLAND + if block_below == &Block::WARPED_ROOTS { + block_below.has_tag(&tag::Block::MINECRAFT_SUPPORTS_WARPED_ROOTS) + } else { + block_below.has_tag(&tag::Block::MINECRAFT_SUPPORTS_CRIMSON_ROOTS) + } } async fn can_place_at(&self, block_accessor: &dyn BlockAccessor, block_pos: &BlockPos) -> bool { diff --git a/pumpkin/src/block/blocks/plant/sugar_cane.rs b/pumpkin/src/block/blocks/plant/sugar_cane.rs index 4c5f4c646..032fe4621 100644 --- a/pumpkin/src/block/blocks/plant/sugar_cane.rs +++ b/pumpkin/src/block/blocks/plant/sugar_cane.rs @@ -99,15 +99,15 @@ async fn can_place_at(block_accessor: &dyn BlockAccessor, block_pos: &BlockPos) return true; } - if block_below.has_tag(&tag::Block::MINECRAFT_DIRT) - || block_below.has_tag(&tag::Block::MINECRAFT_SAND) - { + if block_below.has_tag(&tag::Block::MINECRAFT_SUPPORTS_SUGAR_CANE) { for direction in HorizontalFacing::all() { let block = block_accessor .get_block(&block_pos.down().offset(direction.to_offset())) .await; - - if block == &Block::WATER || block == &Block::FROSTED_ICE { + // TODO: use fluid + if block.has_tag(&tag::Fluid::MINECRAFT_SUPPORTS_SUGAR_CANE_ADJACENTLY) + && block.has_tag(&tag::Block::MINECRAFT_SUPPORTS_SUGAR_CANE_ADJACENTLY) + { return true; } } diff --git a/pumpkin/src/entity/ai/goal/look_around.rs b/pumpkin/src/entity/ai/goal/look_around.rs index 369dad6b0..54292a46e 100644 --- a/pumpkin/src/entity/ai/goal/look_around.rs +++ b/pumpkin/src/entity/ai/goal/look_around.rs @@ -4,14 +4,14 @@ use super::{Controls, Goal}; use crate::entity::{ai::goal::GoalFuture, mob::Mob}; use rand::RngExt; -pub struct LookAroundGoal { +pub struct RandomLookAroundGoal { goal_control: Controls, delta_x: f64, delta_z: f64, look_time: i32, } -impl Default for LookAroundGoal { +impl Default for RandomLookAroundGoal { fn default() -> Self { Self { goal_control: Controls::MOVE | Controls::LOOK, @@ -22,7 +22,7 @@ impl Default for LookAroundGoal { } } -impl Goal for LookAroundGoal { +impl Goal for RandomLookAroundGoal { fn can_start<'a>(&'a mut self, mob: &'a dyn Mob) -> GoalFuture<'a, bool> { Box::pin(async { mob.get_random().random::() < 0.02 }) } diff --git a/pumpkin/src/entity/attributes.rs b/pumpkin/src/entity/attributes.rs index da601a70d..f91ef0669 100644 --- a/pumpkin/src/entity/attributes.rs +++ b/pumpkin/src/entity/attributes.rs @@ -1,8 +1,6 @@ use pumpkin_data::attributes::Attributes; use pumpkin_data::entity::EntityType; use std::collections::HashMap; -use std::sync::LazyLock; -use std::sync::RwLock; use std::sync::atomic::AtomicBool; use std::sync::atomic::AtomicU64; use std::sync::atomic::Ordering; @@ -260,87 +258,3 @@ impl AttributeRegistry { } } } - -// Provide a global default registry that can be referenced. -pub static DEFAULT_ATTRIBUTE_REGISTRY: LazyLock> = - LazyLock::new(|| RwLock::new(AttributeRegistry::new())); - -/// Initialize the global attribute registry with per-entity registrations. -pub fn init_all_attributes() { - let mut reg = DEFAULT_ATTRIBUTE_REGISTRY.write().unwrap(); - - // Register per-entity attribute builders here. Add entries as modules implement - // `create_attributes()` on their entity types. - reg.register_builder( - &EntityType::CREEPER, // Aw man - crate::entity::mob::creeper::CreeperEntity::create_attributes(), - ); - - reg.register_builder( - &EntityType::ENDERMAN, - crate::entity::mob::enderman::EndermanEntity::create_attributes(), - ); - - reg.register_builder( - &EntityType::WOLF, - crate::entity::passive::wolf::WolfEntity::create_attributes(), - ); - - reg.register_builder( - &EntityType::IRON_GOLEM, - crate::entity::passive::iron_golem::IronGolemEntity::create_attributes(), - ); - - reg.register_builder( - &EntityType::SNOW_GOLEM, - crate::entity::passive::snow_golem::SnowGolemEntity::create_attributes(), - ); - - reg.register_builder( - &EntityType::SKELETON, - crate::entity::mob::skeleton::SkeletonEntityBase::create_attributes(), - ); - - // Register skeleton variants that reuse the base skeleton attributes - reg.register_builder( - &EntityType::STRAY, - crate::entity::mob::skeleton::SkeletonEntityBase::create_attributes(), - ); - - reg.register_builder( - &EntityType::WITHER_SKELETON, - crate::entity::mob::skeleton::SkeletonEntityBase::create_attributes(), - ); - - reg.register_builder( - &EntityType::ZOMBIE, - crate::entity::mob::zombie::ZombieEntityBase::create_attributes(), - ); - - // Register zombie-family variants that reuse the zombie attributes - reg.register_builder( - &EntityType::HUSK, - crate::entity::mob::zombie::ZombieEntityBase::create_attributes(), - ); - - reg.register_builder( - &EntityType::DROWNED, - crate::entity::mob::zombie::ZombieEntityBase::create_attributes(), - ); - - reg.register_builder( - &EntityType::ZOMBIE_VILLAGER, - crate::entity::mob::zombie::ZombieEntityBase::create_attributes(), - ); - - // Boss entities - reg.register_builder( - &EntityType::WITHER, - crate::entity::boss::wither::WitherEntity::create_attributes(), - ); - - reg.register_builder( - &EntityType::PLAYER, - crate::entity::player::Player::create_attributes(), - ); -} diff --git a/pumpkin/src/entity/boss/wither.rs b/pumpkin/src/entity/boss/wither.rs index ac21686ca..94115dc26 100644 --- a/pumpkin/src/entity/boss/wither.rs +++ b/pumpkin/src/entity/boss/wither.rs @@ -1,10 +1,9 @@ -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::{attributes::Attributes, entity::EntityType}; +use pumpkin_data::entity::EntityType; use std::sync::{Arc, Weak}; use crate::entity::{ Entity, NBTStorage, - ai::goal::{look_around::LookAroundGoal, look_at_entity::LookAtEntityGoal}, + ai::goal::{look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal}, mob::{Mob, MobEntity}, }; @@ -30,21 +29,11 @@ impl WitherEntity { 8, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 8.0), ); - goal_selector.add_goal(8, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); }; mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::ARMOR, 4.0) - .add(Attributes::FLYING_SPEED, 0.6) - .add(Attributes::FOLLOW_RANGE, 40.0) - .add(Attributes::MOVEMENT_SPEED, 0.6) - .add(Attributes::MAX_HEALTH, 300.0) - } } impl NBTStorage for WitherEntity {} diff --git a/pumpkin/src/entity/living.rs b/pumpkin/src/entity/living.rs index a3668172a..26cf000c2 100644 --- a/pumpkin/src/entity/living.rs +++ b/pumpkin/src/entity/living.rs @@ -22,9 +22,9 @@ use tracing::warn; use super::{Entity, NBTStorage}; use super::{EntityBase, NBTStorageInit}; use crate::block::OnLandedUponArgs; +use crate::entity::attributes::AttributeInstance; use crate::entity::attributes::Modifier; use crate::entity::attributes::ModifierOperation; -use crate::entity::attributes::{AttributeInstance, DEFAULT_ATTRIBUTE_REGISTRY}; use crate::entity::{EntityBaseFuture, NbtFuture}; use crate::server::Server; use crate::world::loot::{LootContextParameters, LootTableExt}; @@ -134,21 +134,17 @@ impl LivingEntity { } else { 0.8 }; - let entity_type_id = entity.entity_type.id; let mut max_health: f32 = 20.0; // Overridden by attribute base below Self { // Populate local attribute instances from the default registry and get initial vars attributes: { let mut m = std::collections::HashMap::new(); - let reg = DEFAULT_ATTRIBUTE_REGISTRY.read().unwrap(); - if let Some(overrides) = reg.get_overrides_for_entity(entity_type_id) { - for (attr_id, base) in overrides { - if attr_id == Attributes::MAX_HEALTH.id { - max_health = base as f32; - } - m.insert(attr_id, AttributeInstance::new(base)); + for (attr, base) in entity.entity_type.attributes { + if attr.id == Attributes::MAX_HEALTH.id { + max_health = *base as f32; } + m.insert(attr.id, AttributeInstance::new(*base)); } std::sync::RwLock::new(m) }, @@ -351,8 +347,14 @@ impl LivingEntity { let mut map = self.attributes.write().unwrap(); let inst = map.entry(attribute.id).or_insert_with(|| { - let reg = DEFAULT_ATTRIBUTE_REGISTRY.read().unwrap(); - let base = reg.get_base_value(self.entity.entity_type.id, attribute); + let base = self + .entity + .entity_type + .attributes + .iter() + .find(|a| a.0.id == attribute.id) + .unwrap() + .1; AttributeInstance::new(base) }); @@ -377,8 +379,13 @@ impl LivingEntity { } // Fall back to registry base value if no local instance exists - let reg = DEFAULT_ATTRIBUTE_REGISTRY.read().unwrap(); - reg.get_base_value(self.entity.entity_type.id, attribute) + self.entity + .entity_type + .attributes + .iter() + .find(|a| a.0.id == attribute.id) + .unwrap() + .1 } /// Update or insert the base value for an attribute on this entity. diff --git a/pumpkin/src/entity/mob/bat.rs b/pumpkin/src/entity/mob/bat.rs index 568904d25..c878c8fba 100644 --- a/pumpkin/src/entity/mob/bat.rs +++ b/pumpkin/src/entity/mob/bat.rs @@ -1,14 +1,9 @@ use std::sync::Arc; use std::sync::atomic::{AtomicBool, AtomicI32, Ordering::Relaxed}; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::damage::DamageType; -use pumpkin_data::meta_data_type::MetaDataType; use pumpkin_data::sound::Sound; -use pumpkin_data::tracked_data::TrackedData; use pumpkin_nbt::compound::NbtCompound; -use pumpkin_protocol::java::client::play::Metadata; use pumpkin_util::math::position::BlockPos; use pumpkin_util::math::vector3::Vector3; use rand::RngExt; @@ -54,22 +49,19 @@ impl BatEntity { self.set_roosting_metadata(roosting).await; } - async fn set_roosting_metadata(&self, roosting: bool) { - let flags: u8 = if roosting { ROOSTING_FLAG } else { 0 }; - self.mob_entity - .living_entity - .entity - .send_meta_data(&[Metadata::new( - TrackedData::ID_FLAGS, - MetaDataType::BYTE, - flags, - )]) - .await; - } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new().add(Attributes::MAX_HEALTH, 6.0) + #[expect(clippy::unused_async)] + async fn set_roosting_metadata(&self, _roosting: bool) { + // TODO + // let flags: u8 = if roosting { ROOSTING_FLAG } else { 0 }; + // self.mob_entity + // .living_entity + // .entity + // .send_meta_data(&[Metadata::new( + // TrackedData::ID_FLAGS, + // MetaDataType::BYTE, + // flags, + // )]) + // .await; } } diff --git a/pumpkin/src/entity/mob/blaze.rs b/pumpkin/src/entity/mob/blaze.rs new file mode 100644 index 000000000..5edb4c895 --- /dev/null +++ b/pumpkin/src/entity/mob/blaze.rs @@ -0,0 +1,53 @@ +use std::sync::{Arc, Weak}; + +use pumpkin_data::entity::EntityType; + +use crate::entity::{ + Entity, NBTStorage, + ai::goal::{ + active_target::ActiveTargetGoal, look_around::RandomLookAroundGoal, + look_at_entity::LookAtEntityGoal, + }, + mob::{Mob, MobEntity}, +}; + +pub struct BlazeEntity { + entity: Arc, +} + +impl BlazeEntity { + pub async fn new(entity: Entity) -> Arc { + let entity = Arc::new(MobEntity::new(entity)); + let zombie = Self { entity }; + let mob_arc = Arc::new(zombie); + let mob_weak: Weak = { + let mob_arc: Arc = mob_arc.clone(); + Arc::downgrade(&mob_arc) + }; + { + let mut goal_selector = mob_arc.entity.goals_selector.lock().await; + let mut target_selector = mob_arc.entity.target_selector.lock().await; + + // TODO + goal_selector.add_goal( + 8, + LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 8.0), + ); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); + target_selector.add_goal( + 2, + ActiveTargetGoal::with_default(&mob_arc.entity, &EntityType::PLAYER, true), + ); + }; + + mob_arc + } +} + +impl NBTStorage for BlazeEntity {} + +impl Mob for BlazeEntity { + fn get_mob_entity(&self) -> &MobEntity { + &self.entity + } +} diff --git a/pumpkin/src/entity/mob/creeper.rs b/pumpkin/src/entity/mob/creeper.rs index 089d654a2..01098e15d 100644 --- a/pumpkin/src/entity/mob/creeper.rs +++ b/pumpkin/src/entity/mob/creeper.rs @@ -3,8 +3,6 @@ use std::sync::{ atomic::{AtomicBool, AtomicI32, Ordering}, }; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::item_stack::ItemStack; use pumpkin_data::{ entity::EntityType, @@ -20,7 +18,7 @@ use crate::entity::{ Entity, EntityBase, EntityBaseFuture, NBTStorage, NbtFuture, ai::goal::{ active_target::ActiveTargetGoal, creeper_ignite::CreeperIgniteGoal, - look_around::LookAroundGoal, look_at_entity::LookAtEntityGoal, + look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal, melee_attack::MeleeAttackGoal, revenge::RevengeGoal, swim::SwimGoal, wander_around::WanderAroundGoal, }, @@ -74,7 +72,7 @@ impl CreeperEntity { 6, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 8.0), ); - goal_selector.add_goal(6, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(6, Box::new(RandomLookAroundGoal::default())); target_selector.add_goal( 1, @@ -117,11 +115,6 @@ impl CreeperEntity { // TODO: spawn area effect cloud with potion effects entity.remove().await; } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new().add(Attributes::MOVEMENT_SPEED, 0.25) - } } impl NBTStorage for CreeperEntity { diff --git a/pumpkin/src/entity/mob/enderman.rs b/pumpkin/src/entity/mob/enderman.rs index 10f0df842..140dff719 100644 --- a/pumpkin/src/entity/mob/enderman.rs +++ b/pumpkin/src/entity/mob/enderman.rs @@ -3,7 +3,6 @@ use std::sync::{ atomic::{AtomicBool, Ordering}, }; -use crate::entity::attributes::AttributeBuilder; use crate::entity::attributes::Modifier; use crate::entity::attributes::ModifierOperation; use pumpkin_data::attributes::Attributes; @@ -36,7 +35,7 @@ use crate::entity::{ ai::{ goal::{ GoalFuture, active_target::ActiveTargetGoal, chase_player::ChasePlayerGoal, - look_around::LookAroundGoal, look_at_entity::LookAtEntityGoal, + look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal, melee_attack::MeleeAttackGoal, pick_up_block::PickUpBlockGoal, place_block::PlaceBlockGoal, revenge::RevengeGoal, swim::SwimGoal, teleport_towards_player::TeleportTowardsPlayerGoal, wander_around::WanderAroundGoal, @@ -101,7 +100,7 @@ impl EndermanEntity { 8, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 8.0), ); - goal_selector.add_goal(8, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); goal_selector.add_goal(10, Box::new(PlaceBlockGoal::new(mob_arc.clone()))); goal_selector.add_goal(11, Box::new(PickUpBlockGoal::new(mob_arc.clone()))); @@ -116,16 +115,6 @@ impl EndermanEntity { mob_arc } - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::ATTACK_DAMAGE, 7.0) - .add(Attributes::FOLLOW_RANGE, 64.0) - .add(Attributes::MOVEMENT_SPEED, 0.3) - .add(Attributes::STEP_HEIGHT, 1.0) - .add(Attributes::MAX_HEALTH, 40.0) - } - pub async fn teleport_randomly(&self) -> bool { let entity = &self.mob_entity.living_entity.entity; let pos = entity.pos.load(); diff --git a/pumpkin/src/entity/mob/mod.rs b/pumpkin/src/entity/mob/mod.rs index 14d3305ed..252085841 100644 --- a/pumpkin/src/entity/mob/mod.rs +++ b/pumpkin/src/entity/mob/mod.rs @@ -26,6 +26,7 @@ use tokio::sync::Mutex; use uuid::Uuid; pub mod bat; +pub mod blaze; pub mod creeper; pub mod enderman; pub mod silverfish; diff --git a/pumpkin/src/entity/mob/silverfish.rs b/pumpkin/src/entity/mob/silverfish.rs index c79f170c7..629f4e5e7 100644 --- a/pumpkin/src/entity/mob/silverfish.rs +++ b/pumpkin/src/entity/mob/silverfish.rs @@ -1,7 +1,5 @@ use std::sync::Arc; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::entity::EntityType; use crate::entity::{ @@ -32,14 +30,6 @@ impl SilverfishEntity { mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::MAX_HEALTH, 8.0) - .add(Attributes::MOVEMENT_SPEED, 0.25) - .add(Attributes::ATTACK_DAMAGE, 1.0) - } } impl NBTStorage for SilverfishEntity {} diff --git a/pumpkin/src/entity/mob/skeleton/mod.rs b/pumpkin/src/entity/mob/skeleton/mod.rs index 1f5780dba..55389c3ea 100644 --- a/pumpkin/src/entity/mob/skeleton/mod.rs +++ b/pumpkin/src/entity/mob/skeleton/mod.rs @@ -1,13 +1,11 @@ use std::sync::{Arc, Weak}; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::entity::EntityType; use crate::entity::{ Entity, NBTStorage, ai::goal::{ - active_target::ActiveTargetGoal, look_around::LookAroundGoal, + active_target::ActiveTargetGoal, look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal, }, mob::{Mob, MobEntity}, @@ -41,7 +39,7 @@ impl SkeletonEntityBase { 8, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 8.0), ); - goal_selector.add_goal(8, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); target_selector.add_goal( 2, @@ -51,11 +49,6 @@ impl SkeletonEntityBase { mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new().add(Attributes::MOVEMENT_SPEED, 0.25) - } } impl NBTStorage for SkeletonEntityBase {} diff --git a/pumpkin/src/entity/mob/zombie/mod.rs b/pumpkin/src/entity/mob/zombie/mod.rs index ddc8e0d40..d18202b24 100644 --- a/pumpkin/src/entity/mob/zombie/mod.rs +++ b/pumpkin/src/entity/mob/zombie/mod.rs @@ -1,13 +1,11 @@ use super::{Mob, MobEntity}; use crate::entity::ai::goal::destroy_egg::DestroyEggGoal; -use crate::entity::ai::goal::look_around::LookAroundGoal; +use crate::entity::ai::goal::look_around::RandomLookAroundGoal; use crate::entity::ai::goal::zombie_attack::ZombieAttackGoal; -use crate::entity::attributes::AttributeBuilder; use crate::entity::{ Entity, NBTStorage, ai::goal::{active_target::ActiveTargetGoal, look_at_entity::LookAtEntityGoal}, }; -use pumpkin_data::attributes::Attributes; use pumpkin_data::entity::EntityType; use std::sync::{Arc, Weak}; @@ -40,27 +38,29 @@ impl ZombieEntityBase { 8, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 8.0), ); - goal_selector.add_goal(8, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); goal_selector.add_goal(3, ZombieAttackGoal::new(1.0, false)); target_selector.add_goal( 2, ActiveTargetGoal::with_default(&mob_arc.mob_entity, &EntityType::PLAYER, true), ); + target_selector.add_goal( + 3, + ActiveTargetGoal::with_default(&mob_arc.mob_entity, &EntityType::VILLAGER, true), + ); + target_selector.add_goal( + 3, + ActiveTargetGoal::with_default(&mob_arc.mob_entity, &EntityType::IRON_GOLEM, true), + ); + target_selector.add_goal( + 5, + ActiveTargetGoal::with_default(&mob_arc.mob_entity, &EntityType::TURTLE, true), + ); }; mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::MAX_HEALTH, 20.0) - .add(Attributes::MOVEMENT_SPEED, 0.23) - .add(Attributes::ATTACK_DAMAGE, 3.0) - .add(Attributes::FOLLOW_RANGE, 35.0) - .add(Attributes::ARMOR, 2.0) - } } impl NBTStorage for ZombieEntityBase {} diff --git a/pumpkin/src/entity/passive/cat.rs b/pumpkin/src/entity/passive/cat.rs index b9579480a..1838e693d 100644 --- a/pumpkin/src/entity/passive/cat.rs +++ b/pumpkin/src/entity/passive/cat.rs @@ -1,7 +1,5 @@ use std::sync::{Arc, Weak}; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::{entity::EntityType, item::Item}; use crate::entity::{ @@ -44,14 +42,6 @@ impl CatEntity { mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::MOVEMENT_SPEED, 0.3) - .add(Attributes::ATTACK_DAMAGE, 3.0) - .add(Attributes::MAX_HEALTH, 10.0) - } } impl NBTStorage for CatEntity {} diff --git a/pumpkin/src/entity/passive/chicken.rs b/pumpkin/src/entity/passive/chicken.rs index d03f216cc..e4933d15a 100644 --- a/pumpkin/src/entity/passive/chicken.rs +++ b/pumpkin/src/entity/passive/chicken.rs @@ -3,8 +3,6 @@ use std::sync::{ atomic::{AtomicI32, Ordering, Ordering::Relaxed}, }; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::item_stack::ItemStack; use pumpkin_data::{entity::EntityType, item::Item}; use rand::RngExt; @@ -12,7 +10,7 @@ use rand::RngExt; use crate::entity::{ Entity, EntityBase, EntityBaseFuture, NBTStorage, ai::goal::{ - escape_danger::EscapeDangerGoal, look_around::LookAroundGoal, + escape_danger::EscapeDangerGoal, look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal, swim::SwimGoal, tempt::TemptGoal, wander_around::WanderAroundGoal, }, @@ -58,18 +56,11 @@ impl ChickenEntity { 6, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 6.0), ); - goal_selector.add_goal(7, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(7, Box::new(RandomLookAroundGoal::default())); }; mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::MOVEMENT_SPEED, 0.25) - .add(Attributes::MAX_HEALTH, 4.0) - } } impl NBTStorage for ChickenEntity {} diff --git a/pumpkin/src/entity/passive/cow.rs b/pumpkin/src/entity/passive/cow.rs index e80bda41b..0ff25d4a4 100644 --- a/pumpkin/src/entity/passive/cow.rs +++ b/pumpkin/src/entity/passive/cow.rs @@ -1,13 +1,11 @@ use std::sync::{Arc, Weak}; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::{entity::EntityType, item::Item}; use crate::entity::{ Entity, NBTStorage, ai::goal::{ - escape_danger::EscapeDangerGoal, look_around::LookAroundGoal, + escape_danger::EscapeDangerGoal, look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal, swim::SwimGoal, tempt::TemptGoal, wander_around::WanderAroundGoal, }, @@ -41,18 +39,11 @@ impl CowEntity { 6, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 6.0), ); - goal_selector.add_goal(7, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(7, Box::new(RandomLookAroundGoal::default())); }; mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::MOVEMENT_SPEED, 0.2) - .add(Attributes::MAX_HEALTH, 10.0) - } } impl NBTStorage for CowEntity {} diff --git a/pumpkin/src/entity/passive/iron_golem.rs b/pumpkin/src/entity/passive/iron_golem.rs index dc062b106..d68cdaa94 100644 --- a/pumpkin/src/entity/passive/iron_golem.rs +++ b/pumpkin/src/entity/passive/iron_golem.rs @@ -1,12 +1,10 @@ use std::sync::{Arc, Weak}; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::entity::EntityType; use crate::entity::{ Entity, NBTStorage, - ai::goal::{look_around::LookAroundGoal, look_at_entity::LookAtEntityGoal}, + ai::goal::{look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal}, mob::{Mob, MobEntity}, }; @@ -32,21 +30,11 @@ impl IronGolemEntity { 8, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 8.0), ); - goal_selector.add_goal(8, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); }; mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::ATTACK_DAMAGE, 15.0) - .add(Attributes::KNOCKBACK_RESISTANCE, 1.0) - .add(Attributes::MOVEMENT_SPEED, 0.25) - .add(Attributes::STEP_HEIGHT, 1.0) - .add(Attributes::MAX_HEALTH, 100.0) - } } impl NBTStorage for IronGolemEntity {} diff --git a/pumpkin/src/entity/passive/pig.rs b/pumpkin/src/entity/passive/pig.rs index 445f3f662..998905094 100644 --- a/pumpkin/src/entity/passive/pig.rs +++ b/pumpkin/src/entity/passive/pig.rs @@ -1,14 +1,12 @@ use std::sync::{Arc, Weak}; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::entity::EntityType; use pumpkin_data::item::Item; use crate::entity::{ Entity, NBTStorage, ai::goal::{ - escape_danger::EscapeDangerGoal, look_around::LookAroundGoal, + escape_danger::EscapeDangerGoal, look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal, swim::SwimGoal, tempt::TemptGoal, wander_around::WanderAroundGoal, }, @@ -47,18 +45,11 @@ impl PigEntity { 7, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 6.0), ); - goal_selector.add_goal(8, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); }; mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::MOVEMENT_SPEED, 0.25) - .add(Attributes::MAX_HEALTH, 10.0) - } } impl NBTStorage for PigEntity {} diff --git a/pumpkin/src/entity/passive/sheep.rs b/pumpkin/src/entity/passive/sheep.rs index f8f1fee67..25253a1f2 100644 --- a/pumpkin/src/entity/passive/sheep.rs +++ b/pumpkin/src/entity/passive/sheep.rs @@ -3,8 +3,6 @@ use std::sync::{ atomic::{AtomicU8, Ordering}, }; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::{ entity::EntityType, item::Item, meta_data_type::MetaDataType, tracked_data::TrackedData, }; @@ -14,9 +12,9 @@ use pumpkin_protocol::java::client::play::Metadata; use crate::entity::{ Entity, EntityBaseFuture, NBTStorage, NbtFuture, ai::goal::{ - eat_grass::EatGrassGoal, escape_danger::EscapeDangerGoal, look_around::LookAroundGoal, - look_at_entity::LookAtEntityGoal, swim::SwimGoal, tempt::TemptGoal, - wander_around::WanderAroundGoal, + eat_grass::EatGrassGoal, escape_danger::EscapeDangerGoal, + look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal, swim::SwimGoal, + tempt::TemptGoal, wander_around::WanderAroundGoal, }, mob::{Mob, MobEntity}, }; @@ -53,7 +51,7 @@ impl SheepEntity { 7, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 6.0), ); - goal_selector.add_goal(8, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); }; mob_arc @@ -77,7 +75,7 @@ impl SheepEntity { .living_entity .entity .send_meta_data(&[Metadata::new( - TrackedData::COLOR_ID, + TrackedData::WOOL_ID, MetaDataType::BYTE, byte as i8, )]) @@ -97,13 +95,6 @@ impl SheepEntity { }; self.set_packed_and_sync(byte).await; } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::MOVEMENT_SPEED, 0.23) - .add(Attributes::MAX_HEALTH, 8.0) - } } impl NBTStorage for SheepEntity { diff --git a/pumpkin/src/entity/passive/snow_golem.rs b/pumpkin/src/entity/passive/snow_golem.rs index 3bce10131..b4bb4489e 100644 --- a/pumpkin/src/entity/passive/snow_golem.rs +++ b/pumpkin/src/entity/passive/snow_golem.rs @@ -1,12 +1,10 @@ use std::sync::{Arc, Weak}; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::entity::EntityType; use crate::entity::{ Entity, NBTStorage, - ai::goal::{look_around::LookAroundGoal, look_at_entity::LookAtEntityGoal}, + ai::goal::{look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal}, mob::{Mob, MobEntity}, }; @@ -32,18 +30,11 @@ impl SnowGolemEntity { 8, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 8.0), ); - goal_selector.add_goal(8, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); }; mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::ATTACK_DAMAGE, 0.0) - .add(Attributes::MOVEMENT_SPEED, 0.2) - } } impl NBTStorage for SnowGolemEntity {} diff --git a/pumpkin/src/entity/passive/wolf.rs b/pumpkin/src/entity/passive/wolf.rs index 78e5bfa6d..cc2b0bf36 100644 --- a/pumpkin/src/entity/passive/wolf.rs +++ b/pumpkin/src/entity/passive/wolf.rs @@ -1,13 +1,11 @@ use std::sync::{Arc, Weak}; -use crate::entity::attributes::AttributeBuilder; -use pumpkin_data::attributes::Attributes; use pumpkin_data::entity::EntityType; use pumpkin_data::item::Item; use crate::entity::{ Entity, NBTStorage, - ai::goal::{beg::BegGoal, look_around::LookAroundGoal, look_at_entity::LookAtEntityGoal}, + ai::goal::{beg::BegGoal, look_around::RandomLookAroundGoal, look_at_entity::LookAtEntityGoal}, mob::{Mob, MobEntity}, }; @@ -32,19 +30,12 @@ impl WolfEntity { 8, LookAtEntityGoal::with_default(mob_weak, &EntityType::PLAYER, 8.0), ); - goal_selector.add_goal(8, Box::new(LookAroundGoal::default())); + goal_selector.add_goal(8, Box::new(RandomLookAroundGoal::default())); goal_selector.add_goal(9, BegGoal::new(8.0, &[&Item::BONE])); }; mob_arc } - - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new() - .add(Attributes::MOVEMENT_SPEED, 0.3) - .add(Attributes::MAX_HEALTH, 8.0) - } } impl NBTStorage for WolfEntity {} diff --git a/pumpkin/src/entity/player.rs b/pumpkin/src/entity/player.rs index b632c0ca6..7f6f05fd5 100644 --- a/pumpkin/src/entity/player.rs +++ b/pumpkin/src/entity/player.rs @@ -28,7 +28,6 @@ use tokio::task::JoinHandle; use tracing::{debug, warn}; use uuid::Uuid; -use crate::entity::attributes::AttributeBuilder; use pumpkin_data::attributes::Attributes; use pumpkin_data::block_properties::{BlockProperties, EnumVariants, HorizontalFacing}; use pumpkin_data::damage::DamageType; @@ -597,11 +596,6 @@ impl Player { } } - #[must_use] - pub fn create_attributes() -> AttributeBuilder { - AttributeBuilder::new().add(Attributes::MOVEMENT_SPEED, 0.1) - } - /// Spawns a task associated with this player-client. All tasks spawned with this method are awaited /// when the client. This means tasks should complete in a reasonable amount of time or select /// on `Self::await_close_interrupt` to cancel the task when the client is closed diff --git a/pumpkin/src/entity/type.rs b/pumpkin/src/entity/type.rs index 8bdd55ae2..1689c0e43 100644 --- a/pumpkin/src/entity/type.rs +++ b/pumpkin/src/entity/type.rs @@ -5,6 +5,7 @@ use pumpkin_util::math::vector3::Vector3; use uuid::Uuid; use crate::entity::boss::ender_dragon::EnderDragonEntity; +use crate::entity::mob::blaze::BlazeEntity; use crate::entity::mob::zombie::zombie_villager::ZombieVillagerEntity; use crate::{ entity::{ @@ -59,6 +60,7 @@ pub async fn from_type( id if id == EntityType::CREEPER.id => CreeperEntity::new(entity).await, id if id == EntityType::ENDERMAN.id => EndermanEntity::new(entity).await, + id if id == EntityType::BLAZE.id => BlazeEntity::new(entity).await, id if id == EntityType::CAT.id => CatEntity::new(entity).await, id if id == EntityType::CHICKEN.id => ChickenEntity::new(entity).await, id if id == EntityType::COW.id => CowEntity::new(entity).await, @@ -80,10 +82,10 @@ pub async fn from_type( id if id == EntityType::SILVERFISH.id => SilverfishEntity::new(entity).await, // Fallback Entity _ => { - if entity_type.max_health.is_some() { - Arc::new(LivingEntity::new(entity)) - } else { + if entity_type.attributes.is_empty() { Arc::new(entity) + } else { + Arc::new(LivingEntity::new(entity)) } } }; diff --git a/pumpkin/src/server/mod.rs b/pumpkin/src/server/mod.rs index dd78a9c9b..bdded0a6a 100644 --- a/pumpkin/src/server/mod.rs +++ b/pumpkin/src/server/mod.rs @@ -249,9 +249,6 @@ impl Server { }; let server = Arc::new(server); - // Initialize attribute registry for all entities - crate::entity::attributes::init_all_attributes(); - let server_clone = server.clone(); tokio::spawn(async move { server_clone