diff --git a/docs/.vitepress/theme/components/content/CodeHeader.vue b/docs/.vitepress/theme/components/content/CodeHeader.vue
new file mode 100644
index 00000000..a33cc6f7
--- /dev/null
+++ b/docs/.vitepress/theme/components/content/CodeHeader.vue
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/.vitepress/theme/components/content/WikiImage.vue b/docs/.vitepress/theme/components/content/WikiImage.vue
new file mode 100644
index 00000000..95778d47
--- /dev/null
+++ b/docs/.vitepress/theme/components/content/WikiImage.vue
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts
index e105991e..c50c66b4 100644
--- a/docs/.vitepress/theme/index.ts
+++ b/docs/.vitepress/theme/index.ts
@@ -1,9 +1,13 @@
import DefaultTheme from 'vitepress/theme'
import MyFeatures from './components/MyFeatures.vue'
+import CodeHeader from './components/content/CodeHeader.vue'
+import WikiImage from './components/content/WikiImage.vue'
export default {
extends: DefaultTheme,
enhanceApp({ app }) {
- app.component('MyFeatures', MyFeatures)
+ app.component('MyFeatures', MyFeatures);
+ app.component('CodeHeader', CodeHeader);
+ app.component('WikiImage', WikiImage);
}
}
\ No newline at end of file
diff --git a/docs/public/assets/images/blocks/block-models/edit_material_instances.png b/docs/public/assets/images/blocks/block-models/edit_material_instances.png
new file mode 100644
index 00000000..418b2bde
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/edit_material_instances.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:07a64d0a326fa973e47c7e4615854afb1edcdda1098df6fccee947928abe9394
+size 14341
diff --git a/docs/public/assets/images/blocks/block-models/new_cube.png b/docs/public/assets/images/blocks/block-models/new_cube.png
new file mode 100644
index 00000000..d6b8c2b7
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/new_cube.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1738335ba28cbe6365e52391f0649131f7fcacffe8e8e572c479d13191ca1964
+size 23280
diff --git a/docs/public/assets/images/blocks/block-models/new_project.png b/docs/public/assets/images/blocks/block-models/new_project.png
new file mode 100644
index 00000000..5a888215
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/new_project.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8784c5c615e64a262886fe1513053d1ec73f56f334d539570a7ebc24aa6972d5
+size 21934
diff --git a/docs/public/assets/images/blocks/block-models/paper_bag.png b/docs/public/assets/images/blocks/block-models/paper_bag.png
new file mode 100644
index 00000000..afbeb7e3
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/paper_bag.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a92daafc3790c22b69f095e1ecceea0e98bcfd80d64e3c0e03519fe76dc535c
+size 211
diff --git a/docs/public/assets/images/blocks/block-models/paper_bag_bottom_fold.png b/docs/public/assets/images/blocks/block-models/paper_bag_bottom_fold.png
new file mode 100644
index 00000000..f95a359c
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/paper_bag_bottom_fold.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d8e16caef06b22928d22e4651f387ad3e4d444f2b4881787791b994ebfabd111
+size 165
diff --git a/docs/public/assets/images/blocks/block-models/paper_bag_cubes.png b/docs/public/assets/images/blocks/block-models/paper_bag_cubes.png
new file mode 100644
index 00000000..e5d6c6ab
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/paper_bag_cubes.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4dd6e93d6fae56ca3f704622635e1f84c5d595586052048a88465c359163da88
+size 18646
diff --git a/docs/public/assets/images/blocks/block-models/paper_bag_final.png b/docs/public/assets/images/blocks/block-models/paper_bag_final.png
new file mode 100644
index 00000000..d1c0eabe
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/paper_bag_final.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d84aebdd34fe2efa25c27927e6fc33d3c819482985394558bcef579bf227ee7
+size 10074
diff --git a/docs/public/assets/images/blocks/block-models/paper_bag_handle_faces_removed.png b/docs/public/assets/images/blocks/block-models/paper_bag_handle_faces_removed.png
new file mode 100644
index 00000000..a71f1f48
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/paper_bag_handle_faces_removed.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a1a182643f2c6836533515fd53fbc5fcd72d4321585030c1fa2a4a54f5259e5d
+size 58027
diff --git a/docs/public/assets/images/blocks/block-models/paper_bag_handle_uv.png b/docs/public/assets/images/blocks/block-models/paper_bag_handle_uv.png
new file mode 100644
index 00000000..1ba77cf3
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/paper_bag_handle_uv.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d24321b2f7e5ccc997e24dd0b0b11b42f37404d5b71f5ac5189e83753e13b04
+size 10661
diff --git a/docs/public/assets/images/blocks/block-models/paper_bag_side_gusset.png b/docs/public/assets/images/blocks/block-models/paper_bag_side_gusset.png
new file mode 100644
index 00000000..86d3913b
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/paper_bag_side_gusset.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65196807bef748be70fa41cb36472def34928004ad74fc4f45772cec534d017a
+size 183
diff --git a/docs/public/assets/images/blocks/block-models/paper_bag_top_removed.png b/docs/public/assets/images/blocks/block-models/paper_bag_top_removed.png
new file mode 100644
index 00000000..9aafff93
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/paper_bag_top_removed.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0bcb2470e331d3b307ab053f6a0dc4d81fb8df17cec8ef924d815a6da244a94e
+size 51890
diff --git a/docs/public/assets/images/blocks/block-models/preview_textures_applied.png b/docs/public/assets/images/blocks/block-models/preview_textures_applied.png
new file mode 100644
index 00000000..b5fee3e7
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/preview_textures_applied.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b97fd68bc1e80be9ce89beaa5d09ea6ebe334efca26e95b82c8f6762035e8ae
+size 13850
diff --git a/docs/public/assets/images/blocks/block-models/project_settings.png b/docs/public/assets/images/blocks/block-models/project_settings.png
new file mode 100644
index 00000000..67efabac
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/project_settings.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c99c3a7c8fae2fbd5a338aacb5f5119a758d8c1f0f4a8cd50876261a057a9e1a
+size 19100
diff --git a/docs/public/assets/images/blocks/block-models/root_bone.png b/docs/public/assets/images/blocks/block-models/root_bone.png
new file mode 100644
index 00000000..83e5c5ae
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/root_bone.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:039b52dc47c89832c019a79d67057460b21b11c749e0cfb521d34f29e1a5886d
+size 5425
diff --git a/docs/public/assets/images/blocks/block-models/select_edit_material_instances.png b/docs/public/assets/images/blocks/block-models/select_edit_material_instances.png
new file mode 100644
index 00000000..c062e598
--- /dev/null
+++ b/docs/public/assets/images/blocks/block-models/select_edit_material_instances.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:79d702273ff0e82435aca8fbd5f8ad53e34ef8d4b693ab7e0daf38684e775c76
+size 30339
diff --git a/docs/public/assets/images/blocks/block_tr/inventory_render_cubes.png b/docs/public/assets/images/blocks/block_tr/inventory_render_cubes.png
new file mode 100644
index 00000000..6b35ef42
--- /dev/null
+++ b/docs/public/assets/images/blocks/block_tr/inventory_render_cubes.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aec99e24c658e7386c0c1ea7424d95e8658ef18338e08ff621e91a36a9198502
+size 3400
diff --git a/docs/public/assets/images/blocks/block_tr/tr_dirt.png b/docs/public/assets/images/blocks/block_tr/tr_dirt.png
new file mode 100644
index 00000000..9c814cfa
--- /dev/null
+++ b/docs/public/assets/images/blocks/block_tr/tr_dirt.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6fdb59551d2826b1cfd2a4e9a68d997a0b2a4150a189eec023c8c103b7d5996
+size 6752
diff --git a/docs/public/assets/images/blocks/block_tr/tr_grass.png b/docs/public/assets/images/blocks/block_tr/tr_grass.png
new file mode 100644
index 00000000..28f52821
--- /dev/null
+++ b/docs/public/assets/images/blocks/block_tr/tr_grass.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c16704c3c73b3a57c56817cf68ecf7e8cba921a449f59c1024b1b3bdb56fcc8
+size 6505
diff --git a/docs/public/assets/images/blocks/block_tr/tr_log.png b/docs/public/assets/images/blocks/block_tr/tr_log.png
new file mode 100644
index 00000000..de60f45d
--- /dev/null
+++ b/docs/public/assets/images/blocks/block_tr/tr_log.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a2c2d3736045ce83d1f433074437de4909506482252221965e82fb9f3fc11c5
+size 5518
diff --git a/docs/public/assets/images/blocks/block_tr/tr_update.png b/docs/public/assets/images/blocks/block_tr/tr_update.png
new file mode 100644
index 00000000..6e66b69e
--- /dev/null
+++ b/docs/public/assets/images/blocks/block_tr/tr_update.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1f4174f1192b0c696620952afc706bc8c503f10b6da9b7b212123f9763aa87de
+size 10213
diff --git a/docs/public/assets/images/blocks/blocks-intro/compass_block_down.png b/docs/public/assets/images/blocks/blocks-intro/compass_block_down.png
new file mode 100644
index 00000000..7dda5943
--- /dev/null
+++ b/docs/public/assets/images/blocks/blocks-intro/compass_block_down.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69c8c202494fe5d3aea2e409221079dbfcf33bb62e079d6b3fd30e395d542f87
+size 199
diff --git a/docs/public/assets/images/blocks/blocks-intro/compass_block_east.png b/docs/public/assets/images/blocks/blocks-intro/compass_block_east.png
new file mode 100644
index 00000000..03b6e737
--- /dev/null
+++ b/docs/public/assets/images/blocks/blocks-intro/compass_block_east.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac966720b42252c58da40fe76af3765186147d7ea4786174415500c53c961c2f
+size 189
diff --git a/docs/public/assets/images/blocks/blocks-intro/compass_block_north.png b/docs/public/assets/images/blocks/blocks-intro/compass_block_north.png
new file mode 100644
index 00000000..036b7644
--- /dev/null
+++ b/docs/public/assets/images/blocks/blocks-intro/compass_block_north.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ce0f44586cd447d1d21a689416e760cff530767d412e51feb8b2566eaa1a19a
+size 201
diff --git a/docs/public/assets/images/blocks/blocks-intro/compass_block_south.png b/docs/public/assets/images/blocks/blocks-intro/compass_block_south.png
new file mode 100644
index 00000000..7b391890
--- /dev/null
+++ b/docs/public/assets/images/blocks/blocks-intro/compass_block_south.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3de979b846fd421edb8f57a9c5d8ec9cc3b2c46347c4cca52628e6f9e9d4ea0e
+size 200
diff --git a/docs/public/assets/images/blocks/blocks-intro/compass_block_up.png b/docs/public/assets/images/blocks/blocks-intro/compass_block_up.png
new file mode 100644
index 00000000..eadc6563
--- /dev/null
+++ b/docs/public/assets/images/blocks/blocks-intro/compass_block_up.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8e4562bec613402ef2cd2ce2ff6eebf1304bdba2b861c5d95dbc352254a3f2c
+size 196
diff --git a/docs/public/assets/images/blocks/blocks-intro/compass_block_west.png b/docs/public/assets/images/blocks/blocks-intro/compass_block_west.png
new file mode 100644
index 00000000..44d64e7c
--- /dev/null
+++ b/docs/public/assets/images/blocks/blocks-intro/compass_block_west.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea00b943a462c8ae491c7436aea1413491313c8add42511279186ff606beddee
+size 195
diff --git a/docs/public/assets/images/blocks/custom-crops/model.png b/docs/public/assets/images/blocks/custom-crops/model.png
new file mode 100644
index 00000000..b66c7c48
--- /dev/null
+++ b/docs/public/assets/images/blocks/custom-crops/model.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d73fd3398830b330aff08404c60b5ba9e955ebdd6b78a174ad66ef4751c948d5
+size 39877
diff --git a/docs/public/assets/images/blocks/custom-fluids/fluid_display.png b/docs/public/assets/images/blocks/custom-fluids/fluid_display.png
new file mode 100644
index 00000000..48ebdb2f
--- /dev/null
+++ b/docs/public/assets/images/blocks/custom-fluids/fluid_display.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7929a925650520544d602a676e8e44bac6919a5836f5324a8e8ae76b595a374f
+size 2698
diff --git a/docs/public/assets/images/blocks/custom-trees/decaying_leaves_showcase_example.png b/docs/public/assets/images/blocks/custom-trees/decaying_leaves_showcase_example.png
new file mode 100644
index 00000000..8736c4ab
--- /dev/null
+++ b/docs/public/assets/images/blocks/custom-trees/decaying_leaves_showcase_example.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f6862c011cf68eeec8d259031ea859ce4b7122e2d0245cdd6ff234b21604be63
+size 109498
diff --git a/docs/public/assets/images/blocks/custom-trees/export_structures.png b/docs/public/assets/images/blocks/custom-trees/export_structures.png
new file mode 100644
index 00000000..170a431f
--- /dev/null
+++ b/docs/public/assets/images/blocks/custom-trees/export_structures.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aea638d4a6d033d7b947237b92ff4630f1b1564cc7a4f8f2190baadbbb2293c6
+size 434634
diff --git a/docs/public/assets/images/blocks/custom-trees/export_tree.png b/docs/public/assets/images/blocks/custom-trees/export_tree.png
new file mode 100644
index 00000000..4bf7dc40
--- /dev/null
+++ b/docs/public/assets/images/blocks/custom-trees/export_tree.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b637a6e303f0646083f192dbeec6bd4973168de1972dfb3145e45e0c9f9870a
+size 430629
diff --git a/docs/public/assets/images/blocks/custom-trees/result.png b/docs/public/assets/images/blocks/custom-trees/result.png
new file mode 100644
index 00000000..6ab15f06
--- /dev/null
+++ b/docs/public/assets/images/blocks/custom-trees/result.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a357ed0f60f7dd2b49bad0ab883892d745a9a90c81858c7b5de00810c6de7412
+size 396435
diff --git a/docs/public/assets/images/blocks/flipbook-textures/animated_texture_1.gif b/docs/public/assets/images/blocks/flipbook-textures/animated_texture_1.gif
new file mode 100644
index 00000000..d9cc4daa
--- /dev/null
+++ b/docs/public/assets/images/blocks/flipbook-textures/animated_texture_1.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:06a068ef2b881dd0d10cf3da20bd77d1be9bb204ac256109bd191fdcf8f1062d
+size 155264
diff --git a/docs/public/assets/images/blocks/flipbook-textures/animated_texture_2.gif b/docs/public/assets/images/blocks/flipbook-textures/animated_texture_2.gif
new file mode 100644
index 00000000..81a2db6e
--- /dev/null
+++ b/docs/public/assets/images/blocks/flipbook-textures/animated_texture_2.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a0264cf71f8bf604ca742e1c20d117d082cd119c73c903d31309ded7c3744b30
+size 70809
diff --git a/docs/public/assets/images/blocks/glass-block/glass_showcase.png b/docs/public/assets/images/blocks/glass-block/glass_showcase.png
new file mode 100644
index 00000000..bac2d57d
--- /dev/null
+++ b/docs/public/assets/images/blocks/glass-block/glass_showcase.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7cdaa0de10836f4e80a45e7106afbe36e1f65873e8802d9ac6574885069d3233
+size 2276694
diff --git a/docs/public/assets/images/blocks/ore-loot/result.gif b/docs/public/assets/images/blocks/ore-loot/result.gif
new file mode 100644
index 00000000..28db61ba
--- /dev/null
+++ b/docs/public/assets/images/blocks/ore-loot/result.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:10c3ee09bff4fc180f648503e6dcb31719c4f41aa5595b951aabefb6674a8102
+size 421964
diff --git a/docs/public/assets/images/blocks/precise-interaction/double_flower_pot.png b/docs/public/assets/images/blocks/precise-interaction/double_flower_pot.png
new file mode 100644
index 00000000..e8735c78
--- /dev/null
+++ b/docs/public/assets/images/blocks/precise-interaction/double_flower_pot.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0dff083ff2967f5012e1d8590ad8dccc1edc9677d2f698134ea9f05ce9263f51
+size 16807
diff --git a/docs/public/assets/images/blocks/precise-interaction/pigeonholes.png b/docs/public/assets/images/blocks/precise-interaction/pigeonholes.png
new file mode 100644
index 00000000..11798809
--- /dev/null
+++ b/docs/public/assets/images/blocks/precise-interaction/pigeonholes.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aa873a5a0d959d4da7927c1de1196271e1799ece523234d86f96a6761018a124
+size 18296
diff --git a/docs/public/assets/images/blocks/precise-interaction/showcase.png b/docs/public/assets/images/blocks/precise-interaction/showcase.png
new file mode 100644
index 00000000..76ae9a1f
--- /dev/null
+++ b/docs/public/assets/images/blocks/precise-interaction/showcase.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2d346ab415a87a57b7e083f9aee45446aa6c4049d321c367556b382fe6c85caf
+size 320648
diff --git a/docs/public/assets/images/blocks/precise-rotation/model_bones.png b/docs/public/assets/images/blocks/precise-rotation/model_bones.png
new file mode 100644
index 00000000..e39129c0
--- /dev/null
+++ b/docs/public/assets/images/blocks/precise-rotation/model_bones.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2372769d4c59bfb6298f76de9a1bafcf76dbbce210349d91c10a4ff37fe605a0
+size 40220
diff --git a/docs/public/assets/images/blocks/precise-rotation/result.png b/docs/public/assets/images/blocks/precise-rotation/result.png
new file mode 100644
index 00000000..d09a7401
--- /dev/null
+++ b/docs/public/assets/images/blocks/precise-rotation/result.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:597861d8d35b8c01eac566e34bb9a11bac13625638e5a691cd13ca21b043ffb8
+size 61297
diff --git a/docs/public/assets/images/blocks/precise-rotation/showcase.png b/docs/public/assets/images/blocks/precise-rotation/showcase.png
new file mode 100644
index 00000000..09d0d5c5
--- /dev/null
+++ b/docs/public/assets/images/blocks/precise-rotation/showcase.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb9315ba16171880f0e9cbe8de21e9c25601835c6c87d9dada36f4145ba0e956
+size 229898
diff --git a/docs/public/assets/images/commands/BClogo.png b/docs/public/assets/images/commands/BClogo.png
new file mode 100644
index 00000000..f75098ce
--- /dev/null
+++ b/docs/public/assets/images/commands/BClogo.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1e405f2cb22b0fb9dbf161d0494f016bbf70299f45d05263fd51fd3ea3e3a15f
+size 224219
diff --git a/docs/public/assets/images/commands/chainCommandBlock.png b/docs/public/assets/images/commands/chainCommandBlock.png
new file mode 100644
index 00000000..d4ce51a6
--- /dev/null
+++ b/docs/public/assets/images/commands/chainCommandBlock.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13e4bf03e114cbe7d6fac1ed20e4d97dc73e0325284d29b89580aae71aed6716
+size 351
diff --git a/docs/public/assets/images/commands/chainConditionalCommandBlock.png b/docs/public/assets/images/commands/chainConditionalCommandBlock.png
new file mode 100644
index 00000000..17db79de
--- /dev/null
+++ b/docs/public/assets/images/commands/chainConditionalCommandBlock.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:27a76b6c180c8df809553f341e3ce60c68fd80812a98626155f84849af96229e
+size 362
diff --git a/docs/public/assets/images/commands/commandBlockChain/3.png b/docs/public/assets/images/commands/commandBlockChain/3.png
new file mode 100644
index 00000000..e3924399
--- /dev/null
+++ b/docs/public/assets/images/commands/commandBlockChain/3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac77c9336a0accf69401418e0194d7318f077e51a2e3fd037f215bea4c7f7c43
+size 3630
diff --git a/docs/public/assets/images/commands/commandBlockChain/4.png b/docs/public/assets/images/commands/commandBlockChain/4.png
new file mode 100644
index 00000000..ff4d672b
--- /dev/null
+++ b/docs/public/assets/images/commands/commandBlockChain/4.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2ebdc2f0f1480dcd0ad5c9abb6e05908d1660488e005d6d59c72d847e206ecb
+size 3631
diff --git a/docs/public/assets/images/commands/commandBlockChain/6.png b/docs/public/assets/images/commands/commandBlockChain/6.png
new file mode 100644
index 00000000..18206b9c
--- /dev/null
+++ b/docs/public/assets/images/commands/commandBlockChain/6.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c8febb64d5a5c8d3546ddb1c4db5a933c8a21a979f56befcaad310c8ea70f23a
+size 3749
diff --git a/docs/public/assets/images/commands/commandBlockChain/7.png b/docs/public/assets/images/commands/commandBlockChain/7.png
new file mode 100644
index 00000000..6833d3ea
--- /dev/null
+++ b/docs/public/assets/images/commands/commandBlockChain/7.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c92a9a16b56ee268b1802557bd1d6536cc22b1711d5422503a4d08a11d3cc252
+size 3809
diff --git a/docs/public/assets/images/commands/commandBlockChain/8.png b/docs/public/assets/images/commands/commandBlockChain/8.png
new file mode 100644
index 00000000..8cbc49b7
--- /dev/null
+++ b/docs/public/assets/images/commands/commandBlockChain/8.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ab94f2e3c5bdf7fc0f6193b16512b1286763f949d2794ab03bbc76b12bee8958
+size 3831
diff --git a/docs/public/assets/images/commands/commandBlockUI.png b/docs/public/assets/images/commands/commandBlockUI.png
new file mode 100644
index 00000000..ff1499b5
--- /dev/null
+++ b/docs/public/assets/images/commands/commandBlockUI.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2ad9a0bb1f44d620bc62d61610e2dac6b78df5ec746b7a869f36b4ddfabd7697
+size 9311
diff --git a/docs/public/assets/images/commands/contentLogHistory.png b/docs/public/assets/images/commands/contentLogHistory.png
new file mode 100644
index 00000000..e2f578a4
--- /dev/null
+++ b/docs/public/assets/images/commands/contentLogHistory.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:003ad5a4baa50f9cfee02458aeaa353b95a492156e2b440992edce518472a4e4
+size 217532
diff --git a/docs/public/assets/images/commands/contentLogToggles.png b/docs/public/assets/images/commands/contentLogToggles.png
new file mode 100644
index 00000000..9706eb0e
--- /dev/null
+++ b/docs/public/assets/images/commands/contentLogToggles.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3716199077620116d644cafee157c41fae224bbb7b64ecc44e8efd3631102d83
+size 25496
diff --git a/docs/public/assets/images/commands/correctCommandBlockPlacement.png b/docs/public/assets/images/commands/correctCommandBlockPlacement.png
new file mode 100644
index 00000000..5c9999ed
--- /dev/null
+++ b/docs/public/assets/images/commands/correctCommandBlockPlacement.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b1c0b299aa3d8be2d75777b71bcb12f6de98dc7faede0319d8d9b4084e691b43
+size 41454
diff --git a/docs/public/assets/images/commands/gametick.png b/docs/public/assets/images/commands/gametick.png
new file mode 100644
index 00000000..1b899bbc
--- /dev/null
+++ b/docs/public/assets/images/commands/gametick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ff205db421e6cd219d61efcf87e61b3c530a790245299c8af5ec487139affbb8
+size 12557
diff --git a/docs/public/assets/images/commands/hover_note.png b/docs/public/assets/images/commands/hover_note.png
new file mode 100644
index 00000000..067318c0
--- /dev/null
+++ b/docs/public/assets/images/commands/hover_note.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96f72eadef0e52edee6e0e2f14a18eb36d0b50cab174035f391d66aef8b6c5c6
+size 779633
diff --git a/docs/public/assets/images/commands/impulseCommandBlock.png b/docs/public/assets/images/commands/impulseCommandBlock.png
new file mode 100644
index 00000000..b79032af
--- /dev/null
+++ b/docs/public/assets/images/commands/impulseCommandBlock.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0a5c3662639ecb04c5cd5c50886a9ef0133685c2f641f006cc5b4adb4749b8c1
+size 358
diff --git a/docs/public/assets/images/commands/impulseConditionalCommandBlock.png b/docs/public/assets/images/commands/impulseConditionalCommandBlock.png
new file mode 100644
index 00000000..fcca4944
--- /dev/null
+++ b/docs/public/assets/images/commands/impulseConditionalCommandBlock.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9ad967abc2256284b232feac9f7577ca7cf586ef74fd639ac984ee795887ad0
+size 359
diff --git a/docs/public/assets/images/commands/incorrectCommandBlockPlacement.png b/docs/public/assets/images/commands/incorrectCommandBlockPlacement.png
new file mode 100644
index 00000000..2a607b0f
--- /dev/null
+++ b/docs/public/assets/images/commands/incorrectCommandBlockPlacement.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2978580932a8865622e1045c9736d0faded28338111653b91ba1b72154dadf1a
+size 44202
diff --git a/docs/public/assets/images/commands/longDivision.png b/docs/public/assets/images/commands/longDivision.png
new file mode 100644
index 00000000..b4cec2f7
--- /dev/null
+++ b/docs/public/assets/images/commands/longDivision.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cc470e025dcc80902817339a659f787a64d96ffc286d3b73c12a998d39d7b0a2
+size 103986
diff --git a/docs/public/assets/images/commands/pack_icon.png b/docs/public/assets/images/commands/pack_icon.png
new file mode 100644
index 00000000..920c3e72
--- /dev/null
+++ b/docs/public/assets/images/commands/pack_icon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f860ec422a54614dd6eef4d2b5e47b1f6afffda51c6176e33455794e10fff7df
+size 1311
diff --git a/docs/public/assets/images/commands/pasteCommandButton.png b/docs/public/assets/images/commands/pasteCommandButton.png
new file mode 100644
index 00000000..0f04df1a
--- /dev/null
+++ b/docs/public/assets/images/commands/pasteCommandButton.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f193c7236bc93ea2f74b0bbcb45385f1d76df6f23a1a95965485da1030a34eef
+size 44547
diff --git a/docs/public/assets/images/commands/repeatingCommandBlock.png b/docs/public/assets/images/commands/repeatingCommandBlock.png
new file mode 100644
index 00000000..bc4a28cc
--- /dev/null
+++ b/docs/public/assets/images/commands/repeatingCommandBlock.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f84e78fbfb39492e2cedb1bbae97da3adb899cdde6d1409cf56df38170138bf1
+size 355
diff --git a/docs/public/assets/images/commands/repeatingConditionalCommandBlock.png b/docs/public/assets/images/commands/repeatingConditionalCommandBlock.png
new file mode 100644
index 00000000..55cae3e0
--- /dev/null
+++ b/docs/public/assets/images/commands/repeatingConditionalCommandBlock.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:84d89eb779a1848eab5cce3fd82ef96d522e71e1b66bc9d9dd94488a0a52a828
+size 362
diff --git a/docs/public/assets/images/commands/timers/timer.gif b/docs/public/assets/images/commands/timers/timer.gif
new file mode 100644
index 00000000..240a4a64
--- /dev/null
+++ b/docs/public/assets/images/commands/timers/timer.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42c7c8fd3fd9742895e508ba039357200408a383a2e548a3126a77a10bb6869b
+size 1200273
diff --git a/docs/public/assets/images/concepts/animation-controllers/three_state_FSM.png b/docs/public/assets/images/concepts/animation-controllers/three_state_FSM.png
new file mode 100644
index 00000000..ce611b88
--- /dev/null
+++ b/docs/public/assets/images/concepts/animation-controllers/three_state_FSM.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:82e61a70d026afa4d3560b5b1842a5da1a835fd15909130a904a6cacfd70bc39
+size 21184
diff --git a/docs/public/assets/images/concepts/animation-controllers/two_state_FSM.png b/docs/public/assets/images/concepts/animation-controllers/two_state_FSM.png
new file mode 100644
index 00000000..7918b192
--- /dev/null
+++ b/docs/public/assets/images/concepts/animation-controllers/two_state_FSM.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:983734def5d6bf4f0ca6e45a50c2b81ad96ea43721dc142f0e2d90d932d96d5c
+size 13659
diff --git a/docs/public/assets/images/concepts/emojis/custom/annotated/glyph_E0.png b/docs/public/assets/images/concepts/emojis/custom/annotated/glyph_E0.png
new file mode 100644
index 00000000..d57d7b06
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/custom/annotated/glyph_E0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f47aa1408473da7413f5975a0f709fd1e2a697d3cec6e65d78b8d059d5e7d78d
+size 24624
diff --git a/docs/public/assets/images/concepts/emojis/custom/annotated/glyph_E1.png b/docs/public/assets/images/concepts/emojis/custom/annotated/glyph_E1.png
new file mode 100644
index 00000000..04accb78
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/custom/annotated/glyph_E1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fe2190bbf7a252906701876f397bdaf933425311487b1350a3e1fa95f9cc0e7e
+size 8235
diff --git a/docs/public/assets/images/concepts/emojis/custom/glyph_E0.png b/docs/public/assets/images/concepts/emojis/custom/glyph_E0.png
new file mode 100644
index 00000000..bc3f27a4
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/custom/glyph_E0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:416cc8b49a09bf5c2311c2562622180d7f0056c5482d0a7c708e00bc4e28418c
+size 7558
diff --git a/docs/public/assets/images/concepts/emojis/custom/glyph_E1.png b/docs/public/assets/images/concepts/emojis/custom/glyph_E1.png
new file mode 100644
index 00000000..a1e2ec71
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/custom/glyph_E1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e5bfce24efc2f31e78cf4107b684649d28f6498c12392586a77e56068680d52
+size 1477
diff --git a/docs/public/assets/images/concepts/emojis/hud/armor.png b/docs/public/assets/images/concepts/emojis/hud/armor.png
new file mode 100644
index 00000000..ddb27c1d
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/hud/armor.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eadd91e36e3c10de64fa720e4c4b9f37240323582594a0198a9adee61445bcca
+size 2922
diff --git a/docs/public/assets/images/concepts/emojis/hud/food.png b/docs/public/assets/images/concepts/emojis/hud/food.png
new file mode 100644
index 00000000..9da9c911
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/hud/food.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8078516875d9d31ea9cb59b43c2c0d339889d019a84a40c288bf340e998419af
+size 2991
diff --git a/docs/public/assets/images/concepts/emojis/hud/heart.png b/docs/public/assets/images/concepts/emojis/hud/heart.png
new file mode 100644
index 00000000..1f860f37
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/hud/heart.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:331180b8c1dc5bf5ee6efd0e3625a8a0ae767188e5f53bb5405cf38b9e67fcd0
+size 190
diff --git a/docs/public/assets/images/concepts/emojis/inventory/craft_toggle_off.png b/docs/public/assets/images/concepts/emojis/inventory/craft_toggle_off.png
new file mode 100644
index 00000000..70bfb776
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/inventory/craft_toggle_off.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6934177d026bb887779e7bec39261a0f037567cad232f2a48215043740b4d678
+size 3029
diff --git a/docs/public/assets/images/concepts/emojis/inventory/craft_toggle_on.png b/docs/public/assets/images/concepts/emojis/inventory/craft_toggle_on.png
new file mode 100644
index 00000000..a51ce23f
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/inventory/craft_toggle_on.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b5f5fd43b843975197f310cdf0b22401f491ebb7fd2f69c456deea54e5a1dbe8
+size 3025
diff --git a/docs/public/assets/images/concepts/emojis/items/crafting_table.png b/docs/public/assets/images/concepts/emojis/items/crafting_table.png
new file mode 100644
index 00000000..93dd1d73
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/items/crafting_table.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4550a7158609488529b72f00c04d289e1491c5b65b2b513bb44862d5631514b8
+size 451
diff --git a/docs/public/assets/images/concepts/emojis/items/furnace.png b/docs/public/assets/images/concepts/emojis/items/furnace.png
new file mode 100644
index 00000000..7206a776
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/items/furnace.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:632d097cee647d3fa3c2e7fcc4ed902fe16306c88475b59f93941a446809fe3c
+size 449
diff --git a/docs/public/assets/images/concepts/emojis/items/wooden_pickaxe.png b/docs/public/assets/images/concepts/emojis/items/wooden_pickaxe.png
new file mode 100644
index 00000000..618237f4
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/items/wooden_pickaxe.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48ac5bd1533375c6b2c9672eb9a9dc221d4c334024aff5e9fa4285e04db4b9de
+size 301
diff --git a/docs/public/assets/images/concepts/emojis/items/wooden_sword.png b/docs/public/assets/images/concepts/emojis/items/wooden_sword.png
new file mode 100644
index 00000000..5737c3c3
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/items/wooden_sword.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1382d4a83a893d5fca92881a4568f6b52f727295e33914b3533dceec6d53b860
+size 307
diff --git a/docs/public/assets/images/concepts/emojis/keyboard/left_click.png b/docs/public/assets/images/concepts/emojis/keyboard/left_click.png
new file mode 100644
index 00000000..88d9f7ea
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/keyboard/left_click.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b73ef78a1a19d3d00a63627b122b31465ea527ae244619fbd7a99f3b10b7aa15
+size 2991
diff --git a/docs/public/assets/images/concepts/emojis/keyboard/middle_click.png b/docs/public/assets/images/concepts/emojis/keyboard/middle_click.png
new file mode 100644
index 00000000..e46afc9d
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/keyboard/middle_click.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fe8f757e547d404196224c33a49df94301754ec085e004eaabb26e790efc86a7
+size 3010
diff --git a/docs/public/assets/images/concepts/emojis/keyboard/right_click.png b/docs/public/assets/images/concepts/emojis/keyboard/right_click.png
new file mode 100644
index 00000000..58fd96cf
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/keyboard/right_click.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2f3f21edfe0e9de9d235c1c003978d97b15766491f5cf03770d5a1642445c26
+size 3003
diff --git a/docs/public/assets/images/concepts/emojis/keyboard/small_left_click.png b/docs/public/assets/images/concepts/emojis/keyboard/small_left_click.png
new file mode 100644
index 00000000..14fb19b1
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/keyboard/small_left_click.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c44b38a76b5970561253e5eb71a9509d8c270c3e807b0667b8d21e801e83247
+size 290
diff --git a/docs/public/assets/images/concepts/emojis/keyboard/small_middle_click.png b/docs/public/assets/images/concepts/emojis/keyboard/small_middle_click.png
new file mode 100644
index 00000000..06ec5f17
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/keyboard/small_middle_click.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7eb15e79b9a1090b3f79bd552aeebd908f2dcbf0ab6e46ed633124a40c79a7d8
+size 296
diff --git a/docs/public/assets/images/concepts/emojis/keyboard/small_mouse.png b/docs/public/assets/images/concepts/emojis/keyboard/small_mouse.png
new file mode 100644
index 00000000..a4f6da4e
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/keyboard/small_mouse.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53b28eb3850297ab9a4ce90f9df1b6521bfe3e32e127b49d47cebb79b5db0352
+size 279
diff --git a/docs/public/assets/images/concepts/emojis/keyboard/small_right_click.png b/docs/public/assets/images/concepts/emojis/keyboard/small_right_click.png
new file mode 100644
index 00000000..c534e4e3
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/keyboard/small_right_click.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:da0e118a6f293a8cc57d659657aa87018d02856d639947b7cd5aaa4764c4615c
+size 286
diff --git a/docs/public/assets/images/concepts/emojis/marketplace/minecoin.png b/docs/public/assets/images/concepts/emojis/marketplace/minecoin.png
new file mode 100644
index 00000000..9e716eb5
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/marketplace/minecoin.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31cd3d24d739bad836c03043bd07ab246db478117a3023630f702ca2bd7fb141
+size 3033
diff --git a/docs/public/assets/images/concepts/emojis/marketplace/token.png b/docs/public/assets/images/concepts/emojis/marketplace/token.png
new file mode 100644
index 00000000..1a29b511
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/marketplace/token.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d96ab6e91eb84bdb3212c49cb56e9f025ccf517b53e79b0ed6be497f62cf38a2
+size 2942
diff --git a/docs/public/assets/images/concepts/emojis/new_touch/attack.png b/docs/public/assets/images/concepts/emojis/new_touch/attack.png
new file mode 100644
index 00000000..2169b6d6
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/new_touch/attack.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a62e4a633a84d494a3308c5109c68e535aae6dabeb8ddea1192e0c75c1f9e59
+size 242
diff --git a/docs/public/assets/images/concepts/emojis/new_touch/dismount.png b/docs/public/assets/images/concepts/emojis/new_touch/dismount.png
new file mode 100644
index 00000000..a22e1731
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/new_touch/dismount.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0aeed969dae25c7ec2c78dee0c7d6bbd53418e3e52e873c0811c70849bbd38e8
+size 255
diff --git a/docs/public/assets/images/concepts/emojis/new_touch/fly_down.png b/docs/public/assets/images/concepts/emojis/new_touch/fly_down.png
new file mode 100644
index 00000000..0b7b7f5e
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/new_touch/fly_down.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:859a4befa00754726683583082dfc7e90d007224b9e2b82c8786b0234079f12b
+size 257
diff --git a/docs/public/assets/images/concepts/emojis/new_touch/fly_up.png b/docs/public/assets/images/concepts/emojis/new_touch/fly_up.png
new file mode 100644
index 00000000..ffc077cb
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/new_touch/fly_up.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:713d8f5be8e5e1cca998cb0eeac7ebde61bbe027ba38224a62cf5de5a51d0467
+size 254
diff --git a/docs/public/assets/images/concepts/emojis/new_touch/joystick.png b/docs/public/assets/images/concepts/emojis/new_touch/joystick.png
new file mode 100644
index 00000000..cdc659be
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/new_touch/joystick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4e10aeeff1bbff339629ecbb5125c9155b177691e3062465475ab79c83aab491
+size 239
diff --git a/docs/public/assets/images/concepts/emojis/new_touch/jump.png b/docs/public/assets/images/concepts/emojis/new_touch/jump.png
new file mode 100644
index 00000000..9f6c5360
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/new_touch/jump.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f9648287fcadc6a2e1a03a811cb2c4c6c234f2f8c38c99824337942c4ffcffa7
+size 234
diff --git a/docs/public/assets/images/concepts/emojis/new_touch/place.png b/docs/public/assets/images/concepts/emojis/new_touch/place.png
new file mode 100644
index 00000000..938217cb
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/new_touch/place.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7fc9d2eaaa66c3f105aa0c3c38d5a100a1587875c4ddff6d6caf504fc44b1a95
+size 230
diff --git a/docs/public/assets/images/concepts/emojis/new_touch/sneak.png b/docs/public/assets/images/concepts/emojis/new_touch/sneak.png
new file mode 100644
index 00000000..5df2b847
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/new_touch/sneak.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:730ea7851674fa7fbbe29bf42a7d7de215144d1d56e65ba8f30d88e3eaca4769
+size 231
diff --git a/docs/public/assets/images/concepts/emojis/new_touch/sprint.png b/docs/public/assets/images/concepts/emojis/new_touch/sprint.png
new file mode 100644
index 00000000..1dccf406
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/new_touch/sprint.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af9c6ada457f9b1d47c3fc0148a6e6e2c859e38e9df751c6547575131e0c1e3e
+size 230
diff --git a/docs/public/assets/images/concepts/emojis/oculus/0_button.png b/docs/public/assets/images/concepts/emojis/oculus/0_button.png
new file mode 100644
index 00000000..15009292
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/0_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac00d00e1207d635c63339fd6204ac6ed4362796181a40d4415333eea4da9190
+size 2997
diff --git a/docs/public/assets/images/concepts/emojis/oculus/a_button.png b/docs/public/assets/images/concepts/emojis/oculus/a_button.png
new file mode 100644
index 00000000..1294f706
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/a_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9371d6cb51518e36ff1ea128cdae7d89a281a6f009c110fa6930ee5be3c99fcb
+size 2984
diff --git a/docs/public/assets/images/concepts/emojis/oculus/b_button.png b/docs/public/assets/images/concepts/emojis/oculus/b_button.png
new file mode 100644
index 00000000..fcab5974
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/b_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:86abeec0e0e1e60fbab9a4a2444f2d3e055b7038170ffa6e88207a3b5676c488
+size 3001
diff --git a/docs/public/assets/images/concepts/emojis/oculus/left_grip.png b/docs/public/assets/images/concepts/emojis/oculus/left_grip.png
new file mode 100644
index 00000000..01412af4
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/left_grip.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8575e37780e8115c2662d4b6bd396d24a6e935956440b083840e35461a2e13c8
+size 3006
diff --git a/docs/public/assets/images/concepts/emojis/oculus/left_stick.png b/docs/public/assets/images/concepts/emojis/oculus/left_stick.png
new file mode 100644
index 00000000..b548927d
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/left_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ebe941e85002a6515db07153f80c3271e6d5e4a61c0a627109c57b9d3389027c
+size 3144
diff --git a/docs/public/assets/images/concepts/emojis/oculus/left_trigger.png b/docs/public/assets/images/concepts/emojis/oculus/left_trigger.png
new file mode 100644
index 00000000..0ee3f055
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/left_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a98e77a3f45ebdf288c5e02ca809428975bf58821dc642261abe11fc2299d6da
+size 3072
diff --git a/docs/public/assets/images/concepts/emojis/oculus/right_grip.png b/docs/public/assets/images/concepts/emojis/oculus/right_grip.png
new file mode 100644
index 00000000..1e1bb185
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/right_grip.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8fb3f006019b8da05770131afdfb3278d7cfcce2bf6dfd4bb723307ab1d14116
+size 2999
diff --git a/docs/public/assets/images/concepts/emojis/oculus/right_stick.png b/docs/public/assets/images/concepts/emojis/oculus/right_stick.png
new file mode 100644
index 00000000..cb0a668a
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/right_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61b5d8e8a0dd676566df7ec53ad566f3118744bf4aef1610d01c9b0c2edabe12
+size 3153
diff --git a/docs/public/assets/images/concepts/emojis/oculus/right_trigger.png b/docs/public/assets/images/concepts/emojis/oculus/right_trigger.png
new file mode 100644
index 00000000..7892b0b5
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/right_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:20b4652da034429c7d041bf7f1ed3243dfd14ef4cf356f85bc9c8a5fc67d1e08
+size 3090
diff --git a/docs/public/assets/images/concepts/emojis/oculus/x_button.png b/docs/public/assets/images/concepts/emojis/oculus/x_button.png
new file mode 100644
index 00000000..16cc4b92
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/x_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5082aea2c84dbdb952a209e89fdea1599e8aaa75205f56d63904359df3d184b6
+size 3000
diff --git a/docs/public/assets/images/concepts/emojis/oculus/y_button.png b/docs/public/assets/images/concepts/emojis/oculus/y_button.png
new file mode 100644
index 00000000..694f2adb
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/oculus/y_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:88636279ed642820e4b6472fd4b04fbb31b982c8247cd319ba0ddf7dd036b0d5
+size 2999
diff --git a/docs/public/assets/images/concepts/emojis/other/agent.png b/docs/public/assets/images/concepts/emojis/other/agent.png
new file mode 100644
index 00000000..d1b5284b
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/other/agent.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e6e62974d6d2f8316cf0f13b6cf10376f4d8e03d302bc72712f339c0d53c42bd
+size 3016
diff --git a/docs/public/assets/images/concepts/emojis/other/crosshair.png b/docs/public/assets/images/concepts/emojis/other/crosshair.png
new file mode 100644
index 00000000..13dbf3cf
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/other/crosshair.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11c0dcefd3e20ef9c7f7b5258a7934b85586770f408001afa1e72ce74631d0e7
+size 148
diff --git a/docs/public/assets/images/concepts/emojis/other/hollow_star.png b/docs/public/assets/images/concepts/emojis/other/hollow_star.png
new file mode 100644
index 00000000..48ba4787
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/other/hollow_star.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ffe7d3345588c104df0e124624b5b78fb54d72c0919aa7db64b9e88c1f657162
+size 207
diff --git a/docs/public/assets/images/concepts/emojis/other/immersive_reader.png b/docs/public/assets/images/concepts/emojis/other/immersive_reader.png
new file mode 100644
index 00000000..7a579251
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/other/immersive_reader.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a120d1d61725c694bdd98df01fc22f70da4abedbc8ed14c84e3681b65014252
+size 2961
diff --git a/docs/public/assets/images/concepts/emojis/other/solid_star.png b/docs/public/assets/images/concepts/emojis/other/solid_star.png
new file mode 100644
index 00000000..681c99ec
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/other/solid_star.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:28a84b55b4eebcc8e408217672a45d505141c6dbcdbd87363ca5a68f2db970f0
+size 210
diff --git a/docs/public/assets/images/concepts/emojis/playstation/circle.png b/docs/public/assets/images/concepts/emojis/playstation/circle.png
new file mode 100644
index 00000000..28588a53
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/circle.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b556d221d8027caa7460123577126368ac41d0c051fb44efb52075c6cd15984c
+size 3026
diff --git a/docs/public/assets/images/concepts/emojis/playstation/cross.png b/docs/public/assets/images/concepts/emojis/playstation/cross.png
new file mode 100644
index 00000000..440429a8
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/cross.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8bdb4f9c5d95c2a13597446eb37aa6f0bf6b3dcfbe2c4b53d155c1e950f656ca
+size 3022
diff --git a/docs/public/assets/images/concepts/emojis/playstation/dpad_down.png b/docs/public/assets/images/concepts/emojis/playstation/dpad_down.png
new file mode 100644
index 00000000..7bbed8de
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/dpad_down.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec34a26a4172201a08cdf0ff65a8de402a06cace71e7c6506ca2566411fc0d56
+size 2959
diff --git a/docs/public/assets/images/concepts/emojis/playstation/dpad_left.png b/docs/public/assets/images/concepts/emojis/playstation/dpad_left.png
new file mode 100644
index 00000000..f83597f8
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/dpad_left.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e32d429e5e3fa3a6c416319ace5634f7b8aa35a1ac3dc4a346740d61e8255840
+size 2964
diff --git a/docs/public/assets/images/concepts/emojis/playstation/dpad_right.png b/docs/public/assets/images/concepts/emojis/playstation/dpad_right.png
new file mode 100644
index 00000000..64cc49ed
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/dpad_right.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:193c97c4f792d5409b150915d8b926ddbf601af4ec59e686abae4dc2eb1f112a
+size 2941
diff --git a/docs/public/assets/images/concepts/emojis/playstation/dpad_up.png b/docs/public/assets/images/concepts/emojis/playstation/dpad_up.png
new file mode 100644
index 00000000..b22e332e
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/dpad_up.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5aaddb44cf0402343c58e0a0cf3d4bb2a85ee54ffdb6135f6625181759be8ede
+size 2950
diff --git a/docs/public/assets/images/concepts/emojis/playstation/left_bumper.png b/docs/public/assets/images/concepts/emojis/playstation/left_bumper.png
new file mode 100644
index 00000000..172bb3a4
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/left_bumper.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3d3ec14f6963a1ddaf0b1d5f1b0381cd36b53df08bf2b9fee305d0e48a1d333c
+size 2939
diff --git a/docs/public/assets/images/concepts/emojis/playstation/left_stick.png b/docs/public/assets/images/concepts/emojis/playstation/left_stick.png
new file mode 100644
index 00000000..c8e210e0
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/left_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:96da6f63024dd27ee35e62fafcd7b6ae74b75eab9e2a2999a73101ac5eacdf16
+size 3056
diff --git a/docs/public/assets/images/concepts/emojis/playstation/left_trigger.png b/docs/public/assets/images/concepts/emojis/playstation/left_trigger.png
new file mode 100644
index 00000000..9d96eb80
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/left_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5a5f7c68fd1e97097bb40012d40a1b7e25ca0a86fbbdfcce10276c41d134e32d
+size 2966
diff --git a/docs/public/assets/images/concepts/emojis/playstation/options_share.png b/docs/public/assets/images/concepts/emojis/playstation/options_share.png
new file mode 100644
index 00000000..a296f7b6
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/options_share.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e121241c78ae49387e534ad2f753596d4811bb6522821fd9367a6abfac0d9bb6
+size 2961
diff --git a/docs/public/assets/images/concepts/emojis/playstation/right_bumper.png b/docs/public/assets/images/concepts/emojis/playstation/right_bumper.png
new file mode 100644
index 00000000..480c8df7
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/right_bumper.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9f7d3c7d1a7c89341b05d56f43e553730b9d44cecad122d8aad91cffb073aa9
+size 2958
diff --git a/docs/public/assets/images/concepts/emojis/playstation/right_stick.png b/docs/public/assets/images/concepts/emojis/playstation/right_stick.png
new file mode 100644
index 00000000..22ca0e15
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/right_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01a199535b8890857e4970925d54683f5d066cf0f81f9a5886e90af5061a86d9
+size 3061
diff --git a/docs/public/assets/images/concepts/emojis/playstation/right_trigger.png b/docs/public/assets/images/concepts/emojis/playstation/right_trigger.png
new file mode 100644
index 00000000..35a6ddd0
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/right_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e69783a9be336ea81bcb4e955ed409ddfdbbe2a40f76c297aa64d9df193ba8b1
+size 2987
diff --git a/docs/public/assets/images/concepts/emojis/playstation/square.png b/docs/public/assets/images/concepts/emojis/playstation/square.png
new file mode 100644
index 00000000..603bfa5c
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/square.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71052a33e73295157e298354856f3b92c429ba646847eb9f1a0275177af878c0
+size 3015
diff --git a/docs/public/assets/images/concepts/emojis/playstation/touch_pad.png b/docs/public/assets/images/concepts/emojis/playstation/touch_pad.png
new file mode 100644
index 00000000..908835d1
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/touch_pad.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01395278e43459bae06ceea0db42461837184a086166a1ad7881566b483534f8
+size 2933
diff --git a/docs/public/assets/images/concepts/emojis/playstation/triangle.png b/docs/public/assets/images/concepts/emojis/playstation/triangle.png
new file mode 100644
index 00000000..362a82b7
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/playstation/triangle.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d65c55a047db6e15ac215c760879ed8b66247323dff128129b65b7d5bc02d460
+size 3026
diff --git a/docs/public/assets/images/concepts/emojis/switch/a_button.png b/docs/public/assets/images/concepts/emojis/switch/a_button.png
new file mode 100644
index 00000000..e9697870
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/a_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6df7395ba429233c648e4dae7c8bd72257955f6445af7711bb52491953f22218
+size 2984
diff --git a/docs/public/assets/images/concepts/emojis/switch/b_button.png b/docs/public/assets/images/concepts/emojis/switch/b_button.png
new file mode 100644
index 00000000..4ddbd06a
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/b_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:55805ca57c0c7dae157865e0a42cad6c4d975c4d9dc45d3528bc99239a33b731
+size 3001
diff --git a/docs/public/assets/images/concepts/emojis/switch/dpad_down.png b/docs/public/assets/images/concepts/emojis/switch/dpad_down.png
new file mode 100644
index 00000000..e40d188c
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/dpad_down.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6f3fc874ac0c0f89d920ba883f03504466a31aab304448d052e6ff9c8b80169d
+size 3011
diff --git a/docs/public/assets/images/concepts/emojis/switch/dpad_left.png b/docs/public/assets/images/concepts/emojis/switch/dpad_left.png
new file mode 100644
index 00000000..ffa520db
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/dpad_left.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e93d6d9362ab373a4e7172c53cc6560db1b8385153cfedc061645220d5806c6
+size 3009
diff --git a/docs/public/assets/images/concepts/emojis/switch/dpad_right.png b/docs/public/assets/images/concepts/emojis/switch/dpad_right.png
new file mode 100644
index 00000000..2131c57d
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/dpad_right.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7ee72441d8b3dbdedd3ce53382a2d26223a9a133e596f3e7d4f8635e140e4288
+size 3001
diff --git a/docs/public/assets/images/concepts/emojis/switch/dpad_up.png b/docs/public/assets/images/concepts/emojis/switch/dpad_up.png
new file mode 100644
index 00000000..02ad3783
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/dpad_up.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e06c641268ff1c2375ee58e0a964fd676c0aa6e64bf7755341b75da7c64ff378
+size 3011
diff --git a/docs/public/assets/images/concepts/emojis/switch/left_bumper.png b/docs/public/assets/images/concepts/emojis/switch/left_bumper.png
new file mode 100644
index 00000000..54730818
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/left_bumper.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:15a062ce359b2de43b3d7dad29f751c264ddaad08fd3894d07cf603e4e7e6a70
+size 2941
diff --git a/docs/public/assets/images/concepts/emojis/switch/left_stick.png b/docs/public/assets/images/concepts/emojis/switch/left_stick.png
new file mode 100644
index 00000000..91806542
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/left_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:08698a9256fe4b80e20fb160957e211c8ced2e34926dbd1c5d63721cb92d6ffd
+size 3025
diff --git a/docs/public/assets/images/concepts/emojis/switch/left_trigger.png b/docs/public/assets/images/concepts/emojis/switch/left_trigger.png
new file mode 100644
index 00000000..0c88b123
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/left_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53a707b59c16c7a61f606a4e08d4a0b05e8fdc307dcc3555db7c68584fb491d4
+size 2951
diff --git a/docs/public/assets/images/concepts/emojis/switch/minus.png b/docs/public/assets/images/concepts/emojis/switch/minus.png
new file mode 100644
index 00000000..5e8a4213
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/minus.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8115f9a06e1ee701e465aa9e3cd13d1cd85539b5e2fa58c430cf619d5eee588d
+size 2995
diff --git a/docs/public/assets/images/concepts/emojis/switch/plus.png b/docs/public/assets/images/concepts/emojis/switch/plus.png
new file mode 100644
index 00000000..26ec30f9
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/plus.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:afa7bab48589ee08f5788dc2d636218e5e4b4b76ed6ffd330ac374d7b082641d
+size 3004
diff --git a/docs/public/assets/images/concepts/emojis/switch/right_bumper.png b/docs/public/assets/images/concepts/emojis/switch/right_bumper.png
new file mode 100644
index 00000000..4e526d56
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/right_bumper.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:705cb6ab7d094e4d8865e7ab7dc51ed99ebe4df93db8e52b1e7b63ac96bca22e
+size 2962
diff --git a/docs/public/assets/images/concepts/emojis/switch/right_stick.png b/docs/public/assets/images/concepts/emojis/switch/right_stick.png
new file mode 100644
index 00000000..04a44481
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/right_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:004cd87d2a684bff9afee7207663b84f4cee7e047553d2df5bb94579abff9da2
+size 3038
diff --git a/docs/public/assets/images/concepts/emojis/switch/right_trigger.png b/docs/public/assets/images/concepts/emojis/switch/right_trigger.png
new file mode 100644
index 00000000..2831edb3
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/right_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:858565e93c9c53958ba15fab9bae39999b54d3fd3f65c35a3245016eae208494
+size 2986
diff --git a/docs/public/assets/images/concepts/emojis/switch/x_button.png b/docs/public/assets/images/concepts/emojis/switch/x_button.png
new file mode 100644
index 00000000..9bf18826
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/x_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a3508814d6e44ffb148cb7fb708d2545aa2ed5263d0eae9f3ec40011197b0d00
+size 3006
diff --git a/docs/public/assets/images/concepts/emojis/switch/y_button.png b/docs/public/assets/images/concepts/emojis/switch/y_button.png
new file mode 100644
index 00000000..dbd99e16
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/switch/y_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5aa0c10395ba5b174a858c2509787c325e17a0d5518e89e556cdd2b64ca90264
+size 3006
diff --git a/docs/public/assets/images/concepts/emojis/touch/crouch.png b/docs/public/assets/images/concepts/emojis/touch/crouch.png
new file mode 100644
index 00000000..f98cd919
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/crouch.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:51ea795d792ee5de164717fce69ae6f49e2c15b13fc1a6abbace2d92b3c29ae5
+size 3111
diff --git a/docs/public/assets/images/concepts/emojis/touch/down_arrow.png b/docs/public/assets/images/concepts/emojis/touch/down_arrow.png
new file mode 100644
index 00000000..78135bd3
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/down_arrow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1c141345544c6539961c84eecb5758707658d9f75a2582ee33ffac10c7e3ddac
+size 3161
diff --git a/docs/public/assets/images/concepts/emojis/touch/fly_down.png b/docs/public/assets/images/concepts/emojis/touch/fly_down.png
new file mode 100644
index 00000000..d690145d
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/fly_down.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:38b18932b57ad30831763094d31672d2ab0d34df702c8d39ac76444840e60b1d
+size 3094
diff --git a/docs/public/assets/images/concepts/emojis/touch/fly_up.png b/docs/public/assets/images/concepts/emojis/touch/fly_up.png
new file mode 100644
index 00000000..969489aa
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/fly_up.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:038f30b2910c8d207c706a166658f90f38c80e01a663a399157f67d16335ba9e
+size 3092
diff --git a/docs/public/assets/images/concepts/emojis/touch/jump.png b/docs/public/assets/images/concepts/emojis/touch/jump.png
new file mode 100644
index 00000000..ffdb4c8f
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/jump.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:90bbf25d6f6c1830a2c3837724d7e942de872ce88ba592f7e20b9c568fc9a4b7
+size 3123
diff --git a/docs/public/assets/images/concepts/emojis/touch/left_arrow.png b/docs/public/assets/images/concepts/emojis/touch/left_arrow.png
new file mode 100644
index 00000000..3eadeb60
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/left_arrow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:58c24b0773d78efadc7864c0ed53f4f7a6539e4cc56ae7c0948a502b47247afd
+size 3120
diff --git a/docs/public/assets/images/concepts/emojis/touch/right_arrow.png b/docs/public/assets/images/concepts/emojis/touch/right_arrow.png
new file mode 100644
index 00000000..39f6430d
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/right_arrow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ecec8888924936c8b14307c9290d18b181f1e62915b9c6487b045c2c7e908da2
+size 3149
diff --git a/docs/public/assets/images/concepts/emojis/touch/smallcrouch.png b/docs/public/assets/images/concepts/emojis/touch/smallcrouch.png
new file mode 100644
index 00000000..0a937ccf
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/smallcrouch.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:188ee5211d5b1bd100878e2ba96878d523bdf320148f6102dad041fa00ae11ce
+size 323
diff --git a/docs/public/assets/images/concepts/emojis/touch/smalldownarrow.png b/docs/public/assets/images/concepts/emojis/touch/smalldownarrow.png
new file mode 100644
index 00000000..9d4e31d5
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/smalldownarrow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1374380fae4d9605dfda77e646e4fc1a685be5413cb7828bfee5d3f4ca15398e
+size 370
diff --git a/docs/public/assets/images/concepts/emojis/touch/smallflydown.png b/docs/public/assets/images/concepts/emojis/touch/smallflydown.png
new file mode 100644
index 00000000..dcdc7dbb
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/smallflydown.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb2509dedcd79f4310d81957237cd0d5014f7904a1668ad7b43801d7d2e0979e
+size 319
diff --git a/docs/public/assets/images/concepts/emojis/touch/smallflyup.png b/docs/public/assets/images/concepts/emojis/touch/smallflyup.png
new file mode 100644
index 00000000..bef44915
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/smallflyup.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b1e6e9b5441109b3160373c59c5afa117aeb2ed7b5ae76ccf52a262e724f66d
+size 320
diff --git a/docs/public/assets/images/concepts/emojis/touch/smallinventory.png b/docs/public/assets/images/concepts/emojis/touch/smallinventory.png
new file mode 100644
index 00000000..af21d3fd
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/smallinventory.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9f13882926ce4e211fdb46e1fb89136d3bbd89b2638bb7093c76d83923c61f56
+size 270
diff --git a/docs/public/assets/images/concepts/emojis/touch/smalljump.png b/docs/public/assets/images/concepts/emojis/touch/smalljump.png
new file mode 100644
index 00000000..b5df3251
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/smalljump.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e81f2dd39faba5a7ef1ffe43181e8912ff26d5ed018a0984c48b67b1b642a88e
+size 328
diff --git a/docs/public/assets/images/concepts/emojis/touch/smallleftarrow.png b/docs/public/assets/images/concepts/emojis/touch/smallleftarrow.png
new file mode 100644
index 00000000..d0b38b3c
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/smallleftarrow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb310db7855be679478130977ef9d9ab9b0ae5131730049643782716513e5534
+size 323
diff --git a/docs/public/assets/images/concepts/emojis/touch/smallrightarrow.png b/docs/public/assets/images/concepts/emojis/touch/smallrightarrow.png
new file mode 100644
index 00000000..7ba8ffc0
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/smallrightarrow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bcf0aadb01499118977c14fa77dc490b1b20e99ce3431c3cceaae0cf505e07c2
+size 320
diff --git a/docs/public/assets/images/concepts/emojis/touch/smalluparrow.png b/docs/public/assets/images/concepts/emojis/touch/smalluparrow.png
new file mode 100644
index 00000000..1aa20ce2
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/smalluparrow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c42ac5622df60fd60555e74d7ecb0b58af2bd09a940e856d189bc33ab2c7f143
+size 356
diff --git a/docs/public/assets/images/concepts/emojis/touch/stop_flying.png b/docs/public/assets/images/concepts/emojis/touch/stop_flying.png
new file mode 100644
index 00000000..9bea8937
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/stop_flying.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8865f2480a1314f938d34fb548f9408af698c8c4e51ef7ea1cbc632171f7f431
+size 440
diff --git a/docs/public/assets/images/concepts/emojis/touch/up_arrow.png b/docs/public/assets/images/concepts/emojis/touch/up_arrow.png
new file mode 100644
index 00000000..81c4f578
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/touch/up_arrow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3d460e62069331a9cb2e57da512fb2fea64c4e0df0f850455bb6e6115626cda1
+size 3233
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/left_grab.png b/docs/public/assets/images/concepts/emojis/windowsMR/left_grab.png
new file mode 100644
index 00000000..f96004b1
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/left_grab.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a0e9bfa7ed313858123cbcc8c845b56f2541f3508e8e31f409276b3a57d8d69f
+size 2998
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/left_stick.png b/docs/public/assets/images/concepts/emojis/windowsMR/left_stick.png
new file mode 100644
index 00000000..ef705f53
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/left_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:411abc132a5c5f1e3cbd3e8c4c3402a92aaa2d0ef801122a825ed252f8830980
+size 3055
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/left_touchpad.png b/docs/public/assets/images/concepts/emojis/windowsMR/left_touchpad.png
new file mode 100644
index 00000000..a5f59488
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/left_touchpad.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:418b46a15843892d6eb1bc6b153b4a94dbe07045ba71f728db88267949126aba
+size 3027
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/left_touchpad_horizontal.png b/docs/public/assets/images/concepts/emojis/windowsMR/left_touchpad_horizontal.png
new file mode 100644
index 00000000..82b82965
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/left_touchpad_horizontal.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf7ab72c8e759800b4cc53479ced2b33cd660046877b39cc0839c1001135be58
+size 3065
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/left_touchpad_vertical.png b/docs/public/assets/images/concepts/emojis/windowsMR/left_touchpad_vertical.png
new file mode 100644
index 00000000..f81f2d07
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/left_touchpad_vertical.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a521d0d2ec6036d40ffa780c3fe9991183c3fae21ad1f5a46619d11cfe751e52
+size 3053
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/left_trigger.png b/docs/public/assets/images/concepts/emojis/windowsMR/left_trigger.png
new file mode 100644
index 00000000..16d73567
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/left_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:70d565eb57f7afa41cf4564c84a66ddd1f458c3c2d56e2717c6a4c2247b077a0
+size 2952
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/menu.png b/docs/public/assets/images/concepts/emojis/windowsMR/menu.png
new file mode 100644
index 00000000..9a9a81e8
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/menu.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7160532d38cfa395d3dbffef2fdff48fe9e1788e5135fb62707dae9869966e3c
+size 2990
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/right_grab.png b/docs/public/assets/images/concepts/emojis/windowsMR/right_grab.png
new file mode 100644
index 00000000..bf8a1990
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/right_grab.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:422476b7f2b18a6e047dbe1e2ded5d05c2c3fca96d186f0d8d3087540d4f049f
+size 2984
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/right_stick.png b/docs/public/assets/images/concepts/emojis/windowsMR/right_stick.png
new file mode 100644
index 00000000..916cfb3b
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/right_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d482decd14401b4d247ec4976453287375080adbbb677c4ae0c0299b2a6a9697
+size 3061
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/right_touchpad.png b/docs/public/assets/images/concepts/emojis/windowsMR/right_touchpad.png
new file mode 100644
index 00000000..e9e80e2e
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/right_touchpad.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b3181b922854602f09b8a51b25390ba1759b394668df9240671667865c75e05
+size 3034
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/right_touchpad_horizontal.png b/docs/public/assets/images/concepts/emojis/windowsMR/right_touchpad_horizontal.png
new file mode 100644
index 00000000..ab51fe55
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/right_touchpad_horizontal.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec11aeefb45b65d8b874f59919662e60364ae5a90000e59bb222d1c91710908a
+size 3075
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/right_touchpad_vertical.png b/docs/public/assets/images/concepts/emojis/windowsMR/right_touchpad_vertical.png
new file mode 100644
index 00000000..7a098dbf
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/right_touchpad_vertical.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:101550ab5136007775e3d6f0f30f980704391e509b2ccceafda764d85534beaa
+size 3057
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/right_trigger.png b/docs/public/assets/images/concepts/emojis/windowsMR/right_trigger.png
new file mode 100644
index 00000000..d7fb2f4b
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/right_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b8584e2799388a0e320a27a4a9238311eae0661d91397908e7be1e0b23d1361
+size 2982
diff --git a/docs/public/assets/images/concepts/emojis/windowsMR/windows.png b/docs/public/assets/images/concepts/emojis/windowsMR/windows.png
new file mode 100644
index 00000000..55a0b697
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/windowsMR/windows.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5139097be776de26b8b31ff885fe752fa0a8bd00d82399ae17173425e69ec05f
+size 3004
diff --git a/docs/public/assets/images/concepts/emojis/xbox/a_button.png b/docs/public/assets/images/concepts/emojis/xbox/a_button.png
new file mode 100644
index 00000000..aac504ec
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/a_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca0e4e7ca90a102641debe6417aad336e706ed72402d23233a28ae99bb05a0f2
+size 2999
diff --git a/docs/public/assets/images/concepts/emojis/xbox/b_button.png b/docs/public/assets/images/concepts/emojis/xbox/b_button.png
new file mode 100644
index 00000000..e45ab2d4
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/b_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd6e901a16a008eb0023f7c508609163702405878c856c6f67201af4858642b6
+size 3015
diff --git a/docs/public/assets/images/concepts/emojis/xbox/back.png b/docs/public/assets/images/concepts/emojis/xbox/back.png
new file mode 100644
index 00000000..03c5efcf
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/back.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3586bd4bcf7540726b50757036cd99da7175143518db26e8a08c9f9441729bd0
+size 3021
diff --git a/docs/public/assets/images/concepts/emojis/xbox/dpad_down.png b/docs/public/assets/images/concepts/emojis/xbox/dpad_down.png
new file mode 100644
index 00000000..960b35fc
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/dpad_down.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:044ecccde46f8acef91bd41524640469f3c7ea7b80f99c1890fc467288104511
+size 3034
diff --git a/docs/public/assets/images/concepts/emojis/xbox/dpad_left.png b/docs/public/assets/images/concepts/emojis/xbox/dpad_left.png
new file mode 100644
index 00000000..15c07e6b
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/dpad_left.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fe2b7d1e3e57fadaa49b8f3aab93ba036dfb8c1bc591414a4123979caa67ed06
+size 3032
diff --git a/docs/public/assets/images/concepts/emojis/xbox/dpad_right.png b/docs/public/assets/images/concepts/emojis/xbox/dpad_right.png
new file mode 100644
index 00000000..56067d17
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/dpad_right.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13ef3d0db3113a06195dee8a3af303d43304b15a169f9361c4d351bb5c53e300
+size 3031
diff --git a/docs/public/assets/images/concepts/emojis/xbox/dpad_up.png b/docs/public/assets/images/concepts/emojis/xbox/dpad_up.png
new file mode 100644
index 00000000..9771f71e
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/dpad_up.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:911d557574fca0f161e4dbb7eef62e0912684ad6222d403671219b7febf483eb
+size 3031
diff --git a/docs/public/assets/images/concepts/emojis/xbox/left_bumper.png b/docs/public/assets/images/concepts/emojis/xbox/left_bumper.png
new file mode 100644
index 00000000..de182960
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/left_bumper.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3961b378eca6e591c345596c5aa88d04572fb7ad045e859fdd9f015333a35bf1
+size 2944
diff --git a/docs/public/assets/images/concepts/emojis/xbox/left_stick.png b/docs/public/assets/images/concepts/emojis/xbox/left_stick.png
new file mode 100644
index 00000000..ef705f53
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/left_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:411abc132a5c5f1e3cbd3e8c4c3402a92aaa2d0ef801122a825ed252f8830980
+size 3055
diff --git a/docs/public/assets/images/concepts/emojis/xbox/left_trigger.png b/docs/public/assets/images/concepts/emojis/xbox/left_trigger.png
new file mode 100644
index 00000000..f783d5f4
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/left_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a8620dc8b1585e6598e832ac98cf85e1cca92293b3613f9e3c8bcb9533e2875
+size 2982
diff --git a/docs/public/assets/images/concepts/emojis/xbox/right_bumper.png b/docs/public/assets/images/concepts/emojis/xbox/right_bumper.png
new file mode 100644
index 00000000..50661ed9
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/right_bumper.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca2f9851ebff8c82abdb5c7f8a12f86cbfdb6d305341e3ef4a8e1fdc985d5455
+size 2964
diff --git a/docs/public/assets/images/concepts/emojis/xbox/right_stick.png b/docs/public/assets/images/concepts/emojis/xbox/right_stick.png
new file mode 100644
index 00000000..916cfb3b
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/right_stick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d482decd14401b4d247ec4976453287375080adbbb677c4ae0c0299b2a6a9697
+size 3061
diff --git a/docs/public/assets/images/concepts/emojis/xbox/right_trigger.png b/docs/public/assets/images/concepts/emojis/xbox/right_trigger.png
new file mode 100644
index 00000000..74581b1f
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/right_trigger.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00c97acd23bb05af5abfffb9a2cb32308b733a39807ebcaa8d077c4179e604bb
+size 2989
diff --git a/docs/public/assets/images/concepts/emojis/xbox/start.png b/docs/public/assets/images/concepts/emojis/xbox/start.png
new file mode 100644
index 00000000..7a441f5f
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/start.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1810ee809b9bb7ba2196edb7dcd0edf245f18e2efbe0eca3e208a54ffa03d2c
+size 2982
diff --git a/docs/public/assets/images/concepts/emojis/xbox/x_button.png b/docs/public/assets/images/concepts/emojis/xbox/x_button.png
new file mode 100644
index 00000000..fb40ab6b
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/x_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:13028a5cbb20dcdbd49a37723ae5855910b735172ed6ed7be806ce6ba013423d
+size 3029
diff --git a/docs/public/assets/images/concepts/emojis/xbox/y_button.png b/docs/public/assets/images/concepts/emojis/xbox/y_button.png
new file mode 100644
index 00000000..0a0b7bb8
--- /dev/null
+++ b/docs/public/assets/images/concepts/emojis/xbox/y_button.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b066c91c28a051e760983fd9dff7b0ffc127196247c9fc45880230f7b24fd2e
+size 3037
diff --git a/docs/public/assets/images/concepts/sounds/sound_graph.png b/docs/public/assets/images/concepts/sounds/sound_graph.png
new file mode 100644
index 00000000..bcc652f7
--- /dev/null
+++ b/docs/public/assets/images/concepts/sounds/sound_graph.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d6518208c4434edbef9ea8165ea273f53080af69ef9c711716378a43c80d62a
+size 24148
diff --git a/docs/public/assets/images/contribute/committing_changes/committing.png b/docs/public/assets/images/contribute/committing_changes/committing.png
new file mode 100644
index 00000000..6bea9578
--- /dev/null
+++ b/docs/public/assets/images/contribute/committing_changes/committing.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:297ace8f607120f7f8c1c98a334236c64dfc40226b5b1daeaa2476a4f6703fed
+size 44127
diff --git a/docs/public/assets/images/contribute/committing_changes/committing_push.png b/docs/public/assets/images/contribute/committing_changes/committing_push.png
new file mode 100644
index 00000000..e5c0d4f2
--- /dev/null
+++ b/docs/public/assets/images/contribute/committing_changes/committing_push.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4fe62ad9ea9774f9131189bb4843860bfa31ecf1b583b0c36141315418674e08
+size 36971
diff --git a/docs/public/assets/images/contribute/creating_pr/pr.png b/docs/public/assets/images/contribute/creating_pr/pr.png
new file mode 100644
index 00000000..114d638d
--- /dev/null
+++ b/docs/public/assets/images/contribute/creating_pr/pr.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c872be5ff89ae8b2364e4677b1fb5a4a03eb419bb0a6223c4608edff2d84f797
+size 39794
diff --git a/docs/public/assets/images/contribute/creating_pr/pr_2.png b/docs/public/assets/images/contribute/creating_pr/pr_2.png
new file mode 100644
index 00000000..d3bcf27a
--- /dev/null
+++ b/docs/public/assets/images/contribute/creating_pr/pr_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4d5fd10c6d6c1144a7973f6cd0b9fd456f1b2126a1e71af41fd973f8ecb30490
+size 64371
diff --git a/docs/public/assets/images/contribute/markdown/md_headings_1.png b/docs/public/assets/images/contribute/markdown/md_headings_1.png
new file mode 100644
index 00000000..23a53dcd
--- /dev/null
+++ b/docs/public/assets/images/contribute/markdown/md_headings_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf75ff6de25bca165933acb4ac1b3a0fdb5c6b68ad28d7ab87d2910094100504
+size 11812
diff --git a/docs/public/assets/images/contribute/markdown/md_headings_2.png b/docs/public/assets/images/contribute/markdown/md_headings_2.png
new file mode 100644
index 00000000..a7c61e20
--- /dev/null
+++ b/docs/public/assets/images/contribute/markdown/md_headings_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e069f2a2a63b1e09ae36296cd1953189376ad500ab53f2cff81a3527b7f524e
+size 10957
diff --git a/docs/public/assets/images/contribute/markdown/md_headings_3.png b/docs/public/assets/images/contribute/markdown/md_headings_3.png
new file mode 100644
index 00000000..a31fcd41
--- /dev/null
+++ b/docs/public/assets/images/contribute/markdown/md_headings_3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e5edb27b6df3388e865b40ccd7222d9855cad4e60ad83b2d131ae2a10475a0e
+size 8529
diff --git a/docs/public/assets/images/contribute/markdown/md_headings_4.png b/docs/public/assets/images/contribute/markdown/md_headings_4.png
new file mode 100644
index 00000000..b9d4aa10
--- /dev/null
+++ b/docs/public/assets/images/contribute/markdown/md_headings_4.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:acd63d3d0e6c78527f78583983b5d19b87a576df135f05712f9e1e0b29532cbb
+size 8362
diff --git a/docs/public/assets/images/contribute/markdown/md_headings_5.png b/docs/public/assets/images/contribute/markdown/md_headings_5.png
new file mode 100644
index 00000000..ae14e61f
--- /dev/null
+++ b/docs/public/assets/images/contribute/markdown/md_headings_5.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:372a660daf05821a5e048a992109a7c21290fa6b1351917792a7ac3ca094e756
+size 8203
diff --git a/docs/public/assets/images/contribute/markdown/md_headings_6.png b/docs/public/assets/images/contribute/markdown/md_headings_6.png
new file mode 100644
index 00000000..c0549149
--- /dev/null
+++ b/docs/public/assets/images/contribute/markdown/md_headings_6.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cb93022db328e7430dc73e3b6f846f31b0d86e3b2c39a5141c2d0980bdc3f25
+size 7899
diff --git a/docs/public/assets/images/contribute/markdown/md_headings_all.png b/docs/public/assets/images/contribute/markdown/md_headings_all.png
new file mode 100644
index 00000000..474d1313
--- /dev/null
+++ b/docs/public/assets/images/contribute/markdown/md_headings_all.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c97037a1732f59197e699cf4723399a9b9176e62598347e6351890c875dbcff7
+size 12933
diff --git a/docs/public/assets/images/contribute/npm/npm_dev.png b/docs/public/assets/images/contribute/npm/npm_dev.png
new file mode 100644
index 00000000..df973e16
--- /dev/null
+++ b/docs/public/assets/images/contribute/npm/npm_dev.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e3bba1a96f0cf30ac6b00d16a4716aaba67421687bc10e4866f690696473c30
+size 4594
diff --git a/docs/public/assets/images/contribute/setting_up_local/setup_clone.png b/docs/public/assets/images/contribute/setting_up_local/setup_clone.png
new file mode 100644
index 00000000..50fdba85
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_local/setup_clone.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b1d98361ef5e7b4fea3e9a67b89ab7c12d556cc126c46882acdf8585beaac1c
+size 18067
diff --git a/docs/public/assets/images/contribute/setting_up_local/setup_clone_2.png b/docs/public/assets/images/contribute/setting_up_local/setup_clone_2.png
new file mode 100644
index 00000000..c5049054
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_local/setup_clone_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f5ea4f3918f92ec9843d57e2a10ce432f499073da006064b9f95b2919b352a46
+size 24758
diff --git a/docs/public/assets/images/contribute/setting_up_local/setup_fork.png b/docs/public/assets/images/contribute/setting_up_local/setup_fork.png
new file mode 100644
index 00000000..28e9a9d5
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_local/setup_fork.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:039e6fe0f278e666a32db86267d3bd368a89d3eba0d414a95364fe9eb084fe02
+size 16705
diff --git a/docs/public/assets/images/contribute/setting_up_local/setup_vsc.png b/docs/public/assets/images/contribute/setting_up_local/setup_vsc.png
new file mode 100644
index 00000000..22815323
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_local/setup_vsc.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:02d4fb7ecfc351de1da2f78d3ec237d6ed23da58b548e4db6d9432359833a263
+size 58768
diff --git a/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_configure.png b/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_configure.png
new file mode 100644
index 00000000..c160799d
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_configure.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:387d1d162a14a75bd153e8ab7d291ad0347de124873900157558662d780124a3
+size 25193
diff --git a/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_download.png b/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_download.png
new file mode 100644
index 00000000..380a8000
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_download.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d33b959c4cd376bbe9c86c9ec26226b55252edbab12afbec3906b80d03e7456c
+size 42211
diff --git a/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_install.png b/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_install.png
new file mode 100644
index 00000000..aec60bcb
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_install.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:627be57eb9cf67e1060b12b45b3de9a0cff02e3a03c5059fef529f4109465c9b
+size 19046
diff --git a/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_login.png b/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_login.png
new file mode 100644
index 00000000..1c2703bd
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_software/ghdesktop/ghd_login.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:719573f15ac117882887466fa4453a01e8a109849be666528b9acd8d618b4279
+size 26723
diff --git a/docs/public/assets/images/contribute/setting_up_software/nodejs/njs_download.png b/docs/public/assets/images/contribute/setting_up_software/nodejs/njs_download.png
new file mode 100644
index 00000000..059757a9
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_software/nodejs/njs_download.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7b928bfe3b51a23ffa1f2783d6a57345ed492e4dae070e79724ba27b7993928
+size 19292
diff --git a/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_download.png b/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_download.png
new file mode 100644
index 00000000..7163c7be
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_download.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:deabbfb0a9780b888358a286ea213687a7b4e86c6ac8bd5eac10104bfc5d00e7
+size 11186
diff --git a/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_fundamentals.png b/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_fundamentals.png
new file mode 100644
index 00000000..dfcf13c6
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_fundamentals.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b0f25f2c7a40857041bb1b7d0957c8b213dd00ae7ae6aea323832b1ae21c2502
+size 24923
diff --git a/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_look.png b/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_look.png
new file mode 100644
index 00000000..cdee1469
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_look.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fe3b208647df8acbdebcf768e590501d3b38ac9e4a046bdf46ed933a85792d0d
+size 29228
diff --git a/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_productivity.png b/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_productivity.png
new file mode 100644
index 00000000..86e27e64
--- /dev/null
+++ b/docs/public/assets/images/contribute/setting_up_software/vscode/vsc_productivity.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9a6170abe703b412bb5e44cb83a46433fc6b4c03bb9e2a4a331d2ae74629589c
+size 20326
diff --git a/docs/public/assets/images/contribute/snippets/snippets.png b/docs/public/assets/images/contribute/snippets/snippets.png
new file mode 100644
index 00000000..0044e904
--- /dev/null
+++ b/docs/public/assets/images/contribute/snippets/snippets.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e81665de75fae5e0e0de8ba56b2e2965cc4f864d2ca759e01d70e8d50f2143b
+size 50635
diff --git a/docs/public/assets/images/contribute/troubleshooting/merge/merge_accept.png b/docs/public/assets/images/contribute/troubleshooting/merge/merge_accept.png
new file mode 100644
index 00000000..c1f9929f
--- /dev/null
+++ b/docs/public/assets/images/contribute/troubleshooting/merge/merge_accept.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a36ab9cb5c83a809b56e0a8bcf3e6a9faa841aff6e0bad667dda7a8a213c516
+size 56518
diff --git a/docs/public/assets/images/contribute/troubleshooting/merge/merge_branch.png b/docs/public/assets/images/contribute/troubleshooting/merge/merge_branch.png
new file mode 100644
index 00000000..46c3f976
--- /dev/null
+++ b/docs/public/assets/images/contribute/troubleshooting/merge/merge_branch.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9cee394fc8cf3da54a5fb61633f375a629f95dfb8fe85615da9151783a98a29d
+size 4336
diff --git a/docs/public/assets/images/contribute/troubleshooting/merge/merge_choose_branch.png b/docs/public/assets/images/contribute/troubleshooting/merge/merge_choose_branch.png
new file mode 100644
index 00000000..e7153e6e
--- /dev/null
+++ b/docs/public/assets/images/contribute/troubleshooting/merge/merge_choose_branch.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:663fd70002f517074e40fb8e4fdb1a3d414e0a20acf05884def567fa0092fed2
+size 22382
diff --git a/docs/public/assets/images/contribute/troubleshooting/merge/merge_commit.png b/docs/public/assets/images/contribute/troubleshooting/merge/merge_commit.png
new file mode 100644
index 00000000..4be0b9b9
--- /dev/null
+++ b/docs/public/assets/images/contribute/troubleshooting/merge/merge_commit.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:499eecf5d10af97a13021ca6ab4da4e26b69a3d9d71505c7bd61b0417c570287
+size 26414
diff --git a/docs/public/assets/images/contribute/troubleshooting/merge/merge_continue.png b/docs/public/assets/images/contribute/troubleshooting/merge/merge_continue.png
new file mode 100644
index 00000000..23a302e6
--- /dev/null
+++ b/docs/public/assets/images/contribute/troubleshooting/merge/merge_continue.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:532a6c8cf85f65e95200dc06284aeec59b9f006f6f1f7dfc59806eafe136447b
+size 23243
diff --git a/docs/public/assets/images/contribute/troubleshooting/merge/merge_merge.png b/docs/public/assets/images/contribute/troubleshooting/merge/merge_merge.png
new file mode 100644
index 00000000..8021ce91
--- /dev/null
+++ b/docs/public/assets/images/contribute/troubleshooting/merge/merge_merge.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:388dc7ece60f64295340861a2b7547070955d8468f974948f4871152e34aaf1e
+size 25033
diff --git a/docs/public/assets/images/contribute/troubleshooting/merge/merge_open.png b/docs/public/assets/images/contribute/troubleshooting/merge/merge_open.png
new file mode 100644
index 00000000..75a7bd92
--- /dev/null
+++ b/docs/public/assets/images/contribute/troubleshooting/merge/merge_open.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ff5a0e2485ec0bc32181fd8d888cd563b9b99e5406e930eb3e2b4f8c8b03dce9
+size 14747
diff --git a/docs/public/assets/images/contribute/updating_local/updating.png b/docs/public/assets/images/contribute/updating_local/updating.png
new file mode 100644
index 00000000..8edf10a9
--- /dev/null
+++ b/docs/public/assets/images/contribute/updating_local/updating.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8bfa048557dbf3bfeb6c3b49576ebbc48a5cd6d97da028efbbdea20cf7b7bde5
+size 121935
diff --git a/docs/public/assets/images/contribute/updating_local/updating_pull.png b/docs/public/assets/images/contribute/updating_local/updating_pull.png
new file mode 100644
index 00000000..19821ee6
--- /dev/null
+++ b/docs/public/assets/images/contribute/updating_local/updating_pull.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0049e1fb29b12035c171510c693486a267d34bb2829e2eef29c426305617dc71
+size 30435
diff --git a/docs/public/assets/images/discord/bao.png b/docs/public/assets/images/discord/bao.png
new file mode 100644
index 00000000..09a00553
--- /dev/null
+++ b/docs/public/assets/images/discord/bao.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1ff233fc9d2471d7de69d766270d86cdbfafc39932fca991d3eae6870e5cec32
+size 35100
diff --git a/docs/public/assets/images/discord/oss.png b/docs/public/assets/images/discord/oss.png
new file mode 100644
index 00000000..c77831a2
--- /dev/null
+++ b/docs/public/assets/images/discord/oss.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3aff7835dda5d77a545ea36496b9d6401a455aa178c4018dbe270357c9a93a22
+size 295083
diff --git a/docs/public/assets/images/documentation/tellrawshow.png b/docs/public/assets/images/documentation/tellrawshow.png
new file mode 100644
index 00000000..c8842e89
--- /dev/null
+++ b/docs/public/assets/images/documentation/tellrawshow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32515b2690620fc5b79e2f7f0c1363b092661a0dcbcaab4a0d9f0cbd237b685d
+size 140831
diff --git a/docs/public/assets/images/favicons/android-chrome-192x192.png b/docs/public/assets/images/favicons/android-chrome-192x192.png
new file mode 100644
index 00000000..526e965c
--- /dev/null
+++ b/docs/public/assets/images/favicons/android-chrome-192x192.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c24d333319ad2791d77f2007aea21595c82b92e429c45d6d9005b78f0b8dc354
+size 24838
diff --git a/docs/public/assets/images/favicons/android-chrome-256x256.png b/docs/public/assets/images/favicons/android-chrome-256x256.png
new file mode 100644
index 00000000..adc827dd
--- /dev/null
+++ b/docs/public/assets/images/favicons/android-chrome-256x256.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a8dd5de2c8c946684cbbd264de12924bd918a354bd479e7d60857e0105fa041
+size 31529
diff --git a/docs/public/assets/images/favicons/apple-touch-icon.png b/docs/public/assets/images/favicons/apple-touch-icon.png
new file mode 100644
index 00000000..02cc45ec
--- /dev/null
+++ b/docs/public/assets/images/favicons/apple-touch-icon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:305b1bfe3649c42f7752ee4759dcd13cc954f626c0d024ce92d536caf13f3cab
+size 15093
diff --git a/docs/public/assets/images/favicons/safari-pinned-tab.svg b/docs/public/assets/images/favicons/safari-pinned-tab.svg
new file mode 100644
index 00000000..a1596f78
--- /dev/null
+++ b/docs/public/assets/images/favicons/safari-pinned-tab.svg
@@ -0,0 +1,20 @@
+
+
+
diff --git a/docs/public/assets/images/gametest/gametest-form/action-form.png b/docs/public/assets/images/gametest/gametest-form/action-form.png
new file mode 100644
index 00000000..f6b8e724
--- /dev/null
+++ b/docs/public/assets/images/gametest/gametest-form/action-form.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24f5680635dee2ace990e8c02cdab6fdeeaaaa3dd4036cff1e827cd05a8288c2
+size 116312
diff --git a/docs/public/assets/images/gametest/gametest-form/message-form.png b/docs/public/assets/images/gametest/gametest-form/message-form.png
new file mode 100644
index 00000000..5c51ec57
--- /dev/null
+++ b/docs/public/assets/images/gametest/gametest-form/message-form.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:625c295ed700e674e9e537b7c667db6e841bb7d96d3754655c39bacd252e846a
+size 21463
diff --git a/docs/public/assets/images/gametest/gametest-form/modal-form.png b/docs/public/assets/images/gametest/gametest-form/modal-form.png
new file mode 100644
index 00000000..42f06fdb
--- /dev/null
+++ b/docs/public/assets/images/gametest/gametest-form/modal-form.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fda1891c9b5d435c3366c8c525c42f6942199570227b6ff1feb0aa73980aafc
+size 39625
diff --git a/docs/public/assets/images/gametest/script-server/dynamic_properties.png b/docs/public/assets/images/gametest/script-server/dynamic_properties.png
new file mode 100644
index 00000000..264d689e
--- /dev/null
+++ b/docs/public/assets/images/gametest/script-server/dynamic_properties.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37f895e01108a658d8f27fd84d472ac25df7d58623e1553bdd1e8f0348f5f222
+size 30635
diff --git a/docs/public/assets/images/guide/Guide_LOGO.ico b/docs/public/assets/images/guide/Guide_LOGO.ico
new file mode 100644
index 00000000..0741c0b2
Binary files /dev/null and b/docs/public/assets/images/guide/Guide_LOGO.ico differ
diff --git a/docs/public/assets/images/guide/Guide_LOGO.png b/docs/public/assets/images/guide/Guide_LOGO.png
new file mode 100644
index 00000000..d2159264
--- /dev/null
+++ b/docs/public/assets/images/guide/Guide_LOGO.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb76a4171cca205ca9ef5a3c2a9385b952c391440934d2a30ad6050114632594
+size 10740
diff --git a/docs/public/assets/images/guide/animation_controllers_1.png b/docs/public/assets/images/guide/animation_controllers_1.png
new file mode 100644
index 00000000..375c4838
--- /dev/null
+++ b/docs/public/assets/images/guide/animation_controllers_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:04e83cb4432e815a019d862fb570eda8cd530c4dd680fcb20198a3d26e231616
+size 210757
diff --git a/docs/public/assets/images/guide/animation_controllers_2.png b/docs/public/assets/images/guide/animation_controllers_2.png
new file mode 100644
index 00000000..7605aa96
--- /dev/null
+++ b/docs/public/assets/images/guide/animation_controllers_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6dd6ab34755cd4c466ce4d11567a8215b2445c450a7a7af6dd4031e95148eace
+size 140349
diff --git a/docs/public/assets/images/guide/block_flipbook_texture.png b/docs/public/assets/images/guide/block_flipbook_texture.png
new file mode 100644
index 00000000..42a00ec5
--- /dev/null
+++ b/docs/public/assets/images/guide/block_flipbook_texture.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f3e02741bca03dc1a026e1cc165fddf21b23699c9f898bf8923427d8f717c7e
+size 4067
diff --git a/docs/public/assets/images/guide/content_log.png b/docs/public/assets/images/guide/content_log.png
new file mode 100644
index 00000000..ecdd498c
--- /dev/null
+++ b/docs/public/assets/images/guide/content_log.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00b32f0676aa6ac326898ac9434cb1e3b0858c5a5b8b4edad691876c3adc5117
+size 113956
diff --git a/docs/public/assets/images/guide/create_entity_animation_1.png b/docs/public/assets/images/guide/create_entity_animation_1.png
new file mode 100644
index 00000000..1a1a63d3
--- /dev/null
+++ b/docs/public/assets/images/guide/create_entity_animation_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3efee73d9265b671214edb088f0d69057c3c9874f91b5736b9a12c6b8b0c3cf9
+size 122818
diff --git a/docs/public/assets/images/guide/create_entity_animation_2.png b/docs/public/assets/images/guide/create_entity_animation_2.png
new file mode 100644
index 00000000..ee7f8288
--- /dev/null
+++ b/docs/public/assets/images/guide/create_entity_animation_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:50e4815d64391d96eb784fd60711dbc797ee87ac77f7bfa320394a378677494b
+size 160775
diff --git a/docs/public/assets/images/guide/create_entity_animation_3.png b/docs/public/assets/images/guide/create_entity_animation_3.png
new file mode 100644
index 00000000..ac89118f
--- /dev/null
+++ b/docs/public/assets/images/guide/create_entity_animation_3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b19876903e6b531ab66f0ce663319aaa1c4fe6b9d7662f6f1f4f2c8f8dad09e2
+size 164689
diff --git a/docs/public/assets/images/guide/create_entity_animation_4.png b/docs/public/assets/images/guide/create_entity_animation_4.png
new file mode 100644
index 00000000..aee133fd
--- /dev/null
+++ b/docs/public/assets/images/guide/create_entity_animation_4.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a26a9de18126a50f874d102b472724704eccd7f8432812a51368288a2f1e2713
+size 182930
diff --git a/docs/public/assets/images/guide/create_entity_project_menu.png b/docs/public/assets/images/guide/create_entity_project_menu.png
new file mode 100644
index 00000000..0ed73a99
--- /dev/null
+++ b/docs/public/assets/images/guide/create_entity_project_menu.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:193461d6650fb2b71c07050c75e24bcc01dcda560932b9db1bf08e8c0bea196e
+size 97683
diff --git a/docs/public/assets/images/guide/create_entity_texture_1.png b/docs/public/assets/images/guide/create_entity_texture_1.png
new file mode 100644
index 00000000..471a866d
--- /dev/null
+++ b/docs/public/assets/images/guide/create_entity_texture_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a576dec7f17d68cf47794eb5994d53de588f821be7c5a3d5717c540c32ce294e
+size 52050
diff --git a/docs/public/assets/images/guide/create_entity_texture_2.png b/docs/public/assets/images/guide/create_entity_texture_2.png
new file mode 100644
index 00000000..e5cf81f2
--- /dev/null
+++ b/docs/public/assets/images/guide/create_entity_texture_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4332f6add341f677f33e391be1ffacd60697bf0116ed5718c556dfb5f5546718
+size 86227
diff --git a/docs/public/assets/images/guide/create_entity_workspace.png b/docs/public/assets/images/guide/create_entity_workspace.png
new file mode 100644
index 00000000..ad8b5005
--- /dev/null
+++ b/docs/public/assets/images/guide/create_entity_workspace.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:732de51084295fe929b0255e457f7b7201ad7a7f6aaa9f9aee14e71aef4e6724
+size 150194
diff --git a/docs/public/assets/images/guide/custom_entity/ghost_view.png b/docs/public/assets/images/guide/custom_entity/ghost_view.png
new file mode 100644
index 00000000..e38c2856
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_entity/ghost_view.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26f9992ed47aba143be737ea053079419284a8602c52510501ee3864c6160337
+size 57710
diff --git a/docs/public/assets/images/guide/custom_entity_1.png b/docs/public/assets/images/guide/custom_entity_1.png
new file mode 100644
index 00000000..e7a1b1e1
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_entity_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f62a688d13e775f3787815ed3876e1e11e25ec5e05eb8b0a4d8e0a8546983b9f
+size 80147
diff --git a/docs/public/assets/images/guide/custom_entity_2.jpg b/docs/public/assets/images/guide/custom_entity_2.jpg
new file mode 100644
index 00000000..b840ec8f
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_entity_2.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:093808f00efccfe1a1b87bf1984f6f3861c827a41066ad29b8069d5516ace627
+size 378725
diff --git a/docs/public/assets/images/guide/custom_item/ectoplasm_view.png b/docs/public/assets/images/guide/custom_item/ectoplasm_view.png
new file mode 100644
index 00000000..e1664b7a
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_item/ectoplasm_view.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8def98b1952352739e8587296579101e25c70d15aaa1c7d7ee3720505fd83e4e
+size 38617
diff --git a/docs/public/assets/images/guide/custom_particles_1.png b/docs/public/assets/images/guide/custom_particles_1.png
new file mode 100644
index 00000000..d0986803
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_particles_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e745a8f296a313bdc8a093ae332a10237f4f6d80f70da451f934b6df586c052f
+size 113105
diff --git a/docs/public/assets/images/guide/custom_particles_2.png b/docs/public/assets/images/guide/custom_particles_2.png
new file mode 100644
index 00000000..9aab77ec
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_particles_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36453695f7d03134a0408709104834013515f7342e40123f367a7829554c390d
+size 174634
diff --git a/docs/public/assets/images/guide/custom_particles_3.png b/docs/public/assets/images/guide/custom_particles_3.png
new file mode 100644
index 00000000..0199b44b
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_particles_3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f876615b31eee027f2893bb625ca416f800c41f2e02c36a790893edce611da49
+size 177274
diff --git a/docs/public/assets/images/guide/custom_particles_4.jpg b/docs/public/assets/images/guide/custom_particles_4.jpg
new file mode 100644
index 00000000..57f16253
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_particles_4.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c0e02a199b2fa981a3f3df42872f3272af2e34853b4c1a1e0e39f0c316887d3
+size 111740
diff --git a/docs/public/assets/images/guide/custom_particles_5.png b/docs/public/assets/images/guide/custom_particles_5.png
new file mode 100644
index 00000000..d587d18e
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_particles_5.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9d9b37f7711d79018a6ff246246de022257b85491a88a86c2d969047c6737d2
+size 734
diff --git a/docs/public/assets/images/guide/custom_particles_6.jpg b/docs/public/assets/images/guide/custom_particles_6.jpg
new file mode 100644
index 00000000..7410d1c2
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_particles_6.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c23c2e9a60bce3fc13a1c83db94771c6972ff9ef2753b35cdf114faac6869a2e
+size 80238
diff --git a/docs/public/assets/images/guide/custom_particles_7.jpg b/docs/public/assets/images/guide/custom_particles_7.jpg
new file mode 100644
index 00000000..9218d287
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_particles_7.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a68a010cc9dbcb6721639fd7af8d0be76cb2d1e29b91bd59803aa24c97891ab
+size 106510
diff --git a/docs/public/assets/images/guide/custom_particles_8.png b/docs/public/assets/images/guide/custom_particles_8.png
new file mode 100644
index 00000000..d27c9717
--- /dev/null
+++ b/docs/public/assets/images/guide/custom_particles_8.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db278ed5ae43752e7726716fc22e34e5cbaf444a92011196a6b161dbc2749430
+size 22066
diff --git a/docs/public/assets/images/guide/function_code.png b/docs/public/assets/images/guide/function_code.png
new file mode 100644
index 00000000..3cc4b455
--- /dev/null
+++ b/docs/public/assets/images/guide/function_code.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4388d56c8f1a9361c0e122e29f2eb723578011b596958fc490d427972322ce39
+size 228088
diff --git a/docs/public/assets/images/guide/function_in_game.jpg b/docs/public/assets/images/guide/function_in_game.jpg
new file mode 100644
index 00000000..35df7813
--- /dev/null
+++ b/docs/public/assets/images/guide/function_in_game.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d622a1a9fa42811a95a51822069ef0267d4a16958704830a76fea14b566d0d8
+size 176846
diff --git a/docs/public/assets/images/guide/gen_coal_ore.png b/docs/public/assets/images/guide/gen_coal_ore.png
new file mode 100644
index 00000000..21850c46
--- /dev/null
+++ b/docs/public/assets/images/guide/gen_coal_ore.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:78e397764162e8aed43a3a5cdd4bca13b7a8a011f495b5eb413d0220b6c82ea1
+size 127037
diff --git a/docs/public/assets/images/guide/non_smooth_noise_transition.jpg b/docs/public/assets/images/guide/non_smooth_noise_transition.jpg
new file mode 100644
index 00000000..828ca81f
--- /dev/null
+++ b/docs/public/assets/images/guide/non_smooth_noise_transition.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9be3ff1d8609b30571f97c2c36b10d3fd9be3376e25142778da12f6c784aadac
+size 160871
diff --git a/docs/public/assets/images/guide/ore_gen_sans_stone.jpg b/docs/public/assets/images/guide/ore_gen_sans_stone.jpg
new file mode 100644
index 00000000..cabb38ca
--- /dev/null
+++ b/docs/public/assets/images/guide/ore_gen_sans_stone.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3647fde1fff61c64670db890be745a8363641d1d0545ff40c8c92e82edfc7262
+size 171305
diff --git a/docs/public/assets/images/guide/project-setup-android/zip-addon.png b/docs/public/assets/images/guide/project-setup-android/zip-addon.png
new file mode 100644
index 00000000..f561e6b4
--- /dev/null
+++ b/docs/public/assets/images/guide/project-setup-android/zip-addon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26d35de9b6416f0ffae22383d4ac20d9e11be3ee04ba16dea10285720e718178
+size 21917
diff --git a/docs/public/assets/images/guide/project-setup/active_pack.png b/docs/public/assets/images/guide/project-setup/active_pack.png
new file mode 100644
index 00000000..be48e20f
--- /dev/null
+++ b/docs/public/assets/images/guide/project-setup/active_pack.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bca5d67855ae6d703ee258f87f99e74d5760e2d7745e1d2ff107d6a59e65a2ac
+size 38616
diff --git a/docs/public/assets/images/guide/project-setup/pack_icon.png b/docs/public/assets/images/guide/project-setup/pack_icon.png
new file mode 100644
index 00000000..9505e571
--- /dev/null
+++ b/docs/public/assets/images/guide/project-setup/pack_icon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2711aa14f6aa040fc46fc1ab740a882e041fd126b593194583d35b0506fe6208
+size 32810
diff --git a/docs/public/assets/images/guide/project-setup/settings_1.png b/docs/public/assets/images/guide/project-setup/settings_1.png
new file mode 100644
index 00000000..631a5275
--- /dev/null
+++ b/docs/public/assets/images/guide/project-setup/settings_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a91d7b5846d9ca0f7c48e84f98bdbeadf3f84a3bddfec4ec6bcbcd6ee88e8624
+size 2157
diff --git a/docs/public/assets/images/guide/project-setup/settings_2.png b/docs/public/assets/images/guide/project-setup/settings_2.png
new file mode 100644
index 00000000..ceb3e5fc
--- /dev/null
+++ b/docs/public/assets/images/guide/project-setup/settings_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:97ac9ff95a2b15a71000c0e91310dad171c2e93a373515ff3b7f5329724c477a
+size 10670
diff --git a/docs/public/assets/images/guide/render_controllers_1.jpg b/docs/public/assets/images/guide/render_controllers_1.jpg
new file mode 100644
index 00000000..a9800ae1
--- /dev/null
+++ b/docs/public/assets/images/guide/render_controllers_1.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e3a2a80da742a99640145d7a5a0409bbe2b64409bda596d26906d256a716f51
+size 140551
diff --git a/docs/public/assets/images/guide/structure_block_example.jpg b/docs/public/assets/images/guide/structure_block_example.jpg
new file mode 100644
index 00000000..fc663868
--- /dev/null
+++ b/docs/public/assets/images/guide/structure_block_example.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11d6a99500a8096383f764d96968b7c46b21160350026792623c8fb815a7a784
+size 79157
diff --git a/docs/public/assets/images/guide/trade_table_tree_1.png b/docs/public/assets/images/guide/trade_table_tree_1.png
new file mode 100644
index 00000000..03f45921
--- /dev/null
+++ b/docs/public/assets/images/guide/trade_table_tree_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71059f778991d873b37543878ec84c0593285659c662606e869cb7ae27595448
+size 48708
diff --git a/docs/public/assets/images/guide/trade_table_tree_2.png b/docs/public/assets/images/guide/trade_table_tree_2.png
new file mode 100644
index 00000000..6d639cd6
--- /dev/null
+++ b/docs/public/assets/images/guide/trade_table_tree_2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:975e84f9b07a81705f30e3ef33c3719a6677f16f8c82b53d88284c4931d406b8
+size 16403
diff --git a/docs/public/assets/images/guide/trade_table_tree_3.png b/docs/public/assets/images/guide/trade_table_tree_3.png
new file mode 100644
index 00000000..efd049b1
--- /dev/null
+++ b/docs/public/assets/images/guide/trade_table_tree_3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b87cb66b567693ddaa764ae2b1344b588d07cc7afd92b53fe87c3c45ce571c0a
+size 8136
diff --git a/docs/public/assets/images/guide/trade_table_tree_4.png b/docs/public/assets/images/guide/trade_table_tree_4.png
new file mode 100644
index 00000000..30c55767
--- /dev/null
+++ b/docs/public/assets/images/guide/trade_table_tree_4.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f77ff1d31a40f991602b65c386dc59cf63273d79b3ad9906af1586ef96539db2
+size 14495
diff --git a/docs/public/assets/images/guide/trade_table_tree_5.png b/docs/public/assets/images/guide/trade_table_tree_5.png
new file mode 100644
index 00000000..2ca210c0
--- /dev/null
+++ b/docs/public/assets/images/guide/trade_table_tree_5.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4a841e08eb640dc3eb3ee8f5a6e19abbd8679c6c440c7cdaa39396ac35ccec5
+size 23771
diff --git a/docs/public/assets/images/guide/transpiled_mcpack.png b/docs/public/assets/images/guide/transpiled_mcpack.png
new file mode 100644
index 00000000..adaebb61
--- /dev/null
+++ b/docs/public/assets/images/guide/transpiled_mcpack.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f39a13c29b76b2ea0ef02cb89cef4f97434ba42ad2e6738857036883e4b3cee6
+size 5998
diff --git a/docs/public/assets/images/guide/vsc_workspace.png b/docs/public/assets/images/guide/vsc_workspace.png
new file mode 100644
index 00000000..a495d224
--- /dev/null
+++ b/docs/public/assets/images/guide/vsc_workspace.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:79d4d0c2a62a94588e0c4d07d8baee2ec95ac1a8c27acd6e179e91de03a6d87b
+size 246970
diff --git a/docs/public/assets/images/hacktoberfest/bedrockoss.png b/docs/public/assets/images/hacktoberfest/bedrockoss.png
new file mode 100644
index 00000000..4b66b897
--- /dev/null
+++ b/docs/public/assets/images/hacktoberfest/bedrockoss.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f24afdb7c01fc96f18b5217a8518d0326e92369ab58ef45dad03354cf29f503c
+size 142539
diff --git a/docs/public/assets/images/hacktoberfest/blockception.png b/docs/public/assets/images/hacktoberfest/blockception.png
new file mode 100644
index 00000000..c3a18e46
--- /dev/null
+++ b/docs/public/assets/images/hacktoberfest/blockception.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a11e98e0e9eb903364edd8bc39ebd95f9381381c5841860aa90d53500a82df09
+size 36320
diff --git a/docs/public/assets/images/hacktoberfest/bridge.png b/docs/public/assets/images/hacktoberfest/bridge.png
new file mode 100644
index 00000000..6795eb35
--- /dev/null
+++ b/docs/public/assets/images/hacktoberfest/bridge.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:692462cc753c8364173251bdb6ceb68d1574e0f1cc6f90f26f97a57312e34228
+size 11484
diff --git a/docs/public/assets/images/hacktoberfest/hf10_horz_fcd_rgb.png b/docs/public/assets/images/hacktoberfest/hf10_horz_fcd_rgb.png
new file mode 100644
index 00000000..3f58c6e6
--- /dev/null
+++ b/docs/public/assets/images/hacktoberfest/hf10_horz_fcd_rgb.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7245f79ab620269c993e5f0570660428403790330de22d92e85bcefea9b44904
+size 87206
diff --git a/docs/public/assets/images/hacktoberfest/hf10_horz_fcl_rgb.png b/docs/public/assets/images/hacktoberfest/hf10_horz_fcl_rgb.png
new file mode 100644
index 00000000..f42329f7
--- /dev/null
+++ b/docs/public/assets/images/hacktoberfest/hf10_horz_fcl_rgb.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af128d492d488ec6c7658de3cd3b9a3e4023dfe40abe74851d3c6ff2525c418a
+size 93807
diff --git a/docs/public/assets/images/hacktoberfest/mcdevkit.png b/docs/public/assets/images/hacktoberfest/mcdevkit.png
new file mode 100644
index 00000000..15377157
--- /dev/null
+++ b/docs/public/assets/images/hacktoberfest/mcdevkit.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18d71a9ac55fa1afc2a949add13e1bb75cbd4b9abe5cf5d2c9fcb12faca48076
+size 58624
diff --git a/docs/public/assets/images/hacktoberfest/sirlich.png b/docs/public/assets/images/hacktoberfest/sirlich.png
new file mode 100644
index 00000000..ffef3bdf
--- /dev/null
+++ b/docs/public/assets/images/hacktoberfest/sirlich.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3dbbbc4b399f302561101da0ba4f9c3a7de958fa4c18a326c86d66e9358a5381
+size 33737
diff --git a/docs/public/assets/images/homepage/bookshelf_0.png b/docs/public/assets/images/homepage/bookshelf_0.png
new file mode 100644
index 00000000..740d84f1
--- /dev/null
+++ b/docs/public/assets/images/homepage/bookshelf_0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec2d6c77fcf3b5f759a20d16bd7026fd6736554a6c8c6c64c903ad70b127c17c
+size 73649
diff --git a/docs/public/assets/images/homepage/buildplate.png b/docs/public/assets/images/homepage/buildplate.png
new file mode 100644
index 00000000..3bb61bd3
--- /dev/null
+++ b/docs/public/assets/images/homepage/buildplate.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:54ff5f54b1291c750d886c2815adac94ecc0605d4bc1ea66c2341f0387dbc8e2
+size 48661
diff --git a/docs/public/assets/images/homepage/commands.png b/docs/public/assets/images/homepage/commands.png
new file mode 100644
index 00000000..372264da
--- /dev/null
+++ b/docs/public/assets/images/homepage/commands.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc86ccc5787fdc292676f99b3e2a3232483d7fba29086e3a75c6b7438ebb2a2c
+size 21578
diff --git a/docs/public/assets/images/homepage/crafting_table_0.png b/docs/public/assets/images/homepage/crafting_table_0.png
new file mode 100644
index 00000000..4fc2e639
--- /dev/null
+++ b/docs/public/assets/images/homepage/crafting_table_0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af9a1fd1c3e493b9e0777ff66108981d68fad4d68b226924c198fd2c20e40925
+size 68918
diff --git a/docs/public/assets/images/homepage/diamond_ore_0.png b/docs/public/assets/images/homepage/diamond_ore_0.png
new file mode 100644
index 00000000..426c3d22
--- /dev/null
+++ b/docs/public/assets/images/homepage/diamond_ore_0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9d4847b1857591b5cdba1af9ea37f48698642da4a0e1a9cfa71340a02cb18949
+size 74424
diff --git a/docs/public/assets/images/homepage/discord.png b/docs/public/assets/images/homepage/discord.png
new file mode 100644
index 00000000..0b0d3ef8
--- /dev/null
+++ b/docs/public/assets/images/homepage/discord.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a87ff03910d82d56b8f9d783485f08d07b6a3886c56fe0a1fe4cfff1c27a95f
+size 52451
diff --git a/docs/public/assets/images/homepage/hfest_dark.png b/docs/public/assets/images/homepage/hfest_dark.png
new file mode 100644
index 00000000..617f897f
--- /dev/null
+++ b/docs/public/assets/images/homepage/hfest_dark.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d36729317cfd80f402a588423d85b4b12ec0ccd2f9c9ba17ed87fd84b5dc073
+size 34183
diff --git a/docs/public/assets/images/homepage/hfest_light.png b/docs/public/assets/images/homepage/hfest_light.png
new file mode 100644
index 00000000..f46024d3
--- /dev/null
+++ b/docs/public/assets/images/homepage/hfest_light.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9238478110771c7e2d341bb051b0b7e5279d4146ba4febb373db8604102ccde
+size 49136
diff --git a/docs/public/assets/images/homepage/iron_pickaxe_0.png b/docs/public/assets/images/homepage/iron_pickaxe_0.png
new file mode 100644
index 00000000..b05cc0c8
--- /dev/null
+++ b/docs/public/assets/images/homepage/iron_pickaxe_0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca7544d9b1c9b154b729858a2fa57e147fc289983d2d8f7868e7fe109393f615
+size 24627
diff --git a/docs/public/assets/images/homepage/scripting.png b/docs/public/assets/images/homepage/scripting.png
new file mode 100644
index 00000000..7cc55f9d
--- /dev/null
+++ b/docs/public/assets/images/homepage/scripting.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc5de5e3e6e522bc13e355c503c40d09aff19a68934a513c891a7b8a729197af
+size 56965
diff --git a/docs/public/assets/images/homepage/spawn_egg_30.png b/docs/public/assets/images/homepage/spawn_egg_30.png
new file mode 100644
index 00000000..55c3f0e3
--- /dev/null
+++ b/docs/public/assets/images/homepage/spawn_egg_30.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4dcfd084a1af0e42b2e2a9e5afef33a4ab6be11075517e23ab60081f462af1d
+size 33409
diff --git a/docs/public/assets/images/homepage/wikilogo.png b/docs/public/assets/images/homepage/wikilogo.png
new file mode 100644
index 00000000..e02aafff
--- /dev/null
+++ b/docs/public/assets/images/homepage/wikilogo.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa51f19d34028ec9e0fd53a96e7b394f3a6e571677c06feb813b337760024bab
+size 42098
diff --git a/docs/public/assets/images/homepage/writable_book_0.png b/docs/public/assets/images/homepage/writable_book_0.png
new file mode 100644
index 00000000..7bff6a82
--- /dev/null
+++ b/docs/public/assets/images/homepage/writable_book_0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d418ce97827067e43ab01ea8f125c6f37682fa44f7f3028efbfb0e696faf6c14
+size 32927
diff --git a/docs/public/assets/images/icons/error.png b/docs/public/assets/images/icons/error.png
new file mode 100644
index 00000000..391ba120
--- /dev/null
+++ b/docs/public/assets/images/icons/error.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:76414d6d68e25bff122280cf820a3492008af01f47f187d3383147353ed16327
+size 38984
diff --git a/docs/public/assets/images/icons/info.png b/docs/public/assets/images/icons/info.png
new file mode 100644
index 00000000..112d1781
--- /dev/null
+++ b/docs/public/assets/images/icons/info.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:35cbab9ae93a4cb8417c005d46b58602bdeaf073bb92677b289cd11c4c97d6ef
+size 26024
diff --git a/docs/public/assets/images/icons/notice.png b/docs/public/assets/images/icons/notice.png
new file mode 100644
index 00000000..0aeeb839
--- /dev/null
+++ b/docs/public/assets/images/icons/notice.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc74fc3f538694725b28dd9d9e79f1ac5c92e1b5bfa9711db4cc9643d8496cf4
+size 27976
diff --git a/docs/public/assets/images/icons/tick.png b/docs/public/assets/images/icons/tick.png
new file mode 100644
index 00000000..3187e5bd
--- /dev/null
+++ b/docs/public/assets/images/icons/tick.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:78cd8dafdedae6a3dc932fb833eca1ef00ec46dabafa77bec366f95993a93993
+size 1595
diff --git a/docs/public/assets/images/icons/warning.png b/docs/public/assets/images/icons/warning.png
new file mode 100644
index 00000000..46977c7d
--- /dev/null
+++ b/docs/public/assets/images/icons/warning.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9604034d07924fa117af67d7be50adeda52a6927264c6ff12f875880e4930b01
+size 24064
diff --git a/docs/public/assets/images/items/spawning-items/structure-method.png b/docs/public/assets/images/items/spawning-items/structure-method.png
new file mode 100644
index 00000000..3ef10321
--- /dev/null
+++ b/docs/public/assets/images/items/spawning-items/structure-method.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3fb774cdf8708be5ae77ab93aecfe52c59bdbc4616c56fc5a8f1e8d5e9c931bb
+size 12464
diff --git a/docs/public/assets/images/items/spears/spear_first_person.png b/docs/public/assets/images/items/spears/spear_first_person.png
new file mode 100644
index 00000000..b0dac6a2
--- /dev/null
+++ b/docs/public/assets/images/items/spears/spear_first_person.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3934f5ea2731edbc13747d184073aa269435464f0db60b87afbeb3272e369997
+size 893131
diff --git a/docs/public/assets/images/items/spears/spear_model.png b/docs/public/assets/images/items/spears/spear_model.png
new file mode 100644
index 00000000..3f4cfafd
--- /dev/null
+++ b/docs/public/assets/images/items/spears/spear_model.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:88fb761a101a3a126da6c3a5485fbcc5415b1254fc430b22f0c973347fcf51bb
+size 147322
diff --git a/docs/public/assets/images/items/spears/spear_third_person.png b/docs/public/assets/images/items/spears/spear_third_person.png
new file mode 100644
index 00000000..ccbf2cbe
--- /dev/null
+++ b/docs/public/assets/images/items/spears/spear_third_person.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db0ed03e91fcd28379e116e4d3d4c0d41b5e55e23aba85970a9467f60f48e21c
+size 965771
diff --git a/docs/public/assets/images/json-ui/json-ui-documentation/anchor_ce_rm_tm_tl.png b/docs/public/assets/images/json-ui/json-ui-documentation/anchor_ce_rm_tm_tl.png
new file mode 100644
index 00000000..7a2f1a62
--- /dev/null
+++ b/docs/public/assets/images/json-ui/json-ui-documentation/anchor_ce_rm_tm_tl.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:85a662d2056ea563d65199ce2ed728921fd304f583eaed2ba35af8b34979737f
+size 545507
diff --git a/docs/public/assets/images/json-ui/json-ui-documentation/anchor_center_top_left.png b/docs/public/assets/images/json-ui/json-ui-documentation/anchor_center_top_left.png
new file mode 100644
index 00000000..e540fea0
--- /dev/null
+++ b/docs/public/assets/images/json-ui/json-ui-documentation/anchor_center_top_left.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:33514f272eefb85452051c708d8a24bf4711341cea4b143fa564932eb474ac31
+size 547005
diff --git a/docs/public/assets/images/json-ui/json-ui-documentation/anchor_same_value.png b/docs/public/assets/images/json-ui/json-ui-documentation/anchor_same_value.png
new file mode 100644
index 00000000..c2291ea0
--- /dev/null
+++ b/docs/public/assets/images/json-ui/json-ui-documentation/anchor_same_value.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dae7ecceb97693868acb9ed426bff2b57becfa27174652bdf0b907faf38b32c9
+size 438549
diff --git a/docs/public/assets/images/knowledge/shaders/debugShader.gif b/docs/public/assets/images/knowledge/shaders/debugShader.gif
new file mode 100644
index 00000000..5ab67531
--- /dev/null
+++ b/docs/public/assets/images/knowledge/shaders/debugShader.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2685ff563dc73d5a47c50046a48ec64fbf58c8909459bdda2da1bdbbb70f517
+size 2378994
diff --git a/docs/public/assets/images/loot/recipes/brewing_container_recipe.png b/docs/public/assets/images/loot/recipes/brewing_container_recipe.png
new file mode 100644
index 00000000..c9ae3ccb
--- /dev/null
+++ b/docs/public/assets/images/loot/recipes/brewing_container_recipe.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8dce380493f000d5de9ae2003a0c0cc9f608d70394baa87e01549ecc1fa99b23
+size 35621
diff --git a/docs/public/assets/images/loot/recipes/brewing_mix_recipe.png b/docs/public/assets/images/loot/recipes/brewing_mix_recipe.png
new file mode 100644
index 00000000..e5aaf02d
--- /dev/null
+++ b/docs/public/assets/images/loot/recipes/brewing_mix_recipe.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:95c84454eda1df000495563eb2e260a68a095d3646c0b5d99fc6fb372eb2a547
+size 17212
diff --git a/docs/public/assets/images/loot/recipes/furnace_recipe.png b/docs/public/assets/images/loot/recipes/furnace_recipe.png
new file mode 100644
index 00000000..3785b097
--- /dev/null
+++ b/docs/public/assets/images/loot/recipes/furnace_recipe.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9367f438f91050dab4ac1d64a5ab64a57edf3a6556e4213db41882d1215ad27d
+size 14982
diff --git a/docs/public/assets/images/loot/recipes/recipe.png b/docs/public/assets/images/loot/recipes/recipe.png
new file mode 100644
index 00000000..47a65d70
--- /dev/null
+++ b/docs/public/assets/images/loot/recipes/recipe.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e9667e4e340b491063abd986404e481c2ea00e1bba630c50cd6be1bef56a7d2
+size 29771
diff --git a/docs/public/assets/images/loot/recipes/shaped_recipe.png b/docs/public/assets/images/loot/recipes/shaped_recipe.png
new file mode 100644
index 00000000..c5827035
--- /dev/null
+++ b/docs/public/assets/images/loot/recipes/shaped_recipe.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9ca0919c85de3149f43f5a0a1ca5d35e87c2bbb0effed825943b38bdbc4da0e
+size 52635
diff --git a/docs/public/assets/images/loot/recipes/shapeless_recipe.png b/docs/public/assets/images/loot/recipes/shapeless_recipe.png
new file mode 100644
index 00000000..da6a03a3
--- /dev/null
+++ b/docs/public/assets/images/loot/recipes/shapeless_recipe.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83b3446112574b2ea33a1491f92d14b4956fe62827c589a8bc5c0e87b69ce0a3
+size 31373
diff --git a/docs/public/assets/images/loot/trade_tables/trading.png b/docs/public/assets/images/loot/trade_tables/trading.png
new file mode 100644
index 00000000..96d08f49
--- /dev/null
+++ b/docs/public/assets/images/loot/trade_tables/trading.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:55d4c0826924e88f0544f17b86799a49bf941cfd879a816c04703e841fa41be0
+size 42942
diff --git a/docs/public/assets/images/misc/compass.png b/docs/public/assets/images/misc/compass.png
new file mode 100644
index 00000000..fa81472c
--- /dev/null
+++ b/docs/public/assets/images/misc/compass.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:85fa9a8d14d346bf9db29550c18200013b5e0ec174177e67c53c91c782ba2291
+size 21572
diff --git a/docs/public/assets/images/misc/dead_bush.png b/docs/public/assets/images/misc/dead_bush.png
new file mode 100644
index 00000000..9ad8123f
--- /dev/null
+++ b/docs/public/assets/images/misc/dead_bush.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9fe9dc079e4caec38c0470be03f47a8b710f3ee3da90c0aaf42b7aa1f883d388
+size 1681
diff --git a/docs/public/assets/images/misc/github.png b/docs/public/assets/images/misc/github.png
new file mode 100644
index 00000000..4e7f9e1d
--- /dev/null
+++ b/docs/public/assets/images/misc/github.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c9392e3dc6665ce629ceb1af2d2ca9923ec7bb9c59cb98a9928735bb82768d27
+size 7979
diff --git a/docs/public/assets/images/misc/mined_bedrock.png b/docs/public/assets/images/misc/mined_bedrock.png
new file mode 100644
index 00000000..dd58fdff
--- /dev/null
+++ b/docs/public/assets/images/misc/mined_bedrock.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d5f6658e81f01d880f122ade94336759b00799094cc4d71349ee4e226d9152a4
+size 1041
diff --git a/docs/public/assets/images/misc/rickroll.gif b/docs/public/assets/images/misc/rickroll.gif
new file mode 100644
index 00000000..354a19bd
--- /dev/null
+++ b/docs/public/assets/images/misc/rickroll.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d557a07b13c5a75e65fc84ca68d570013f2abd1f1f81b9af42626486a8fa5ba7
+size 236664
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step1.png b/docs/public/assets/images/nbt/VS_Editor_images/step1.png
new file mode 100644
index 00000000..d11134f4
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f19c2c8187cdbe6d088b6455d1cc919ee181bb34f221120ad25ebea09a43d99
+size 5740
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step10.png b/docs/public/assets/images/nbt/VS_Editor_images/step10.png
new file mode 100644
index 00000000..39aad0bb
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step10.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b0abdc3bcdd397af854a4b2fb70670df2e2eb9e00d25705a736487878c86a253
+size 6047
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step11.png b/docs/public/assets/images/nbt/VS_Editor_images/step11.png
new file mode 100644
index 00000000..8fc9869f
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step11.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2acac1b3e5096e6f40b662a5aa9636e9048927a2c624a5355d24a87b567dd04c
+size 5264
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step12.png b/docs/public/assets/images/nbt/VS_Editor_images/step12.png
new file mode 100644
index 00000000..09063d3c
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step12.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:07fcffba8f79ed5974370c2926334cdc46a902853d1630c1f8c45c545eddb8d7
+size 5614
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step2.png b/docs/public/assets/images/nbt/VS_Editor_images/step2.png
new file mode 100644
index 00000000..26f16eb7
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:34c647690fa9bc41e9050e3fdc9b511605b663ad60d756828d50644bbb59a977
+size 5425
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step3.png b/docs/public/assets/images/nbt/VS_Editor_images/step3.png
new file mode 100644
index 00000000..b9089684
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:72193f9e166ddbbcfeb01121ec607b60d82a13c8d1b99241c09db569c6d7bf5b
+size 5508
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step4.png b/docs/public/assets/images/nbt/VS_Editor_images/step4.png
new file mode 100644
index 00000000..cf26cb45
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step4.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db87f8243728d09bffdc6f528124db4a0126c1d4d1f6e7440c1609ed81fd451b
+size 5803
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step5.png b/docs/public/assets/images/nbt/VS_Editor_images/step5.png
new file mode 100644
index 00000000..9c835fa4
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step5.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c697a731a2f74104a1a08114bdc99a0f59d0d19657f4ab5b1a9fa7b87f836933
+size 6079
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step6.png b/docs/public/assets/images/nbt/VS_Editor_images/step6.png
new file mode 100644
index 00000000..8e82771d
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step6.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:178192608b35cb32a0d0d57669e2793ee405d92a25064a4c9c2794aed7873e55
+size 5733
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step7.png b/docs/public/assets/images/nbt/VS_Editor_images/step7.png
new file mode 100644
index 00000000..7155a24f
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step7.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42731fbff926e95ca53d565a94d6a5f91e1a4ad88a4ae9236109764b8ab155e0
+size 6283
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step8.png b/docs/public/assets/images/nbt/VS_Editor_images/step8.png
new file mode 100644
index 00000000..4812cb2f
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step8.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:511cff0eb2f162ee10044136ab11421c82eabbafb4d1f3aa58d7853545e59b55
+size 5636
diff --git a/docs/public/assets/images/nbt/VS_Editor_images/step9.png b/docs/public/assets/images/nbt/VS_Editor_images/step9.png
new file mode 100644
index 00000000..b050b002
--- /dev/null
+++ b/docs/public/assets/images/nbt/VS_Editor_images/step9.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:61f33b65acc9e6a622a573625b5a4e56c7f03c9bfe40b8ff3d026f73575cc1b6
+size 5688
diff --git a/docs/public/assets/images/nbt/byte.png b/docs/public/assets/images/nbt/byte.png
new file mode 100644
index 00000000..174a38a3
--- /dev/null
+++ b/docs/public/assets/images/nbt/byte.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9cd141cb7f4b778eef274cef8f7932c2b2c9e04fa9cc305168ec7ecaee5ce1c3
+size 144
diff --git a/docs/public/assets/images/nbt/compound.png b/docs/public/assets/images/nbt/compound.png
new file mode 100644
index 00000000..94a28847
--- /dev/null
+++ b/docs/public/assets/images/nbt/compound.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ccfc6f8e1f41a9b41f2f968a63d22f6553d075ecb800a1072f3a77ab0a9c85e0
+size 596
diff --git a/docs/public/assets/images/nbt/experiments-education-edition/byte-add.png b/docs/public/assets/images/nbt/experiments-education-edition/byte-add.png
new file mode 100644
index 00000000..f2f883fb
--- /dev/null
+++ b/docs/public/assets/images/nbt/experiments-education-edition/byte-add.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9216122229c5ad2eb332efbd79b86ad70b40b58e78a7843c1d3bebf5413a7855
+size 12368
diff --git a/docs/public/assets/images/nbt/experiments-education-edition/experiments-file.png b/docs/public/assets/images/nbt/experiments-education-edition/experiments-file.png
new file mode 100644
index 00000000..abca6883
--- /dev/null
+++ b/docs/public/assets/images/nbt/experiments-education-edition/experiments-file.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92b9c2c1c9a579fda8c0f381a7a040e98b30d81d11b696a574c462b8464f5d63
+size 55129
diff --git a/docs/public/assets/images/nbt/int.png b/docs/public/assets/images/nbt/int.png
new file mode 100644
index 00000000..f67af75b
--- /dev/null
+++ b/docs/public/assets/images/nbt/int.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:16704a0b9c9615354866a712828cdd34752cd5cd0164bc122dabd7b435b8c205
+size 559
diff --git a/docs/public/assets/images/nbt/list.png b/docs/public/assets/images/nbt/list.png
new file mode 100644
index 00000000..db3c2888
--- /dev/null
+++ b/docs/public/assets/images/nbt/list.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:82aeb16d84559fcab5b06511015cbbd38faffa3fdd5e254434d9d363078ae8b0
+size 606
diff --git a/docs/public/assets/images/nbt/string.png b/docs/public/assets/images/nbt/string.png
new file mode 100644
index 00000000..5a2645d2
--- /dev/null
+++ b/docs/public/assets/images/nbt/string.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a819e25cf4fdaac3b4a75e939c8b0c345b0108aa160ed7d007f6124620b735b5
+size 612
diff --git a/docs/public/assets/images/nbt/structure-limits/nbt-screenshot-1.png b/docs/public/assets/images/nbt/structure-limits/nbt-screenshot-1.png
new file mode 100644
index 00000000..f816d34f
--- /dev/null
+++ b/docs/public/assets/images/nbt/structure-limits/nbt-screenshot-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd6360aadb7321b4b7a79118834c7285e877d74a9417b05d8548b72402963701
+size 44696
diff --git a/docs/public/assets/images/nbt/structure-limits/result.png b/docs/public/assets/images/nbt/structure-limits/result.png
new file mode 100644
index 00000000..78ed9a7d
--- /dev/null
+++ b/docs/public/assets/images/nbt/structure-limits/result.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d6175b06c9cda499a5badccd4a9e50fd7d20157bc1655b24b7d4434dbc7e57a6
+size 484483
diff --git a/docs/public/assets/images/nbt/structure.png b/docs/public/assets/images/nbt/structure.png
new file mode 100644
index 00000000..455480e7
--- /dev/null
+++ b/docs/public/assets/images/nbt/structure.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b6d1ea91310ed7178eef15adec20428eee5a11f02984fc6b3b1c94f97f2c46c
+size 186
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/activate-experimental-gameplay-popup.png b/docs/public/assets/images/scripting/hello-world-tutorial/activate-experimental-gameplay-popup.png
new file mode 100644
index 00000000..acac0d22
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/activate-experimental-gameplay-popup.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:270f02d94109ccdd30a36709ac82910992ac014a2991508fed2a9ee446f44aa1
+size 37989
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/active-hello-world-addon.png b/docs/public/assets/images/scripting/hello-world-tutorial/active-hello-world-addon.png
new file mode 100644
index 00000000..68196623
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/active-hello-world-addon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36663ba1e59fd255dae65b07b2a9ae5195d3bbb55879d88bd5c1c2b7af78be02
+size 563620
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/additional-modding-capabilities-toggle.png b/docs/public/assets/images/scripting/hello-world-tutorial/additional-modding-capabilities-toggle.png
new file mode 100644
index 00000000..a272ab0b
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/additional-modding-capabilities-toggle.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f54c2ef4c9a65597a52b63f6c263adb242853a412dadf2589a8cb569705e97ab
+size 27086
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/addon-loaded-scripts-off.png b/docs/public/assets/images/scripting/hello-world-tutorial/addon-loaded-scripts-off.png
new file mode 100644
index 00000000..f6eb9ba1
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/addon-loaded-scripts-off.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b78eb17883a5fcd3e3217eb53235cdf33c24139660d130279f264d317864c228
+size 4179500
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/addon-loaded-scripts-on-both.png b/docs/public/assets/images/scripting/hello-world-tutorial/addon-loaded-scripts-on-both.png
new file mode 100644
index 00000000..ae7f2e7a
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/addon-loaded-scripts-on-both.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7923433f00d2d29de70443f3542355413660e3d27e8f9312e817cb0ef471621
+size 3915199
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/addon-loaded-scripts-on-server-only.png b/docs/public/assets/images/scripting/hello-world-tutorial/addon-loaded-scripts-on-server-only.png
new file mode 100644
index 00000000..4c5f2153
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/addon-loaded-scripts-on-server-only.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d06e8f4ee41bc89b322d1d70b893065ee553d759ac6e693ac5c282357c368ee6
+size 3878177
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/addons-menu.png b/docs/public/assets/images/scripting/hello-world-tutorial/addons-menu.png
new file mode 100644
index 00000000..b03de94c
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/addons-menu.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:72d1eb1a48ce82a3e2c0aeffa750bcd19cfa7f963df5e94c644928098ae35567
+size 54129
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/enable-scripts-popup.png b/docs/public/assets/images/scripting/hello-world-tutorial/enable-scripts-popup.png
new file mode 100644
index 00000000..d71235e0
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/enable-scripts-popup.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:27769acd29c0911c90ee1d1b8569202cd0f2e29a377bf07ec87c8b70f0542336
+size 470353
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/load-pack-menu-activate.png b/docs/public/assets/images/scripting/hello-world-tutorial/load-pack-menu-activate.png
new file mode 100644
index 00000000..db61b486
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/load-pack-menu-activate.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c1da3a1ea38003d2ec6773f067a8f1e8033deffa5b6e996fc77a0a2a96a9e5ac
+size 284192
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/pack_icon.png b/docs/public/assets/images/scripting/hello-world-tutorial/pack_icon.png
new file mode 100644
index 00000000..b84b0d1e
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/pack_icon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b93aea9c1fdba2019d6437286624db1fa1f4d02ae516379f444ae2cde45ac2de
+size 589
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/turn-off-achievements-popup.png b/docs/public/assets/images/scripting/hello-world-tutorial/turn-off-achievements-popup.png
new file mode 100644
index 00000000..bc71be77
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/turn-off-achievements-popup.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b973864a2f9e361e3693cd3dea158b3b5b70bedfb2cf4266de66cc00f932633e
+size 81816
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/world-cheats.png b/docs/public/assets/images/scripting/hello-world-tutorial/world-cheats.png
new file mode 100644
index 00000000..8cdd95f8
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/world-cheats.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3c92f9877c5d8bbe292b244bcc12d4ae67a2add1ed3774f7e9583ed6d4c5d414
+size 488377
diff --git a/docs/public/assets/images/scripting/hello-world-tutorial/world-options.png b/docs/public/assets/images/scripting/hello-world-tutorial/world-options.png
new file mode 100644
index 00000000..f2ca88d8
--- /dev/null
+++ b/docs/public/assets/images/scripting/hello-world-tutorial/world-options.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f60eba445b3986d28320b2078c205b8b43c9b1242598a8c78f9f6e26768329c
+size 414940
diff --git a/docs/public/assets/images/scripting/typescript/project-create.gif b/docs/public/assets/images/scripting/typescript/project-create.gif
new file mode 100644
index 00000000..0cc570fa
--- /dev/null
+++ b/docs/public/assets/images/scripting/typescript/project-create.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:337deb98761feffcd1ef834e328d295a5c4d251e9f6dd32e9909bd75e6025bc9
+size 3398591
diff --git a/docs/public/assets/images/tutorials/custom-armor/armor-item-image.jpg b/docs/public/assets/images/tutorials/custom-armor/armor-item-image.jpg
new file mode 100644
index 00000000..65cad3ba
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-armor/armor-item-image.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5948364672fdc620b42bdfc13b2f9709c51b43e65c67306df93ecbf3ba4f8b3d
+size 13317
diff --git a/docs/public/assets/images/tutorials/custom-armor/armor-model-image.jpg b/docs/public/assets/images/tutorials/custom-armor/armor-model-image.jpg
new file mode 100644
index 00000000..c1e7df4c
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-armor/armor-model-image.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4ab7ef8a57a3d727f256fe4fce265daac39dc5bd336661c3e7fbe2fbe204623e
+size 27919
diff --git a/docs/public/assets/images/tutorials/custom-armor/custom-set-image.jpg b/docs/public/assets/images/tutorials/custom-armor/custom-set-image.jpg
new file mode 100644
index 00000000..5f20880c
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-armor/custom-set-image.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ac0fd7ddea09b1ae1ffd2c1c9bd492a57f47c7307dfa779e7e56d6710ec5c65d
+size 18672
diff --git a/docs/public/assets/images/tutorials/custom-armor/custom_boots.png b/docs/public/assets/images/tutorials/custom-armor/custom_boots.png
new file mode 100644
index 00000000..ec9ca066
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-armor/custom_boots.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e19980f8d6f680a624944eab4102f3edbae3b970fdca0311998dcb9c5ee99dd
+size 265
diff --git a/docs/public/assets/images/tutorials/custom-armor/custom_chestplate.png b/docs/public/assets/images/tutorials/custom-armor/custom_chestplate.png
new file mode 100644
index 00000000..49ee05ea
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-armor/custom_chestplate.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d214984bd2ad39065d398f33e446ce2ea45005e3db9b377c151df24ea5d89d5f
+size 313
diff --git a/docs/public/assets/images/tutorials/custom-armor/custom_helmet.png b/docs/public/assets/images/tutorials/custom-armor/custom_helmet.png
new file mode 100644
index 00000000..1b5e23bc
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-armor/custom_helmet.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bdbc0dcf876877eda6f7bd6da109635e97d920e47f0c5632cd4a4cbba6772d59
+size 250
diff --git a/docs/public/assets/images/tutorials/custom-armor/custom_leggings.png b/docs/public/assets/images/tutorials/custom-armor/custom_leggings.png
new file mode 100644
index 00000000..769152f7
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-armor/custom_leggings.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:52df63b392d5be99be304991570597899b2e649fb25099658f356176659c57ee
+size 273
diff --git a/docs/public/assets/images/tutorials/custom-armor/custom_legs.png b/docs/public/assets/images/tutorials/custom-armor/custom_legs.png
new file mode 100644
index 00000000..cadd1100
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-armor/custom_legs.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d437b6ed8f9930f65f20e5bf104041c4e02deb6da47849d7cb976aae10d73b43
+size 507
diff --git a/docs/public/assets/images/tutorials/custom-armor/custom_main.png b/docs/public/assets/images/tutorials/custom-armor/custom_main.png
new file mode 100644
index 00000000..581180e5
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-armor/custom_main.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fc4fd087a3e12f42af540ecc20cf80a1d12254c816fdc2c8f9524998c39dc32
+size 872
diff --git a/docs/public/assets/images/tutorials/custom-item-models/drill-bone-structure.png b/docs/public/assets/images/tutorials/custom-item-models/drill-bone-structure.png
new file mode 100644
index 00000000..c0ae528f
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-item-models/drill-bone-structure.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0065bf8e743cc1de5ca8317ed71dee35fb61817ec4ff48aa22a99c2737c607b4
+size 24248
diff --git a/docs/public/assets/images/tutorials/custom-item-models/drill-item-visible.png b/docs/public/assets/images/tutorials/custom-item-models/drill-item-visible.png
new file mode 100644
index 00000000..a3e1c46d
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-item-models/drill-item-visible.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b0b6a3dadf09bba24ce80298e51fae0a0f737efd9fe3cbfe86d3ef3fd8c561a0
+size 1841984
diff --git a/docs/public/assets/images/tutorials/custom-item-models/drill-opacity.png b/docs/public/assets/images/tutorials/custom-item-models/drill-opacity.png
new file mode 100644
index 00000000..3ac03675
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-item-models/drill-opacity.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd5537e011da95c91d232bd86db5f8abcde2c41fc644f084de18eec04d63e6a4
+size 22213
diff --git a/docs/public/assets/images/tutorials/custom-item-models/drill-sprite-inventory.png b/docs/public/assets/images/tutorials/custom-item-models/drill-sprite-inventory.png
new file mode 100644
index 00000000..d0bced23
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-item-models/drill-sprite-inventory.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d72afbad684983d5bd2f9846b74e3cc8cedee6143ce5a469ecefc24a6ed69e15
+size 3474
diff --git a/docs/public/assets/images/tutorials/custom-item-models/hat_attachable.png b/docs/public/assets/images/tutorials/custom-item-models/hat_attachable.png
new file mode 100644
index 00000000..1300f5b4
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-item-models/hat_attachable.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e5cc4386f5a4f88823b85b6b751501b4fb059c47f0a952be0183eb0327a5d033
+size 2227470
diff --git a/docs/public/assets/images/tutorials/custom-weapons/custom_sword.jpg b/docs/public/assets/images/tutorials/custom-weapons/custom_sword.jpg
new file mode 100644
index 00000000..a27b8937
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-weapons/custom_sword.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8aa0bc53747c2519037a20e7419073081e9b27ffb5c4999b8bdf05588cf9793e
+size 21077
diff --git a/docs/public/assets/images/tutorials/custom-weapons/held_sword.jpg b/docs/public/assets/images/tutorials/custom-weapons/held_sword.jpg
new file mode 100644
index 00000000..cbc45707
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-weapons/held_sword.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9a0f7e3d403bbee70cafba39a7851af2d17ce7a642c752a001c89e393796ec1
+size 38594
diff --git a/docs/public/assets/images/tutorials/custom-weapons/my_sword.png b/docs/public/assets/images/tutorials/custom-weapons/my_sword.png
new file mode 100644
index 00000000..212054ad
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-weapons/my_sword.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e7eaebb1692e2b38e472973e2465d0392b79f6c7346a5ebb53f70008f7b2881
+size 338
diff --git a/docs/public/assets/images/tutorials/custom-weapons/sword_recipe.jpg b/docs/public/assets/images/tutorials/custom-weapons/sword_recipe.jpg
new file mode 100644
index 00000000..93b041ae
--- /dev/null
+++ b/docs/public/assets/images/tutorials/custom-weapons/sword_recipe.jpg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b1dd182af0547b4934c99bd3f81a61d4333107f8f50ff5b81c2089812db79aa
+size 15987
diff --git a/docs/public/assets/images/tutorials/entity-holds-item/blockbench.png b/docs/public/assets/images/tutorials/entity-holds-item/blockbench.png
new file mode 100644
index 00000000..690b9261
--- /dev/null
+++ b/docs/public/assets/images/tutorials/entity-holds-item/blockbench.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68eb0617f923b90a888333633d5379f05d8fafdf9b744362425ae54b0cd3b252
+size 88821
diff --git a/docs/public/assets/images/tutorials/entity-holds-item/finished_result.png b/docs/public/assets/images/tutorials/entity-holds-item/finished_result.png
new file mode 100644
index 00000000..069f6095
--- /dev/null
+++ b/docs/public/assets/images/tutorials/entity-holds-item/finished_result.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9775a56e40cf802e99df4f62b097603f447d0e9beebc2f8697c8bde36469fa8
+size 119185
diff --git a/docs/public/assets/images/tutorials/randomised-structure-loot/LootTable-step1.png b/docs/public/assets/images/tutorials/randomised-structure-loot/LootTable-step1.png
new file mode 100644
index 00000000..66b7689b
--- /dev/null
+++ b/docs/public/assets/images/tutorials/randomised-structure-loot/LootTable-step1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:26c8e52bf57deacea5d12e0eec0334b81fa28c00567dae880c55b96bd5bdf51f
+size 26388
diff --git a/docs/public/assets/images/tutorials/randomised-structure-loot/LootTable-step2.png b/docs/public/assets/images/tutorials/randomised-structure-loot/LootTable-step2.png
new file mode 100644
index 00000000..1266f978
--- /dev/null
+++ b/docs/public/assets/images/tutorials/randomised-structure-loot/LootTable-step2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:32fec12c1c2d0753a73f103536bc731ff82d0bca80a2a96ae3a51a984f615525
+size 35442
diff --git a/docs/public/assets/images/tutorials/randomised-structure-loot/LootTable-step3.png b/docs/public/assets/images/tutorials/randomised-structure-loot/LootTable-step3.png
new file mode 100644
index 00000000..144d9e39
--- /dev/null
+++ b/docs/public/assets/images/tutorials/randomised-structure-loot/LootTable-step3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b1aeb58ac64905151c892da72952f5b04553c89c9d00f282564699e85c8c926
+size 26351
diff --git a/docs/public/assets/images/tutorials/randomised-structure-loot/add_string_tag1.png b/docs/public/assets/images/tutorials/randomised-structure-loot/add_string_tag1.png
new file mode 100644
index 00000000..1ac7d9c5
--- /dev/null
+++ b/docs/public/assets/images/tutorials/randomised-structure-loot/add_string_tag1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5488c3b8c7537b935e65bf6f04746c27c602757da82ac8ea256ebfd9425f5a63
+size 101493
diff --git a/docs/public/assets/images/tutorials/randomised-structure-loot/add_string_tag2.png b/docs/public/assets/images/tutorials/randomised-structure-loot/add_string_tag2.png
new file mode 100644
index 00000000..3ab88916
--- /dev/null
+++ b/docs/public/assets/images/tutorials/randomised-structure-loot/add_string_tag2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f2c0cc6bec563991fc1220544bcb1bbb60c1124c56cce159073770ad66dd67c1
+size 93933
diff --git a/docs/public/assets/images/tutorials/randomised-structure-loot/export_structure.png b/docs/public/assets/images/tutorials/randomised-structure-loot/export_structure.png
new file mode 100644
index 00000000..99c040cc
--- /dev/null
+++ b/docs/public/assets/images/tutorials/randomised-structure-loot/export_structure.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:36a9bbef11da3b478c7e2a34af585c0857c6a2260356a6697ea79f81054d3a24
+size 234756
diff --git a/docs/public/assets/images/tutorials/randomised-structure-loot/find_container.png b/docs/public/assets/images/tutorials/randomised-structure-loot/find_container.png
new file mode 100644
index 00000000..cd099ba3
--- /dev/null
+++ b/docs/public/assets/images/tutorials/randomised-structure-loot/find_container.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9cdf99f00cb77ff83d52cf327d0c063e9da705a369a9b683472aadd25ba53107
+size 90628
diff --git a/docs/public/assets/images/tutorials/randomised-structure-loot/open_file.png b/docs/public/assets/images/tutorials/randomised-structure-loot/open_file.png
new file mode 100644
index 00000000..e5b1b31b
--- /dev/null
+++ b/docs/public/assets/images/tutorials/randomised-structure-loot/open_file.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05f9ae9413fc7a826bfb90887507be17dbefa7880a02c43c5341adf63bef697a
+size 35490
diff --git a/docs/public/assets/images/tutorials/randomised-structure-loot/test.png b/docs/public/assets/images/tutorials/randomised-structure-loot/test.png
new file mode 100644
index 00000000..91512e38
--- /dev/null
+++ b/docs/public/assets/images/tutorials/randomised-structure-loot/test.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a478ec0056fc9f74de2fd9cdc4da4049711c170ba79c5b861f105b97ab3fea63
+size 308558
diff --git a/docs/public/assets/images/tutorials/sleeping-entities/result.png b/docs/public/assets/images/tutorials/sleeping-entities/result.png
new file mode 100644
index 00000000..d49a3916
--- /dev/null
+++ b/docs/public/assets/images/tutorials/sleeping-entities/result.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3068d20e44c3a0706568730db7bd454a68c08d9c658f725c7fe381dc7f55233a
+size 575239
diff --git a/docs/public/assets/images/visuals/animated-entity-texture/cow.png b/docs/public/assets/images/visuals/animated-entity-texture/cow.png
new file mode 100644
index 00000000..84b5eadb
--- /dev/null
+++ b/docs/public/assets/images/visuals/animated-entity-texture/cow.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98884a9d2f3a534cb63eb25aa0ac25537e3b16eb959d8af5b248004e525b24b6
+size 1123
diff --git a/docs/public/assets/images/visuals/animated-entity-texture/result.gif b/docs/public/assets/images/visuals/animated-entity-texture/result.gif
new file mode 100644
index 00000000..15c9ff8d
--- /dev/null
+++ b/docs/public/assets/images/visuals/animated-entity-texture/result.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:967447559f807114282d5523cbfa5e3551c9eb2a621332604b71b48d46fd3779
+size 1838349
diff --git a/docs/public/assets/images/visuals/animation-effects/add-effect.png b/docs/public/assets/images/visuals/animation-effects/add-effect.png
new file mode 100644
index 00000000..c7c2f62e
--- /dev/null
+++ b/docs/public/assets/images/visuals/animation-effects/add-effect.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ff3b2da0737b7c8cd8b4a566bc12bea34165d536589e62773a6e7a9b6e63dbb0
+size 31117
diff --git a/docs/public/assets/images/visuals/animation-effects/add-locator.png b/docs/public/assets/images/visuals/animation-effects/add-locator.png
new file mode 100644
index 00000000..f965574d
--- /dev/null
+++ b/docs/public/assets/images/visuals/animation-effects/add-locator.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bb6af4bda63db2196908925526bf4fadcdf7b8874ee505af489ff4d34704e5aa
+size 64857
diff --git a/docs/public/assets/images/visuals/animation-effects/showcase.png b/docs/public/assets/images/visuals/animation-effects/showcase.png
new file mode 100644
index 00000000..d3aa0aef
--- /dev/null
+++ b/docs/public/assets/images/visuals/animation-effects/showcase.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:965c32cf215ae6184e6f77bb3c5308ee386ccc3c8f81f7f97e5ceb22fb3949bc
+size 300946
diff --git a/docs/public/assets/images/visuals/animation-effects/specify-data.png b/docs/public/assets/images/visuals/animation-effects/specify-data.png
new file mode 100644
index 00000000..e9326405
--- /dev/null
+++ b/docs/public/assets/images/visuals/animation-effects/specify-data.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1890946e9d6a805acde7ba319905cad84a215af3e9c3318e753d62e600e264ad
+size 52594
diff --git a/docs/public/assets/images/visuals/bedrock-modeling/animations-1.png b/docs/public/assets/images/visuals/bedrock-modeling/animations-1.png
new file mode 100644
index 00000000..3d0a8e8e
--- /dev/null
+++ b/docs/public/assets/images/visuals/bedrock-modeling/animations-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:33a829efc1b676dc93db9d8a0a5310b65eb6673e6fc151217593f0a90cc010b4
+size 7937
diff --git a/docs/public/assets/images/visuals/bedrock-modeling/animations-2.gif b/docs/public/assets/images/visuals/bedrock-modeling/animations-2.gif
new file mode 100644
index 00000000..ed1e5e35
--- /dev/null
+++ b/docs/public/assets/images/visuals/bedrock-modeling/animations-2.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8e1e21c53fca8f3568fc88ca2b787b798405b16e9efe12fc75ffda4d25d1a95
+size 152937
diff --git a/docs/public/assets/images/visuals/bedrock-modeling/setting-loop.png b/docs/public/assets/images/visuals/bedrock-modeling/setting-loop.png
new file mode 100644
index 00000000..997bf62f
--- /dev/null
+++ b/docs/public/assets/images/visuals/bedrock-modeling/setting-loop.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5e5f4ddf8bf4d1fbad61c4c4c0fd17850be441f73458d120be933c50136113a
+size 30306
diff --git a/docs/public/assets/images/visuals/bedrock-modeling/vertex_snap.gif b/docs/public/assets/images/visuals/bedrock-modeling/vertex_snap.gif
new file mode 100644
index 00000000..9d31cfec
--- /dev/null
+++ b/docs/public/assets/images/visuals/bedrock-modeling/vertex_snap.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e7f96b5fb52c06db5c603bf0bbdbce3e13c7a2e22ca1a4264796c91115565c85
+size 2458754
diff --git a/docs/public/assets/images/visuals/bedrock-modeling/z-fighting.png b/docs/public/assets/images/visuals/bedrock-modeling/z-fighting.png
new file mode 100644
index 00000000..b25b10cc
--- /dev/null
+++ b/docs/public/assets/images/visuals/bedrock-modeling/z-fighting.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b86f7f34aaee71e78c36ac23ce81a300dfff24ded825a65797805dcea275ff3e
+size 71544
diff --git a/docs/public/assets/images/visuals/deferred-qna/deferred-qna-media1.gif b/docs/public/assets/images/visuals/deferred-qna/deferred-qna-media1.gif
new file mode 100644
index 00000000..68c9d043
--- /dev/null
+++ b/docs/public/assets/images/visuals/deferred-qna/deferred-qna-media1.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a5584a8992c8ab0ff2145e457b8d38a019451c181ab52851055f84740b04d6f
+size 43956556
diff --git a/docs/public/assets/images/visuals/deferred-qna/deferred-qna-media2.png b/docs/public/assets/images/visuals/deferred-qna/deferred-qna-media2.png
new file mode 100644
index 00000000..2306ed19
--- /dev/null
+++ b/docs/public/assets/images/visuals/deferred-qna/deferred-qna-media2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cfab6555ef6e6f67834476fa0f4059f4bd2eaec97cfc0a64f08e61ce7437cf8
+size 1039297
diff --git a/docs/public/assets/images/visuals/deferred-qna/deferred-qna-media3.png b/docs/public/assets/images/visuals/deferred-qna/deferred-qna-media3.png
new file mode 100644
index 00000000..f1a31da0
--- /dev/null
+++ b/docs/public/assets/images/visuals/deferred-qna/deferred-qna-media3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a0b1d1737098f556fb6dca4f6b5648cd15b83666ac5d4b229cf055032da2320
+size 362860
diff --git a/docs/public/assets/images/visuals/glowing-texture/erase-pixels.png b/docs/public/assets/images/visuals/glowing-texture/erase-pixels.png
new file mode 100644
index 00000000..0e9a7d9a
--- /dev/null
+++ b/docs/public/assets/images/visuals/glowing-texture/erase-pixels.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a19d634500e856dc18f6aa2380db8845c2d0320526f9fd0d8da332c5412e1278
+size 80123
diff --git a/docs/public/assets/images/visuals/glowing-texture/eraser.png b/docs/public/assets/images/visuals/glowing-texture/eraser.png
new file mode 100644
index 00000000..da6a612c
--- /dev/null
+++ b/docs/public/assets/images/visuals/glowing-texture/eraser.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43a259d4131ef80ff04a7f98def0d0697e8670c9767120e6a5d713a405d080e7
+size 7301
diff --git a/docs/public/assets/images/visuals/glowing-texture/opacity.png b/docs/public/assets/images/visuals/glowing-texture/opacity.png
new file mode 100644
index 00000000..e9f0aaca
--- /dev/null
+++ b/docs/public/assets/images/visuals/glowing-texture/opacity.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b89cecd1110a884ec0de23e31aaa2c10af0232614258d57939518c2dd24d045
+size 12269
diff --git a/docs/public/assets/images/visuals/glowing-texture/pig.png b/docs/public/assets/images/visuals/glowing-texture/pig.png
new file mode 100644
index 00000000..102578cb
--- /dev/null
+++ b/docs/public/assets/images/visuals/glowing-texture/pig.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8c09f29b3d66b45f5d2cd29eb8f626598ab76b769cc607b9b8078b5e1d3b002
+size 1501
diff --git a/docs/public/assets/images/visuals/glowing-texture/result.png b/docs/public/assets/images/visuals/glowing-texture/result.png
new file mode 100644
index 00000000..22f31974
--- /dev/null
+++ b/docs/public/assets/images/visuals/glowing-texture/result.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b40a207fac1642d6d937ffa6055bd90249a8e977a6ca63f0bc6936540ec5d19a
+size 216293
diff --git a/docs/public/assets/images/visuals/leash-position/locator-1.png b/docs/public/assets/images/visuals/leash-position/locator-1.png
new file mode 100644
index 00000000..a5e0b680
--- /dev/null
+++ b/docs/public/assets/images/visuals/leash-position/locator-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a06185605bb25bd5df273a5017d6b1a3545b2eda4652d8deeed1d24dfd89c368
+size 84760
diff --git a/docs/public/assets/images/visuals/leash-position/model-1.png b/docs/public/assets/images/visuals/leash-position/model-1.png
new file mode 100644
index 00000000..6f2d7b79
--- /dev/null
+++ b/docs/public/assets/images/visuals/leash-position/model-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ebab903cec6dfe21b2262aa4995687f4afd9e48222d3384d0521fcddbbd58e7b
+size 156473
diff --git a/docs/public/assets/images/visuals/leash-position/model-2.png b/docs/public/assets/images/visuals/leash-position/model-2.png
new file mode 100644
index 00000000..01e78385
--- /dev/null
+++ b/docs/public/assets/images/visuals/leash-position/model-2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9dff399facad50ec8bc480b53b85d8ee744beaba0cece355958f81c3fa0874e1
+size 151112
diff --git a/docs/public/assets/images/visuals/leash-position/model-3.png b/docs/public/assets/images/visuals/leash-position/model-3.png
new file mode 100644
index 00000000..cd4a29bf
--- /dev/null
+++ b/docs/public/assets/images/visuals/leash-position/model-3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6332d54fb833c1fe50689e45ada02d1b0052fe8867dd1969dad64c74e3f22276
+size 160298
diff --git a/docs/public/assets/images/visuals/leash-position/result-0.png b/docs/public/assets/images/visuals/leash-position/result-0.png
new file mode 100644
index 00000000..e8dc2887
--- /dev/null
+++ b/docs/public/assets/images/visuals/leash-position/result-0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3f0c92efcce405ca7be437b7c7e21e4ab13f7a64d1f1be4cf85d858c29690082
+size 593112
diff --git a/docs/public/assets/images/visuals/leash-position/result-1.png b/docs/public/assets/images/visuals/leash-position/result-1.png
new file mode 100644
index 00000000..8e8676da
--- /dev/null
+++ b/docs/public/assets/images/visuals/leash-position/result-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8495643757fe16da296ee89ca9be1b1270582a353553953075f708a0a475f81d
+size 625313
diff --git a/docs/public/assets/images/visuals/math-based-animations/animation-1.gif b/docs/public/assets/images/visuals/math-based-animations/animation-1.gif
new file mode 100644
index 00000000..647aab3f
--- /dev/null
+++ b/docs/public/assets/images/visuals/math-based-animations/animation-1.gif
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f554beb2e790e295aa04bbf8297add8503373a12fcbeecc4cd7e5627102b5e2f
+size 328323
diff --git a/docs/public/assets/images/visuals/skin-packs/troubleshooting-1.png b/docs/public/assets/images/visuals/skin-packs/troubleshooting-1.png
new file mode 100644
index 00000000..f445ffba
--- /dev/null
+++ b/docs/public/assets/images/visuals/skin-packs/troubleshooting-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ee7bc8346729e4435c008b2371d3778466dc260955d357115f110bb8c2b0134b
+size 199767
diff --git a/docs/public/assets/images/visuals/skin-packs/troubleshooting-2.png b/docs/public/assets/images/visuals/skin-packs/troubleshooting-2.png
new file mode 100644
index 00000000..a3f4808b
--- /dev/null
+++ b/docs/public/assets/images/visuals/skin-packs/troubleshooting-2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fecf6469f8c9e65502948f77a30b522c2b7d7f315cefcaf0cafa1341629e12a9
+size 200335
diff --git a/docs/public/assets/images/visuals/structure-presentation/in-game.png b/docs/public/assets/images/visuals/structure-presentation/in-game.png
new file mode 100644
index 00000000..841a00c2
--- /dev/null
+++ b/docs/public/assets/images/visuals/structure-presentation/in-game.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1296a857001f30d671b022cde1e75e1bc43d876c207762e6e6edc258e2acdc4b
+size 2016601
diff --git a/docs/public/assets/images/visuals/structure-presentation/model-render.png b/docs/public/assets/images/visuals/structure-presentation/model-render.png
new file mode 100644
index 00000000..f459bc0b
--- /dev/null
+++ b/docs/public/assets/images/visuals/structure-presentation/model-render.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2243eb11265b3d46e8bb9800644be87f4edcbdb7036706841058a09eb467820
+size 415915
diff --git a/docs/public/assets/images/visuals/structure-presentation/structure-block-0.png b/docs/public/assets/images/visuals/structure-presentation/structure-block-0.png
new file mode 100644
index 00000000..ab22e935
--- /dev/null
+++ b/docs/public/assets/images/visuals/structure-presentation/structure-block-0.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:db86e24f5f7f0352e182d6d3e3abb308e374de432353a946c1338d09790c53d0
+size 237066
diff --git a/docs/public/assets/images/visuals/structure-presentation/structure-block-1.png b/docs/public/assets/images/visuals/structure-presentation/structure-block-1.png
new file mode 100644
index 00000000..f4bff708
--- /dev/null
+++ b/docs/public/assets/images/visuals/structure-presentation/structure-block-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f5a286f012ebfdb92ecb175689f172fae44dbfa850293279cee6b479d8352b99
+size 196244
diff --git a/docs/public/assets/images/vr/install/vr_desktop.png b/docs/public/assets/images/vr/install/vr_desktop.png
new file mode 100644
index 00000000..0346e6a7
--- /dev/null
+++ b/docs/public/assets/images/vr/install/vr_desktop.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2797fe1517057bcc54ae7ee8a53042215b89ed0e93db10743d618de2e44cbc59
+size 341955
diff --git a/docs/public/assets/images/vr/install/vr_headset.png b/docs/public/assets/images/vr/install/vr_headset.png
new file mode 100644
index 00000000..08f288f3
--- /dev/null
+++ b/docs/public/assets/images/vr/install/vr_headset.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b570ddcf7518a7505540210ebfda9ee49857548a88b59d8c9b0d3762c35c863c
+size 55489
diff --git a/docs/public/assets/images/vr/install/vr_shortcut_icon.png b/docs/public/assets/images/vr/install/vr_shortcut_icon.png
new file mode 100644
index 00000000..13891bb8
--- /dev/null
+++ b/docs/public/assets/images/vr/install/vr_shortcut_icon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c38987f5c027216f117cbf04e6403913b3439541fb3601796f48bfb0442a8191
+size 9964
diff --git a/docs/public/assets/images/vr/install/vr_shortcut_path.png b/docs/public/assets/images/vr/install/vr_shortcut_path.png
new file mode 100644
index 00000000..2c3d4491
--- /dev/null
+++ b/docs/public/assets/images/vr/install/vr_shortcut_path.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d7fed7acdb649b14b7dad43b7b0b7ed1bf490a3229b1d4ce583bd83b69276643
+size 20818
diff --git a/docs/public/assets/images/vr/setup/vr-template-contents.png b/docs/public/assets/images/vr/setup/vr-template-contents.png
new file mode 100644
index 00000000..198e546b
--- /dev/null
+++ b/docs/public/assets/images/vr/setup/vr-template-contents.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e4a0e2e3b500c02c4422c84899a0016448735f0bc37d50610b3dfc2e757da90c
+size 2865
diff --git a/docs/public/assets/images/vr/setup/vr-template-holograms.png b/docs/public/assets/images/vr/setup/vr-template-holograms.png
new file mode 100644
index 00000000..677cfecd
--- /dev/null
+++ b/docs/public/assets/images/vr/setup/vr-template-holograms.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b9209e7ef608a7ea35017ff2b630c275dfbe5d49f68da01026747f43e790b077
+size 26904
diff --git a/docs/public/assets/images/vr/setup/vr-template-textures.png b/docs/public/assets/images/vr/setup/vr-template-textures.png
new file mode 100644
index 00000000..ce3943d8
--- /dev/null
+++ b/docs/public/assets/images/vr/setup/vr-template-textures.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d9e6490607e7f33c20958b2bbcb84619490c96c34bb94f8387c18f0cb38d255a
+size 36211
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/edited-dimensions-1.png b/docs/public/assets/images/vr/tutorial-hand-right/edited-dimensions-1.png
new file mode 100644
index 00000000..dc6f0318
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/edited-dimensions-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:783956ee3bafc1b77e9302554f7e303d9523482ffa748a628f3d5a72e5db849b
+size 200220
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/edited-dimensions-2.png b/docs/public/assets/images/vr/tutorial-hand-right/edited-dimensions-2.png
new file mode 100644
index 00000000..37c87547
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/edited-dimensions-2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e8fc75190268cc8da44196ec1f3df40750a53fec92ccef03075413887366ff6
+size 255022
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/export-done.png b/docs/public/assets/images/vr/tutorial-hand-right/export-done.png
new file mode 100644
index 00000000..aecb2f02
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/export-done.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc994c133fb1ecf34ae90ccfcbd258ff47830fb0f3ec3fe0d7537eec342fa14a
+size 968029
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/export-model-1.png b/docs/public/assets/images/vr/tutorial-hand-right/export-model-1.png
new file mode 100644
index 00000000..68de6781
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/export-model-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24d2b5fdb84e63434de00f065c887bb9da02147361c2d5e61bb74382c7608c96
+size 149228
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/export-model-2.png b/docs/public/assets/images/vr/tutorial-hand-right/export-model-2.png
new file mode 100644
index 00000000..fd0709fa
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/export-model-2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:187f57463cab740ac15470d856a3a89ad9061409e2a51765891b6228e23907ed
+size 7231
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/export-texture.png b/docs/public/assets/images/vr/tutorial-hand-right/export-texture.png
new file mode 100644
index 00000000..d7a2d804
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/export-texture.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b0725b76072f7f41fcc3b93e3c1668f6c80859ed11f287d0e6649f05a1637e6
+size 36867
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/hologram-hands-steve.png b/docs/public/assets/images/vr/tutorial-hand-right/hologram-hands-steve.png
new file mode 100644
index 00000000..895acbba
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/hologram-hands-steve.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:985481fc9c94898015c493cab56739c2a824136d84598aab5f85288953fc4750
+size 363
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/import-1.png b/docs/public/assets/images/vr/tutorial-hand-right/import-1.png
new file mode 100644
index 00000000..1f257cef
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/import-1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e4918276b8719357e419afb70f1580c94121afa36dfadad4ba5bb27612bb474
+size 132325
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/import-2.png b/docs/public/assets/images/vr/tutorial-hand-right/import-2.png
new file mode 100644
index 00000000..71f19c4a
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/import-2.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7e75c914012546074045de2e13cff7bb3c9533c71cade4a0a7dd001978b69020
+size 101954
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/import-3.png b/docs/public/assets/images/vr/tutorial-hand-right/import-3.png
new file mode 100644
index 00000000..984741e9
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/import-3.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1225dc91788e928108ceebf4b77a22f1e28c59fa8b7aaae62b5cc280039c7e5c
+size 608587
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/magnet-icon.png b/docs/public/assets/images/vr/tutorial-hand-right/magnet-icon.png
new file mode 100644
index 00000000..96206836
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/magnet-icon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a24cab64fee0799844a2e23a9243c1195e071abd159292b03e9789d4d78cbb28
+size 13305
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/model-dimensions.png b/docs/public/assets/images/vr/tutorial-hand-right/model-dimensions.png
new file mode 100644
index 00000000..dd03a5ac
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/model-dimensions.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:af771777afaa9c92e01dbcb375267d24db60dd23b767fdcbcb7a58b3ba209f44
+size 332282
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/shading-add-texture-element.png b/docs/public/assets/images/vr/tutorial-hand-right/shading-add-texture-element.png
new file mode 100644
index 00000000..694f8eac
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/shading-add-texture-element.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:91853abe8fa7b51930176999f47c1ff6fabf39a094a13ae080d6162a237897e4
+size 158422
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/something b/docs/public/assets/images/vr/tutorial-hand-right/something
new file mode 100644
index 00000000..8b137891
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/something
@@ -0,0 +1 @@
+
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/steve-texture-stretched.png b/docs/public/assets/images/vr/tutorial-hand-right/steve-texture-stretched.png
new file mode 100644
index 00000000..ed4bdaaa
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/steve-texture-stretched.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a11ad8ca6757e8e8af1b34cc2a05476411697169526c4b2be0e23686d97d3ac7
+size 153144
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/texture-base-connect.png b/docs/public/assets/images/vr/tutorial-hand-right/texture-base-connect.png
new file mode 100644
index 00000000..2f26d5ee
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/texture-base-connect.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0beecab21c99c5c5706d835dbc43c5050f64481417bfd60c2660dc0c1efe6563
+size 69145
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/texture-element-complete.png b/docs/public/assets/images/vr/tutorial-hand-right/texture-element-complete.png
new file mode 100644
index 00000000..2c6b0889
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/texture-element-complete.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b0a8ba5fd64c963b15bdfbc1eeed48293c54d4d52adec3bf0226b20b540a0446
+size 26478
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/texture-element.png b/docs/public/assets/images/vr/tutorial-hand-right/texture-element.png
new file mode 100644
index 00000000..5a3a6c07
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/texture-element.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f90c19b37cea4d233b005cc6d8b7adeeba16814a5ab989685197426aaa5b23a9
+size 23180
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/texture-on-model.png b/docs/public/assets/images/vr/tutorial-hand-right/texture-on-model.png
new file mode 100644
index 00000000..e81a394c
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/texture-on-model.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5d3c71b0c80993786247b726a2b5b2903dbf50fc10b1d0278ce9f7816dda76e3
+size 231991
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/uv-map-done.png b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-done.png
new file mode 100644
index 00000000..37323c9e
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-done.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0d1a3a6159b9b4a2bbb323f12c007c1776381bdc6b98eec5e4009d539bb9537b
+size 151654
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/uv-map-pos.png b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-pos.png
new file mode 100644
index 00000000..76fffee7
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-pos.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1df5d25e521e184708916e5a44895121d6c84e16cf94e38ad9baa9c57e7ad8e6
+size 14610
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/uv-map-side-up.png b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-side-up.png
new file mode 100644
index 00000000..f12ae2c3
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-side-up.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7cd33cfb7170c9e3eafae4bbafc859aa496a4c5859f89044c97a7db4372af9eb
+size 6009
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/uv-map-top-move-up.png b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-top-move-up.png
new file mode 100644
index 00000000..5c3f023b
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-top-move-up.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ffbe2100068deccea9b7ff9f994f2d0c87b2e80611132dfec195cc5632313a05
+size 20106
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/uv-map-top-selected.png b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-top-selected.png
new file mode 100644
index 00000000..78c7f39e
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/uv-map-top-selected.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6677f9ec29717fc97a4dc975156fae92226df079932c5e4bf83649b2a13631a9
+size 7759
diff --git a/docs/public/assets/images/vr/tutorial-hand-right/uv-map.png b/docs/public/assets/images/vr/tutorial-hand-right/uv-map.png
new file mode 100644
index 00000000..b87fc25b
--- /dev/null
+++ b/docs/public/assets/images/vr/tutorial-hand-right/uv-map.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:57f3e797f1995f6c6dcfcb785eded517f935849e30b4aa4ad79acc40d03513f6
+size 5586
diff --git a/docs/public/assets/images/world-generation/generating-custom-ores/deepslate_ore.png b/docs/public/assets/images/world-generation/generating-custom-ores/deepslate_ore.png
new file mode 100644
index 00000000..8c131a81
--- /dev/null
+++ b/docs/public/assets/images/world-generation/generating-custom-ores/deepslate_ore.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:76a88ded0b6b2ca712690dd9463ea80e8afcef0b71b91f4a5d2e8a24422323ff
+size 689257
diff --git a/docs/public/assets/images/world-generation/generating-custom-ores/stone_ore.png b/docs/public/assets/images/world-generation/generating-custom-ores/stone_ore.png
new file mode 100644
index 00000000..5969f9b4
--- /dev/null
+++ b/docs/public/assets/images/world-generation/generating-custom-ores/stone_ore.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:71c0f6c70e4ca13e2e9bfb4dea698fa10ed9970446025b716b2814d685d647d0
+size 494056
diff --git a/docs/public/assets/images/world-generation/rock_feature.png b/docs/public/assets/images/world-generation/rock_feature.png
new file mode 100644
index 00000000..48c7829c
--- /dev/null
+++ b/docs/public/assets/images/world-generation/rock_feature.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:63f280b90a3aecce9ad85a24d05012e87d1d009333e764fbf077e79cadae6c85
+size 3651730
diff --git a/docs/public/assets/images/world-generation/structure-features/aqua_temple.png b/docs/public/assets/images/world-generation/structure-features/aqua_temple.png
new file mode 100644
index 00000000..1e135744
--- /dev/null
+++ b/docs/public/assets/images/world-generation/structure-features/aqua_temple.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:565034308d4de187231297246f6a7100520753299f9fb9d1cc10169428685e92
+size 944638
diff --git a/docs/public/assets/images/world-generation/structure-features/balloon.png b/docs/public/assets/images/world-generation/structure-features/balloon.png
new file mode 100644
index 00000000..d52f517f
--- /dev/null
+++ b/docs/public/assets/images/world-generation/structure-features/balloon.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7546c79253f59b30e2dd5129b6fafa59bb11fd279efa69c08371ec9508aed0d6
+size 412522
diff --git a/docs/public/assets/images/world-generation/structure-features/bunker.png b/docs/public/assets/images/world-generation/structure-features/bunker.png
new file mode 100644
index 00000000..b3aebb41
--- /dev/null
+++ b/docs/public/assets/images/world-generation/structure-features/bunker.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2ab607d3cd66a571eb477e7a94fbd2667bf80c9c1e0470f8a64c1fc56f6c58c2
+size 445930
diff --git a/docs/public/assets/images/world-generation/structure-features/house.png b/docs/public/assets/images/world-generation/structure-features/house.png
new file mode 100644
index 00000000..94a2a21e
--- /dev/null
+++ b/docs/public/assets/images/world-generation/structure-features/house.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2894dbc624607a13d8a827f8174502d736a7ad19e60cfc94c02ca9717f8fa0e9
+size 627202
diff --git a/docs/public/assets/images/world-generation/structure-features/raft.png b/docs/public/assets/images/world-generation/structure-features/raft.png
new file mode 100644
index 00000000..5143d809
--- /dev/null
+++ b/docs/public/assets/images/world-generation/structure-features/raft.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92236f9f3ccca477d684c2b5e352dad7dd27dcd59938501af7d821bbe39c8dd9
+size 1102794
diff --git a/docs/public/assets/nbt/nbt_example_file.nbt b/docs/public/assets/nbt/nbt_example_file.nbt
new file mode 100644
index 00000000..d85571bd
Binary files /dev/null and b/docs/public/assets/nbt/nbt_example_file.nbt differ
diff --git a/docs/public/assets/packs/entities/aec/aec.mcstructure b/docs/public/assets/packs/entities/aec/aec.mcstructure
new file mode 100644
index 00000000..330c30dc
Binary files /dev/null and b/docs/public/assets/packs/entities/aec/aec.mcstructure differ
diff --git a/docs/public/assets/packs/tutorials/attachables/method_one/attachable_guide.animation.json b/docs/public/assets/packs/tutorials/attachables/method_one/attachable_guide.animation.json
new file mode 100644
index 00000000..46d75547
--- /dev/null
+++ b/docs/public/assets/packs/tutorials/attachables/method_one/attachable_guide.animation.json
@@ -0,0 +1,17 @@
+{
+ "format_version": "1.8.0",
+ "animations": {
+ "animation.wiki.first_person_guide.right_arm.method_one": {
+ "loop": true,
+ "bones": {
+ "rightArm": {
+ "rotation": [95, -45, 115],
+ "position": [13.5, -10, 12]
+ },
+ "rightItem": {
+ "position": [0, 0, -1]
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/public/assets/packs/tutorials/attachables/method_one/steve_head.animation.json b/docs/public/assets/packs/tutorials/attachables/method_one/steve_head.animation.json
new file mode 100644
index 00000000..ee11e0c0
--- /dev/null
+++ b/docs/public/assets/packs/tutorials/attachables/method_one/steve_head.animation.json
@@ -0,0 +1,24 @@
+{
+ "format_version": "1.10.0",
+ "animations": {
+ "animation.steve_head.hold_first_person": {
+ "loop": true,
+ "bones": {
+ "steve_head": {
+ "rotation": [27, -39, -159],
+ "position": [-6, 5.5, 3.4]
+ }
+ }
+ },
+ "animation.steve_head.hold_third_person": {
+ "loop": true,
+ "bones": {
+ "steve_head": {
+ "rotation": [-20, -32.5, 0],
+ "position": [-6, 10, -3],
+ "scale": 0.65
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/public/assets/packs/tutorials/attachables/method_one/steve_head.geo.json b/docs/public/assets/packs/tutorials/attachables/method_one/steve_head.geo.json
new file mode 100644
index 00000000..725a778b
--- /dev/null
+++ b/docs/public/assets/packs/tutorials/attachables/method_one/steve_head.geo.json
@@ -0,0 +1,99 @@
+{
+ "format_version": "1.16.0",
+ "minecraft:geometry": [
+ {
+ "description": {
+ "identifier": "geometry.wiki.steve_head",
+ "texture_width": 64,
+ "texture_height": 64,
+ "visible_bounds_width": 13,
+ "visible_bounds_height": 4,
+ "visible_bounds_offset": [0, 1, 0]
+ },
+ "bones": [
+ // Steve head model
+ {
+ "name": "steve_head",
+ "parent": "rightItem",
+ "pivot": [0, 4, 0],
+ "cubes": [
+ {"origin": [-4, 0, -4], "size": [8, 8, 8], "uv": [0, 0]}
+ ]
+ },
+
+ // Player skeleton
+ //! NOTE ! Remove the cubes from these bones before using this model in-game!
+ {
+ "name": "root",
+ "pivot": [0, 0, 0]
+ },
+ {
+ "name": "waist",
+ "parent": "root",
+ "pivot": [0, 12, 0]
+ },
+ {
+ "name": "body",
+ "parent": "waist",
+ "pivot": [0, 24, 0],
+ "cubes": [
+ {"origin": [-4, 12, -2], "size": [8, 12, 4], "uv": [16, 16]}
+ ]
+ },
+ {
+ "name": "head",
+ "parent": "body",
+ "pivot": [0, 24, 0],
+ "cubes": [
+ {"origin": [-4, 24, -4], "size": [8, 8, 8], "uv": [0, 0]}
+ ]
+ },
+ {
+ "name": "leftArm",
+ "parent": "body",
+ "pivot": [5, 22, 0],
+ "cubes": [
+ {"origin": [4, 12, -2], "size": [4, 12, 4], "uv": [32, 48]}
+ ]
+ },
+ {
+ "name": "leftItem",
+ "parent": "leftArm",
+ "pivot": [6, 15, 1]
+ },
+ {
+ "name": "rightArm",
+ "parent": "body",
+ "pivot": [-5, 22, 0],
+ "cubes": [
+ {"origin": [-8, 12, -2], "size": [4, 12, 4], "uv": [40, 16]}
+ ]
+ },
+ {
+ "name": "rightItem",
+ "parent": "rightArm",
+ "pivot": [-6, 15, 1],
+ "locators": {
+ "lead_hold": [-6, 15, 1]
+ }
+ },
+ {
+ "name": "leftLeg",
+ "parent": "root",
+ "pivot": [1.9, 12, 0],
+ "cubes": [
+ {"origin": [-0.1, 0, -2], "size": [4, 12, 4], "uv": [16, 48]}
+ ]
+ },
+ {
+ "name": "rightLeg",
+ "parent": "root",
+ "pivot": [-1.9, 12, 0],
+ "cubes": [
+ {"origin": [-3.9, 0, -2], "size": [4, 12, 4], "uv": [0, 16]}
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/docs/public/assets/packs/tutorials/attachables/method_two/attachable_guide.animation.json b/docs/public/assets/packs/tutorials/attachables/method_two/attachable_guide.animation.json
new file mode 100644
index 00000000..6344ffc9
--- /dev/null
+++ b/docs/public/assets/packs/tutorials/attachables/method_two/attachable_guide.animation.json
@@ -0,0 +1,28 @@
+{
+ "format_version": "1.10.0",
+ "animations": {
+ "animation.wiki.third_person_guide": {
+ "loop": true,
+ "bones": {
+ "rightItem": {
+ "position": [-6, -9, -1]
+ },
+ "leftItem": {
+ "position": [6, -9, -1]
+ }
+ }
+ },
+ "animation.wiki.first_person_guide.right_hand": {
+ "loop": true,
+ "bones": {
+ "rightArm": {
+ "rotation": [95, -45, 115],
+ "position": [13.5, -10, 12]
+ },
+ "rightItem": {
+ "position": [-6, -9, -1]
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/public/assets/packs/tutorials/attachables/method_two/player_skeleton.geo.json b/docs/public/assets/packs/tutorials/attachables/method_two/player_skeleton.geo.json
new file mode 100644
index 00000000..01f2013a
--- /dev/null
+++ b/docs/public/assets/packs/tutorials/attachables/method_two/player_skeleton.geo.json
@@ -0,0 +1,113 @@
+{
+ "format_version": "1.16.0",
+ "minecraft:geometry": [
+ {
+ "description": {
+ "identifier": "geometry.wiki.player_skeleton",
+ "texture_width": 64,
+ "texture_height": 64,
+ "visible_bounds_width": 13,
+ "visible_bounds_height": 4,
+ "visible_bounds_offset": [0, 1, 0]
+ },
+ "bones": [
+
+ // Copy from here to line 106
+ {
+ "name": "root",
+ "pivot": [0, 0, 0]
+ },
+ {
+ "name": "waist",
+ "parent": "root",
+ "pivot": [0, 12, 0]
+ },
+ {
+ "name": "body",
+ "parent": "waist",
+ "pivot": [0, 24, 0],
+ "cubes": [
+ {
+ "origin": [-4, 12, -2],
+ "size": [8, 12, 4],
+ "uv": [16, 16]
+ }
+ ]
+ },
+ {
+ "name": "head",
+ "parent": "body",
+ "pivot": [0, 24, 0],
+ "cubes": [
+ {
+ "origin": [-4, 24, -4],
+ "size": [8, 8, 8],
+ "uv": [0, 0]
+ }
+ ]
+ },
+ {
+ "name": "leftArm",
+ "parent": "body",
+ "pivot": [5, 22, 0],
+ "cubes": [
+ {
+ "origin": [4, 12, -2],
+ "size": [4, 12, 4],
+ "uv": [32, 48]
+ }
+ ]
+ },
+ {
+ "name": "leftItem",
+ "parent": "leftArm",
+ "pivot": [6, 15, 1]
+ },
+ {
+ "name": "rightArm",
+ "parent": "body",
+ "pivot": [-5, 22, 0],
+ "cubes": [
+ {
+ "origin": [-8, 12, -2],
+ "size": [4, 12, 4],
+ "uv": [40, 16]
+ }
+ ]
+ },
+ {
+ "name": "rightItem",
+ "parent": "rightArm",
+ "pivot": [-6, 15, 1]
+ },
+ {
+ "name": "leftLeg",
+ "parent": "root",
+ "pivot": [1.9, 12, 0],
+ "cubes": [
+ {
+ "origin": [-0.1, 0, -2],
+ "size": [4, 12, 4],
+ "uv": [16, 48]
+ }
+ ]
+ },
+ {
+ "name": "rightLeg",
+ "parent": "root",
+ "pivot": [-1.9, 12, 0],
+ "cubes": [
+ {
+ "origin": [-3.9, 0, -2],
+ "size": [4, 12, 4],
+ "uv": [0, 16]
+ }
+ ]
+ }
+
+ // End of selection
+
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/docs/public/assets/packs/tutorials/attachables/method_two/skeleton_head.animation.json b/docs/public/assets/packs/tutorials/attachables/method_two/skeleton_head.animation.json
new file mode 100644
index 00000000..b652470f
--- /dev/null
+++ b/docs/public/assets/packs/tutorials/attachables/method_two/skeleton_head.animation.json
@@ -0,0 +1,24 @@
+{
+ "format_version": "1.10.0",
+ "animations": {
+ "animation.skeleton_head.hold_first_person": {
+ "loop": true,
+ "bones": {
+ "skeleton_head": {
+ "rotation": [27, -39, -159],
+ "position": [0, 14.5, 2.4]
+ }
+ }
+ },
+ "animation.skeleton_head.hold_third_person": {
+ "loop": true,
+ "bones": {
+ "skeleton_head": {
+ "rotation": [-20, -32.5, 0],
+ "position": [0, 19, -4],
+ "scale": 0.65
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/public/assets/packs/tutorials/attachables/method_two/skeleton_head.geo.json b/docs/public/assets/packs/tutorials/attachables/method_two/skeleton_head.geo.json
new file mode 100644
index 00000000..2d59cc4d
--- /dev/null
+++ b/docs/public/assets/packs/tutorials/attachables/method_two/skeleton_head.geo.json
@@ -0,0 +1,26 @@
+{
+ "format_version": "1.16.0",
+ "minecraft:geometry": [
+ {
+ "description": {
+ "identifier": "geometry.wiki.skeleton_head",
+ "texture_width": 64,
+ "texture_height": 64,
+ "visible_bounds_width": 13,
+ "visible_bounds_height": 4,
+ "visible_bounds_offset": [0, 1, 0]
+ },
+ "bones": [
+ // Skeleton head model
+ {
+ "name": "skeleton_head",
+ "binding": "query.item_slot_to_bone_name(context.item_slot)",
+ "pivot": [0, 4, 0],
+ "cubes": [
+ {"origin": [-4, 0, -4], "size": [8, 8, 8], "uv": [0, 0]}
+ ]
+ }
+ ]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/docs/public/assets/packs/tutorials/blocks/ore-loot-tables/ore_xp_reward.mcstructure b/docs/public/assets/packs/tutorials/blocks/ore-loot-tables/ore_xp_reward.mcstructure
new file mode 100644
index 00000000..b6dcc769
Binary files /dev/null and b/docs/public/assets/packs/tutorials/blocks/ore-loot-tables/ore_xp_reward.mcstructure differ
diff --git a/docs/public/assets/packs/visuals/animated-entity-texture/entity.material b/docs/public/assets/packs/visuals/animated-entity-texture/entity.material
new file mode 100644
index 00000000..bec6740c
--- /dev/null
+++ b/docs/public/assets/packs/visuals/animated-entity-texture/entity.material
@@ -0,0 +1,1423 @@
+{
+ "materials":{
+ "version":"1.0.0",
+ "entity_static":{
+ "vertexShader":"shaders/entity.vertex",
+ "vrGeometryShader":"shaders/entity.geometry",
+ "fragmentShader":"shaders/entity.fragment",
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ },
+ {
+ "skinning_color":{
+ "+defines":[
+ "USE_SKINNING",
+ "USE_OVERLAY"
+ ],
+ "+states":[
+ "Blending"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ],
+ "msaaSupport":"Both",
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureFilter":"Point"
+ }
+ ]
+ },
+ "entity_flat_color_line":{
+ "vertexShader":"shaders/position.vertex",
+ "vrGeometryShader":"shaders/position.geometry",
+ "fragmentShader":"shaders/current_color.fragment",
+ "msaaSupport":"Both",
+ "+defines":[
+ "LINE_STRIP"
+ ],
+ "primitiveMode":"Line",
+ "vertexFields":[
+ {
+ "field":"Position"
+ }
+ ]
+ },
+ "entity_loyalty_rope:entity_glint":{
+ "+states":[
+ "DisableCulling"
+ ]
+ },
+ "entity:entity_static":{
+ "+defines":[
+ "USE_OVERLAY"
+ ],
+ "msaaSupport":"Both"
+ },
+ "opaque_block:entity_static":{
+ "msaaSupport":"Both"
+ },
+ "opaque_block_color:opaque_block":{
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "opaque_block_color_uv2:opaque_block":{
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"UV1"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"UV1"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "alpha_block:entity_static":{
+ "msaaSupport":"Both"
+ },
+ "alpha_block_color:alpha_block":{
+ "+defines":[
+ "ALPHA_TEST"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "entity_nocull:entity":{
+ "+states":[
+ "DisableCulling"
+ ]
+ },
+ "entity_change_color:entity_nocull":{
+ "+defines":[
+ "USE_OVERLAY",
+ "USE_COLOR_MASK"
+ ]
+ },
+ "entity_alphatest:entity_nocull":{
+ "+defines":[
+ "ALPHA_TEST"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":1,
+ "textureWrap":"Repeat"
+ }
+ ],
+ "msaaSupport":"Both"
+ },
+ "entity_alphatest_one_sided:entity":{
+ "+defines":[
+ "ALPHA_TEST"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":1,
+ "textureWrap":"Repeat"
+ }
+ ],
+ "msaaSupport":"Both"
+ },
+ "map:entity_alphatest":{
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "on_screen_effect:entity_alphatest":{
+ "+defines":[
+ "COLOR_BASED"
+ ],
+ "+states":[
+ "Blending"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ },
+ "item_in_hand_entity_alphatest:entity_alphatest":{
+ "msaaSupport":"Both"
+ },
+ "item_in_hand_entity_alphatest_color:item_in_hand_entity_alphatest":{
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "entity_alphablend:entity":{
+ "+states":[
+ "Blending"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ],
+ "msaaSupport":"Both"
+ },
+ "entity_alphablend_nocolor:entity_alphablend":{
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "guardian_ghost:entity_alphablend_nocolor":{
+ "+defines":[
+ "USE_COLOR_MASK"
+ ]
+ },
+ "entity_emissive:entity":{
+ "+defines":[
+ "USE_EMISSIVE"
+ ]
+ },
+ "glow_squid:entity_emissive":{},
+ "entity_emissive_alpha:entity_nocull":{
+ "+defines":[
+ "ALPHA_TEST",
+ "USE_EMISSIVE"
+ ]
+ },
+ "entity_emissive_alpha_one_sided:entity":{
+ "+defines":[
+ "ALPHA_TEST",
+ "USE_EMISSIVE"
+ ]
+ },
+ "entity_custom:entity":{
+ "+states":[
+ "Blending"
+ ],
+ "+defines":[
+ "ALPHA_TEST",
+ "Blending",
+ "USE_OVERLAY",
+ "USE_MASK"
+ ]
+ },
+ "item_in_hand:entity":{
+ "+defines":[
+ "COLOR_BASED",
+ "NO_TEXTURE",
+ "ITEM_IN_HAND"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ],
+ "msaaSupport":"Both"
+ },
+ "item_in_hand_multicolor_tint:item_in_hand":{
+ "+defines":[
+ "COLOR_BASED",
+ "NO_TEXTURE",
+ "ITEM_IN_HAND",
+ "MULTI_COLOR_TINT"
+ ],
+ "-defines":[
+ "USE_OVERLAY"
+ ]
+ },
+ "map_decoration":{
+ "+defines":[
+ "ALPHA_TEST",
+ "TINTED"
+ ],
+ "vertexShader":"shaders/entity.vertex",
+ "vrGeometryShader":"shaders/entity.geometry",
+ "fragmentShader":"shaders/entity.fragment",
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ],
+ "msaaSupport":"Both",
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureFilter":"Point"
+ }
+ ]
+ },
+ "map_marker":{
+ "+defines":[
+ "ALPHA_TEST"
+ ],
+ "vertexShader":"shaders/color_uv.vertex",
+ "vrGeometryShader":"shaders/color_uv.geometry",
+ "fragmentShader":"shaders/color_texture.fragment",
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ],
+ "msaaSupport":"Both",
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureFilter":"Point"
+ }
+ ]
+ },
+ "charged_creeper:entity_static":{
+ "+defines":[
+ "USE_UV_ANIM",
+ "ALPHA_TEST"
+ ],
+ "+states":[
+ "Blending",
+ "DisableCulling"
+ ],
+ "blendSrc":"One",
+ "blendDst":"One",
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureWrap":"Repeat"
+ }
+ ]
+ },
+ "item_in_hand_glint:item_in_hand":{
+ "+defines":[
+ "GLINT"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureFilter":"Point"
+ },
+ {
+ "samplerIndex":1,
+ "textureWrap":"Repeat"
+ }
+ ]
+ },
+ "entity_glint:entity":{
+ "+defines":[
+ "GLINT"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":1,
+ "textureWrap":"Repeat"
+ }
+ ]
+ },
+ "entity_alphatest_glint:entity_alphatest":{
+ "+defines":[
+ "GLINT"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":1,
+ "textureWrap":"Repeat"
+ }
+ ]
+ },
+ "entity_alphatest_glint_item:entity_alphatest":{
+ "+defines":[
+ "GLINT"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":1,
+ "textureWrap":"Repeat"
+ }
+ ]
+ },
+ "entity_change_color_glint:entity_glint":{
+ "+defines":[
+ "USE_COLOR_MASK"
+ ]
+ },
+ "entity_alphatest_change_color:entity_change_color":{
+ "+states":[
+ "DisableAlphaWrite"
+ ],
+ "+defines":[
+ "ALPHA_TEST",
+ "USE_COLOR_MASK"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":1,
+ "textureWrap":"Repeat"
+ }
+ ]
+ },
+ "entity_alphatest_change_color_glint:entity_change_color":{
+ "+defines":[
+ "ALPHA_TEST",
+ "USE_COLOR_MASK",
+ "GLINT"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":1,
+ "textureWrap":"Repeat"
+ }
+ ]
+ },
+ "entity_alphatest_multicolor_tint:entity":{
+ "+states":[
+ "DisableAlphaWrite"
+ ],
+ "+defines":[
+ "ALPHA_TEST",
+ "MULTI_COLOR_TINT"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":1,
+ "textureWrap":"Repeat"
+ }
+ ]
+ },
+ "beacon_beam:entity_nocull":{
+ "+defines":[
+ "COLOR_BASED",
+ "USE_COLOR_BLEND",
+ "USE_UV_ANIM"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureWrap":"Repeat"
+ }
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "beacon_beam_transparent:entity":{
+ "+states":[
+ "Blending",
+ "DisableCulling",
+ "DisableDepthWrite",
+ "DisableAlphaWrite"
+ ],
+ "vertexShader":"shaders/color_uv.vertex",
+ "vrGeometryShader":"shaders/color_uv.geometry",
+ "fragmentShader":"shaders/color_texture.fragment",
+ "blendSrc":"SourceAlpha",
+ "blendDst":"OneMinusSrcAlpha",
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "conduit_wind:entity_alphatest":{
+ "+defines":[
+ "USE_UV_ANIM"
+ ]
+ },
+ "entity_multitexture:entity":{
+ "+defines":[
+ "USE_MULTITEXTURE"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureWrap":"Clamp"
+ },
+ {
+ "samplerIndex":1,
+ "textureWrap":"Clamp"
+ },
+ {
+ "samplerIndex":2,
+ "textureWrap":"Clamp"
+ }
+ ]
+ },
+ "entity_multitexture_color_mask:entity_multitexture":{
+ "+defines":[
+ "COLOR_SECOND_TEXTURE"
+ ]
+ },
+ "entity_multitexture_alpha_test:entity_multitexture":{
+ "+states":[
+ "DisableCulling"
+ ],
+ "+defines":[
+ "ALPHA_TEST"
+ ]
+ },
+ "entity_multitexture_multiplicative_blend:entity":{
+ "+states":[
+ "DisableCulling"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureWrap":"Clamp"
+ },
+ {
+ "samplerIndex":1,
+ "textureWrap":"Clamp"
+ }
+ ],
+ "+defines":[
+ "ALPHA_TEST",
+ "USE_COLOR_MASK",
+ "MULTIPLICATIVE_TINT",
+ "MULTIPLICATIVE_TINT_COLOR",
+ "USE_OVERLAY"
+ ]
+ },
+ "entity_multitexture_alpha_test_color_mask:entity_multitexture_color_mask":{
+ "+states":[
+ "DisableCulling"
+ ],
+ "+defines":[
+ "ALPHA_TEST"
+ ]
+ },
+ "entity_lead_base:entity":{
+ "+states":[
+ "Blending",
+ "DisableCulling"
+ ]
+ },
+ "entity_multitexture_masked:entity_alphatest":{
+ "+defines":[
+ "MASKED_MULTITEXTURE"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureWrap":"Clamp"
+ },
+ {
+ "samplerIndex":1,
+ "textureWrap":"Clamp"
+ }
+ ]
+ },
+ "moving_block":{
+ "vertexShader":"shaders/renderchunk.vertex",
+ "vrGeometryShader":"shaders/renderchunk.geometry",
+ "fragmentShader":"shaders/renderchunk.fragment",
+ "+defines":[
+ "LOW_PRECISION",
+ "TEXEL_AA",
+ "ATLAS_TEXTURE",
+ "AS_ENTITY_RENDERER"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureFilter":"TexelAA"
+ },
+ {
+ "samplerIndex":1,
+ "textureFilter":"Bilinear"
+ }
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"UV1"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"UV1"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ],
+ "msaaSupport":"Both"
+ },
+ "moving_block_seasons:moving_block":{
+ "+defines":[
+ "SEASONS"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureFilter":"TexelAA"
+ },
+ {
+ "samplerIndex":1,
+ "textureFilter":"Bilinear"
+ },
+ {
+ "samplerIndex":2,
+ "textureFilter":"Point"
+ }
+ ]
+ },
+ "moving_block_alpha_seasons:moving_block_seasons":{
+ "+defines":[
+ "ALPHA_TEST"
+ ],
+ "+states":[
+ "DisableCulling",
+ "EnableAlphaToCoverage"
+ ]
+ },
+ "moving_block_alpha_single_side:moving_block":{
+ "+defines":[
+ "ALPHA_TEST"
+ ],
+ "+states":[
+ "EnableAlphaToCoverage"
+ ]
+ },
+ "moving_block_alpha:moving_block_alpha_single_side":{
+ "+states":[
+ "DisableCulling"
+ ],
+ // z-fighting fix
+ "depthBias":100.0,
+ "slopeScaledDepthBias":0.1,
+ "depthBiasOGL":0.5,
+ "slopeScaledDepthBiasOGL":0.5
+ },
+ "moving_block_double_side:moving_block":{
+ "+states":[
+ "DisableCulling"
+ ]
+ },
+ "moving_block_blend:moving_block":{
+ "+defines":[
+ "BLEND"
+ ],
+ "+states":[
+ "Blending"
+ ]
+ },
+ "entity_beam:entity_nocull":{
+ "+defines":[
+ "USE_UV_ANIM",
+ "ALPHA_TEST",
+ "COLOR_BASED"
+ ],
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureWrap":"Repeat"
+ }
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "entity_beam_additive:entity_alphablend":{
+ "+defines":[
+ "COLOR_BASED",
+ "NO_TEXTURE"
+ ],
+ "-defines":[
+ "USE_OVERLAY"
+ ],
+ "+states":[
+ "Blending",
+ "DisableDepthWrite"
+ ],
+ "blendSrc":"SourceAlpha",
+ "blendDst":"One"
+ },
+ "entity_dissolve_layer0:entity":{
+ "+defines":[
+ "TINTED_ALPHA_TEST"
+ ],
+ "+states":[
+ "DisableColorWrite"
+ ]
+ },
+ "entity_dissolve_layer1:entity":{
+ "depthFunc":"Equal",
+ "+defines":[
+ "ALPHA_TEST"
+ ],
+ "-defines":[
+ "USE_OVERLAY"
+ ]
+ },
+ "banner":{
+ "+defines":[
+ "ENABLE_FOG",
+ "ENABLE_LIGHT"
+ ],
+ "vertexShader":"shaders/banner.vertex",
+ "vrGeometryShader":"shaders/banner.geometry",
+ "fragmentShader":"shaders/banner.fragment",
+ "depthFunc":"LessEqual",
+ "+states":[
+ "Blending"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ],
+ "variants":[
+ {
+ "skinning":{
+ "+defines":[
+ "USE_SKINNING"
+ ],
+ "vertexFields":[
+ {
+ "field":"Position"
+ },
+ {
+ "field":"BoneId0"
+ },
+ {
+ "field":"Color"
+ },
+ {
+ "field":"Normal"
+ },
+ {
+ "field":"UV0"
+ }
+ ]
+ }
+ }
+ ],
+ "msaaSupport":"Both",
+ "+samplerStates":[
+ {
+ "samplerIndex":0,
+ "textureFilter":"Point"
+ }
+ ]
+ },
+ "banner_pole:banner":{
+ "+defines":[
+ "ENABLE_FOG",
+ "ENABLE_LIGHT",
+ "DISABLE_TINTING"
+ ],
+ "+states":[]
+ },
+ "agent:entity":{},
+ "armor:entity_alphatest":{},
+ "armor_leather:entity_alphatest_change_color":{},
+ "armor_enchanted:entity_alphatest_glint":{},
+ "armor_leather_enchanted:entity_alphatest_change_color_glint":{},
+ "armor_stand:entity_alphatest":{},
+ "arrow:entity_alphatest":{},
+ "axolotl:entity_alphatest":{},
+ "axolotl_limbs:entity_alphatest_one_sided":{},
+ "bat:entity_alphatest":{},
+ "bed:entity_alphatest":{},
+ "bee:entity_alphatest":{},
+ "bell:entity":{},
+ "blaze_head:entity_emissive_alpha":{},
+ "blaze_body:entity_emissive":{},
+ "boat:entity":{},
+ "chalkboard:entity":{},
+ "chest:entity":{},
+ "chicken:entity":{},
+ "chicken_legs:entity_alphatest":{},
+ "cow:entity":{},
+ "creeper:entity":{},
+ "dragon_head:entity_alphatest":{},
+ "dragon_head_glint:entity_glint":{},
+ "drowned:entity_emissive_alpha":{},
+ "egg:entity_alphatest":{},
+ "elytra:entity_alphatest":{},
+ "elytra_glint:entity_alphatest_glint":{},
+ "enchanting_table_book:entity":{},
+ "ender_crystal:entity_alphatest":{},
+ "ender_dragon:entity_emissive_alpha_one_sided":{},
+ "enderman:entity_emissive_alpha":{},
+ "enderman_invisible:entity_emissive_alpha":{
+ "+defines":[
+ "USE_ONLY_EMISSIVE"
+ ]
+ },
+ "endermite:entity_alphatest":{},
+ "eye_of_ender_signal:entity_alphatest":{},
+ "ender_pearl:entity_alphatest":{},
+ "evoker:entity_alphatest":{},
+ "fang:entity_alphatest":{},
+ "fireball:entity_alphatest":{},
+ "fireworks_rocket:entity_alphatest":{},
+ "fishing_hook:entity_alphatest":{},
+ "fox:entity":{},
+ "frog:entity_alphatest":{},
+ "cat:entity_alphatest_change_color":{},
+ "clownfish:entity_alphatest":{},
+ "cod:entity_alphatest":{},
+ "conduit:entity_alphatest":{},
+ "pufferfish:entity_alphatest":{},
+ "salmon:entity_alphatest":{},
+ "tropicalfish:entity_multitexture_multiplicative_blend":{},
+ "ghast:entity_emissive_alpha":{},
+ "guardian:entity_alphatest":{},
+ "horse:entity_alphatest":{},
+ "horse_leather_armor:entity_multitexture_alpha_test_color_mask":{},
+ "husk:entity_alphatest":{},
+ "husk_clothes:entity_alphatest":{},
+ "ravager:entity_alphatest":{},
+ "iron_golem:entity_alphatest":{
+ "depthFunc":"LessEqual"
+ },
+ "magma_cube:entity_emissive_alpha":{},
+ "leash_knot:entity":{},
+ "lingering_potion_enchanted:entity_alphatest_glint":{},
+ "llama:entity_multitexture":{},
+ "llama_spit:entity":{},
+ "minecart:entity_alphatest":{},
+ "mob_head:entity_alphatest":{},
+ "mob_head_glint:entity_glint":{},
+ "mooshroom:entity":{},
+ "mooshroom_mushrooms:entity_alphatest":{},
+ "npc:entity_alphatest":{},
+ "ocelot:entity_alphatest":{},
+ "parrot:entity_alphatest":{},
+ "pig:entity":{},
+ "hoglin:entity_alphatest":{},
+ "zoglin:entity_alphatest":{},
+ "shield:entity":{},
+ "shield_glint:entity_glint":{},
+ "trident:entity":{},
+ "trident_riptide:entity_alphatest":{},
+ "trident_glint:entity_glint":{},
+ "piston_arm:entity":{},
+ "player:entity":{},
+ "player_alphatest:entity_alphatest":{},
+ "polar_bear:entity":{},
+ "panda:entity":{},
+ "rabbit:entity":{},
+ "sheep:entity_change_color":{},
+ "shulker:entity_alphatest":{},
+ "shulker_box:entity_alphatest":{},
+ "shulker_bullet:entity_alphatest":{},
+ "sign:entity_static":{},
+ "silverfish:entity":{},
+ "silverfish_layers:entity_alphatest":{},
+ "skeleton:entity_alphatest":{},
+ "pillager:entity_alphatest":{},
+ "piglin:entity_alphatest":{},
+ "piglin_brute:entity_alphatest":{},
+ "goat:entity_alphatest":{},
+ "slime:entity_alphatest":{},
+ "slime_outer:entity":{
+ "+states":[
+ "Blending"
+ ]
+ },
+ "snowball:entity_alphatest":{},
+ "snow_golem:entity":{},
+ "snow_golem_pumpkin:entity":{},
+ "spider:entity_emissive_alpha":{},
+ "spider_invisible:entity_emissive_alpha":{
+ "+defines":[
+ "USE_ONLY_EMISSIVE"
+ ]
+ },
+ "splash_potion_enchanted:entity_alphatest_glint":{},
+ "squid:entity":{},
+ "dolphin:entity":{},
+ "phantom:entity_emissive_alpha":{},
+ "phantom_invisible:entity_emissive_alpha":{
+ "+defines":[
+ "USE_ONLY_EMISSIVE"
+ ]
+ },
+ "stray:entity_alphatest":{},
+ "stray_clothes:entity_alphatest":{},
+ "strider:entity_alphatest":{},
+ "tadpole:entity_alphatest":{},
+ "turtle:entity":{},
+ "camera:entity":{},
+ "vex:entity_alphatest":{},
+ "villager:entity_alphatest":{},
+ "villager_v2:entity_alphatest":{
+ "depthFunc":"LessEqual"
+ },
+ "villager_v2_masked:entity_multitexture_masked":{
+ "depthFunc":"LessEqual"
+ },
+ "vindicator:entity_alphatest":{},
+ "wandering_trader:entity_alphatest":{},
+ "witch:entity_alphatest":{},
+ "wither_boss:entity_alphatest":{},
+ "wither_boss_armor:charged_creeper":{},
+ "wither_skull:mob_head":{},
+ "wolf:entity_change_color":{},
+ "xp_bottle:entity_alphatest_glint":{},
+ "zombie:entity_alphatest":{},
+ "zombie_villager:entity_alphatest":{},
+ "zombie_villager_v2:entity_alphatest":{
+ "depthFunc":"LessEqual"
+ },
+ "zombie_villager_v2_masked:entity_multitexture_masked":{
+ "depthFunc":"LessEqual"
+ },
+ "player_animated:entity_alphatest":{
+ "+defines":[
+ "USE_UV_ANIM"
+ ]
+ },
+ "experience_orb:entity":{
+ "+defines":[
+ "USE_UV_ANIM",
+ "ALPHA_TEST",
+ "Blending",
+ "USE_OVERLAY",
+ "USE_MASK"
+ ]
+ }
+ }
+}
\ No newline at end of file
diff --git a/docs/public/assets/packs/visuals/skin-packs/equip_button_fix.mcpack b/docs/public/assets/packs/visuals/skin-packs/equip_button_fix.mcpack
new file mode 100644
index 00000000..2a180d22
Binary files /dev/null and b/docs/public/assets/packs/visuals/skin-packs/equip_button_fix.mcpack differ
diff --git a/docs/public/assets/packs/visuals/structure-presentation/3d-export-fix.mcpack b/docs/public/assets/packs/visuals/structure-presentation/3d-export-fix.mcpack
new file mode 100644
index 00000000..b89b5e1d
Binary files /dev/null and b/docs/public/assets/packs/visuals/structure-presentation/3d-export-fix.mcpack differ
diff --git a/docs/public/robots.txt b/docs/public/robots.txt
new file mode 100644
index 00000000..14267e90
--- /dev/null
+++ b/docs/public/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Allow: /
\ No newline at end of file
diff --git a/docs/wiki/0-欢迎.md b/docs/wiki/0-欢迎.md
index 7c5dda06..f80b97d1 100644
--- a/docs/wiki/0-欢迎.md
+++ b/docs/wiki/0-欢迎.md
@@ -5,13 +5,25 @@ next: false
# 欢迎来到 Wiki
-由于中国版官网的教程写的太差了,因此我们计划使用简洁清晰的风格,重新编写基础入门教程,方便大家查询和学习哦!同时也期待大家共同贡献和维护本Wiki~
+由于中国版官网的教程写的过于冗长,因此我们计划使用简洁清晰的风格,重新编写基础教程,方便大家查询和学习哦!
+
+除了原创内容,我们经过授权,从 [Bedrock Wiki](https://wiki.bedrock.dev) 镜像且翻译了一批教程,希望能够帮助到大家。
diff --git a/docs/wiki/2-方块/1-基础/block-components.md b/docs/wiki/2-方块/1-基础/block-components.md
new file mode 100644
index 00000000..89922a56
--- /dev/null
+++ b/docs/wiki/2-方块/1-基础/block-components.md
@@ -0,0 +1,540 @@
+---
+title: 方块组件
+description: 方块组件用于改变方块在世界中的外观和功能。
+category: 常规
+nav_order: 2
+mentions:
+ - SirLich
+ - solvedDev
+ - yanasakana
+ - SmokeyStack
+ - MedicalJewel105
+ - aexer0e
+ - Chikorita-Lover
+ - Luthorius
+ - TheDoctor15
+ - XxPoggyisLitxX
+ - TheItsNameless
+ - ThomasOrs
+ - Kaioga5
+ - QuazChick
+---
+
+# 方块组件 Components
+
+
+
+:::tip 格式版本 & 最低引擎版本 `1.20.30`
+在创建自定义方块时使用最新格式版本可获取最新功能和改进。本wiki旨在提供关于自定义方块的最新信息,当前目标格式版本为`1.20.30`。
+:::
+:::danger
+每个组件在同一时间只能有一个实例生效。重复的组件将被最新的[permutation(条件置换)](/blocks/block-permutations)覆盖。
+:::
+
+需要事件触发组件?[点击此处查看!](/blocks/block-events#event-triggers)
+
+## 应用组件
+
+方块组件用于改变方块在世界中的外观和功能。它们被应用在`minecraft:block`或其[permutation(条件置换)](/blocks/block-permutations)的`components`子项中。
+
+::: code-group
+
+```json [BP/blocks/lamp.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:lamp",
+ "menu_category": {
+ "category": "items"
+ }
+ },
+ "components": {
+ "minecraft:light_dampening": 0,
+ "minecraft:light_emission": 15,
+ "minecraft:map_color": [210, 200, 190],
+ "minecraft:geometry": "geometry.lamp",
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "lamp"
+ },
+ "shade": {
+ "texture": "lamp_shade"
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+## 碰撞箱
+
+设置方块实体/粒子的碰撞箱,单位为像素 - 必须包含在基础方块单位内(16×16×16)。
+
+- 原点从方块的水平中点和垂直底部开始计算,向东北方向延伸。
+- 尺寸从原点开始计算,向东北方向延伸。
+
+**也可定义为布尔值:**
+
+- `false`时实体可穿过方块
+- `true`时设置单位大小的立方体作为碰撞箱
+
+**默认值:** `true`
+
+_自实验性玩法`Holiday Creator Features`中发布,适用于格式版本1.19.50及以上。_
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:collision_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 16, 16]
+}
+```
+:::
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:collision_box": false
+```
+:::
+
+## 工作台
+
+将方块变为工作台,交互时打开合成界面。
+
+_自实验性玩法`Holiday Creator Features`中发布,适用于格式版本1.19.50及以上。_
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:crafting_table": {
+ "table_name": "Wiki工作台", // 在合成菜单中显示的名称,可本地化
+ "crafting_tags": ["crafting_table", "wiki_workbench"] // 用于配方文件的标签
+}
+```
+:::
+
+## 可被爆炸破坏
+
+设置方块对爆炸破坏的抗性。
+
+**也可定义为布尔值:**
+
+- `false`时不可被爆炸破坏
+- `true`时爆炸抗性为`0`
+
+**默认值:** `true`
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:destructible_by_explosion": {
+ "explosion_resistance": 20
+}
+```
+:::
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:destructible_by_explosion": false // 不可被爆炸破坏
+```
+:::
+
+## 可被挖掘破坏
+
+设置挖掘破坏所需时间。
+
+**也可定义为布尔值:**
+
+- `false`时不可被挖掘破坏
+- `true`时可被瞬间破坏
+
+**默认值:** `true`
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 0.5
+}
+```
+:::
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:destructible_by_mining": false // 不可被挖掘破坏
+```
+:::
+
+## 显示名称
+
+设置当鼠标悬停在物品栏和快捷栏中的方块时显示的文本对应的语言文件键名。
+
+如果给定的字符串没有对应的翻译,将直接显示原始字符串。
+
+**注意**:在某些情况下Minecraft可能会回退使用`tile.<标识符>.name`。
+
+_自实验性玩法`Holiday Creator Features`中发布,适用于格式版本1.19.60及以上。_
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:display_name": "tile.example_block.red.name"
+```
+:::
+
+::: code-group
+
+```c [RP/texts/zh_CN.lang]
+tile.example_block.red.name=红色示例方块
+```
+:::
+
+## 可燃性
+
+设置方块的可燃性参数。
+
+**也可定义为布尔值:**
+
+- `false`时方块不会着火或被火焰破坏
+- `true`时将使用下方示例值
+
+**默认值:** `false`
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:flammable": {
+ "catch_chance_modifier": 5, // 影响方块在火源旁被点燃的几率
+ "destroy_chance_modifier": 20 // 影响方块在燃烧时被火焰破坏的几率
+}
+```
+:::
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:flammable": false // 默认值 - 方块不会自然引燃,但可被直接点燃
+```
+:::
+
+## 摩擦力
+
+设置方块表面摩擦力(0.0至0.9的小数)。数值越小表面越滑。
+
+**原版示例值:**
+
+- 泥土:`0.4`
+- 冰:`0.02`
+
+**默认值:** `0.4`
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:friction": 0.4
+```
+:::
+
+## 几何模型
+
+设置方块使用的模型。当与其他方块相交时,模型不会应用面剔除。
+
+**自定义方块模型限制:**
+
+- 模型尺寸限制为30×30×30像素
+- 每个轴上至少要有1像素位于基础16×16×16方块内
+- 模型的位置绝对边界为原点各方向30像素。只要遵守第二条规则,模型可放置在这些边界内的任意位置
+
+**启用时:**
+
+- 方块变为可呼吸
+- 方块不再传导红石信号
+
+_自实验性玩法`Holiday Creator Features`中发布,适用于格式版本1.19.40及以上。_
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:geometry": "geometry.example_block" // 来自'RP/models/entity'或'RP/models/blocks'文件夹的几何模型标识符
+```
+:::
+
+---
+
+### 骨骼可见性
+
+隐藏模型中骨骼的直接子立方体。
+
+**Molang表达式需遵守[条件置换限制](/blocks/block-permutations#permutation-conditions)。**
+
+_自格式版本1.20.10起支持`bone_visibility`中的Molang表达式。_
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:geometry": {
+ "identifier": "geometry.example_block", // 来自'RP/models/entity'或'RP/models/blocks'文件夹的几何模型标识符
+ "bone_visibility": {
+ "wiki_bone": false, // 隐藏该骨骼中的立方体
+ "conditional_bone": "q.block_state('wiki:example_state') == 3", // 使用Molang表达式条件设置可见性
+ "another_bone": true // true为默认值,无实际效果
+ }
+}
+```
+:::
+
+## 光照衰减
+
+设置光线穿过方块时的衰减程度(0-15整数) - 数值越大透光越少。
+
+**原版示例值:**
+
+- 泥土和染色玻璃:`15`
+- 铁栏杆和玻璃板:`0`
+
+**默认值:** `15`
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:light_dampening": 7
+```
+:::
+
+## 光照发射
+
+设置方块发出的光照强度(0-15整数)。
+
+**原版示例值:**
+
+- 蛙明灯:`15`
+- 红石火把(点亮):`7`
+
+**默认值:** `0`
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:light_emission": 10
+```
+:::
+
+## 战利品表
+
+设置方块被破坏时掉落的战利品(无视`精准采集`附魔)。
+
+**若省略则掉落方块本身。**
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:loot": "loot_tables/blocks/custom_block.json"
+```
+:::
+
+## 地图颜色
+
+设置方块在地图上的显示颜色(十六进制字符串或[R, G, B]数组,0-255)。
+
+**若省略则地图不显示该方块。**
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:map_color": "#ffffff"
+```
+:::
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:map_color": [255, 255, 255]
+```
+:::
+
+## 材质实例
+
+配置方块的渲染参数,包括纹理和光照处理。
+
+- 所有实例必须使用相同的渲染方法
+- 与其他方块相交时,方块面会无条件变暗
+
+材质实例可与`RP/blocks.json`条目结合使用,创建具有类不透明属性的方块。这主要用于在[自定义玻璃方块](/blocks/custom-glass-blocks)上启用面剔除。
+
+_自实验性玩法`Holiday Creator Features`中发布,适用于格式版本1.19.40及以上。_
+
+### 渲染方法
+
+渲染方法本质上控制方块在世界中的显示方式,类似于实体的材质。以下是各类型的关键属性:
+
+| 渲染方法 | _透明度_ | _半透明性_ | _背面剔除_ | 原版示例 |
+| ---------------- | :------: | :--------: | :--------: | ------------------------ |
+| opaque(默认) | ❌ | ❌ | ✔️ | 泥土、石头、混凝土 |
+| double_sided | ❌ | ❌ | ❌ | 无 - 用于不透明2D平面 |
+| alpha_test | ✔️ | ❌ | ❌ | 藤蔓、铁轨、树苗 |
+| blend | ✔️ | ✔️ | ✔️ | 玻璃、信标、蜂蜜块 |
+
+- **_透明度_** - 完全透明区域
+- **_半透明性_** - 半透明区域
+ - 半透明像素在UI渲染中显示为不透明
+- **_背面剔除_** - 从背面观察时面不可见
+ - 没有背面剔除的渲染方法在远处会消失(基于迷雾/渲染距离)
+ - 在UI渲染中始终启用背面剔除
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:material_instances": {
+ // '*' 为必需实例 - 方块的默认实例(也用于破坏粒子)
+ // 通配符遵循渲染控制器语法
+ // 内置实例名包括'up', 'down', 'north', 'east', 'south'和'west'
+ "*": {
+ "texture": "texture_name", // 在`RP/textures/terrain_textures.json`中定义的短名称
+ "render_method": "blend", // 上表中的渲染方法之一
+ "face_dimming": true, // 默认true;是否根据方向调暗该材质的表面?
+ "ambient_occlusion": true // 默认true;是否根据周围方块生成阴影?
+ }
+}
+```
+:::
+
+### 自定义实例名称
+
+:::tip
+可在Blockbench中通过右键立方体并打开`材质实例`来定义自定义材质实例名称。
+:::
+
+可在材质实例中定义自定义实例名称,可被内置实例名称引用,或在方块模型中引用。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:material_instances": {
+ "*": {
+ "texture": "texture_name",
+ "render_method": "blend" // 必须与其他实例匹配
+ },
+ // 自定义实例名称
+ "end": {
+ "texture": "texture_name_end",
+ "render_method": "blend" // 必须与其他实例匹配
+ },
+ "up": "end",
+ "down": "end",
+ // 模型中定义的实例名称:
+ "flower": {
+ "texture": "texture_name_flower",
+ "render_method": "blend" // 必须与其他实例匹配
+ }
+}
+```
+:::
+
+## 放置过滤器
+
+配置方块可存在的条件。当条件不满足时,方块将无法放置;若已放置则会弹出。
+
+**`block_filter`最多可包含64个条目。**
+
+**若省略,方块可被放置并存在于任何表面。**
+
+_自实验性玩法`Holiday Creator Features`中发布,适用于格式版本1.19.60及以上。_
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:placement_filter": {
+ "conditions": [
+ {
+ "allowed_faces": ["up"], // 可包含'up', 'down', 'north', 'east', 'south', 'west'和'side'
+ "block_filter": [
+ // 测试标识符
+ "minecraft:dirt",
+ // 测试标签
+ { "tags": "!q.any_tag('stone', 'wiki_tag')" }
+ ]
+ }
+ ]
+}
+```
+:::
+
+查看[此页面](/blocks/block-tags)获取原版标签及相关方块列表。
+
+## 选择箱
+
+设置方块的可选区域(点击框),单位为像素 - 必须包含在基础方块单位内(16×16×16)。
+
+- 原点从方块的水平中点和垂直底部开始计算,向东北方向延伸。
+- 尺寸从原点开始计算,向东北方向延伸。
+
+**也可定义为布尔值:**
+
+- `false`时实体可穿过方块
+- `true`时设置单位大小的立方体作为碰撞箱
+
+**默认值:** `true`
+
+_自实验性玩法`Holiday Creator Features`中发布,适用于格式版本1.19.60及以上。_
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 16, 16]
+}
+```
+:::
+
+或:
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:selection_box": false
+```
+:::
+
+## 变换
+
+允许对方块进行平移、缩放和旋转(包含视觉和功能变化)。
+
+**变换后的模型不得超过[几何模型限制](#geometry)。**
+
+:::tip
+学习如何应用[可旋转方块](/blocks/rotatable-blocks),就像熔炉和生物头颅一样根据放置方向旋转!
+:::
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:transformation": {
+ "translation": [-5, 8, 0],
+ "rotation": [90, 180, 0],
+ "scale": [0.5, 1, 0.5],
+}
+```
+:::
+
+## 单位立方体(实验性功能) {#unit-cube}
+
+:::warning 实验性功能
+此组件需要启用`Holiday Creator Features`实验性玩法,未来可能会被移除/修改。
+:::
+
+将方块变为16×16×16立方体,覆盖`minecraft:geometry`设置。
+
+**启用时:**
+
+- 方块变为不可呼吸
+- 方块可传导红石信号
+
+**如果方块的纹理/模型不需要根据条件置换改变,请在`RP/blocks.json`中定义纹理以避免使用此实验性组件。**
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:unit_cube": {}
+```
+
+:::
\ No newline at end of file
diff --git a/docs/wiki/2-方块/1-基础/block-events.md b/docs/wiki/2-方块/1-基础/block-events.md
new file mode 100644
index 00000000..60feb839
--- /dev/null
+++ b/docs/wiki/2-方块/1-基础/block-events.md
@@ -0,0 +1,623 @@
+---
+title: 方块事件与触发器
+description: 方块事件允许你在满足特定条件时操控游戏世界。
+category: 常规
+nav_order: 8
+tags:
+ - 实验性功能
+mentions:
+ - SirLich
+ - solvedDev
+ - yanasakana
+ - MedicalJewel105
+ - aexer0e
+ - SmokeyStack
+ - TheDoctor15
+ - XxPoggyisLitxX
+ - TheItsNameless
+ - ThomasOrs
+ - QuazChick
+ - VactricaKing
+ - BlazeDrake
+---
+
+# 方块事件与触发器
+
+
+
+:::tip 格式与最低引擎版本 `1.20.30`
+创建自定义方块时使用最新格式版本可获得新功能和改进。本wiki旨在分享关于自定义方块的最新信息,当前目标格式版本为`1.20.30`。
+:::
+:::warning 实验性功能
+方块事件需要启用`假日创作者功能`实验性玩法。
+:::
+:::danger 警告
+方块事件已被弃用,将在未来更新中移除。除非必要,否则不建议使用,因为在移除后你需要将所有功能迁移至脚本系统。
+:::
+
+## 定义事件
+
+方块事件允许你在满足特定条件时操控游戏世界,事件定义在`minecraft:block`的`events`子项中。在事件内部,你可以通过配置[事件响应](#事件响应)来设定触发事件时执行的操作。
+
+[事件触发器](#事件触发器)会在适当条件下运行事件,执行所有关联的事件响应。
+
+::: code-group
+```json [BP/blocks/loot_dropper.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:loot_dropper"
+ },
+ "components": {
+ "minecraft:on_step_on": {
+ "event": "wiki:drop_loot"
+ }
+ },
+ "events": {
+ "wiki:drop_loot": {
+ "spawn_loot": {
+ "table": "loot_tables/blocks/my_loot_table.json"
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+_此示例在实体踏上方块时生成战利品_
+
+## 序列响应
+
+序列允许你多次运行相同响应,或在满足条件时触发特定操作。
+
+所有事件响应都应包含在序列中。
+
+::: code-group
+```json [minecraft:block > events]
+"wiki:my_sequence": {
+ "sequence": [
+ {
+ "set_block_state": {
+ "wiki:my_state": true
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:my_state')", // 可选
+ "trigger": {
+ "event": "wiki:my_entity_event",
+ "target": "other"
+ }
+ }
+ ]
+}
+```
+:::
+
+## 随机响应
+
+随机执行事件响应。
+
+::: code-group
+```json [minecraft:block > events]
+"wiki:random_action": {
+ "randomize": [
+ {
+ "weight": 1, // 1/4概率
+ "set_block_state": {
+ "wiki:my_state": true
+ }
+ },
+ {
+ "weight": 3, // 3/4概率
+ "trigger": {
+ "event": "wiki:my_entity_event",
+ "target": "other"
+ }
+ }
+ ]
+}
+```
+:::
+
+## 事件响应
+
+- [`add_mob_effect`](#添加生物效果)
+- [`damage`](#造成伤害)
+- [`decrement_stack`](#减少堆叠)
+- [`die`](#摧毁)
+- [`play_effect`](#播放特效)
+- [`play_sound`](#播放音效)
+- [`remove_mob_effect`](#移除生物效果)
+- [`run_command`](#执行命令)
+- [`set_block`](#设置方块)
+- [`set_block_at_pos`](#在指定位置设置方块)
+- [`set_block_state`](#设置方块状态)
+- [`spawn_loot`](#生成战利品)
+- [`swing`](#挥动)
+- [`teleport`](#传送)
+- [`transform_item`](#转换物品)
+- [`trigger`](#触发事件)
+
+### 添加生物效果
+
+为指定目标添加生物效果。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:effect_event": {
+ "add_mob_effect": {
+ "effect": "poison",
+ "target": "other",
+ "duration": 8,
+ "amplifier": 3
+ }
+}
+```
+:::
+
+### 造成伤害
+
+对目标造成指定类型和数值的伤害。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:damage_event": {
+ "damage": {
+ "type": "magic",
+ "target": "other",
+ "amount": 4
+ }
+}
+```
+:::
+
+### 减少堆叠
+
+移除玩家当前手持物品堆叠中的一个物品。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:remove_one": {
+ "decrement_stack": {
+ "ignore_game_mode": true // 可选 - 是否影响创造模式玩家(默认为false)
+ }
+}
+```
+:::
+
+### 摧毁
+
+摧毁指定目标,若目标为`self`则方块直接消失且不生成战利品或效果。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:destroy": {
+ "die": {
+ "target": "self"
+ }
+}
+```
+:::
+
+### 播放特效
+
+在目标位置播放粒子特效。
+
+支持的`effect`值未知。可通过[`run_command`](#执行命令)配合`playsound`命令实现类似效果。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:particle_effect": {
+ "play_effect": {
+ "effect": "???",
+ "target": "self"
+ }
+}
+```
+:::
+
+### 播放音效
+
+在目标位置播放音效。
+
+支持`RP/sounds.json`中大多数原版独立音效事件ID,但自定义音效条目不可用。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:play_sound": {
+ "play_sound": {
+ "sound": "beacon.power",
+ "target": "self"
+ }
+}
+```
+:::
+
+### 移除生物效果
+
+移除目标的指定生物效果。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:remove_effect_event": {
+ "remove_mob_effect": {
+ "effect": "poison",
+ "target": "other"
+ }
+}
+```
+:::
+
+### 执行命令
+
+对目标执行命令。
+
+使用数组可执行多个命令。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:execute_event": {
+ "run_command": {
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "command": "summon pig"
+ }
+}
+```
+:::
+
+或...
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:execute_event": {
+ "run_command": {
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "command": [
+ "summon pig",
+ "say 大家欢迎小猪!"
+ ]
+ }
+}
+```
+:::
+
+### 设置方块
+
+用指定方块替换当前方块。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:place_block": {
+ "set_block": {
+ "block_type": "minecraft:grass"
+ }
+}
+```
+:::
+
+或...
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:place_block": {
+ "set_block": {
+ "block_type": {
+ "name": "minecraft:trapdoor",
+ "states": {
+ "direction": 2,
+ "open_bit": true
+ }
+ }
+ }
+}
+```
+:::
+
+### 在指定位置设置方块
+
+在方块相对位置生成指定方块。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:generate_stone_above": {
+ "set_block_at_pos": {
+ "block_type": "minecraft:stone",
+ "block_offset": [0, 1, 0]
+ }
+}
+```
+:::
+
+或...
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:generate_upper_door_above": {
+ "set_block_at_pos": {
+ "block_type": {
+ "name": "minecraft:wooden_door",
+ "states": {
+ "upper_block_bit": true
+ }
+ },
+ "block_offset": [0, 1, 0]
+ }
+}
+```
+:::
+
+### 设置方块状态
+
+设置方块状态值(可设置为Molang表达式字符串的返回值)。
+
+:::warning
+字符串值会被解析为Molang表达式。因此,要设置字符串状态时,必须用`'`包裹值(见示例)。
+:::
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:change_state": {
+ "set_block_state": {
+ "wiki:boolean_state_example": false,
+ "wiki:integer_state_example": "q.block_state('wiki:integer_state_example') + 1",
+ "wiki:string_state_example": "'red'"
+ }
+}
+```
+:::
+
+### 生成战利品
+
+生成战利品表内容。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:drop_loot": {
+ "spawn_loot": {
+ "table": "loot_tables/blocks/my_loot_table.json"
+ }
+}
+```
+:::
+
+### 挥动
+
+使关联实体执行挥动动作。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:swing_arm": {
+ "swing": {}
+}
+```
+:::
+
+### 传送
+
+将目标随机传送至目标点周围。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:go_away": {
+ "teleport": {
+ "target": "other", // 被传送实体
+ "avoid_water": true, // 避免传入水中
+ "land_on_block": true, // 将目标放置在方块上
+ "destination": [0, 0, 0], // 目标原点
+ "max_range": [5, 6, 7] // 相对原点的最大偏移范围
+ }
+}
+```
+:::
+
+### 转换物品
+
+替换目标的当前手持物品。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:replace": {
+ "transform_item": {
+ "transform": "iron_sword"
+ }
+}
+```
+:::
+
+### 触发事件
+
+触发指定目标的事件。
+
+::: code-group
+
+```json [minecraft:block > events]
+"wiki:trigger_crack": {
+ "trigger": {
+ "event": "wiki:crack",
+ "target": "self"
+ }
+}
+```
+:::
+
+## 事件触发器
+
+事件触发器通过[组件](/blocks/block-components)定义,可通过[permutations](/blocks/block-permutations)动态添加、修改或移除。
+
+- [`minecraft:on_fall_on`](#跌落触发)
+- [`minecraft:on_interact`](#交互触发)
+- [`minecraft:on_placed`](#放置触发)
+- [`minecraft:on_player_destroyed`](#玩家破坏触发)
+- [`minecraft:on_player_placing`](#玩家放置时触发)
+- [`minecraft:on_step_off`](#离开触发)
+- [`minecraft:on_step_on`](#踏入触发)
+- [`minecraft:queued_ticking`](#队列计时)
+- [`minecraft:random_ticking`](#随机计时)
+
+### 跌落触发
+
+当实体跌落在方块上时触发事件。
+
+**注意**:需要`minecraft:collision_box`组件的Y轴高度≥4。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:on_fall_on": {
+ "event": "wiki:example_event",
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "condition": "q.block_state('wiki:boolean_state_example')", // 可选
+ "min_fall_distance": 5
+}
+```
+:::
+
+### 交互触发
+
+当玩家与方块交互时触发事件。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:on_interact": {
+ "event": "wiki:example_event",
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "condition": "q.block_state('wiki:boolean_state_example')" // 可选
+}
+```
+:::
+
+### 放置触发
+
+当方块被放置时触发事件。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:on_placed": {
+ "event": "wiki:example_event",
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "condition": "q.block_state('wiki:boolean_state_example')" // 可选
+}
+```
+:::
+
+### 玩家破坏触发
+
+当玩家通过挖掘破坏方块时触发事件(创造模式不触发)。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:on_player_destroyed": {
+ "event": "wiki:example_event",
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "condition": "q.block_state('wiki:boolean_state_example')" // 可选
+}
+```
+:::
+
+### 玩家放置时触发
+
+当玩家放置方块时触发事件。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:on_player_placing": {
+ "event": "wiki:example_event",
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "condition": "q.block_state('wiki:boolean_state_example')" // 可选
+}
+```
+:::
+
+### 离开触发
+
+当实体离开方块时触发事件。
+
+**注意**:需要`minecraft:collision_box`组件的Y轴高度≥4。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:on_step_off": {
+ "event": "wiki:example_event",
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "condition": "q.block_state('wiki:boolean_state_example')" // 可选
+}
+```
+:::
+
+### 踏入触发
+
+当实体踏上方块时触发事件。
+
+**注意**:需要`minecraft:collision_box`组件的Y轴高度≥4。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:on_step_on": {
+ "event": "wiki:example_event",
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "condition": "q.block_state('wiki:boolean_state_example')" // 可选
+}
+```
+:::
+
+### 队列计时
+
+在`interval_range`范围内随机间隔触发事件。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:queued_ticking": {
+ "looping": true,
+ "interval_range": [20, 20], // 两个游戏刻数值,随机决定延迟时间
+ "on_tick": {
+ "event": "wiki:example_event",
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "condition": "q.block_state('wiki:boolean_state_example')" // 可选
+ }
+}
+```
+:::
+
+### 随机Tick
+
+在每次随机刻触发事件(如作物随机生长机制)。
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:random_ticking": {
+ "on_tick": {
+ "event": "wiki:example_event",
+ "target": "self", // 可选 - 默认为'self'(目标为方块)
+ "condition": "q.block_state('wiki:boolean_state_example')" // 可选
+ }
+}
+```
+:::
\ No newline at end of file
diff --git a/docs/wiki/2-方块/1-基础/block-permutations.md b/docs/wiki/2-方块/1-基础/block-permutations.md
new file mode 100644
index 00000000..b63f5f21
--- /dev/null
+++ b/docs/wiki/2-方块/1-基础/block-permutations.md
@@ -0,0 +1,83 @@
+---
+title: 方块变换(转体)
+description: 方块变换数组提供了一种基于当前置换条件性应用组件的方法。
+category: 常规
+nav_order: 7
+mentions:
+ - QuazChick
+---
+
+# 方块变换(转体)
+
+
+
+:::tip 格式要求 & 最低引擎版本 `1.20.30`
+在学习方块变换前,您应当已熟练掌握[方块状态](/blocks/block-states)知识。
+
+使用方块状态时,请确保资源包清单中的`min_engine_version`为`1.20.20`或更高版本。
+:::
+
+方块`permutations`数组提供了一种基于当前置换(状态值集合)条件性应用组件(包括事件触发器和标签)的方式。
+
+`permutations`数组中的组件可以覆盖方块的基类组件以及其他组件列表中的组件。置换数组中最后出现的条目具有最高优先级。
+
+## 定义置换
+
+`permutations`数组是`minecraft:block`的直接子项,由包含组件的对象组成。当条件判断为真值(非false或0)时,相关组件将被应用。
+
+**置换条件必须遵守其[Molang限制条件](#置换条件限制)。**
+
+_自实验性玩法`Holiday Creator Features`发布,支持格式版本1.19.70及更高。_
+
+::: code-group
+
+```json [BP/blocks/custom_block.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_block",
+ "states": {
+ "wiki:integer_state_example": [2, 4, 6, 8],
+ "wiki:boolean_state_example": [false, true],
+ "wiki:string_state_example": ["red", "green", "blue"]
+ }
+ },
+ "components": {},
+ "permutations": [
+ {
+ "condition": "q.block_state('wiki:integer_state_example') == 2",
+ "components": {
+ "minecraft:friction": 0.1
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:boolean_state_example')",
+ "components": {
+ "minecraft:friction": 0.8 // 覆盖之前的置换
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:string_state_example') == 'red' && !q.block_state('wiki:boolean_state_example')",
+ "components": {
+ "minecraft:geometry": "geometry.pig"
+ }
+ }
+ ]
+ }
+}
+```
+:::
+
+## 置换条件限制
+
+当条件评估为真值(非false或0)时,关联的组件列表将被应用。
+
+置换条件需以Molang表达式字符串形式编写,并具有严格限制:
+
+- 条件判断完全基于方块的置换状态,因此只能使用`q.block_state`查询函数
+- 这意味着条件判断不会产生副作用
+ - 禁止使用以下数学函数:`math.die_roll`、`math.die_roll_integer`、`math.random`、`math.random_integer`
+ - 不可进行变量赋值操作
+
+(注:保留英文术语如Component、Entity、Block等,根据中文技术文档惯例处理专有名词)
\ No newline at end of file
diff --git a/docs/wiki/2-方块/1-基础/block-states.md b/docs/wiki/2-方块/1-基础/block-states.md
new file mode 100644
index 00000000..deaa1c1a
--- /dev/null
+++ b/docs/wiki/2-方块/1-基础/block-states.md
@@ -0,0 +1,128 @@
+---
+title: 方块状态
+description: 方块状态允许你的方块拥有多种变体,每种变体通过使用置换具备独特的功能和外观。
+category: 常规
+nav_order: 4
+mentions:
+ - QuazChick
+---
+
+# 方块状态
+
+
+
+:::tip 格式要求 & 最低引擎版本 `1.20.30`
+使用方块状态时,请确保资源包清单中的 `min_engine_version` 设置为 `1.20.20` 或更高。
+:::
+
+方块状态允许你的方块拥有多种变体,每种变体通过使用[置换](/blocks/block-permutations)具备独特的功能和外观。
+
+## 定义状态
+
+有效状态值可以定义为布尔值、整数或字符串数组,也可以通过对象定义为整数范围。`values` 数组中的第一个元素将作为默认值使用。
+
+### 置换数量限制
+
+**每个状态最多可定义 16 个有效值。所有可能的状态值组合([置换](/blocks/block-permutations))总数不应超过 65,536。**
+
+计算方块置换总数时,需将所有状态的有效值数量相乘。例如下方示例的计算公式为 3 × 2 × 3 × 6,说明该方块具有 108 种可能的置换组合。
+
+_该功能需启用 `Holiday Creator Features` 实验性玩法(格式版本 1.19.70 及以上)。_
+
+::: code-group
+```json [BP/blocks/custom_block.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_block",
+ "states": {
+ "wiki:string_state_example": ["red", "green", "blue"],
+ "wiki:boolean_state_example": [false, true],
+ "wiki:integer_state_example": [1, 2, 3],
+ "wiki:integer_range_state_example": {
+ "values": { "min": 0, "max": 5 } // 等同于 [0, 1, 2, 3, 4, 5]
+ }
+ }
+ },
+ "components": { ... },
+ "permutations": [ ... ]
+ }
+}
+```
+:::
+
+## 获取状态值
+
+以下列出在不同上下文中获取方块状态当前值的方法。
+
+### Molang 查询函数
+
+可通过 `block_state` 查询函数获取状态值。
+
+```c
+q.block_state('wiki:string_state_example') == 'blue'
+```
+
+### 命令参数
+
+在 `execute` 和 `testforblock` 等命令中使用[方块状态参数](/commands/block-states)来检查状态值。
+
+```c
+execute if block ~~~ wiki:custom_block["wiki:string_state_example"="blue", "wiki:integer_state_example"=4] run kill
+```
+
+### 脚本API
+
+:::warning 实验性功能
+使用 [`BlockPermutation.getState()`](https://learn.microsoft.com/minecraft/creator/scriptapi/minecraft/server/blockpermutation#getstate) 方法需启用 `Beta APIs` 实验性玩法。
+:::
+
+通过 [`BlockPermutation.getState()`](https://learn.microsoft.com/minecraft/creator/scriptapi/minecraft/server/blockpermutation#getstate) 方法可获取不同状态的当前值。
+
+```js
+customBlock.permutation.getState("wiki:integer_state_example") === 3
+```
+
+## 设置状态值
+
+### 命令参数
+
+在 `setblock` 和 `fill` 等命令中使用[方块状态参数](/commands/block-states)来修改默认状态值。
+
+```c
+setblock ~~~ wiki:custom_block["wiki:string_state_example"="blue", "wiki:integer_state_example"=4]
+```
+
+### 脚本API
+
+:::warning 实验性功能
+使用 [`BlockPermutation.withState()`](https://learn.microsoft.com/minecraft/creator/scriptapi/minecraft/server/blockpermutation#withstate) 方法需启用 `Beta APIs` 实验性玩法。
+:::
+
+[`BlockPermutation.withState()`](https://learn.microsoft.com/minecraft/creator/scriptapi/minecraft/server/blockpermutation#withstate) 方法会返回修改了指定状态值的新置换对象。可通过 [`Block.setPermutation()`](https://learn.microsoft.com/minecraft/creator/scriptapi/minecraft/server/block#setpermutation) 方法应用此置换,如下所示:
+
+```js
+customBlock.setPermutation(
+ customBlock.permutation.withState("wiki:boolean_state_example", false)
+);
+```
+
+### 事件响应
+
+:::warning 实验性功能
+方块事件需启用 `Holiday Creator Features` 实验性玩法。
+:::
+
+使用 [`set_block_state`](/blocks/block-events#set-block-state) 事件响应可以修改自定义方块状态的值。
+
+::: code-group
+```json [minecraft:block > events]
+"wiki:change_state": {
+ "set_block_state": {
+ "wiki:boolean_state_example": false,
+ "wiki:string_state_example": "'red'"
+ }
+}
+```
+:::
\ No newline at end of file
diff --git a/docs/wiki/2-方块/1-基础/block-tags.md b/docs/wiki/2-方块/1-基础/block-tags.md
new file mode 100644
index 00000000..f464431d
--- /dev/null
+++ b/docs/wiki/2-方块/1-基础/block-tags.md
@@ -0,0 +1,145 @@
+---
+title: 方块标签
+category: 常规
+nav_order: 3
+mentions:
+ - SirLich
+ - yanasakana
+ - aexer0e
+ - SmokeyStack
+ - MedicalJewel105
+ - Luthorius
+ - Chikorita-Lover
+ - victorsigma
+ - TheItsNameless
+ - QuazChick
+ - Kaioga5
+---
+
+# 方块标签
+
+
+
+方块标签可用于确保某个方块符合特定条件。
+
+## 应用标签
+
+方块标签的应用方式与物品标签相同 - 在方块的`components`组件中添加 - 如下所示:
+
+::: code-group
+```json [BP/blocks/tree_stump.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:tree_stump",
+ "menu_category": {
+ "category": "nature"
+ }
+ },
+ "components": {
+ "tag:wood": {},
+ "tag:my_lovely_tag": {},
+ "tag:wiki:very_useless": {}
+ }
+ }
+}
+```
+:::
+
+## 测试标签
+
+可通过以下Molang查询函数检测标签:
+
+- `q.all_tags`
+- `q.any_tag`
+
+:::warning 实验性功能
+以下查询函数需要启用实验性Molang功能。
+:::
+
+- `q.block_has_all_tags`
+- `q.block_has_any_tag`
+- `q.block_neighbor_has_all_tags`
+- `q.block_neighbor_has_any_tag`
+- `q.relative_block_has_all_tags`
+- `q.relative_block_has_any_tag`
+
+物品检测方块标签的示例:
+
+::: code-group
+```json [BP/items/custom_pickaxe.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:item": {
+ "description": {
+ "identifier": "wiki:custom_pickaxe",
+ "menu_category": {
+ "category": "equipment",
+ "group": "itemGroup.name.pickaxe"
+ }
+ },
+ "components": {
+ "minecraft:digger": {
+ "use_efficiency": true,
+ "destroy_speeds": [
+ {
+ "speed": 5,
+ "block": {
+ "tags": "q.any_tag('custom_ore', 'stone', 'metal')"
+ }
+ }
+ ]
+ }
+ }
+ }
+}
+```
+:::
+
+## 方块标签列表
+
+### 原版标签
+
+原版标签可应用于自定义方块,部分原版方块内部已标记。此类标签不会赋予方块原版特性,仅用于通过标签查询时与原版方块保持相同检测结果。
+
+| 标签 | 原版用途 |
+| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| wood | 金合欢木门、金合欢木栅栏、金合欢木栅栏门、金合欢木板、金合欢木压力板、金合欢木告示牌、木桶、蜂巢、蜂箱、白桦木门、白桦木栅栏、白桦木栅栏门、白桦原木、白桦木板、白桦木压力板、白桦木告示牌、白桦木台阶、白桦木楼梯、深色橡木门、深色橡木栅栏、深色橡木栅栏门、深色橡木原木、深色橡木板、深色橡木压力板、深色橡木告示牌、深色橡木台阶、深色橡木楼梯、制箭台、丛林木门、丛林木栅栏、丛林木栅栏门、丛林原木、丛林木板、丛林压力板、丛林告示牌、丛林木台阶、丛林木楼梯、梯子、橡木门、橡木栅栏、橡木栅栏门、橡木原木、橡木板、橡木压力板、橡木告示牌、橡木台阶、橡木楼梯、橡木活板门、锻造台、云杉木门、云杉木栅栏、云杉木栅栏门、云杉原木、云杉木板、云杉木压力板、云杉木告示牌、云杉木台阶、云杉木楼梯、云杉木活板门 |
+| pumpkin | 雕刻过的南瓜、南瓜灯、南瓜 |
+| plant | 金合欢树苗、白桦树苗、深色橡树苗、丛林树苗、大型蕨、丁香、橡树苗、牡丹、玫瑰丛、云杉树苗、向日葵、高草丛 |
+| stone | 安山岩、安山岩墙、砖台阶、砖墙、砖块、圆石、圆石台阶、圆石楼梯、圆石墙、闪长岩、闪长岩墙、滴水石块、末地石砖墙、花岗岩、花岗岩墙、苔石、苔石墙、下界砖墙、磨制安山岩、磨制闪长岩、磨制花岗岩、海晶石墙、石英台阶、红色下界砖墙、红砂岩墙、砂岩台阶、砂岩墙、平滑石台阶、石头、石砖墙、石砖台阶 |
+| metal | 金块、铁块、炼药锅、铁栏杆 |
+| diamond_pick_diggable | 粗金块、粗铁块、煤矿石、深层煤矿石、深层绿宝石矿石、深层金矿石、深层铁矿石、深层红石矿石、钻石矿石、绿宝石矿石、金矿石、铁矿石、青金石矿石、黑曜石、红石矿石 |
+| gold_pick_diggable | (无内容) |
+| iron_pick_diggable | 粗金块、粗铁块、煤矿石、深层煤矿石、深层绿宝石矿石、深层金矿石、深层铁矿石、深层红石矿石、钻石矿石、绿宝石矿石、金矿石、铁矿石、青金石矿石、红石矿石 |
+| stone_pick_diggable | (无内容) |
+| wood_pick_diggable | (无内容) |
+| dirt | 耕地 |
+| sand | 红沙、沙子 |
+| gravel | 沙砾 |
+| grass | 砂土、泥土、草径、草方块 |
+| snow | 雪 |
+| rail | 激活铁轨、探测铁轨、动力铁轨、铁轨 |
+| water | 水 |
+| mob_spawner | 刷怪笼 |
+| lush_plants_replaceable | (无内容) |
+| azalea_log_replaceable | (无内容) |
+| not_feature_replaceable | 基岩、箱子、末地传送门框架、刷怪笼 |
+| text_sign | 所有种类的告示牌 |
+| minecraft:crop | 甜菜根、胡萝卜、马铃薯、小麦 |
+| fertilize_area | 所有花卉(除高茎花卉和凋灵玫瑰外);绯红菌岩、诡异菌岩、草、苔藓块 |
+
+### 原版方块标签
+
+原版方块标签是专门为方块设计的标签,可以为标记的方块赋予某些原版特性。
+
+| 标签 | 原版应用 | 描述 |
+| -------- | ---------------- | ------------ |
+| acacia | 金合欢原木 | |
+| birch | 白桦原木 | |
+| dark_oak | 深色橡木原木 | |
+| jungle | 丛林原木 | |
+| log | 所有原木类型 | 原木方块 |
+| oak | 橡木原木 | |
+| spruce | 云杉原木 | |
\ No newline at end of file
diff --git a/docs/wiki/2-方块/1-基础/block-traits.md b/docs/wiki/2-方块/1-基础/block-traits.md
new file mode 100644
index 00000000..97e55ebf
--- /dev/null
+++ b/docs/wiki/2-方块/1-基础/block-traits.md
@@ -0,0 +1,110 @@
+---
+title: 方块特性
+description: 方块特性可轻松为自定义方块应用原版方块状态(如朝向),无需借助事件和触发器。
+category: 常规
+nav_order: 5
+mentions:
+ - QuazChick
+---
+
+# 方块特性
+
+
+
+:::tip 格式要求 & 最低引擎版本 `1.20.30`
+在学习方块特性前,您应当已熟练掌握[方块状态](/blocks/block-states)知识。
+
+使用方块状态时,请确保资源包清单中的`min_engine_version`为`1.20.20`或更高版本。
+:::
+
+## 应用特性
+
+方块特性可轻松为自定义方块应用原版方块状态(如朝向),无需借助复杂的事件和触发器系统。
+
+::: code-group
+```json [BP/blocks/custom_slab.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_slab",
+ "menu_category": {
+ "category": "construction",
+ "group": "itemGroup.name.slab"
+ },
+ "traits": {
+ "minecraft:placement_position": {
+ "enabled_states": ["minecraft:vertical_half"]
+ }
+ }
+ },
+ "components": { ... },
+ "permutations": [ ... ]
+ }
+}
+```
+:::
+
+_此示例将在放置时设置`minecraft:vertical_half`方块状态为`'top'`或`'bottom'`——具体取决于玩家视角位置。_
+
+**仍需通过置换系统配合条件查询来实现功能差异:**
+
+```c
+q.block_state('minecraft:vertical_half') // 查询垂直半区状态
+```
+
+## 放置朝向
+
+记录玩家放置方块时的旋转方向信息。
+
+_自实验性玩法`Upcoming Creator Features`发布,支持格式版本1.20.30及更高。_
+
+**可启用以下状态:**
+
+| 状态名称 | 可选值 | 描述 |
+| ------------------------------ | -------------------------------------------------------------------------------- | ---------------------------------- |
+| `minecraft:cardinal_direction` | `"south"`(默认)
`"north"`
`"west"`
`"east"` | 放置时玩家的主要朝向(东南西北) |
+| `minecraft:facing_direction` | `"down"`(默认)
`"up"`
`"south"`
`"north"`
`"west"`
`"east"` | 放置时玩家的完整朝向(含上下方向) |
+
+
+
+**额外参数:**
+
+- `y_rotation_offset` - 此旋转偏移仅适用于水平方向状态值(北/南/西/东),必须指定轴对齐角度(如90、180、-90)
+
+::: code-group
+```json [minecraft:block > description > traits]
+"minecraft:placement_direction": {
+ "enabled_states": ["minecraft:cardinal_direction"],
+ "y_rotation_offset": 180 // Y轴旋转偏移量
+}
+```
+:::
+
+## 放置位置
+
+记录玩家放置方块时的具体位置信息。
+
+_自实验性玩法`Upcoming Creator Features`发布,支持格式版本1.20.30及更高。_
+
+**可启用以下状态:**
+
+| 状态名称 | 可选值 | 描述 |
+| ------------------------- | -------------------------------------------------------------------------------- | ----------------------------- |
+| `minecraft:block_face` | `"down"`(默认)
`"up"`
`"south"`
`"north"`
`"west"`
`"east"` | 方块被放置时所处的表面方位 |
+| `minecraft:vertical_half` | `"top"`
`"bottom"`(默认) | 方块被放置时所处的垂直半区位置 |
+
+
+
+**_此特性无额外参数_**
+
+::: code-group
+```json [minecraft:block > description > traits]
+"minecraft:placement_position": {
+ "enabled_states": [
+ "minecraft:block_face", // 方块表面方位
+ "minecraft:vertical_half" // 垂直半区位置
+ ]
+}
+```
+:::
\ No newline at end of file
diff --git a/docs/wiki/2-方块/1-基础/blocks-experimental.md b/docs/wiki/2-方块/1-基础/blocks-experimental.md
new file mode 100644
index 00000000..334038d7
--- /dev/null
+++ b/docs/wiki/2-方块/1-基础/blocks-experimental.md
@@ -0,0 +1,62 @@
+---
+title: 实验性方块
+category: 通用
+tags:
+ - 信息
+ - 实验性
+mentions:
+ - SmokeyStack
+ - MedicalJewel105
+ - QuazChick
+---
+
+# 实验性方块
+
+
+
+:::tip 格式版本 `1.20.30`
+在创建自定义方块时使用最新格式版本,可获取最新功能和改进。本维基旨在分享自定义方块的最新信息,当前目标格式版本为 `1.20.30`。
+:::
+
+本文作为索引文档,概述自定义方块功能的实验性要求。
+
+## 方块组件
+
+| 组件 | 所需实验性功能 |
+| ------------------------------------------------------------------------------------------- | --------------------------------- |
+| [`minecraft:collision_box`](/blocks/block-components#collision-box) | 无(格式版本1.19.50及以上) |
+| [`minecraft:crafting_table`](/blocks/block-components#crafting-table) | 无(格式版本1.19.50及以上) |
+| [`minecraft:destructible_by_explosion`](/blocks/block-components#destructible-by-explosion) | 无 |
+| [`minecraft:destructible_by_mining`](/blocks/block-components#destructible-by-mining) | 无 |
+| [`minecraft:display_name`](/blocks/block-components#display-name) | 无(格式版本1.19.60及以上) |
+| [`minecraft:flammable`](/blocks/block-components#flammable) | 无 |
+| [`minecraft:friction`](/blocks/block-components#friction) | 无 |
+| [`minecraft:geometry`](/blocks/block-components#geometry) | 无(格式版本1.19.40及以上) |
+| [`minecraft:light_dampening`](/blocks/block-components#light-dampening) | 无 |
+| [`minecraft:light_emission`](/blocks/block-components#light-emission) | 无 |
+| [`minecraft:loot`](/blocks/block-components#loot) | 无 |
+| [`minecraft:map_color`](/blocks/block-components#map-color) | 无 |
+| [`minecraft:material_instances`](/blocks/block-components#material-instances) | 无(格式版本1.19.40及以上) |
+| [`minecraft:placement_filter`](/blocks/block-components#placement-filter) | 无(格式版本1.19.60及以上) |
+| [`minecraft:selection_box`](/blocks/block-components#selection-box) | 无(格式版本1.19.60及以上) |
+| [`minecraft:transformation`](/blocks/block-components#transformation) | 无 |
+| [`minecraft:unit_cube`](/blocks/block-components#unit-cube) | **`假日创作者功能(Holiday Creator Features)`** |
+
+## 方块状态
+
+_从实验性功能 **`假日创作者功能`** 中释放,适用于格式版本1.19.70及以上。_
+
+## 方块特性
+
+| 特性 | 所需实验性功能 |
+| ------------------------------------------------------------------------------- | --------------------------------- |
+| [`minecraft:placement_direction`](/blocks/block-components#placement-direction) | 无(格式版本1.20.20及以上) |
+| [`minecraft:placement_position`](/blocks/block-components#placement-position) | 无(格式版本1.20.20及以上) |
+
+## 方块置换
+
+_从实验性功能 **`假日创作者功能`** 中释放,适用于格式版本1.19.70及以上。_
+
+## 方块事件与触发器
+
+**完整功能仍处于实验性阶段,需启用 `假日创作者功能`。**
\ No newline at end of file
diff --git a/docs/wiki/2-方块/1-基础/blocks-intro.md b/docs/wiki/2-方块/1-基础/blocks-intro.md
new file mode 100644
index 00000000..4a3f37fe
--- /dev/null
+++ b/docs/wiki/2-方块/1-基础/blocks-intro.md
@@ -0,0 +1,322 @@
+---
+title: 方块入门
+description: A "Hello world" guide in making blocks. Learn the block format and how to create basic custom blocks.
+category: General
+nav_order: 1
+---
+
+# 方块入门
+
+
+
+:::tip 格式版本 & 最低引擎版本 `1.20.30`
+本页介绍基础方块特性。更多方块组件内容请访问[此处](/blocks/block-components)。
+:::
+
+:::danger
+原版方块的逻辑是硬编码实现的,无法被修改或访问。
+:::
+
+Minecraft 基岩版允许我们添加具有多种类原版特性的自定义方块。自定义方块可以拥有多阶段生长(如植物)、方向朝向等实用功能。
+
+本教程将指导如何在稳定版 Minecraft 中创建基础方块。
+
+## 注册方块
+
+方块定义的结构与实体类似:包含行为描述和定义方块特性的组件列表。
+
+与实体不同,方块除`RP/blocks.json`外没有其他资源定义。
+
+以下是将自定义方块加入创造模式物品栏所需的**最低限度**行为包代码:
+
+::: code-group
+
+```json [BP/blocks/custom_block.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_block",
+ "menu_category": {
+ "category": "construction", // 方块所在的创造模式物品栏或配方书标签
+ "group": "itemGroup.name.concrete", // 方块所属的可展开分组(可选)
+ "is_hidden_in_commands": false // 是否在命令中隐藏该方块(可选)
+ }
+ },
+ "components": {} // 必须保留,即使为空!
+ }
+}
+```
+:::
+
+### 方块描述
+
+- 定义方块的`identifier` - 采用`命名空间:标识符`格式的唯一ID
+- 配置方块的`menu_category`归属
+ - 可选参数`group`和`is_hidden_in_commands`
+
+_方块描述还包含[状态](/blocks/block-states)和[特性](/blocks/block-traits),相关内容请参见对应页面。_
+
+## 添加组件
+
+目前我们的自定义方块使用的是默认组件值(可参考[此处](/blocks/block-components))。
+
+现在开始自定义功能配置!
+
+::: code-group
+
+```json [BP/blocks/custom_block.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_block",
+ "menu_category": {
+ "category": "construction"
+ }
+ },
+ "components": {
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 3
+ },
+ "minecraft:destructible_by_explosion": {
+ "explosion_resistance": 3
+ },
+ "minecraft:friction": 0.4,
+ "minecraft:map_color": "#ffffff",
+ "minecraft:light_dampening": 0,
+ "minecraft:light_emission": 4,
+ "minecraft:loot": "loot_tables/blocks/custom_block.json"
+ }
+ }
+}
+```
+:::
+
+- [`minecraft:destructible_by_mining`](/blocks/block-components#destructible-by-mining) 定义玩家破坏方块所需时间(目前无法为不同工具设置不同破坏时间)
+- [`minecraft:destructible_by_explosion`](/blocks/block-components#destructible-by-explosion) 定义抗爆性。值越高,被炸毁概率越低
+- [`minecraft:friction`](/blocks/block-components#friction) 定义方块摩擦系数。例如灵魂沙具有高摩擦值会减缓玩家,冰的低摩擦值则产生滑溜效果。经典方块(如木头/石头)的摩擦系数为`0.4`
+- [`minecraft:map_color`](/blocks/block-components#map-color) 是地图上显示的代表色(十六进制)。`#ffffff`代表白色,可通过[在线取色器](https://www.google.com/search?q=hex+color+picker)获取其他颜色代码
+- [`minecraft:light_dampening`](/blocks/block-components#light-dampening) 定义光线阻挡程度
+- [`minecraft:light_emission`](/blocks/block-components#light-emission) 定义方块发光等级
+- [`minecraft:loot`](/blocks/block-components#loot) 定义战利品表路径。若移除,方块将默认掉落自身。更多战利品表信息请访问[此处](/loot/loot-tables)
+
+_更多组件配置请访问[方块组件手册](/blocks/block-components)!_
+
+## 应用纹理
+
+:::warning
+`RP/blocks.json`会忽略命名空间。即使不写命名空间或随意填写也不会产生影响。若自定义方块与原版方块同名(仅命名空间不同)可能导致问题
+:::
+:::tip
+[方块音效](/blocks/block-sounds)也可在`RP/blocks.json`中定义
+:::
+
+对于基础的16×16×16像素方块,纹理应在`RP/blocks.json`中定义。
+
+如需使用自定义模型,应使用[geometry(几何组件)](/blocks/block-components#geometry)和[material_instances(材质实例)](/blocks/block-components#material-instances)。
+
+::: code-group
+
+```json [RP/blocks.json]
+{
+ "format_version": [1, 1, 0],
+ "wiki:custom_block": {
+ "textures": "custom_block", // 此纹理简称需在下方terrain_texture.json中定义
+ "sound": "grass"
+ }
+}
+```
+:::
+
+现在需要在`RP/textures/terrain_texture.json`中关联纹理简称与图片路径:
+
+::: code-group
+
+```json [RP/textures/terrain_texture.json]
+{
+ "texture_name": "atlas.terrain",
+ "resource_pack_name": "wiki", // 资源包ID
+ "padding": 8, // 防止纹理视觉溢出
+ "num_mip_levels": 4, // 远距离/倾斜视角下的纹理质量
+ "texture_data": {
+ // 我们的纹理简称:
+ "custom_block": {
+ "textures": "textures/blocks/custom_block" // 指向图片文件名
+ }
+ }
+}
+```
+:::
+
+### 分面纹理
+
+纹理可按面分别设置。例如一个自定义"指南针方块"可使用以下✨惊艳✨纹理:
+
+`textures/blocks/compass_block_down.png`
+
+
+
+`textures/blocks/compass_block_up.png`
+
+
+
+`textures/blocks/compass_block_north.png`
+
+
+
+`textures/blocks/compass_block_east.png`
+
+
+
+`textures/blocks/compass_block_south.png`
+
+
+
+`textures/blocks/compass_block_west.png`
+
+
+
+
+
+
+对应的`blocks.json`配置如下:
+
+::: code-group
+
+```json [RP/blocks.json]
+{
+ "format_version": [1, 1, 0],
+ "wiki:compass_block": {
+ "textures": {
+ "down": "compass_block_down",
+ "up": "compass_block_up",
+ "north": "compass_block_north",
+ "east": "compass_block_east",
+ "south": "compass_block_south",
+ "west": "compass_block_west"
+ }
+ }
+}
+```
+:::
+
+
+
+若使用[材质实例](/blocks/block-components#material-instances),配置示例如下:
+
+::: code-group
+
+```json [minecraft:block > components]
+"minecraft:material_instances": {
+ "*": {
+ "texture": "compass_block_down" // 此纹理用于破坏粒子效果
+ },
+ "up": {
+ "texture": "compass_block_up"
+ },
+ "north": {
+ "texture": "compass_block_north"
+ },
+ "east": {
+ "texture": "compass_block_east"
+ },
+ "south": {
+ "texture": "compass_block_south"
+ },
+ "west": {
+ "texture": "compass_block_west"
+ }
+}
+```
+:::
+
+对应的`terrain_texture.json`数据:
+
+::: code-group
+
+```json [RP/textures/terrain_texture.json]
+{
+ "texture_name": "atlas.terrain",
+ "resource_pack_name": "wiki",
+ "padding": 8,
+ "num_mip_levels": 4,
+ "texture_data": {
+ "compass_block_down": {
+ "textures": "textures/blocks/compass_block_down"
+ },
+ "compass_block_up": {
+ "textures": "textures/blocks/compass_block_up"
+ },
+ "compass_block_north": {
+ "textures": "textures/blocks/compass_block_north"
+ },
+ "compass_block_east": {
+ "textures": "textures/blocks/compass_block_east"
+ },
+ "compass_block_west": {
+ "textures": "textures/blocks/compass_block_west"
+ },
+ "compass_block_south": {
+ "textures": "textures/blocks/compass_block_south"
+ }
+ }
+}
+```
+:::
+
+## 定义名称
+
+最后定义方块的显示名称:
+
+::: code-group
+
+```c [RP/texts/en_US.lang]
+tile.wiki:custom_block.name=自定义方块
+tile.wiki:compass_block.name=指南针方块
+```
+:::
+
+更多本地化内容请访问[文本与翻译指南](/concepts/text-and-translations)。
+
+## 成果总结
+
+通过本教程,您已掌握:
+
+
+
+- [x] 方块基础特性
+- [x] 如何应用统一纹理
+- [x] 如何设置分面纹理
+
+
+
+...但这只是开始,更多精彩内容等待探索!
+
+## 下一步学习
+
+
+
+ 学习各类可用[方块组件](/blocks/block-components)打造独特玩法。
+
+ 使用[geometry(几何组件)](/blocks/block-components#geometry)为方块添加自定义模型!还可以通过[collision_box(碰撞箱)](/blocks/block-components#collision-box)和[selection_box(选择框)](/blocks/block-components#selection-box)配置物理交互区域。
+
+
+ 利用[方块状态](/blocks/block-states)和[permutations(状态切换)](/blocks/block-permutations)实现条件触发的组件功能。
+
+ 例如为储液罐方块添加多级液面高度功能,并支持多种液体类型。
+
+
+ 在原版复刻分类中查看多个完整实现案例。
+
+ 从简单的[自定义玻璃方块](/blocks/custom-glass-blocks)开始,体验[material_instances(材质实例)](/blocks/block-components#material-instances)的应用!
+
+
\ No newline at end of file
diff --git a/docs/wiki/2-方块/1-基础/troubleshooting-blocks.md b/docs/wiki/2-方块/1-基础/troubleshooting-blocks.md
new file mode 100644
index 00000000..6f665e6c
--- /dev/null
+++ b/docs/wiki/2-方块/1-基础/troubleshooting-blocks.md
@@ -0,0 +1,271 @@
+---
+title: 方块故障排除
+category: 常规
+tags:
+ - help
+mentions:
+ - SmokeyStack
+ - SirLich
+ - aexer0e
+ - MedicalJewel105
+ - Sprunkles137
+ - QuazChick
+---
+
+# 方块故障排除
+
+
+
+:::tip
+本页包含关于_方块_的故障排除信息。在继续阅读前,建议先查阅我们的[全局故障排除指南](/guide/troubleshooting)。
+:::
+
+## 0.0 - 常见问题
+
+> "我按照教程制作方块时遇到了问题!"
+
+无需惊慌!本页将帮助您排查常见问题。
+
+## 1.0 - 纹理问题排查
+
+修复与方块纹理相关的常见问题。
+
+## 1.1 - 纹理显示为黑紫相间
+
+我们将分析三种不同布局的方块类型:
+
+- 类似泥土的方块 
+- 类似原木的方块 
+- 类似草块的方块 
+
+请定位至 `RP/textures/terrain_texture.json` 文件,确保文件名正确。
+
+::: code-group
+```json [RP/textures/terrain_texture.json]
+{
+ "texture_name": "atlas.terrain",
+ "resource_pack_name": "wiki",
+ "padding": 8,
+ "num_mip_levels": 4,
+ "texture_data": {
+ "dirt_like": {
+ "textures": "textures/blocks/dirt_like" // 此处可替换为任意内容,但需记住此名称
+ },
+ "log_like_top": {
+ "textures": "textures/blocks/log_like_top" // 此处可替换为任意内容,但需记住此名称
+ },
+ "log_like_side": {
+ "textures": "textures/blocks/log_like_side" // 此处可替换为任意内容,但需记住此名称
+ },
+ "custom_grass_top": {
+ "textures": "textures/blocks/custom_grass_top" // 此处可替换为任意内容,但需记住此名称
+ },
+ "custom_grass_bottom": {
+ "textures": "textures/blocks/custom_grass_bottom" // 此处可替换为任意内容,但需记住此名称
+ },
+ "custom_grass_side": {
+ "textures": "textures/blocks/custom_grass_side" // 此处可替换为任意内容,但需记住此名称
+ }
+ }
+}
+```
+:::
+
+接下来检查方块配置文件,确保包含 `material_instances` 组件。
+
+类似泥土的方块配置示例:
+
+::: code-group
+```json [BP/blocks/dirt_like.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:dirt_like"
+ },
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "dirt_like"
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+类似原木的方块配置示例:
+
+::: code-group
+```json [BP/blocks/log_like.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:log_like"
+ },
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "log_like_side"
+ },
+ "end": {
+ "texture": "log_like_top"
+ },
+ "up": "end",
+ "down": "end"
+ }
+ }
+ }
+}
+```
+:::
+
+类似草块的配置示例:
+
+::: code-group
+```json [BP/blocks/custom_grass.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_grass"
+ },
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_grass_side"
+ },
+ "up": {
+ "texture": "custom_grass_top"
+ },
+ "down": {
+ "texture": "custom_grass_bottom"
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+正确配置后,方块的纹理应正常显示。
+
+## 1.2 - 纹理显示为带"Update"字样的泥土块
+
+问题现象:自定义方块变成带有绿色文字的泥土方块。
+
+
+
+这是_未知方块_的标识,通常由以下原因引起:
+- 方块标识符被修改
+- 方块JSON文件格式错误
+
+解决方案:
+1. 使用JSON校验工具检查文件格式
+2. 确认方块标识符未更改
+3. 确保方块配置包含以下任意组件:
+ - `minecraft:unit_cube`
+ - `minecraft:geometry`
+ - `minecraft:material_instances`
+ - 或正确配置了 `RP/blocks.json` 中的纹理条目
+
+
+## 2.0 - 渲染问题排查
+
+本节将描述常见的方块渲染问题及解决方案。
+
+## 2.1 - 透明效果失效
+
+问题现象:纹理中的透明像素在游戏中显示为不透明。
+
+解决方案:在方块的 `material_instances` 组件中添加渲染方法:
+
+::: code-group
+```json [BP/blocks/your_block.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ ...
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "render_method": "alpha_test"
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+## 2.2 - 方块产生阴影
+
+问题现象:自定义几何体方块产生阴影。
+
+解决方案:在方块组件中添加光照衰减配置:
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:light_dampening": 0
+```
+:::
+
+## 2.3 - 模型立方体在物品栏中重叠
+
+问题现象:自定义几何体方块在物品栏中呈现异常堆叠:
+
+
+
+解决方案:在Blockbench中调整立方体绘制顺序(从下到上):
+
+```
+cube_middle cube_bottom
+cube_top -> cube_middle
+cube_bottom cube_top
+```
+
+## 2.4 - 方块在物品栏中显示过小
+
+问题现象:16³标准尺寸方块在物品栏中比原版方块小。
+
+解决方案分析:
+- 使用 `RP/blocks.json` 配置纹理可使方块正常显示,但无法使用自定义模型
+- 使用 `material_instances` 组件时需配合以下配置:
+ - 添加旋转组件需同时配置材质实例
+ - 使用单位立方体或自定义几何体
+ - 确保基础状态使用 `blocks.json` 配置
+
+---
+
+## 3.0 - 常见日志错误
+
+本节将解析常见的日志报错信息。
+
+## 3.1 - 碰撞/选择框错误
+
+典型错误提示:
+
+> `[Blocks][error]-minecraft:collision_box: min 值不能低于 (-8, 0, -8),max 值不能超过 (8, 16, 8)`
+
+排查步骤:
+- 检查 X/Z 轴数值是否在 -8 至 8 范围内
+- 检查 Y 轴数值是否在 0 至 16 范围内
+- 确保碰撞框不超过 16×16×16 单位区域
+
+## 3.2 - 模型尺寸错误
+
+典型错误提示:
+
+> `geometry.your_block 包含 X 个超出范围的立方体...`
+
+解决方案:
+- 缩小几何体尺寸
+- 将大型模型拆分为多个方块
+
+---
+
+## 后续步骤
+
+若问题仍未解决,欢迎加入Discord社区交流。如发现文档内容有误,请通过GitHub提交修正建议!
\ No newline at end of file
diff --git a/docs/wiki/2-方块/2-外观/block-models.md b/docs/wiki/2-方块/2-外观/block-models.md
new file mode 100644
index 00000000..4941aec8
--- /dev/null
+++ b/docs/wiki/2-方块/2-外观/block-models.md
@@ -0,0 +1,190 @@
+---
+title: 创建方块模型
+category: 教程
+tags:
+ - 新手
+ - 简单
+mentions:
+ - QuazChick
+---
+
+# 创建方块模型
+
+
+
+尽管自定义方块无法使用原版的[方块形状](/blocks/block-shapes),但我们可以创建遵循类似实体模型格式的自定义模型。本教程将引导您使用[Blockbench](https://blockbench.net)为"纸袋"创建自定义方块模型。通过学习本教程,您将掌握专为自定义方块设计的Minecraft几何体核心功能。
+
+**注意:** 自定义方块模型必须符合[模型尺寸限制](/blocks/block-components.html#geometry)。
+
+## 模型设置
+
+打开Blockbench并新建一个`Bedrock Block`项目。
+
+
+
+现在可以为模型设置标识符!您可以在此处决定文件名,或稍后修改。
+
+UV模式和纹理尺寸应保持不变。
+
+:::danger 命名空间
+模型标识符**不使用命名空间且不能包含冒号**。冒号曾用于模型继承,在现代几何格式中已失效。
+:::
+
+
+
+## 添加立方体
+
+虽然不一定是完美立方体,但模型中的元素都称为**立方体**。所有立方体必须包含在作为分组的**骨骼**中。
+
+首先通过大纲视图点击`Add Group`创建根骨骼。按`F2`可重命名骨骼。
+
+
+
+"纸袋"模型需要两个立方体:一个作为提手,一个作为主体。选择根骨骼后点击`Add Cube`添加。
+
+
+
+通过顶部工具栏可移动、缩放和旋转立方体。以下是"paper_bag"模型使用的两个立方体:
+
+
+
+## 移除面
+
+某些面可能无需可见。在示例中,移除纸袋顶部面以实现透视效果。
+
+点击预览中的面,在UV面板删除其UV映射即可移除。
+
+
+
+提手仅需保留南北面。在UV面板按住Ctrl可多选面名称进行操作。
+
+
+
+## 预览纹理
+
+:::tip
+点击`Create Texture`选择`Blank`即可在Blockbench中创建纹理。
+:::
+
+"纸袋"模型包含以下预制纹理:
+
+- `textures/blocks/paper_bag.png`
+
+
+
+
+
+
+- `textures/blocks/paper_bag_bottom_fold.png`
+
+
+
+
+
+
+- `textures/blocks/paper_bag_side_gusset.png`
+
+
+
+将纹理导入Blockbench后拖拽至对应面,初始效果可能不够理想...
+
+
+
+## 调整UV布局
+
+通过UV面板重新定位/缩放面的UV映射来修正纹理位置。选择目标面后操作UV面板即可。
+
+
+
+
+
+## 修改材质实例
+
+自定义材质实例名称可便捷定义面渲染方式。
+
+右键立方体选择`Edit Material Instances`进行编辑。
+
+
+
+在示例中,东西面需要独立纹理。通过分配材质实例实现。
+
+
+
+## 应用几何体与纹理
+
+通过`File > Export > Export Bedrock Geometry`导出至`RP/models/blocks`文件夹后,即可在方块JSON中引用模型。
+
+通过`RP/textures/terrian_texture.json`短名称应用纹理。本例中纸袋不遮挡光线,故设置光照衰减为0。
+
+::: code-group
+```json [BP/blocks/paper_bag.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:paper_bag",
+ "menu_category": {
+ "category": "items"
+ }
+ },
+ "components": {
+ // 通过引用模型标识符应用模型
+ "minecraft:geometry": "geometry.paper_bag",
+ // 应用纹理及其他渲染配置
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "paper_bag",
+ "render_method": "alpha_test" // 禁用背面剔除并启用透明
+ },
+ "down": {
+ "texture": "paper_bag_bottom_fold",
+ "render_method": "alpha_test" // 所有实例必须保持一致
+ },
+ // 模型中使用的自定义实例名称
+ "side_gusset": {
+ "texture": "paper_bag_side_gusset",
+ "render_method": "alpha_test" // 所有实例必须保持一致
+ }
+ },
+ // 防止产生阴影
+ "minecraft:light_dampening": 0
+ }
+ }
+}
+```
+:::
\ No newline at end of file
diff --git a/docs/wiki/2-方块/3-巧思案例/applying-effects.md b/docs/wiki/2-方块/3-巧思案例/applying-effects.md
new file mode 100644
index 00000000..5d929bac
--- /dev/null
+++ b/docs/wiki/2-方块/3-巧思案例/applying-effects.md
@@ -0,0 +1,183 @@
+---
+title: 持续效果应用指南
+category: 教程
+tags:
+ - 实验性内容
+ - 初级难度
+mentions:
+ - MysticChair
+ - SirLich
+ - MedicalJewel105
+ - QuazChick
+---
+
+# 持续效果应用指南
+
+
+
+::: tip 格式要求 & 最低引擎版本 `1.20.30`
+本教程假设您已掌握[方块状态](/blocks/block-states)的基本概念。建议在开始前先阅读[方块基础指南](/blocks/blocks-intro)。
+:::
+
+::: warning 实验性功能
+需要启用 `假日创作者功能` 来触发事件。
+:::
+
+本教程将展示如何在实体持续站立于方块时为其附加状态效果。
+
+## 设置步骤
+
+我们需要在代码中添加以下组件,首先创建一个用于记录站立状态的布尔值:
+
+::: code-group
+```json [minecraft:block > description]
+"states": {
+ "wiki:stood_on": [false, true]
+}
+```
+:::
+
+接下来添加 `minecraft:queued_ticking` 组件,当检测到站立状态为 `true` 时触发效果事件:
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:queued_ticking": {
+ "looping": true,
+ "interval_range": [1, 1],
+ "on_tick": {
+ "event": "wiki:add_effect",
+ "target": "self",
+ "condition": "q.block_state('wiki:stood_on')"
+ }
+}
+```
+:::
+
+使用 `minecraft:on_step_on` 事件组件在实体踏上方块时更新状态:
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:on_step_on": {
+ "event": "wiki:step_on"
+}
+```
+:::
+
+通过 `minecraft:on_step_off` 事件组件在实体离开时重置状态:
+
+::: code-group
+```json [minecraft:block > description]
+"minecraft:on_step_off": {
+ "event": "wiki:step_off"
+}
+```
+:::
+
+配置事件处理逻辑。首先定义状态更新事件:
+
+::: code-group
+```json [minecraft:block > components]
+"events": {
+ "wiki:step_on": {
+ "set_block_state": {
+ "wiki:stood_on": true
+ }
+ },
+ "wiki:step_off": {
+ "set_block_state": {
+ "wiki:stood_on": false
+ }
+ }
+}
+```
+:::
+
+最后添加效果触发事件:
+
+::: code-group
+```json [minecraft:block > components]
+"wiki:add_effect": {
+ "run_command": {
+ "command": "effect @e[r=1] wither 2 2"
+ }
+}
+```
+:::
+
+完成!上述代码将在实体持续站立时施加凋零效果。
+
+## 示例JSON
+
+
+
+::: code-group
+```json [BP/blocks/wither_block.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:wither_block",
+ "menu_category": {
+ "category": "nature"
+ },
+ "states": {
+ "wiki:stood_on": [false, true]
+ }
+ },
+ "components": {
+ "minecraft:geometry": "geometry.wither_block",
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "wither_block"
+ }
+ },
+ "minecraft:loot": "loot_tables/empty.json",
+ "minecraft:on_step_on": {
+ "event": "wiki:step_on"
+ },
+ "minecraft:on_step_off": {
+ "event": "wiki:step_off"
+ },
+ "minecraft:queued_ticking": {
+ "looping": true,
+ "interval_range": [1, 1],
+ "on_tick": {
+ "event": "wiki:add_effect",
+ "condition": "q.block_state('wiki:stood_on')"
+ }
+ },
+ "minecraft:map_color": "#181818"
+ },
+ "events": {
+ "wiki:step_on": {
+ "set_block_state": {
+ "wiki:stood_on": true
+ }
+ },
+ "wiki:step_off": {
+ "set_block_state": {
+ "wiki:stood_on": false
+ }
+ },
+ "wiki:add_effect": {
+ "run_command": {
+ "command": "effect @e[r=1] wither 2 2"
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+
+
+## 技术说明
+
+关于代码实现的几点说明:
+
+- **问**:为何使用 `run_command` 事件响应来触发效果,而不是专用的 `add_mob_effect` 响应?
+
+- **答**:当通过 `minecraft:queued_ticking` 触发时,`add_mob_effect` 无法获取有效目标,因此必须改用 `/effect` 命令的目标选择器。
+
+注意当效果时长设置小于2秒时可能出现异常。如果效果会造成持续伤害(如中毒),伤害会在效果施加时立即生效。这将导致实体受到的伤害频率高于原版机制(当实体快速移动时)。可通过将命令中的效果时长设为1秒进行对比测试。保持2秒时长可确保伤害间隔符合原版节奏。
\ No newline at end of file
diff --git a/docs/wiki/2-方块/3-巧思案例/avoiding-state-limit.md b/docs/wiki/2-方块/3-巧思案例/avoiding-state-limit.md
new file mode 100644
index 00000000..cdb687be
--- /dev/null
+++ b/docs/wiki/2-方块/3-巧思案例/avoiding-state-limit.md
@@ -0,0 +1,74 @@
+---
+title: 规避状态值上限
+category: 教程
+tags:
+ - 专家
+mentions:
+ - Kaioga5
+ - QuazChick
+---
+
+# 规避状态值上限
+
+
+
+## 前言
+
+方块每个状态最多只能拥有16个有效状态值。本指南将解释如何避免触及这个上限。
+
+:::tip
+本教程不会直接展示如何突破16个状态值的限制,但通过以下方法可以模拟实现类似效果!
+:::
+
+## 实现原理
+
+该方法通过组合两个或多个状态值进行复用,并在排列组合或条件判断中读取这些组合值。例如,一个需要表示26个英文字母的方块,可以通过数值组合的方式减少状态值数量。
+
+## 逻辑推演
+
+以下示例代码演示了如何通过组合实现字母映射:
+```
+1 & 1 = A 1 & 5 = E 1 & 9 = I 1 & 13 = M
+1 & 2 = B 1 & 6 = F 1 & 10 = J
+1 & 3 = C 1 & 7 = G 1 & 11 = K
+1 & 4 = D 1 & 8 = H 1 & 12 = L
+```
+继续扩展:
+```
+2 & 1 = N 2 & 5 = R 2 & 9 = V 2 & 13 = Z
+2 & 2 = O 2 & 6 = S 2 & 10 = W
+2 & 3 = P 2 & 7 = T 2 & 11 = X
+2 & 4 = Q 2 & 8 = U 2 & 12 = Y
+```
+
+通过这种组合方式,仅需15个状态值即可实现26个字母的映射。可用组合值越多,状态上限的扩展空间就越大。
+
+## 实际应用
+
+参照上述示例,您的状态定义应如下所示:
+
+::: code-group
+```json [minecraft:block > description]
+"states": {
+ "wiki:value": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13],
+ "wiki:division": [1, 2]
+}
+```
+:::
+
+对应的条件判断语句应如下编写:
+
+```json
+"condition": "q.block_state('wiki:division') == 1 && q.block_state('wiki:value') == 1"
+```
+```json
+"condition": "q.block_state('wiki:division') == 1 && q.block_state('wiki:value') == 2"
+```
+
+## 知识总结
+
+您已掌握如何通过状态值组合突破64个状态值的限制,使用更少的资源实现更复杂的逻辑。
+
+:::tip
+通过增加组合维度(使用2个以上的状态值),您可以获得更多可能的组合结果。
+:::
\ No newline at end of file
diff --git a/docs/wiki/2-方块/3-巧思案例/block-texture-variation.md b/docs/wiki/2-方块/3-巧思案例/block-texture-variation.md
new file mode 100644
index 00000000..99f7eece
--- /dev/null
+++ b/docs/wiki/2-方块/3-巧思案例/block-texture-variation.md
@@ -0,0 +1,84 @@
+---
+title: 纹理变体
+category: 教程
+tags:
+ - 中级
+mentions:
+ - SirLich
+ - solvedDev
+ - Hatchibombotar
+ - SmokeyStack
+ - MedicalJewel105
+ - QuazChick
+---
+
+# 纹理变体
+
+
+
+方块纹理变体是指单个方块可以拥有多个纹理。这在需要表现细微差异的方块(如带有小石块的泥土或不同生长阶段的草方块)时非常实用。
+
+要启用纹理变体功能,需在资源包的`textures`文件夹中创建`terrain_texture.json`文件。在方块定义中,纹理应设置为包含`variations`键的字典,该键对应一个由字典组成的数组。每个字典必须包含指向纹理文件的`path`键,并可添加`weight`参数控制纹理出现的概率。
+
+## 应用纹理变体
+
+以下是为泥土方块创建三种纹理变体的示例:
+
+- 在资源包中创建`textures/terrain_texture.json`文件
+- 在JSON文件中定义需要添加变体的方块,示例如下:
+
+::: code-group
+```json [RP/textures/terrain_texture.json]
+{
+ "texture_name": "atlas.terrain",
+ "resource_pack_name": "wiki", // 资源包ID
+ "padding": 8, // 防止纹理视觉溢出
+ "num_mip_levels": 4, // 远距离/倾斜视角下的纹理质量
+ "texture_data": {
+ "dirt": {
+ "textures": {
+ "variations": [
+ { "path": "textures/blocks/dirt0" },
+ { "path": "textures/blocks/dirt1" },
+ { "path": "textures/blocks/dirt2" }
+ ]
+ }
+ }
+ }
+}
+```
+:::
+
+- 创建或修改三个泥土纹理文件,分别命名为`dirt0.png`、`dirt1.png`和`dirt2.png`
+- 将纹理文件放置于`path`参数指定的路径下(可添加子文件夹保持整洁)
+
+## 权重控制变体分布
+
+完成基础配置后,可通过添加权重值调整纹理出现概率:
+
+::: code-group
+```json [RP/textures/terrain_texture.json]
+{
+ "texture_name": "atlas.terrain",
+ "resource_pack_name": "wiki", // 资源包ID
+ "padding": 8, // 防止纹理视觉溢出
+ "num_mip_levels": 4, // 远距离/倾斜视角下的纹理质量
+ "texture_data": {
+ "dirt": {
+ "textures": {
+ "variations": [
+ { "path": "textures/blocks/dirt0", "weight": 70 }, // 70%出现概率
+ { "path": "textures/blocks/dirt1", "weight": 20 }, // 20%出现概率
+ { "path": "textures/blocks/dirt2", "weight": 10 } // 10%出现概率
+ ]
+ }
+ }
+ }
+}
+```
+:::
+
+注意事项:
+
+- 当前版本存在纹理集文件引用问题,可能导致无法正确识别MER文件或常规纹理文件
+ -- [官方漏洞报告](https://bugs.mojang.com/browse/MCPE-126617)
\ No newline at end of file
diff --git a/docs/wiki/2-方块/3-巧思案例/fake-blocks.md b/docs/wiki/2-方块/3-巧思案例/fake-blocks.md
new file mode 100644
index 00000000..6da8f63b
--- /dev/null
+++ b/docs/wiki/2-方块/3-巧思案例/fake-blocks.md
@@ -0,0 +1,279 @@
+---
+title: 伪方块
+category: 教程
+tags:
+ - 中级
+mentions:
+ - SirLich
+ - solvedDev
+ - Joelant05
+ - MedicalJewel105
+ - aexer0e
+ - ThijsHankelMC
+ - QuazChick
+---
+
+# 伪方块
+
+
+
+::: warning 实验性功能
+需要启用 `Holiday Creator Features` 来触发方块事件。
+:::
+
+当你的方块需要实现Minecraft原生不支持的功能时,可以通过创建具有方块特征的实体来模拟实现。
+
+## 创建碰撞箱
+
+[固体实体教程](/entities/solid-entities)中介绍了四种创建碰撞箱的方式,涉及 `runtime_identifiers`、方块和组件组合方案。
+
+## 基础组件
+
+以下组件是让实体模拟方块行为的关键配置。注意不要添加 `"minecraft:physics": {}` 组件,否则实体会受重力影响坠落或与水/岩浆等方块发生异常碰撞。
+
+::: code-group
+```json [BP/entities/your_entity.json#minecraft:entity/components]
+{
+ // 需要击退抗性来防止实体被击退
+ "minecraft:knockback_resistance": {
+ "value": 1
+ },
+ // 控制实体是否可被推动
+ "minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": true
+ },
+ // 设置实体可被推动的穿透距离
+ "minecraft:push_through": {
+ "value": 1
+ },
+ // 使实体无敌
+ "minecraft:damage_sensor": {
+ "triggers": [
+ {
+ "deals_damage": false,
+ "cause": "all"
+ }
+ ]
+ }
+}
+```
+:::
+
+## 实体旋转对齐
+
+通过数学计算实现实体旋转对齐:
+
+::: code-group
+```json [动画控制器]
+"rotation": [ 0, "-q.body_y_rotation + (Math.round(q.body_y_rotation / 90) * 90)", 0 ]
+```
+:::
+
+将此代码应用在模型动画的核心分组(包含其他所有分组的父级),确保X轴和Z轴旋转中心点为0以避免视觉错位。同时避免添加以下组件:
+
+- `"minecraft:behavior.look_at_entity": {}`
+- `"minecraft:behavior.look_at_player": {}`
+- `"minecraft:behavior.look_at_target": {}`
+
+这些组件会改变目标Y轴旋转角度,导致模型异常位移。同时也不要添加行走类组件。
+
+## 实体位置对齐
+
+位置对齐的实现较为复杂,需分步操作:
+
+1. 在 `minecraft:entity_spawned` 事件中生成临时方块
+2. 通过指令生成虚拟实体
+3. 将虚拟实体转换为目标实体
+
+::: code-group
+```json [BP/entities/your_entity.json#minecraft:entity/events]
+// 原实体中的事件
+"minecraft:entity_spawned": {
+ "add": {
+ "components_groups": [
+ "despawn" // 需要移除初始实体
+ ]
+ },
+ "run_command": {
+ "command": [
+ "setblock ~~~ wiki:align"
+ ]
+ }
+}
+```
+:::
+
+::: code-group
+```json [BP/entities/your_entity.json#minecraft:entity/component_groups]
+// 原实体中的组件组
+"component_groups": {
+ "despawn": {
+ "minecraft:despawn": {}
+ }
+}
+```
+:::
+
+用于生成虚拟实体的对齐方块配置:
+
+::: code-group
+```json [BP/blocks/your_dummy_block.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:align"
+ },
+ "components": {
+ "minecraft:light_dampening": 0,
+ "minecraft:collision_box": false,
+ "minecraft:selection_box": false,
+ "minecraft:loot": "loot_tables/empty.json",
+ "minecraft:geometry": "geometry.empty",
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "empty"
+ }
+ },
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 2
+ },
+ "minecraft:on_placed": {
+ "event": "wiki:event"
+ }
+ },
+ "events": {
+ "wiki:event": {
+ "run_command": {
+ "command": [
+ "setblock ~~~ air", // 移除临时方块
+ "summon wiki:dummy_align" // 生成虚拟实体
+ ]
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+虚拟实体的转换配置:
+
+::: code-group
+```json [BP/entities/your_dummy_entity.json]
+{
+ "format_version": "1.13.0",
+ "minecraft:entity": {
+ "description": {
+ "identifier": "wiki:dummy_align", // 虚拟实体用于避免触发原实体的生成事件
+ "is_spawnable": false,
+ "is_summonable": true,
+ "is_experimental": false
+ },
+ "component_groups": {
+ "transform": {
+ "minecraft:transformation": {
+ "into": "wiki:your_entity",
+ "delay": 0
+ }
+ }
+ },
+ "components": {
+ "minecraft:physics": {
+ "has_gravity": false
+ },
+ "minecraft:collision_box": {
+ "width": 0.1,
+ "height": 0.1
+ },
+ "minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "all",
+ "deals_damage": false
+ }
+ }
+ },
+ "events": {
+ "minecraft:entity_spawned": {
+ "add": {
+ "component_groups": ["transform"]
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+## 裂纹纹理效果
+
+为实体添加原生方块的破坏裂纹效果:
+
+1. 添加原版裂纹纹理(兼容材质包)
+2. 创建专用几何体
+3. 配置渲染控制器
+
+::: code-group
+```json [RP/entity/your_entity.json#description]
+"textures": {
+ "default": "textures/entity/your_texture",
+ "destroy_stage_0": "textures/environment/destroy_stage_0",
+ "destroy_stage_1": "textures/environment/destroy_stage_1",
+ "destroy_stage_2": "textures/environment/destroy_stage_2",
+ "destroy_stage_3": "textures/environment/destroy_stage_3",
+ "destroy_stage_4": "textures/environment/destroy_stage_4",
+ "destroy_stage_5": "textures/environment/destroy_stage_5",
+ "destroy_stage_6": "textures/environment/destroy_stage_6",
+ "destroy_stage_7": "textures/environment/destroy_stage_7",
+ "destroy_stage_8": "textures/environment/destroy_stage_8",
+ "destroy_stage_9": "textures/environment/destroy_stage_9"
+}
+```
+:::
+
+创建防Z轴冲突的几何体:
+
+::: code-group
+```json [RP/entity/your_entity.json#description]
+"geometry": {
+ "default": "geometry.your_geometry",
+ "broken": "geometry.broken"
+}
+```
+:::
+
+配置动态纹理渲染控制器:
+
+::: code-group
+```json [RP/render_controllers/my_entity.json]
+"controller.render.broken": {
+ "arrays": {
+ "textures": {
+ "array.broken": [
+ "texture.destroy_stage_9",
+ "texture.destroy_stage_8",
+ "texture.destroy_stage_7",
+ "texture.destroy_stage_6",
+ "texture.destroy_stage_5",
+ "texture.destroy_stage_4",
+ "texture.destroy_stage_3",
+ "texture.destroy_stage_2",
+ "texture.destroy_stage_1",
+ "texture.destroy_stage_0",
+ "texture.normal"
+ ]
+ }
+ },
+ "geometry": "Geometry.broken",
+ "materials": [
+ {
+ "*": "Material.default"
+ }
+ ],
+ "textures": [
+ "array.broken[q.health * 1]" // 根据实体生命值调整参数:10生命值保持1倍,20生命值改为0.5,40生命值改为0.25...
+ ]
+}
+```
+:::
\ No newline at end of file
diff --git a/docs/wiki/2-方块/3-巧思案例/flipbook-textures.md b/docs/wiki/2-方块/3-巧思案例/flipbook-textures.md
new file mode 100644
index 00000000..2f2e874b
--- /dev/null
+++ b/docs/wiki/2-方块/3-巧思案例/flipbook-textures.md
@@ -0,0 +1,172 @@
+---
+title: 纹理动画
+category:
+ - 教程
+tags:
+ - 中级
+mentions:
+ - MedicalJewel105
+ - SquisSloim
+ - SmokeyStack
+ - QuazChick
+---
+
+# 纹理动画
+
+
+
+通过本文你将了解:
+
+- 如何为方块应用翻页书贴图
+- `RP/textures/flipbook_textures.json` 中可用的参数及其作用
+
+## 应用翻页书贴图
+
+翻页书贴图即动态纹理。火焰、水、岩浆和岩浆块等方块都使用此类贴图。你也可以为自己创建的方块添加动态纹理!
+
+首先以原版岩浆的动效贴图为例。只需在材质实例组件中将 `texture` 值设为 `Vanilla RP/textures/terrain_texture.json` 中定义的纹理名称即可:
+
+```json
+"magma": {
+ "textures": "textures/blocks/magma"
+}
+```
+
+::: code-group
+```json [BP/blocks/flipbook_block.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:flipbook_block",
+ "menu_category": {
+ "category": "construction"
+ }
+ },
+ "components": {
+ "minecraft:unit_cube": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "magma" // 将纹理名称填在此处
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+
+
+现在你的方块已经拥有动态纹理了!
+
+## 定义翻页书贴图
+
+在为方块添加动态纹理后,我们需要了解其工作原理。
+
+1. 游戏会根据 `terrain_texture.json` 中定义的纹理名称(如 magma)读取对应贴图路径
+
+::: code-group
+```json [RP/textures/terrain_texture.json]
+{
+ "texture_name": "atlas.terrain",
+ "resource_pack_name": "wiki", // 资源包ID
+ "padding": 8, // 防止贴图边缘像素溢出
+ "num_mip_levels": 4, // 控制远视角和倾斜视角下的材质质量
+ "texture_data": {
+ "magma": {
+ "textures": "textures/blocks/magma"
+ }
+ }
+}
+```
+:::
+
+2. 游戏会根据上述名称(magma)在 `flipbook_textures.json` 中查找对应的动画参数
+
+::: code-group
+```json [RP/textures/flipbook_textures.json]
+[
+ {
+ "atlas_tile": "magma",
+ "flipbook_texture": "textures/blocks/magma",
+ "ticks_per_frame": 10
+ }
+]
+```
+:::
+
+`"atlas_tile"` 表示将动画参数绑定到 `terrain_texture.json` 中定义的 magma 纹理名称。
+
+3. 所有使用 `magma` 作为纹理的方块都将应用此动态纹理
+
+## 翻页书贴图参数配置
+
+在查阅官方示例时,你可能会发现一些额外的配置参数:
+
+| 参数名 | 类型 | 描述 |
+|--------------------|------------------|-------------------------------------------------------------------------------------------------|
+| flipbook_texture | string | 纹理文件路径 |
+| atlas_tile | string | 在terrain_textures.json中定义的短名称 |
+| atlas_index | integer | 短名称对应的纹理数组中目标纹理的索引 |
+| atlas_tile_variant | integer | 短名称对应的方块变体数组中纹理的变化索引 |
+| ticks_per_frame | integer | 帧切换速度(单位:ticks,20 ticks = 1秒) |
+| frames | array 或 integer | 帧索引数组;或表示总帧数的整数值 |
+| replicate | integer | 像素倍数(仅允许2的幂次值),默认:1 |
+| blend_frames | boolean | 是否启用帧过渡平滑效果,默认:true |
+
+### `atlas_index`
+
+用于指定需要添加动画效果的纹理在数组中的索引位置
+
+::: code-group
+```json [RP/textures/terrain_texture.json#texture_data]
+"dirt": {
+ "textures": [
+ "textures/blocks/dirt",
+ "textures/blocks/coarse_dirt" // 假设此纹理需要添加动效
+ ]
+}
+```
+:::
+
+由于要设置第二个纹理(索引为1)的动效,需要在对应配置中设置 `"atlas_index": 1`
+
+### `atlas_tile_variant`
+
+用于指定需要添加动画效果的方块变体(需在 `variations` 数组中定义)索引
+
+::: code-group
+```json [RP/textures/terrain_texture.json#texture_data]
+"dirt": {
+ "textures": [
+ {
+ "variations": [
+ { "path": "textures/blocks/dirt_va" }, // 假设此变体需要添加动效
+ { "path": "textures/blocks/dirt0" },
+ { "path": "textures/blocks/dirt1" }
+ ]
+ }
+ ]
+}
+```
+:::
+
+若需要设置索引1的变体动画,需在参数中添加 `"atlas_tile_variant": 1`
+
+### `replicate`
+
+控制贴图像素显示倍数。仅允许使用2的幂次数值,当原帧分辨率较小时可实现像素扩展效果
+
+| 参数值 | 效果说明 |
+|--------------------|----------------------------|
+| < 0 | 动画失效 |
+| 0 | 动画失效且贴图不显示 |
+| 2 | 每像素扩展为4格(尺寸缩小1/2) |
+| x | 每像素扩展为x²格(尺寸缩小1/x) |
+
+## 效果展示
+
+
+
+现在你可以开始修改原版动效贴图或创作属于你的动态纹理了!
\ No newline at end of file
diff --git a/docs/wiki/2-方块/3-巧思案例/ore-loot-tables.md b/docs/wiki/2-方块/3-巧思案例/ore-loot-tables.md
new file mode 100644
index 00000000..98871c1a
--- /dev/null
+++ b/docs/wiki/2-方块/3-巧思案例/ore-loot-tables.md
@@ -0,0 +1,215 @@
+---
+title: 矿石战利品表
+category: 教程
+tags:
+ - 简单
+mentions:
+ - SykoUSS
+ - ExDrill
+ - MedicalJewel105
+ - SmokeyStack
+ - Chikorita-Lover
+ - SirLich
+ - TheItsNameless
+ - QuazChick
+ - Keyyard
+---
+
+# 矿石战利品表
+
+
+
+::: tip 格式版本 `1.20.30`
+本教程假设您已具备方块基础知识。
+开始前请先查阅[方块指南](/blocks/blocks-intro)。
+:::
+
+::: warning 实验性功能
+需要启用`假日创造者特性`来触发事件。
+:::
+
+本教程旨在展示一种通过战利品表创建自定义矿石方块的全新方法。使用`minecraft:loot`组件时将始终调用指定战利品表,而通过在战利品表中添加`match_tool`条件,可以逐池限定挖掘工具要求。
+
+- 特性:
+
+ - 可使用指定工具挖掘(本教程以铁镐为例)
+ - 可指定工具附魔等级
+ - 经验值掉落支持
+
+- 限制:
+
+ - 所有工具需逐个单独指定
+ - 非玩家破坏方式(爆炸/指令等)不会触发掉落
+
+## 方块JSON
+
+以下方块行为文件可作为模板使用。记得通过`terrain_texture.json`设置方块纹理。
+
+::: code-group
+```json [BP/blocks/silver_ore.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:silver_ore",
+ "menu_category": {
+ "category": "nature",
+ "group": "itemGroup.name.ore"
+ }
+ },
+ "components": {
+ ...
+ // 触发加载带有经验奖励结构的事件
+ "minecraft:on_player_destroyed": {
+ "event": "wiki:xp_reward"
+ },
+ "minecraft:loot": "loot_tables/blocks/silver_ore.json" // 使用精准采集时不会掉落
+ },
+ "events": {
+ "wiki:xp_reward": {
+ "run_command": {
+ "command": [
+ "structure load ore_xp_reward ~~~" // 需下载下方预存经验球的结构文件
+ ]
+ }
+ }
+ }
+ }
+}
+```
+
+## 战利品表
+
+以下示例展示了必需组件
+
+::: code-group
+```json [BP/loot_tables/blocks/silver_ore.json]
+{
+ "pools": [
+ {
+ "rolls": 1,
+ "conditions": [
+ {
+ "condition": "match_tool",
+ "item": "minecraft:iron_pickaxe",
+ "count": 1
+ }
+ ],
+ "entries": [
+ {
+ "type": "item",
+ "name": "wiki:raw_silver"
+ }
+ ]
+ }
+ ]
+}
+```
+
+## 附魔等级限定
+
+可通过添加`enchantments`区间限定附魔等级。注意每组工具及其等级需独立成池。
+
+目前兼容检测1级和2级附魔。
+
+::: code-group
+```json [BP/loot_tables/blocks/silver_ore.json#pools]
+"conditions": [
+ {
+ "condition": "match_tool",
+ "item": "minecraft:iron_pickaxe",
+ "count": 1,
+ "enchantments": [
+ {
+ "fortune": {
+ "level": 1
+ }
+ }
+ ]
+ }
+]
+```
+
+## 非实验性方案
+
+若不想通过方块事件触发经验奖励,可选用以下替代方案。
+
+请从[此处](#下载结构文件)下载内含经验球的`ore_xp_reward`结构文件。
+
+### 方案一:虚拟物品与循环函数
+
+**步骤1**:为需要掉落经验的方块创建战利品表。以"minecraft:redstone"为例:
+
+```json
+{
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "item",
+ "name": "minecraft:redstone"
+ }
+ ]
+ },
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "item",
+ "name": "minecraft:barrier" // 虚拟物品
+ }
+ ]
+ }
+ ]
+}
+```
+
+此处添加已有物品"minecraft:barrier"作为触发经验掉落的虚拟物品,也可创建专用虚拟物品。
+
+**步骤2**:创建循环函数处理掉落物品。需在`BP/functions/tick.json`中定义:
+
+```c
+execute as @e[type=item, name="Barrier"] at @s run structure load ore_xp_reward ~~~
+execute as @e[type=item, name="Barrier"] run kill
+```
+
+该函数会捕捉名为"Barrier"的掉落物,加载经验奖励结构后销毁虚拟物品。
+
+### 方案二:纯函数循环
+
+**步骤1**:创建基础战利品表。以"wiki:raw_silver"为例:
+
+```json
+{
+ "pools": [
+ {
+ "entries": [
+ {
+ "type": "item",
+ "name": "wiki:raw_silver"
+ }
+ ]
+ }
+ ]
+}
+```
+
+**步骤2**:创建标记处理函数。需在`BP/functions/tick.json`中定义:
+
+```c
+execute as @e[type=item, name="Raw Silver", tag=!xp] at @s run structure load ore_xp_reward ~~~
+execute as @e[type=item, name="Raw Silver", tag=!xp] run tag @s add xp
+```
+
+该函数为所有未标记"xp"的银矿掉落物加载经验结构,并通过标签防止重复触发。
+
+请根据实际情况调整物品ID、标签等参数。
+
+## 下载结构文件
+
+ 下载MCSTRUCTURE
+
+## 实际效果
+
+
\ No newline at end of file
diff --git a/docs/wiki/2-方块/3-巧思案例/precise-rotation.md b/docs/wiki/2-方块/3-巧思案例/precise-rotation.md
new file mode 100644
index 00000000..e13de9c2
--- /dev/null
+++ b/docs/wiki/2-方块/3-巧思案例/precise-rotation.md
@@ -0,0 +1,352 @@
+---
+title: 精确旋转
+category: 教程
+tags:
+ - experimental
+ - expert
+mentions:
+ - QuazChick
+---
+
+# 精确旋转
+
+
+
+::: tip 格式与最低引擎版本 `1.20.30`
+本教程假定您已具备方块的进阶知识与Molang基础。
+开始前建议先阅读[方块指南](/blocks/blocks-intro)。
+:::
+
+::: warning 实验性功能
+需要启用 `Holiday Creator Features` 来触发事件。
+:::
+
+本教程将引导您实现可支持次级方位旋转的方块(如爬行者头颅与告示牌),通过一个包含此类旋转类型的"贝壳"方块作为实例进行讲解。
+
+*查看常规旋转方式?请前往[此页面](/blocks/rotatable-blocks)!*
+
+
+
+特性概览:
+
+- 可附着于方块顶部,具备16种旋转角度
+- 可附着于方块的侧表面(北、东、南、西)
+- 旋转行为与原版生物头颅一致,且无需依赖方块实体性能消耗!
+
+## 方块模型
+
+要实现更精确的旋转机制,您的方块模型需额外添加若干骨骼节点。
+
+实现地面精确旋转需要4个基础骨骼节点,每个对应不同的Y轴旋转角度:
+
+- `up_0` (Y旋转角度 = 0)
+- `up_22_5` (Y旋转角度 = 22.5)
+- `up_45` (Y旋转角度 = 45)
+- `up_67_5` (Y旋转角度 = 67.5)
+
+**上述角度值采用顺时针方向递增**
+
+这些骨骼除旋转参数外,在结构上通常是互为复制的。
+
+:::tip
+
+建议将所有骨骼的枢轴点设置于 `[0, 0, 0]` ,以确保其围绕方块中心旋转。
+
+:::
+
+此外,还需一个 `side` 骨骼用于侧表面附着时的定位调整。
+
+下方展示的"贝壳"模型结构可供参考:
+
+
+
+
+
+::: code-group
+```json [RP/models/blocks/shell.geo.json]
+{
+ "format_version": "1.12.0",
+ "minecraft:geometry": [
+ {
+ "description": {
+ "identifier": "geometry.shell",
+ "texture_width": 16,
+ "texture_height": 16,
+ "visible_bounds_width": 3,
+ "visible_bounds_height": 2.5,
+ "visible_bounds_offset": [0, 0.75, 0]
+ },
+ "bones": [
+ {
+ "name": "shell",
+ "pivot": [0, 0, 0]
+ },
+ {
+ "name": "up_0",
+ "parent": "shell",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-3, 0, -3],
+ "size": [6, 3, 6],
+ "uv": {
+ "north": { "uv": [0, 6], "uv_size": [6, 3] },
+ "east": { "uv": [0, 6], "uv_size": [6, 3] },
+ "south": { "uv": [0, 6], "uv_size": [6, 3] },
+ "west": { "uv": [0, 6], "uv_size": [6, 3] },
+ "up": { "uv": [6, 6], "uv_size": [-6, -6] },
+ "down": { "uv": [6, 6], "uv_size": [-6, -6] }
+ }
+ }
+ ]
+ },
+ {
+ "name": "up_22_5",
+ "parent": "shell",
+ "pivot": [0, 0, 0],
+ "rotation": [0, 22.5, 0],
+ "cubes": [
+ {
+ "origin": [-3, 0, -3],
+ "size": [6, 3, 6],
+ "uv": {
+ "north": { "uv": [0, 6], "uv_size": [6, 3] },
+ "east": { "uv": [0, 6], "uv_size": [6, 3] },
+ "south": { "uv": [0, 6], "uv_size": [6, 3] },
+ "west": { "uv": [0, 6], "uv_size": [6, 3] },
+ "up": { "uv": [6, 6], "uv_size": [-6, -6] },
+ "down": { "uv": [6, 6], "uv_size": [-6, -6] }
+ }
+ }
+ ]
+ },
+ {
+ "name": "up_45",
+ "parent": "shell",
+ "pivot": [0, 0, 0],
+ "rotation": [0, 45, 0],
+ "cubes": [
+ {
+ "origin": [-3, 0, -3],
+ "size": [6, 3, 6],
+ "uv": {
+ "north": { "uv": [0, 6], "uv_size": [6, 3] },
+ "east": { "uv": [0, 6], "uv_size": [6, 3] },
+ "south": { "uv": [0, 6], "uv_size": [6, 3] },
+ "west": { "uv": [0, 6], "uv_size": [6, 3] },
+ "up": { "uv": [6, 6], "uv_size": [-6, -6] },
+ "down": { "uv": [6, 6], "uv_size": [-6, -6] }
+ }
+ }
+ ]
+ },
+ {
+ "name": "up_67_5",
+ "parent": "shell",
+ "pivot": [0, 0, 0],
+ "rotation": [0, 67.5, 0],
+ "cubes": [
+ {
+ "origin": [-3, 0, -3],
+ "size": [6, 3, 6],
+ "uv": {
+ "north": { "uv": [0, 6], "uv_size": [6, 3] },
+ "east": { "uv": [0, 6], "uv_size": [6, 3] },
+ "south": { "uv": [0, 6], "uv_size": [6, 3] },
+ "west": { "uv": [0, 6], "uv_size": [6, 3] },
+ "up": { "uv": [6, 6], "uv_size": [-6, -6] },
+ "down": { "uv": [6, 6], "uv_size": [-6, -6] }
+ }
+ }
+ ]
+ },
+ {
+ "name": "side",
+ "parent": "shell",
+ "pivot": [0, 5, 8],
+ "rotation": [90, 0, 0],
+ "cubes": [
+ {
+ "origin": [-3, 5, 8],
+ "size": [6, 3, 6],
+ "uv": {
+ "north": { "uv": [0, 6], "uv_size": [6, 3] },
+ "east": { "uv": [0, 6], "uv_size": [6, 3] },
+ "south": { "uv": [0, 6], "uv_size": [6, 3] },
+ "west": { "uv": [0, 6], "uv_size": [6, 3] },
+ "up": { "uv": [6, 6], "uv_size": [-6, -6] },
+ "down": { "uv": [6, 6], "uv_size": [-6, -6] }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+```
+:::
+
+
+
+## 基础方块JSON
+
+下方是待添加高级旋转功能的"贝壳"方块基础定义。
+
+::: code-group
+```json [BP/blocks/shell.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:shell",
+ "menu_category": {
+ "category": "nature"
+ }
+ },
+ "components": {
+ // `up` 表面的碰撞/选择框
+ "minecraft:collision_box": {
+ "origin": [-3, 0, -3],
+ "size": [6, 3, 6]
+ },
+ "minecraft:selection_box": {
+ "origin": [-3, 0, -3],
+ "size": [6, 3, 6]
+ },
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "shell" // 在 `RP/textures/terrain_texture.json` 中定义的短名称
+ }
+ },
+ // 阻止方块附着于 `down` 表面
+ "minecraft:placement_filter": {
+ "conditions": [
+ {
+ "allowed_faces": ["up", "side"]
+ }
+ ]
+ }
+ }
+ }
+}
+```
+:::
+
+## 方块状态
+
+为实现头颅式旋转机制,需为方块添加2种状态参数:
+
+::: code-group
+```json [minecraft:block]
+"description": {
+ ...
+ "traits": {
+ // 方块附着面 - 默认为 `north`
+ "minecraft:placement_position": {
+ "enabled_states": ["minecraft:block_face"]
+ }
+ },
+ "states": {
+ // 当附着于 `up` 表面时的精确旋转参数
+ "wiki:rotation": {
+ "values": { "min": 0, "max": 15 } // 使用更方便的定义整数范围的语法
+ }
+ }
+}
+```
+:::
+
+## 旋转Molang表达式
+
+相较于逐个定义每个 `wiki:rotation` 值的范围,运用[复合Molang表达式](https://learn.microsoft.com/en-us/minecraft/creator/reference/content/molangreference/examples/molangconcepts/molangintroduction#simple-vs-complex-expressions)配合除法运算可高效实现需求!
+
+```c
+// 转换玩家头部Y旋转角度至正值
+t.positive_head_rot = q.head_y_rotation(0) + 360 * (q.head_y_rotation(0) != math.abs(q.head_y_rotation(0)));
+// 计算头部旋转对应的十六分之一圆角(取整)
+t.rotation = math.round(t.positive_head_rot / 22.5);
+
+// 0与16代表重复旋转(0度与360度),故当值为16时返回0
+return t.rotation != 16 ? t.rotation;
+```
+
+合并为单行表达式以便嵌入JSON:
+
+::: code-group
+```json [minecraft:block > components > minecraft:on_player_placing > condition]
+"condition": "t.positive_head_rot = q.head_y_rotation(0) + 360 * (q.head_y_rotation(0) != math.abs(q.head_y_rotation(0))); t.rotation = math.round(t.positive_head_rot / 22.5); return t.rotation != 16 ? t.rotation;"
+```
+:::
+
+## 应用旋转
+
+现在通过Molang表达式动态设定方块属性!
+
+通过事件在玩家放置方块时更新方块属性。此事件上下文可访问 `q.block_face` 与 `q.head_y_rotation`。
+
+在方块JSON中添加以下组件与事件:
+
+::: code-group
+```json [minecraft:block]
+"components": {
+ ...
+ "minecraft:on_player_placing": {
+ "condition": "q.block_face == 1", // 精确旋转仅作用于 `up` 表面
+ "event": "wiki:set_rotation"
+ }
+},
+"events": {
+ "wiki:set_rotation": {
+ "set_block_property": {
+ // 应用之前的Molang表达式设置rotation属性
+ "wiki:rotation": "q.block_face == 1 ? { t.positive_head_rot = q.head_y_rotation(0) + 360 * (q.head_y_rotation(0) != math.abs(q.head_y_rotation(0))); t.block_rotation = math.round(t.positive_head_rot / 22.5); return t.block_rotation != 16 ? t.block_rotation; };"
+ }
+ }
+}
+```
+:::
+
+
+
+接着,使用[置换](/blocks/block-permutations)定义基础朝向旋转,由模型中的精细骨骼进一步细化。
+
+按顺序在方块JSON中添加以下置换条件:
+
+::: code-group
+```json [minecraft:block]
+"permutations": [
+ {
+ "condition": "q.block_property('wiki:rotation') >= 4 || q.block_property('minecraft:block_face') == 'east'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, -90, 0] }
+ }
+ },
+ {
+ "condition": "q.block_property('wiki:rotation') >= 8 || q.block_property('minecraft:block_face') == 'south'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 180, 0] }
+ }
+ },
+ {
+ "condition": "q.block_property('wiki:rotation') >= 12 || q.block_property('minecraft:block_face') == 'west'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 90, 0] }
+ }
+ }
+]
+```
+:::
+
+## 骨骼可见性
+
+并非所有骨骼节点始终可见,因此需利用 `minecraft:geometry` 的骨骼可见性属性精确控制渲染。多个骨骼存在的目的是因为 `minecraft:transformation` 仅支持90度的整数倍旋转,而精确旋转需要22.5度的增量。
+
+在方块组件中加入以下内容:
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:geometry": {
+ "identifier": "geometry.shell", // 第一步创建的模型
+ "bone_visibility": {
+ "up_0": "q.block_property('minecraft:block_face') == 'up' && !math
\ No newline at end of file
diff --git a/docs/wiki/2-方块/3-巧思案例/rotatable-blocks.md b/docs/wiki/2-方块/3-巧思案例/rotatable-blocks.md
new file mode 100644
index 00000000..d867b475
--- /dev/null
+++ b/docs/wiki/2-方块/3-巧思案例/rotatable-blocks.md
@@ -0,0 +1,403 @@
+---
+title: 可旋转方块
+category: 教程
+mentions:
+ - Ultr4Anubis
+ - SmokeyStack
+ - ihategravel2
+ - MedicalJewel105
+ - MajestikButter
+ - QuazChick
+---
+
+# 可旋转方块
+
+
+
+::: tip 格式与最低引擎版本 `1.20.30`
+本教程假设您已掌握方块基础知识,包括[方块状态](/blocks/block-states)与[方块特性](/blocks/block-traits)。
+开始前请先阅读[方块指南](/blocks/blocks-intro)。
+:::
+
+## 旋转类型
+
+- ### [基本方向旋转](#cardinal-direction-rotation)
+
+ - 适用于雕刻南瓜和熔炉
+ - 4个方向 - 'north'(北)、'south'(南)、'east'(东)、'west'(西)
+
+- ### [面向方向旋转](#facing-direction-rotation)
+
+ - 适用于发射器和观测器
+ - 6个方向 - 'down'(下)、'up'(上)、'north'(北)、'south'(南)、'east'(东)、'west'(西)
+
+- ### [方块面附着旋转](#block-face-rotation)
+
+ - 适用于梯子和物品展示框
+ - 6个附着方向 - 'down'(下)、'up'(上)、'north'(北)、'south'(南)、'east'(东)、'west'(西)
+
+- ### [原木/柱体旋转](#log-rotation)
+
+ - 适用于原木和玄武岩
+ - 3个轴对齐方向
+
+- ### [精确旋转](/blocks/precise-rotation)
+ - 适用于头颅、告示牌和旗帜
+ - 16个方向(以22.5度递增)
+ - 4个侧面附着方向
+
+## 基本方向旋转
+
+### 特性
+
+使用`minecraft:placement_direction`方块特性并启用`minecraft:cardinal_direction`状态来设置方块方向。
+
+::: code-group
+```json [minecraft:block]
+"description": {
+ "identifier": "wiki:cardinal_direction_example",
+ // 在此处定义方块特性
+ "traits": {
+ "minecraft:placement_direction": {
+ "enabled_states": ["minecraft:cardinal_direction"], // 可在查询中使用,例如`q.block_state('minecraft:cardinal_direction') == 'north'`
+ "y_rotation_offset": 180 // 朝向玩家
+ }
+ }
+}
+```
+:::
+
+### 置换
+
+通过方块置换实现旋转。每个置换包含`minecraft:transformation`组件,检查`minecraft:cardinal_direction`状态并应用相应旋转。
+
+**下方旋转值假设模型正面朝北**
+
+::: code-group
+```json [minecraft:block]
+"permutations": [
+ // 面向北
+ {
+ "condition": "q.block_state('minecraft:cardinal_direction') == 'north'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 0] }
+ }
+ },
+ // 面向西
+ {
+ "condition": "q.block_state('minecraft:cardinal_direction') == 'west'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 90, 0] }
+ }
+ },
+ // 面向南
+ {
+ "condition": "q.block_state('minecraft:cardinal_direction') == 'south'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 180, 0] }
+ }
+ },
+ // 面向东
+ {
+ "condition": "q.block_state('minecraft:cardinal_direction') == 'east'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, -90, 0] }
+ }
+ }
+]
+```
+:::
+
+## 面向方向旋转
+
+### 特性
+
+使用`minecraft:placement_direction`方块特性并启用`minecraft:facing_direction`状态来设置方块方向。
+
+::: code-group
+```json [minecraft:block]
+"description": {
+ "identifier": "wiki:facing_direction_example",
+ // 在此处定义方块特性
+ "traits": {
+ "minecraft:placement_direction": {
+ "enabled_states": ["minecraft:facing_direction"], // 可在查询中使用,例如`q.block_state('minecraft:facing_direction') == 'north'`
+ }
+ }
+}
+```
+:::
+
+### 置换
+
+通过方块置换实现旋转。每个置换包含`minecraft:transformation`组件,检查`minecraft:facing_direction`状态并应用相应旋转。
+
+**下方旋转值假设模型正面朝北**
+
+::: code-group
+```json [minecraft:block]
+"permutations": [
+ // 朝下
+ {
+ "condition": "q.block_state('minecraft:facing_direction') == 'down'",
+ "components": {
+ "minecraft:transformation": { "rotation": [-90, 0, 0] }
+ }
+ },
+ // 朝上
+ {
+ "condition": "q.block_state('minecraft:facing_direction') == 'up'",
+ "components": {
+ "minecraft:transformation": { "rotation": [90, 0, 0] }
+ }
+ },
+ // 朝北
+ {
+ "condition": "q.block_state('minecraft:facing_direction') == 'north'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 0] }
+ }
+ },
+ // 朝西
+ {
+ "condition": "q.block_state('minecraft:facing_direction') == 'west'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 90, 0] }
+ }
+ },
+ // 朝南
+ {
+ "condition": "q.block_state('minecraft:facing_direction') == 'south'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 180, 0] }
+ }
+ },
+ // 朝东
+ {
+ "condition": "q.block_state('minecraft:facing_direction') == 'east'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, -90, 0] }
+ }
+ }
+]
+```
+:::
+
+## 方块面附着旋转
+
+### 特性
+
+使用`minecraft:placement_position`方块特性并启用`minecraft:block_face`状态来设置方块附着面。
+
+::: code-group
+```json [minecraft:block]
+"description": {
+ "identifier": "wiki:facing_direction_example",
+ // 在此处定义方块特性
+ "traits": {
+ "minecraft:placement_position": {
+ "enabled_states": ["minecraft:block_face"], // 可在查询中使用,例如`q.block_state('minecraft:block_face') == 'north'`
+ }
+ }
+}
+```
+:::
+
+### 置换
+
+通过方块置换实现旋转。每个置换包含`minecraft:transformation`组件,检查`minecraft:block_face`状态并应用相应旋转。
+
+**下方旋转值假设模型正面朝北**
+
+::: code-group
+```json [minecraft:block]
+"permutations": [
+ // 朝下
+ {
+ "condition": "q.block_state('minecraft:block_face') == 'down'",
+ "components": {
+ "minecraft:transformation": { "rotation": [-90, 0, 0] }
+ }
+ },
+ // 朝上
+ {
+ "condition": "q.block_state('minecraft:block_face') == 'up'",
+ "components": {
+ "minecraft:transformation": { "rotation": [90, 0, 0] }
+ }
+ },
+ // 朝北
+ {
+ "condition": "q.block_state('minecraft:block_face') == 'north'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 0] }
+ }
+ },
+ // 朝西
+ {
+ "condition": "q.block_state('minecraft:block_face') == 'west'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 90, 0] }
+ }
+ },
+ // 朝南
+ {
+ "condition": "q.block_state('minecraft:block_face') == 'south'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 180, 0] }
+ }
+ },
+ // 朝东
+ {
+ "condition": "q.block_state('minecraft:block_face') == 'east'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, -90, 0] }
+ }
+ }
+]
+```
+:::
+
+## 原木旋转
+
+实现与原版原木相同的旋转方式
+
+::: warning 实验性功能
+需要启用`假日创作者功能`来触发事件
+:::
+
+### 方块状态
+
+::: code-group
+```json [minecraft:block > description]
+"states": {
+ "wiki:axis": [0, 1, 2]
+}
+```
+:::
+
+### 方块事件与触发
+
+使用Molang表达式通过查询方块附着面来确定坐标轴方向(转换为0、1或2)
+
+::: code-group
+```json [minecraft:block > events]
+"wiki:set_axis": {
+ "set_block_state": {
+ "wiki:axis": "数学运算.floor(q.block_face / 2)"
+ }
+}
+```
+:::
+
+使用`minecraft:on_player_placing`触发器组件调用事件
+
+::: code-group
+```json [minecraft:block > components]
+"minecraft:on_player_placing": {
+ "event": "wiki:set_axis"
+}
+```
+:::
+
+### 置换
+
+::: code-group
+```json [minecraft:block]
+"permutations": [
+ {
+ "condition": "q.block_state('wiki:axis') == 0",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 1",
+ "components": {
+ "minecraft:transformation": { "rotation": [90, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 2",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 90] }
+ }
+ }
+]
+```
+:::
+
+### 原木旋转示例
+
+::: warning 实验性功能
+本示例需要启用`假日创作者功能`以使用`minecraft:unit_cube`
+:::
+
+
+
+::: code-group
+```json [BP/blocks/custom_log.json]
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_log",
+ "states": {
+ "wiki:axis": [0, 1, 2]
+ }
+ },
+ "components": {
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 1.5
+ },
+ "minecraft:destructible_by_explosion": {
+ "explosion_resistance": 15
+ },
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "log_side"
+ },
+ "end": {
+ "texture": "log_top"
+ },
+ "up": "end",
+ "down": "end"
+ },
+ "minecraft:unit_cube": {},
+ "minecraft:on_player_placing": {
+ "event": "wiki:set_axis"
+ }
+ },
+ "events": {
+ "wiki:set_axis": {
+ "set_block_state": {
+ "wiki:axis": "Math.floor(q.block_face / 2)"
+ }
+ }
+ },
+ "permutations": [
+ {
+ "condition": "q.block_state('wiki:axis') == 0",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 1",
+ "components": {
+ "minecraft:transformation": { "rotation": [90, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 2",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 90] }
+ }
+ }
+ ]
+ }
+}
+```
+:::
+
+
\ No newline at end of file
diff --git a/docs/wiki/2-方块/4-原版再创作/custom-crops.md b/docs/wiki/2-方块/4-原版再创作/custom-crops.md
new file mode 100644
index 00000000..de8b1dea
--- /dev/null
+++ b/docs/wiki/2-方块/4-原版再创作/custom-crops.md
@@ -0,0 +1,878 @@
+---
+title: Custom Crops
+category: Vanilla Re-Creations
+tags:
+ - experimental
+ - easy
+mentions:
+ - Ivyman1992
+ - Provedule
+ - ThomasOrs
+ - QuazChick
+---
+
+:::tip FORMAT & MIN ENGINE VERSION `1.20.30`
+This tutorial assumes a good understanding of blocks.
+Check out the [blocks guide](/blocks/blocks-intro), [block states](/blocks/block-states) and [block permutations](/blocks/block-permutations) before starting.
+:::
+
+:::warning EXPERIMENTAL
+Requires `Holiday Creator Features` to trigger block events and for use of block tag Molang queries and the `minecraft:unit_cube` block component.
+:::
+
+Designing custom crops may appear daunting at first, but it's a straightforward process once you understand the initial steps. Our tutorial/template will guide you through the process of creating a unique crop block as well as other blocks like farmland and dirt.
+
+## Custom Dirt
+
+Below is an example of a custom dirt block. This custom dirt can be transformed into `wiki:custom_farmland` by using a hoe or a Dirt Path by using a shovel.
+
+:::tip
+Add the `minecraft:is_hoe` or `minecraft:is_shovel` item tags to any custom tools to make them work with our custom dirt!
+:::
+
+
+
+BP/blocks/custom_dirt.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_dirt",
+ "menu_category": {
+ "category": "nature"
+ }
+ },
+ "components": {
+ "tag:dirt": {},
+ "tag:fertilize_area": {},
+ "minecraft:unit_cube": {},
+ "minecraft:map_color": "#6C5746",
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 0.6
+ },
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_dirt"
+ }
+ },
+ // Convert to farmland or dirt path when interacted with
+ "minecraft:on_interact": {
+ "event": "wiki:transform",
+ "condition": "q.block_face && q.equipped_item_any_tag('slot.weapon.mainhand', 'minecraft:is_hoe', 'minecraft:is_shovel')"
+ }
+ },
+ "events": {
+ "wiki:transform": {
+ "sequence": [
+ {
+ "damage": {
+ "type": "durability",
+ "amount": 1,
+ "target": "item"
+ }
+ },
+ // Transform into farmland (hoe is used)
+ {
+ "condition": "q.equipped_item_any_tag('slot.weapon.mainhand', 'minecraft:is_hoe')",
+ // Play use sound
+ "run_command": {
+ "command": "playsound use.gravel @a ~~~ 1 0.8"
+ },
+ // Replace this block with "wiki:custom_farmland"
+ "set_block": {
+ "block_type": "wiki:custom_farmland"
+ }
+ },
+ // Tranform into path (shovel is used)
+ {
+ "condition": "q.equipped_item_any_tag('slot.weapon.mainhand', 'minecraft:is_shovel')",
+ // Play use sound
+ "run_command": {
+ "command": "playsound use.grass @a ~~~ 1 0.8"
+ },
+ // Replace this block with Dirt Path
+ "set_block": {
+ "block_type": "minecraft:grass_path"
+ }
+ }
+ ]
+ }
+ }
+ }
+}
+```
+
+
+
+## Custom Farmland
+
+Farmland is a tricky block… it reacts to water (changing it's texture when water is nearby), dries out and turns back into our dirt block randomly if water does not reach it in time, and supports crops to be placed on top.
+
+Nevertheless, it's just special dirt. Let's walk through how it works:
+
+- The first thing that you will want to do is make a basic block, just like our dirt.
+- Create a "farmland" texture for the top of the block (both wet and dry) and then assign it a dirt texture to the sides. You will also need to make a custom block geometry that is 16×15×16 pixels in height, one row smaller then a normal block.
+- After that we can add our moisture logic to our block to emulate vanilla functionality.
+
+Download Custom Farmland Geometry
+
+### Farmland Moisture
+
+Vanilla farmland has 8 moisture stages:
+
+- `0` - Shows a dry top texture and decays into dirt on random tick if not near water.
+- `1-7` - Shows a wet top texture and will gradually count down to `0` after each random tick if not near water.
+- If the farmland is near water, the moisture value is set to `7` on random tick.
+
+Add a moisture state to your block to get started with our custom logic.
+
+minecraft:block > description
+
+```json
+"states": {
+ "wiki:moisture": {
+ "values": { "min": 0, "max": 7 }
+ }
+}
+```
+
+The following permutation sets top texture to be wet when the `wiki:moisture` value is not `0`.
+
+minecraft:block
+
+```json
+"permutations": [
+ {
+ "condition": "q.block_state('wiki:moisture')",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_dirt",
+ "render_method": "alpha_test"
+ },
+ "up": {
+ "texture": "custom_farmland_wet",
+ "render_method": "alpha_test"
+ }
+ }
+ }
+ }
+]
+```
+
+### Hydration
+
+Each random tick, our farmland should trigger an event to determine the block's current moisture state.
+
+minecraft:block
+
+```json
+"components": {
+ ...
+ "minecraft:random_ticking": {
+ "on_tick": {
+ "event": "wiki:set_moisture"
+ }
+ }
+},
+"events": {
+ "wiki:set_moisture": {
+ // If near water, sets `wiki:moisture` to `7`, else takes 1 away from current value to count down to `0` (dry).
+ "set_block_state": {
+ "wiki:moisture": "q.block_neighbor_has_any_tag(4,0,0,'water') || q.block_neighbor_has_any_tag(3,0,0,'water') || q.block_neighbor_has_any_tag(2,0,0,'water') || q.block_neighbor_has_any_tag(1,0,0,'water') || q.block_neighbor_has_any_tag(-1,0,0,'water') || q.block_neighbor_has_any_tag(-2,0,0,'water') || q.block_neighbor_has_any_tag(-3,0,0,'water') || q.block_neighbor_has_any_tag(-4,0,0,'water') || q.block_neighbor_has_any_tag(4,0,-4,'water') || q.block_neighbor_has_any_tag(3,0,-4,'water') || q.block_neighbor_has_any_tag(2,0,-4,'water') || q.block_neighbor_has_any_tag(1,0,-4,'water') || q.block_neighbor_has_any_tag(0,0,-4,'water') || q.block_neighbor_has_any_tag(-1,0,-4,'water') || q.block_neighbor_has_any_tag(-2,0,-4,'water') || q.block_neighbor_has_any_tag(-3,0,-4,'water') || q.block_neighbor_has_any_tag(-4,0,-4,'water') || q.block_neighbor_has_any_tag(4,0,-3,'water') || q.block_neighbor_has_any_tag(3,0,-3,'water') || q.block_neighbor_has_any_tag(2,0,-3,'water') || q.block_neighbor_has_any_tag(1,0,-3,'water') || q.block_neighbor_has_any_tag(0,0,-3,'water') || q.block_neighbor_has_any_tag(-1,0,-3,'water') || q.block_neighbor_has_any_tag(-2,0,-3,'water') || q.block_neighbor_has_any_tag(-3,0,-3,'water') || q.block_neighbor_has_any_tag(-4,0,-3,'water') || q.block_neighbor_has_any_tag(4,0,-2,'water') || q.block_neighbor_has_any_tag(3,0,-2,'water') || q.block_neighbor_has_any_tag(2,0,-2,'water') || q.block_neighbor_has_any_tag(1,0,-2,'water') || q.block_neighbor_has_any_tag(0,0,-2,'water') || q.block_neighbor_has_any_tag(-1,0,-2,'water') || q.block_neighbor_has_any_tag(-2,0,-2,'water') || q.block_neighbor_has_any_tag(-3,0,-2,'water') || q.block_neighbor_has_any_tag(-4,0,-2,'water') || q.block_neighbor_has_any_tag(4,0,-1,'water') || q.block_neighbor_has_any_tag(3,0,-1,'water') || q.block_neighbor_has_any_tag(2,0,-1,'water') || q.block_neighbor_has_any_tag(1,0,-1,'water') || q.block_neighbor_has_any_tag(0,0,-1,'water') || q.block_neighbor_has_any_tag(-1,0,-1,'water') || q.block_neighbor_has_any_tag(-2,0,-1,'water') || q.block_neighbor_has_any_tag(-3,0,-1,'water') || q.block_neighbor_has_any_tag(-4,0,-1,'water') || q.block_neighbor_has_any_tag(4,0,1,'water') || q.block_neighbor_has_any_tag(3,0,1,'water') || q.block_neighbor_has_any_tag(2,0,1,'water') || q.block_neighbor_has_any_tag(1,0,1,'water') || q.block_neighbor_has_any_tag(0,0,1,'water') || q.block_neighbor_has_any_tag(-1,0,1,'water') || q.block_neighbor_has_any_tag(-2,0,1,'water') || q.block_neighbor_has_any_tag(-3,0,1,'water') || q.block_neighbor_has_any_tag(-4,0,1,'water') || q.block_neighbor_has_any_tag(4,0,2,'water') || q.block_neighbor_has_any_tag(3,0,2,'water') || q.block_neighbor_has_any_tag(2,0,2,'water') || q.block_neighbor_has_any_tag(1,0,2,'water') || q.block_neighbor_has_any_tag(0,0,2,'water') || q.block_neighbor_has_any_tag(-1,0,2,'water') || q.block_neighbor_has_any_tag(-2,0,2,'water') || q.block_neighbor_has_any_tag(-3,0,2,'water') || q.block_neighbor_has_any_tag(-4,0,2,'water') || q.block_neighbor_has_any_tag(4,0,3,'water') || q.block_neighbor_has_any_tag(3,0,3,'water') || q.block_neighbor_has_any_tag(2,0,3,'water') || q.block_neighbor_has_any_tag(1,0,3,'water') || q.block_neighbor_has_any_tag(0,0,3,'water') || q.block_neighbor_has_any_tag(-1,0,3,'water') || q.block_neighbor_has_any_tag(-2,0,3,'water') || q.block_neighbor_has_any_tag(-3,0,3,'water') || q.block_neighbor_has_any_tag(-4,0,3,'water') || q.block_neighbor_has_any_tag(4,0,4,'water') || q.block_neighbor_has_any_tag(3,0,4,'water') || q.block_neighbor_has_any_tag(2,0,4,'water') || q.block_neighbor_has_any_tag(1,0,4,'water') || q.block_neighbor_has_any_tag(0,0,4,'water') || q.block_neighbor_has_any_tag(-1,0,4,'water') || q.block_neighbor_has_any_tag(-2,0,4,'water') || q.block_neighbor_has_any_tag(-3,0,4,'water') || q.block_neighbor_has_any_tag(-4,0,4,'water') || q.block_neighbor_has_any_tag(4,1,0,'water') || q.block_neighbor_has_any_tag(3,1,0,'water') || q.block_neighbor_has_any_tag(2,1,0,'water') || q.block_neighbor_has_any_tag(1,1,0,'water') || q.block_neighbor_has_any_tag(-1,1,0,'water') || q.block_neighbor_has_any_tag(-2,1,0,'water') || q.block_neighbor_has_any_tag(-3,1,0,'water') || q.block_neighbor_has_any_tag(-4,1,0,'water') || q.block_neighbor_has_any_tag(4,1,-4,'water') || q.block_neighbor_has_any_tag(3,1,-4,'water') || q.block_neighbor_has_any_tag(2,1,-4,'water') || q.block_neighbor_has_any_tag(1,1,-4,'water') || q.block_neighbor_has_any_tag(0,1,-4,'water') || q.block_neighbor_has_any_tag(-1,1,-4,'water') || q.block_neighbor_has_any_tag(-2,1,-4,'water') || q.block_neighbor_has_any_tag(-3,1,-4,'water') || q.block_neighbor_has_any_tag(-4,1,-4,'water') || q.block_neighbor_has_any_tag(4,1,-3,'water') || q.block_neighbor_has_any_tag(3,1,-3,'water') || q.block_neighbor_has_any_tag(2,1,-3,'water') || q.block_neighbor_has_any_tag(1,1,-3,'water') || q.block_neighbor_has_any_tag(0,1,-3,'water') || q.block_neighbor_has_any_tag(-1,1,-3,'water') || q.block_neighbor_has_any_tag(-2,1,-3,'water') || q.block_neighbor_has_any_tag(-3,1,-3,'water') || q.block_neighbor_has_any_tag(-4,1,-3,'water') || q.block_neighbor_has_any_tag(4,1,-2,'water') || q.block_neighbor_has_any_tag(3,1,-2,'water') || q.block_neighbor_has_any_tag(2,1,-2,'water') || q.block_neighbor_has_any_tag(1,1,-2,'water') || q.block_neighbor_has_any_tag(0,1,-2,'water') || q.block_neighbor_has_any_tag(-1,1,-2,'water') || q.block_neighbor_has_any_tag(-2,1,-2,'water') || q.block_neighbor_has_any_tag(-3,1,-2,'water') || q.block_neighbor_has_any_tag(-4,1,-2,'water') || q.block_neighbor_has_any_tag(4,1,-1,'water') || q.block_neighbor_has_any_tag(3,1,-1,'water') || q.block_neighbor_has_any_tag(2,1,-1,'water') || q.block_neighbor_has_any_tag(1,1,-1,'water') || q.block_neighbor_has_any_tag(0,1,-1,'water') || q.block_neighbor_has_any_tag(-1,1,-1,'water') || q.block_neighbor_has_any_tag(-2,1,-1,'water') || q.block_neighbor_has_any_tag(-3,1,-1,'water') || q.block_neighbor_has_any_tag(-4,1,-1,'water') || q.block_neighbor_has_any_tag(4,1,1,'water') || q.block_neighbor_has_any_tag(3,1,1,'water') || q.block_neighbor_has_any_tag(2,1,1,'water') || q.block_neighbor_has_any_tag(1,1,1,'water') || q.block_neighbor_has_any_tag(0,1,1,'water') || q.block_neighbor_has_any_tag(-1,1,1,'water') || q.block_neighbor_has_any_tag(-2,1,1,'water') || q.block_neighbor_has_any_tag(-3,1,1,'water') || q.block_neighbor_has_any_tag(-4,1,1,'water') || q.block_neighbor_has_any_tag(4,1,2,'water') || q.block_neighbor_has_any_tag(3,1,2,'water') || q.block_neighbor_has_any_tag(2,1,2,'water') || q.block_neighbor_has_any_tag(1,1,2,'water') || q.block_neighbor_has_any_tag(0,1,2,'water') || q.block_neighbor_has_any_tag(-1,1,2,'water') || q.block_neighbor_has_any_tag(-2,1,2,'water') || q.block_neighbor_has_any_tag(-3,1,2,'water') || q.block_neighbor_has_any_tag(-4,1,2,'water') || q.block_neighbor_has_any_tag(4,1,3,'water') || q.block_neighbor_has_any_tag(3,1,3,'water') || q.block_neighbor_has_any_tag(2,1,3,'water') || q.block_neighbor_has_any_tag(1,1,3,'water') || q.block_neighbor_has_any_tag(0,1,3,'water') || q.block_neighbor_has_any_tag(-1,1,3,'water') || q.block_neighbor_has_any_tag(-2,1,3,'water') || q.block_neighbor_has_any_tag(-3,1,3,'water') || q.block_neighbor_has_any_tag(-4,1,3,'water') || q.block_neighbor_has_any_tag(4,1,4,'water') || q.block_neighbor_has_any_tag(3,1,4,'water') || q.block_neighbor_has_any_tag(2,1,4,'water') || q.block_neighbor_has_any_tag(1,1,4,'water') || q.block_neighbor_has_any_tag(0,1,4,'water') || q.block_neighbor_has_any_tag(-1,1,4,'water') || q.block_neighbor_has_any_tag(-2,1,4,'water') || q.block_neighbor_has_any_tag(-3,1,4,'water') || q.block_neighbor_has_any_tag(-4,1,4,'water') ? 7 : q.block_state('wiki:moisture') ? q.block_state('wiki:moisture') - 1"
+ },
+ // Triggers the event which decays farmland into dirt if dry.
+ "trigger": "wiki:try_decay"
+ },
+ "wiki:try_decay": {
+ "sequence": [
+ {
+ "condition": "!q.block_state('wiki:moisture')",
+ "trigger": "wiki:decay"
+ }
+ ]
+ },
+ // Tranform block into `wiki:custom_dirt` when dry or trampled.
+ "wiki:decay": {
+ "set_block": {
+ "block_type": "wiki:custom_dirt"
+ }
+ }
+}
+```
+
+This is the tricky part of our farmland block, water detection. In vanilla Minecraft, water can wet farmland in a giant 9x9 square if it's smack dab in the middle of all the blocks. We are replicating that behavior here for each coordinate relative to our farmland on the same Y level, or 1 above. For example, `q.block_neighbor_has_any_tag(-3,0,4,'water')` is saying that if our farmland block has a block with the `water` tag 3 blocks east and 4 blocks south, then the `wiki:moisture` state will be `7`. The `||` stands for 'or', which means that we can have a water block at any of these relative coordinates.
+
+### Trampling
+
+If our custom farmland is fallen onto, it should have a chance to decay.
+
+minecraft:block
+
+```json
+"components": {
+ ...
+ "minecraft:on_fall_on": {
+ "min_fall_distance": 1,
+ "event": "wiki:trample"
+ }
+},
+"events": {
+ ...
+ // 50% chance for farmland to decay if trampled.
+ "wiki:trample": {
+ "randomize": [
+ {
+ "weight": 1
+ },
+ {
+ "weight": 1,
+ "trigger": "wiki:decay"
+ }
+ ]
+ }
+}
+```
+
+Here is the full `wiki:custom_farmland` json for reference.
+
+
+
+BP/blocks/custom_farmland.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_farmland",
+ "menu_category": {
+ "category": "nature"
+ },
+ "states": {
+ "wiki:moisture": {
+ "values": { "min": 0, "max": 7 }
+ }
+ }
+ },
+ "components": {
+ "minecraft:map_color": "#0A5E20",
+ "minecraft:geometry": "geometry.farmland",
+ "minecraft:light_dampening": 0,
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 0.6
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 15, 16]
+ },
+ "minecraft:collision_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 15, 16]
+ },
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_dirt",
+ "render_method": "alpha_test"
+ },
+ "up": {
+ "texture": "custom_farmland",
+ "render_method": "alpha_test"
+ }
+ },
+ "minecraft:random_ticking": {
+ "on_tick": {
+ "event": "wiki:set_moisture"
+ }
+ },
+ "minecraft:on_fall_on": {
+ "min_fall_distance": 1,
+ "event": "wiki:trample"
+ }
+ },
+ "events": {
+ "wiki:set_moisture": {
+ "set_block_state": {
+ "wiki:moisture": "q.block_neighbor_has_any_tag(4,0,0,'water') || q.block_neighbor_has_any_tag(3,0,0,'water') || q.block_neighbor_has_any_tag(2,0,0,'water') || q.block_neighbor_has_any_tag(1,0,0,'water') || q.block_neighbor_has_any_tag(-1,0,0,'water') || q.block_neighbor_has_any_tag(-2,0,0,'water') || q.block_neighbor_has_any_tag(-3,0,0,'water') || q.block_neighbor_has_any_tag(-4,0,0,'water') || q.block_neighbor_has_any_tag(4,0,-4,'water') || q.block_neighbor_has_any_tag(3,0,-4,'water') || q.block_neighbor_has_any_tag(2,0,-4,'water') || q.block_neighbor_has_any_tag(1,0,-4,'water') || q.block_neighbor_has_any_tag(0,0,-4,'water') || q.block_neighbor_has_any_tag(-1,0,-4,'water') || q.block_neighbor_has_any_tag(-2,0,-4,'water') || q.block_neighbor_has_any_tag(-3,0,-4,'water') || q.block_neighbor_has_any_tag(-4,0,-4,'water') || q.block_neighbor_has_any_tag(4,0,-3,'water') || q.block_neighbor_has_any_tag(3,0,-3,'water') || q.block_neighbor_has_any_tag(2,0,-3,'water') || q.block_neighbor_has_any_tag(1,0,-3,'water') || q.block_neighbor_has_any_tag(0,0,-3,'water') || q.block_neighbor_has_any_tag(-1,0,-3,'water') || q.block_neighbor_has_any_tag(-2,0,-3,'water') || q.block_neighbor_has_any_tag(-3,0,-3,'water') || q.block_neighbor_has_any_tag(-4,0,-3,'water') || q.block_neighbor_has_any_tag(4,0,-2,'water') || q.block_neighbor_has_any_tag(3,0,-2,'water') || q.block_neighbor_has_any_tag(2,0,-2,'water') || q.block_neighbor_has_any_tag(1,0,-2,'water') || q.block_neighbor_has_any_tag(0,0,-2,'water') || q.block_neighbor_has_any_tag(-1,0,-2,'water') || q.block_neighbor_has_any_tag(-2,0,-2,'water') || q.block_neighbor_has_any_tag(-3,0,-2,'water') || q.block_neighbor_has_any_tag(-4,0,-2,'water') || q.block_neighbor_has_any_tag(4,0,-1,'water') || q.block_neighbor_has_any_tag(3,0,-1,'water') || q.block_neighbor_has_any_tag(2,0,-1,'water') || q.block_neighbor_has_any_tag(1,0,-1,'water') || q.block_neighbor_has_any_tag(0,0,-1,'water') || q.block_neighbor_has_any_tag(-1,0,-1,'water') || q.block_neighbor_has_any_tag(-2,0,-1,'water') || q.block_neighbor_has_any_tag(-3,0,-1,'water') || q.block_neighbor_has_any_tag(-4,0,-1,'water') || q.block_neighbor_has_any_tag(4,0,1,'water') || q.block_neighbor_has_any_tag(3,0,1,'water') || q.block_neighbor_has_any_tag(2,0,1,'water') || q.block_neighbor_has_any_tag(1,0,1,'water') || q.block_neighbor_has_any_tag(0,0,1,'water') || q.block_neighbor_has_any_tag(-1,0,1,'water') || q.block_neighbor_has_any_tag(-2,0,1,'water') || q.block_neighbor_has_any_tag(-3,0,1,'water') || q.block_neighbor_has_any_tag(-4,0,1,'water') || q.block_neighbor_has_any_tag(4,0,2,'water') || q.block_neighbor_has_any_tag(3,0,2,'water') || q.block_neighbor_has_any_tag(2,0,2,'water') || q.block_neighbor_has_any_tag(1,0,2,'water') || q.block_neighbor_has_any_tag(0,0,2,'water') || q.block_neighbor_has_any_tag(-1,0,2,'water') || q.block_neighbor_has_any_tag(-2,0,2,'water') || q.block_neighbor_has_any_tag(-3,0,2,'water') || q.block_neighbor_has_any_tag(-4,0,2,'water') || q.block_neighbor_has_any_tag(4,0,3,'water') || q.block_neighbor_has_any_tag(3,0,3,'water') || q.block_neighbor_has_any_tag(2,0,3,'water') || q.block_neighbor_has_any_tag(1,0,3,'water') || q.block_neighbor_has_any_tag(0,0,3,'water') || q.block_neighbor_has_any_tag(-1,0,3,'water') || q.block_neighbor_has_any_tag(-2,0,3,'water') || q.block_neighbor_has_any_tag(-3,0,3,'water') || q.block_neighbor_has_any_tag(-4,0,3,'water') || q.block_neighbor_has_any_tag(4,0,4,'water') || q.block_neighbor_has_any_tag(3,0,4,'water') || q.block_neighbor_has_any_tag(2,0,4,'water') || q.block_neighbor_has_any_tag(1,0,4,'water') || q.block_neighbor_has_any_tag(0,0,4,'water') || q.block_neighbor_has_any_tag(-1,0,4,'water') || q.block_neighbor_has_any_tag(-2,0,4,'water') || q.block_neighbor_has_any_tag(-3,0,4,'water') || q.block_neighbor_has_any_tag(-4,0,4,'water') || q.block_neighbor_has_any_tag(4,1,0,'water') || q.block_neighbor_has_any_tag(3,1,0,'water') || q.block_neighbor_has_any_tag(2,1,0,'water') || q.block_neighbor_has_any_tag(1,1,0,'water') || q.block_neighbor_has_any_tag(-1,1,0,'water') || q.block_neighbor_has_any_tag(-2,1,0,'water') || q.block_neighbor_has_any_tag(-3,1,0,'water') || q.block_neighbor_has_any_tag(-4,1,0,'water') || q.block_neighbor_has_any_tag(4,1,-4,'water') || q.block_neighbor_has_any_tag(3,1,-4,'water') || q.block_neighbor_has_any_tag(2,1,-4,'water') || q.block_neighbor_has_any_tag(1,1,-4,'water') || q.block_neighbor_has_any_tag(0,1,-4,'water') || q.block_neighbor_has_any_tag(-1,1,-4,'water') || q.block_neighbor_has_any_tag(-2,1,-4,'water') || q.block_neighbor_has_any_tag(-3,1,-4,'water') || q.block_neighbor_has_any_tag(-4,1,-4,'water') || q.block_neighbor_has_any_tag(4,1,-3,'water') || q.block_neighbor_has_any_tag(3,1,-3,'water') || q.block_neighbor_has_any_tag(2,1,-3,'water') || q.block_neighbor_has_any_tag(1,1,-3,'water') || q.block_neighbor_has_any_tag(0,1,-3,'water') || q.block_neighbor_has_any_tag(-1,1,-3,'water') || q.block_neighbor_has_any_tag(-2,1,-3,'water') || q.block_neighbor_has_any_tag(-3,1,-3,'water') || q.block_neighbor_has_any_tag(-4,1,-3,'water') || q.block_neighbor_has_any_tag(4,1,-2,'water') || q.block_neighbor_has_any_tag(3,1,-2,'water') || q.block_neighbor_has_any_tag(2,1,-2,'water') || q.block_neighbor_has_any_tag(1,1,-2,'water') || q.block_neighbor_has_any_tag(0,1,-2,'water') || q.block_neighbor_has_any_tag(-1,1,-2,'water') || q.block_neighbor_has_any_tag(-2,1,-2,'water') || q.block_neighbor_has_any_tag(-3,1,-2,'water') || q.block_neighbor_has_any_tag(-4,1,-2,'water') || q.block_neighbor_has_any_tag(4,1,-1,'water') || q.block_neighbor_has_any_tag(3,1,-1,'water') || q.block_neighbor_has_any_tag(2,1,-1,'water') || q.block_neighbor_has_any_tag(1,1,-1,'water') || q.block_neighbor_has_any_tag(0,1,-1,'water') || q.block_neighbor_has_any_tag(-1,1,-1,'water') || q.block_neighbor_has_any_tag(-2,1,-1,'water') || q.block_neighbor_has_any_tag(-3,1,-1,'water') || q.block_neighbor_has_any_tag(-4,1,-1,'water') || q.block_neighbor_has_any_tag(4,1,1,'water') || q.block_neighbor_has_any_tag(3,1,1,'water') || q.block_neighbor_has_any_tag(2,1,1,'water') || q.block_neighbor_has_any_tag(1,1,1,'water') || q.block_neighbor_has_any_tag(0,1,1,'water') || q.block_neighbor_has_any_tag(-1,1,1,'water') || q.block_neighbor_has_any_tag(-2,1,1,'water') || q.block_neighbor_has_any_tag(-3,1,1,'water') || q.block_neighbor_has_any_tag(-4,1,1,'water') || q.block_neighbor_has_any_tag(4,1,2,'water') || q.block_neighbor_has_any_tag(3,1,2,'water') || q.block_neighbor_has_any_tag(2,1,2,'water') || q.block_neighbor_has_any_tag(1,1,2,'water') || q.block_neighbor_has_any_tag(0,1,2,'water') || q.block_neighbor_has_any_tag(-1,1,2,'water') || q.block_neighbor_has_any_tag(-2,1,2,'water') || q.block_neighbor_has_any_tag(-3,1,2,'water') || q.block_neighbor_has_any_tag(-4,1,2,'water') || q.block_neighbor_has_any_tag(4,1,3,'water') || q.block_neighbor_has_any_tag(3,1,3,'water') || q.block_neighbor_has_any_tag(2,1,3,'water') || q.block_neighbor_has_any_tag(1,1,3,'water') || q.block_neighbor_has_any_tag(0,1,3,'water') || q.block_neighbor_has_any_tag(-1,1,3,'water') || q.block_neighbor_has_any_tag(-2,1,3,'water') || q.block_neighbor_has_any_tag(-3,1,3,'water') || q.block_neighbor_has_any_tag(-4,1,3,'water') || q.block_neighbor_has_any_tag(4,1,4,'water') || q.block_neighbor_has_any_tag(3,1,4,'water') || q.block_neighbor_has_any_tag(2,1,4,'water') || q.block_neighbor_has_any_tag(1,1,4,'water') || q.block_neighbor_has_any_tag(0,1,4,'water') || q.block_neighbor_has_any_tag(-1,1,4,'water') || q.block_neighbor_has_any_tag(-2,1,4,'water') || q.block_neighbor_has_any_tag(-3,1,4,'water') || q.block_neighbor_has_any_tag(-4,1,4,'water') ? 7 : q.block_state('wiki:moisture') ? q.block_state('wiki:moisture') - 1"
+ },
+ "trigger": "wiki:try_decay"
+ },
+ "wiki:trample": {
+ "randomize": [
+ {
+ "weight": 1
+ },
+ {
+ "weight": 1,
+ "trigger": "wiki:decay"
+ }
+ ]
+ },
+ "wiki:try_decay": {
+ "sequence": [
+ {
+ "condition": "!q.block_state('wiki:moisture')",
+ "trigger": "wiki:decay"
+ }
+ ]
+ },
+ "wiki:decay": {
+ "set_block": {
+ "block_type": "wiki:custom_dirt"
+ }
+ }
+ },
+ "permutations": [
+ {
+ "condition": "q.block_state('wiki:moisture')",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_dirt",
+ "render_method": "alpha_test"
+ },
+ "up": {
+ "texture": "custom_farmland_wet",
+ "render_method": "alpha_test"
+ }
+ }
+ }
+ }
+ ]
+ }
+}
+```
+
+
+
+## Custom Crop
+
+If you aren't a fan of carrots - that's fine. You can make your own (far superior) crop!
+
+Making crops is not as difficult as you may think, it just takes a little practice and forethought in coding a specific series of events.
+
+To start with, we want our crops to have 4 stages of growth, so the crop should include a state with four values.
+
+BP/blocks/custom_crop.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_crop",
+ "menu_category": {
+ "category": "none" // Hide from creative inventory - seeds should be used to place
+ },
+ "states": {
+ "wiki:growth_stage": [0, 1, 2, 3]
+ }
+ }
+ }
+}
+```
+
+### Model
+
+If you look at crops like carrots and potatoes in-game, you will see that they are made up of four planes and are situated 4 pixels from each edge as shown in the screenshot below.
+
+It is noteworthy to mention that each plane sits 1 pixel down, unlike traditional blocks. If you forgot to lower the planes down by one, then the crops will appear to grow one pixel higher then the top of our farmland which was lowered in our previous tutorial.
+
+By lowering the position down a pixel, it will sit above our custom farmland perfectly making everything right in our blocky world. Here is a template model for the crop.
+
+
+
+Download Custom Crop Geometry
+
+### Components
+
+Below are the components our custom crop will use.
+
+**NOTE:** This is not a perfect replica of vanilla crops as lava will not destroy the crops and water destruction behaves differently.
+
+minecraft:block
+
+```json
+"components": {
+ "minecraft:flammable": true,
+ "minecraft:collision_box": false,
+ "minecraft:geometry": "geometry.crop",
+ "minecraft:light_dampening": 0,
+ // Break if not placed on farmland
+ "minecraft:placement_filter": {
+ "conditions": [
+ {
+ "allowed_faces": ["up"],
+ "block_filter": ["wiki:custom_farmland"]
+ }
+ ]
+ },
+ // Loot table for when the crop is not fully grown. Vanilla crops only drop seeds when young.
+ "minecraft:loot": "loot_tables/blocks/custom_crop_young.json",
+ // Trigger growth every random tick
+ "minecraft:random_ticking": {
+ "on_tick": {
+ "event": "wiki:grow",
+ "condition": "q.block_state('wiki:growth_stage') < 3"
+ }
+ },
+ // Break crop when in contact with water
+ "minecraft:queued_ticking": {
+ // Check every 10 ticks
+ "interval_range": [10, 10],
+ "looping": true,
+ "on_tick": {
+ "event": "wiki:destroy",
+ "condition": "q.block_neighbor_has_any_tag(1,0,0,'water') || q.block_neighbor_has_any_tag(-1,0,0,'water') || q.block_neighbor_has_any_tag(0,0,1,'water') || q.block_neighbor_has_any_tag(0,0,-1,'water') || q.block_neighbor_has_any_tag(0,1,0,'water')"
+ }
+ },
+ // Trigger growth with bone meal
+ "minecraft:on_interact": {
+ "event": "wiki:fertilize",
+ "condition": "q.is_item_name_any('slot.weapon.mainhand', 'minecraft:bone_meal') && q.block_state('wiki:growth_stage') < 3"
+ }
+}
+```
+
+### Events
+
+The events below do three important functions to make your crop work:
+
+- The first event is used to destroy the block if it's in contact with water.
+- The second event adds a stage to the crop growth when activated. It adds one to `wiki:growth_stage` if less than 3.
+- The final event is for bonemeal support, adding a random value to `wiki:growth_stage`.
+
+minecraft:block
+
+```json
+"events": {
+ "wiki:destroy": {
+ "run_command": {
+ "command": "setblock ~~~ air destroy"
+ }
+ },
+ // Adds to "wiki:growth_stage" (grows crop)
+ "wiki:grow": {
+ "set_block_state": {
+ "wiki:growth_stage": "q.block_state('wiki:growth_stage') + 1"
+ }
+ },
+ // Bonemeal the crop (grow crop a random amount)
+ "wiki:fertilize": {
+ // Take bonemeal
+ "decrement_stack": {},
+ // Trigger random growth
+ "set_block_state": {
+ "wiki:growth_stage": "q.block_state('wiki:growth_stage') + Math.random(1, 3 - q.block_state('wiki:growth_stage'))"
+ },
+ // Trigger effects
+ "run_command": {
+ "command": ["particle minecraft:crop_growth_emitter ~~~", "playsound item.bone_meal.use @a ~~~"]
+ }
+ }
+}
+```
+
+So we know how to set our block states, what happens when our block is on a particular state value?
+
+The permutations below set a certain `"minecraft:selection_box"` and texture to the block based on the `q.block_state('wiki:growth_stage')` or `"wiki:growth_stage"` value. For example, if `"wiki:growth_stage"` is 3, the permutation sets the texture to `"custom_crop_3"`.
+
+### Permutations
+
+minecraft:block
+
+```json
+"permutations": [
+ {
+ "condition": "q.block_state('wiki:growth_stage') == 0",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_crop_0",
+ "render_method": "alpha_test",
+ "face_dimming": false,
+ "ambient_occlusion": false
+ }
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 2, 16]
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:growth_stage') == 1",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_crop_1",
+ "render_method": "alpha_test",
+ "face_dimming": false,
+ "ambient_occlusion": false
+ }
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 5, 16]
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:growth_stage') == 2",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_crop_2",
+ "render_method": "alpha_test",
+ "face_dimming": false,
+ "ambient_occlusion": false
+ }
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 9, 16]
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:growth_stage') == 3",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_crop_3",
+ "render_method": "alpha_test",
+ "face_dimming": false,
+ "ambient_occlusion": false
+ }
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 13, 16]
+ },
+ // Drop different loot when fully grown
+ "minecraft:loot": "loot_tables/blocks/custom_crop_mature.json"
+ }
+ }
+]
+```
+
+You can add more permutations depending on how many stages you want your crop to have. But don't forget to also change the events and states limit.
+
+Here is the entire `wiki:custom_crop` file for reference.
+
+
+
+BP/blocks/custom_crop.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_crop",
+ "menu_category": {
+ "category": "none" // Hide from creative inventory - seeds should be used to place
+ },
+ "states": {
+ "wiki:growth_stage": [0, 1, 2, 3]
+ }
+ },
+ "components": {
+ "minecraft:flammable": true,
+ "minecraft:collision_box": false,
+ "minecraft:geometry": "geometry.crop",
+ "minecraft:light_dampening": 0,
+ // Break if not placed on farmland
+ "minecraft:placement_filter": {
+ "conditions": [
+ {
+ "allowed_faces": ["up"],
+ "block_filter": ["wiki:custom_farmland"]
+ }
+ ]
+ },
+ // Loot table for when the crop is not fully grown. Vanilla crops only drop seeds when young.
+ "minecraft:loot": "loot_tables/blocks/custom_crop_young.json",
+ // Trigger growth every random tick
+ "minecraft:random_ticking": {
+ "on_tick": {
+ "event": "wiki:grow",
+ "condition": "q.block_state('wiki:growth_stage') < 3"
+ }
+ },
+ // Break crop when in contact with water
+ "minecraft:queued_ticking": {
+ // Check every 10 ticks
+ "interval_range": [10, 10],
+ "looping": true,
+ "on_tick": {
+ "event": "wiki:destroy",
+ "condition": "q.block_neighbor_has_any_tag(1,0,0,'water') || q.block_neighbor_has_any_tag(-1,0,0,'water') || q.block_neighbor_has_any_tag(0,0,1,'water') || q.block_neighbor_has_any_tag(0,0,-1,'water') || q.block_neighbor_has_any_tag(0,1,0,'water')"
+ }
+ },
+ // Trigger growth with bone meal
+ "minecraft:on_interact": {
+ "event": "wiki:fertilize",
+ "condition": "q.is_item_name_any('slot.weapon.mainhand', 'minecraft:bone_meal') && q.block_state('wiki:growth_stage') < 3"
+ }
+ },
+ "events": {
+ "wiki:destroy": {
+ "run_command": {
+ "command": "setblock ~~~ air destroy"
+ }
+ },
+ // Adds to "wiki:growth_stage" (grows crop)
+ "wiki:grow": {
+ "set_block_state": {
+ "wiki:growth_stage": "q.block_state('wiki:growth_stage') + 1"
+ }
+ },
+ // Bonemeal the crop (grow crop a random amount)
+ "wiki:fertilize": {
+ // Take bonemeal
+ "decrement_stack": {},
+ // Trigger random growth
+ "set_block_state": {
+ "wiki:growth_stage": "q.block_state('wiki:growth_stage') + Math.random(1, 3 - q.block_state('wiki:growth_stage'))"
+ },
+ // Trigger effects
+ "run_command": {
+ "command": ["particle minecraft:crop_growth_emitter ~~~", "playsound item.bone_meal.use @a ~~~"]
+ }
+ }
+ },
+ "permutations": [
+ {
+ "condition": "q.block_state('wiki:growth_stage') == 0",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_crop_0",
+ "render_method": "alpha_test",
+ "face_dimming": false,
+ "ambient_occlusion": false
+ }
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 2, 16]
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:growth_stage') == 1",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_crop_1",
+ "render_method": "alpha_test",
+ "face_dimming": false,
+ "ambient_occlusion": false
+ }
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 5, 16]
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:growth_stage') == 2",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_crop_2",
+ "render_method": "alpha_test",
+ "face_dimming": false,
+ "ambient_occlusion": false
+ }
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 9, 16]
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:growth_stage') == 3",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_crop_3",
+ "render_method": "alpha_test",
+ "face_dimming": false,
+ "ambient_occlusion": false
+ }
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 13, 16]
+ },
+ // Drop different loot when fully grown
+ "minecraft:loot": "loot_tables/blocks/custom_crop_mature.json"
+ }
+ }
+ ]
+ }
+}
+```
+
+
+
+## Crop Loot
+
+Below are some example loot tables that your custom crop could use:
+
+BP/loot_tables/blocks/custom_crop_young.json
+
+```json
+{
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "item",
+ "name": "wiki:custom_seeds"
+ }
+ ]
+ }
+ ]
+}
+```
+
+BP/loot_tables/blocks/custom_crop_mature.json
+
+```json
+{
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "item",
+ "name": "wiki:custom_food",
+ "functions": [
+ {
+ "function": "set_count",
+ "count": { "min": 2, "max": 5 }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "item",
+ "name": "wiki:custom_seeds",
+ "functions": [
+ {
+ "function": "set_count",
+ "count": { "min": 0, "max": 3 }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+```
+
+## Custom Seeds
+
+Holding a crop block in your hand wouldn't look right, so we place the crop with seeds! Below is the JSON for a custom item that places your crop.
+
+BP/items/custom_seeds.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:item": {
+ "description": {
+ "identifier": "wiki:custom_seeds", // Make sure this is different from your crop's ID
+ "menu_category": {
+ "category": "nature",
+ "group": "itemGroup.name.seed"
+ }
+ },
+ "components": {
+ "minecraft:icon": {
+ "texture": "custom_seeds"
+ },
+ "minecraft:block_placer": {
+ "block": "wiki:custom_crop" // The block this item is placing
+ }
+ }
+ }
+}
+```
+
+## Custom Food
+
+Your crop can't only drop seeds! Create a custom food using the template below.
+
+BP/items/custom_food.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:item": {
+ "description": {
+ "identifier": "wiki:custom_food", // Make sure this is different from your crop and food's ID
+ "menu_category": {
+ "category": "nature",
+ "group": "itemGroup.name.crop"
+ }
+ },
+ "components": {
+ "minecraft:icon": {
+ "texture": "custom_food"
+ },
+ "minecraft:food": {
+ "nutrition": 4,
+ "saturation_modifier": 0.6
+ },
+ "minecraft:use_animation": "eat",
+ "minecraft:use_duration": 1.6
+ }
+ }
+}
+```
+
+## Result
+
+Your pack should now contain the following files:
+
+
+
+In conclusion, with the help of this tutorial/template, you now have the knowledge and skills to create your own custom crop, as well as other farming-related blocks such as farmland and dirt.
+
+## Download Example Pack
+
+If you require further assistance or would like to access the complete template files, please use the download button provided below. Happy designing!
+
+Download MCADDON
diff --git a/docs/wiki/2-方块/4-原版再创作/custom-fluids.md b/docs/wiki/2-方块/4-原版再创作/custom-fluids.md
new file mode 100644
index 00000000..ff5cb4eb
--- /dev/null
+++ b/docs/wiki/2-方块/4-原版再创作/custom-fluids.md
@@ -0,0 +1,364 @@
+---
+title: Custom Fluids
+category: Vanilla Re-Creations
+tags:
+ - experimental
+ - intermediate
+ - scripting
+mentions:
+ - Provedule
+ - JaylyDev
+ - QuazChick
+---
+
+::: tip FORMAT & MIN ENGINE VERSION `1.20.30`
+This tutorial assumes an advanced understanding of blocks and the execute command.
+Check out the [blocks guide](/blocks/blocks-intro) before starting.
+:::
+
+::: warning EXPERIMENTAL
+Requires `Holiday Creator Features` for use of block tag Molang queries and to trigger block events.
+
+Requires `Beta APIs` to use [@minecraft/server](https://learn.microsoft.com/minecraft/creator/scriptapi/minecraft/server/minecraft-server) module version `1.6.0-beta`.
+:::
+
+Creating fluids that are identical to vanilla fluids is not currently possible, but you can make something similar! This template/tutorial is designed to assist you in creating a custom "semi-fluid".
+
+## Flow Logic
+
+- The fluid block has states defining whether it is a source and its depth.
+- If there is air beneath fluid blocks, it will be converted into falling fluid.
+- Fluids with a depth above `1` will spread horizontally with decreasing depths.
+ - This will not occur if there is falling fluid below.
+- Flowing fluid block must have another fluid block adjacent to survive.
+- Source blocks do not need to have other fluid blocks surrounding themselves.
+
+**This implementation does not include face culling due to its current complexity.**
+
+
+
+## Source Fluid Block
+
+Below is the code for a custom fluid. Copy and quick replace `custom_fluid` with your fluid's name. When the source block detects air in its surroundings, it replaces it with the outer fluid blocks. If the source block detects air beneath it, it will also place a falling fluid block underneath.
+
+Download Custom Fluid Geometry
+
+
+
+BP/blocks/custom_fluid.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_fluid",
+ "menu_category": {
+ "category": "none"
+ },
+ "states": {
+ "wiki:source": [true, false],
+ // Depth of fluid - default to 4
+ "wiki:depth": [4, 5, 3, 2, 1]
+ }
+ },
+ "components": {
+ "minecraft:light_dampening": 0,
+ "minecraft:collision_box": false,
+ "minecraft:selection_box": false,
+ "minecraft:destructible_by_explosion": false,
+ // Trigger fluid spread
+ "minecraft:queued_ticking": {
+ "looping": true,
+ "interval_range": [20, 20], // Fluid speed in ticks
+ "on_tick": {
+ "event": "wiki:flow"
+ }
+ },
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_fluid", // Shortname defined in `RP/textures/terrain_texture.json`
+ "render_method": "blend",
+ "ambient_occlusion": false,
+ "face_dimming": false
+ }
+ },
+ "minecraft:loot": "loot_tables/empty.json",
+ "tag:custom_fluid": {}
+ },
+ "events": {
+ "wiki:flow": {
+ "sequence": [
+ // Dry out
+ {
+ "condition": "!q.block_state('wiki:source') && ((q.block_state('wiki:depth') == 5 && !q.block_neighbor_has_any_tag(0, 1, 0, 'custom_fluid')) || (q.block_state('wiki:depth') == 1 && !(q.block_neighbor_has_any_tag(1, 0, 0, 'custom_fluid_2') || q.block_neighbor_has_any_tag(-1, 0, 0, 'custom_fluid_2') || q.block_neighbor_has_any_tag(0, 0, 1, 'custom_fluid_2') || q.block_neighbor_has_any_tag(0, 0, -1, 'custom_fluid_2')) || q.block_state('wiki:depth') == 2 && !(q.block_neighbor_has_any_tag(1, 0, 0, 'custom_fluid_3') || q.block_neighbor_has_any_tag(-1, 0, 0, 'custom_fluid_3') || q.block_neighbor_has_any_tag(0, 0, 1, 'custom_fluid_3') || q.block_neighbor_has_any_tag(0, 0, -1, 'custom_fluid_3'))) || (q.block_state('wiki:depth') == 3 && !(q.block_neighbor_has_any_tag(1, 0, 0, 'custom_fluid_4', 'custom_fluid_5') || q.block_neighbor_has_any_tag(-1, 0, 0, 'custom_fluid_4', 'custom_fluid_5') || q.block_neighbor_has_any_tag(0, 0, 1, 'custom_fluid_4', 'custom_fluid_5') || q.block_neighbor_has_any_tag(0, 0, -1, 'custom_fluid_4', 'custom_fluid_5'))))",
+ "die": {}
+ },
+ // Spread
+ {
+ "condition": "q.block_state('wiki:depth') == 4",
+ "run_command": {
+ "command": [
+ "execute if block ~~~1 air run setblock ~~~1 wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=3]",
+ "execute if block ~~~-1 air run setblock ~~~-1 wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=3]",
+ "execute if block ~1~~ air run setblock ~1~~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=3]",
+ "execute if block ~-1~~ air run setblock ~-1~~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=3]"
+ ]
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:source') && q.block_neighbor_has_any_tag(0, 1, 0, 'custom_fluid')",
+ "set_block_state": {
+ "wiki:depth": 5
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:source') && !q.block_neighbor_has_any_tag(0, 1, 0, 'custom_fluid')",
+ "set_block_state": {
+ "wiki:depth": 4
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:depth') == 3",
+ "run_command": {
+ "command": [
+ "execute if block ~~~1 air unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid run setblock ~~~1 wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=2]",
+ "execute if block ~~~-1 air unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid run setblock ~~~-1 wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=2]",
+ "execute if block ~1~~ air unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid run setblock ~1~~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=2]",
+ "execute if block ~-1~~ air unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid run setblock ~-1~~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=2]"
+ ]
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:depth') == 2",
+ "run_command": {
+ "command": [
+ "execute if block ~~~1 air unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid run setblock ~~~1 wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=1]",
+ "execute if block ~~~-1 air unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid run setblock ~~~-1 wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=1]",
+ "execute if block ~1~~ air unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid run setblock ~1~~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=1]",
+ "execute if block ~-1~~ air unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid run setblock ~-1~~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=1]"
+ ]
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:depth') == 5 && q.block_neighbor_has_any_tag(0, 1, 0, 'custom_fluid')",
+ "run_command": {
+ "command": [
+ "execute if block ~~-1~ wiki:custom_fluid [\"wiki:depth\"=3] run setblock ~~-1~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=5]",
+ "execute if block ~~-1~ wiki:custom_fluid [\"wiki:depth\"=2] run setblock ~~-1~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=5]",
+ "execute if block ~~-1~ wiki:custom_fluid [\"wiki:depth\"=1] run setblock ~~-1~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=5]",
+ "execute unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid if block ~1~~ air run setblock ~1~~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=3]",
+ "execute unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid if block ~~~1 air run setblock ~~~1 wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=3]",
+ "execute unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid if block ~-1~~ air run setblock ~-1~~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=3]",
+ "execute unless block ~~-1~ air unless block ~~-1~ wiki:custom_fluid if block ~~~-1 air run setblock ~~~-1 wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=3]"
+ ]
+ }
+ },
+ // Fall
+ {
+ "run_command": {
+ "command": "execute if block ~~-1~ air run setblock ~~-1~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=5]"
+ }
+ },
+ {
+ "condition": "q.block_neighbor_has_any_tag(0, -1, 0, 'flowing_custom_fluid')",
+ "run_command": {
+ "command": "setblock ~~-1~ wiki:custom_fluid [\"wiki:source\"=false,\"wiki:depth\"=5]"
+ }
+ }
+ ]
+ },
+ "wiki:pick_up": {
+ "die": {},
+ "decrement_stack": {},
+ "run_command": {
+ "command": "give @s lava_bucket",
+ "target": "other"
+ }
+ }
+ },
+ "permutations": [
+ {
+ "condition": "q.block_state('wiki:source')",
+ "components": {
+ // Enables the block to be picked up by an item of choice
+ "minecraft:selection_box": {
+ "origin": [-7.5, 0.5, -7.5],
+ "size": [15, 13, 15]
+ },
+ "tag:custom_fluid_source": {}
+ }
+ },
+ {
+ "condition": "!q.block_state('wiki:source')",
+ "components": {
+ "tag:flowing_custom_fluid": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:depth') == 5",
+ "components": {
+ "minecraft:geometry": "geometry.fluid.5",
+ "tag:custom_fluid_5": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:depth') == 4",
+ "components": {
+ "minecraft:geometry": "geometry.fluid.4",
+ "tag:custom_fluid_4": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:depth') == 3",
+ "components": {
+ "minecraft:geometry": "geometry.fluid.3",
+ "tag:custom_fluid_3": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:depth') == 2",
+ "components": {
+ "minecraft:geometry": "geometry.fluid.2",
+ "tag:custom_fluid_2": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:depth') == 1",
+ "components": {
+ "minecraft:geometry": "geometry.fluid.1",
+ "tag:custom_fluid_1": {}
+ }
+ }
+ ]
+ }
+}
+```
+
+
+
+## Fluid Bucket
+
+To place your custom fluid you need a custom bucket item. Below is the JSON for the custom bucket. Replace any instance of `custom_fluid` with your fluid's name.
+
+
+
+BP/items/custom_fluid_bucket.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:item": {
+ "description": {
+ "identifier": "wiki:custom_fluid_bucket",
+ "menu_category": {
+ "category": "items"
+ }
+ },
+ "components": {
+ "minecraft:max_stack_size": 1,
+ "minecraft:icon": {
+ "texture": "custom_fluid_bucket" // Shortname defined in `RP/textures/item_texture.json`
+ },
+ "minecraft:block_placer": {
+ "block": "wiki:custom_fluid"
+ }
+ }
+ }
+}
+```
+
+
+
+## Scripts
+
+The fluids use a script to add the ability for the player to float/sink in the fluid. The script also adds fog. To add your fluid to the script, put the ID of your new fluids in the `fluids` string array.
+
+BP/manifest.json
+
+```json
+{
+ "modules": [
+ ...
+ {
+ "type": "script",
+ "language": "javascript",
+ "entry": "fluids.js",
+ "uuid": ...,
+ "version": [1, 0, 0]
+ }
+ ],
+ "dependencies": [
+ {
+ "module_name": "@minecraft/server",
+ "version": "1.6.0-beta"
+ }
+ ]
+}
+```
+
+
+
+BP/scripts/fluids.js
+
+```javascript
+import { system, world } from "@minecraft/server";
+
+const fluids = ["wiki:custom_fluid"];
+
+system.runInterval(() => {
+ const players = world.getPlayers();
+
+ for (const player of players) {
+ // Fluid effects
+ if (
+ fluids.includes(world.getDimension(player.dimension.id).getBlock({ ...player.location, y: player.location.y + 1 }).typeId) ||
+ fluids.includes(world.getDimension(player.dimension.id).getBlock(player.location).typeId)
+ ) {
+ player.addEffect("slowness", 3, { amplifier: 2, showParticles: false });
+ player.addEffect("slow_falling", 4, { showParticles: false });
+ if (player.isJumping) {
+ player.addEffect("levitation", 3, { amplifier: 2, showParticles: false });
+ }
+ }
+ // Fluid fog
+ if (fluids.includes(world.getDimension(player.dimension.id).getBlock({ ...player.location, y: player.location.y + 1.63 }).typeId)) {
+ player.runCommand("fog @s push wiki:custom_fluid_fog fluid_fog");
+ } else {
+ player.runCommand("fog @s remove fluid_fog");
+ }
+ }
+});
+```
+
+
+
+## Result
+
+By the end your BP folder should look like this:
+
+
+
+## Download Example Pack
+
+If anything goes wrong, or if you require all of the template files, they are available for download here. The pack includes everything necessary for a functional fluid.
+
+Download MCADDON
\ No newline at end of file
diff --git a/docs/wiki/2-方块/4-原版再创作/custom-glass-blocks.md b/docs/wiki/2-方块/4-原版再创作/custom-glass-blocks.md
new file mode 100644
index 00000000..68f793b8
--- /dev/null
+++ b/docs/wiki/2-方块/4-原版再创作/custom-glass-blocks.md
@@ -0,0 +1,661 @@
+---
+title: Custom Glass
+category: Vanilla Re-Creations
+tags:
+ - experimental
+ - expert
+mentions:
+ - Eko-byte
+ - QuazChick
+---
+
+Making glass blocks may seem like a simple task, however it comes with many drawbacks as you will find, this tutorial aims to help you achieve a vanilla like glass block.
+
+By the end you should be able to create something like this!
+
+
+
+## Basic Glass
+
+::: tip FORMAT VERSION `1.20.30`
+This example requires basic knowledge of blocks to understand.
+Check out the [blocks guide](/blocks/blocks-intro) before starting.
+:::
+
+This will create a custom glass block which appears the same as vanilla glass blocks!
+
+BP/blocks/custom_glass.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_glass",
+ "menu_category": {
+ "category": "construction",
+ "group": "itemGroup.name.glass"
+ }
+ },
+ "components": {
+ "minecraft:light_dampening": 0,
+ "minecraft:material_instances": {
+ "*": {
+ "render_method": "blend" // Allows translucency
+ }
+ }
+ }
+ }
+}
+```
+
+RP/blocks.json
+
+```json
+{
+ "wiki:custom_glass": {
+ "textures": "custom_glass", // Shortname defined in `RP/textures/terrain_texture.json`
+ "sound": "glass"
+ }
+}
+```
+
+## Vertically-Connecting Glass
+
+::: tip FORMAT & MIN ENGINE VERSION `1.20.30`
+This example requires advanced knowledge of blocks and Molang to understand.
+Check out the [blocks guide](/blocks/blocks-intro), [block states](/blocks/block-states) and [Molang](/concepts/molang) before starting.
+:::
+
+::: warning EXPERIMENTAL
+Requires `Holiday Creator Features` for use of `minecraft:unit_cube` and to trigger events.
+:::
+
+
+
+BP/blocks/custom_vertical_connecting_glass.json
+
+```json
+// Add a "nothing" texture in terrain_texture, and make it have a transparent file
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_vertical_connecting_glass",
+ "menu_category": {
+ "category": "construction",
+ "group": "itemGroup.name.glass"
+ },
+ "states": {
+ // States needed for connected textures, also controls up and down culling
+ "wiki:connection": [0, 1, 2, 3],
+ // States to cull faces depending on surrounding blocks
+ "wiki:cull_north": [false, true],
+ "wiki:cull_south": [false, true],
+ "wiki:cull_east": [false, true],
+ "wiki:cull_west": [false, true]
+ }
+ },
+ "components": {
+ // Basic glass components
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 1
+ },
+ "minecraft:queued_ticking": {
+ "looping": true,
+ "interval_range": [0, 0],
+ "on_tick": {
+ "event": "wiki:update"
+ }
+ },
+ "minecraft:unit_cube": {},
+ "minecraft:light_dampening": 0,
+ // Tags used to give connected textures, and remove culling
+ "tag:custom_vertical_connecting_glass": {},
+ "tag:glass": {}
+ },
+ "permutations": [
+ // These permutations control what textures are displayed at different situations
+ // They also use tags to determine what state they are in, (top texture then top tag)
+ {
+ "condition": "q.block_state('wiki:connection') == 0 && !q.block_state('wiki:cull_north') && !q.block_state('wiki:cull_south') && !q.block_state('wiki:cull_east') && !q.block_state('wiki:cull_west')",
+ "components": {
+ "tag:default": {},
+ "minecraft:material_instances": {
+ "*": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:connection') == 1 && !q.block_state('wiki:cull_north') && !q.block_state('wiki:cull_south') && !q.block_state('wiki:cull_east') && !q.block_state('wiki:cull_west')",
+ "components": {
+ "tag:top": {},
+ "minecraft:material_instances": {
+ "*": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_top"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:connection') == 2 && !q.block_state('wiki:cull_north') && !q.block_state('wiki:cull_south') && !q.block_state('wiki:cull_east') && !q.block_state('wiki:cull_west')",
+ "components": {
+ "tag:bottom": {},
+ "minecraft:material_instances": {
+ "*": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_bottom"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:connection') == 3 && !q.block_state('wiki:cull_north') && !q.block_state('wiki:cull_south') && !q.block_state('wiki:cull_east') && !q.block_state('wiki:cull_west')",
+ "components": {
+ "tag:middle": {},
+ "minecraft:material_instances": {
+ "*": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_middle"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_north') && q.block_state('wiki:connection') == 0",
+ "components": {
+ "tag:default": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass",
+ "render_method": "blend"
+ },
+ "north": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_south') && q.block_state('wiki:connection') == 0",
+ "components": {
+ "tag:default": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass",
+ "render_method": "blend"
+ },
+ "south": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_east') && q.block_state('wiki:connection') == 0",
+ "components": {
+ "tag:default": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass",
+ "render_method": "blend"
+ },
+ "east": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_west') && q.block_state('wiki:connection') == 0",
+ "components": {
+ "tag:default": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass",
+ "render_method": "blend"
+ },
+ "west": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_north') && q.block_state('wiki:connection') == 1",
+ "components": {
+ "tag:top": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_top",
+ "render_method": "blend"
+ },
+ "north": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_south') && q.block_state('wiki:connection') == 1",
+ "components": {
+ "tag:top": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_top",
+ "render_method": "blend"
+ },
+ "south": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_east') && q.block_state('wiki:connection') == 1",
+ "components": {
+ "tag:top": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_top",
+ "render_method": "blend"
+ },
+ "east": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ //in this situation if there is a block to the west and it is the upper connected texture then it shall have the west side invisible and the sides be the upper connected part
+ {
+ "condition": "q.block_state('wiki:cull_west') && q.block_state('wiki:connection') == 1",
+ "components": {
+ "tag:top": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_top",
+ "render_method": "blend"
+ },
+ "west": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_north') && q.block_state('wiki:connection') == 2",
+ "components": {
+ "tag:bottom": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_bottom",
+ "render_method": "blend"
+ },
+ "north": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_south') && q.block_state('wiki:connection') == 2",
+ "components": {
+ "tag:bottom": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_bottom",
+ "render_method": "blend"
+ },
+ "south": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_east') && q.block_state('wiki:connection') == 2",
+ "components": {
+ "tag:bottom": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_bottom",
+ "render_method": "blend"
+ },
+ "east": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_west') && q.block_state('wiki:connection') == 2",
+ "components": {
+ "tag:bottom": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_bottom",
+ "render_method": "blend"
+ },
+ "west": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "custom_vertical_connecting_glass_up"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_north') && q.block_state('wiki:connection') == 3",
+ "components": {
+ "tag:middle": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_middle",
+ "render_method": "blend"
+ },
+ "north": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_south') && q.block_state('wiki:connection') == 3",
+ "components": {
+ "tag:middle": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_middle",
+ "render_method": "blend"
+ },
+ "south": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_east') && q.block_state('wiki:connection') == 3",
+ "components": {
+ "tag:middle": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_middle",
+ "render_method": "blend"
+ },
+ "east": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:cull_west') && q.block_state('wiki:connection') == 3",
+ "components": {
+ "tag:middle": {},
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_vertical_connecting_glass_middle",
+ "render_method": "blend"
+ },
+ "west": {
+ "texture": "nothing",
+ "render_method": "blend"
+ },
+ "down": {
+ "render_method": "blend",
+ "texture": "nothing"
+ },
+ "up": {
+ "render_method": "blend",
+ "texture": "nothing"
+ }
+ }
+ }
+ }
+ ],
+ "events": {
+ "wiki:update": {
+ "sequence": [
+ // Set the block to have no culling
+ {
+ "condition": "q.block_neighbor_has_any_tag(0,0,-1,'custom_vertical_connecting_glass')",
+ "set_block_state": {
+ "wiki:cull_north": "q.block_neighbor_has_any_tag(0,0,-1,'custom_vertical_connecting_glass')",
+ "wiki:cull_south": "q.block_neighbor_has_any_tag(0,0,1,'custom_vertical_connecting_glass')",
+ "wiki:cull_west": "q.block_neighbor_has_any_tag(-1,0,0,'custom_vertical_connecting_glass')",
+ "wiki:cull_east": "q.block_neighbor_has_any_tag(1,0,0,'custom_vertical_connecting_glass')"
+ }
+ },
+ // Control the custom texture state
+ {
+ "condition": "q.block_neighbor_has_any_tag(0,-1,0,'default')",
+ "set_block_state": {
+ "wiki:connection": 1
+ }
+ },
+ {
+ "condition": "q.block_neighbor_has_any_tag(0,1,0,'top') && !q.block_neighbor_has_any_tag(0,-1,0,'middle')",
+ "set_block_state": {
+ "wiki:connection": 2
+ }
+ },
+ {
+ "condition": "q.block_neighbor_has_any_tag(0,1,0,'top') && q.block_neighbor_has_any_tag(0,-1,0,'middle')",
+ "set_block_state": {
+ "wiki:connection": 3
+ }
+ },
+ {
+ "condition": "q.block_neighbor_has_any_tag(0,-1,0,'top')",
+ "set_block_state": {
+ "wiki:connection": 1
+ }
+ },
+ {
+ "condition": "q.block_neighbor_has_any_tag(0,-1,0,'bottom') && (q.block_neighbor_has_any_tag(0,1,0,'top') || q.block_neighbor_has_any_tag(0,1,0,'middle'))",
+ "set_block_state": {
+ "wiki:connection": 3
+ }
+ },
+ {
+ "condition": "!q.block_neighbor_has_any_tag(0,1,0,'top', 'default', 'middle', 'bottom') && q.block_neighbor_has_any_tag(0,-1,0,'middle', 'bottom')",
+ "set_block_state": {
+ "wiki:connection": 1
+ }
+ },
+ {
+ "condition": "!q.block_neighbor_has_any_tag(0,1,0,'top', 'default', 'middle', 'bottom') && !q.block_neighbor_has_any_tag(0,-1,0,'middle', 'bottom', 'top', 'default')",
+ "set_block_state": {
+ "wiki:connection": 0
+ }
+ },
+ {
+ "condition": "q.block_neighbor_has_any_tag(0,1,0,'top', 'middle', 'bottom') && !q.block_neighbor_has_any_tag(0,-1,0,'middle', 'bottom', 'top', 'default')",
+ "set_block_state": {
+ "wiki:connection": 2
+ }
+ },
+ {
+ "condition": "q.block_neighbor_has_any_tag(0,1,0,'default') && q.block_neighbor_has_any_tag(0,-1,0,'default')",
+ "set_block_state": {
+ "wiki:connection": 3
+ }
+ }
+ ]
+ }
+ }
+ }
+}
+```
+
+
diff --git a/docs/wiki/2-方块/4-原版再创作/custom-glazed-terracotta.md b/docs/wiki/2-方块/4-原版再创作/custom-glazed-terracotta.md
new file mode 100644
index 00000000..32c197ca
--- /dev/null
+++ b/docs/wiki/2-方块/4-原版再创作/custom-glazed-terracotta.md
@@ -0,0 +1,289 @@
+---
+title: Custom Glazed Terracotta
+category: Vanilla Re-Creations
+tags:
+ - easy
+mentions:
+ - Kaioga5
+---
+
+::: tip FORMAT & MIN ENGINE VERSION `1.20.40`
+This tutorial assumes a basic understanding of blocks.
+Check out the [blocks guide](/blocks/blocks-intro) before starting.
+:::
+
+
+## Introduction
+Glazed Terracotta has its own rotation mechanism, enabling players to craft aesthetically pleasing patterns for walls, floors, and ceilings. This guide will instruct you on creating your own blocks resembling glazed terracotta.
+
+## Custom Glazed Terracotta
+This will create a vanilla-like custom glazed terracotta.
+
+BP/blocks/custom_glazed_terracotta.json
+
+```json
+{
+ "format_version": "1.20.40",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:glazed_terracotta_template",
+ "menu_category": {
+ "category": "construction",
+ "group": "itemGroup.name.glazedTerracotta"
+ },
+ "traits": {
+ "minecraft:placement_direction": {
+ "enabled_states": [
+ "minecraft:cardinal_direction"
+ ]
+ }
+ }
+ },
+ "permutations": [
+ {
+ "condition": "q.block_state('minecraft:cardinal_direction') == 'north'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 0] },
+ "minecraft:geometry": {
+ "identifier": "geometry.glazed_terracotta",
+ "bone_visibility": {
+ "bottom_1": false,
+ "bottom_2": false,
+ "bottom_3": false,
+ "bottom_4": true
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:cardinal_direction') == 'west'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 90, 0] },
+ "minecraft:geometry": {
+ "identifier": "geometry.glazed_terracotta",
+ "bone_visibility": {
+ "bottom_1": false,
+ "bottom_2": false,
+ "bottom_3": true,
+ "bottom_4": false
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:cardinal_direction') == 'south'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 180, 0] },
+ "minecraft:geometry": {
+ "identifier": "geometry.glazed_terracotta",
+ "bone_visibility": {
+ "bottom_1": false,
+ "bottom_2": true,
+ "bottom_3": false,
+ "bottom_4": false
+ }
+ }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:cardinal_direction') == 'east'",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, -90, 0] },
+ "minecraft:geometry": {
+ "identifier": "geometry.glazed_terracotta",
+ "bone_visibility": {
+ "bottom_1": true,
+ "bottom_2": false,
+ "bottom_3": false,
+ "bottom_4": false
+ }
+ }
+ }
+ }
+ ],
+ "components": {
+ "minecraft:geometry": {
+ "identifier": "geometry.glazed_terracotta"
+ },
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "purple_glazed_terracotta",
+ "render_method": "opaque"
+ }
+ }
+ }
+ }
+}
+```
+
+## Geometry
+Vanilla glazed terracotta rotates certain faces of the block with some specific values, which is what gives the block it's magic. Use the following geometry to replicate that behavior.
+
+
+
+RP/models/blocks/glazed_terracotta.geo.json
+
+```json
+{
+ "format_version": "1.12.0",
+ "minecraft:geometry": [
+ {
+ "description": {
+ "identifier": "geometry.glazed_terracotta",
+ "texture_width": 16,
+ "texture_height": 16,
+ "visible_bounds_width": 4,
+ "visible_bounds_height": 3.5,
+ "visible_bounds_offset": [0, 1.25, 0]
+ },
+ "bones": [
+ {
+ "name": "glazed_terracotta",
+ "pivot": [0, 0, 0]
+ },
+ {
+ "name": "top",
+ "parent": "glazed_terracotta",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, 0, -8],
+ "size": [16, 16, 16],
+ "uv": {
+ "up": {"uv": [16, 16], "uv_size": [-16, -16]}
+ }
+ }
+ ]
+ },
+ {
+ "name": "north",
+ "parent": "glazed_terracotta",
+ "pivot": [0, 8, 0],
+ "cubes": [
+ {
+ "origin": [-8, 0, -8],
+ "size": [16, 16, 0],
+ "pivot": [0, 8, 0],
+ "rotation": [180, 0, 90],
+ "uv": {
+ "north": {"uv": [16, 16], "uv_size": [-16, -16]}
+ }
+ }
+ ]
+ },
+ {
+ "name": "south",
+ "parent": "glazed_terracotta",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [0, -8, 8],
+ "size": [16, 16, 0],
+ "pivot": [0, 0, 0],
+ "rotation": [180, 0, 270],
+ "uv": {
+ "south": {"uv": [0, 0], "uv_size": [16, 16]}
+ }
+ }
+ ]
+ },
+ {
+ "name": "east",
+ "parent": "glazed_terracotta",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, -16, -8],
+ "size": [0, 16, 16],
+ "pivot": [0, 0, 0],
+ "rotation": [0, 0, -180],
+ "uv": {
+ "east": {"uv": [16, 16], "uv_size": [-16, -16]}
+ }
+ }
+ ]
+ },
+ {
+ "name": "west",
+ "parent": "glazed_terracotta",
+ "pivot": [-16, 0, 0],
+ "cubes": [
+ {
+ "origin": [-24, 0, -8],
+ "size": [0, 16, 16],
+ "pivot": [-16, 0, 0],
+ "rotation": [0, 180, 0],
+ "uv": {
+ "west": {"uv": [16, 16], "uv_size": [-16, -16]}
+ }
+ }
+ ]
+ },
+ {
+ "name": "bottom",
+ "parent": "glazed_terracotta",
+ "pivot": [0, 0, 0]
+ },
+ {
+ "name": "bottom_1",
+ "parent": "bottom",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, 0, -8],
+ "size": [16, 0, 16],
+ "uv": {
+ "down": {"uv": [0, 0], "uv_size": [16, 16]}
+ }
+ }
+ ]
+ },
+ {
+ "name": "bottom_2",
+ "parent": "bottom",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, 0, -8],
+ "size": [16, 0, 16],
+ "uv": {
+ "down": {"uv": [16, 16], "uv_size": [-16, -16]}
+ }
+ }
+ ]
+ },
+ {
+ "name": "bottom_3",
+ "parent": "bottom",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, 0, -8],
+ "size": [16, 0, 16],
+ "uv": {
+ "down": {"uv": [0, 0], "uv_size": [16, 16]}
+ }
+ }
+ ]
+ },
+ {
+ "name": "bottom_4",
+ "parent": "bottom",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, 0, -8],
+ "size": [16, 0, 16],
+ "uv": {
+ "down": {"uv": [16, 16], "uv_size": [-16, -16]}
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+```
+
+
diff --git a/docs/wiki/2-方块/4-原版再创作/custom-slabs.md b/docs/wiki/2-方块/4-原版再创作/custom-slabs.md
new file mode 100644
index 00000000..fb550ba4
--- /dev/null
+++ b/docs/wiki/2-方块/4-原版再创作/custom-slabs.md
@@ -0,0 +1,201 @@
+---
+title: Custom Slabs
+category: Vanilla Re-Creations
+tags:
+ - experimental
+ - easy
+mentions:
+ - Kaioga5
+ - QuazChick
+---
+
+::: tip FORMAT & MIN ENGINE VERSION `1.20.30`
+This tutorial assumes a basic understanding of blocks.
+Check out the [blocks guide](/blocks/blocks-intro) before starting.
+:::
+
+::: warning EXPERIMENTAL
+Requires `Holiday Creator Features` to trigger block events and for use of the `minecraft:unit_cube` component.
+:::
+
+## Introduction
+Making custom slabs is a simple task, but if you find any drawbacks during recreating slabs, this tutorial will help you with it, and you'll be provided with a template for you to use.
+
+Issues:
+- Your custom slab will appear vertically centred when carried.
+- Your custom slab may appear full-sized in item form (on the ground, in item frames, in hand)
+
+## Custom Slab
+This will create a vanilla-like custom slab.
+
+BP/blocks/custom_slab.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_slab",
+ "menu_category": {
+ "category": "construction",
+ "group": "itemGroup.name.slab"
+ },
+ "traits": {
+ "minecraft:placement_position": {
+ "enabled_states": ["minecraft:vertical_half"]
+ }
+ },
+ "states": {
+ "wiki:double": [false, true]
+ }
+ },
+ "permutations": [
+ // Bottom Slab
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'bottom' && !q.block_state('wiki:double')",
+ "components": {
+ "minecraft:collision_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 8, 16]
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 8, 16]
+ },
+ "minecraft:on_interact": {
+ "event": "wiki:form_double",
+ "condition": "q.block_face == 1.0 && q.is_item_name_any('slot.weapon.mainhand', 'wiki:custom_slab')"
+ }
+ }
+ },
+ // Top Slab
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'top' && !q.block_state('wiki:double')",
+ "components": {
+ "minecraft:collision_box": {
+ "origin": [-8, 8, -8],
+ "size": [16, 8, 16]
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 8, -8],
+ "size": [16, 8, 16]
+ },
+ "minecraft:on_interact": {
+ "event": "wiki:form_double",
+ "condition": "q.block_face == 0.0 && q.is_item_name_any('slot.weapon.mainhand', 'wiki:custom_slab')"
+ }
+ }
+ },
+ // Double Slab
+ {
+ "condition": "q.block_state('wiki:double')",
+ "components": {
+ "minecraft:unit_cube": {},
+ "minecraft:on_player_destroyed": {
+ "event": "wiki:destroy_double"
+ }
+ }
+ }
+ ],
+ "components": {
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 7
+ },
+ "minecraft:destructible_by_explosion": {
+ "explosion_resistance": 6
+ },
+ "minecraft:geometry": {
+ "identifier": "geometry.slab",
+ "bone_visibility": {
+ "bottom_slab": "q.block_state('minecraft:vertical_half') == 'bottom'",
+ "top_slab": "q.block_state('minecraft:vertical_half') == 'top'"
+ }
+ },
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "stone"
+ }
+ }
+ },
+ "events": {
+ "wiki:form_double": {
+ "set_block_state": {
+ "wiki:double": true
+ },
+ "run_command": {
+ "command": "playsound use.stone @a ~~~ 1 0.8"
+ },
+ "decrement_stack": {}
+ },
+ "wiki:destroy_double": {
+ "spawn_loot": {} // Spawns the block's default loot
+ }
+ }
+ }
+}
+```
+
+## Geometry
+This will be the geometry used for your custom slabs.
+
+
+
+RP/models/blocks/slab.geo.json
+
+```json
+{
+ "format_version": "1.12.0",
+ "minecraft:geometry": [
+ {
+ "description": {
+ "identifier": "geometry.slab",
+ "texture_width": 16,
+ "texture_height": 16,
+ "visible_bounds_width": 2,
+ "visible_bounds_height": 2.5,
+ "visible_bounds_offset": [0, 0.75, 0]
+ },
+ "bones": [
+ {
+ "name": "top_slab",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, 8, -8],
+ "size": [16, 8, 16],
+ "uv": {
+ "north": {"uv": [0, 0], "uv_size": [16, 8]},
+ "east": {"uv": [0, 0], "uv_size": [16, 8]},
+ "south": {"uv": [0, 0], "uv_size": [16, 8]},
+ "west": {"uv": [0, 0], "uv_size": [16, 8]},
+ "up": {"uv": [16, 16], "uv_size": [-16, -16]},
+ "down": {"uv": [16, 16], "uv_size": [-16, -16]}
+ }
+ }
+ ]
+ },
+ {
+ "name": "bottom_slab",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, 0, -8],
+ "size": [16, 8, 16],
+ "uv": {
+ "north": {"uv": [0, 8], "uv_size": [16, 8]},
+ "east": {"uv": [0, 8], "uv_size": [16, 8]},
+ "south": {"uv": [0, 8], "uv_size": [16, 8]},
+ "west": {"uv": [0, 8], "uv_size": [16, 8]},
+ "up": {"uv": [16, 16], "uv_size": [-16, -16]},
+ "down": {"uv": [16, 16], "uv_size": [-16, -16]}
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+```
+
+
diff --git a/docs/wiki/2-方块/4-原版再创作/custom-trapdoors.md b/docs/wiki/2-方块/4-原版再创作/custom-trapdoors.md
new file mode 100644
index 00000000..210ced90
--- /dev/null
+++ b/docs/wiki/2-方块/4-原版再创作/custom-trapdoors.md
@@ -0,0 +1,254 @@
+---
+title: Custom Trapdoors
+category: Vanilla Re-Creations
+tags:
+ - experimental
+ - intermediate
+mentions:
+ - Kaioga5
+ - QuazChick
+---
+
+::: tip FORMAT & MIN ENGINE VERSION `1.20.30`
+This tutorial assumes a good understanding of blocks.
+Check out the [blocks guide](/blocks/blocks-intro) before starting.
+:::
+
+::: warning EXPERIMENTAL
+Requires `Holiday Creator Features` to trigger block events.
+:::
+
+## Introduction
+
+Making custom trapdoors is an often difficult task to do, but after reading this tutorial you'll understand how they work in case you find any drawbacks during recreating them, and you'll be provided with a template for you to use.
+
+## Custom Trapdoor
+
+This will create a vanilla-like custom trapdoor.
+
+BP/blocks/custom_trapdoor.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_trapdoor",
+ "menu_category": {
+ "category": "construction",
+ "group": "itemGroup.name.trapdoor"
+ },
+ "traits": {
+ "minecraft:placement_position": {
+ "enabled_states": ["minecraft:vertical_half"]
+ },
+ "minecraft:placement_direction": {
+ "enabled_states": ["minecraft:cardinal_direction"]
+ }
+ },
+ "states": {
+ "wiki:open": [false, true]
+ }
+ },
+ "permutations": [
+ // Top Closed
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'top' && q.block_state('minecraft:cardinal_direction') == 'north' && !q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 180] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'top' && q.block_state('minecraft:cardinal_direction') == 'south' && !q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [180, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'top' && q.block_state('minecraft:cardinal_direction') == 'east' && !q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [180, -270, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'top' && q.block_state('minecraft:cardinal_direction') == 'west' && !q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [180, 270, 0] }
+ }
+ },
+ // Top Open
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'top' && q.block_state('minecraft:cardinal_direction') == 'north' && q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [-270, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'top' && q.block_state('minecraft:cardinal_direction') == 'south' && q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [270, 0, -180] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'top' && q.block_state('minecraft:cardinal_direction') == 'east' && q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 270, 90] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'top' && q.block_state('minecraft:cardinal_direction') == 'west' && q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": {
+ "rotation": [180, -270, -270]
+ }
+ }
+ },
+ // Bottom Closed
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'bottom' && q.block_state('minecraft:cardinal_direction') == 'north' && !q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'bottom' && q.block_state('minecraft:cardinal_direction') == 'south' && !q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 180, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'bottom' && q.block_state('minecraft:cardinal_direction') == 'east' && !q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 270, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'bottom' && q.block_state('minecraft:cardinal_direction') == 'west' && !q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, -270, 0] }
+ }
+ },
+ // Bottom Open
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'bottom' && q.block_state('minecraft:cardinal_direction') == 'north' && q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [90, 0, 180] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'bottom' && q.block_state('minecraft:cardinal_direction') == 'south' && q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [270, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'bottom' && q.block_state('minecraft:cardinal_direction') == 'east' && q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, -270, 90] }
+ }
+ },
+ {
+ "condition": "q.block_state('minecraft:vertical_half') == 'bottom' && q.block_state('minecraft:cardinal_direction') == 'west' && q.block_state('wiki:open')",
+ "components": {
+ "minecraft:transformation": { "rotation": [180, 270, -270] }
+ }
+ }
+ ],
+ "components": {
+ "minecraft:collision_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 3, 16]
+ },
+ "minecraft:selection_box": {
+ "origin": [-8, 0, -8],
+ "size": [16, 3, 16]
+ },
+ "minecraft:geometry": "geometry.trapdoor",
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "spruce_trapdoor",
+ "render_method": "alpha_test"
+ }
+ },
+ "minecraft:on_interact": {
+ "event": "wiki:toggle"
+ }
+ },
+ "events": {
+ "wiki:toggle": {
+ "sequence": [
+ {
+ "set_block_state": {
+ "wiki:open": "!q.block_state('wiki:open')"
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:open')",
+ "run_command": {
+ "command": "playsound close.wooden_trapdoor @a ~~~ 0.9 0.9"
+ }
+ },
+ {
+ "condition": "!q.block_state('wiki:open')",
+ "run_command": {
+ "command": "playsound open.wooden_trapdoor @a ~~~ 0.9 0.9"
+ }
+ }
+ ]
+ }
+ }
+ }
+}
+```
+
+## Geometry
+
+This will be the geometry used for your custom trapdoors.
+
+
+
+RP/models/blocks/trapdoor.geo.json
+
+```json
+{
+ "format_version": "1.12.0",
+ "minecraft:geometry": [
+ {
+ "description": {
+ "identifier": "geometry.trapdoor",
+ "texture_width": 16,
+ "texture_height": 16,
+ "visible_bounds_width": 2,
+ "visible_bounds_height": 1.5,
+ "visible_bounds_offset": [0, 0.25, 0]
+ },
+ "bones": [
+ {
+ "name": "trapdoor",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, 0, -8],
+ "size": [16, 3, 16],
+ "uv": {
+ "north": {"uv": [16, 3], "uv_size": [-16, -3]},
+ "east": {"uv": [16, 3], "uv_size": [-16, -3]},
+ "south": {"uv": [16, 3], "uv_size": [-16, -3]},
+ "west": {"uv": [16, 3], "uv_size": [-16, -3]},
+ "up": {"uv": [16, 16], "uv_size": [-16, -16]},
+ "down": {"uv": [0, 0], "uv_size": [16, 16]}
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+:::tip
+Vanilla trapdoors have a few issues in the direction of the texture in certain faces and having a height of 2.95 when it should be 3. This block template and geometry fixes both of those issues.
+:::
diff --git a/docs/wiki/2-方块/4-原版再创作/custom-trees.md b/docs/wiki/2-方块/4-原版再创作/custom-trees.md
new file mode 100644
index 00000000..9d6183ab
--- /dev/null
+++ b/docs/wiki/2-方块/4-原版再创作/custom-trees.md
@@ -0,0 +1,994 @@
+---
+title: Custom Trees
+category: Vanilla Re-Creations
+tags:
+ - experimental
+mentions:
+ - MedicalJewel105
+ - TheItsNameless
+ - QuazChick
+---
+
+::: tip FORMAT & MIN ENGINE VERSION `1.20.30`
+This tutorial assumes an advanced understanding of blocks.
+Check out the [blocks guide](/blocks/blocks-intro) before starting.
+:::
+
+::: warning EXPERIMENTAL
+Requires `Holiday Creator Features` for use of block tag Molang queries and to trigger block events.
+:::
+
+Creating your own tree with decaying leaves is complex, but possible! Follow this tutorial and you'll have your own in no time.
+
+- Features:
+
+ - Decaying leaves
+ - Tree Feature compatable
+ - If leaves were broken using shears, they will drop the block
+ - Leaves don't decay if placed by player
+ - Logs are strippable and rotatable
+ - Stripping logs is compatible with tools from other add-ons (if they have the `minecraft:is_axe` tag)
+ - Saplings can be bonemealed and grow the tree (with structures)
+
+- Issues:
+ - If you make a structure with these blocks, it will crash the game when generated using features.
+
+## Decaying Leaves
+
+You will notice straight away that our custom leaves have a long list to search for a vanilla log/custom log by its block tag, although the code example uses the custom logs for this tutorial. The value is 4 and this method is used to search for the nearest log in a circular radius.
+
+
+
+Our custom leaves disables ticking when placed by the player which doesn't make the leaves decay and this removes the requirements for another duplicate leave block.
+
+
+
+BP/blocks/custom_leaves.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_leaves",
+ "states": {
+ "wiki:decay_tier": [4, 3, 2, 1, 0], // Distance in blocks to find the log
+ "wiki:should_decay": [true, false], // Used when placed by the player or with features
+ "wiki:opaque": [false, true] // Optional; makes the leaves opaque when surrounded
+ }
+ },
+ "components": {
+ "tag:custom_leaves": {},
+ "minecraft:loot": "loot_tables/empty.json",
+ "minecraft:unit_cube": {},
+ "minecraft:on_player_placing": {
+ "event": "wiki:stop_decay"
+ },
+ // Triggers event that spawns different loot
+ "minecraft:on_player_destroyed": {
+ "event": "wiki:on_destroyed"
+ },
+ // We need both of these to work with world generation
+ "minecraft:queued_ticking": {
+ "looping": true,
+ "interval_range": [0, 0],
+ "on_tick": {
+ "event": "wiki:check"
+ }
+ },
+ "minecraft:random_ticking": {
+ "on_tick": {
+ "event": "wiki:check"
+ }
+ },
+ "minecraft:destructible_by_explosion": {
+ "explosion_resistance": 1
+ },
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 0.3
+ },
+ "minecraft:map_color": "#DDDDDD",
+ "minecraft:light_dampening": 0,
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_leaves",
+ "render_method": "blend"
+ }
+ }
+ },
+ "events": {
+ // Defines the loot for the tool
+ "wiki:on_destroyed": {
+ "sequence": [
+ {
+ "condition": "q.is_item_name_any('slot.weapon.mainhand','minecraft:shears')",
+ "spawn_loot": {
+ "table": "loot_tables/blocks/custom_leaves_shears.json"
+ }
+ },
+ {
+ "condition": "!q.is_item_name_any('slot.weapon.mainhand','minecraft:shears')",
+ "spawn_loot": {
+ "table": "loot_tables/blocks/custom_leaves.json"
+ }
+ }
+ ]
+ },
+ // Checks for the log
+ "wiki:check": {
+ "sequence": [
+ {
+ "condition": "q.block_state('wiki:should_decay')",
+ "set_block_state": {
+ "wiki:decay_tier": "(q.block_neighbor_has_any_tag(0,0,-1,'log') || q.block_neighbor_has_any_tag(0,0,1,'log') || q.block_neighbor_has_any_tag(-1,0,0,'log') || q.block_neighbor_has_any_tag(1,0,0,'log') || q.block_neighbor_has_any_tag(0,-1,0,'log') || q.block_neighbor_has_any_tag(0,1,0,'log')) ? 4 : ((q.block_neighbor_has_any_tag(0,0,-1,'decay_tier_4') || q.block_neighbor_has_any_tag(0,0,1,'decay_tier_4') || q.block_neighbor_has_any_tag(-1,0,0,'decay_tier_4') || q.block_neighbor_has_any_tag(1,0,0,'decay_tier_4') || q.block_neighbor_has_any_tag(0,-1,0,'decay_tier_4') || q.block_neighbor_has_any_tag(0,1,0,'decay_tier_4')) ? 3 : ( (q.block_neighbor_has_any_tag(0,0,-1,'decay_tier_3') || q.block_neighbor_has_any_tag(0,0,1,'decay_tier_3 ') || q.block_neighbor_has_any_tag(-1,0,0,'decay_tier_3') || q.block_neighbor_has_any_tag(1,0,0,'decay_tier_3') || q.block_neighbor_has_any_tag(0,-1,0,'decay_tier_3') || q.block_neighbor_has_any_tag(0,1,0,'decay_tier_3')) ? 2 : ( (q.block_neighbor_has_any_tag(0,0,-1,'decay_tier_2') || q.block_neighbor_has_any_tag(0,0,1,'decay_tier_2') || q.block_neighbor_has_any_tag(-1,0,0,'decay_tier_2') || q.block_neighbor_has_any_tag(1,0,0,'decay_tier_2') || q.block_neighbor_has_any_tag(0,-1,0,'decay_tier_2') || q.block_neighbor_has_any_tag(0,1,0,'decay_tier_2')) ? 1 : 0 ) ) )"
+ }
+ },
+ {
+ "set_block_state": {
+ "wiki:opaque": "q.block_neighbor_has_any_tag(0,0,-1,'log','stone','custom_leaves') && q.block_neighbor_has_any_tag(0,0,1,'log','stone','custom_leaves') && q.block_neighbor_has_any_tag(0,1,0,'log','stone','custom_leaves') && q.block_neighbor_has_any_tag(0,-1,0,'log','stone','custom_leaves') && q.block_neighbor_has_any_tag(-1,0,0,'log','stone','custom_leaves') && q.block_neighbor_has_any_tag(1,0,0,'log','stone','custom_leaves')"
+ }
+ }
+ ]
+ },
+ // When placed
+ "wiki:stop_decay": {
+ "set_block_state": {
+ "wiki:should_decay": false
+ }
+ },
+ // When decayed
+ "wiki:decay": {
+ "die": {},
+ "spawn_loot": {
+ "table": "loot_tables/blocks/custom_leaves.json"
+ }
+ }
+ },
+ "permutations": [
+ {
+ "condition": "q.block_state('wiki:decay_tier') == 0",
+ "components": {
+ "minecraft:random_ticking": {
+ "on_tick": {
+ "event": "wiki:decay"
+ }
+ },
+ "tag:decay_tier_0": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:decay_tier') == 1",
+ "components": {
+ "tag:decay_tier_1": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:decay_tier') == 2",
+ "components": {
+ "tag:decay_tier_2": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:decay_tier') == 3",
+ "components": {
+ "tag:decay_tier_3": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:decay_tier') == 4",
+ "components": {
+ "tag:decay_tier_4": {}
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:opaque')",
+ "components": {
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_leaves",
+ "render_method": "opaque"
+ }
+ }
+ }
+ }
+ ]
+ }
+}
+```
+
+
+
+## Custom Log
+
+
+
+BP/blocks/custom_log.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_log",
+ "menu_category": {
+ "category": "nature",
+ "group": "itemGroup.name.log"
+ },
+ "states": {
+ // Log direction state
+ "wiki:axis": [0, 1, 2]
+ }
+ },
+ "components": {
+ "tag:log": {},
+ "minecraft:unit_cube": {},
+ // Sets different textures for sides and top/bottom of log
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_log"
+ },
+ "ends": {
+ "texture": "custom_log_top"
+ },
+ "up": "ends",
+ "down": "ends"
+ },
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 1
+ },
+ // Sets log rotation on player placing
+ "minecraft:on_player_placing": {
+ "event": "wiki:set_axis"
+ },
+ // Make log strippable
+ "minecraft:on_interact": {
+ "condition": "q.equipped_item_any_tag('slot.weapon.mainhand', 'minecraft:is_axe')",
+ "event": "wiki:strip"
+ }
+ },
+ "events": {
+ "wiki:set_axis": {
+ "set_block_state": {
+ "wiki:axis": "Math.floor(q.block_face / 2)"
+ }
+ },
+ "wiki:strip": {
+ "sequence": [
+ {
+ "run_command": {
+ "command": "playsound hit.wood @a ~~~"
+ },
+ // Damages axe of player who stripped the log
+ "damage": {
+ "type": "durability",
+ "amount": 1,
+ "target": "item"
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 0",
+ "run_command": {
+ "command": "setblock ~~~ wiki:custom_stripped_log [\"wiki:axis\"=0]"
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 1",
+ "run_command": {
+ "command": "setblock ~~~ wiki:custom_stripped_log [\"wiki:axis\"=1]"
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 2",
+ "run_command": {
+ "command": "setblock ~~~ wiki:custom_stripped_log [\"wiki:axis\"=2]"
+ }
+ }
+ ]
+ }
+ },
+ "permutations": [
+ {
+ "condition": "q.block_state('wiki:axis') == 0",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 1",
+ "components": {
+ "minecraft:transformation": { "rotation": [90, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 2",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 90] }
+ }
+ }
+ ]
+ }
+}
+```
+
+
+
+## Stripped Log
+
+Here all components are the same
+
+
+
+BP/blocks/custom_stripped_log.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_stripped_log",
+ "menu_category": {
+ "category": "nature",
+ "group": "itemGroup.name.log"
+ },
+ "states": {
+ // Log direction state
+ "wiki:axis": [0, 1, 2]
+ }
+ },
+ "components": {
+ "tag:log": {},
+ "minecraft:unit_cube": {},
+ // Sets different textures for sides and top/bottom of log
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_stripped_log"
+ },
+ "ends": {
+ "texture": "custom_stripped_log_top"
+ },
+ "up": "ends",
+ "down": "ends"
+ },
+ "minecraft:destructible_by_mining": {
+ "seconds_to_destroy": 1
+ },
+ // Sets log rotation on player placing
+ "minecraft:on_player_placing": {
+ "event": "wiki:set_axis"
+ }
+ },
+ "events": {
+ "wiki:set_axis": {
+ "set_block_state": {
+ "wiki:axis": "Math.floor(q.block_face / 2)"
+ }
+ }
+ },
+ "permutations": [
+ {
+ "condition": "q.block_state('wiki:axis') == 0",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 1",
+ "components": {
+ "minecraft:transformation": { "rotation": [90, 0, 0] }
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:axis') == 2",
+ "components": {
+ "minecraft:transformation": { "rotation": [0, 0, 90] }
+ }
+ }
+ ]
+ }
+}
+```
+
+
+
+## Custom Sapling
+
+For the sapling we will need structures of our tree to make the sapling semi-realistic as features cannot currently be placed with commands on Minecraft Bedrock.
+
+
+
+BP/blocks/custom_sapling.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:block": {
+ "description": {
+ "identifier": "wiki:custom_sapling",
+ "states": {
+ // Sapling's growth stage
+ "wiki:growth_stage": [0, 1, 2]
+ }
+ },
+ "components": {
+ "minecraft:collision_box": false,
+ "minecraft:selection_box": {
+ "origin": [-6, 0, -6],
+ "size": [12, 13, 12]
+ },
+ "minecraft:light_dampening": 0,
+ "minecraft:geometry": "geometry.custom_sapling",
+ "minecraft:material_instances": {
+ "*": {
+ "texture": "custom_sapling",
+ "render_method": "alpha_test",
+ "face_dimming": false,
+ "ambient_occlusion": false
+ }
+ },
+ // Add loot component so it will drop sapling placer item
+ "minecraft:loot": "loot_tables/blocks/custom_sapling.json",
+ // Allows to place block only on these blocks
+ "minecraft:placement_filter": {
+ "conditions": [
+ {
+ "allowed_faces": ["up"],
+ "block_filter": ["minecraft:dirt", "minecraft:grass", "minecraft:podzol"]
+ }
+ ]
+ },
+ // Trigger growth on each random tick
+ "minecraft:random_ticking": {
+ "on_tick": {
+ "event": "wiki:grow"
+ }
+ },
+ // Trigger growth when bone meal is used
+ "minecraft:on_interact": {
+ "condition": "q.is_item_name_any('slot.weapon.mainhand', 'minecraft:bone_meal')",
+ "event": "wiki:fertilize"
+ }
+ },
+ "events": {
+ "wiki:grow": {
+ "sequence": [
+ {
+ "condition": "q.block_state('wiki:growth_stage') < 2",
+ "set_block_state": {
+ "wiki:growth_stage": "q.block_state('wiki:growth_stage') + 1"
+ }
+ },
+ {
+ "condition": "q.block_state('wiki:growth_stage') == 2",
+ "run_command": {
+ "command": "structure load custom_tree ~-2~~-2"
+ }
+ }
+ ]
+ },
+ "wiki:fertilize": {
+ // Removes item that was used to interact
+ "decrement_stack": {},
+ // Trigger growth
+ "trigger": {
+ "event": "wiki:grow"
+ },
+ // Trigger effects
+ "run_command": {
+ "command": ["particle minecraft:crop_growth_emitter ~~~", "playsound item.bone_meal.use @a ~~~"]
+ }
+ }
+ }
+ }
+}
+```
+
+
+
+## Sapling Placer
+
+
+
+BP/items/custom_sapling_placer.json
+
+```json
+{
+ "format_version": "1.20.30",
+ "minecraft:item": {
+ "description": {
+ "identifier": "wiki:custom_sapling_placer",
+ "menu_category": {
+ "category": "nature",
+ "group": "itemGroup.name.sapling"
+ }
+ },
+ "components": {
+ "minecraft:max_stack_size": 64,
+ "minecraft:block_placer": {
+ "block": "wiki:custom_sapling"
+ },
+ "minecraft:icon": {
+ "texture": "custom_sapling_placer"
+ }
+ }
+ }
+}
+```
+
+
+
+## Loot Tables
+
+
+
+This loot will spawn leaves block (when you break it using shears)
+
+BP/loot_tables/blocks/custom_leaves_shears.json
+
+```json
+{
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "item",
+ "name": "wiki:custom_leaves"
+ }
+ ]
+ }
+ ]
+}
+```
+
+Leaves default loot
+
+BP/loot_tables/blocks/custom_leaves.json
+
+```json
+{
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "item",
+ "name": "minecraft:apple",
+ "weight": 1
+ },
+ {
+ "type": "item",
+ "name": "wiki:custom_sapling_placer",
+ "weight": 5
+ },
+ {
+ // Nothing will drop
+ "type": "empty",
+ "weight": 10
+ }
+ ]
+ }
+ ]
+}
+```
+
+This will spawn `wiki:custom_sapling`
+
+BP/loot_tables/blocks/custom_sapling.json
+
+```json
+{
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "item",
+ "name": "wiki:custom_sapling_placer"
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+## Exporting Structures
+
+Build a tree for your sapling to grow into!
+
+
+
+## Tree Features
+
+:::tip
+Tree Features are a really great way to get actual custom trees. You need some understanding on how they work but for this tutorial you can uses these templates.
+:::
+
+
+
+BP/feature/custom_tree_feature.json
+
+```json
+{
+ "format_version": "1.13.0",
+ "minecraft:tree_feature": {
+ "description": {
+ "identifier": "wiki:custom_tree_feature"
+ },
+ "trunk": {
+ "trunk_block": "wiki:custom_log",
+ "trunk_height": {
+ "range_min": 4,
+ "range_max": 7
+ }
+ },
+ "canopy": {
+ "leaf_block": "wiki:custom_leaves",
+ "canopy_offset": {
+ "min": -3,
+ "max": 0
+ },
+ "variation_chance": [
+ {
+ "numerator": 1,
+ "denominator": 2
+ },
+ {
+ "numerator": 1,
+ "denominator": 2
+ },
+ {
+ "numerator": 1,
+ "denominator": 2
+ },
+ {
+ "numerator": 1,
+ "denominator": 1
+ }
+ ]
+ },
+ "base_block": [
+ "minecraft:dirt",
+ {
+ "name": "minecraft:dirt",
+ "states": {
+ "dirt_type": "coarse"
+ }
+ }
+ ],
+ "may_grow_on": [
+ "minecraft:dirt",
+ "minecraft:grass",
+ "minecraft:podzol",
+ {
+ "name": "minecraft:dirt",
+ "states": {
+ "dirt_type": "coarse"
+ }
+ },
+ {
+ "name": "minecraft:farmland",
+ "states": {
+ "moisturized_amount": 0
+ }
+ },
+ {
+ "name": "minecraft:farmland",
+ "states": {
+ "moisturized_amount": 1
+ }
+ },
+ {
+ "name": "minecraft:farmland",
+ "states": {
+ "moisturized_amount": 2
+ }
+ },
+ {
+ "name": "minecraft:farmland",
+ "states": {
+ "moisturized_amount": 3
+ }
+ },
+ {
+ "name": "minecraft:farmland",
+ "states": {
+ "moisturized_amount": 4
+ }
+ },
+ {
+ "name": "minecraft:farmland",
+ "states": {
+ "moisturized_amount": 5
+ }
+ },
+ {
+ "name": "minecraft:farmland",
+ "states": {
+ "moisturized_amount": 6
+ }
+ },
+ {
+ "name": "minecraft:farmland",
+ "states": {
+ "moisturized_amount": 7
+ }
+ }
+ ],
+ "may_replace": [
+ "minecraft:air",
+ {
+ "name": "minecraft:leaves",
+ "states": {
+ "old_leaf_type": "oak"
+ }
+ },
+ {
+ "name": "minecraft:leaves",
+ "states": {
+ "old_leaf_type": "spruce"
+ }
+ },
+ {
+ "name": "minecraft:leaves",
+ "states": {
+ "old_leaf_type": "birch"
+ }
+ },
+ {
+ "name": "minecraft:leaves",
+ "states": {
+ "old_leaf_type": "jungle"
+ }
+ },
+ {
+ "name": "minecraft:leaves2",
+ "states": {
+ "new_leaf_type": "acacia"
+ }
+ },
+ {
+ "name": "minecraft:leaves2",
+ "states": {
+ "new_leaf_type": "dark_oak"
+ }
+ }
+ ],
+ "may_grow_through": [
+ "minecraft:dirt",
+ "minecraft:grass",
+ {
+ "name": "minecraft:dirt",
+ "states": {
+ "dirt_type": "coarse"
+ }
+ }
+ ]
+ }
+}
+```
+
+
+
+
+
+BP/feature_rules/custom_tree_feature_rule.json
+
+```json
+{
+ "format_version": "1.13.0",
+ "minecraft:feature_rules": {
+ "description": {
+ "identifier": "wiki:custom_tree_feature_rule",
+ "places_feature": "wiki:custom_tree_feature"
+ },
+ "conditions": {
+ "placement_pass": "surface_pass",
+ "minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "plains"
+ }
+ ]
+ },
+ "distribution": {
+ "iterations": 1,
+ "x": {
+ "distribution": "uniform",
+ "extent": [0, 16]
+ },
+ "y": "q.heightmap(v.worldx, v.worldz)",
+ "z": {
+ "distribution": "uniform",
+ "extent": [0, 16]
+ }
+ }
+ }
+}
+```
+
+
+
+## Resource Pack (optional guide)
+
+Now it is time to make a resource pack!
+
+Make translations for blocks:
+
+RP/texts/en_US.lang
+
+```
+tile.wiki:custom_log.name=Custom Log
+tile.wiki:custom_leaves.name=Custom Leaves
+tile.wiki:custom_stripped_log.name=Custom Stripped Log
+tile.wiki:custom_sapling.name=Custom Sapling
+item.wiki:custom_sapling_placer=Custom Sapling
+```
+
+Make terrain_texture.json and textures.
+
+RP/textures/terrain_texture.json
+
+```json
+{
+ "resource_pack_name": "custom-trees",
+ "texture_name": "atlas.terrain",
+ "num_mip_levels": 4,
+ "padding": 8,
+ "texture_data": {
+ "custom_leaves": {
+ "textures": "textures/blocks/leaves_oak"
+ },
+ "custom_log": {
+ "textures": "textures/blocks/log_oak"
+ },
+ "custom_log_top": {
+ "textures": "textures/blocks/log_oak_top"
+ },
+ "custom_stripped_log": {
+ "textures": "textures/blocks/stripped_oak_log"
+ },
+ "custom_stripped_log_top": {
+ "textures": "textures/blocks/stripped_oak_log_top"
+ },
+ "custom_sapling": {
+ "textures": "textures/blocks/sapling_oak"
+ }
+ }
+}
+```
+
+Make geometry for sapling:
+
+RP/models/blocks/custom_sapling.geo.json
+
+```json
+{
+ "format_version": "1.12.0",
+ "minecraft:geometry": [
+ {
+ "description": {
+ "identifier": "geometry.custom_sapling",
+ "texture_width": 16,
+ "texture_height": 16,
+ "visible_bounds_width": 2,
+ "visible_bounds_height": 2.5,
+ "visible_bounds_offset": [0, 0.75, 0]
+ },
+ "bones": [
+ {
+ "name": "sapling",
+ "pivot": [0, 0, 0],
+ "cubes": [
+ {
+ "origin": [-8, 0, 0],
+ "size": [16, 16, 0],
+ "pivot": [0, 0, 0],
+ "rotation": [0, 45, 0],
+ "uv": {
+ "north": {"uv": [0, 0], "uv_size": [16, 16]}
+ }
+ },
+ {
+ "origin": [-8, 0, 0],
+ "size": [16, 16, 0],
+ "pivot": [0, 0, 0],
+ "rotation": [0, -45, 0],
+ "uv": {
+ "north": {"uv": [0, 0], "uv_size": [16, 16]}
+ }
+ }
+ ]
+ }
+ ]
+ }
+ ]
+}
+```
+
+Make item_texture file
+
+RP/textures/item_texture.json
+
+```json
+{
+ "resource_pack_name": "custom-trees",
+ "texture_name": "atlas.items",
+ "texture_data": {
+ "custom_sapling_placer": {
+ "textures": "textures/blocks/sapling_oak"
+ }
+ }
+}
+```
+
+Add sounds to blocks
+
+RP/blocks.json
+
+```json
+{
+ "format_version": [1, 1, 0],
+ "wiki:custom_leaves": {
+ "sound": "grass"
+ },
+ "wiki:custom_log": {
+ "sound": "wood"
+ },
+ "wiki:custom_stripped_log": {
+ "sound": "wood"
+ },
+ "wiki:custom_sapling": {
+ "sound": "grass"
+ }
+}
+```
+
+## Result
+
+What you have created:
+
+
+
+- [x] Custom Trees with Decaying Leaves
+- [x] Working Sapling
+- [x] Rotatable and Stripable Logs
+
+
+
+
+
+
+
+## Download Example Pack
+
+Template Pack to use in-game to get the idea.
+
+Download MCADDON
\ No newline at end of file
diff --git a/docs/wiki/2-方块/5-文档/block-shapes.md b/docs/wiki/2-方块/5-文档/block-shapes.md
new file mode 100644
index 00000000..0fed78c0
--- /dev/null
+++ b/docs/wiki/2-方块/5-文档/block-shapes.md
@@ -0,0 +1,131 @@
+---
+title: 方块形状
+category: 文档
+mentions:
+ - SirLich
+ - yanasakana
+ - MedicalJewel105
+ - aexer0e
+ - Luthorius
+ - Fabrimat
+ - TheItsNameless
+ - QuazChick
+---
+
+# 方块形状
+
+
+
+:::warning 已弃用
+方块形状功能已不再受官方支持,且无法应用于自定义方块,但仍可作用于原版方块。
+:::
+
+方块形状本质上是硬编码于原版游戏中的几何模型,这意味着它们的存在不依赖于可见建模文件。
+
+## 应用方式
+
+在资源包的`blocks.json`文件中,通过方块对象的`"blockshape"`子项进行定义。具体示例如下:
+
+::: code-group
+```json [RP/blocks.json]
+"wiki:invisible_aluminium_ore": {
+ "blockshape": "invisible",
+ "sound": "stone",
+ "textures": "invisible_aluminium_ore"
+}
+```
+:::
+
+## 已知方块形状列表
+
+| 标识符 | 方块形状名称 |
+| --- | ------------------------- |
+| -1 | invisible(不可见) |
+| 0 | block(普通方块) |
+| 1 | cross_texture(交叉纹理) |
+| 2 | torch(火把) |
+| 3 | fire(火焰) |
+| 4 | water(水体) |
+| 5 | red_dust(红石粉) |
+| 6 | rows(行排列) |
+| 7 | door(门) |
+| 8 | ladder(梯子) |
+| 9 | rail(轨道) |
+| 10 | stairs(阶梯) |
+| 11 | fence(栅栏) |
+| 12 | lever(拉杆) |
+| 13 | cactus(仙人掌) |
+| 14 | bed(床) |
+| 15 | diode(二极管) |
+| 18 | iron_fence(铁栏杆) |
+| 19 | stem(茎干) |
+| 20 | vine(藤蔓) |
+| 21 | fence_gate(栅栏门) |
+| 22 | chest(箱子) |
+| 23 | lilypad(睡莲) |
+| 25 | brewing_stand(炼药台) |
+| 26 | portal_frame(传送门框架) |
+| 28 | cocoa(可可豆) |
+| 31 | tree(树木) |
+| 32 | cobblestone_wall(圆石墙) |
+| 40 | double_plant(双层植物) |
+| 42 | flower_pot(花盆) |
+| 43 | anvil(铁砧) |
+| 44 | dragon_egg(龙蛋) |
+| 48 | structure_void(结构空位) |
+| 67 | block_half(半砖) |
+| 68 | top_snow(顶层雪) |
+| 69 | tripwire(绊线) |
+| 70 | tripwire_hook(绊线钩) |
+| 71 | cauldron(炼药锅) |
+| 72 | repeater(中继器) |
+| 73 | comparator(比较器) |
+| 74 | hopper(漏斗) |
+| 75 | slime_block(粘液块) |
+| 76 | piston(活塞) |
+| 77 | beacon(信标) |
+| 78 | chorus_plant(紫颂植物) |
+| 79 | chorus_flower(紫颂花) |
+| 80 | end_portal(末地传送门) |
+| 81 | end_rod(末地烛) |
+| 83 | skull(头颅) |
+| 84 | facing_block(朝向方块) |
+| 85 | command_block(命令方块) |
+| 86 | terracotta(陶瓦) |
+| 87 | double_side_fence(双面栅栏) |
+| 88 | frame(物品展示框) |
+| 89 | shulker_box(潜影盒) |
+| 90 | doublesided_cross_texture(双面交叉纹理) |
+| 91 | doublesided_double_plant(双面双层植物) |
+| 92 | doublesided_rows(双面行排列) |
+| 93 | element_block(元素方块) |
+| 94 | chemistry_table(化学工作台)|
+| 96 | coral_fan(珊瑚扇) |
+| 97 | seagrass(海草) |
+| 98 | kelp(海带) |
+| 99 | trapdoor(活板门) |
+| 100 | sea_pickle(海泡菜) |
+| 101 | conduit(潮涌核心) |
+| 102 | turtle_egg(海龟蛋) |
+| 105 | bubble_column(气泡柱) |
+| 106 | barrier(屏障) |
+| 107 | sign(告示牌) |
+| 108 | bamboo(竹子) |
+| 109 | bamboo_sapling(竹笋) |
+| 110 | scaffolding(脚手架) |
+| 111 | grindstone(砂轮) |
+| 112 | bell(钟) |
+| 113 | lantern(灯笼) |
+| 114 | campfire(营火) |
+| 115 | lectern(讲台) |
+| 116 | sweet_berry_bush(甜浆果丛)|
+| 117 | cartography_table(制图台) |
+| 119 | stonecutter_block(切石机) |
+| 123 | chain(锁链) |
+| 126 | sculk_sensor(侦测器) |
+| 133 | azalea(杜鹃花丛) |
+| 133 | flowering_azalea(盛开的杜鹃花丛) |
+| 134 | glow_frame(荧光物品展示框)|
+| 135 | glow_lichen(发光地衣) |
+
+[原作者致谢](https://gist.github.com/toka7290/3bef704d2f57c775bb9ac84443a6df1c)
\ No newline at end of file
diff --git a/docs/wiki/2-方块/5-文档/block-sounds.md b/docs/wiki/2-方块/5-文档/block-sounds.md
new file mode 100644
index 00000000..3b1f1b20
--- /dev/null
+++ b/docs/wiki/2-方块/5-文档/block-sounds.md
@@ -0,0 +1,122 @@
+---
+title: 方块声音
+category: 文档
+mentions:
+ - MedicalJewel105
+ - TheItsNameless
+ - QuazChick
+---
+
+# 方块声音
+
+
+
+方块声音指的是`blocks.json`中方块条目内的音效属性。
+该属性用于设置方块的基本音效,包含挖掘音效、踩踏音效、破坏音效和放置音效等。您可以通过以下方式为方块添加音效:
+
+::: code-group
+```json [RP/blocks.json]
+{
+ "format_version": [1, 1, 0],
+ "wiki:custom_log": {
+ "sound": "wood" // 在此定义音效
+ }
+}
+```
+:::
+
+以下为`sound`属性的有效值:
+
+
+| *最后更新于1.20.10版本* |
+| -------------------------- |
+| amethyst_block |
+| amethyst_cluster |
+| ancient_debris |
+| anvil |
+| azalea |
+| azalea_leaves |
+| bamboo |
+| bamboo_sapling |
+| bamboo_wood |
+| bamboo_wood_hanging_sign |
+| basalt |
+| big_dripleaf |
+| bone_block |
+| calcite |
+| candle |
+| cave_vines |
+| chain |
+| cherry_leaves |
+| cherry_wood |
+| cherry_wood_hanging_sign |
+| chiseled_bookshelf |
+| cloth |
+| comparator |
+| copper |
+| coral |
+| decorated_pot |
+| deepslate |
+| deepslate_bricks |
+| dirt_with_roots |
+| dripstone_block |
+| frog_spawn |
+| froglight |
+| fungus |
+| glass |
+| grass |
+| gravel |
+| hanging_roots |
+| hanging_sign |
+| honey_block |
+| itemframe |
+| ladder |
+| lantern |
+| large_amethyst_bud |
+| lever |
+| lodestone |
+| mangrove_roots |
+| medium_amethyst_bud |
+| metal |
+| moss_block |
+| moss_carpet |
+| mud |
+| mud_bricks |
+| muddy_mangrove_roots |
+| nether_brick |
+| nether_gold_ore |
+| nether_sprouts |
+| nether_wart |
+| nether_wood |
+| nether_wood_hanging_sign |
+| netherite |
+| netherrack |
+| nylium |
+| packed_mud |
+| pink_petals |
+| pointed_dripstone |
+| powder_snow |
+| roots |
+| sand |
+| scaffolding |
+| sculk |
+| sculk_catalyst |
+| sculk_sensor |
+| sculk_shrieker |
+| sculk_vein |
+| shroomlight |
+| slime |
+| small_amethyst_bud |
+| snow |
+| soul_sand |
+| soul_soil |
+| spore_blossom |
+| stem |
+| stone |
+| suspicious_gravel |
+| suspicious_sand |
+| sweet_berry_bush |
+| tuff |
+| vines |
+| wood |
+
\ No newline at end of file
diff --git a/docs/wiki/3-实体/1-基础/entity-events.md b/docs/wiki/3-实体/1-基础/entity-events.md
new file mode 100644
index 00000000..f1e34da2
--- /dev/null
+++ b/docs/wiki/3-实体/1-基础/entity-events.md
@@ -0,0 +1,273 @@
+---
+title: 实体事件
+category: 综合
+mentions:
+ - ChibiMango
+ - SirLich
+ - Joelant05
+ - MedicalJewel105
+ - aexer0e
+ - SmokeyStack
+ - ThomasOrs
+tags:
+ - 新手
+---
+
+# 实体事件
+
+
+
+实体事件是行为系统中与组件(Component)和组件组(Component Group)并列的基础构建模块之一。它们作为组件组的控制中枢,可以通过组件、动画(Animation)、动画控制器(Animation Controller)及其他事件进行调用。本文旨在详解实体内部及跨实体事件调用的方法,以及事件的基本格式结构。
+
+## 事件结构
+
+事件允许我们在特定条件满足时,通过添加或移除组件组来改变实体的行为模式。我们称之为"事件(Event)",因为它们可以被战斗倒计时结束、玩家交互、环境变化等情景所触发。当事件激活时,会根据预定义指令处理组件组的增删操作。
+
+每个事件可包含七个核心指令键,分别用于执行组件组增删、条件判断、事件触发及属性设置:
+- add(添加)
+- remove(移除)
+- randomize(随机化)
+- sequence(序列)
+- filters(过滤器)
+- trigger(触发器)
+- set_property(属性设置)
+
+### 添加/移除
+
+事件最基础的功能是通过add/remove键直接增删组件组。如下示例中的`wiki:ranged_attacker`事件:
+
+::: code-group
+```json [示例]
+"wiki:ranged_attacker":{
+ "add":{
+ "component_groups":[
+ "attacker",
+ "ranged"
+ ]
+ },
+ "remove":{
+ "component_groups":[
+ "standby",
+ "melee"
+ ]
+ }
+}
+```
+:::
+
+:::tip 组件覆盖规则
+当添加组件组时,若现有活跃组件组中已包含同名组件,后添加的组件组会覆盖原有组件。
+:::
+
+### 随机化
+
+randomize参数允许根据权重概率随机执行组件组操作。原版牛的生成事件即使用该机制,实现95%概率生成成年牛,5%概率生成幼崽:
+
+::: code-group
+```json [牛生成逻辑]
+"minecraft:entity_spawned":{
+ "randomize":[
+ {
+ "weight":95,
+ "add":{
+ "component_groups":[
+ "minecraft:cow_adult"
+ ]
+ }
+ },
+ {
+ "weight":5,
+ "add":{
+ "component_groups":[
+ "minecraft:cow_baby"
+ ]
+ }
+ }
+ ]
+}
+```
+:::
+
+:::warning 注意
+随机化配置中对每组权重进行归一化处理,最终不同选项的选择概率与其权重值占总权重的比例相关。
+:::
+
+### 序列/过滤器
+
+通过sequence参数可实现条件分支逻辑。原版僵尸的溺水转换事件根据是否是幼体执行不同操作:
+
+::: code-group
+```json [僵尸溺水转换]
+"minecraft:convert_to_drowned":{
+ "sequence":[
+ {
+ "filters":{
+ "test":"has_component",
+ "operator":"!=",
+ "value":"minecraft:is_baby"
+ },
+ "add":["minecraft:convert_to_drowned"],
+ "remove":["minecraft:start_drowned_transformation"]
+ },
+ {
+ "filters":{
+ "test":"has_component",
+ "value":"minecraft:is_baby"
+ },
+ "add":["minecraft:convert_to_baby_drowned"],
+ "remove":["minecraft:start_drowned_transformation"]
+ }
+ ]
+}
+```
+:::
+
+:::tip 序列执行机制
+序列中的每个分支会依次检查执行,通过过滤器的分支都会被执行而无互斥性。若无过滤器则默认执行,但不影响后续分支的判断。
+:::
+
+下面这个整合多条件的攻击序列示例展示了复杂逻辑的实现:
+
+::: spoiler title="复杂攻击序列示例"
+
+::: code-group
+```json [攻击逻辑]
+"wiki:on_hit":{
+ "randomize":[
+ {
+ "weight":60 //60%概率无操作
+ },
+ {
+ "weight":40,
+ "sequence":[
+ {"trigger":"attack_event"},
+ {
+ "filters":["!minecraft:is_sheared"],
+ "sequence":[...]
+ },
+ {
+ "filters":["minecraft:is_sheared"],
+ "sequence":[...]
+ }
+ ]
+ }
+ ]
+}
+```
+:::
+:::
+
+### 事件触发
+
+通过trigger参数可以在事件中调用其他事件,结合target参数可实现跨实体交互。以玩家与猪互动事件为例:
+
+::: code-group
+```json [互动事件]
+"wiki:on_interact": {
+ "trigger": {
+ "filters":{
+ "test":"is_family",
+ "subject":"self",
+ "value":"pig"
+ },
+ "event":"wiki:interacted",
+ "target":"other"
+ }
+}
+```
+:::
+
+:::tip 目标上下文
+事件的执行需要明确的实体上下文。例如互动事件中,"other"指代互动发起者。若无对应上下文时,"target"指令将失效。
+:::
+
+## 事件调用方式
+
+事件可通过以下五种途径触发:
+1. 组件系统调用(如环境传感器)
+2. 动画时间轴调用
+3. 动画控制器状态切换
+4. 其他事件链式调用
+5. 控制台命令 `/event`
+
+以下示例展示不同调用方式:
+
+### 组件系统调用
+
+僵尸的水下转换事件通过环境传感器触发:
+
+::: code-group
+```json [僵尸转换]
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters":["is_underwater"],
+ "event":"minecraft:start_transforming"
+ }
+}
+```
+:::
+
+### 动画调用
+
+在动画时间轴中按时间节点触发扑击事件:
+
+::: code-group
+```json [动画事件]
+"animation.entity.pounce_timer": {
+ "timeline": {
+ "10.0": "@s wiki:start_pouncing"
+ },
+ "animation_length":10.1
+}
+```
+:::
+
+### 跨实体事件调用
+
+唤魔者的特殊技能通过发送事件到特定实体:
+
+::: code-group
+```json [唤魔者技能]
+"minecraft:behavior.send_event":{
+ "event_choices":[{
+ "filters":["is_family:sheep"],
+ "sequence":[{
+ "event":"wololo",
+ "target":"other"
+ }]
+ }]
+}
+```
+:::
+
+### 内置事件
+
+系统级自动触发事件需特别注意:
+
+| 事件名称 | 触发条件 |
+|------------------------------|--------------------------|
+| minecraft:entity_spawned | 实体生成时 |
+| minecraft:entity_born | 繁殖产生新实体时 |
+| minecraft:entity_transformed | 实体形态转换完成时 |
+| minecraft:on_prime | 爆炸物引信燃尽准备爆炸时 |
+
+::: code-group
+```json [牛实体配置示例]
+"events": {
+ "minecraft:entity_spawned": {
+ "randomize":[
+ {"weight":95, "add":["minecraft:cow_adult"]},
+ {"weight":5, "add":["minecraft:cow_baby"]}
+ ]
+ },
+ "minecraft:entity_born":{
+ "add":["minecraft:cow_baby"]
+ },
+ "minecraft:entity_transformed":{
+ "add":["minecraft:cow_adult"]
+ }
+}
+```
+:::
+
+通过合理组合这些功能模块,开发者可以创建出丰富复杂的实体行为逻辑。建议配合动画控制器文档以构建更高级的行为系统。
\ No newline at end of file
diff --git a/docs/wiki/3-实体/1-基础/entity-intro-bp.md b/docs/wiki/3-实体/1-基础/entity-intro-bp.md
new file mode 100644
index 00000000..5178f2f4
--- /dev/null
+++ b/docs/wiki/3-实体/1-基础/entity-intro-bp.md
@@ -0,0 +1,178 @@
+---
+title: 实体行为包入门指南
+category: 基础知识
+nav_order: 1
+tags:
+ - 指南
+ - 新手入门
+mentions:
+ - SirLich
+ - solvedDev
+ - stirante
+ - Joelant05
+ - destruc7ion
+ - MedicalJewel105
+ - ChibiMango
+ - SmokeyStack
+ - ThomasOrs
+---
+
+# 实体行为包入门指南
+
+
+
+构成行为包实体文件基础的三个主要结构如下:本文将解释它们的含义及使用方法。
+
+组件组(component group)与组件(components)的混淆是常见的错误来源,请特别注意区分两者的区别。
+
+## 组件(Components)
+
+组件是构成Minecraft实体的逻辑构建模块。所有组件均由Mojang开发并提供给开发者使用。组件可实现多种功能,例如设置实体尺寸或赋予游泳能力等。完整组件列表可参考[官方文档](https://bedrock.dev/docs/stable/Entities)。
+
+_无法_创建自定义组件。所有组件列表由微软硬编码实现并对外提供。
+
+需要为实体添加行为时,可通过在`minecraft:entity`对象的`components`属性中插入组件。例如要给实体添加攀爬能力,可插入组件:`"minecraft:can_climb": {}`。
+
+组件统一采用`"minecraft:<组件名称>": { <参数设置> }`格式。不同类型组件需要设置不同参数。
+
+以下是实体内的组件应用范例:
+
+::: code-group
+```json [BP/entities/example.json#minecraft:entity]
+"components": {
+ "minecraft:type_family": {
+ "family": [
+ "player"
+ ]
+ },
+ "minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.8
+ },
+ "minecraft:can_climb": {},
+}
+```
+:::
+
+(注意`components`列表_仅_包含组件)
+
+## 组件组(Component Groups)
+
+组件组用于整理归类多个组件。通过`事件(events)`可动态添加或移除组件组,从而实现定制化游戏玩法。
+
+应用示例:
+
+::: code-group
+```json [BP/entities/example.json#minecraft:entity]
+"component_groups": {
+
+ //组件组名称
+ "minecraft:cat_persian": {
+
+ //合法的组件列表(可添加多项)
+ "minecraft:variant": {
+ "value": 6
+ },
+ "minecraft:physics": {}
+ },
+
+ //第二个组件组名称
+ "wiki:example_group": {
+ "minecraft:type_family": {
+ "family": [
+ "wiki_is_awesome!"
+ ]
+ }
+ }
+}
+```
+:::
+
+所有组件组均为自定义创建,不可直接引用其他实体的组件组。
+
+在原版Minecraft实体中,组件组使用`minecraft:`前缀命名(如示例中的`minecraft:cat_persian`)。但需特别注意这些_并非_组件。开发者可自由使用任意命名规则,例如上文中的`wiki:example_group`。更多命名空间信息请参阅[此文档](/concepts/namespaces)。
+
+放在组件组中的组件不会自动生效,必须通过事件激活才能影响实体行为。多个组件组可同时生效。
+
+## 事件(Events)
+
+事件是一种特殊语法,用于在满足条件时通过组件触发添加/移除组件组的操作,从而实现实体的动态行为。
+
+示例结构:
+
+::: code-group
+```json [BP/entities/example.json#minecraft:entity#events]
+"minecraft:ageable_grow_up": { //事件名称
+ "remove": { //需要移除的组件组列表
+ "component_groups": [
+ "minecraft:cat_baby"
+ ]
+ },
+ "add": {
+ "component_groups": [
+ "minecraft:cat_adult" //需要添加的组件组列表
+ ]
+ }
+},
+```
+:::
+
+事件与组件组相同,均为完全自定义内容。不可直接照搬其他实体的事件名称(例如`"minecraft:ageable_grow_up"`)。若需类似功能,应自主设计组件组和事件。
+
+_仅能对组件组进行添加/移除操作_,无法直接操作单个组件。
+
+当满足某些条件时,特定组件会触发事件。下方示例演示交互功能实现:
+
+::: code-group
+```json [BP/entities/example.json#minecraft:entity]
+"components": {
+ "minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": [ //触发条件筛选器
+ {
+ "test":"is_family",
+ "subject": "other",
+ "value": "player" //被交互对象属于玩家
+ }
+ ],
+ "target": "self", //作用目标为实体自身
+ "event": "wiki:on_interact" //触发指定事件
+ }
+ }
+ ]
+ }
+},
+"component_groups": {
+ "wiki:interacted": {
+ "minecraft:scale": { //缩放组件
+ "value": 2
+ }
+ }
+},
+"events":{
+ "wiki:on_interact":{ //事件定义
+ "add": {
+ "component_groups": [ "wiki:interacted" ] //添加组件组
+ }
+ }
+}
+```
+:::
+
+当玩家与该实体交互时,将触发`"wiki:on_interact"`事件,添加`"wiki:interacted"`组件组,从而激活缩放效果。
+
+想深入了解事件的更多用法,请参阅[实体事件](/entities/entity-events)页面。
+
+实体事件详解
+
+## 原版应用案例
+
+组件组与事件是原版实体实现自定义行为的核心工具。以下列举部分原版特性应用:
+
+- 僵尸在水下停留过久后会通过事件转变为溺尸(drowned)
+
+- 狐狸根据生成环境的不同,采用`minecraft:fox_red`与`minecraft:fox_active`组件组实现毛色变化
+
+- 末影人使用事件机制实现被注视时进行攻击
\ No newline at end of file
diff --git a/docs/wiki/3-实体/1-基础/entity-intro-rp.md b/docs/wiki/3-实体/1-基础/entity-intro-rp.md
new file mode 100644
index 00000000..395ef62e
--- /dev/null
+++ b/docs/wiki/3-实体/1-基础/entity-intro-rp.md
@@ -0,0 +1,273 @@
+---
+title: 实体资源包入门指南
+category: 基础指南
+nav_order: 2
+tags:
+ - 新手教程
+ - 入门指南
+mentions:
+ - SirLich
+ - MedicalJewel105
+ - Overload1252
+ - ChibiMango
+ - Luthorius
+ - TheItsNameless
+ - SmokeyStack
+ - ThomasOrs
+---
+
+# 实体资源包入门指南
+
+
+
+资源包中的实体文件定义了构成实体视觉效果的各种资源引用,同时包含了如何渲染这些视觉元素的详细逻辑。
+
+本文将分解实体文件的每个组成部分并进行详细说明。如需创建自定义实体的完整指引,请参考我们的[新手教程](/guide/custom-entity)。
+
+## 文件大纲
+
+::: code-group
+```json [RP/entity/example.json]
+{
+ "format_version": "1.10.0",
+ "minecraft:client_entity": {
+ "description": {
+ "identifier": "wiki:example",
+ "materials": {...},
+ "textures": {...},
+ "geometry": {...},
+ "render_controllers": [...],
+
+ "animations": {...},
+ "scripts": {...},
+
+ "sound_effects": {...},
+ "particle_effects": {...},
+
+ "spawn_egg": {...},
+ "enable_attachables": false,
+ "hide_armor": false
+ }
+ }
+}
+```
+:::
+
+尽管看起来复杂,文件中大部分内容都采用**简称定义**模式。简称定义允许我们将资源路径(如材质纹理)或几何体ID等元素映射为简短名称以便后续引用。这种设计既方便后续资源路径变更时集中修改,也使代码保持简洁。
+
+## 材质系统
+材质(Materials)决定了纹理的渲染方式。例如骷髅使用透明材质,而末影人的眼睛材质具有自发光特性。大部分情况下可以直接使用预设材质而无需自定义。
+
+::: code-group
+```json [RP/entity/spider.entity.json#minecraft:client_entity/description]
+"materials": {
+ "default": "spider",
+ "invisible": "spider_invisible"
+}
+```
+:::
+
+这里的`default`和`invisible`是简称,分别指向`spider`和`spider_invisible`材质。需要注意的是单纯的简称定义并不会告知实体何时使用不同材质。
+
+[预置材质列表](/documentation/materials)可供参考。[自定义材质教程](/visuals/materials)适合进阶开发者。
+
+## 纹理配置
+纹理(Textures)是映射到模型表面的图像文件。此部分同样使用简称定义系统:
+
+::: code-group
+```json [RP/entity/bee.entity.json#minecraft:client_entity/description]
+"textures": {
+ "default": "textures/entity/bee/bee",
+ "angry": "textures/entity/bee/bee_angry",
+ "nectar": "textures/entity/bee/bee_nectar",
+ "angry_nectar": "textures/entity/bee/bee_angry_nectar"
+}
+```
+:::
+
+支持定义多状态纹理(如蜜蜂的不同状态),也可叠加纹理层(参考村民的生物群系基底+职业层组合)。详细应用技巧参见[渲染控制器章节](/entities/render-controllers)。
+
+## 几何体格式
+几何体(Geometry)由Blockbench等建模工具生成的骨骼模型文件构成:
+
+::: code-group
+```json [RP/entity/creeper.entity.json#minecraft:client_entity/description]
+"geometry": {
+ "default": "geometry.creeper",
+ "charged": "geometry.creeper.charged"
+}
+```
+:::
+
+这里的简称指向几何体文件的唯一标识符(JSON文件中的`identifier`字段)。以苦力怕为例,充电与普通状态使用不同模型:
+
+::: tip
+模型显示异常时,首要检查简称定义是否存在拼写错误。
+:::
+
+## 渲染控制器
+渲染控制器(Render Controllers)是控制实体渲染方式的核心组件,负责协调材质、纹理和模型的搭配使用:
+
+::: code-group
+```json [RP/render_controllers/example.rc.json]
+{
+ "format_version": "1.10.0",
+ "render_controllers": {
+ "controller.render.example": {
+ "geometry": "geometry.default",
+ "materials": [{ "*": "material.default" }],
+ "textures": ["texture.default"]
+ }
+ }
+}
+```
+:::
+
+该示例始终使用"default"标识的各类资源。进阶用法可支持动态切换纹理与隐藏模型部件,详情参阅[渲染控制器指南](/entities/render-controllers)。
+
+在实体文件中通过标识符指定渲染控制器:
+
+::: code-group
+```json [RP/entity/example.json#minecraft:client_entity/description]
+"render_controllers": ["controller.render.example"]
+```
+:::
+
+最低限度的实体文件须包含材质、纹理、几何体、渲染控制器四个基础模块。
+
+## 动画系统
+动画(Animations)定义模型骨骼的运动逻辑,涵盖行走、攻击、视线追踪等交互行为:
+
+::: code-group
+```json [RP/animations/example.a.json]
+{
+ "format_version": "1.8.0",
+ "animations": {
+ "animation.example.walk": {...},
+ "animation.example.attack": {...}
+ }
+}
+```
+:::
+
+实体文件中需配置动画简称以便调用:
+
+::: code-group
+```json [RP/entity/example.json#minecraft:client_entity/description]
+"animations": {
+ "walk": "animation.example.walk",
+ "attack": "animation.example.attack",
+ "attack_controller": "controller.animation.example"
+}
+```
+:::
+
+::: warning 重要提示
+单单定义动画简称并不能启动动画,需通过脚本系统主动调用。
+:::
+
+## 脚本逻辑
+脚本(Scripts)通过Molang表达式协调动画播放、变量设置、模型缩放等动态行为:
+
+::: code-group
+```json [RP/entity/example.json#minecraft:client_entity/description]
+"scripts": {
+ "initialize": [...],
+ "pre_animation": [...],
+ "animate": [...],
+ "scale": "1"
+}
+```
+:::
+
+### 初始化脚本
+实体生成或加载时执行,适合设置初始变量。
+
+### 预动画脚本
+每帧渲染前运行,用于计算动画参数。
+
+### 动画脚本
+每帧执行动画控制器和播放逻辑:
+
+::: code-group
+```json [RP/entity/example.json#minecraft:client_entity/description]
+"animate": [
+ "attack_controller",
+ { "walk": "q.modified_move_speed" }
+]
+```
+:::
+
+`q.modified_move_speed`将行走速度映射为动画播放速率。数值`2`表示双倍播放,动态公式使动画与实体速度保持同步。
+
+### 模型缩放
+`scale`参数支持通过Molang表达式调整模型尺寸:
+
+::: code-group
+```json [RP/entity/example.json#minecraft:client_entity/description]
+"scripts": {
+ "scale": "q.variant",
+ "scaleX": 2,
+ "scaleY": 0.5
+}
+```
+:::
+
+该示例:
+- Y轴方向缩放0.5倍
+- X轴放大2倍
+- 整体尺寸由变体值决定(`minecraft:variant`组件)
+
+::: tip 随机尺寸案例
+`math.random_integer(1,5)`可在初始化时生成1-5的随机缩放系数。
+:::
+
+## 音效配置
+音效简称便于在动画事件中调用:
+
+::: code-group
+```json [RP/entity/example.json#minecraft:client_entity/description]
+"sound_effects": {
+ "attack_1": "mob.entity.attack_1",
+ "attack_2": "mob.entity.attack_2",
+ "attack_3": "mob.entity.attack_3"
+}
+```
+:::
+
+## 粒子系统
+粒子简称用于动画事件触发:
+
+::: code-group
+```json [RP/entity/example.json#minecraft:client_entity/description]
+"particle_effects": {
+ "smoke": "wiki:smoke_particle"
+}
+```
+:::
+
+[自定义粒子教程](/particles/particles) | [动画效果应用](/visuals/animation-effects)
+
+## 生成蛋设置
+生成蛋(Spawn Egg)支持纯色或自定义纹理两种风格:
+
+::: code-group 纯色风格
+```json [RP/entity/example.json#minecraft:client_entity/description]
+"spawn_egg": {
+ "base_color": "#db7500",
+ "overlay_color": "#242222"
+}
+```
+:::
+
+::: code-group 定制纹理
+```json [RP/entity/example.json#minecraft:client_entity/description]
+"spawn_egg": {
+ "texture": "wiki.example"
+}
+```
+:::
+
+## 特殊参数
+- `enable_attachables`(启用配件):控制实体能否持握工具
+- `hide_armor`(隐藏护甲):允许穿装备但不显示外观
\ No newline at end of file
diff --git a/docs/wiki/3-实体/1-基础/entity-properties.md b/docs/wiki/3-实体/1-基础/entity-properties.md
new file mode 100644
index 00000000..556546a7
--- /dev/null
+++ b/docs/wiki/3-实体/1-基础/entity-properties.md
@@ -0,0 +1,236 @@
+---
+title: 实体属性
+category: 常规
+tags:
+ - 实验性
+mentions:
+ - SirLich
+ - sermah
+ - MedicalJewel105
+ - Luthorius
+ - stirante
+ - TheItsNameless
+---
+
+# 实体属性
+
+
+
+:::warning
+本文档包含过时信息及实验性内容。如需最新稳定版信息,请查阅[微软官方文档](https://learn.microsoft.com/en-us/minecraft/creator/documents/introductiontoentityproperties)。
+:::
+
+本文档介绍在Minecraft基岩版1.16.230.52测试版中加入的新实体属性系统(又称Actor Properties)。实体属性的实现目的是在实体服务端(行为包)高效保存数据或存储数值,无需使用组件或属性(例如"minecraft:variant"),其运作原理类似方块属性。
+
+## 实体属性定义
+
+### 定义实体属性
+
+实体属性定义示例:
+
+::: code-group
+```json [实体定义]
+{
+ "minecraft:entity":{
+ "description":{
+ "identifier":"entity:properties_example",
+ "properties":{
+ "property:number_range_example":{
+ "values":{
+ "min":0,
+ "max":100
+ }
+ },
+ "property:number_enum_example":{
+ "values":[
+ 1,
+ 2
+ ]
+ },
+ "property:string_enum_example":{
+ "values":[
+ "first",
+ "second",
+ "third"
+ ]
+ },
+ "property:boolean_enum_example":{
+ "values":[
+ true,
+ false
+ ]
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+### 实体属性字段说明
+
+#### `values`
+
+:::warning
+`values`字段为必填项,缺失此字段可能导致属性注册失败。
+:::
+
+`values`字段可接受枚举值数组或数值区间(注意当前版本中整数、浮点和布尔枚举最多支持两个值):
+
+::: code-group
+```json [数值范围模式]
+"property:range_example": {
+ "values": {
+ "min": 0,
+ "max": 5
+ }
+}
+```
+
+```json [枚举模式]
+"property:enum_example":{
+ "values":[
+ 1,
+ 2
+ ]
+}
+```
+:::
+
+#### `default`
+
+可通过属性对象内的`default`字段设置属性默认值(默认使用枚举数组的第一个元素):
+
+::: code-group
+```json [默认值设置]
+"property:default_value_example":{
+ "values":[
+ true,
+ false
+ ],
+ "default":false
+}
+```
+:::
+
+如示例所示,当实体生成时该属性会默认为`false`而非`true`。
+
+#### `client_sync`
+
+通过设置`client_sync`字段为`true`,可将属性同步到客户端资源包(Resource Pack)使用。默认值为`false`。
+
+::: code-group
+```json [客户端同步示例]
+"property:client_sync_example": {
+ "values": {
+ "min": 0,
+ "max": 20
+ },
+ "client_sync": true
+}
+```
+:::
+
+### 操作与访问实体属性
+
+可通过以下Molang查询访问实体属性:
+ - `q.actor_property`
+ - `q.has_actor_property`
+
+:::warning
+这些Molang查询属于实验性功能
+:::
+
+可通过`set_actor_property`事件响应设置实体属性值:
+
+::: code-group
+```json [事件响应示例]
+"events":{
+ "event:set_entity_property":{
+ "set_actor_property":{
+ "property:number_enum_example":2,
+ "property:string_enum_example":"'second'",
+ "property:boolean_enum_example":"!q.actor_property('property:boolean_enum_example')"
+ }
+ }
+}
+```
+:::
+
+## 实体别名系统
+
+可通过定义实体别名(aliases),在`summon`指令中调用自定义标识符生成带预置属性的实体:
+
+::: code-group
+```json [别名定义]
+{
+ "format_version": "1.16.0",
+ "minecraft:entity": {
+ "description": {
+ "identifier": "entity:properties_example",
+ "is_spawnable": true,
+ "is_summonable": true,
+ "is_experimental": false,
+ "properties": {
+ "property:property_index": {
+ "client_sync": true,
+ "values": {
+ "min": 0,
+ "max": 2
+ },
+ "default": 0
+ }
+ },
+ "aliases": {
+ "entity:default_alias": {},
+ "entity:first_alias": {
+ "property:property_index": 1
+ },
+ "entity:second_alias": {
+ "property:property_index": 2
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+现在通过`/summon entity:first_alias`指令可生成带有`property:property_index=1`属性的实体。
+
+## 实体动态组件
+
+实体动态组件(Entity Permutations)可根据属性条件在每个Tick动态应用组件集合。需在`minecraft:entity`对象内与`components`同级添加`permutations`数组:
+
+::: code-group
+```json [动态组件示例]
+"permutations":[
+ {
+ "condition":"q.actor_property('property:string_enum_example') == 'first'",
+ "components":{
+ "minecraft:scale":{
+ "value":1.0
+ }
+ }
+ },
+ {
+ "condition":"q.actor_property('property:string_enum_example') == 'second'",
+ "components":{
+ "minecraft:scale":{
+ "value":2.0
+ }
+ }
+ },
+ {
+ "condition":"q.actor_property('property:string_enum_example') == 'third'",
+ "components":{
+ "minecraft:scale":{
+ "value":3.0
+ }
+ }
+ }
+]
+```
+:::
+
+当`property:string_enum_example`属性为"first"时,实体会应用1倍缩放,为"second"时应用2倍缩放,为"third"时则应用3倍缩放。
\ No newline at end of file
diff --git a/docs/wiki/3-实体/1-基础/npc-dialogs.md b/docs/wiki/3-实体/1-基础/npc-dialogs.md
new file mode 100644
index 00000000..2feafb32
--- /dev/null
+++ b/docs/wiki/3-实体/1-基础/npc-dialogs.md
@@ -0,0 +1,337 @@
+---
+title: NPC 对话框
+category: 通用
+tags:
+ - 中级
+参与贡献:
+ - kyleplo
+ - StuartDA
+ - MedicalJewel105
+ - SirLich
+ - solvedDev
+ - omuhu
+ - Sprunkles137
+ - ThomasOrs
+---
+
+# NPC 对话框
+
+
+
+非玩家角色(NPC)是类似村民的实体,可通过对话框显示消息并提供多个交互按钮。最初设计用于冒险地图,随着 `/dialogue` 命令的引入,现在也能在常规附加包中使用。
+
+## 对话框文件
+
+NPC 对话数据存储于行为包根目录下 `dialogue` 文件夹内的 `.diag.json` 文件中。基础模板示例如下:
+
+::: code-group
+```json [dialogue/example.diag.json]
+{
+ "format_version": "1.17",
+ "minecraft:npc_dialogue": {
+ "scenes": [
+ {
+ "scene_tag": "example",
+ "npc_name": "Steve",
+ "text": "你好"
+ }
+ ]
+ }
+}
+```
+:::
+
+每个场景包含以下可配置参数:
+
+#### scene_tag
+
+场景唯一标识符,用于指定具体场景。
+
+#### npc_name
+
+NPC 显示名称。若省略,则使用 NPC 实体名称(默认为`§eNPC`)。
+
+#### text
+
+显示在对话框中的文本(可选)。
+
+#### on_open_commands
+
+打开对话框时执行的命令列表(可选)。
+
+::: code-group
+```json
+"on_open_commands": [
+ "/say 你好"
+]
+```
+:::
+
+#### on_close_commands
+
+关闭对话框时执行的命令列表(可选)。
+
+::: code-group
+```json
+"on_close_commands": [
+ "/say 再见"
+]
+```
+:::
+
+#### buttons
+
+对话框中显示的按钮配置(可选)。
+
+::: code-group
+```json
+"buttons": [
+ {
+ "name": "按钮一",
+ "commands": [
+ "/say 按钮一被点击了!"
+ ]
+ },
+ {
+ "name": "按钮二",
+ "commands": [
+ "/say 按钮二被点击了!",
+ "/say 第二段命令示例"
+ ]
+ }
+]
+```
+:::
+
+## 玩家选择器
+
+在 `on_open_commands`、`on_close_commands` 和各按钮的 `commands` 中可使用本地选择器 `@p`,但会以 NPC 实体为中心选择。特殊选择器 `@initiator` 可始终指向触发对话框的玩家。
+
+::: code-group
+```json
+"buttons": [
+ {
+ "name": "获得漂浮效果",
+ "commands": [
+ "/effect @initiator levitation"
+ ]
+ }
+]
+```
+:::
+
+注意:`@initiator` 专用于 NPC 对话框,不可在其他场景使用。
+
+## 文本本地化
+
+可通过翻译键实现多语言支持:
+
+::: code-group
+```json
+"npc_name": {
+ "rawtext": [
+ {
+ "translate": "entity.endermite.name"
+ }
+ ]
+}
+```
+:::
+需在资源包语言文件中定义对应翻译键,例如 `entity.endermite.name` 对应中文为"末影螨"。
+
+## 打开对话框
+
+使用 `/dialogue` 命令开启对话框:
+```
+/dialogue open [场景名称:string]
+```
+- ``:需携带 `minecraft:npc` 组件的实体(如原版 NPC)
+- ``:目标玩家
+- `[场景名称:string]`:指定 `scene_tag`(若省略则显示上一个场景)
+
+示例命令:
+```
+/dialogue open @e[type=npc,c=1] @p example
+```
+
+## 切换对话框
+
+使用以下语法变更 NPC 默认对话框:
+```
+/dialogue change <场景名称:string> [player: 目标]
+```
+- `<场景名称:string>`:指定新场景的 `scene_tag`
+- `[player: 目标]`:指定生效玩家(若省略则影响所有人)
+
+示例命令:
+```
+/dialogue change @e[type=npc,c=1] example @r
+```
+
+## 完整范例
+
+本节演示创建具有传送功能的道具和对话系统(完整源码可参见[GitHub](https://github.com/Llama-Studios/dialog-demo))。
+
+### 创建 NPC 实体
+
+即使隐藏 NPC,也需要通过常加载区域保持存在:
+
+::: code-group
+```mcfunction [functions/setup.mcfunction]
+tickingarea add 0 1 0 0 2 0
+summon npc "§r" 0 1 0
+```
+:::
+
+:::tip
+可通过玩家实体触发对话框:
+1. 为玩家添加 `minecraft:npc` 组件
+2. 映射行为包对话框场景
+3. 执行以下命令:
+```
+/dialogue open @s @s
+```
+#### 优劣分析
+`+` 无需维护隐藏 NPC
+`+` 无需管理常加载区域
+`-` 非正常使用可能导致稳定性问题
+`-` 其他玩家点击该玩家时会显示对话框
+
+可通过添加交互组件避免问题:
+::: code-group
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
+```
+:::
+:::
+
+### 对话文件配置
+
+::: code-group
+```json [dialogue/example.diag.json]
+{
+ "format_version":"1.17",
+ "minecraft:npc_dialogue":{
+ "scenes":[
+ {
+ "scene_tag":"main_teleport_menu",
+ "npc_name":"传送菜单",
+ "text":"选择传送目的地",
+ "buttons":[
+ {
+ "name":"区域传送",
+ "commands":[
+ "/dialogue open @e[type=npc,c=1] @initiator districts_teleport_menu"
+ ]
+ },
+ {
+ "name":"个人基地",
+ "commands":[
+ "/tp @initiator -20 4 -20"
+ ]
+ },
+ {
+ "name":"世界出生点",
+ "commands":[
+ "/tp @initiator 0 4 0"
+ ]
+ }
+ ]
+ },
+ {
+ "scene_tag":"districts_teleport_menu",
+ "npc_name":"区域传送",
+ "text":"请选择目标区域",
+ "buttons":[
+ {
+ "name":"< 返回",
+ "commands":[
+ "/dialogue open @e[type=npc,c=1] @initiator main_teleport_menu"
+ ]
+ },
+ {
+ "name":"商业区",
+ "commands":[
+ "/tp @initiator 20 4 20"
+ ]
+ },
+ {
+ "name":"娱乐区",
+ "commands":[
+ "/tp @initiator 20 4 -20"
+ ]
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+:::
+
+### 创建传送物品
+
+::: code-group
+```json [items/teleport_menu.json]
+{
+ "format_version": "1.16.100",
+ "minecraft:item": {
+ "description": {
+ "identifier": "dialog:teleport_menu",
+ "category": "物品"
+ },
+ "components": {
+ "minecraft:on_use": {
+ "on_use": {
+ "event": "open_menu",
+ "target": "self"
+ }
+ },
+ "minecraft:foil": true,
+ "minecraft:icon": {
+ "texture": "ender_pearl"
+ },
+ "minecraft:display_name": {
+ "value": "传送菜单"
+ }
+ },
+ "events": {
+ "open_menu": {
+ "run_command": {
+ "command": [
+ "dialogue open @e[type=npc,c=1] @s main_teleport_menu"
+ ],
+ "target": "player"
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+### 测试步骤
+1. 在超平坦世界启用实验性玩法
+2. 执行 `/function setup` 创建 NPC
+3. 获取道具:`/give @s dialog:teleport_menu`
+4. 切换生存模式使用道具
+
+## 版权声明
+
+本教程改编自 [Minecraft 创作者文档](https://docs.microsoft.com/en-us/minecraft/creator/documents/npcdialogue)。
\ No newline at end of file
diff --git a/docs/wiki/3-实体/1-基础/render-controllers.md b/docs/wiki/3-实体/1-基础/render-controllers.md
new file mode 100644
index 00000000..a2b8f84b
--- /dev/null
+++ b/docs/wiki/3-实体/1-基础/render-controllers.md
@@ -0,0 +1,310 @@
+---
+title: 渲染控制器
+category: 常规
+tags:
+ - beginner
+mentions:
+ - SirLich
+ - MedicalJewel105
+ - Overload252
+ - ChibiMango
+---
+
+# 渲染控制器
+
+
+
+渲染控制器是资源包中常被误解的部分。但您无需畏惧!您可以将渲染控制器视为逻辑包,它们接收来自资源包实体文件中的短名称定义,并决定这些资源在游戏中如何组合/分层/渲染。
+
+## 定义短名称
+
+渲染控制器基于资源包实体文件中的短名称定义运作。短名称是我们在资源包实体文件中定义的本地标识符,可供渲染控制器(及其他地方)调用。我们可以在实体中定义`geometry`(几何体)、`materials`(材质)和`textures`(纹理)等变量。
+
+让我们看看蜘蛛资源包实体文件的简化版本:
+
+::: code-group
+```json [RP/entity/spider.json]
+{
+ "format_version": "1.8.0",
+ "minecraft:client_entity": {
+ "description": {
+ "identifier": "minecraft:cave_spider",
+ "materials": {
+ "default": "spider",
+ "invisible": "spider_invisible"
+ },
+ "textures": {
+ "default": "textures/entity/spider/cave_spider"
+ },
+ "geometry": {
+ "default": "geometry.spider.v1.8"
+ },
+ "render_controllers": ["controller.render.spider"]
+ }
+ }
+}
+```
+:::
+
+此示例中创建了四个短名称定义:
+- `default`(材质数组)
+- `invisible`(材质数组)
+- `default`(纹理数组)
+- `default`(几何体数组)
+
+您可以在每个数组中定义多个短名称(如上方的材质示例)。将短名称定义视为_导入_所需资源的操作。在此阶段,您在定义实体要使用的纹理、几何体和材质。在渲染控制器阶段不会导入新内容,而是使用已导入的资源来构建最终渲染的实体。
+
+## 简单渲染控制器
+
+一个基础渲染控制器示例如下:
+
+::: code-group
+```json [RP/render_controllers/cow.render.json]
+{
+ "format_version": "1.8.0",
+ "render_controllers": {
+ "controller.render.cow": {
+ "geometry": "Geometry.default",
+ "materials": [
+ {
+ "*": "Material.default"
+ }
+ ],
+ "textures": ["Texture.default"]
+ }
+ }
+}
+```
+:::
+
+该控制器从实体文件获取短名称定义并进行_渲染_。例如`"textures": [ "Texture.default"]`表达:"采用default纹理并应用于实体"。渲染控制器本身并不知晓default纹理的具体内容,只是执行应用指令。
+
+## 复用渲染控制器
+
+由于渲染控制器基于短名称工作,您可以在所有实体中复用同一个渲染控制器。对于只含单一材质、单一纹理和单一几何体的简单实体,无需创建自定义渲染控制器。
+
+例如上方示例的控制器用于`minecraft:cow`实体。若要在自定义包中使用此控制器,只需在实体文件中声明:`"render_controllers": [ "controller.render.cow" ]`。
+
+:::warning 注意!
+渲染控制器基于短名称工作。若使用牛的渲染控制器,必须提供其所需的短名称:
+- `default`几何体
+- `default`纹理
+- `default`材质
+:::
+
+## 创建自定义渲染控制器
+
+当我们需要更精细控制实体渲染时(如分层纹理、多重几何体、不同骨骼应用不同材质),可通过复制原版渲染控制器到`render_controllers`文件夹进行定制化修改。
+
+## 纹理分层
+
+通过纹理分层技术可为自定实体创建叠加纹理。基础思路是通过多个纹理的透明像素区域实现叠加显示。
+
+假设一个**画框**实体:框架固定但画面可变。虽然可以复制10个框架纹理并制作10幅画作,但修改框架时需要改动所有文件。采用分层纹理方案时,首先放置框架纹理,再叠加画作纹理,即可实现框架的集中管理。
+
+### 通过渲染控制器实现
+
+若对渲染控制器不熟悉,建议参考原版案例。例如含有多个纹理的`horse`实体具有典型参考价值。
+
+#### 渲染控制器
+
+::: code-group
+```json [RP/render_controllers/controller.render.texture_layering.json]
+{
+ "format_version": "1.10.0",
+ "render_controllers": {
+ "controller.render.texture_layering": {
+ "geometry": "Geometry.default",
+ "materials": [
+ {
+ "*": "Material.default"
+ }
+ ],
+ "textures": [
+ // 你可以添加任意数量的图层,按从上到下的顺序叠加
+ "Texture.bottom_layer",
+ "Texture.top_layer"
+ ]
+ }
+ }
+}
+```
+:::
+
+#### 实体配置
+
+需要定义所有纹理并使用`villager_v2_masked`材质:
+
+::: code-group
+```json [RP/entity/my_entity.json]
+"materials": {
+ "default": "villager_v2_masked"
+},
+"textures": {
+ "top_layer": "textures/top",
+ "bottom_layer": "textures/bottom"
+ // 在此添加更多纹理短名称定义
+}
+```
+:::
+
+### 动态变体分层
+
+通过动态索引实现纹理切换能创造更灵活的效果:
+
+#### 实体配置
+
+定义多个顶部纹理以供索引:
+
+::: code-group
+```json [RP/entity/my_entity.json#description]
+"textures": {
+ "top_1": "textures/top_1",
+ "top_2": "textures/top_2",
+ "top_3": "textures/top_3",
+ "bottom_layer": "textures/bottom"
+}
+```
+:::
+
+#### 渲染控制器
+
+::: code-group
+```json [RP/render_controllers/controller.render.wool_only]
+{
+ "format_version": "1.10.0",
+ "render_controllers": {
+ "controller.render.wool_only": {
+ "arrays": {
+ "textures": {
+ "Array.top": [
+ "Texture.top_1",
+ "Texture.top_2",
+ "Texture.top_3"
+ ]
+ }
+ },
+ "geometry": "Geometry.default",
+ "materials": [
+ {
+ "*": "Material.default"
+ }
+ ],
+ "textures": [
+ "Texture.bottom", // 静态底层纹理
+ "Array.top[q.variant]" // 根据实体变体选择顶部纹理
+ ]
+ }
+ }
+}
+```
+:::
+
+通过数组和`q.variant`查询,可根据实体variant值动态选择顶部纹理。
+
+#### 设置变体值
+
+要使分层显示生效,需在实体中设置variant组件:
+
+::: code-group
+```json [BP/entities/my_entity.json#components]
+"minecraft:variant": {
+ "value": 0
+}
+```
+:::
+
+注意组件参数采用零索引制,`0`对应第一个纹理,`1`和`2`对应后续纹理。
+
+#### 动态更换纹理
+
+如需在游戏中动态更换纹理,只需修改`variant`值。可通过组件组和事件系统实现此功能。
+
+#### 动态分层进阶
+
+通过添加更多纹理数组和使用虚拟组件(dummy components)作为索引,可实现更复杂的动态分层效果。关于虚拟组件的详细信息请参阅[此文档](/entities/dummy-components)。
+
+### 动态几何体切换
+
+动态切换几何体的原理与纹理类似:
+
+以下示例展示如何根据variant值切换不同几何体。注意几何体不可分层叠加,因此不需要基础层定义,但仍需使用`villager_v2_masked`材质。
+
+::: code-group
+```json [RP/render_controllers/controller.render.player.third_person.json]
+{
+ "format_version": "1.8.0",
+ "render_controllers": {
+ "controller.render.player.third_person": {
+ "materials": [
+ {
+ "*": "Material.default"
+ }
+ ],
+ "textures": [
+ "Texture.bottom",
+ "Array.top[q.variant]"
+ ],
+ "arrays": {
+ "geometries": {
+ "Array.geo": [
+ "Geometry.default",
+ "Geometry.custom_1",
+ "Geometry.custom_2"
+ ]
+ },
+ "textures": {
+ "Array.top": [
+ "Texture.bottom",
+ "Texture.top_1",
+ "Texture.top_2"
+ ]
+ }
+ },
+ "geometry": "Array.geo[q.variant]"
+ }
+ }
+}
+```
+:::
+
+#### 实体配置
+
+确保在实体文件中包含对应几何体变体:
+
+::: code-group
+```json
+"geometry": {
+ "default": "geometry.entity.default",
+ "custom_1": "geometry.entity.custom_1",
+ "custom_2": "geometry.entity.custom_2"
+}
+```
+:::
+
+## 常见错误
+
+在渲染控制器中:
+- 可引用多个纹理但只能引用一个几何体(数组形式亦适用)
+
+::: code-group
+```json
+"arrays": {
+ "textures": {
+ "array.skin": [],
+ "array.dress": []
+ },
+ "geometries": {
+ "array.geo": []
+ }
+}
+```
+
+```json
+"textures": [
+ "array.skin[q.variant]",
+ "array.dress[q.skin_id]"
+],
+"geometry": "array.geo[q.mark_variant]"
+```
+:::
\ No newline at end of file
diff --git a/docs/wiki/3-实体/1-基础/spawn-rules.md b/docs/wiki/3-实体/1-基础/spawn-rules.md
new file mode 100644
index 00000000..e2f7f312
--- /dev/null
+++ b/docs/wiki/3-实体/1-基础/spawn-rules.md
@@ -0,0 +1,159 @@
+---
+title: 实体生成规则
+category: 常规
+mentions:
+ - SirLich
+ - solvedDev
+ - MedicalJewel105
+ - aexer0e
+ - Ciosciaa
+ - FrankyRay
+ - Luthorius
+ - TheItsNameless
+ - SmokeyStack
+---
+
+# 实体生成规则
+
+
+
+生成规则定义了实体如何自然生成到世界中。当您希望自定义实体像原版实体一样自然生成时,应该使用生成规则。通过不同的组件可以定义实体生成的时间、地点和方式。
+
+通常情况下,可以让您的自定义实体采用与原版实体类似的生成方式。例如:像牛一样群生成、像原版僵尸一样仅在夜间生成,或是像鱼类只在水下生成。
+
+## 生成规则示例
+
+以下是一个包含字段说明的生成规则示例:
+
+::: code-group
+```json [BP/spawn_rules/zombie.json]
+{
+ "format_version": "1.8.0",
+ "minecraft:spawn_rules": {
+ "description": {
+ "identifier": "minecraft:zombie",
+ "population_control": "monster"
+ },
+ "conditions": [
+ {
+ "minecraft:spawns_on_surface": {},
+ "minecraft:spawns_underground": {},
+ "minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+ },
+ "minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+ },
+ "minecraft:weight": {
+ "default": 100
+ },
+ "minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+ },
+ "minecraft:permute_type": [
+ {
+ "weight": 95
+ },
+ {
+ "weight": 5,
+ "entity_type": "minecraft:zombie_villager"
+ }
+ ],
+ "minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+ }
+ }
+ ]
+ }
+}
+```
+:::
+
+- `description`→`identifier`: 要生成的实体
+- `population_control`: 控制生成与消失的数量。可选值:`animal`(动物)、`underwater_animal`(水生动物)、`monster`(怪物)、`ambient`(环境生物)
+- `conditions`: 必须满足的条件列表,生成尝试才会成功
+- `minecraft:spawns_on_surface`(地表生成)、`minecraft:spawns_underground`(地下生成)和`minecraft:spawns_underwater`(水下生成)控制实体生成的高度范围
+- `minecraft:brightness_filter`(亮度过滤)取值范围 0-15,控制生成所需光照条件。`adjust_for_weather`选项用于雨天/雷暴天气下是否自动降低有效光照值
+- `minecraft:difficulty_filter`(难度过滤)设置启用生成的游戏难度范围
+- `minecraft:herd`(群体生成)设置基于同个生成规则一起生成的实体数量
+- `minecraft:permute_type`(类型置换)通过`weight`权重和`entity_type`实体类型设置生成实体变异的概率
+- `minecraft:biome_filter`(生物群系过滤)测试特定生物群系标签。具体过滤器语法和生物群系标签列表请参考官方文档,或查看原版示例资源包
+
+## 全部已知组件
+
+以下是所有已知组件列表(随着我们对使用方法的理解加深,将持续补充说明文档):
+
+```
+minecraft:weight
+minecraft:density_limit
+minecraft:spawns_on_block_filter
+minecraft:spawns_on_block_prevented_filter
+minecraft:spawns_above_block_filter
+minecraft:herd
+minecraft:permute_type
+minecraft:brightness_filter
+minecraft:height_filter
+minecraft:spawns_on_surface
+minecraft:spawns_underground
+minecraft:spawns_underwater
+minecraft:disallow_spawns_in_bubble
+minecraft:spawns_lava
+minecraft:biome_filter
+minecraft:difficulty_filter
+minecraft:distance_filter
+minecraft:is_experimental
+minecraft:world_age_filter
+minecraft:delay_filter
+minecraft:mob_event_filter
+minecraft:is_persistent
+minecraft:player_in_village_filter
+```
+
+## 组件文档
+
+### minecraft:herd
+
+::: code-group
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2,
+ "event":"minecraft:entity_born",
+ "event_skip_count": 1
+ },
+```
+:::
+
+- `minecraft:herd`可通过此配置使第二个生成的实体(在此场景中)携带`minecraft:entity_born`事件(表现为幼体)。`event_skip_count`: 2`表示前两个生成的实体不会触发事件,之后生成的都会携带该事件。该功能适用于任意事件类型
+
+### minecraft:spawns_above_block_filter
+
+::: code-group
+```json
+ "minecraft:spawns_above_block_filter": {
+ "blocks": "minecraft:stone",
+ "distance": 10
+ }
+```
+:::
+
+- `minecraft:spawns_above_block_filter`(上方方块过滤)会检测垂直方向设定距离内的方块,当条件满足时允许实体生成
+
+### minecraft:spawns_on_block_prevented_filter
+
+::: code-group
+```json
+ "minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+ ]
+```
+:::
+
+- `minecraft:spawns_on_block_prevented_filter`(禁止生成方块过滤)与上方组件功能相反。该数组包含实体永远无法生成于其上的方块标识符
\ No newline at end of file
diff --git a/docs/wiki/3-实体/1-基础/troubleshooting-entities.md b/docs/wiki/3-实体/1-基础/troubleshooting-entities.md
new file mode 100644
index 00000000..5c274fa0
--- /dev/null
+++ b/docs/wiki/3-实体/1-基础/troubleshooting-entities.md
@@ -0,0 +1,158 @@
+---
+title: 实体问题排查指南
+category: 常规
+nav_order: 3
+tags:
+ - help
+mentions:
+ - SirLich
+ - BlueFrog130
+ - SmokeyStack
+ - MedicalJewel105
+ - aexer0e
+ - ChibiMango
+ - RonarsCorruption
+---
+
+# 实体问题排查指南
+
+
+
+:::tip
+本页面包含关于_实体_的疑难解答信息。在继续阅读前,请务必先查阅[全局问题排查指南](/guide/troubleshooting)。
+:::
+
+:::warning
+请始终记得检查内容日志!
+:::
+
+## 0.0.0 - 确认问题存在
+
+承认吧,某个地方肯定出错了。_任何_水平的开发者在_任何_阶段都可能出现这些疏漏,所以不要觉得被冒犯而想着"我当然会注意这些!",然后跳过必要的检查步骤!
+
+继续
+
+
+## 1.0.0 - 确保两个包都已启用
+
+确认资源包和行为包在世界中都已激活(一个绝佳的防错方法是在两个包的manifest.json文件中互相设置依赖,这样添加或移除其中一个包时会自动同步处理)
+
+继续
+
+## 2.0.0 - 确定问题出现在资源包还是行为包
+
+通过观察实体生成蛋在创造模式物品栏中的显示状态,可以有效定位问题范围。即使您不打算为实体添加生成蛋,请暂时按照以下步骤添加以便定位问题:
+
+### 在资源包中
+
+确保.entity文件包含自定义spawn_egg配置:
+
+::: code-group
+```json [RP]
+"spawn_egg":{
+ "base_color": "#FF0000",
+ "overlay_color": "#FFFF00"
+}
+```
+:::
+
+(建议选择除"#000000"以外的配色以方便排查)
+
+### 在行为包中
+
+确保description对象中开启`is_spawnable`和`is_summonable`,并将`is_experimental`设为false:
+
+::: code-group
+```json [BP]
+"description":{
+ "identifier": "wiki:example_entity",
+ "is_spawnable": true,
+ "is_summonable": true,
+ "is_experimental": false
+}
+```
+:::
+
+### 现象分析
+
+完全看不到生成蛋:前往排查
+
+能看到生成蛋但颜色全黑且无法生成实体:前往排查
+
+生成蛋显示正常颜色但仍旧无法生成实体:前往排查
+
+## 3.0.0 - 定位具体问题
+
+## 3.1.0 - 行为包问题
+
+_即使已在行为文件中设置"is_spawnable": true,在创造模式物品栏中依然无法找到生成蛋_
+
+这通常表示游戏未能正确识别实体行为文件。常见原因包括:
+
+- Json语法错误
+- 文件夹命名错误
+
+### 3.1.1 - 语法错误
+
+单个语法错误会导致整个json文件失效。建议使用[JSON验证工具](https://jsonlint.com/)检查文件的语法完整性(注:虽然该网站会将//注释视为错误,但在Minecraft中实际允许使用注释)
+
+### 3.1.2 - 文件夹误命名
+
+请确认行为包中的实体文件夹命名为"entities"(资源包对应的是"entity",这个不一致设定确实容易引起困惑)
+
+## 步骤3.2.0 - 资源包.entity文件问题
+
+_能在创造模式物品栏中看到生成蛋,但显示为黑色且实体名异常(如"item.spawn_egg.entity.wiki:your_mob.name"),且无法正常生成实体_
+
+此现象说明行为文件已生效,但资源包未能正确关联对应.entity文件。常见原因包括:
+
+- .entity文件语法错误
+- 实体identifier不匹配
+- 资源引用路径错误
+- 资源包文件夹应命名为"entity",行为包文件夹应命名为"entities"
+
+### 步骤3.2.1 - 语法错误
+
+再次推荐使用[JSON验证工具](https://jsonlint.com/)进行深度校验(注意注释标识的兼容性问题)
+
+### 步骤3.2.2 - 标识符不匹配
+
+需确保资源包.entity文件与行为包的identifier字段完全一致,包括命名空间(冒号前的部分,例如`minecraft:bat`中的`minecraft`)。特别注意:
+
+- 除了冒号外不要使用特殊字符
+- 命名空间和ID避免以数字或大写字母开头(虽然现行版本允许,但历史版本曾存在兼容性问题)
+- 非官方实体切勿使用`minecraft`作为命名空间
+
+### 步骤3.2.3 - 无效资源引用
+
+检查.entity文件中各项资源引用路径是否正确指向有效文件
+
+## 步骤3.3.0 - 资源包资源排查(进行中)
+
+_生成蛋显示正常颜色但在生成/召唤时实体不可见或仅显示阴影_
+
+这说明基本功能文件已正常加载,但存在次级资源配置问题。根据现象选择排查方向:
+
+- 完全隐形无阴影 → 资源引用错误:前往
+- 隐形但显示阴影 → 几何体问题:前往
+- 可见但贴图异常 → 材质问题:前往
+- 可见但渲染异常 → 材质类型错误:前往
+
+### 3.3.1 - 完全隐形无阴影
+
+确认实体未设置立即消失逻辑(如instant_despawn),优先检查实体基础配置。
+
+### 3.3.2 - 隐形但显示阴影
+
+此类问题通常涉及模型或材质配置,排查重点:
+
+1. 几何体文件:检查命名正确性、文件完整性和几何偏移量设置
+2. 材质匹配:例如透明材质与普通材质的兼容性
+3. 渲染控制器:验证控制器逻辑与参数设置
+
+### 3.3.3 - 可见但贴图异常
+
+(内容开发中)
+
+### 3.3.4 - 可见但渲染异常
+(内容开发中)
\ No newline at end of file
diff --git a/docs/wiki/3-实体/2-巧思案例/boat-entities.md b/docs/wiki/3-实体/2-巧思案例/boat-entities.md
new file mode 100644
index 00000000..5950599c
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/boat-entities.md
@@ -0,0 +1,165 @@
+---
+title: Creating Boats
+category: Tutorials
+tags:
+ - recipe
+ - intermediate
+mentions:
+ - SirLich
+ - Joelant05
+ - MedicalJewel105
+ - StealthyExpertX
+ - TheItsNameless
+---
+:::warning Requires Format Version 1.16.100 or Lower
+
+The behavior format version now requires 1.16.100 or lower for the `minecraft:behavior.rise_to_liquid_level` and `minecraft:buoyant` methods to work.
+If you find a new method that works in the newer format versions, you should consider helping to contribute by updating the wiki.
+:::
+
+## Using Runtime Identifiers
+
+You can read more about runtime identifiers [here](/entities/runtime-identifier). Using runtime identifiers, you can implement most of the boat's hard-coded behaviors. However, your boat won't rotate with you, and it will always face North.
+
+## Using Components
+
+Currently, the best way to create a boat entity is by using components. 1.16 introduced new components that we can use to our advantage: `minecraft:behavior.rise_to_liquid_level` and `minecraft:buoyant`. Striders use the first one in vanilla to make them float on lava, but we can repurpose it for water as well.
+
+## 1st method: minecraft:behavior.rise_to_liquid_level
+
+BP/entities/bar
+
+```json
+{
+ "minecraft:entity": {
+ "format_version": "1.14.0",
+ "description": {
+ "identifier": "foo:bar",
+ "is_summonable": true,
+ "is_spawnable": true,
+ "is_experimental": false
+ },
+ "components": {
+ //This is the component that does the magic
+ "minecraft:behavior.rise_to_liquid_level": {
+ "priority": 0,
+ //This property can adjust how high your boat is above the water
+ "liquid_y_offset": 0.5,
+ //Positive vertical displacement, in other words, how much the boat will move up
+ "rise_delta": 0.05,
+ //Negative vertical displacement, in other words, how much the boat will move down
+ "sink_delta": 0.05
+ //Use rise_delta and sink_delta to simulate waves/bouncing effect
+ },
+
+ //Sets the boat speed in water
+ "minecraft:underwater_movement": {
+ "value": 5
+ },
+ //This component is important, without it the boat will sink
+ "minecraft:navigation.walk": {
+ "can_sink": false
+ },
+ "minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": ["player"],
+ "interact_text": "action.interact.enter_boat",
+ "seats": {
+ "position": [0, 0, 0]
+ }
+ },
+ //Add this component if you want your boat to be controlled with WASD
+ "minecraft:input_ground_controlled": {},
+ "minecraft:health": {
+ "value": 10,
+ "max": 10
+ },
+ //Sets the boat speed on the ground (set this to zero if you don't want your boats to move on the ground)
+ "minecraft:movement": {
+ "value": 3
+ },
+ //This is to prevent the boat from not stopping whenever a player exits, said the boat
+ "minecraft:movement.basic": {},
+ "minecraft:collision_box": {
+ "width": 1,
+ "height": 1
+ },
+ "minecraft:physics": {}
+ }
+ }
+}
+```
+
+## 2nd method: minecraft:buoyant
+
+
+
+```json
+{
+ "minecraft:entity": {
+ "format_version": "1.14.0",
+ "description": {
+ "identifier": "foo:bar",
+ "is_summonable": true,
+ "is_spawnable": true,
+ "is_experimental": false
+ },
+ "components": {
+ "minecraft:buoyant": {
+ //Determines whether gravity should be taken into account (useful with waterfalls)
+ "apply_gravity": true,
+ //Range: 0-1. This controls how high the boat is above the water
+ "base_buoyancy": 1.0,
+ //A "wave" makes the entity bounce up and down. A big wave simply amplifies this effect. Note: setting simulate_waves to false won't make the effect go away completely.
+ "simulate_waves": true,
+ //How likely a "big" wave will hit this boat
+ "big_wave_probability": 0.03,
+ //How strong the "big" wave will be
+ "big_wave_speed": 10.0,
+ //How strong will the boat be dragged down in case this component is removed
+ "drag_down_on_buoyancy_removed": 0,
+ //Blocks this entity can be buoyant in. Only actual liquids are allowed: lava and water
+ "liquid_blocks": ["water"]
+ },
+
+ //Sets the boat speed in water
+ "minecraft:underwater_movement": {
+ "value": 5
+ },
+ //This component is important, without it the boat will sink
+ "minecraft:navigation.walk": {
+ "can_sink": false
+ },
+ "minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": ["player"],
+ "interact_text": "action.interact.enter_boat",
+ "seats": {
+ "position": [0, 0, 0]
+ }
+ },
+ //Add this component if you want your boat to be controlled with WASD
+ "minecraft:input_ground_controlled": {},
+ "minecraft:health": {
+ "value": 10,
+ "max": 10
+ },
+ //Sets the boat speed on the ground (set this to zero if you don't want your boats to move on the ground)
+ "minecraft:movement": {
+ "value": 3
+ },
+ //This is to prevent the boat from not stopping whenever a player exits the boat
+ "minecraft:movement.basic": {},
+ "minecraft:collision_box": {
+ "width": 1,
+ "height": 1
+ },
+ "minecraft:physics": {}
+ }
+ }
+}
+```
+
+## What method to use?
+
+Both methods are suitable but have their pros and cons. If you want to disable the bouncing effect, use the first method. If you want more control over it, use the second method. I use the second method for static objects, such as buoys, and the first method for movable entities, such as boats, emulating the vanilla behavior.
diff --git a/docs/wiki/3-实体/2-巧思案例/detecting-other-entities.md b/docs/wiki/3-实体/2-巧思案例/detecting-other-entities.md
new file mode 100644
index 00000000..b48fa61b
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/detecting-other-entities.md
@@ -0,0 +1,221 @@
+---
+title: Detecting Other Entities
+category: Tutorials
+tags:
+ - intermediate
+mentions:
+ - ANightDazingZoroark
+ - SmokeyStack
+ - MedicalJewel105
+ - SirLich
+ - Luthorius
+ - TheItsNameless
+---
+
+You might have thought about making your entities fire an event when other entities are nearby. This article details the various known ways to do so.
+
+## minecraft:entity_sensor
+
+This is probably the most basic way to detect other entities. The main issues is it only accepts one entry and testing if the entity is out of range can be very tricky. Because it's an entity component, you can just place into your entity behavior file and edit the Minecraft filters. Here's a demonstration:
+
+BP/entities/my_entity.json#components
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.5, //this is for the radius in blocks it will detect other entities in
+ "relative_range": false, //if true, the sensor range is additive on top of the entity's hitbox size
+ "require_all": true, //if true, all nearby entities must pass the filter conditions for the event to send
+ "minimum_count": 1, //minimum amount of entities required for the event to fire. by default, it's 1
+ "maximum_count": 4, //maximum amount of entities required for the event to fire. by default it's -1, which means infinity
+ "event_filters": { //you can put any filter you want here, the one that's being used in this example just detects players
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "event": "event:on_player_detected" //the event that fires when all the conditions in event_filters are met
+}
+```
+
+## `/execute`
+
+Using the new `/execute` command that has been introduced since 1.19.50, you can execute commands as long as another entity is nearby.
+
+This example you'll be following will make pigs say "oink oink" upon detecting players, though you can replace those with whatever you want. First of all, copy-paste these BP animations.
+
+BP/animations/detection_animation.json
+
+```json
+{
+ "format_version": "1.10.0",
+ "animations": {
+ "animation.pig.find_player": {
+ "animation_length": 0.05,
+ "loop": true,
+ "timeline": {
+ "0": [
+ "/execute as @s if entity @e[type=player, r=4] run event entity @s wiki:player_detected"
+ ]
+ }
+ },
+ "animation.pig.find_no_player": {
+ "animation_length": 0.05,
+ "loop": true,
+ "timeline": {
+ "0": [
+ "/execute as @s unless entity @e[type=player, r=4] run event entity @s wiki:no_player_detected"
+ ]
+ }
+ }
+ }
+}
+```
+
+The first one is for detecting if the entity is present, and the other for detecting if the entity is not present. The events used in the `/event` part of the `/execute` commands can be used for adding a [dummy component](/entities/dummy-components) or updating an [actor property](https://learn.microsoft.com/en-us/minecraft/creator/documents/introductiontoentityproperties).
+
+Next of all, copy paste this BP animation controller. This assumes that you set up the `/event` parts of the `/execute` commands to add or remove `minecraft:is_sheared`.
+
+BP/animation_controllers/pig_animation_controllers.json
+
+```json
+{
+ "format_version": "1.10.0",
+ "animation_controllers": {
+ "controller.animation.pig_find_player": {
+ "initial_state": "default",
+ "states": {
+ "default": {
+ "animations": ["find_player"],
+ "transitions": [
+ {
+ "detected": "q.is_sheared"
+ }
+ ]
+ },
+ "detected": {
+ "animations": ["find_no_player"],
+ "transitions": [
+ {
+ "default": "!q.is_sheared"
+ }
+ ],
+ "on_entry": ["/say oink oink"]
+ }
+ }
+ }
+ }
+}
+```
+Finally, copy-paste this snippet into the behavior file for the pig-like so. Make sure to insert this in `description`.
+
+BP/entities/my_entity.json#description
+
+```json
+"animations": {
+ "manage_find_player": "controller.animation.pig_find_player",
+ "find_player": "animation.pig.find_player",
+ "find_no_player": "animation.pig.find_no_player"
+},
+"scripts": {
+ "animate": [
+ "manage_find_player"
+ ]
+}
+```
+
+## Molang, BP Animations & Animation Controllers
+
+The `for_each` function and `q.get_nearby_entities` or `q.get_nearby_entities_except_self` can also be used for detecting other entities. They are more effective than using `minecraft:entity_sensor` because they are better at detecting if the entity you want to detect goes away than with `minecraft:entity_sensor`. The only downside is that they're experimental.
+
+Just like in the previous method we will make pigs say "oink oink" upon detecting players, though you can replace those with whatever you want. First of all, copy-paste this BP animation:
+
+BP/animations/detection_animation.json
+
+```json
+{
+ "format_version": "1.10.0",
+ "animations": {
+ "animation.pig.find_player": {
+ "animation_length": 0.05,
+ "loop": true,
+ "timeline": {
+ "0": [
+ "v.x = 0.0; for_each(t.player, q.get_nearby_entities_except_self(16, 'minecraft:player'), { v.x = v.x + 1; }); return v.x > 0.0;"
+ ]
+ }
+ }
+ }
+}
+```
+
+The first parameter that `q.get_nearby_entities_except_self` needs to work is the radius in blocks it will detect other entities in. The other is the identifier of the mob you want to make it detect.
+
+Now that's good and all, but on the off chance, you want to make the pig detect players with some attribute that can be detected with Molang, use this.
+
+BP/animations/detection_animation.json
+
+```json
+{
+ "format_version": "1.10.0",
+ "animations": {
+ "animation.pig.find_player": {
+ "animation_length": 0.05,
+ "loop": true,
+ "timeline": {
+ "0": [
+ "v.x = 0.0; for_each(t.player, q.get_nearby_entities_except_self(2, 'minecraft:player'), { v.x = v.x + (t.player -> q.is_sheared); }); return v.x > 0.0;"
+ ]
+ }
+ }
+ }
+}
+```
+
+Next of all, copy paste this BP animation controller:
+
+BP/animation_controllers/pig_animation_controllers.json
+
+```json
+{
+ "format_version": "1.10.0",
+ "animation_controllers": {
+ "controller.animation.pig_find_player": {
+ "initial_state": "default",
+ "states": {
+ "default": {
+ "animations": ["find_player"],
+ "transitions": [
+ {
+ "detected": "v.x > 0"
+ }
+ ]
+ },
+ "detected": {
+ "animations": ["find_player"],
+ "transitions": [
+ {
+ "default": "v.x <= 0"
+ }
+ ],
+ "on_entry": ["/say oink oink"]
+ }
+ }
+ }
+ }
+}
+```
+
+Finally, copy-paste this snippet into the behavior file for the pig-like so. Make sure to insert this in `description`.
+
+BP/entities/my_entity.json#description
+
+```json
+"animations": {
+ "manage_find_player": "controller.animation.pig_find_player",
+ "find_player": "animation.pig.find_player"
+},
+"scripts": {
+ "animate": [
+ "manage_find_player"
+ ]
+}
+```
diff --git a/docs/wiki/3-实体/2-巧思案例/disabling-team-damage.md b/docs/wiki/3-实体/2-巧思案例/disabling-team-damage.md
new file mode 100644
index 00000000..55769d8d
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/disabling-team-damage.md
@@ -0,0 +1,184 @@
+---
+title: Disabling Team-damage
+category: Tutorials
+tags:
+ - intermediate
+mentions:
+ - SirLich
+ - solvedDev
+ - Joelant05
+ - MedicalJewel105
+ - Luthorius
+ - TCLynx
+---
+
+If you wish to disable team damage (so one cannot hurt their teammates), assign a tag with the team name to every teammate (I'm going to use `team1`, `team2`, `team3` and `team4` for this example).
+WARNING: This will NOT work on realms, the reason for this is that on realms there is a bug where modified player.json files in the behavior packs do not work, and the gmae just ignores them (This may be fixed in the future but as of 1.20.15 it is not fixed. (This also applies to older version of minecraft as well.))
+Now add this damage sensor component into your `player.json`s `"components": {}`. See comments for explanation.
+
+BP/entities/player.json#components
+
+```json
+"minecraft:damage_sensor":{
+ "triggers":[
+ { //if you already have a damage sensor, simply copy this object into the "triggers" array
+ "on_damage":{
+ "filters":{
+ "any_of":[
+ {
+ "all_of":[
+ { "test":"has_tag", "value":"team1" }, //Does the player have this tag?
+ { "test":"has_tag", "subject":"other", "value":"team1" } //If so, does the entity they're trying to hurt have this tag?
+ ]
+ },
+ {
+ "all_of":[
+ { "test":"has_tag", "value":"team2" }, //repeats for every team
+ { "test":"has_tag", "subject":"other", "value":"team2" }
+ ]
+ },
+ {
+ "all_of":[
+ { "test":"has_tag", "value":"team3" },
+ { "test":"has_tag", "subject":"other", "value":"team3" }
+ ]
+ },
+ {
+ "all_of":[
+ { "test":"has_tag", "value":"team4" },
+ { "test":"has_tag", "subject":"other", "value":"team4" }
+ ]
+ },
+ {
+ "all_of":[
+ { "test":"has_tag", "value":"team5" },
+ { "test":"has_tag", "subject":"other", "value":"team5" }
+ ]
+ }
+ ]
+ }
+ },
+ "deals_damage":false //if any of these filters evaluate to true in the current attack interaction, the target will not be hurt.
+ }
+ ]
+}
+
+```
+
+### Projectiles
+
+Due to the primitive filters used by projectile entities, you have to use a completely different method to achieve this.
+
+The process uses:
+- Tags
+- Ticking
+- Hurt on Condition
+- Functions
+
+BP/entities/player.json#components
+
+```json
+
+//"components"
+"minecraft:timer": { //This is for applying teams to a projectile to nearby
+ "time": [ //untagged projectiles, through an event.
+ 0.0,
+ 0.1
+ ],
+ "looping": true,
+ "time_down_event": {
+ "event": "wiki:projectile_team",
+ "target": "self"
+ }
+},
+"minecraft:hurt_on_condition": { //The projectile will be unable to directly deal
+ "damage_conditions": [ //damage, so instead we'll apply tags to the
+ { //player, which will trigger this . . .
+ "filters": {
+ "test": "has_tag",
+ "value": "damage"
+ },
+ "cause": "projectile",
+ "damage_per_tick": 4
+ }
+ ]
+},
+"minecraft:damage_sensor": { //. . . which in turn, will trigger an event
+ "triggers": { //to remove this tag, so the damage only
+ "cause": "projectile", //happens once.
+ "deals_damage": true,
+ "on_damage": {
+ "filters": {
+ "test": "has_tag",
+ "value": "damage"
+ },
+ "event": "wiki:stop_damage"
+ }
+ }
+}
+
+//"events"
+"wiki:projectile_team": { //The function here will apply tags depending on
+ "run_command": { //which team tags the player has.
+ "command": [
+ "function wiki-apply_team"
+ ]
+ }
+},
+"wiki:stop_damage": { //The event that simply removes the damage tag.
+ "run_command": {
+ "command": [
+ "tag @s remove damage"
+ ]
+ }
+}
+```
+
+BP/functions/wiki-apply_team.mcfunction
+
+```
+execute @s[tag=team1] ~ ~ ~ tag @e[rm=0,r=1,c=1,type=arrow,tag=] add team1
+execute @s[tag=team2] ~ ~ ~ tag @e[rm=0,r=1,c=1,type=arrow,tag=] add team2
+execute @s[tag=team3] ~ ~ ~ tag @e[rm=0,r=1,c=1,type=arrow,tag=] add team3
+execute @s[tag=team4] ~ ~ ~ tag @e[rm=0,r=1,c=1,type=arrow,tag=] add team4
+
+```
+
+BP/entities/arrow.json
+
+```json
+
+//"components"
+"on_hit": { //On_hit, trigger an event . . .
+ "definition_event": {
+ "affect_projectile": true,
+ "event_trigger": {
+ "event": "wiki:hit",
+ "target": "self"
+ }
+ },
+ "remove_on_hit": {}
+}
+
+//"events"
+"wiki:hit": { //. . . which executes a function, applying
+ "run_command": { //the damage tag to any players of a different team!
+ "command": [
+ "function wiki-apply_damage"
+ ]
+ }
+}
+```
+
+BP/functions/wiki-apply_damage.mcfunction
+
+```
+execute @s[tag=team1] ~ ~ ~ tag @p[rm=0,r=1,tag=!team1] add damage
+execute @s[tag=team2] ~ ~ ~ tag @p[rm=0,r=1,tag=!team2] add damage
+execute @s[tag=team3] ~ ~ ~ tag @p[rm=0,r=1,tag=!team3] add damage
+execute @s[tag=team4] ~ ~ ~ tag @p[rm=0,r=1,tag=!team4] add damage
+
+```
+
+If you modify `arrow.json`, take into consideration the component groups.
+
diff --git a/docs/wiki/3-实体/2-巧思案例/dummy-entities.md b/docs/wiki/3-实体/2-巧思案例/dummy-entities.md
new file mode 100644
index 00000000..ff7db8dc
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/dummy-entities.md
@@ -0,0 +1,146 @@
+---
+title: Dummy Entities
+category: Tutorials
+tags:
+ - beginner
+mentions:
+ - SirLich
+ - Joelant05
+ - MedicalJewel105
+ - aexer0e
+---
+
+Dummy entities are invisible entities which are used behind the scenes for game-play purposes. Dummy entities are a very useful tool, and this document will cover some of the ways they are utilized, as well as showing how to set up the resource side of things.
+
+## Using Dummies
+
+This is a non-exhaustive list of how dummies can be used:
+
+- **For data storage**: by adding tags to the entity, we can use it as a "game manager", much like Armor Stands used to be used.
+- **As a named entity:** by name-tagging a dummy, and then using `execute` to select for it, you can make command-blocks `/say` with a pretty display name.
+- **As a location marker:** you can run `execute` commands located at a dummy to get relative coordinates at a location.
+- **As a waypoint:** by making entities which are aggressive to your dummy, you can pathfind entities to any location by placing a dummy there.
+
+## Creating Dummies
+
+### Behavior Entity
+
+You can use whatever behaviors you like, but here is a good template. The important aspects are: no damage, and can't be pushed.
+
+BP/entities/dummy.json
+
+```json
+{
+ "format_version": "1.16.0",
+ "minecraft:entity": {
+ "description": {
+ "identifier": "wiki:dummy",
+ "is_summonable": true,
+ "is_spawnable": false,
+ "is_experimental": false
+ },
+ "components": {
+ "minecraft:breathable": { //Optional, allows the entity to breath underwater
+ "breathes_water": true
+ },
+ "minecraft:physics": {
+ "has_gravity": false, //Optional, allows the entity to not be affected by gravity or water
+ "has_collision": false
+ },
+ "minecraft:custom_hit_test": {
+ "hitboxes": [
+ {
+ "pivot": [0, 100, 0],
+ "width": 0,
+ "height": 0
+ }
+ ]
+ },
+ "minecraft:damage_sensor": {
+ "triggers": {
+ "deals_damage": false
+ }
+ },
+ "minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": false
+ },
+ "minecraft:collision_box": {
+ "width": 0.0001,
+ "height": 0.0001
+ }
+ }
+ }
+}
+```
+
+If you want to disable collision at all (so you can place a block at it's position), you can use arrow runtime identifier, however, there can be some side effects.
+
+### Resource Entity
+
+RP/entity/dummy.json
+
+```json
+{
+ "format_version": "1.10.0",
+ "minecraft:client_entity": {
+ "description": {
+ "identifier": "wiki:dummy",
+ "materials": {
+ "default": "entity_alphatest"
+ },
+ "geometry": {
+ "default": "geometry.dummy"
+ },
+ "render_controllers": ["controller.render.dummy"],
+ "textures": {
+ "default": "textures/entity/dummy"
+ }
+ }
+ }
+}
+```
+
+### Geometry
+
+RP/models/entity/dummy.json
+
+```json
+{
+ "format_version": "1.12.0",
+ "minecraft:geometry": [
+ {
+ "description": {
+ "identifier": "geometry.dummy",
+ "texture_width": 16,
+ "texture_height": 16
+ }
+ }
+ ]
+}
+```
+
+### Render Controller (Optional)
+
+RP/render_controllers/dummy.json
+
+```json
+{
+ "format_version": "1.10.0",
+ "render_controllers": {
+ "controller.render.dummy": {
+ "geometry": "Geometry.default",
+ "textures": ["Texture.default"],
+ "materials": [
+ {
+ "*": "Material.default"
+ }
+ ]
+ }
+ }
+}
+```
+
+### Texture (Optional)
+
+You can either leave the texture location blank, or open the model in blockbench and create a blank texture.
diff --git a/docs/wiki/3-实体/2-巧思案例/entity-attack.md b/docs/wiki/3-实体/2-巧思案例/entity-attack.md
new file mode 100644
index 00000000..41c6e34d
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/entity-attack.md
@@ -0,0 +1,570 @@
+---
+title: Entity Attacks
+category: Tutorials
+mentions:
+ - Luthorius
+ - TheDoctor15
+ - SirLich
+ - MedicalJewel105
+ - epxzzy
+ - ThomasOrs
+tags:
+ - intermediate
+---
+
+Entity attacks are a complex subject that require many different things to work correctly:
+
+- Navigation and movement abilities to move towards its target
+- Targeting abilities to pick which entity to attack
+- Attack type, such as melee or ranged
+- Attack damage and effects
+
+## Selecting Targets
+
+### Movement
+
+Before a mob can attack, it will need various [movement components](/entities/entity-movement).
+
+Before starting to create your entity attacks, you should ensure that your entity can walk around, and navigate its surroundings.
+
+:::warning
+Even if you are making an unmoving entity (like turret), you still need to add navigation component, so your entity can find the entity to shoot.
+:::
+
+### Triggering Hostility
+
+There are many ways to trigger hostility. The most common type `nearest_attackable_target`, is shown here. It generally allows you to define which entities this entity is interested in attacking:
+
+
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "must_see": true, //If true, potential target must be in mob's line of sight
+ "reselect_targets": true, //Allows mob to select new target, if one is closer than current
+ "within_radius": 25.0, //Radius that potential target must be withing
+ "must_see_forget_duration": 17.0, //If "must_see" = true, time before forgetting target
+ "entity_types": [
+ {
+ "filters": { //Entities to attack
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 48.0
+ }
+ ]
+}
+```
+
+For more fine control, you may also consider using one of the following components:
+
+| Component | Note |
+| -------------------------------------------------------- | ------------------------------------------------------------ |
+| minecraft:behavior.nearest_attackable_target | Targets entity meeting the given requirements |
+| minecraft:behavior.nearest_prioritized_attackable_target | Allows for "priority": [integer] to be set after each filter |
+| minecraft:behavior.defend_trusted_target | Targets entity that hurts any entities specified in filters |
+
+But there is also one more - `minecraft:lookat`
+
+This last component is slightly different to the other three, as it is for detecting and targeting entities that attempt eye contact. It is structured like so:
+
+BP/entities/enderman.json
+
+```json
+"minecraft:lookat": {
+ "search_radius": 64.0,
+ "set_target": true, //Becomes a valid target if true
+ "look_cooldown": 5.0,
+ "filters": {
+ "all_of": [
+ {
+ "subject": "other",
+ "test": "is_family",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "head",
+ "subject": "other",
+ "operator": "not",
+ "value": "carved_pumpkin" //All players not with carved_pumpkin equipped on head
+ }
+ ]
+ }
+}
+```
+
+### Target selecting
+
+:::tip
+This section shows you how to configure the "Targeting" components, explained above.
+:::
+
+Mobs find targets by using [filters](https://bedrock.dev/docs/stable/Entities#Filters) can be used to determine which entities are a valid target, through `test`, `subject`, `operator`, and `value`.
+
+
+
+```json
+"entity_types":[
+ {
+ "filters":{
+ "any_of":[
+ {
+ "test":"is_family",
+ "subject":"other",
+ "operator":"==",
+ "value":"snow_golem"
+ },
+ {
+ "test":"is_family",
+ "subject":"other",
+ "operator":"==",
+ "value":"iron_golem"
+ }
+ //anything that is equal to either" snow_golem" or "iron_golem"
+ ]
+ },
+ "max_dist":24
+ },
+ {
+ "filters":{
+ "all_of":[
+ {
+ "test":"is_family",
+ "subject":"other",
+ "operator":"==",
+ "value":"player"
+ },
+ {
+ "test":"has_equipment",
+ "subject":"other",
+ "domain":"head",
+ "operator":"=!",
+ "value":"turtle_helmet"
+ }
+ //anything equal to player AND not wearing "turtle_helmet" on head
+ ]
+ },
+ "max_dist":24
+ }
+]
+```
+
+This would only target `snow_golem`s, `iron_golem`s, and `player`s that are **not** wearing `turtle_helmet`s.
+
+## Types of Attack
+
+Here are the available attacks:
+
+| Component | Note |
+| ---------------------------------------------------- | -------------------------------------------------------- |
+| [minecraft:behavior.melee_attack](#melee) | Deals damage to a single target |
+| [minecraft:behavior.ranged_attack](#ranged) | Fires a projectile towards a target |
+| [minecraft:area_attack](#area) | Effectively melee attacks on anything withing range |
+| [minecraft:behavior.knockback_roar](#knockback-roar) | Similar to minecraft:area_attack, but much more flexible |
+
+### Melee
+
+Melee attacks are the most common type of attack, they cause knockback, and have a 100% success rate at accuracy.
+
+
+
+```json
+"wiki:melee_attack": {
+ "minecraft:attack": {
+ "damage": 3,
+ "effect_name": "slowness",
+ "effect_duration": 20
+ },
+ "minecraft:behavior.melee_attack": {
+ "priority": 3,
+ "melee_fov": 90.0, //The allowable FOV the actor will use to determine if it can make a valid melee attack
+ "speed_multiplier": 1,
+ "track_target": false,
+ "require_complete_path": true
+ }
+}
+```
+
+Set the damage, choose a mob effect, and change some additional properties.
+
+The value defined in components stating integers of damage can simply be a constant, or a string containing 2 numbers, for a range of possible values.
+
+`"damage": 3` would result in 3 each time
+
+`"damage": [ 2, 6 ]` would result in any integer between 2 and 6
+
+Both the mob effect and duration timer are optional, but when they are used, the available effects are as following:
+
+| Effect Name |
+| --------------- |
+| speed |
+| slowness |
+| haste |
+| mining_fatigue |
+| strength |
+| instant_health |
+| instant_damage |
+| jump_boost |
+| nausea |
+| regeneration |
+| resistance |
+| fire_resistance |
+| water_breathing |
+| invisibility |
+| blindness |
+| night_vision |
+| hunger |
+| weakness |
+| poison |
+| wither |
+| health_boost |
+| absorption |
+| saturation |
+| levitation |
+| fatal_poison |
+| slow_falling |
+| conduit_power |
+| bad_omen |
+| village_hero |
+| darkness |
+
+### Ranged
+
+Fires specified [projectiles](/documentation/projectiles) towards target at set intervals.
+
+
+
+```json
+"wiki:ranged_attack": {
+ "minecraft:behavior.ranged_attack": {
+ "priority": 2,
+ "ranged_fov": 90.0, //The allowable FOV the actor will use to determine if it can make a valid ranged attack
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 3.0,
+ "attack_radius": 15.0
+ },
+ "minecraft:shooter": {
+ "def": "wiki:projectile"
+ }
+}
+```
+
+List of vanilla projectiles:
+
+| Vanilla Projectiles |
+| -------------------------------- |
+| minecraft:arrow |
+| minecraft:dragon_fireball |
+| minecraft:egg |
+| minecraft:ender_pearl |
+| minecraft:fireball |
+| minecraft:fishing_hook |
+| minecraft:lingering_potion |
+| minecraft:llama_spit |
+| minecraft:skulker_bullet |
+| minecraft:small_fireball |
+| minecraft:snowball |
+| minecraft:splash_potion |
+| minecraft:thrown_trident |
+| minecraft:wither_skull |
+| minecraft:wither_skull_dangerous |
+| minecraft:xp_bottle |
+
+Only one item has an effect on an entity's ranged attacks. Crossbows. If one is equipped, it is first required for it to be "charged" before the entity can fire anything. Regardless of the projectile stated in `minecraft:shooter`, the item to charge the crossbow with should always be `minecraft:arrow`.
+
+
+
+```json
+"minecraft:behavior.charge_held_item": {
+ "priority": 2,
+ "items": [
+ "minecraft:arrow"
+ ]
+}
+```
+
+Once `minecraft:behavior.charge_held_item` has been achieved, the entity will be able to execute the process of `minecraft:behavior.ranged_attack`, and will then need to charge again.
+
+### Area
+
+These attacks damage all entities within a set radius. It is different to both ranged and melee in that this component doesn’t actually require a target. Regardless of the entities behaviour, _all_ entities will be affected by this. It appears to be similar to melee attacks, as it deals knockback in a similar manner, though dealing damage at a constant rate.
+
+
+
+```json
+"minecraft:area_attack" : {
+ "damage_range": 1, //distance in blocks
+ "damage_per_tick": 2,
+ "cause": "contact",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ }
+ ]
+ }
+}
+```
+
+[Entity damage sources](https://bedrock.dev/docs/stable/Addons#Entity%20Damage%20Source). It is important to take these into consideration, as certain items in vanilla can protect from some, like armour enchantments, and you can also make mobs immune to specific sources using `minecraft:damage_sensor`.
+
+### Knockback Roar
+
+Many similarities between this and `minecraft:area_attack`, this component though having much more flexibility.
+
+
+
+```json
+"wiki:roar_attack": {
+ "minecraft:behavior.knockback_roar":{
+ "priority":2,
+ "duration":0.7,
+ "attack_time":0.2,
+ "knockback_damage":1,
+ "knockback_horizontal_strength":1,
+ "knockback_vertical_strength":1,
+ "knockback_range":5,
+ "knockback_filters":{
+ "test":"is_family",
+ "subject":"other",
+ "operator":"==",
+ "value":"player"
+ },
+ "damage_filters":{
+ "test":"is_family",
+ "subject":"other",
+ "operator":"==",
+ "value":"player"
+ },
+ "on_roar_end":{
+ "event":"wiki:other_event"
+ },
+ "cooldown_time":10
+ }
+}
+```
+
+This is more like a shockwave of damage. Extremely versatile in uses. Produces a particle effect, which can be disabled by adding a modified version of `knockback_roar.json` to a resource pack's particles folder.
+
+## More on Attacks
+
+Entity Attacks don't have to be as simple as Mob being hostile towards X target, doing X attack, dealing X damage.
+
+### Difficulty Dependant Attacks
+
+Express components and values to use for each difficulty.
+
+BP/entities/bee.json
+
+```json
+"easy_attack": {
+ "minecraft:attack": {
+ "damage": 2
+ }
+},
+"normal_attack": {
+ "minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 10
+ }
+},
+"hard_attack": {
+ "minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 18
+ }
+}
+```
+
+### Switching Modes
+
+You can use events to make your mob only attack under specific circumstances, or swap between the different types of attack. This can be achieved through simple usage of [events](/entities/entity-events) and component groups. Two prime examples being `minecraft:environment_sensor` and `minecraft:target_nearby_sensor`. The two are pretty similar in regards of structure, difference being that one is for sensing environments and the other for testing for target distance.
+
+#### Attacks
+
+Component groups are required to define the different modes of attack, such as:
+
+
+
+```json
+"wiki:ranged_components": {
+ "minecraft:shooter": {
+ "def": "wiki:projectile"
+ },
+ "minecraft:behavior.ranged_attack": {
+ "priority": 3,
+ "ranged_fov": 90.0,
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 3.0,
+ "attack_radius": 15.0
+ }
+}
+```
+
+
+
+```json
+"wiki:melee_components": {
+ "minecraft:attack": {
+ "damage": 6
+ },
+ "minecraft:behavior.melee_attack": {
+ "priority": 3
+ }
+}
+```
+
+Those are examples of your attack modes, but they are not the only ones you can use. `wiki:ranged_components` and `wiki:melee_components` are generic names for the components within them, they can have any name, but it's what's nested inside them that counts.
+
+#### Events
+
+These component groups won't actually do anything by themselves. Another component group is required, and some events to add/remove the attack modes.
+
+
+
+```json
+"wiki:melee_swap": { //When triggered, adds component group for ranged and removes melee component group
+ "remove": {
+ "component_groups": [
+ "wiki:ranged_components"
+ ]
+ },
+ "add": {
+ "component_groups": [
+ "wiki:melee_components"
+ ]
+ }
+}
+```
+
+
+
+```json
+"wiki:ranged_swap": { //When triggered, adds component group for melee and removes ranged component group
+ "remove": {
+ "component_groups": [
+ "wiki:melee_components"
+ ]
+ },
+ "add": {
+ "component_groups": [
+ "wiki:ranged_components"
+ ]
+ }
+}
+```
+
+The events are effectively for just turning attack modes on and off, by adding and removing different component groups.
+
+#### Sensors
+
+To trigger the events, another component group is used. Sensors are components that can trigger events when certain conditions are fulfilled. Here are 2 examples of different sensors:
+
+- For sensing the distance between the mob and target
+
+
+
+```json
+"wiki:switcher_range": {
+ "minecraft:target_nearby_sensor": {
+ "inside_range": 4.0,
+ "outside_range": 5.0,
+ "must_see": true,
+ "on_inside_range": { //When target is within 4 blocks range, trigger "wiki:melee_swap" event
+ "event": "wiki:melee_swap",
+ "target": "self"
+ },
+ "on_outside_range": { //When target is beyond 5 blocks range, trigger "wiki:ranged_swap" event
+ "event": "wiki:ranged_swap",
+ "target": "self"
+ }
+ }
+}
+```
+
+- For sensing certain features of the environment of which the mob is exposed to
+
+
+
+```json
+"wiki:switcher_environment": {
+ "minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": { //When underwater, trigger "wiki:melee_swap" event
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "wiki:melee_swap"
+ },
+ {
+ "filters": { //When not underwater, trigger "wiki:ranged_swap" event
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "wiki:ranged_swap"
+ }
+ ]
+ }
+}
+```
+
+This uses `Filters`, similar to how the [target is initially selected](#target-selecting).
+
+:::tip
+You aren't limited to just 2 attack types, you can have as many as you want! Just make sure to have the event's and sensors to compensate for them.
+:::
+
+## Visual Animations
+
+Attacks and animations go hand in hand. Within resource packs, the following 3 directories are required:
+
+- animations (entityname.animation.json)
+- animation_controllers (entityname.animation_controller.json)
+- entity (entityname.json)
+
+Or as long as you know the names of vanilla animations and animation controllers, you can define them in the latter directory and folder.
+
+### Animations
+
+Animations are self explanatory. The files themselves contain all specific animations for the given entity. The recommended way to make animations is by using [blockbench](/guide/blockbench).
+
+Though it is possible to create them in a simple text editor.
+
+| Vanilla Attack Animations |
+| -------------------------------------------- |
+| "animation.zombie.attack_bare_hand" |
+| "animation.skeleton.attack.v1.0" |
+| "animation.humanoid.bow_and_arrow.v1.0" |
+| "animation.humanoid.damage_nearby_mobs.v1.0" |
+
+A few examples of Animations. Locate /vanilla_resource_pack/animations for all of them.
+
+### Animation Controllers
+
+List of states that trigger animations.
+
+| Vanilla Attack Animation Controllers |
+| ---------------------------------------------- |
+| "controller.animation.zombie.attack_bare_hand" |
+| "controller.animation.skeleton.attack" |
+| "controller.animation.humanoid.bow_and_arrow" |
+| "controller.animation.humanoid.attack" |
+
+A few examples of Animation Controllers. Locate /vanilla_resource_pack/animation_controllers for all of them
+
+More information on animations can be found [here](https://bedrock.dev/docs/stable/Animations).
diff --git a/docs/wiki/3-实体/2-巧思案例/entity-holds-item.md b/docs/wiki/3-实体/2-巧思案例/entity-holds-item.md
new file mode 100644
index 00000000..bf114f75
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/entity-holds-item.md
@@ -0,0 +1,76 @@
+---
+title: Entity Holds Item
+category: Tutorials
+tags:
+ - intermediate
+mentions:
+ - pieterdefour
+ - SirLich
+ - solvedDev
+ - stirante
+ - Joelant05
+ - destruc7ion
+ - Dreamedc2015
+ - sermah
+ - 7dev7urandom
+---
+
+::: tip
+This tutorial assumes you have a basic understanding of entities, loot tables, and Blockbench.
+:::
+
+In this tutorial, you will learn to have an entity spawn with an item in its hand. I'll be using a custom `mandalorian_armorer` entity and a custom `hammer` item for the examples.
+
+## Model
+
+First of all, you'll need to have a model in Blockbench that has a map called `rightArm`. Within this map, there needs to be a submap called 'rightItem'.
+Now set the position of the pivot point of this submap, so it sits in the place you want the entity to hold the item at.
+
+
+
+## Behavior Pack-side
+
+Now you'll need to add a `minecraft:equipment` component in the component list for your entity and add a loot table with the desired item.
+
+In our example it will look like this:
+
+BP/entity/mandolorian.json#components
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/gear/mandolorian.json"
+}
+```
+
+## Loot Table
+
+Finally, add the loot table for your entity. It needs to be in `loot_tables/entities/.json` in the behavior pack. In our case, it's called `mandolorian.json`.
+
+:::warning
+This isn't the same loot table as what it drops on death. So make sure it has a different name.
+:::
+
+To have the entity always spawn with the same item, add the following loot table:
+
+BP/loot_tables/entities/gear/mandolorian.json
+
+```json
+{
+ "pools": [
+ {
+ "rolls": 1,
+ "entries": [
+ {
+ "type": "item",
+ "name": "dd:hammer",
+ "weight": 1
+ }
+ ]
+ }
+ ]
+}
+```
+
+If everything went well, you'd have something looking like this:
+
+
diff --git a/docs/wiki/3-实体/2-巧思案例/entity-movement.md b/docs/wiki/3-实体/2-巧思案例/entity-movement.md
new file mode 100644
index 00000000..0902a676
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/entity-movement.md
@@ -0,0 +1,202 @@
+---
+title: Entity Movement
+category: Tutorials
+mentions:
+ - SirLich
+ - sermah
+ - MedicalJewel105
+ - TheDoctor15
+---
+
+In Minecraft, entities have the ability to move through the world, either by walking, swimming or flying. To get these behaviors, your entity will generally need quite a few behaviors, broken out into various types.
+
+As you read this tutorial, keep in mind that your entity will need at least:
+
+- [A component that sets the entities movement speed.](#movement-speed)
+- [A component to set how the entity will move (walking, flying, etc)](#movement-type)
+- [A component to set the entities navigation abilities, so it can generate paths.](#navigation-abilities)
+- [A component that sets where/when the entity should move (AI Goals).](#ai)
+
+:::tip
+The best way to create a moving entity is by picking a similar entity from the vanilla behavior pack, and copying the components into your entity.
+
+For example entities like Phantom, or Ghast, or Parrot are all flying entities, but have very different in-game behavior! Use the closest-matching entity as a template.
+:::
+
+## Movement Speed
+
+The first thing your entity needs is a speed component. This sets how quickly your entity will move through the world.
+
+| Component | Note |
+| ---------------------------------------------------------------------------------------------------------------- | -------------------------------- |
+| [minecraft:movement](/entities/vanilla-usage-components#movement) | Set movement speed (required) |
+| [minecraft:underwater_movement](/entities/vanilla-usage-components#underwater-movement) | Set movement speed in the water. |
+| [minecraft:flying_speed](/entities/vanilla-usage-components#flying-speed) | Set the speed in the air. |
+
+You should always include `minecraft:movement`. Add the other two as needed.
+
+All vanilla "swimming" entities like Dolphin include `underwater_movement`. Only some flying entities have `flying_speed`. It is not known why this is the case.
+
+## Movement Type
+
+Your entity will also need a movement type. Movement types set hard-coded behavior for _how_ your entity will move through the world.
+
+You may only include one movement type in your entity. Select the component that most closely matches your needs. Generally `basic`, `amphibious` and `fly` are good ones to use.
+
+| Component | Note |
+| --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
+| [minecraft:movement.amphibious](https://bedrock.dev/docs/stable/Entities#minecraft%3Amovement.amphibious) | This move control allows the mob to swim in the water and walk on land. |
+| [minecraft:movement.basic](https://bedrock.dev/docs/stable/Entities#minecraft%3Amovement.basic) | This component accents the movement of an entity. |
+| [minecraft:movement.fly](https://bedrock.dev/docs/stable/Entities#minecraft%3Amovement.fly) | This move control causes the mob to fly. |
+| [minecraft:movement.generic](https://bedrock.dev/docs/stable/Entities#minecraft%3Amovement.generic) | This move control allows a mob to fly, swim, climb, etc. |
+| [minecraft:movement.hover](https://bedrock.dev/docs/stable/Entities#minecraft%3Amovement.hover) | This move control causes the mob to hover. |
+| [minecraft:movement.jump](https://bedrock.dev/docs/stable/Entities#minecraft%3Amovement.jump) | Move control causes the mob to jump as it moves with a specified delay between jumps. |
+| [minecraft:movement.skip](https://bedrock.dev/docs/stable/Entities#minecraft%3Amovement.skip) | This move control causes the mob to hop as it moves. |
+| [minecraft:movement.sway](https://bedrock.dev/docs/stable/Entities#minecraft%3Amovement.sway) | This move control causes the mob to sway side to side, giving the impression it is swimming. |
+
+## Movement Modifiers
+
+Movement modifiers provide additional information about how your entity will move through the world. These components are not required for normal entities, but you should be aware of them.
+
+| Component | Note |
+| ----------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
+| [minecraft:water_movement](https://bedrock.dev/docs/stable/Entities#minecraft%3Awater_movement) | Sets the friction the entity experiences in water. |
+| [minecraft:rail_movement](https://bedrock.dev/docs/stable/Entities#minecraft%3Arail_movement) | Sets that the entity can move on rails (only). |
+| [minecraft:friction_modifier](https://bedrock.dev/docs/stable/Entities#minecraft%3Afriction_modifier) | Sets the friction the entity experiences on land. |
+
+## Navigation
+
+The next thing your entity needs is a navigation component. Navigation components have quite a few fields, like whether the entity can open doors or avoid sunlight. How you set these fields is generally more important than the navigation component you pick!
+
+The reason there are so many navigation components is that each one gives a slightly different hard-coded behavior. Pick the navigation component whose name/description best matches the kind of navigation your entity will be doing.
+
+You can only have one navigation component at any given time.
+
+:::tip
+This component is very important. You should check vanilla examples for inspiration on what fields and values to use.
+:::
+
+| Component | Note |
+| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
+| [minecraft:navigation.climb](https://bedrock.dev/docs/stable/Entities#minecraft%3Anavigation.climb) | Allows this entity to generate paths that include vertical walls like the vanilla Spiders do. |
+| [minecraft:navigation.float](https://bedrock.dev/docs/stable/Entities#minecraft%3Anavigation.float) | Allows this entity to generate paths by flying around the air like the regular Ghast. |
+| [minecraft:navigation.generic](https://bedrock.dev/docs/stable/Entities#minecraft%3Anavigation.generic) | Allows this entity to generate paths by walking, swimming, flying and climbing around, and jumping up and down a block. |
+| [minecraft:navigation.fly](https://bedrock.dev/docs/stable/Entities#minecraft%3Anavigation.fly) | Allows this entity to generate paths in the air as the vanilla Parrots do. |
+| [minecraft:navigation.swim](https://bedrock.dev/docs/stable/Entities#minecraft%3Anavigation.swim) | Allows this entity to generate paths that include water. |
+| [minecraft:navigation.walk](https://bedrock.dev/docs/stable/Entities#minecraft%3Anavigation.walk) | Allows this entity to generate paths by walking around and jumping up and down a block like regular mobs. |
+
+## Navigation Abilities
+
+On top of the movement and the navigation component, there exist many additional components to augment the abilities of your entity as they move through the world.
+
+| Component | Note |
+| ------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
+| [minecraft:annotation.break_door](https://bedrock.dev/docs/stable/Entities#minecraft%3Aannotation.break_door) | Allows entity to break doors. It must also be turned on in the navigation component. |
+| [minecraft:annotation.open_door](https://bedrock.dev/docs/stable/Entities#minecraft%3Aannotation.open_door) | Allows entity to open doors. It must also be turned on in the navigation component. |
+| [minecraft:buoyant](https://bedrock.dev/docs/stable/Entities#minecraft%3Abuoyant) | Specifies which liquids the entity can float in. |
+| [minecraft:can_climb](https://bedrock.dev/docs/stable/Entities#minecraft%3Acan_climb) | Allows this entity to climb up ladders. |
+| [minecraft:can_fly](https://bedrock.dev/docs/stable/Entities#minecraft%3Acan_fly) | Marks the entity as being able to fly. The pathfinder won't be restricted to paths where a solid block is required underneath it. |
+| [minecraft:can_power_jump](https://bedrock.dev/docs/stable/Entities#minecraft%3Acan_power_jump) | Allows the entity to power jump like the horse does in vanilla. |
+| [minecraft:floats_in_liquid](https://bedrock.dev/docs/stable/Entities#minecraft%3Afloats_in_liquid) | Sets that this entity can float in liquid blocks. |
+| [minecraft:jump.dynamic](https://bedrock.dev/docs/stable/Entities#minecraft%3Ajump.dynamic) | Defines a dynamic type jump control that will change jump properties based on the speed modifier of the mob. |
+| [minecraft:jump.static](https://bedrock.dev/docs/stable/Entities#minecraft%3Ajump.static) | Gives the entity the ability to jump. |
+
+There are also components like `minecraft:preferred_path`, which will modify navigation based on block-based path-cost.
+
+## AI Goals
+
+The navigation component tells the entity _how_ to generate paths, but it doesn't say _when_ or _where_ to generate paths. This is what the AI components are for.
+
+AI Goals are prefixed with `behavior` and follow a priority system to pick which behavior to run. The lower priorities will be picked first.
+
+In general, you should usually add quite a few AI components, with different priorities. Layered together, these will create realistic movement and behavior for your entity. As always, vanilla entities provide a good template for which components to add, and with what properties/priorities.
+
+There are too many AI components that generate paths to list in this document. A few will be provided as examples:
+
+| Component |
+| --------------------------------------------------------------------------------------------------------------------------------- |
+| [minecraft:behavior.random_stroll](https://bedrock.dev/docs/stable/Entities#minecraft%3Abehavior.random_stroll) |
+| [minecraft:behavior.follow_owner](https://bedrock.dev/docs/stable/Entities#minecraft%3Abehavior.follow_owner) |
+| [minecraft:behavior.move_to_water](https://bedrock.dev/docs/stable/Entities#minecraft%3Abehavior.move_to_water) |
+| [minecraft:behavior.stroll_towards_village](https://bedrock.dev/docs/stable/Entities#minecraft%3Abehavior.stroll_towards_village) |
+
+For a full list, visit [bedrock.dev](https://bedrock.dev/docs/stable/Entities#AI%20Goals).
+
+### Pathfinding
+
+Making entities go to specific places is one of the most common requests for Marketplace content.
+The best way to do pathfinding uses a second entity, which the first entity will be attracted to. I am going to call this secondary entity the **marker**. If you are confused on how to create a marker, visit the [Dummy Entities](/entities/dummy-entities) page.
+
+#### Idea
+
+The way we are going to do pathfinding is actually fairly simple: Make our entity aggressive towards our marker, and then simply place our marker where we want our entity to path to. The hard part is knowing what components to add so we get really long-range pathing.
+
+#### Components
+
+These components can be edited as needed to create good pathing. Make sure to update the `nearest_attackable_target` to point to your marker entity. This takes a `family_type`, so you should set one of those on your marker.
+
+Don't forget to add some basic movement and navigation components so your entity is able to move.
+
+
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 0,
+ "reselect_targets": true,
+ "target_search_height": 1000,
+ "within_radius": 1000,
+ "must_see": false,
+ "entity_types": [
+ {
+ "filters": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "waypoint_1"
+ }
+ ],
+ "max_dist": 1000
+ }
+ ]
+},
+"minecraft:attack": {
+ "damage": 0
+},
+"minecraft:behavior.melee_attack": {
+ "priority": 0,
+ "require_complete_path": true,
+ "track_target": true
+},
+"minecraft:follow_range": {
+ "value": 1000,
+ "max": 1000
+}
+```
+
+#### Detecting a reached waypoint
+
+You can use `minecraft:target_nearby_sensor` to detect when you have reached the marker entity:
+
+
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 2.0,
+ "outside_range": 4.0,
+ "must_see": true,
+ "on_inside_range": {
+ "event": "reached_waypoint"
+ },
+ "on_outside_range": {
+ "event": "not_reached_waypoint"
+ }
+}
+```
+
+## Other
+
+:::tip
+You can trigger entity walking animation via command.
+`/execute as @e[type=...] at @s run tp @s ^^^0.1`
+This way you can control where entity goes and make it look natural.
+:::
diff --git a/docs/wiki/3-实体/2-巧思案例/flying-entities.md b/docs/wiki/3-实体/2-巧思案例/flying-entities.md
new file mode 100644
index 00000000..a5770421
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/flying-entities.md
@@ -0,0 +1,359 @@
+---
+title: Flying Entities
+category: Tutorials
+tags:
+ - recipe
+ - intermediate
+mentions:
+ - SirLich
+ - Joelant05
+ - Dreamedc2015
+ - MedicalJewel105
+ - aexer0e
+ - imsolucid
+ - nebulacrab
+ - Luthorius
+ - TheItsNameless
+---
+
+Whether making a plane or a dragon, adding controllability to flying entities will probably challenge most devs who haven't dabbled around this concept. Since there is no "right" way of adding a piloting mechanic to flying entities, I'll showcase 3 main workaround ways you can use to achieve this.
+
+## Great Jump, Slow Fall
+
+While not exactly "flying", setting the entity's jumping power high and giving it slow falling & speed effects as it falls is probably the most straightforward method.
+
+To achieve this, we will need to add the `"minecraft:horse.jump_strength"` component to our entity. Adding this will allow you to control its jumping power and disable dismounting when the player presses the jump button.
+
+
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": 7
+}
+```
+
+We can also use `"value"` as an object to utilize the **range bar** players will see when holding down the jump button.
+
+
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": { "range_min": 0.6, "range_max": 1.2 }
+}
+```
+
+Now we will give it slow falling and speed as it's falling so that it doesn't instantly fall. To do this, we will make an animation controller and give it those effects when it's not on the ground as so:
+
+(You can read a tutorial on how to use animation controllers to execute commands [here](/animation-controllers/entity-commands).)
+
+
+
+```json
+"controller.animation.dragon.flying":{
+ "states":{
+ "default":{
+ "transitions":[
+ {
+ "jumping":"!q.is_on_ground"
+ }
+ ]
+ },
+ "jumping":{
+ "transitions":[
+ {
+ "default":"q.is_on_ground"
+ }
+ ],
+ "on_entry":[
+ "/effect @s slow_falling 20000 0 true",
+ "/effect @s speed 20000 10 true"
+ ],
+ "on_exit":[
+ "/effect @s clear"
+ ]
+ }
+ }
+}
+```
+
+We'll also need to hook it up to our entity as so:
+
+
+
+```json
+"description":{
+ "identifier":"wiki:dragon",
+ "is_spawnable":true,
+ "is_summonable":true,
+ "is_experimental":false,
+ "scripts":{
+ "animate":[
+ "flying"
+ ]
+ },
+ "animations":{
+ "flying":"controller.animation.dragon.flying"
+ }
+}
+```
+
+Now, we should have a mechanic at least resemblant of flying. You can change the values like jump_strength and speed, but the entity will always fall using this method.
+
+## Controlling Through Looking
+
+This is probably the most popular method of piloting flying entities, and unlike the first method, this one gives players control over the vertical movement of the entity so that you don't always have to fall every time you jump, with the downside being you can't look around freely without changing the entity's vertical trajectory.
+
+This method detects the riding player's vertical rotation and applies levitation/slow_falling effects to the entity accordingly.
+
+There are multiple ways of achieving that, but in this tutorial, we'll be using the target selectors `rym` (minimum y-rotation) and `ry` (maximum y-rotation) in a chain of repeating command-blocks to detect the player's pitch, and depending on the range, giving our entity levitation or slowly falling.
+
+
+
+```
+execute @a[rxm=-90,rx=-25] ~~~ effect @e[type=wiki:dragon,r=1] levitation 1 6 true
+execute @a[rxm=-25,rx=-15] ~~~ effect @e[type=wiki:dragon,r=1] levitation 1 3 true
+execute @a[rxm=-15,rx=-5] ~~~ effect @e[type=wiki:dragon,r=1] levitation 1 2 true
+execute @a[rxm=-5,rx=20] ~~~ effect @e[type=wiki:dragon,r=1] levitation 1 1 true
+execute @a[rxm=20,rx=35] ~~~ effect @e[type=wiki:dragon,r=1] slow_falling 1 1 true
+execute @a[rxm=35,rx=90] ~~~ effect @e[type=wiki:dragon,r=1] clear
+```
+
+**Depending on how big your entity is and how far away the player's seat is from its pivot, you might need to change the radius `r` to a more significant value.**
+
+After you run those commands in a repeating command block, you should control its vertical movement by looking up and down.
+or you may use a simple animation controller and link it to the entity, so it always plays the function.
+
+It's recommended that you link this animation controller to the player.
+
+
+
+```json
+{
+ "format_version": "1.10.0",
+ "animation_controllers": {
+ "controller.animation.base": {
+ "initial_state": "default",
+ "states": {
+ "default": {
+ "transitions": [
+ {
+ "base": "(1.0)"
+ }
+ ],
+ "on_entry": [
+ "/function dragon_control"
+ ]
+ },
+ "base": {
+ "transitions": [
+ {
+ "default": "(1.0)"
+ }
+ ],
+ "on_entry": [
+ "/function dragon_control"
+ ]
+ }
+ }
+ }
+ }
+}
+```
+
+The entity will probably still be too slow when flying, so we'll borrow our animation controller from the first method with some changes to give the entity speed when it's flying.
+
+
+
+```json
+"controller.animation.dragon.flying":{
+ "states":{
+ "default":{
+ "transitions":[
+ {
+ "jumping_1":"!q.is_on_ground"
+ }
+ ]
+ },
+ "jumping_1":{
+ "transitions":[
+ {
+ "transition_to_default":"q.is_on_ground"
+ },
+ {
+ "jumping_2":"true"
+ }
+ ],
+ "on_entry":[
+ "/effect @s speed 15 10 true"
+ ]
+ },
+ "jumping_2":{
+ "transitions":[
+ {
+ "transition_to_default":"q.is_on_ground"
+ },
+ {
+ "jumping_1":"true"
+ }
+ ],
+ "on_entry":[
+ "/effect @s speed 15 10 true"
+ ]
+ },
+ "transition_to_default":{
+ "transitions":[
+ {
+ "transition_to_default":"true"
+ }
+ ],
+ "on_entry":[
+ "/effect @s clear"
+ ]
+ }
+ }
+}
+```
+
+_Since the entity's effects might be cleared when it's being flown, we changed the animation controller to give the entity speed every tick it's not on the ground._
+
+You might also notice that the entity levitates when you go near it. We can fix this by giving the entity a tag when it's being ridden (removing it when it isn't being ridden) and only applying those effects when the entity has the tag by making and animating another animation controller and updating our commands.
+
+
+
+```json
+"controller.animation.dragon.test_rider":{
+ "states":{
+ "default":{
+ "transitions":[
+ {
+ "has_rider":"q.has_rider"
+ }
+ ]
+ },
+ "has_rider":{
+ "transitions":[
+ {
+ "default":"!q.has_rider"
+ }
+ ],
+ "on_entry":[
+ "/tag @s add has_rider"
+ ],
+ "on_exit":[
+ "/tag @s remove has_rider"
+ ]
+ }
+ }
+}
+```
+
+
+
+```
+execute @a[rxm=-90,rx=-25] ~~~ effect @e[type=wiki:dragon,r=1,tag=has_rider] levitation 1 6 true
+execute @a[rxm=-25,rx=-15] ~~~ effect @e[type=wiki:dragon,r=1,tag=has_rider] levitation 1 3 true
+execute @a[rxm=-15,rx=-5] ~~~ effect @e[type=wiki:dragon,r=1,tag=has_rider] levitation 1 2 true
+execute @a[rxm=-5,rx=20] ~~~ effect @e[type=wiki:dragon,r=1,tag=has_rider] levitation 1 1 true
+execute @a[rxm=20,rx=35] ~~~ effect @e[type=wiki:dragon,r=1,tag=has_rider] slow_falling 1 1 true
+execute @a[rxm=35,rx=90] ~~~ effect @e[type=wiki:dragon,r=1,tag=has_rider] clear
+```
+
+## Controlling Through Jumping
+
+A third method of controlling flying entities uses the player's jump button. The entity rises when the player is holding the jump button and falls when they release their jump button.
+
+To do this, we need an animation controller attached to the player rather than the entity itself to detect when the player uses their jump button. We also need to disable dismounting when the player presses the jump button.
+
+First, on the entity, disable dismounting and jumping:
+
+
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": 0
+},
+"minecraft:can_power_jump": {}
+```
+
+Next, we need an animation controller that causes the entity to levitate when the player uses their jump button and resets the levitation when they release their jump button.
+
+
+
+```json
+"controller.animation.fly_dragon":{
+ "initial_state":"falling",
+ "states":{
+ "falling":{
+ "on_entry":[
+ "/effect @e[type=wiki:dragon,r=1,c=1] levitation 0"
+ ],
+ "transitions":[
+ {
+ "rising":"q.is_jumping"
+ }
+ ]
+ },
+ "rising":{
+ "on_entry":[
+ "/effect @e[type=wiki:dragon,r=1,c=1] levitation 100000 6 true"
+ ],
+ "transitions":[
+ {
+ "falling":"!q.is_jumping"
+ }
+ ]
+ }
+ }
+}
+```
+
+Now, we need a copy of the player's behavior file, which we will modify slightly. You can find the player's behavior file in the vanilla behavior pack provided by Mojang (found [here](https://aka.ms/behaviorpacktemplate)). Once you have copied the player's behavior file to your own behavior pack, find their `"description"` object and add the animation controller. We also want to ensure that the entity will only respond to the player's jump input when the player is riding it, so we can use a Molang query in the player's behavior to only activate the animation controller when the player is riding.
+
+
+
+```json
+"description":{
+ "identifier":"minecraft:player",
+ "is_spawnable":false,
+ "is_summonable":false,
+ "animations":{
+ "fly_dragon":"controller.animation.fly_dragon"
+ },
+ "scripts":{
+ "animate":[
+ {
+ "fly_dragon":"q.is_riding"
+ }
+ ]
+ }
+}
+```
+
+The entity can now be controlled with the jump key, but there's a bug. If the player dismounts the entity while holding the jump key, it will continue rising. We can fix this with an animation controller on the entity itself that resets the levitation whenever a player dismounts it.
+
+
+
+```json
+"controller.animation.reset_levitation":{
+ "initial_state":"no_rider",
+ "states":{
+ "no_rider":{
+ "transitions":[
+ {
+ "has_rider":"q.has_rider"
+ }
+ ]
+ },
+ "has_rider":{
+ "on_exit":[
+ "/effect @s levitation 0"
+ ],
+ "transitions":[
+ {
+ "no_rider":"!q.has_rider"
+ }
+ ]
+ }
+ }
+}
+```
diff --git a/docs/wiki/3-实体/2-巧思案例/introduction-to-aec.md b/docs/wiki/3-实体/2-巧思案例/introduction-to-aec.md
new file mode 100644
index 00000000..c3041df6
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/introduction-to-aec.md
@@ -0,0 +1,78 @@
+---
+title: Introduction to AOE Clouds
+category: Tutorials
+tags:
+ - intermediate
+mentions:
+ - Sprunkles137
+ - MedicalJewel105
+---
+
+**Area-of-effect clouds**, also known as AOE clouds and `minecraft:area_effect_cloud` internally, are special entities that have many unique properties. Normally these entities are created through throwing lingering potions, but with structures and some NBT editing magic we can manipulate them in very powerful ways for map-making.
+
+## Overview
+
+Area-of-effect clouds have several special features we can take advantage of:
+
+- As [dummy entities](/entities/dummy-entities), they are highly performant and barely affect framerate, and they are also completely static and have no collision with the world. This makes them perfect for situations around players or where precise positioning is important.
+- It does not send the client updates. Once it spawns in, it will visually appear to be frozen in place until it despawns. However, it can still be moved around through commands just fine.
+- It can apply any potion effect in highly configurable ways. The duration can be set down to the tick, as well as whether or not the effect is ambient, or displays on the screen, if it emits particles, etc.
+- Entities with a runtime identifier of `minecraft:area_effect_cloud` inherit these same properties.
+
+## Method 1: Projectile Component
+
+The projectile component supports spawning in area-of-effect clouds on hit. Minecraft uses this to spawn in AOE clouds from lingering potions.
+
+[Projectiles Documentation](/documentation/projectiles#spawn-aoe-cloud)
+
+## Method 2: NBT Editing
+
+Another way to spawn in these area-of-effect clouds is through structure files. This grants us finer control over the potion effects the cloud can have. So, our first order of business is getting a means to edit these structures.
+
+### NBT Editors
+
+One of the following NBT editors are recommended:
+
+- [NBT Studio](https://github.com/tryashtar/nbt-studio) (a standalone program by tryashtar)
+- [NBT Viewer](https://marketplace.visualstudio.com/items?itemName=Misodee.vscode-nbt) (a Visual Studio Code extension by Misode)
+
+### Structure file
+
+For convenience, this article contains a premade structure file you can download and use. Inside is an AOE cloud that exists for the maximum possible time.
+
+Download MCSTRUCTURE
+
+Refer to this article for editing structure files: [.mcstructure](/nbt/mcstructure)
+
+### NBT Format
+
+| Tag | Type | Description |
+| --------------------- | ------- | ----------------- |
+| Duration | Integer | How long the cloud exists for before expiring, in ticks. |
+| DurationOnUse | Integer | How much the duration should change when effects are applied. |
+| InitialRadius | Float | The size of this cloud's radius when created. |
+| ParticleColor | Integer | The color of the particle effect, in decimal. |
+| ParticleId | Integer | The particle effect this cloud emits. 0 emits no particles. |
+| PotionId | Short | This cloud's potion effect ID when created. Has no effect. |
+| RadiusChangeOnPickup | Float | Unknown. |
+| RadiusOnUse | Float | How much the radius should change when effects are applied. |
+| RadiusPerTick | Float | How much the radius changes every tick. |
+| ReapplicationDelay | Integer | The interval at which effects can be applied, in ticks. |
+| mobEffects | List | Describes what potion effects should be applied. |
+
+Below are the parameters for the `mobEffects` tag.
+
+| Tag | Type | Description |
+| ------------------------------- | ------- | --------------- |
+| Ambient | Byte | Defines whether this effect's particles should be translucent or not. |
+| Amplifier | Byte | The strength of this potion effect. |
+| DisplayOnScreenTextureAnimation | Byte | Unknown. |
+| Duration | Integer | The amount of time this effect is applied for, in ticks. |
+| DurationEasy | Integer | Unknown, seemingly unused. |
+| DurationNormal | Integer | Unknown, seemingly unused. |
+| DurationHard | Integer | Unknown, seemingly unused. |
+| Id | Byte | The potion effect ID for this effect. |
+| ShowParticles | Byte | Defines whether this effect's particles should appear or not. |
diff --git a/docs/wiki/3-实体/2-巧思案例/invulnerable-entities.md b/docs/wiki/3-实体/2-巧思案例/invulnerable-entities.md
new file mode 100644
index 00000000..dddee5eb
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/invulnerable-entities.md
@@ -0,0 +1,67 @@
+---
+title: Invulnerable Entities
+category: Tutorials
+tags:
+ - beginner
+mentions:
+ - SirLich
+ - Joelant05
+ - solvedDev
+ - MedicalJewel105
+---
+
+## Using Damage Sensor
+
+The best and most flexible way of disabling damage for entities is using the `minecraft:damage_sensor` component. The component allows us to use `filters` to determine which damage sources can damage our entity.
+
+The best way to learn about this component is by using the vanilla examples for damage sensor or reading [documentation](https://bedrock.dev/docs/stable/Entities#minecraft:damage_sensor)
+
+### Completely Invulnerable Entity
+
+BP/entities/entity.json#minecraft:entity/components
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "all",
+ "deals_damage": false
+ }
+}
+```
+
+### Disable Damage from Player
+
+BP/entities/entity.json#minecraft:entity/components
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ },
+ "deals_damage": false
+ }
+}
+```
+
+## Min Health
+
+The `min` property in the `minecraft:health` component allows us to make invincible entities that cannot die. This includes when using `/kill @e`. This is not considered a good solution because entities like this are hard to get rid of.
+
+If you choose to use this component, please make sure you have another method for killing the entity. Triggering `minecraft:instant_despawn` from something like an environment sensor, a timer, or an interact is a good solution. You also can call it using `/event`.
+
+BP/entities/entity.json#minecraft:entity/components
+
+```json
+"minecraft:health": {
+ "value": 1,
+ "max": 1,
+ "min": 1
+}
+```
+
+Note that setting it to 0 breaks some death and spawn animations/effects.
diff --git a/docs/wiki/3-实体/2-巧思案例/look-at-entity.md b/docs/wiki/3-实体/2-巧思案例/look-at-entity.md
new file mode 100644
index 00000000..0213cef7
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/look-at-entity.md
@@ -0,0 +1,44 @@
+---
+title: Look at Entity
+category: Tutorials
+tags:
+ - intermediate
+mentions:
+ - shanewolf38
+ - MedicalJewel105
+ - TheItsNameless
+ - SmokeyStack
+---
+
+The following tutorial provides a resource pack method to detect when the player is looking at an entity. The code below must be placed inside the entity that will be looked at by the player, and will provide a variable `v.look_at_entity` which returns true when the entity is being looked at.
+
+## variable
+
+RP/entity/mob.entity.json
+
+```json
+"pre_animation": [
+ "v.look_at_entity = Math.abs(Math.abs(q.rotation_to_camera(1) - q.camera_rotation(1)) - 180) < (20 / q.distance_from_camera) && Math.abs(q.rotation_to_camera(0) + q.camera_rotation(0)) < (10 / q.distance_from_camera);"
+],
+```
+
+:::tip
+Because the query `q.rotation_to_camera` is based at the origin of the entity (their feet), the vertical detection range will be based around the bottom of the entity. The code below creates a modified variable for the vertical angle which takes a positional offset into account to allow the vertical detection range to be based around the center of the entity.
+:::
+
+RP/entity/mob.entity.json
+
+```json
+"pre_animation": [
+ "v.rotation_to_camera_0 = -Math.atan2(-q.distance_from_camera * Math.sin(q.rotation_to_camera(0)) - 1, q.distance_from_camera * Math.cos(q.rotation_to_camera(0)));",
+ "v.look_at_entity = Math.abs(Math.abs(q.rotation_to_camera(1) - q.camera_rotation(1)) - 180) < (20 / q.distance_from_camera) && Math.abs(v.rotation_to_camera_0 + q.camera_rotation(0)) < (60 / q.distance_from_camera);"
+],
+```
+
+## Modifying
+
+The provided code is very accurate for the standard Minecraft mob size of 1 block wide and 2 blocks tall, but for entities of different sizes the parameters should be changed. The `- 1` controls the positional offset of the center of the mob (- is upward, + is downward), the `20` controls the horizontal angle sensitivity, and the `60` controls the vertical angle sensitivity.
+
+## Explanation
+
+The variable detects when the player is looking at the entity by checking if the rotation angle required for the entity to look at the player is opposite the rotation angle required for the player to look at the entity. The horizontal and vertical angle sensitivity are modified by the distance of the entity from the camera to maintain accuracy.
diff --git a/docs/wiki/3-实体/2-巧思案例/sleeping-entities.md b/docs/wiki/3-实体/2-巧思案例/sleeping-entities.md
new file mode 100644
index 00000000..888ca6ef
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/sleeping-entities.md
@@ -0,0 +1,396 @@
+---
+title: Sleeping Entities
+category: Tutorials
+tags:
+ - intermediate
+mentions:
+ - MedicalJewel105
+ - SirLich
+---
+
+This tutorial will explain how to make entity sleep.
+
+## Sleeping in beds
+
+This behavior is inspired from villagers.
+
+### Features
+
+- Entity sleeps during the night and wakes up at day time.
+- Interaction with entity will wake it up and after a while it goes sleeping again.
+- If entity is hurt, it wakes up.
+
+### Behavior Pack
+
+In this section behavior pack components will be discussed.
+
+#### Components
+
+Let's start with some basic components that you need to add to your entity.
+
+BP/entities/sleeping_entity.json#components
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "can_find_poi": true
+}
+```
+
+Undocumented, needed for entity to be able to sleep.
+
+BP/entities/sleeping_entity.json#components
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "is_daytime",
+ "value": false
+ },
+ "event": "sleep"
+ }
+ ]
+}
+```
+
+This component is required for entity understand when to sleep.
+It runs event if it isn't day time.
+
+:::warning
+You need some basic navigation components for your entity be able to move to bed.
+:::
+
+#### Component Groups
+
+Now you need some component groups for your entity with some components.
+
+BP/entities/sleeping_entity.json#component_groups
+
+```json
+"sleeping": {
+ "minecraft:behavior.sleep": {
+ "priority": 0,
+ "goal_radius": 1.5,
+ "speed_multiplier": 1.25,
+ "sleep_collider_height": 0.3,
+ "sleep_collider_width": 1,
+ "sleep_y_offset": 0.6,
+ "timeout_cooldown": 10
+ },
+ "minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "event": "wake_up"
+ }
+ }
+ },
+ "minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "is_daytime",
+ "value": true
+ },
+ "event": "wake_up"
+ }
+ ]
+ },
+ "minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ ]
+ },
+ "event": "woken_up"
+ }
+ }
+ ]
+ }
+}
+```
+
+- `minecraft:behavior.sleep`
+
+Determines sleep details, priority needs to be at `0` (the biggest weight).
+
+- `minecraft:damage_sensor``
+
+Add it if you want your entity wake up if it is being attacked.
+
+- `minecraft:environment_sensor`
+
+Runs `wake_up` event when it is day time.
+
+- `minecraft:interact`
+
+This makes player to be able wake up entity without hurting it.
+
+BP/entities/sleeping_entity.json#component_groups
+
+```json
+"sleep_timer": {
+ "minecraft:timer": {
+ "time": 15,
+ "time_down_event": {
+ "event": "sleep_again"
+ }
+ }
+}
+```
+
+This component group is required for entity to fall asleep again (with some delay) after it was woken up.
+
+#### Events
+
+Here you will find all events that you need.
+I don't really think it needs explanation.
+
+BP/entities/sleeping_entity.json#events
+
+```json
+"sleep": {
+ "add": {
+ "component_groups": [
+ "sleeping"
+ ]
+ }
+},
+"wake_up": {
+ "remove": {
+ "component_groups": [
+ "sleeping"
+ ]
+ }
+},
+"woken_up": {
+ "remove": {
+ "component_groups": [
+ "sleeping"
+ ]
+ },
+ "add": {
+ "component_groups": [
+ "sleep_timer"
+ ]
+ }
+},
+"sleep_again": {
+ "add": {
+ "component_groups": [
+ "sleeping"
+ ]
+ },
+ "remove": {
+ "component_groups": [
+ "sleep_timer"
+ ]
+ }
+}
+```
+
+### Resource Pack
+
+Don't forget that you need to add sleeping animation and controller for it to your entity!
+
+#### Animation
+
+Just copy/paste it.
+
+RP/animations/sleeping_entity.animation.json
+
+```json
+{
+ "format_version": "1.8.0",
+ "animations": {
+ "animation.sleeping_entity.sleep": {
+ "loop": "hold_on_last_frame",
+ "animation_length": 0.5,
+ "bones": {
+ "body": {
+ "rotation": {
+ "0.0": [0, 0, 0],
+ "0.5": [-90, 0, 0]
+ },
+ "position": [0, 2, -15]
+ }
+ }
+ }
+ }
+}
+```
+
+#### Animation Controller
+
+Again just copy/paste it if you need.
+
+RP/animations_controllers/ac.sleeping_entity.sleep.json
+
+```json
+{
+ "format_version": "1.10.0",
+ "animation_controllers": {
+ "controller.animation.sleeping_entity.sleep": {
+ "initial_state": "default",
+ "states": {
+ "default": {
+ "transitions": [
+ {
+ "sleep": "q.is_sleeping"
+ }
+ ]
+ },
+ "sleep": {
+ "animations": ["sleeping"],
+ "transitions": [
+ {
+ "default": "!q.is_sleeping"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
+```
+
+Note that you will need to define animation in client entity like this:
+
+`"sleeping": "animation.sleeping_entity.sleep"`
+
+### Result
+
+
+
+## Taking naps
+
+This behavior is inspired from foxes.
+
+### Features
+
+- Entity sleeps when feels safe, far from mobs or when the weather is not a thunderstorm.
+- Approaching the entity will make it wake up unless it's a trusted or sneaking player, or it's another entity with the family group `sleeping_entity`.
+- If entity is hurt, it wakes up.
+
+### Behavior Pack
+
+In this section behavior pack components will be discussed.
+
+#### Components
+
+For this behavior you will need only one component:
+
+BP/entities/sleeping_entity.json#components
+
+```json
+"minecraft:behavior.nap": {
+ "priority": 8,
+ "cooldown_min": 2.0,
+ "cooldown_max": 7.0,
+ "mob_detect_dist": 12.0,
+ "mob_detect_height": 6.0,
+ "can_nap_filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ {
+ "test": "on_ground",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "is_underground",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "weather_at_position",
+ "subject": "self",
+ "operator": "!=",
+ "value": "thunderstorm"
+ }
+ ]
+ },
+ "wake_mob_exceptions": {
+ "any_of": [
+ {
+ "test": "trusts",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "==",
+ "value": "sleeping_entity"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+}
+```
+
+If you want to also use the trusting mechanic, add:
+
+BP/entities/sleeping_entity.json#components
+
+```json
+"minecraft:trust": {}
+```
+
+### Resource Pack
+
+In our resource pack you can run an animation when entity starts to sleep.
+
+RP/animations_controllers/ac.sleeping_entity.sleep.json
+
+```json
+{
+ "format_version": "1.10.0",
+ "animation_controllers": {
+ "controller.animation.sleeping_entity.sleep": {
+ "initial_state": "default",
+ "states": {
+ "default": {
+ "transitions": [
+ {
+ "sleep": "q.is_sleeping"
+ }
+ ]
+ },
+ "sleep": {
+ "animations": ["sleeping"],
+ "transitions": [
+ {
+ "default": "!q.is_sleeping"
+ }
+ ]
+ }
+ }
+ }
+ }
+}
+```
+
+The last thing, you will have to create and register a sleeping animation for you entity. If you don't know how to do it check out the [BlockBench page](/guide/blockbench.html#animating).
\ No newline at end of file
diff --git a/docs/wiki/3-实体/2-巧思案例/solid-entities.md b/docs/wiki/3-实体/2-巧思案例/solid-entities.md
new file mode 100644
index 00000000..8c900006
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/solid-entities.md
@@ -0,0 +1,90 @@
+---
+title: Solid Entities
+category: Tutorials
+tags:
+ - recipe
+ - intermediate
+mentions:
+ - SirLich
+ - Joelant05
+ - Chikorita-Lover
+ - Luthorius
+ - MedicalJewel105
+ - ThomasOrs
+---
+
+Solid entities are entities that the player can bump into, step on, or otherwise physically interact with without passing through. Entities like this have many uses, such as emulating blocks.
+
+This page will discuss some of the ways that solid entities can be created.
+
+Not all techniques are ideal for all scenarios. Experiment, and figure out what works best for you.
+
+## Runtime Identifiers
+
+[Runtime identifiers](/entities/runtime-identifier) can be used to achieve solid entities, but currently only 2, each with a specific shape, and their own side effects. Neither collision shapes are possible to change or scale.
+
+### Boat
+
+BP/entities/entity_name.json
+
+```json
+{
+ "format_version": "1.16.0",
+ "minecraft:entity": {
+ "description": {
+ "identifier": "wiki:solid_entity",
+ "runtime_identifier": "minecraft:boat"
+ . . .
+ }
+ }
+}
+```
+
+- Boat-shaped solid collision
+- Certain other boat-like effects
+
+### Shulker
+
+BP/entities/entity_name.json
+
+```json
+{
+ "format_version": "1.16.0",
+ "minecraft:entity": {
+ "description": {
+ "identifier": "wiki:solid_entity",
+ "runtime_identifier": "minecraft:shulker"
+ . . .
+ }
+ }
+}
+```
+
+- 1x1 block sized solid collision.
+- Sticks to block grid.
+- Teleports randomly when supporting block removed.
+
+## minecraft:is_stackable
+
+Add `minecraft:is_stackable` to your entity you want to be treated as being solid.
+**Note:** This requires editing `player.json` if you wish the entity to be solid for the player.
+
+`"minecraft:is_stackable": {}`
+
+You will also need to add `minecraft:push_through` and set its `value` parameter to 1.
+
+`"minecraft:push_through": 1`
+
+(they should both go in `components`)
+
+## Faking it with blocks
+
+In some scenarios, it's probably better to `/setblock` or `/fill` to place barrier blocks, either statically or dynamically. There needs to be both a way of placing the barriers, and removing them.
+
+`/fill ~ ~ ~ ~ ~1 ~ barrier 0 replace air`
+Places barriers in a 1x1x2 area.
+
+`/fill ~1 ~1 ~1 ~-1 ~-1 ~-1 air 0 replace barrier`
+Removes barriers within a 3x3x3 area.
+
+These [commands](/animation-controllers/entity-commands) will have to be triggering at a constant rate, for consistency. They can either be triggered through entity components, or animation controllers.
diff --git a/docs/wiki/3-实体/2-巧思案例/timers.md b/docs/wiki/3-实体/2-巧思案例/timers.md
new file mode 100644
index 00000000..3f679e41
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/timers.md
@@ -0,0 +1,320 @@
+---
+title: Entity Timers
+category: Tutorials
+tags:
+ - intermediate
+mentions:
+ - SirLich
+ - Joelant05
+ - MedicalJewel105
+ - aexer0e
+ - Justash01
+ - TheItsNameless
+ - zheaEvyline
+---
+
+Time-based interactions are extremely useful tools for map making. This article hopes to provide an extensive list which details the many ways which timers can be made. For convenience, this page will be split up into two main sections: component-based timers and animation-based timers. Each has their own advantages and disadvantages, which will be outlined in their respective sections.
+You might also find useful [Scoreboard Timers](/commands/scoreboard-timers).
+
+## Component-based timers
+
+Component-based timers are done inside the entity.json file of the behavior pack. They have the distinct advantage of persisting upon the entity being reloaded, but are limited by the number of timing components (duplicate components replace each other, which means defining multiple timers using the `minecraft:timer` component isn't possible).
+
+### minecraft:timer
+
+This is the simplest but most effective component for triggering events after an elapsed amount of time. The component [minecraft:timer](https://bedrock.dev/docs/1.14.0.0/1.14.30.2/Entities#minecraft:timer) provides three main ways in which the amount of time before the event can be defined:
+
+- Exact timing: an exact amount of time after which the event will fire is defined (e.g. 3.4 seconds)
+- Random interval: an interval is defined in which the event will fire at a random time inside that interval (e.g. between 3 to 5 seconds)
+- Weighted random choice: a number of times are defined and assigned weights, one of which will be chosen for the event to fire (e.g. a 20% chance for the event to fire at 5 seconds, and an 80% chance to fire at 20 seconds)
+
+In the vanilla Behavior Pack, this component is used in all kinds of circumstances. For example:
+
+- The dolphin can only spend 20 seconds on land before it dries out
+- Bees will perish between 10 and 60 seconds after stinging
+- The wandering trader will only stay for either 2400 or 3600 seconds
+
+A simple example which triggers an event after 5.6 seconds:
+
+
+
+```json
+"minecraft:timer": {
+ "time": 5.6,
+ "time_down_event": {
+ "event": "wiki:my_event"
+ }
+}
+```
+
+A more complex example which triggers an event after a randomized amount of delay using weighted values:
+
+
+
+```json
+"minecraft:timer": {
+ "looping": false, //true will fires event after every execution, false will fire event only once.
+ "random_time_choices": [
+ {
+ "weight": 25,
+ "value": 0.5 //Half a second of delay
+ },
+ {
+ "weight": 25,
+ "value": 10 //Ten seconds of delay
+ },
+ {
+ "weight": 25,
+ "value": 30 //Thirty seconds of delay
+ },
+ {
+ "weight": 25,
+ "value": 120 //2 minutes of delay
+ }
+ ],
+ "time_down_event": {
+ "event": "wiki:event",
+ "target": "self"
+ }
+}
+```
+
+A particularly useful way to handle time events is using a single, looping `minecraft:timer` component and processing the events on each tick (or however often you decide to fire the timer). This is done by using the `randomize` parameter in events, where a weight may be used determine how often other events will be run. This can get you a lot of extra mileage out of a single timer component.
+
+
+
+```json
+"wiki:do_event": {
+ "randomize": [
+ {
+ "weight": 1,
+ "add": {
+ "component_groups": [
+ "wiki:my_event"
+ ]
+ }
+ },
+ {
+ "weight": 5,
+ "add": {
+ "component_groups": [
+ "wiki:my_more_frequent_event"
+ ]
+ }
+ },
+ {
+ "weight": 50 //Fires nothing
+ }
+ ]
+}
+```
+
+### minecraft:environment_sensor
+
+Another component ([minecraft:environment_sensor](https://bedrock.dev/docs/stable/Entities#minecraft:environment_sensor)) which can be very useful for time-based events is `minecraft:environment_sensor`. Pairing this sensor with the `hourly_clock_time` or `clock_time` filters can be used to trigger events based off in-game time.
+
+Here is an example which is used to fire an event 800 ticks after the start of the day (valid range is 0 to 24000):
+
+
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "hourly_clock_time",
+ "operator": "=",
+ "value": 800
+ },
+ "event": "wiki:my_daily_event"
+ }
+ ]
+}
+```
+
+### minecraft:ageable
+
+If this component ([minecraft:ageable](https://bedrock.dev/docs/stable/Entities#minecraft:ageable)) is not being used in the entity's behavior for a different purpose, it can be useful as an additional timer. It's important to note that it requires the `minecraft:is_baby` component to be defined in order to function.
+
+Here is an example which fires an event after four seconds:
+
+
+
+```json
+"minecraft:is_baby": {},
+"minecraft:ageable": {
+ "duration": 4,
+ "grow_up": {
+ "event": "wiki:my_other_event",
+ "target": "self"
+ }
+}
+```
+
+### Other dummy-timers:
+
+Taking a peak at the docs suggest there are other components which can also can be used for timing. Essentially, you are looking for any component with a "time down event" or a "duration".
+
+Non-exhaustive list of promising examples:
+
+- `minecraft:angry` (requires the entity to have a target, time must be an integer)
+- `minecraft.behavior.hide`
+- `minecraft:behavior.celebrate`
+
+## Animation-based timers
+
+Behavior pack animations are an extremely powerful tool for triggering time-based events. They have the distinct advantage of providing an "infinite" amount of timers, but are restarted upon an entity being reloaded (leaving and rejoining the world or the chunk containing the entity unloading will cause the timer to restart when the entity reloads).
+
+Animations function differently in behavior packs than in resource packs. If you are unfamiliar with how they operate, it is recommended to learn more about them by checking out the official documentation or the other pages on this wiki.
+
+### Simple timers
+
+By triggering animations from an animation controller or directly from the scripts section, you can execute specific events, commands, or molang expressions in a timed-sequence, called a timeline.
+
+You can set up timelines like this:
+
+
+
+```json
+{
+ "format_version": "1.8.0",
+ "animations": {
+ "animation.command.example_timeline": {
+ "timeline": {
+ "0.0": "/say this will trigger instantly",
+ "3.0": "/say this will trigger after 3 seconds"
+ },
+ "animation_length": 3.1
+ },
+ "animation.command.example_timeline_2": {
+ "timeline": {
+ "100": "/say this will trigger after 100 seconds",
+ "0.0": [
+ "/say you can trigger multiple events at once",
+ "/say by using timelines."
+ ],
+ "55.55": "/say this will trigger after 55.55 seconds."
+ },
+ "animation_length": 100.1
+ }
+ }
+}
+```
+
+### Random interval
+
+A very useful feature of the timer component is its ability to define a random interval in which the event will be triggered. This functionality can be replicated using animations and a controller. Below is an example of an animation triggered by adding the `minecraft:is_sheared` component to an entity which randomly fires an event between 2 to 7 seconds after activation. Animation and controller version 1.10.0.
+
+
+
+```json
+"controller.animation.shanewolf.random_interval": {
+ "initial_state": "inactive",
+ "states": {
+ "inactive": {
+ "transitions": [
+ {
+ "active": "q.is_sheared"
+ }
+ ]
+ },
+ "active": {
+ "on_entry": [
+ "v.random_interval = math.random(2, 7);",
+ "/say random interval started"
+ ],
+ "animations": [
+ "wiki:animate_interval"
+ ],
+ "transitions": [
+ {
+ "inactive": "q.anim_time >= v.random_interval"
+ }
+ ],
+ "on_exit": [
+ "@s wiki:stop_random_interval",
+ "/say random interval finished"
+ ]
+ }
+ }
+}
+```
+
+
+
+```json
+"animation.shanewolf.random_interval": {
+ "animation_length": 100
+}
+```
+
+Explanation: Upon entry into the state beginning the animation, a variable is given a random value between 2 and 7. The animation finishes when the current animation time is greater than or equal to the value of this v.
+
+**Notes**:
+- The animation length can be set to any value greater than the maximum end of the time range (100 is used as a general template)
+- math.random(a, b) is used to trigger an event in the range [a, b]
+- math.floor(math.random(a, b.99)) may be used to end the timer at integer values (0.99 must be added to b)
+- Any events or commands to run when the animation is finished are put inside on_exit
+
+### Weighted random choice
+
+Another useful feature of the timer component is its ability to trigger events at a time determined by a weighted list of values. This functionality can also be replicated using animations and a controller. Below is an example of an animation triggered by adding the `minecraft:is_charged` component to an entity which randomly fires an event at either 2, 5, or 9 seconds with weights of 30, 60, and 10, respectively. Animation and controller version 1.10.0.
+
+
+
+```json
+"controller.animation.shanewolf.random_choices": {
+ "initial_state": "inactive",
+ "states": {
+ "inactive": {
+ "transitions": [
+ {
+ "active": "q.is_powered"
+ }
+ ]
+ },
+ "active": {
+ "on_entry": [
+ "v.random_choices = math.random(0, 100);",
+ "/say random interval started"
+ ],
+ "animations": [
+ "wiki:animate_choices"
+ ],
+ "transitions": [
+ {
+ "inactive": "q.anim_time >= 2.0 && v.random_choices < 30"
+ },
+ {
+ "inactive": "q.anim_time >= 5.0 && v.random_choices < 90"
+ },
+ {
+ "inactive": "q.anim_time >= 9.0 && v.random_choices <= 100"
+ }
+ ],
+ "on_exit": [
+ "@s wiki:stop_random_choices",
+ "/say random choices finished"
+ ]
+ }
+ }
+}
+```
+
+
+
+```json
+"animation.shanewolf.random_choices": {
+ "animation_length": 100
+}
+```
+
+Explanation: Upon entry into the state beginning the animation, a variable is given a random value between 0 and 100 (sum of the weights). The transitions are laid out with the list of values ordered from the smallest time to the largest time. This is done so multiple && operators are not required in the latter transitions to define the variable's range (the query for the smallest times return true first and have their weights checked before the others--flipping 2 and 5 would result in 2 mistakenly having a weight of 90 instead of 30). The animation finishes when the current animation time is greater than or equal to a time in the list and the value of the random variable falls within that time's defined weight range.
+
+**Notes**:
+- The animation length can be set to any value greater than the maximum end of the time range (100 is used as a general template)
+- For this particular format to work, order the list of valid times from smallest to largest
+- To assign a weight to a time in the list, add the weight to the value the randomized variable must be less than in the list's previous entry (e.g. 5 seconds has a weight of 90 - 30 = 60)
+- Any events or commands to run when the animation is finished are put inside on_exit
+
+Hopefully this spread some light on the subject of handling time in Minecraft Bedrock! As shown above, there are many possible ways it can be done, each with their own pros and cons. If you have any other useful methods for creating time-based events, please [contribute to the wiki](/contribute)!
diff --git a/docs/wiki/3-实体/2-巧思案例/village-mechanic.md b/docs/wiki/3-实体/2-巧思案例/village-mechanic.md
new file mode 100644
index 00000000..527268c2
--- /dev/null
+++ b/docs/wiki/3-实体/2-巧思案例/village-mechanic.md
@@ -0,0 +1,357 @@
+---
+title: Village Mechanic
+category: Tutorials
+mentions:
+ - AeroForta
+ - MedicalJewel105
+ - stirante
+ - SmokeyStack
+ - SirLich
+ - Ciosciaa
+ - ThomasOrs
+---
+
+This article is for anyone who wants to try imitate the village mechanic for their entities
+
+## Navigation Behavior
+
+First let's start with some basic navigation behavior.
+
+BP/entities/custom_villager.json#components
+
+```json
+"minecraft:preferred_path":{
+ "max_fall_blocks":1,
+ "jump_cost":5,
+ "default_block_cost":1.5,
+ "preferred_path_blocks":[
+ {
+ "cost":0,
+ "blocks":[
+ "grass_path"
+ ]
+ },
+ {
+ "cost":1,
+ "blocks":[
+ "cobblestone",
+ "stone"
+ ]
+ },
+ {
+ "cost":50,
+ "blocks":[
+ "bed",
+ "lectern"
+ ]
+ }
+ ]
+}
+```
+
+Allows entity to do random walk.
+
+BP/entities/custom_villager.json#components
+
+```json
+"minecraft:behavior.random_stroll":{
+ "priority":9,
+ "speed_multiplier":0.55,
+ "xz_dist":10,
+ "y_dist":5
+}
+```
+
+Make entity return to inside dwelling bound, in this case inside a village border. Requiring minecraft:dweller component that will be explained below.
+
+BP/entities/custom_villager.json#components
+
+```json
+"minecraft:behavior.move_towards_dwelling_restriction": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+Makes entity navigate around a village by creating a path to patrol. Used by Iron Golem.
+
+BP/entities/custom_villager.json#components
+
+```json
+"minecraft:behavior.move_through_village": {
+ "priority": 3,
+ "speed_multiplier": 0.6,
+ "only_at_night": true
+}
+```
+
+Allows entity to enter a building and also take shelter when raining. Needs open door capabilities.
+
+BP/entities/custom_villager.json#components
+
+```json
+"minecraft:behavior.move_indoors":{
+ "priority":5
+}
+```
+
+Makes entity stay indoors while sun is down.
+
+BP/entities/custom_villager.json#components
+
+```json
+"minecraft:behavior.restrict_open_door":{
+ "priority": 5
+}
+```
+
+Use in pair with:
+
+BP/entities/custom_villager.json#components
+
+```json
+"minecraft:annotation.open_door":{
+ "priority": 5
+}
+```
+
+BP/entities/custom_villager.json#components
+
+```json
+"minecraft:navigation.walk":{
+ "can_pass_doors":true,
+ "can_open_doors":true
+}
+```
+
+BP/entities/custom_villager.json#components
+
+```json
+ "minecraft:behavior.open_door":{
+ "priority":6,
+ "close_door_after":true
+}
+```
+
+## Main Behavior
+
+BP/entities/custom_villager.json#components
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "farmer",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+- `dweller_role: inhabitant`
+Allows entity claim a bed and bell.
+`minecraft:behavior.sleep` needed.
+- `preferred_profession: farmer`
+Optional for `minecraft:behavior.work`
+- `can_find_poi`
+Add it so entity is able to find point of interest.
+Known POI types:
+
+```
+bed
+jobsite
+meeting_area
+```
+
+- `can_migrate`
+Defines if entity can migrate from one village to another or not.
+
+### Sleep
+
+You can find out how to make your entity sleep [here](/entities/sleeping-entities).
+
+### Work
+
+Requires "dweller_role" set to be "inhabitant" also if "preferred_profession" doesn't exist the entity will try to move to the closest any job site.
+
+
+
+```json
+"minecraft:behavior.work": {
+ "priority": 4,
+ "active_time": 250,
+ "speed_multiplier": 0.5,
+ "goal_cooldown": 200,
+ "sound_delay_min": 100,
+ "sound_delay_max": 200,
+ "can_work_in_rain": false,
+ "work_in_rain_tolerance": 1000,
+ "on_arrival": {
+ "event": "minecraft:resupply_trades",
+ "target": "self"
+ }
+}
+```
+
+
+### Gathering
+
+Allows the entity to gather.
+Requires "dweller_role" set to be "inhabitant".
+
+```json
+"minecraft:behavior.mingle": {
+ "priority": 4,
+ "speed_multiplier": 0.5,
+ "duration": 30,
+ "cooldown_time": 10,
+ "mingle_partner_type": "my:custom_entity",
+ "mingle_distance": 2.0
+}
+```
+
+
+### Scheduler
+
+Now you know everything about needed mechanic, let's try to put all of this together in "minecraft:scheduler"
+First let's do something simple.
+Put work behavior in component group work like this:
+
+
+
+```json
+"component_groups":{
+ "work_schedule":{
+ "minecraft:behavior.work":{
+ "priority":4,
+ "active_time":250,
+ "speed_multiplier":0.5,
+ "goal_cooldown":200,
+ "sound_delay_min":100,
+ "sound_delay_max":200,
+ "can_work_in_rain":true,
+ "work_in_rain_tolerance":1000,
+ "on_arrival":{
+ "event":"minecraft:resupply_trades",
+ "target":"self"
+ }
+ }
+ },
+ "gather_schedule":{
+ "minecraft:behavior.mingle":{
+ "priority": 5,
+ "speed_multiplier": 0.8,
+ "cooldown_time":10.0,
+ "duration": 30.0,
+ "mingle_dist": 1.5,
+ "mingle_partner_type": "my:custom_entity"
+ }
+ }
+}
+```
+
+Next, make your entity work.
+
+
+
+```json
+"minecraft:scheduler":{
+ "min_delay_secs":0,
+ "max_delay_secs":10,
+ "scheduled_events":[
+ {
+ "filters":{
+ "all_of":[
+ {
+ "test":"hourly_clock_time",
+ "operator":">=",
+ "value":0 //Morning
+ },
+ {
+ "test":"hourly_clock_time",
+ "operator":"<",
+ "value":12000 //Evening
+ }
+ ]
+ },
+ "event":"work"
+ },
+ {
+ "filters":{
+ "all_of":[
+ {
+ "test":"hourly_clock_time",
+ "operator":">=",
+ "value":21000
+ },
+ {
+ "test":"hourly_clock_time",
+ "operator":"<",
+ "value":24000
+ }
+ ]
+ },
+ "event":"gather"
+ }
+ ]
+}
+```
+
+The events section looks something like this:
+
+
+
+```json
+"events":{
+ "work":{
+ "remove":{
+ "component_groups":[
+ "gather_schedule"
+ ]
+ },
+ "add":{
+ "component_groups":[
+ "work_schedule"
+ ]
+ }
+ },
+ "gather":{
+ "remove":{
+ "component_groups":[
+ "work_schedule"
+ ]
+ },
+ "add":{
+ "component_groups":[
+ "gather_schedule"
+ ]
+ }
+ }
+}
+```
+
+Open your world, spawn entity then put a bed and you should see green particle.
+
+## Other Behavior
+
+All of this is usable by custom entities:
+- `minecraft:behavior.move_to_village`
+Used by Pillager this may keep the entity to stay in the village.
+- `minecraft:behavior.stroll_towards_village`
+Used by fox to search a village and go there.
+- `minecraft:behavior.inspect_bookshelf`
+Used by librarian villager allows an entity to look at and inspect a bookshelf.
+- `minecraft:behavior.explore_outskirts`
+Allows entity to explore beyond the bounds of village (use schedule and component group to keep the entity return to the village).
+- `minecraft:behavior.defend_village_target`
+Use this on melee attack. Ranged attack can accidentally shoot any entity with inhabitant dwelling role.
+
+All of this can be used by custom entities and have relation to villager or village:
+| Behavior | Uses | Note |
+| ------------------------------------------ | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
+| `minecraft:behavior.defend_village_target` | Allows entity to attack other entity that hurt the entity who had "dweller_role": "inhabitant". | Recommended to use only on entities with melee attack. |
+| `minecraft:behavior.hide` | Used by villager to hide and stay at defined POI. | Currently, there is no documentation for the POI type that's why I recommend not to change `"poi_type": "bed"`. |
+| `minecraft:behavior.move_to_village` | Used by Illager and also witch. Allows entity to travel to a random x,y,z coordinate in a village. | - |
+| `"minecraft:behavior.nap"` | Used by Fox to take a nap. | Similar with sleep but offers more flexibility also has built-in wake up system by detecting specific entity. |
diff --git a/docs/wiki/3-实体/3-文档/dummy-components.md b/docs/wiki/3-实体/3-文档/dummy-components.md
new file mode 100644
index 00000000..d5ea54fa
--- /dev/null
+++ b/docs/wiki/3-实体/3-文档/dummy-components.md
@@ -0,0 +1,80 @@
+---
+title: 虚拟组件
+category: 文档
+mentions:
+ - SirLich
+ - jigarbov
+ - MedicalJewel105
+ - StealthyExpertX
+ - TheItsNameless
+---
+
+# 虚拟组件
+
+
+
+:::warning 弃用警告
+
+'虚拟组件'是一个旧版概念,现已被[实体属性](https://learn.microsoft.com/en-us/minecraft/creator/documents/introductiontoentityproperties)取代。建议尽可能使用实体属性代替。
+:::
+
+虚拟组件是仅用于数据存储的"无功能"组件。它们本身**不会**产生任何实际效果,需要配合其他机制才能发挥作用。这类组件的主要价值在于可将数据存储在实体上,并通过Molang查询来驱动图形/游戏机制。
+
+典型案例包括 `variant`(变种)和 `mark_variant`(标记变种)。这些组件接受整数值设置,在原版资源包中用于定义猫和马匹的贴图选择。另一个典型案例是 `is_tamed`(驯服状态),用于控制马匹能否被骑乘。
+
+虚拟组件的优势在于能够将数据与实体绑定,并通过Molang查询调用这些信息。
+
+## 整型虚拟组件
+
+整型组件存储整数值(例如1、10、1423),可使用Molang查询进行读取,是最常用的虚拟组件类型。
+
+## 布尔型虚拟组件
+
+布尔型组件存储单一状态信息,包括 `True`(真)和 `False`(假)。以 `is_tamed` 为例,组件存在表示为 `True`(已驯服),不存在则为 `False`(未驯服)。
+
+## 组件列表
+
+| 类型 | 查询语句 | 组件名称 | 备注 |
+| --------- | ------------------------------------------------------------- | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
+| **整型** | q.variant | minecraft:variant | |
+| **整型** | q.mark_variant | minecraft:mark_variant | |
+| **整型** | q.skin_id | minecraft:skin_id | |
+| **整型\*** | 使用类似 `"test": "is_color"` 的过滤器,下方提供颜色列表 | minecraft:color | 同时在材质系统中设置颜色 |
+| **整型\*** | 无对应过滤器语法,可使用 `"has_component"` | minecraft:color2 | 同时在材质系统中设置颜色 |
+| 布尔型 | q.is_illager_captain | minecraft:is_illager_captain | |
+| 布尔型 | q.is_baby | minecraft:is_baby | 禁用`minecraft:breedable`组件功能 |
+| 布尔型 | q.is_sheared | minecraft:is_sheared | |
+| 布尔型 | q.is_saddled | minecraft:is_saddled | |
+| 布尔型 | q.is_tamed | minecraft:is_tamed | |
+| 布尔型 | q.is_chested | minecraft:is_chested | 死亡时会掉落储存箱 |
+| 布尔型 | q.is_powered | minecraft:is_charged | |
+| 布尔型 | q.is_stunned | minecraft:is_stunned | |
+| 布尔型 | q.can_climb | minecraft:can_climb | 允许实体攀爬梯子 |
+| 布尔型 | q.can_fly | minecraft:can_fly | 标记实体具有飞行能力,路径查找器将不限于下方有固体方块的位置 |
+| 布尔型 | q.can_power_jump | minecraft:can_power_jump | 允许实体执行强力跳跃(如原版马匹动作) |
+| 布尔型 | q.is_ignited | minecraft:is_ignited | |
+| 布尔型 | q.out_of_control | minecraft:out_of_control | 新版功能,用于处理船体硬编码运动/粒子效果,Molang q查询可安全 |
+| 布尔型 | q.has_any_family('monster') | minecraft:type_family | 可检测指定Family类型(如'monster')返回布尔值
+
+### color与color2组件颜色对照表
+
+::: code-group
+```json [颜色代码]
+- black
+- blue
+- brown
+- cyan
+- gray
+- green
+- light_blue
+- light_green
+- magenta
+- orange
+- pink
+- purple
+- red
+- silver
+- white
+- yellow
+```
+:::
\ No newline at end of file
diff --git a/docs/wiki/3-实体/3-文档/non-mob-runtime-identifiers.md b/docs/wiki/3-实体/3-文档/non-mob-runtime-identifiers.md
new file mode 100644
index 00000000..155b25ff
--- /dev/null
+++ b/docs/wiki/3-实体/3-文档/non-mob-runtime-identifiers.md
@@ -0,0 +1,140 @@
+---
+title: 非生物运行时标识符
+category: 文档
+mentions:
+ - Ciosciaa
+ - SmokeyStack
+ - ThomasOrs
+---
+
+# 非生物运行时标识符
+
+
+
+_最后更新于1.19.10 版本_
+
+非生物实体是用于游戏机制或实用功能的不常规实体。典型示例包括抛射物、运输类实体以及模拟方块的实体。这些运行时标识符的属性与普通生物实体有根本性不同,其特殊属性在某些场景下可能具有实用价值。
+
+## 总览
+### 服务端属性
+| 属性 | 已注册 | 可配置行为 | 可配置碰撞箱 | 可配置方块碰撞 | 可配置重力 | 可配置实体推动性 | 可配置活塞推动性 | 支持传送门 | 生命值类型 | 可受伤害 | 可燃性 | 可击退 | 受效果影响 | 可选择 | 可挂钩 | 可锁定 | 可作为抛射体 | 可沿轨道移动 | 自动骑乘 | 可配置战利品 | 生成行为 |
+|------------------------------------------------------------|--------|------------|--------------|----------------|------------|------------------|------------------|------------|-------------------|----------|--------|--------|------------|--------|--------|--------|--------------|--------------|----------|--------------|----------------|
+| `minecraft:arrow` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:thrown_trident` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ❌ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:snowball` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 抛射物 |
+| `minecraft:egg` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 抛射物 |
+| `minecraft:splash_potion` & `minecraft:lingering_potion` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 抛射物 |
+| `minecraft:ice_bomb` | ⚠️ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 抛射物 |
+| `minecraft:llama_spit` | ✅ | ❌ | ⚠️ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:fireball` | ✅ | ❌ | ⚠️ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:small_fireball` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:shulker_bullet` | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ❌ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:dragon_fireball` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:wither_skull` & `minecraft:wither_skull_dangerous` | ✅ | ❌ | ⚠️ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ❌ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:ender_pearl` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 抛射物 |
+| `minecraft:fishing_hook` | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | 🐛 | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:xp_bottle` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 抛射物 |
+| `minecraft:boat` & `minecraft:chest_boat` | ✅ | ❌ | ✅ | ✅ | ⚠️ | ✅ | ❌ | ✅ | 结构完整性 | ✅ | ✅ | ❌ | ❌ | ✅ | ⚠️ | ❌ | ✅ | ⚠️ | ❌ | ⚠️ | 目标表面 |
+| `minecraft:minecart` & 变种 | ✅ | ❌ | ✅ | ❌ | ⚠️ | ❌ | ✅ | ✅ | 结构完整性 | ✅ | ✅ | ❌ | ❌ | ✅ | ⚠️ | ❌ | ⚠️ | ✅ | ❌ | ⚠️ | 轨道 |
+| `minecraft:balloon` | ⚠️ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:tnt` | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ | ✅ | ⚠️ | ❌ | ✅ | 目标表面 |
+| `minecraft:armor_stand` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 结构完整性 | ⚠️ | ✅ | ❌ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ⚠️ | ✅ | ⚠️ | 目标表面 |
+| `minecraft:painting` | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ⚠️ | 无 | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | 目标表面 |
+| `minecraft:falling_block` | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ | 无 | ⚠️ | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | 🐛 | ❌ | ❌ | ✅ | 目标表面 |
+| `minecraft:ender_crystal` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ❌ | ⚠️ | ❌ | ❌ | ✅ | 目标表面 |
+| `minecraft:leash_knot` | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ⚠️ | 无 | ✅ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | 轨道 |
+| `minecraft:chalkboard` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 生命值 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ | 目标表面 |
+| `minecraft:tripod_camera` | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 生命值 | ❌ | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ⚠️ | ✅ | ✅ | 目标表面 |
+| `minecraft:area_effect_cloud` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❓ | ❌ | ❌ | ✅ | 目标表面 |
+| `minecraft:lightning_bolt` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ✅ | 目标表面 |
+| `minecraft:evocation_fang` | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ✅ | 目标表面 |
+| `minecraft:item` | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | 物品 | ❌ | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❓ | ⚠️ | ❌ | ✅ | 目标表面 |
+| `minecraft:xp_orb` | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ | ✅ | 目标表面 |
+| `minecraft:fireworks_rocket` | ✅ | ❌ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ⚠️ | ❌ | ✅ | 目标表面 |
+| `minecraft:eye_of_ender_signal` | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | 无 | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ⚠️ | ✅ | ❌ | ✅ | 目标表面 |
+| `minecraft:elder_guardian_ghost` | ✅ | ⚠️ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 生命值 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 目标表面 |
+| `minecraft:npc` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 生命值 | ❌ | ✅ | ⚠️ | ❌ | ✅ | ❌ | ✅ | ✅ | ⚠️ | ❌ | ❌ | 目标表面 |
+| `minecraft:agent` | ❌ | ❌ | ⚠️ | ❌ | ❌ | ❌ | ✅ | ✅ | 生命值 | ✅ | ✅ | ❌ | ❌ | ⚠️ | ⚠️ | ✅ | ❌ | ✅ | ❌ | ⚠️ | 目标表面 |
+| `minecraft:shield` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | 生命值 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ | 目标表面 |
+
+### 客户端属性
+| 属性 | 客户端实体 | 位置更新 | 插值移动 | 面向方向 | 阴影 | 死亡效果 | 踏步音效 |
+|------------------------------------------------------------|------------|----------|----------|----------|------|----------|----------|
+| `minecraft:arrow` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:thrown_trident` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
+| `minecraft:snowball` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:egg` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:splash_potion` & `minecraft:lingering_potion` | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:ice_bomb` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:llama_spit` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
+| `minecraft:fireball` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:small_fireball` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:shulker_bullet` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
+| `minecraft:dragon_fireball` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:wither_skull` & `minecraft:wither_skull_dangerous` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:ender_pearl` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:fishing_hook` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
+| `minecraft:xp_bottle` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:boat` & `minecraft:chest_boat` | ✅ | ✅ | ❌ | ❌ | ⚠️ | ❌ | ❌ |
+| `minecraft:minecart` & 变种 | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:balloon` | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ✅ |
+| `minecraft:tnt` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:armor_stand` | ✅ | ✅ | ✅ | ✅ | ❌ | ⚠️ | ✅ |
+| `minecraft:painting` | ❌ | ✅ | ❓ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:falling_block` | ⚠️ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:ender_crystal` | ✅ | ❌ | ❌ | ❌ | ⚠️ | ❌ | ❌ |
+| `minecraft:leash_knot` | ✅ | ✅ | ❓ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:chalkboard` | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ |
+| `minecraft:tripod_camera` | ✅ | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ |
+| `minecraft:area_effect_cloud` | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:lightning_bolt` | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:evocation_fang` | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:item` | ❌ | ✅ | ✅ | ❌ | ⚠️ | ❌ | ❌ |
+| `minecraft:xp_orb` | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:fireworks_rocket` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ |
+| `minecraft:eye_of_ender_signal` | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ |
+| `minecraft:elder_guardian_ghost` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
+| `minecraft:npc` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
+| `minecraft:agent` | ⚠️ | ✅ | ❓ | ⚠️ | ⚠️ | ✅ | ✅ |
+| `minecraft:shield` | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ | ✅ |
+
+## 属性定义与章节说明
+本文档中使用的属性定义用于描述特定运行时标识符实体的行为特征。每个属性配有一个值及可能的附加说明,用以强调关联定义的异常情况。
+
+大多数属性使用表情符号简短表达:
+| 值 | 说明 |
+|:---:|-------------------------------------------------------------------------|
+| ✅ | **激活/可用**
该属性在当前运行时标识符实体上通常处于活跃或可用状态。附加说明为特殊情况提供说明。 |
+| ⚠️ | **需警告**
该属性在特定条件下可用。标有此符号的属性可能需要特别处理。附加说明会细化具体例外情况。 |
+| ❌ | **未激活/不可用**
该属性在当前运行时标识符实体上不可用。附加说明会阐述实体如何处理该属性。 |
+| ❓ | **未知**
该属性的具体行为在当前上下文中尚未明确。 |
+| 🐛 | **存在漏洞**
该属性激活时会导致崩溃或其他错误。附加说明会具体描述漏洞触发条件。 |
+
+### NBT扩展字段
+此部分列出该运行时标识符实体专用的NBT字段(其他实体不使用),字段用途通常在本体注释中说明。
+
+### 特殊查询
+若Molang查询在当前运行时标识符上有特殊行为,则会在此说明。所有查询在服务端和客户端均可使用。
+
+### 硬编码变量
+本节列出该运行时标识符绑定的硬编码Molang变量(若无声明则为未定义)。所有这些变量服务端和客户端均可使用。
+
+### 特效
+本节描述与实体绑定的硬编码粒子或音效。除`minecraft:fireworks_rocket`外,其他效果可通过修改粒子/音效定义进行配置。
+
+### 服务端属性
+服务端属性描述实体核心行为机制,包含位置、状态和交互等正规信息。
+
+**已注册**
+当实体可通过`/summon`生成且`type`选择器能选中时视为已注册。只要`is_spawnable`为`true`,生成蛋始终可用。
+
+**可配置行为**
+若为是,则该实体可使用通用行为组件(如`minecraft:behavior.panic`)。
+
+**可配置碰撞箱**
+此属性激活时,`minecraft:collision_box`生效。某些运行时标识符会强制应用固定碰撞箱或修改碰撞箱计算方式。
+
+**可配置方块碰撞**
+当激活时,`minecraft:physics`的`has_collision`生效。若实体声明了`minecraft:projectile`组件,此属性仍标记为活跃。
+
+(由于长度限制,完整翻译内容超过单次响应限制,将分次响应。)
\ No newline at end of file
diff --git a/docs/wiki/3-实体/3-文档/runtime-identifier.md b/docs/wiki/3-实体/3-文档/runtime-identifier.md
new file mode 100644
index 00000000..4421df3a
--- /dev/null
+++ b/docs/wiki/3-实体/3-文档/runtime-identifier.md
@@ -0,0 +1,422 @@
+---
+title: 运行时标识符
+category: 文档
+mentions:
+ - MedicalJewel105
+ - aexer0e
+ - Luthorius
+ - SirLich
+ - TheDoctor15
+ - ChibiMango
+ - stirante
+ - epxzzy
+ - IlkinQafarov
+ - TheItsNameless
+ - SmokeyStack
+ - ThomasOrs
+ - Goatfu
+---
+
+# 运行时标识符
+
+
+
+`runtime_identifier` 是位于实体行为文件描述部分的可选参数,用于模拟原版实体的硬编码特性。
+它接受原版 Minecraft 标识符,例如 `minecraft:shulker`。
+
+::: code-group
+```json [行为实体描述]
+"description": {
+ "identifier": "wiki:my_box",
+ "runtime_identifier": "minecraft:shulker", // 此运行时标识符会将潜影贝的硬编码行为附加到当前实体
+ "is_spawnable": true,
+ "is_summonable": true,
+ "is_experimental": false
+}
+```
+
+:::tip 注意
+需要注意 `runtime_identifier` **仅解析实体的硬编码特性**。这意味着使用100%数据驱动的生物作为运行时标识符不会给实体添加新特性。此外,某些实体运行时可能会覆盖组件部分定义的属性,例如潜影贝实体的碰撞箱尺寸。
+:::
+
+:::warning 警告
+此处未列出所有运行时标识符效果。建议通过实验自行探索新效果,也欢迎在此补充发现。
+:::
+
+## 已知的运行时标识符效果:
+
+- 所有运行时ID都会将实体名称更改为对应原版实体的名称
+
+### minecraft:area_effect_cloud
+
+- 导致实体崩溃
+
+---
+
+### minecraft:armor_stand
+
+- 禁用实体阴影
+- 击打时立即消失
+- 允许装备穿戴/卸除
+- 死亡时掉落盔甲架物品
+
+---
+
+### minecraft:arrow
+
+- 为抛射物添加朝向玩家的动画
+- 禁用死亡动画/声音/粒子
+- 缩小实体阴影(但不会消失)
+- 不可交互
+- 通过生成蛋或/summon生成时,玩家接触后获得箭矢同时实体消失
+- 飞行物理特性和击退效果与箭矢一致
+
+---
+
+### minecraft:axolotl
+- 不影响游泳/移动/重力行为
+- 类似热带鱼,不同变种值影响水桶名称(如"亮蓝色美西螈桶"或"幼年黄色美西螈桶")
+年龄变种: 成年/幼年
+颜色变种: 亮色/野生/黄色/青色/蓝色
+
+---
+
+### minecraft:bee
+
+- 添加蜜蜂音效
+
+---
+
+### minecraft:blaze
+
+- 添加烈焰人燃烧音效和粒子
+- 实体将具有烈焰人飞行特性(即使未添加飞行行为)
+
+---
+
+### minecraft:boat
+
+- 骑乘时显示船型UI界面
+- 禁止实体旋转
+- 具有船形固体碰撞箱
+
+---
+
+### minecraft:chest_minecart
+
+- 导致实体崩溃
+- 击打后立即消失
+- 生成状态异常
+- 掉落箱子和矿车
+
+---
+
+### minecraft:chicken
+
+- 部分动画失效
+- 更新移动速度
+- 实体下落减缓但仍受掉落伤害
+- 生成时不携带装备(若原有)
+
+---
+
+### minecraft:cod
+
+- 脱离水体时扑腾
+- 使用水桶交互获得鳕鱼桶(放置时生成当前实体而非鳕鱼)
+- 赋予特殊游泳和重力特性
+
+---
+
+### minecraft:command_block_minecart
+
+- 导致实体崩溃
+- 击打后立即消失
+- 生成状态异常
+- 掉落矿车
+
+---
+
+### minecraft:cow
+
+- 部分动画失效
+- 更新移动速度
+- 生成时不携带装备(若原有)
+
+---
+
+### minecraft:dolphin
+
+- 添加 `minecraft:movement.dolphin` 组件
+
+---
+
+### minecraft:donkey
+
+- 将纹理/模型/动画更换为驴子
+
+---
+
+### minecraft:dragon_fireball
+
+- 完全破坏实体
+- 生成龙息火球尾迹粒子
+
+---
+
+### minecraft:egg
+
+- 为抛射物添加朝向玩家的动画
+- 导致实体崩溃
+- 使用生成蛋生成时会出现在玩家位置而非指定位置,且面朝天空
+
+---
+
+### minecraft:elder_guardian
+
+- 将纹理/模型/动画更换为远古守卫者
+- 改变部分行为特性
+
+---
+
+### minecraft:ender_crystal
+
+- 实体将固定在生成方块的中央
+- 除传送外始终保持位置不变
+- 可放置于任何表面
+- 其他实体可穿透
+- 无法配置承受伤害
+- 无法改变朝向
+- 可复活末影龙
+- 生成时带火焰效果
+
+---
+
+### minecraft:ender_dragon
+
+- 添加末影龙死亡特效
+- 继承末影龙碰撞箱
+- 破坏碰撞箱内所有方块(包括底部方块),建议在下方放置不可破坏方块/移除重力/禁用`mobGriefing`规则
+- 对碰撞箱2格范围内的玩家造成伤害
+- 增加渲染距离
+- 只能通过/kill指令消除
+
+---
+
+### minecraft:ender_pearl
+
+- 破坏实体行为
+- 受伤时生成粒子
+
+---
+
+### minecraft:endermite
+
+- 受伤时生成粒子
+- 导致旋转异常
+- 部分动画失效
+
+---
+
+### minecraft:evocation_fang
+
+- 对接触实体造成伤害
+- 完全禁用碰撞
+
+---
+
+### minecraft:falling_block
+
+- 导致实体崩溃并下落
+- 接触地面后无动画消失,掉落金合欢按钮
+- 移除效果附着能力
+
+### minecraft:horse
+
+- 将纹理/模型/动画更换为马匹
+
+---
+
+### minecraft:iron_golem
+
+- 允许发动攻击(击退效果垂直增强)
+- 加速四肢动画(可手动修复为约1/4速度)
+- 可能与村庄/村民逻辑冲突
+
+---
+
+### minecraft:llama_spit
+
+- 添加羊驼唾沫粒子
+
+---
+
+### minecraft:minecart
+
+- 禁用实体阴影
+- 死亡时掉落矿车
+- 禁止实体旋转
+
+---
+
+### minecraft:panda
+
+- 使`q.is_grazing`和`q.sit_mount`能与`minecraft:behavior.random_sitting`组件协同工作
+
+---
+
+### minecraft:parrot
+
+- 启用翅膀扇动动画
+- 缓慢降落
+- 跟随音乐唱片跳舞
+
+---
+
+### minecraft:piglin
+
+- 启用`minecraft:celebrate_hunt`功能(激活 q.is_celebrating)
+
+---
+
+### minecraft:player
+
+- 激活`q.movement_direction`
+
+---
+
+### minecraft:pufferfish
+
+- 脱离水体时扑腾
+- 使用水桶交互获得河豚桶(放置时生成当前实体而非河豚)
+- 赋予特殊游泳和重力特性
+
+---
+
+### minecraft:salmon
+
+- 脱离水体时扑腾
+- 使用水桶交互获得鲑鱼桶(放置时生成当前实体而非鲑鱼)
+- 赋予特殊游泳和重力特性
+
+---
+
+### minecraft:sheep
+
+- 使`q.is_grazing`能与`behavior.eat_block`组件协同工作
+
+---
+
+### minecraft:shulker
+
+冒险模式玩家的方块拟态神器
+
+- 1x1x1固体碰撞箱
+- 固定于生成方块的中央
+- 附着方块被破坏后传送至附近可用位置
+- 在非完整方块(床/台阶等)上生成时自动传送
+- 无法修改碰撞箱尺寸
+
+---
+
+### minecraft:shulker_bullet
+
+- 生成潜影贝导弹尾迹粒子
+
+---
+
+### minecraft:slime
+
+- 下落时生成黏液粒子
+- 根据变体值分裂(1-5为史莱姆常规尺寸,5以上视为中型)
+- 允许攻击同时保持史莱姆跳跃机制(无此标识符时攻击状态无法转向)
+
+---
+
+### minecraft:snowball
+
+- 移除碰撞箱
+- 不可交互
+- 生成于玩家头部位置
+- 无视重力
+- 移除实体阴影
+- 恒定面朝南方
+- 无法发出踏步音效
+
+---
+
+### minecraft:spider
+
+- 蛛网减速失效
+
+---
+
+### minecraft:skeleton
+
+- 治疗效果造成伤害/瞬间伤害效果恢复生命
+- 亡灵杀手附魔增伤
+- 变体≥1时近战与远程攻击附加凋零效果
+
+---
+
+### minecraft:stray
+
+- 治疗效果造成伤害/瞬间伤害效果恢复生命
+- 亡灵杀手附魔增伤
+- 免疫冰冻伤害
+
+---
+
+### minecraft:squid
+
+- 支持特殊行为组件(参考squid.json)
+- 受伤时生成墨汁粒子
+
+---
+
+### minecraft:thrown_trident
+
+- 为抛射物添加朝向玩家的动画
+- 禁用死亡动画/声音/粒子
+- 缩小实体阴影(但不会消失)
+- 不可交互
+- 飞行物理特性和击退效果与三叉戟一致
+
+---
+
+### minecraft:tropicalfish
+
+- 脱离水体时扑腾
+- 赋予特殊游泳和重力特性
+- 使用水桶获得热带鱼桶(若无variant/mark_variant/color定义则为白色考伯鱼规格,含相关组件时桶名与实体规格对应)
+
+---
+
+### minecraft:wither_skull_dangerous
+
+- 死亡时掉落凋零玫瑰
+- 被击杀实体会在原地生成凋零玫瑰(僵尸类异常掉落)
+- 持续生成基础烟雾粒子
+- 无视重力(使projectile组件实体直线运动)
+- 免疫所有伤害
+- 仅对无AI目标的实体生效(适用于假人实体和弹射物)
+
+---
+
+### minecraft:xp_orb
+
+- 完全禁用碰撞
+- 接触玩家增加经验值
+
+### minecraft:zombie
+
+- 治疗效果造成伤害/瞬间伤害效果恢复生命
+- 亡灵杀手附魔增伤
+
+---
+
+### minecraft:wither
+
+- 死亡时爆炸
+
+---
\ No newline at end of file
diff --git a/docs/wiki/3-实体/3-文档/spawning-tamed-entities.md b/docs/wiki/3-实体/3-文档/spawning-tamed-entities.md
new file mode 100644
index 00000000..016957ba
--- /dev/null
+++ b/docs/wiki/3-实体/3-文档/spawning-tamed-entities.md
@@ -0,0 +1,194 @@
+---
+title: 生成已驯服的实体
+category: 教程
+tags:
+ - 中级
+mentions:
+ - Axelpvz2030
+ - aexer0e
+ - SirLich
+ - MedicalJewel105
+ - SmokeyStack
+ - ThomasOrs
+---
+
+# 生成已驯服的实体
+
+
+
+在本教程中,您将学习如何通过向特定玩家触发事件来生成预驯服的实体,以及如何投掷在撞击时变形为已驯服实体的物品。
+
+## 概述
+
+传统方式中,若要让玩家驯服实体,必须通过 `minecraft:tameable` 强制玩家与实体互动。但我们也可以利用原版弹射物会记录生成者*\*的特性来实现预驯服实体的生成。
+
+具体实现步骤:
+1. 通过 `minecraft:spawn_entity` 生成一个中间态弹射物实体
+2. 该实体将立即转换为预驯服的目标实体(本教程以原版狼为例)
+3. 在 `minecraft:transformation` 组件中将 `keep_owner` 设置为 `true`
+
+\*: 需要区分 _Spawn(生成)_ 和 _Summon(召唤)_ 的区别。只有通过生成蛋或 `minecraft:spawn_entity` 组件生成的弹射物才会记录玩家信息,使用 `/summon` 命令生成的则不会。
+
+## player.json
+
+我们需要对玩家行为文件进行微调,添加一个事件来激活组件组用于生成中间态实体。
+
+您可以在 Mojang 提供的[原版行为包模板](https://aka.ms/behaviorpacktemplate)中找到玩家实体的行为文件。
+
+::: code-group
+```json [BP/entities/player.json]
+{
+ "format_version":"1.16.0",
+ "minecraft:entity":{
+ "description":{
+ "identifier":"minecraft:player",
+ "is_spawnable":false,
+ "is_summonable":false,
+ "is_experimental":false
+ },
+ "component_groups":{ // 组件组定义
+ "wiki:spawn_tamed_wolf":{
+ "minecraft:spawn_entity":{
+ "entities":{
+ "min_wait_time":0,
+ "max_wait_time":0,
+ "spawn_entity":"wiki:pretamed_wolf",
+ "single_use":true,
+ "num_to_spawn":1
+ }
+ }
+ }
+ },
+ ...
+ "events":{ // 事件定义
+ "wiki:spawn_tamed_wolf":{
+ "add":{
+ "component_groups":[
+ "wiki:spawn_tamed_wolf"
+ ]
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+## pretamed_wolf.json
+
+创建一个使用 `minecraft:arrow` 作为运行时标识符(也可选用其他弹射物标识符)的自定义实体,包含空白弹射物组件和用于转换为驯服狼的变形组件。
+
+::: code-group
+```json [BP/entities/pretamed_wolf.json]
+{
+ "format_version": "1.16.0",
+ "minecraft:entity": {
+ "description": {
+ "identifier": "wiki:pretamed_wolf",
+ "runtime_identifier": "minecraft:arrow",
+ "is_spawnable": false,
+ "is_summonable": true,
+ "is_experimental": false
+ },
+ "components": { // 组件配置
+ "minecraft:projectile": {}, // 弹射物组件
+ "minecraft:transformation": { // 变形组件
+ "into": "minecraft:wolf",
+ "keep_owner": true // 保持归属关系
+ }
+ }
+ }
+}
+```
+:::
+
+现在即可通过命令 `/event entity @p wiki:spawn_tamed_wolf` 在玩家身边生成驯服的狼。若将 `is_spawnable` 设为 `true` 还可通过生成蛋调用!
+
+:::warning 重要提示
+如需生成自定义实体而非原版狼:
+1. 必须为实体添加 `minecraft:is_tamed` 组件
+2. 未被驯服的实体可能出现预期外的行为
+:::
+
+## 集成物品抛射物(替代方法)
+
+利用 [1.16 实验性物品特性](/items/item-components) 中的 `shoot` 事件属性,可制作碰撞时转换为已驯服实体的弹射物。
+
+::: code-group
+```json [BP/items/throwable_pretamed_wolf.json]
+{
+ "format_version":"1.16.100",
+ "minecraft:item":{
+ "description":{
+ "identifier":"wiki:throwable_pretamed_wolf"
+ },
+ "components":{ // 物品组件
+ "minecraft:on_use":{
+ "on_use":{
+ "event":"wiki:on_use" // 使用事件触发
+ }
+ }
+ },
+ "events":{ // 事件配置
+ "wiki:on_use":{
+ "shoot":{
+ "projectile":"wiki:pretamed_wolf" // 发射自定义弹射物
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+同时需修改弹射物实体的转化逻辑以避免即时变形:
+
+::: code-group
+```json [BP/entities/pretamed_wolf.json]
+{
+ "minecraft:entity":{
+ "description":{
+ "identifier":"wiki:pretamed_wolf",
+ "runtime_identifier":"minecraft:arrow",
+ "is_spawnable":false,
+ "is_summonable":true,
+ "is_experimental":false
+ },
+ "component_groups":{ // 组件组定义
+ "wiki:transform_to_entity":{
+ "minecraft:transformation":{
+ "into":"minecraft:wolf",
+ "keep_owner":true
+ }
+ }
+ },
+ "components":{ // 组件配置
+ "minecraft:projectile":{
+ "on_hit":{ // 碰撞触发配置
+ "impact_damage":{
+ "damage":0 // 禁用伤害
+ },
+ "stick_in_ground":{}, // 插入地面
+ "definition_event":{
+ "event_trigger":{
+ "event":"wiki:on_hit" // 碰撞事件触发
+ }
+ }
+ }
+ }
+ },
+ "events":{ // 事件响应
+ "wiki:on_hit":{
+ "add":{
+ "component_groups":[
+ "wiki:transform_to_entity" // 添加变形组件组
+ ]
+ }
+ }
+ }
+ }
+}
+```
+:::
+
+特别感谢 [Zarkmend ZAN](https://twitter.com/Zarkmend_ZAN) 发现这一方法 :)
\ No newline at end of file
diff --git a/docs/wiki/3-实体/3-文档/vanilla-usage-components.md b/docs/wiki/3-实体/3-文档/vanilla-usage-components.md
new file mode 100644
index 00000000..b91888b9
--- /dev/null
+++ b/docs/wiki/3-实体/3-文档/vanilla-usage-components.md
@@ -0,0 +1,20969 @@
+---
+title: Vanilla 可用 Components
+category: Documentation
+mentions:
+ - MedicalJewel105
+---
+
+# Vanilla 可用 Components
+
+
+
+本页面由 [Wiki Content Generator](https://github.com/Bedrock-OSS/bedrock-wiki-content-generator) 创建。 如果有问题,请在 [Bedrock OSS](https://www.google.com/search?q=https://discord.gg/XjV87YN) Discord 服务器上联系我们。
+包含所有示例。 命名空间 `minecraft` 和一些格式已被删除,以加快页面加载速度。 *上次更新于 1.20.10*
+
+## addrider
+
+
+
+cave_spider
+
+#component_groups/minecraft:spider_jockey
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton"
+}
+```
+
+#component_groups/minecraft:spider_stray_jockey
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton.stray"
+}
+```
+
+#component_groups/minecraft:spider_wither_jockey
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton.wither"
+}
+```
+
+ravager
+
+#component_groups/minecraft:pillager_rider
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:pillager"
+}
+```
+
+#component_groups/minecraft:pillager_rider_for_raid
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:pillager",
+ "spawn_event": "minecraft:spawn_for_raid"
+}
+```
+
+#component_groups/minecraft:evoker_rider_for_raid
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:evocation_illager",
+ "spawn_event": "minecraft:spawn_for_raid"
+}
+```
+
+spider
+
+#component_groups/minecraft:spider_jockey
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton"
+}
+```
+
+#component_groups/minecraft:spider_stray_jockey
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton.stray"
+}
+```
+
+
+
+## admire_item
+
+
+
+piglin
+
+
+
+```json
+"minecraft:admire_item": {
+ "duration": 8,
+ "cooldown_after_being_attacked": 20
+}
+```
+
+
+
+## ageable
+
+
+
+axolotl
+
+#component_groups/axolotl_baby
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "tropical_fish_bucket",
+ "transform_to_item": "water_bucket:0",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+bee
+
+#component_groups/bee_baby
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "minecraft:red_flower",
+ "minecraft:yellow_flower",
+ "minecraft:wither_rose",
+ "minecraft:double_plant:0",
+ "minecraft:double_plant:1",
+ "minecraft:double_plant:4",
+ "minecraft:double_plant:5",
+ "minecraft:flowering_azalea",
+ "minecraft:azalea_leaves_flowered",
+ "minecraft:mangrove_propagule",
+ "minecraft:pitcher_plant",
+ "minecraft:torchflower",
+ "minecraft:cherry_leaves",
+ "minecraft:pink_petals"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_baby
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "cactus",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_baby
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "fish",
+ "salmon"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+chicken
+
+#component_groups/minecraft:chicken_baby
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "wheat_seeds",
+ "beetroot_seeds",
+ "melon_seeds",
+ "pumpkin_seeds",
+ "pitcher_pod",
+ "torchflower_seeds"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+cow
+
+#component_groups/minecraft:cow_baby
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "wheat",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+dolphin
+
+#component_groups/dolphin_baby
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "fish",
+ "salmon"
+ ],
+ "grow_up": {
+ "event": "ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_baby
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ {
+ "item": "wheat",
+ "growth": 0.016667
+ },
+ {
+ "item": "sugar",
+ "growth": 0.025
+ },
+ {
+ "item": "hay_block",
+ "growth": 0.15
+ },
+ {
+ "item": "apple",
+ "growth": 0.05
+ },
+ {
+ "item": "golden_carrot",
+ "growth": 0.05
+ },
+ {
+ "item": "golden_apple",
+ "growth": 0.2
+ },
+ {
+ "item": "appleEnchanted",
+ "growth": 0.2
+ }
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+
+
+## ambient_sound_interval
+
+
+
+allay
+
+
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 5.0,
+ "range": 5.0,
+ "event_name": "ambient",
+ "event_names": [
+ {
+ "event_name": "ambient.tame",
+ "condition": "q.is_using_item"
+ },
+ {
+ "event_name": "ambient",
+ "condition": "!q.is_using_item"
+ }
+ ]
+}
+```
+
+bee
+
+#component_groups/look_for_food
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "ambient.pollinate",
+ "range": 3.0,
+ "value": 2.0
+}
+```
+
+#component_groups/default_sound
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "ambient",
+ "range": 0.0,
+ "value": 0.0
+}
+```
+
+evocation_illager
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 2.0,
+ "range": 4.0,
+ "event_name": "ambient.in.raid"
+}
+```
+
+fox
+
+#component_groups/minecraft:fox_ambient_normal
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "ambient"
+}
+```
+
+#component_groups/minecraft:fox_ambient_sleep
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "sleep"
+}
+```
+
+#component_groups/minecraft:fox_ambient_night
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "screech",
+ "value": 80,
+ "range": 160
+}
+```
+
+pillager
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 2.0,
+ "range": 4.0,
+ "event_name": "ambient.in.raid"
+}
+```
+
+
+
+## anger_level
+
+
+
+warden
+
+
+
+```json
+"minecraft:anger_level": {
+ "max_anger": 150,
+ "angry_threshold": 80,
+ "remove_targets_below_angry_threshold": true,
+ "angry_boost": 20,
+ "anger_decrement_interval": 1.0,
+ "default_annoyingness": 35,
+ "default_projectile_annoyingness": 10,
+ "on_increase_sounds": [
+ {
+ "sound": "listening_angry",
+ "condition": "q.anger_level(this) >= 40"
+ },
+ {
+ "sound": "listening",
+ "condition": "q.anger_level(this) >= 0"
+ }
+ ],
+ "nuisance_filter": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "not",
+ "value": "warden"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "not",
+ "value": "inanimate"
+ }
+ ]
+ }
+}
+```
+
+
+
+## angry
+
+
+
+bee
+
+#component_groups/angry_bee
+
+```json
+"minecraft:angry": {
+ "duration": 25,
+ "broadcastAnger": true,
+ "broadcastRange": 20,
+ "broadcast_filters": {
+ "test": "is_family",
+ "operator": "!=",
+ "value": "pacified"
+ },
+ "calm_event": {
+ "event": "calmed_down",
+ "target": "self"
+ }
+}
+```
+
+cave_spider
+
+#component_groups/minecraft:spider_angry
+
+```json
+"minecraft:angry": {
+ "duration": 10,
+ "duration_delta": 3,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+dolphin
+
+#component_groups/dolphin_angry
+
+```json
+"minecraft:angry": {
+ "duration": 25,
+ "broadcast_anger": true,
+ "broadcast_range": 16,
+ "calm_event": {
+ "event": "on_calm",
+ "target": "self"
+ }
+}
+```
+
+enderman
+
+#component_groups/minecraft:enderman_angry
+
+```json
+"minecraft:angry": {
+ "duration": 25,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+hoglin
+
+#component_groups/angry_hoglin
+
+```json
+"minecraft:angry": {
+ "duration": 10,
+ "broadcast_anger": true,
+ "broadcast_range": 16,
+ "calm_event": {
+ "event": "become_calm_event",
+ "target": "self"
+ },
+ "angry_sound": "angry",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+llama
+
+#component_groups/minecraft:llama_angry
+
+```json
+"minecraft:angry": {
+ "duration": 4,
+ "broadcast_anger": false,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+#component_groups/minecraft:llama_angry_wolf
+
+```json
+"minecraft:angry": {
+ "duration": -1,
+ "broadcast_anger": false,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+panda
+
+#component_groups/minecraft:panda_angry
+
+```json
+"minecraft:angry": {
+ "duration": 500,
+ "broadcast_anger": true,
+ "broadcast_range": 41,
+ "broadcast_filters": {
+ "test": "is_family",
+ "operator": "==",
+ "value": "panda_aggressive"
+ },
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+
+
+## annotation.break_door
+
+
+
+drowned
+
+#component_groups/minecraft:can_break_doors
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+husk
+
+#component_groups/minecraft:can_break_doors
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+vindicator
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:annotation.break_door": {
+ "break_time": 30,
+ "min_difficulty": "normal"
+}
+```
+
+zombie
+
+#component_groups/minecraft:can_break_doors
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+zombie_villager
+
+#component_groups/can_break_doors
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+zombie_villager_v2
+
+#component_groups/can_break_doors
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+
+
+## annotation.open_door
+
+
+
+piglin
+
+
+
+```json
+"minecraft:annotation.open_door": {}
+```
+
+piglin_brute
+
+
+
+```json
+"minecraft:annotation.open_door": {}
+```
+
+villager
+
+
+
+```json
+"minecraft:annotation.open_door": {}
+```
+
+villager_v2
+
+
+
+```json
+"minecraft:annotation.open_door": {}
+```
+
+
+
+## area_attack
+
+
+
+magma_cube
+
+#component_groups/minecraft:slime_large
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 6,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ }
+}
+```
+
+#component_groups/minecraft:slime_medium
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 4,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ }
+}
+```
+
+#component_groups/minecraft:slime_small
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 3,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ }
+}
+```
+
+pufferfish
+
+#component_groups/minecraft:full_puff
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.2,
+ "damage_per_tick": 2,
+ "damage_cooldown": 0.5,
+ "cause": "contact",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ }
+ ]
+ }
+}
+```
+
+slime
+
+#component_groups/minecraft:slime_large
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 4,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ }
+ ]
+ }
+}
+```
+
+#component_groups/minecraft:slime_medium
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 2,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ }
+ ]
+ }
+}
+```
+
+
+
+## attack
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+bee
+
+#component_groups/easy_attack
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+#component_groups/normal_attack
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 10
+}
+```
+
+#component_groups/hard_attack
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 18
+}
+```
+
+blaze
+
+#component_groups/melee_mode
+
+```json
+"minecraft:attack": {
+ "damage": 6
+}
+```
+
+cave_spider
+
+#component_groups/minecraft:spider_poison_easy
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 0
+}
+```
+
+#component_groups/minecraft:spider_poison_normal
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 7
+}
+```
+
+#component_groups/minecraft:spider_poison_hard
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 15
+}
+```
+
+
+
+## attack_cooldown
+
+
+
+axolotl
+
+#component_groups/attack_cooldown
+
+```json
+"minecraft:attack_cooldown": {
+ "attack_cooldown_time": 120.0,
+ "attack_cooldown_complete_event": {
+ "event": "attack_cooldown_complete_event",
+ "target": "self"
+ }
+}
+```
+
+goat
+
+#component_groups/attack_cooldown
+
+```json
+"minecraft:attack_cooldown": {
+ "attack_cooldown_time": [
+ 30,
+ 40
+ ],
+ "attack_cooldown_complete_event": {
+ "event": "attack_cooldown_complete_event",
+ "target": "self"
+ }
+}
+```
+
+hoglin
+
+#component_groups/attack_cooldown
+
+```json
+"minecraft:attack_cooldown": {
+ "attack_cooldown_time": [
+ 10.0,
+ 15.0
+ ],
+ "attack_cooldown_complete_event": {
+ "event": "attack_cooldown_complete_event",
+ "target": "self"
+ }
+}
+```
+
+piglin
+
+#component_groups/attack_cooldown
+
+```json
+"minecraft:attack_cooldown": {
+ "attack_cooldown_time": [
+ 30.0,
+ 120.0
+ ],
+ "attack_cooldown_complete_event": {
+ "event": "attack_cooldown_complete_event",
+ "target": "self"
+ }
+}
+```
+
+
+
+## attack_damage
+
+
+
+cat
+
+
+
+```json
+"minecraft:attack_damage": {
+ "value": 4
+}
+```
+
+ocelot
+
+
+
+```json
+"minecraft:attack_damage": {
+ "value": 3
+}
+```
+
+
+
+## balloonable
+
+
+
+allay
+
+
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.5
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.5
+}
+```
+
+boat
+
+
+
+```json
+"minecraft:balloonable": {}
+```
+
+cat
+
+
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.6
+}
+```
+
+chest_boat
+
+
+
+```json
+"minecraft:balloonable": {}
+```
+
+chicken
+
+
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.5
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:balloonable": {}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:balloonable": {}
+```
+
+
+
+## barter
+
+
+
+piglin
+
+#component_groups/piglin_adult
+
+```json
+"minecraft:barter": {
+ "barter_table": "loot_tables/entities/piglin_barter.json",
+ "cooldown_after_being_attacked": 20
+}
+```
+
+
+
+## behavior.admire_item
+
+
+
+piglin
+
+
+
+```json
+"minecraft:behavior.admire_item": {
+ "priority": 2,
+ "admire_item_sound": "admire",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ },
+ "on_admire_item_start": {
+ "event": "admire_item_started_event",
+ "target": "self"
+ },
+ "on_admire_item_stop": {
+ "event": "admire_item_stopped_event",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.avoid_block
+
+
+
+hoglin
+
+
+
+```json
+"minecraft:behavior.avoid_block": {
+ "priority": 1,
+ "tick_interval": 5,
+ "search_range": 8,
+ "search_height": 4,
+ "walk_speed_modifier": 1,
+ "sprint_speed_modifier": 1,
+ "avoid_block_sound": "retreat",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ },
+ "target_selection_method": "nearest",
+ "target_blocks": [
+ "minecraft:warped_fungus",
+ "minecraft:portal",
+ "minecraft:respawn_anchor"
+ ],
+ "on_escape": [
+ {
+ "event": "escaped_event",
+ "target": "self"
+ }
+ ]
+}
+```
+
+piglin
+
+
+
+```json
+"minecraft:behavior.avoid_block": {
+ "priority": 9,
+ "tick_interval": 5,
+ "search_range": 8,
+ "search_height": 4,
+ "sprint_speed_modifier": 1.1,
+ "target_selection_method": "nearest",
+ "target_blocks": [
+ "minecraft:soul_fire",
+ "minecraft:soul_lantern",
+ "minecraft:soul_torch",
+ "minecraft:item.soul_campfire"
+ ],
+ "avoid_block_sound": "retreat",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+
+
+## behavior.avoid_mob_type
+
+
+
+cat
+
+#component_groups/minecraft:cat_wild
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 6,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 10,
+ "walk_speed_multiplier": 0.8,
+ "sprint_speed_multiplier": 1.33
+ }
+ ]
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 3,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "ocelot"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "cat"
+ }
+ ]
+ },
+ "max_dist": 6,
+ "sprint_speed_multiplier": 1.2
+ }
+ ]
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "guardian_elder"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "guardian"
+ }
+ ]
+ },
+ "max_dist": 8,
+ "walk_speed_multiplier": 1.0,
+ "sprint_speed_multiplier": 1.0
+ }
+ ],
+ "probability_per_strength": 0.14
+}
+```
+
+evocation_illager
+
+
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 8,
+ "walk_speed_multiplier": 0.6,
+ "sprint_speed_multiplier": 1.0
+ }
+ ]
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ "max_dist": 6,
+ "walk_speed_multiplier": 1.5,
+ "sprint_speed_multiplier": 2.0
+ }
+ ]
+}
+```
+
+fox
+
+
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "trusts",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "polarbear"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wolf"
+ }
+ ]
+ },
+ "max_dist": 10,
+ "walk_speed_multiplier": 1.0,
+ "sprint_speed_multiplier": 1.5
+ }
+ ]
+}
+```
+
+guardian
+
+#component_groups/minecraft:guardian_passive
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 8,
+ "walk_speed_multiplier": 1,
+ "sprint_speed_multiplier": 1
+ }
+ ]
+}
+```
+
+hoglin
+
+
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 0,
+ "remove_target": true,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_target",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "piglin"
+ }
+ ]
+ },
+ "check_if_outnumbered": true,
+ "max_dist": 10,
+ "sprint_speed_multiplier": 1.2
+ }
+ ],
+ "avoid_mob_sound": "retreat",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+
+
+## behavior.barter
+
+
+
+piglin
+
+
+
+```json
+"minecraft:behavior.barter": {
+ "priority": 3
+}
+```
+
+
+
+## behavior.beg
+
+
+
+wolf
+
+
+
+```json
+"minecraft:behavior.beg": {
+ "priority": 9,
+ "look_distance": 8,
+ "look_time": [
+ 2,
+ 4
+ ],
+ "items": [
+ "bone",
+ "porkchop",
+ "cooked_porkchop",
+ "chicken",
+ "cooked_chicken",
+ "beef",
+ "cooked_beef",
+ "rotten_flesh",
+ "muttonraw",
+ "muttoncooked",
+ "rabbit",
+ "cooked_rabbit"
+ ]
+}
+```
+
+
+
+## behavior.breed
+
+
+
+axolotl
+
+#component_groups/axolotl_adult
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 1,
+ "speed_multiplier": 1.0
+}
+```
+
+bee
+
+#component_groups/bee_adult
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_adult
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_adult
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+chicken
+
+#component_groups/minecraft:chicken_adult
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+#component_groups/minecraft:cow_adult
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_adult
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+
+
+## behavior.celebrate
+
+
+
+evocation_illager
+
+#component_groups/minecraft:celebrate
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+pillager
+
+#component_groups/minecraft:celebrate
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+ravager
+
+#component_groups/minecraft:celebrate
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+vindicator
+
+#component_groups/minecraft:celebrate
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+witch
+
+#component_groups/minecraft:celebrate
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.celebrate_survive
+
+
+
+villager
+
+#component_groups/minecraft:celebrate
+
+```json
+"minecraft:behavior.celebrate_survive": {
+ "priority": 5,
+ "fireworks_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+villager_v2
+
+#component_groups/minecraft:celebrate
+
+```json
+"minecraft:behavior.celebrate_survive": {
+ "priority": 5,
+ "fireworks_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.charge_attack
+
+
+
+vex
+
+
+
+```json
+"minecraft:behavior.charge_attack": {
+ "priority": 4
+}
+```
+
+
+
+## behavior.charge_held_item
+
+
+
+piglin
+
+#component_groups/ranged_unit
+
+```json
+"minecraft:behavior.charge_held_item": {
+ "priority": 3,
+ "items": [
+ "minecraft:arrow"
+ ]
+}
+```
+
+pillager
+
+
+
+```json
+"minecraft:behavior.charge_held_item": {
+ "priority": 3,
+ "items": [
+ "minecraft:arrow"
+ ]
+}
+```
+
+
+
+## behavior.circle_around_anchor
+
+
+
+phantom
+
+
+
+```json
+"minecraft:behavior.circle_around_anchor": {
+ "priority": 3,
+ "radius_change": 1.0,
+ "radius_adjustment_chance": 0.004,
+ "height_adjustment_chance": 0.002857,
+ "goal_radius": 1.0,
+ "angle_change": 15.0,
+ "radius_range": [
+ 5.0,
+ 15.0
+ ],
+ "height_offset_range": [
+ -4.0,
+ 5.0
+ ],
+ "height_above_target_range": [
+ 20.0,
+ 40.0
+ ]
+}
+```
+
+
+
+## behavior.controlled_by_player
+
+
+
+pig
+
+#component_groups/minecraft:pig_saddled
+
+```json
+"minecraft:behavior.controlled_by_player": {
+ "priority": 0
+}
+```
+
+strider
+
+#component_groups/minecraft:strider_saddled
+
+```json
+"minecraft:behavior.controlled_by_player": {
+ "priority": 0,
+ "mount_speed_multiplier": 1.45
+}
+```
+
+
+
+## behavior.croak
+
+
+
+frog
+
+
+
+```json
+"minecraft:behavior.croak": {
+ "priority": 9,
+ "interval": [
+ 10,
+ 20
+ ],
+ "duration": 4.5,
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "value": false
+ },
+ {
+ "test": "in_lava",
+ "value": false
+ }
+ ]
+ }
+}
+```
+
+
+
+## behavior.defend_trusted_target
+
+
+
+fox
+
+#component_groups/minecraft:trusting_fox
+
+```json
+"minecraft:behavior.defend_trusted_target": {
+ "priority": 0,
+ "within_radius": 25,
+ "must_see": false,
+ "aggro_sound": "mad",
+ "sound_chance": 0.05,
+ "on_defend_start": {
+ "event": "minecraft:fox_configure_defending",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.defend_village_target
+
+
+
+iron_golem
+
+#component_groups/minecraft:village_created
+
+```json
+"minecraft:behavior.defend_village_target": {
+ "priority": 1,
+ "must_reach": true,
+ "attack_chance": 0.05,
+ "entity_types": {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ ]
+ }
+ }
+}
+```
+
+
+
+## behavior.delayed_attack
+
+
+
+ravager
+
+#component_groups/minecraft:hostile
+
+```json
+"minecraft:behavior.delayed_attack": {
+ "priority": 4,
+ "attack_once": false,
+ "track_target": true,
+ "require_complete_path": false,
+ "random_stop_interval": 0,
+ "reach_multiplier": 1.5,
+ "speed_multiplier": 1.0,
+ "attack_duration": 0.75,
+ "hit_delay_pct": 0.5
+}
+```
+
+
+
+## behavior.dig
+
+
+
+warden
+
+
+
+```json
+"minecraft:behavior.dig": {
+ "priority": 1,
+ "duration": 5.5,
+ "idle_time": 60.0,
+ "vibration_is_disturbance": true,
+ "suspicion_is_disturbance": true,
+ "digs_in_daylight": false,
+ "on_start": {
+ "event": "on_digging_event",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.dragonchargeplayer
+
+
+
+ender_dragon
+
+#component_groups/dragon_flying
+
+```json
+"minecraft:behavior.dragonchargeplayer": {
+ "priority": 1
+}
+```
+
+
+
+## behavior.dragondeath
+
+
+
+ender_dragon
+
+#component_groups/dragon_death
+
+```json
+"minecraft:behavior.dragondeath": {
+ "priority": 0
+}
+```
+
+
+
+## behavior.dragonflaming
+
+
+
+ender_dragon
+
+#component_groups/dragon_sitting
+
+```json
+"minecraft:behavior.dragonflaming": {
+ "priority": 1
+}
+```
+
+
+
+## behavior.dragonholdingpattern
+
+
+
+ender_dragon
+
+#component_groups/dragon_flying
+
+```json
+"minecraft:behavior.dragonholdingpattern": {
+ "priority": 3
+}
+```
+
+
+
+## behavior.dragonlanding
+
+
+
+ender_dragon
+
+#component_groups/dragon_sitting
+
+```json
+"minecraft:behavior.dragonlanding": {
+ "priority": 0
+}
+```
+
+
+
+## behavior.dragonscanning
+
+
+
+ender_dragon
+
+#component_groups/dragon_sitting
+
+```json
+"minecraft:behavior.dragonscanning": {
+ "priority": 2
+}
+```
+
+
+
+## behavior.dragonstrafeplayer
+
+
+
+ender_dragon
+
+#component_groups/dragon_flying
+
+```json
+"minecraft:behavior.dragonstrafeplayer": {
+ "priority": 2
+}
+```
+
+
+
+## behavior.dragontakeoff
+
+
+
+ender_dragon
+
+#component_groups/dragon_flying
+
+```json
+"minecraft:behavior.dragontakeoff": {
+ "priority": 0
+}
+```
+
+
+
+## behavior.drink_milk
+
+
+
+wandering_trader
+
+
+
+```json
+"minecraft:behavior.drink_milk": {
+ "priority": 5,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ },
+ {
+ "test": "is_visible",
+ "subject": "self",
+ "value": false
+ },
+ {
+ "test": "is_avoiding_mobs",
+ "subject": "self",
+ "value": false
+ }
+ ]
+ }
+}
+```
+
+
+
+## behavior.drink_potion
+
+
+
+wandering_trader
+
+
+
+```json
+"minecraft:behavior.drink_potion": {
+ "priority": 1,
+ "speed_modifier": -0.2,
+ "potions": [
+ {
+ "id": 7,
+ "chance": 1.0,
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 18000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ {
+ "test": "is_visible",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_avoiding_mobs",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "all_of": [
+ {
+ "test": "has_component",
+ "subject": "self",
+ "value": "minecraft:angry"
+ },
+ {
+ "test": "is_family",
+ "subject": "target",
+ "operator": "!=",
+ "value": "player"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "id": 8,
+ "chance": 1.0,
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 18000
+ },
+ {
+ "test": "is_visible",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_avoiding_mobs",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "value": "minecraft:angry"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+witch
+
+
+
+```json
+"minecraft:behavior.drink_potion": {
+ "priority": 1,
+ "speed_modifier": -0.25,
+ "potions": [
+ {
+ "id": 19,
+ "chance": 0.15,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_underwater",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "none_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "self",
+ "value": "water_breathing"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "id": 12,
+ "chance": 0.15,
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "on_fire",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "test": "on_hot_block",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "test": "taking_fire_damage",
+ "subject": "self",
+ "value": true
+ }
+ ]
+ },
+ {
+ "none_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "self",
+ "value": "fire_resistance"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "id": 21,
+ "chance": 0.05,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_missing_health",
+ "subject": "self",
+ "value": true
+ }
+ ]
+ }
+ },
+ {
+ "id": 14,
+ "chance": 0.25,
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_target",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "none_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "self",
+ "value": "speed"
+ }
+ ]
+ },
+ {
+ "test": "target_distance",
+ "subject": "self",
+ "value": 11.0,
+ "operator": ">="
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+
+
+## behavior.drop_item_for
+
+
+
+cat
+
+#component_groups/minecraft:cat_gift_for_owner
+
+```json
+"minecraft:behavior.drop_item_for": {
+ "priority": 1,
+ "seconds_before_pickup": 0.0,
+ "cooldown": 0.25,
+ "drop_item_chance": 0.7,
+ "offering_distance": 5.0,
+ "minimum_teleport_distance": 2.0,
+ "max_head_look_at_height": 10.0,
+ "target_range": [
+ 5.0,
+ 5.0,
+ 5.0
+ ],
+ "teleport_offset": [
+ 0.0,
+ 1.0,
+ 0.0
+ ],
+ "time_of_day_range": [
+ 0.74999,
+ 0.8
+ ],
+ "speed_multiplier": 1.0,
+ "search_range": 5,
+ "search_height": 2,
+ "search_count": 0,
+ "goal_radius": 1.0,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 6
+ }
+ ],
+ "loot_table": "loot_tables/entities/cat_gift.json",
+ "on_drop_attempt": {
+ "event": "minecraft:cat_gifted_owner",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.eat_block
+
+
+
+sheep
+
+
+
+```json
+"minecraft:behavior.eat_block": {
+ "priority": 6,
+ "success_chance": "q.is_baby ? 0.02 : 0.001",
+ "time_until_eat": 1.8,
+ "eat_and_replace_block_pairs": [
+ {
+ "eat_block": "grass",
+ "replace_block": "dirt"
+ },
+ {
+ "eat_block": "tallgrass",
+ "replace_block": "air"
+ }
+ ],
+ "on_eat": {
+ "event": "minecraft:on_eat_block",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.eat_carried_item
+
+
+
+fox
+
+
+
+```json
+"minecraft:behavior.eat_carried_item": {
+ "priority": 12,
+ "delay_before_eating": 28
+}
+```
+
+
+
+## behavior.eat_mob
+
+
+
+frog
+
+
+
+```json
+"minecraft:behavior.eat_mob": {
+ "priority": 7,
+ "run_speed": 2.0,
+ "eat_animation_time": 0.3,
+ "pull_in_force": 0.75,
+ "reach_mob_distance": 1.75,
+ "eat_mob_sound": "tongue",
+ "loot_table": "loot_tables/entities/frog.json"
+}
+```
+
+
+
+## behavior.emerge
+
+
+
+warden
+
+#component_groups/emerging
+
+```json
+"minecraft:behavior.emerge": {
+ "duration": 7.0,
+ "on_done": {
+ "event": "minecraft:emerged",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.enderman_leave_block
+
+
+
+enderman
+
+
+
+```json
+"minecraft:behavior.enderman_leave_block": {
+ "priority": 10
+}
+```
+
+
+
+## behavior.enderman_take_block
+
+
+
+enderman
+
+
+
+```json
+"minecraft:behavior.enderman_take_block": {
+ "priority": 11
+}
+```
+
+
+
+## behavior.equip_item
+
+
+
+drowned
+
+
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+fox
+
+
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 2
+}
+```
+
+husk
+
+
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 2
+}
+```
+
+piglin
+
+
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 5
+}
+```
+
+pillager
+
+
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+skeleton
+
+
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+stray
+
+
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+wither_skeleton
+
+
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+
+
+## behavior.explore_outskirts
+
+
+
+villager_v2
+
+#component_groups/job_specific_goals
+
+```json
+"minecraft:behavior.explore_outskirts": {}
+```
+
+#component_groups/wander_schedule_villager
+
+```json
+"minecraft:behavior.explore_outskirts": {
+ "priority": 9,
+ "next_xz": 5,
+ "next_y": 3,
+ "min_wait_time": 3.0,
+ "max_wait_time": 10.0,
+ "max_travel_time": 60.0,
+ "speed_multiplier": 0.6,
+ "explore_dist": 6.0,
+ "min_perimeter": 1.0,
+ "min_dist_from_target": 2.5,
+ "timer_ratio": 2.0,
+ "dist_from_boundary": [
+ 5.0,
+ 0.0,
+ 5.0
+ ]
+}
+```
+
+
+
+## behavior.feeling_happy
+
+
+
+sniffer
+
+#component_groups/feeling_happy
+
+```json
+"minecraft:behavior.feeling_happy": {
+ "priority": 5,
+ "cooldown_range": 0.0,
+ "duration_range": [
+ 2.0,
+ 5.0
+ ],
+ "on_end": {
+ "event": "on_feeling_happy_end",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.fertilize_farm_block
+
+
+
+villager_v2
+
+#component_groups/work_schedule_farmer
+
+```json
+"minecraft:behavior.fertilize_farm_block": {
+ "priority": 8
+}
+```
+
+
+
+## behavior.find_cover
+
+
+
+fox
+
+#component_groups/minecraft:fox_thunderstorm
+
+```json
+"minecraft:behavior.find_cover": {
+ "priority": 0,
+ "speed_multiplier": 1,
+ "cooldown_time": 0.0
+}
+```
+
+#component_groups/minecraft:fox_day
+
+```json
+"minecraft:behavior.find_cover": {
+ "priority": 9,
+ "speed_multiplier": 1,
+ "cooldown_time": 5.0
+}
+```
+
+
+
+## behavior.find_mount
+
+
+
+husk
+
+#component_groups/minecraft:zombie_husk_jockey
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16
+}
+```
+
+parrot
+
+#component_groups/minecraft:parrot_tame
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 3,
+ "within_radius": 16,
+ "avoid_water": true,
+ "start_delay": 100,
+ "target_needed": false,
+ "mount_distance": 2.0
+}
+```
+
+piglin
+
+#component_groups/piglin_jockey
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16,
+ "start_delay": 15,
+ "max_failed_attempts": 20
+}
+```
+
+zombie
+
+#component_groups/minecraft:zombie_jockey
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16,
+ "start_delay": 15,
+ "max_failed_attempts": 20
+}
+```
+
+zombie_villager
+
+#component_groups/jockey
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16
+}
+```
+
+zombie_villager_v2
+
+#component_groups/jockey
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16
+}
+```
+
+
+
+## behavior.find_underwater_treasure
+
+
+
+dolphin
+
+
+
+```json
+"minecraft:behavior.find_underwater_treasure": {
+ "priority": 2,
+ "speed_multiplier": 2.0,
+ "search_range": 30,
+ "stop_distance": 50
+}
+```
+
+
+
+## behavior.flee_sun
+
+
+
+drowned
+
+
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 2,
+ "speed_multiplier": 1
+}
+```
+
+skeleton
+
+
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 2,
+ "speed_multiplier": 1
+}
+```
+
+stray
+
+
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 2,
+ "speed_multiplier": 1
+}
+```
+
+zombie_villager
+
+#component_groups/from_abandoned_village
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 4,
+ "speed_multiplier": 1
+}
+```
+
+zombie_villager_v2
+
+#component_groups/from_abandoned_village
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 4,
+ "speed_multiplier": 1
+}
+```
+
+
+
+## behavior.float
+
+
+
+allay
+
+
+
+```json
+"minecraft:behavior.float": {
+ "priority": 7
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:behavior.float": {
+ "priority": 19
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0,
+ "sink_with_passengers": true
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:behavior.float": {
+ "priority": 1
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+
+
+## behavior.float_wander
+
+
+
+bat
+
+
+
+```json
+"minecraft:behavior.float_wander": {
+ "xz_dist": 10,
+ "y_dist": 7,
+ "y_offset": -2.0,
+ "random_reselect": true,
+ "float_duration": [
+ 0.1,
+ 0.35
+ ]
+}
+```
+
+ghast
+
+
+
+```json
+"minecraft:behavior.float_wander": {
+ "priority": 2,
+ "must_reach": true
+}
+```
+
+
+
+## behavior.follow_caravan
+
+
+
+llama
+
+
+
+```json
+"minecraft:behavior.follow_caravan": {
+ "priority": 3,
+ "speed_multiplier": 2.1,
+ "entity_count": 10,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "llama"
+ }
+ }
+}
+```
+
+trader_llama
+
+
+
+```json
+"minecraft:behavior.follow_caravan": {
+ "priority": 3,
+ "speed_multiplier": 2.1,
+ "entity_count": 10,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "llama"
+ }
+ }
+}
+```
+
+
+
+## behavior.follow_mob
+
+
+
+parrot
+
+#component_groups/minecraft:parrot_wild
+
+```json
+"minecraft:behavior.follow_mob": {
+ "priority": 3,
+ "speed_multiplier": 1.0,
+ "stop_distance": 3,
+ "search_range": 20
+}
+```
+
+
+
+## behavior.follow_owner
+
+
+
+allay
+
+
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 6,
+ "speed_multiplier": 8,
+ "start_distance": 16,
+ "stop_distance": 4,
+ "can_teleport": false,
+ "ignore_vibration": false
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "start_distance": 10,
+ "stop_distance": 2
+}
+```
+
+ocelot
+
+#component_groups/minecraft:ocelot_tame
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "start_distance": 10,
+ "stop_distance": 2
+}
+```
+
+parrot
+
+#component_groups/minecraft:parrot_tame
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 2,
+ "speed_multiplier": 1.0,
+ "start_distance": 5,
+ "stop_distance": 1
+}
+```
+
+wolf
+
+#component_groups/minecraft:wolf_tame
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 6,
+ "speed_multiplier": 1.0,
+ "start_distance": 10,
+ "stop_distance": 2
+}
+```
+
+
+
+## behavior.follow_parent
+
+
+
+axolotl
+
+#component_groups/axolotl_baby
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.1
+}
+```
+
+bee
+
+#component_groups/bee_baby
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 11,
+ "speed_multiplier": 1.1
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_baby
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 2.5
+}
+```
+
+chicken
+
+#component_groups/minecraft:chicken_baby
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.1
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.1
+}
+```
+
+#component_groups/minecraft:cow_baby
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 6,
+ "speed_multiplier": 1.1
+}
+```
+
+dolphin
+
+#component_groups/dolphin_baby
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 4,
+ "speed_multiplier": 1.1
+}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_baby
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+
+
+## behavior.follow_target_captain
+
+
+
+pillager
+
+#component_groups/minecraft:patrol_follower
+
+```json
+"minecraft:behavior.follow_target_captain": {
+ "priority": 5,
+ "speed_multiplier": 0.8,
+ "within_radius": 64,
+ "follow_distance": 5
+}
+```
+
+vindicator
+
+#component_groups/minecraft:patrol_follower
+
+```json
+"minecraft:behavior.follow_target_captain": {
+ "priority": 5,
+ "speed_multiplier": 0.8,
+ "within_radius": 64,
+ "follow_distance": 5
+}
+```
+
+
+
+## behavior.go_and_give_items_to_noteblock
+
+
+
+allay
+
+
+
+```json
+"minecraft:behavior.go_and_give_items_to_noteblock": {
+ "priority": 3,
+ "run_speed": 8,
+ "throw_sound": "item_thrown",
+ "on_item_throw": [
+ {
+ "event": "pickup_item_delay",
+ "target": "self"
+ }
+ ]
+}
+```
+
+
+
+## behavior.go_and_give_items_to_owner
+
+
+
+allay
+
+
+
+```json
+"minecraft:behavior.go_and_give_items_to_owner": {
+ "priority": 4,
+ "run_speed": 8,
+ "throw_sound": "item_thrown",
+ "on_item_throw": [
+ {
+ "event": "pickup_item_delay",
+ "target": "self"
+ }
+ ]
+}
+```
+
+
+
+## behavior.go_home
+
+
+
+bee
+
+#component_groups/return_to_home
+
+```json
+"minecraft:behavior.go_home": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "interval": 1,
+ "goal_radius": 1.2,
+ "on_home": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_block",
+ "subject": "block",
+ "value": "minecraft:bee_nest"
+ },
+ {
+ "test": "is_block",
+ "subject": "block",
+ "value": "minecraft:beehive"
+ }
+ ]
+ },
+ "event": "minecraft:bee_returned_to_hive",
+ "target": "block"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_block",
+ "subject": "block",
+ "operator": "!=",
+ "value": "minecraft:bee_nest"
+ },
+ {
+ "test": "is_block",
+ "subject": "block",
+ "operator": "!=",
+ "value": "minecraft:beehive"
+ }
+ ]
+ },
+ "event": "find_hive_event",
+ "target": "self"
+ }
+ ],
+ "on_failed": [
+ {
+ "event": "find_hive_event",
+ "target": "self"
+ }
+ ]
+}
+```
+
+piglin_brute
+
+#component_groups/go_back_to_spawn
+
+```json
+"minecraft:behavior.go_home": {
+ "priority": 6,
+ "interval": 200,
+ "speed_multiplier": 0.6,
+ "goal_radius": 4.0,
+ "on_failed": [
+ {
+ "event": "go_back_to_spawn_failed",
+ "target": "self"
+ }
+ ]
+}
+```
+
+turtle
+
+#component_groups/minecraft:pregnant
+
+```json
+"minecraft:behavior.go_home": {
+ "priority": 1,
+ "speed_multiplier": 1.0,
+ "interval": 700,
+ "goal_radius": 4.0,
+ "on_home": [
+ {
+ "event": "minecraft:go_lay_egg",
+ "target": "self"
+ }
+ ]
+}
+```
+
+
+
+## behavior.guardian_attack
+
+
+
+elder_guardian
+
+
+
+```json
+"minecraft:behavior.guardian_attack": {
+ "priority": 4
+}
+```
+
+guardian
+
+
+
+```json
+"minecraft:behavior.guardian_attack": {
+ "priority": 4
+}
+```
+
+#component_groups/minecraft:guardian_aggressive
+
+```json
+"minecraft:behavior.guardian_attack": {
+ "priority": 4
+}
+```
+
+
+
+## behavior.harvest_farm_block
+
+
+
+villager
+
+#component_groups/behavior_peasant
+
+```json
+"minecraft:behavior.harvest_farm_block": {
+ "priority": 9,
+ "speed_multiplier": 0.5
+}
+```
+
+villager_v2
+
+#component_groups/job_specific_goals
+
+```json
+"minecraft:behavior.harvest_farm_block": {}
+```
+
+#component_groups/work_schedule_farmer
+
+```json
+"minecraft:behavior.harvest_farm_block": {
+ "priority": 7
+}
+```
+
+
+
+## behavior.hide
+
+
+
+villager_v2
+
+
+
+```json
+"minecraft:behavior.hide": {
+ "priority": 0,
+ "speed_multiplier": 0.8,
+ "poi_type": "bed",
+ "duration": 30.0
+}
+```
+
+
+
+## behavior.hold_ground
+
+
+
+pillager
+
+#component_groups/minecraft:patrol_captain
+
+```json
+"minecraft:behavior.hold_ground": {
+ "priority": 5,
+ "min_radius": 10,
+ "broadcast": true,
+ "broadcast_range": 8,
+ "within_radius_event": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+ }
+}
+```
+
+#component_groups/minecraft:patrol_follower
+
+```json
+"minecraft:behavior.hold_ground": {
+ "priority": 6,
+ "min_radius": 10,
+ "broadcast": true,
+ "broadcast_range": 8,
+ "within_radius_event": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.hurt_by_target
+
+
+
+bee
+
+#component_groups/track_attacker
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 2
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+drowned
+
+
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+enderman
+
+
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 3
+}
+```
+
+evocation_illager
+
+
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+
+
+## behavior.inspect_bookshelf
+
+
+
+villager_v2
+
+#component_groups/job_specific_goals
+
+```json
+"minecraft:behavior.inspect_bookshelf": {}
+```
+
+#component_groups/work_schedule_librarian
+
+```json
+"minecraft:behavior.inspect_bookshelf": {
+ "priority": 8,
+ "speed_multiplier": 0.6,
+ "search_range": 4,
+ "search_height": 3,
+ "goal_radius": 0.8,
+ "search_count": 0
+}
+```
+
+
+
+## behavior.investigate_suspicious_location
+
+
+
+warden
+
+
+
+```json
+"minecraft:behavior.investigate_suspicious_location": {
+ "priority": 5,
+ "speed_multiplier": 0.7
+}
+```
+
+
+
+## behavior.jump_to_block
+
+
+
+frog
+
+
+
+```json
+"minecraft:behavior.jump_to_block": {
+ "priority": 10,
+ "search_width": 8,
+ "search_height": 4,
+ "minimum_path_length": 2,
+ "minimum_distance": 1,
+ "scale_factor": 0.6,
+ "max_velocity": 1,
+ "cooldown_range": [
+ 5,
+ 7
+ ],
+ "preferred_blocks": [
+ "minecraft:waterlily",
+ "minecraft:big_dripleaf"
+ ],
+ "preferred_blocks_chance": 0.5,
+ "forbidden_blocks": [
+ "minecraft:water"
+ ]
+}
+```
+
+goat
+
+
+
+```json
+"minecraft:behavior.jump_to_block": {
+ "priority": 8,
+ "search_width": 10,
+ "search_height": 10,
+ "minimum_path_length": 8,
+ "minimum_distance": 1,
+ "scale_factor": 0.6,
+ "cooldown_range": [
+ 30,
+ 60
+ ]
+}
+```
+
+
+
+## behavior.knockback_roar
+
+
+
+ravager
+
+#component_groups/roaring
+
+```json
+"minecraft:behavior.knockback_roar": {
+ "priority": 1,
+ "duration": 1,
+ "attack_time": 0.5,
+ "knockback_damage": 6,
+ "knockback_horizontal_strength": 3,
+ "knockback_vertical_strength": 3,
+ "knockback_range": 4,
+ "knockback_filters": {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "ravager"
+ },
+ "damage_filters": {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "illager"
+ },
+ "on_roar_end": {
+ "event": "minecraft:end_roar"
+ },
+ "cooldown_time": 0.1
+}
+```
+
+
+
+## behavior.lay_down
+
+
+
+panda
+
+#component_groups/minecraft:panda_lazy
+
+```json
+"minecraft:behavior.lay_down": {
+ "priority": 5,
+ "interval": 400,
+ "random_stop_interval": 2000
+}
+```
+
+
+
+## behavior.lay_egg
+
+
+
+frog
+
+#component_groups/pregnant
+
+```json
+"minecraft:behavior.lay_egg": {
+ "priority": 2,
+ "speed_multiplier": 1.0,
+ "search_range": 10,
+ "search_height": 3,
+ "goal_radius": 1.7,
+ "target_blocks": [
+ "minecraft:water"
+ ],
+ "target_materials_above_block": [
+ "Air"
+ ],
+ "allow_laying_from_below": true,
+ "use_default_animation": false,
+ "lay_seconds": 2,
+ "egg_type": "minecraft:frog_spawn",
+ "lay_egg_sound": "lay_spawn",
+ "on_lay": {
+ "event": "laid_egg",
+ "target": "self"
+ }
+}
+```
+
+turtle
+
+#component_groups/minecraft:wants_to_lay_egg
+
+```json
+"minecraft:behavior.lay_egg": {
+ "priority": 1,
+ "speed_multiplier": 1.0,
+ "search_range": 16,
+ "search_height": 4,
+ "goal_radius": 1.5,
+ "on_lay": {
+ "event": "minecraft:laid_egg",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.leap_at_target
+
+
+
+cat
+
+
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 3,
+ "target_dist": 0.3
+}
+```
+
+cave_spider
+
+#component_groups/minecraft:spider_hostile
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 4,
+ "yd": 0.4,
+ "must_be_on_ground": false
+}
+```
+
+#component_groups/minecraft:spider_angry
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 4,
+ "yd": 0.4,
+ "must_be_on_ground": false
+}
+```
+
+ocelot
+
+
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 3,
+ "target_dist": 0.3
+}
+```
+
+spider
+
+#component_groups/minecraft:spider_angry
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 4,
+ "yd": 0.4,
+ "must_be_on_ground": false
+}
+```
+
+wolf
+
+
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 4,
+ "target_dist": 0.4
+}
+```
+
+
+
+## behavior.look_at_entity
+
+
+
+evocation_illager
+
+
+
+```json
+"minecraft:behavior.look_at_entity": {
+ "priority": 10,
+ "look_distance": 8.0,
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ }
+}
+```
+
+ravager
+
+#component_groups/minecraft:hostile
+
+```json
+"minecraft:behavior.look_at_entity": {
+ "priority": 10,
+ "look_distance": 8,
+ "angle_of_view_horizontal": 45,
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ }
+}
+```
+
+vex
+
+
+
+```json
+"minecraft:behavior.look_at_entity": {
+ "priority": 9,
+ "look_distance": 6.0,
+ "probability": 0.02,
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ }
+}
+```
+
+
+
+## behavior.look_at_player
+
+
+
+allay
+
+
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 10,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 9
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 6,
+ "look_distance": 8
+}
+```
+
+
+
+## behavior.look_at_target
+
+
+
+wither
+
+
+
+```json
+"minecraft:behavior.look_at_target": {
+ "priority": 5
+}
+```
+
+
+
+## behavior.look_at_trading_player
+
+
+
+villager
+
+
+
+```json
+"minecraft:behavior.look_at_trading_player": {
+ "priority": 2
+}
+```
+
+villager_v2
+
+
+
+```json
+"minecraft:behavior.look_at_trading_player": {
+ "priority": 7
+}
+```
+
+wandering_trader
+
+
+
+```json
+"minecraft:behavior.look_at_trading_player": {
+ "priority": 4
+}
+```
+
+
+
+## behavior.make_love
+
+
+
+villager
+
+#component_groups/adult
+
+```json
+"minecraft:behavior.make_love": {
+ "priority": 6
+}
+```
+
+villager_v2
+
+#component_groups/make_and_receive_love
+
+```json
+"minecraft:behavior.make_love": {
+ "priority": 5
+}
+```
+
+
+
+## behavior.melee_attack
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "on_kill": {
+ "event": "killed_enemy_event",
+ "target": "self"
+ }
+}
+```
+
+bee
+
+#component_groups/angry_bee
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 2,
+ "attack_once": true,
+ "speed_multiplier": 1.4,
+ "on_attack": {
+ "event": "countdown_to_perish_event",
+ "target": "self"
+ }
+}
+```
+
+blaze
+
+#component_groups/melee_mode
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3
+}
+```
+
+cave_spider
+
+#component_groups/minecraft:spider_hostile
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3,
+ "track_target": true,
+ "random_stop_interval": 100,
+ "reach_multiplier": 0.8
+}
+```
+
+#component_groups/minecraft:spider_angry
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3,
+ "track_target": true,
+ "reach_multiplier": 1.4
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "speed_multiplier": 1.25,
+ "track_target": false,
+ "reach_multiplier": 0.0
+}
+```
+
+dolphin
+
+#component_groups/dolphin_adult
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 2,
+ "track_target": true
+}
+```
+
+drowned
+
+#component_groups/minecraft:melee_mode
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3,
+ "speed_multiplier": 1,
+ "track_target": false,
+ "require_complete_path": true
+}
+```
+
+
+
+## behavior.mingle
+
+
+
+villager_v2
+
+#component_groups/job_specific_goals
+
+```json
+"minecraft:behavior.mingle": {}
+```
+
+#component_groups/gather_schedule_villager
+
+```json
+"minecraft:behavior.mingle": {
+ "priority": 7,
+ "speed_multiplier": 0.5,
+ "duration": 30,
+ "cooldown_time": 10,
+ "mingle_partner_type": "minecraft:villager_v2",
+ "mingle_distance": 2.0
+}
+```
+
+
+
+## behavior.mount_pathing
+
+
+
+cat
+
+
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "target_dist": 0,
+ "track_target": true
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_wild
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+horse
+
+#component_groups/minecraft:horse_wild
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+husk
+
+#component_groups/minecraft:zombie_husk_adult
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+llama
+
+
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+
+
+## behavior.move_indoors
+
+
+
+villager
+
+
+
+```json
+"minecraft:behavior.move_indoors": {
+ "priority": 4,
+ "speed_multiplier": 0.8
+}
+```
+
+villager_v2
+
+
+
+```json
+"minecraft:behavior.move_indoors": {
+ "priority": 6,
+ "speed_multiplier": 0.8,
+ "timeout_cooldown": 8.0
+}
+```
+
+
+
+## behavior.move_outdoors
+
+
+
+villager
+
+#component_groups/minecraft:celebrate
+
+```json
+"minecraft:behavior.move_outdoors": {
+ "priority": 2,
+ "speed_multiplier": 0.8,
+ "timeout_cooldown": 8.0
+}
+```
+
+villager_v2
+
+#component_groups/minecraft:celebrate
+
+```json
+"minecraft:behavior.move_outdoors": {
+ "priority": 2,
+ "speed_multiplier": 0.8,
+ "timeout_cooldown": 8.0
+}
+```
+
+
+
+## behavior.move_through_village
+
+
+
+iron_golem
+
+
+
+```json
+"minecraft:behavior.move_through_village": {
+ "priority": 3,
+ "speed_multiplier": 0.6,
+ "only_at_night": true
+}
+```
+
+
+
+## behavior.move_to_block
+
+
+
+bee
+
+#component_groups/look_for_food
+
+```json
+"minecraft:behavior.move_to_block": {
+ "priority": 10,
+ "tick_interval": 1,
+ "start_chance": 0.5,
+ "search_range": 6,
+ "search_height": 4,
+ "goal_radius": 1.0,
+ "stay_duration": 20.0,
+ "target_selection_method": "random",
+ "target_offset": [
+ 0,
+ 0.25,
+ 0
+ ],
+ "target_block_filters": {
+ "test": "is_waterlogged",
+ "subject": "block",
+ "operator": "==",
+ "value": false
+ },
+ "target_blocks": [
+ "minecraft:red_flower",
+ "minecraft:yellow_flower",
+ "minecraft:wither_rose",
+ "minecraft:double_plant:8",
+ "minecraft:double_plant:9",
+ "minecraft:double_plant:12",
+ "minecraft:double_plant:13",
+ "minecraft:flowering_azalea",
+ "minecraft:azalea_leaves_flowered",
+ "minecraft:mangrove_propagule",
+ "minecraft:pitcher_plant",
+ "minecraft:torchflower",
+ "minecraft:cherry_leaves",
+ "minecraft:pink_petals"
+ ],
+ "on_stay_completed": [
+ {
+ "event": "collected_nectar",
+ "target": "self"
+ }
+ ]
+}
+```
+
+#component_groups/find_hive
+
+```json
+"minecraft:behavior.move_to_block": {
+ "priority": 10,
+ "search_range": 16,
+ "search_height": 10,
+ "tick_interval": 1,
+ "goal_radius": 0.633,
+ "target_blocks": [
+ "bee_nest",
+ "beehive"
+ ],
+ "on_reach": [
+ {
+ "event": "minecraft:bee_returned_to_hive",
+ "target": "block"
+ }
+ ]
+}
+```
+
+
+
+## behavior.move_to_land
+
+
+
+frog
+
+
+
+```json
+"minecraft:behavior.move_to_land": {
+ "priority": 6,
+ "search_range": 30,
+ "search_height": 8,
+ "search_count": 80,
+ "goal_radius": 2
+}
+```
+
+turtle
+
+#component_groups/minecraft:adult
+
+```json
+"minecraft:behavior.move_to_land": {
+ "priority": 6,
+ "search_range": 16,
+ "search_height": 5,
+ "goal_radius": 0.5
+}
+```
+
+
+
+## behavior.move_to_liquid
+
+
+
+strider
+
+#component_groups/minecraft:strider_pathing_behaviors
+
+```json
+"minecraft:behavior.move_to_liquid": {
+ "priority": 7,
+ "search_range": 16,
+ "search_height": 10,
+ "goal_radius": 0.9,
+ "material_type": "Lava",
+ "search_count": 30
+}
+```
+
+
+
+## behavior.move_to_random_block
+
+
+
+pillager
+
+#component_groups/minecraft:patrol_captain
+
+```json
+"minecraft:behavior.move_to_random_block": {
+ "priority": 6,
+ "speed_multiplier": 0.55,
+ "within_radius": 8,
+ "block_distance": 512
+}
+```
+
+vindicator
+
+#component_groups/minecraft:patrol_captain
+
+```json
+"minecraft:behavior.move_to_random_block": {
+ "priority": 5,
+ "speed_multiplier": 0.55,
+ "within_radius": 8,
+ "block_distance": 512
+}
+```
+
+
+
+## behavior.move_to_village
+
+
+
+evocation_illager
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 6,
+ "speed_multiplier": 0.7
+}
+```
+
+pillager
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 5,
+ "speed_multiplier": 1.0,
+ "goal_radius": 2.0
+}
+```
+
+ravager
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 5,
+ "speed_multiplier": 1.0,
+ "goal_radius": 2.0
+}
+```
+
+vindicator
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "goal_radius": 2.0
+}
+```
+
+witch
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 3,
+ "speed_multiplier": 1.2,
+ "goal_radius": 2.0
+}
+```
+
+
+
+## behavior.move_to_water
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 6,
+ "search_range": 16,
+ "search_height": 5,
+ "search_count": 1,
+ "goal_radius": 0.1
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 1,
+ "search_range": 15,
+ "search_height": 5
+}
+```
+
+frog
+
+#component_groups/pregnant
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 3,
+ "search_range": 20,
+ "search_height": 5,
+ "goal_radius": 1.5
+}
+```
+
+turtle
+
+
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 4,
+ "search_range": 16,
+ "search_height": 5,
+ "goal_radius": 1.5
+}
+```
+
+#component_groups/minecraft:baby
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 1,
+ "search_range": 15,
+ "search_height": 5,
+ "goal_radius": 0.1
+}
+```
+
+
+
+## behavior.move_towards_dwelling_restriction
+
+
+
+cat
+
+#component_groups/minecraft:cat_wild
+
+```json
+"minecraft:behavior.move_towards_dwelling_restriction": {
+ "priority": 7
+}
+```
+
+iron_golem
+
+
+
+```json
+"minecraft:behavior.move_towards_dwelling_restriction": {
+ "priority": 4,
+ "speed_multiplier": 1
+}
+```
+
+villager_v2
+
+
+
+```json
+"minecraft:behavior.move_towards_dwelling_restriction": {
+ "priority": 11,
+ "speed_multiplier": 0.6
+}
+```
+
+
+
+## behavior.move_towards_home_restriction
+
+
+
+bee
+
+
+
+```json
+"minecraft:behavior.move_towards_home_restriction": {
+ "priority": 9
+}
+```
+
+elder_guardian
+
+
+
+```json
+"minecraft:behavior.move_towards_home_restriction": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+guardian
+
+
+
+```json
+"minecraft:behavior.move_towards_home_restriction": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+wandering_trader
+
+
+
+```json
+"minecraft:behavior.move_towards_home_restriction": {
+ "priority": 6,
+ "speed_multiplier": 0.6
+}
+```
+
+
+
+## behavior.move_towards_target
+
+
+
+iron_golem
+
+
+
+```json
+"minecraft:behavior.move_towards_target": {
+ "priority": 2,
+ "speed_multiplier": 0.9,
+ "within_radius": 32
+}
+```
+
+
+
+## behavior.nap
+
+
+
+fox
+
+#component_groups/minecraft:fox_day
+
+```json
+"minecraft:behavior.nap": {
+ "priority": 8,
+ "cooldown_min": 2.0,
+ "cooldown_max": 7.0,
+ "mob_detect_dist": 12.0,
+ "mob_detect_height": 6.0,
+ "can_nap_filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ {
+ "test": "on_ground",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "is_underground",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "weather_at_position",
+ "subject": "self",
+ "operator": "!=",
+ "value": "thunderstorm"
+ }
+ ]
+ },
+ "wake_mob_exceptions": {
+ "any_of": [
+ {
+ "test": "trusts",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "==",
+ "value": "fox"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+}
+```
+
+
+
+## behavior.nearest_attackable_target
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 3,
+ "must_see": true,
+ "reselect_targets": true,
+ "within_radius": 20.0,
+ "must_see_forget_duration": 17.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:attack_cooldown"
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "squid"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "fish"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "tadpole"
+ }
+ ]
+ }
+ ]
+ },
+ "max_dist": 8
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "drowned"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "guardian"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "guardian_elder"
+ }
+ ]
+ }
+ ]
+ },
+ "max_dist": 8
+ }
+ ]
+}
+```
+
+bee
+
+#component_groups/take_nearest_target
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 10
+ }
+ ]
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 48.0
+ }
+ ]
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_wild
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "reselect_targets": true,
+ "within_radius": 16.0,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "rabbit"
+ },
+ "max_dist": 8
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 8
+ }
+ ]
+}
+```
+
+cave_spider
+
+#component_groups/minecraft:spider_hostile
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "attack_interval": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+#component_groups/minecraft:spider_angry
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "attack_interval": 10,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "must_see": true,
+ "must_see_forget_duration": 3.0,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+drowned
+
+
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "reselect_targets": true,
+ "must_see": true,
+ "within_radius": 12.0,
+ "must_see_forget_duration": 17.0,
+ "persist_time": 0.5,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "in_water",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "test": "is_daytime",
+ "value": false
+ }
+ ]
+ }
+ ]
+ },
+ "max_dist": 20
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "in_water",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "test": "is_daytime",
+ "value": false
+ }
+ ]
+ }
+ ]
+ },
+ "max_dist": 20,
+ "must_see": false
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 20
+ }
+ ]
+}
+```
+
+
+
+## behavior.nearest_prioritized_attackable_target
+
+
+
+fox
+
+#component_groups/minecraft:fox_red
+
+```json
+"minecraft:behavior.nearest_prioritized_attackable_target": {
+ "priority": 6,
+ "attack_interval": 2,
+ "reselect_targets": true,
+ "target_search_height": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "rabbit"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "chicken"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "cod"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "salmon"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "tropicalfish"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 12,
+ "priority": 0
+ }
+ ]
+}
+```
+
+#component_groups/minecraft:fox_arctic
+
+```json
+"minecraft:behavior.nearest_prioritized_attackable_target": {
+ "priority": 6,
+ "attack_interval": 2,
+ "reselect_targets": true,
+ "target_search_height": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "rabbit"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "chicken"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "cod"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "salmon"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "tropicalfish"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 12,
+ "priority": 1
+ }
+ ]
+}
+```
+
+piglin_brute
+
+#component_groups/alert_for_attack_targets
+
+```json
+"minecraft:behavior.nearest_prioritized_attackable_target": {
+ "priority": 3,
+ "within_radius": 12.0,
+ "persist_time": 2.0,
+ "must_see": true,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wither"
+ },
+ "max_dist": 12,
+ "priority": 1
+ }
+ ]
+}
+```
+
+
+
+## behavior.ocelot_sit_on_block
+
+
+
+cat
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:behavior.ocelot_sit_on_block": {
+ "priority": 7,
+ "speed_multiplier": 1.0
+}
+```
+
+ocelot
+
+#component_groups/minecraft:ocelot_tame
+
+```json
+"minecraft:behavior.ocelot_sit_on_block": {
+ "priority": 6,
+ "speed_multiplier": 1.0
+}
+```
+
+
+
+## behavior.ocelotattack
+
+
+
+cat
+
+
+
+```json
+"minecraft:behavior.ocelotattack": {
+ "priority": 4,
+ "cooldown_time": 1.0,
+ "x_max_rotation": 30.0,
+ "y_max_head_rotation": 30.0,
+ "max_distance": 15.0,
+ "max_sneak_range": 15.0,
+ "max_sprint_range": 4.0,
+ "reach_multiplier": 2.0,
+ "sneak_speed_multiplier": 0.6,
+ "sprint_speed_multiplier": 1.33,
+ "walk_speed_multiplier": 0.8
+}
+```
+
+ocelot
+
+
+
+```json
+"minecraft:behavior.ocelotattack": {
+ "priority": 4,
+ "cooldown_time": 1.0,
+ "x_max_rotation": 30.0,
+ "y_max_head_rotation": 30.0,
+ "max_distance": 15.0,
+ "max_sneak_range": 15.0,
+ "max_sprint_range": 4.0,
+ "reach_multiplier": 2.0,
+ "sneak_speed_multiplier": 0.6,
+ "sprint_speed_multiplier": 1.33,
+ "walk_speed_multiplier": 0.8
+}
+```
+
+
+
+## behavior.offer_flower
+
+
+
+iron_golem
+
+
+
+```json
+"minecraft:behavior.offer_flower": {
+ "priority": 5,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ }
+ ]
+ }
+}
+```
+
+
+
+## behavior.open_door
+
+
+
+villager
+
+
+
+```json
+"minecraft:behavior.open_door": {
+ "priority": 6,
+ "close_door_after": true
+}
+```
+
+
+
+## behavior.owner_hurt_by_target
+
+
+
+wolf
+
+#component_groups/minecraft:wolf_tame
+
+```json
+"minecraft:behavior.owner_hurt_by_target": {
+ "priority": 1
+}
+```
+
+
+
+## behavior.owner_hurt_target
+
+
+
+wolf
+
+#component_groups/minecraft:wolf_tame
+
+```json
+"minecraft:behavior.owner_hurt_target": {
+ "priority": 2
+}
+```
+
+
+
+## behavior.panic
+
+
+
+allay
+
+
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 2.0
+}
+```
+
+bee
+
+#component_groups/escape_fire
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "force": true
+}
+```
+
+#component_groups/countdown_to_perish
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "force": true
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 4
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.5
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+dolphin
+
+#component_groups/dolphin_baby
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+
+
+## behavior.pet_sleep_with_owner
+
+
+
+cat
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:behavior.pet_sleep_with_owner": {
+ "priority": 2,
+ "speed_multiplier": 1.2,
+ "search_radius": 10,
+ "search_height": 10,
+ "goal_radius": 1.0
+}
+```
+
+
+
+## behavior.pickup_items
+
+
+
+allay
+
+#component_groups/pickup_item
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 2,
+ "max_dist": 32,
+ "search_height": 32,
+ "goal_radius": 2.2,
+ "speed_multiplier": 6,
+ "pickup_based_on_chance": false,
+ "can_pickup_any_item": false,
+ "can_pickup_to_hand_or_equipment": false,
+ "pickup_same_items_as_in_hand": true
+}
+```
+
+drowned
+
+
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 6,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true,
+ "excluded_items": [
+ "minecraft:glow_ink_sac"
+ ]
+}
+```
+
+fox
+
+
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 11,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 0.5
+}
+```
+
+husk
+
+
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 6,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true,
+ "excluded_items": [
+ "minecraft:glow_ink_sac"
+ ]
+}
+```
+
+piglin
+
+
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 6,
+ "max_dist": 10,
+ "goal_radius": 2,
+ "speed_multiplier": 0.8,
+ "pickup_based_on_chance": false,
+ "can_pickup_any_item": false,
+ "cooldown_after_being_attacked": 20.0
+}
+```
+
+pillager
+
+
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 7,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+skeleton
+
+
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 5,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true
+}
+```
+
+stray
+
+
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 5,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true
+}
+```
+
+
+
+## behavior.play
+
+
+
+villager
+
+#component_groups/baby
+
+```json
+"minecraft:behavior.play": {
+ "priority": 8,
+ "speed_multiplier": 0.32
+}
+```
+
+villager_v2
+
+#component_groups/play_schedule_villager
+
+```json
+"minecraft:behavior.play": {
+ "priority": 8,
+ "speed_multiplier": 0.6,
+ "friend_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "is_baby",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+
+
+## behavior.play_dead
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:behavior.play_dead": {
+ "priority": 0,
+ "duration": 10,
+ "force_below_health": 8,
+ "random_start_chance": 0.33,
+ "random_damage_range": [
+ 0,
+ 2
+ ],
+ "damage_sources": [
+ "contact",
+ "entity_attack",
+ "entity_explosion",
+ "magic",
+ "projectile",
+ "thorns",
+ "wither"
+ ],
+ "apply_regeneration": true,
+ "filters": {
+ "test": "in_water",
+ "operator": "==",
+ "value": true
+ }
+}
+```
+
+
+
+## behavior.player_ride_tamed
+
+
+
+camel
+
+#component_groups/minecraft:camel_saddled
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_tamed
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+horse
+
+#component_groups/minecraft:horse_saddled
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+mule
+
+#component_groups/minecraft:mule_saddled
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+skeleton_horse
+
+
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+zombie_horse
+
+#component_groups/minecraft:horse_adult
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+
+
+## behavior.raid_garden
+
+
+
+fox
+
+
+
+```json
+"minecraft:behavior.raid_garden": {
+ "priority": 12,
+ "blocks": [
+ "minecraft:sweet_berry_bush",
+ "minecraft:cave_vines_head_with_berries",
+ "minecraft:cave_vines_body_with_berries"
+ ],
+ "speed_multiplier": 1.2,
+ "search_range": 12,
+ "search_height": 2,
+ "goal_radius": 0.8,
+ "max_to_eat": 0,
+ "initial_eat_delay": 2
+}
+```
+
+rabbit
+
+
+
+```json
+"minecraft:behavior.raid_garden": {
+ "priority": 5,
+ "blocks": [
+ "minecraft:carrots"
+ ],
+ "search_range": 16,
+ "goal_radius": 0.8
+}
+```
+
+
+
+## behavior.ram_attack
+
+
+
+goat
+
+#component_groups/ram_default
+
+```json
+"minecraft:behavior.ram_attack": {
+ "priority": 5,
+ "run_speed": 0.7,
+ "ram_speed": 1.8,
+ "min_ram_distance": 4,
+ "ram_distance": 7,
+ "knockback_force": 2.5,
+ "knockback_height": 0.04,
+ "pre_ram_sound": "pre_ram",
+ "ram_impact_sound": "ram_impact",
+ "cooldown_range": [
+ 30,
+ 300
+ ],
+ "on_start": [
+ {
+ "event": "start_event",
+ "target": "self"
+ }
+ ]
+}
+```
+
+#component_groups/ram_screamer
+
+```json
+"minecraft:behavior.ram_attack": {
+ "priority": 5,
+ "run_speed": 0.7,
+ "ram_speed": 1.8,
+ "min_ram_distance": 4,
+ "ram_distance": 7,
+ "knockback_force": 2.5,
+ "knockback_height": 0.04,
+ "pre_ram_sound": "pre_ram.screamer",
+ "ram_impact_sound": "ram_impact.screamer",
+ "cooldown_range": [
+ 5,
+ 15
+ ],
+ "on_start": [
+ {
+ "event": "start_event",
+ "target": "self"
+ }
+ ]
+}
+```
+
+
+
+## behavior.random_breach
+
+
+
+dolphin
+
+
+
+```json
+"minecraft:behavior.random_breach": {
+ "priority": 6,
+ "interval": 50,
+ "xz_dist": 6,
+ "cooldown_time": 2.0
+}
+```
+
+
+
+## behavior.random_fly
+
+
+
+parrot
+
+#component_groups/minecraft:parrot_wild
+
+```json
+"minecraft:behavior.random_fly": {
+ "priority": 2,
+ "xz_dist": 15,
+ "y_dist": 1,
+ "y_offset": 0,
+ "speed_multiplier": 1.0,
+ "can_land_on_trees": true,
+ "avoid_damage_blocks": true
+}
+```
+
+
+
+## behavior.random_hover
+
+
+
+allay
+
+
+
+```json
+"minecraft:behavior.random_hover": {
+ "priority": 9,
+ "xz_dist": 8,
+ "y_dist": 8,
+ "y_offset": -1,
+ "interval": 1,
+ "hover_height": [
+ 1,
+ 4
+ ]
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:behavior.random_hover": {
+ "priority": 12,
+ "xz_dist": 8,
+ "y_dist": 8,
+ "y_offset": -1,
+ "interval": 1,
+ "hover_height": [
+ 1,
+ 4
+ ]
+}
+```
+
+
+
+## behavior.random_look_around
+
+
+
+allay
+
+
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 5
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 7
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 6
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 7
+}
+```
+
+
+
+## behavior.random_look_around_and_sit
+
+
+
+camel
+
+
+
+```json
+"minecraft:behavior.random_look_around_and_sit": {
+ "priority": 4,
+ "continue_if_leashed": true,
+ "min_look_count": 2,
+ "max_look_count": 5,
+ "min_look_time": 80,
+ "max_look_time": 100,
+ "min_angle_of_view_horizontal": -30,
+ "max_angle_of_view_horizontal": 30,
+ "random_look_around_cooldown": 5,
+ "probability": 0.001
+}
+```
+
+fox
+
+
+
+```json
+"minecraft:behavior.random_look_around_and_sit": {
+ "priority": 12,
+ "min_look_count": 2,
+ "max_look_count": 5,
+ "min_look_time": 80,
+ "max_look_time": 100,
+ "probability": 0.001
+}
+```
+
+
+
+## behavior.random_search_and_dig
+
+
+
+sniffer
+
+#component_groups/sniffer_search_and_dig
+
+```json
+"minecraft:behavior.random_search_and_dig": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "find_valid_position_retries": 5,
+ "goal_radius": 2.0,
+ "search_range_xz": 20.0,
+ "search_range_y": 3,
+ "cooldown_range": 0.0,
+ "digging_duration_range": [
+ 8.0,
+ 10.0
+ ],
+ "items": [
+ {
+ "item": "torchflower_seeds",
+ "weight": 1
+ },
+ {
+ "item": "pitcher_pod",
+ "weight": 1
+ }
+ ],
+ "spawn_item_after_seconds": 6.0,
+ "spawn_item_pos_offset": 2.25,
+ "on_searching_start": {
+ "event": "on_searching_start",
+ "target": "self"
+ },
+ "on_fail_during_searching": {
+ "event": "on_fail_during_searching",
+ "target": "self"
+ },
+ "on_digging_start": {
+ "event": "on_digging_start",
+ "target": "self"
+ },
+ "on_item_found": {
+ "event": "on_item_found",
+ "target": "self"
+ },
+ "on_fail_during_digging": {
+ "event": "on_fail_during_digging",
+ "target": "self"
+ },
+ "on_success": {
+ "event": "on_search_and_digging_success",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.random_sitting
+
+
+
+panda
+
+
+
+```json
+"minecraft:behavior.random_sitting": {
+ "priority": 5,
+ "start_chance": 0.01,
+ "stop_chance": 0.3,
+ "cooldown": 30,
+ "min_sit_time": 10
+}
+```
+
+#component_groups/minecraft:panda_lazy
+
+```json
+"minecraft:behavior.random_sitting": {
+ "priority": 6,
+ "start_chance": 0.02,
+ "stop_chance": 0.2,
+ "cooldown": 25,
+ "min_sit_time": 15
+}
+```
+
+
+
+## behavior.random_stroll
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 9,
+ "interval": 100
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 2
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 8,
+ "speed_multiplier": 0.8
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.8
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 1.0
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.8
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 5,
+ "speed_multiplier": 1
+}
+```
+
+
+
+## behavior.random_swim
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 8,
+ "interval": 0,
+ "xz_dist": 30,
+ "y_dist": 15
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 5,
+ "interval": 0,
+ "xz_dist": 20
+}
+```
+
+elder_guardian
+
+
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 7,
+ "speed_multiplier": 0.5,
+ "avoid_surface": false
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 3,
+ "speed_multiplier": 1.0,
+ "xz_dist": 16,
+ "y_dist": 4,
+ "interval": 0
+}
+```
+
+guardian
+
+
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 7,
+ "speed_multiplier": 1.0,
+ "interval": 80,
+ "avoid_surface": false
+}
+```
+
+pufferfish
+
+
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 3,
+ "speed_multiplier": 1.0,
+ "xz_dist": 16,
+ "y_dist": 4,
+ "interval": 0
+}
+```
+
+salmon
+
+
+
+```json
+"minecraft:behavior.random_swim": {
+ "speed_multiplier": 1.0,
+ "priority": 3,
+ "xz_dist": 16,
+ "y_dist": 4,
+ "interval": 0
+}
+```
+
+tadpole
+
+
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 2,
+ "interval": 100
+}
+```
+
+
+
+## behavior.ranged_attack
+
+
+
+blaze
+
+#component_groups/ranged_mode
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 3,
+ "burst_shots": 3,
+ "burst_interval": 0.3,
+ "charge_charged_trigger": 0.0,
+ "charge_shoot_trigger": 4.0,
+ "attack_interval_min": 3.0,
+ "attack_interval_max": 5.0,
+ "attack_radius": 16.0
+}
+```
+
+drowned
+
+#component_groups/minecraft:ranged_mode
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 3,
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 3.0,
+ "attack_radius": 10.0,
+ "swing": true
+}
+```
+
+ghast
+
+
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 1,
+ "attack_radius": 64,
+ "charge_shoot_trigger": 2,
+ "charge_charged_trigger": 1
+}
+```
+
+llama
+
+#component_groups/minecraft:llama_angry
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 2,
+ "attack_radius": 64,
+ "charge_shoot_trigger": 2,
+ "charge_charged_trigger": 1
+}
+```
+
+#component_groups/minecraft:llama_angry_wolf
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 2,
+ "attack_radius": 64,
+ "charge_shoot_trigger": 2,
+ "charge_charged_trigger": 1
+}
+```
+
+piglin
+
+#component_groups/ranged_unit
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 8,
+ "attack_interval_min": 1,
+ "attack_interval_max": 1,
+ "attack_radius": 8,
+ "attack_radius_min": 4,
+ "speed_multiplier": 1.0,
+ "target_in_sight_time": 0.1
+}
+```
+
+pillager
+
+#component_groups/minecraft:ranged_attack
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 4,
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 1.0,
+ "attack_radius": 8.0
+}
+```
+
+shulker
+
+
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "attack_interval_min": 1,
+ "attack_interval_max": 3,
+ "attack_radius": 15
+}
+```
+
+
+
+## behavior.receive_love
+
+
+
+villager
+
+#component_groups/adult
+
+```json
+"minecraft:behavior.receive_love": {
+ "priority": 7
+}
+```
+
+villager_v2
+
+#component_groups/make_and_receive_love
+
+```json
+"minecraft:behavior.receive_love": {
+ "priority": 6
+}
+```
+
+
+
+## behavior.restrict_open_door
+
+
+
+villager
+
+
+
+```json
+"minecraft:behavior.restrict_open_door": {
+ "priority": 5
+}
+```
+
+
+
+## behavior.rise_to_liquid_level
+
+
+
+strider
+
+#component_groups/minecraft:strider_pathing_behaviors
+
+```json
+"minecraft:behavior.rise_to_liquid_level": {
+ "priority": 0,
+ "liquid_y_offset": 0.25,
+ "rise_delta": 0.01,
+ "sink_delta": 0.01
+}
+```
+
+
+
+## behavior.rising
+
+
+
+sniffer
+
+#component_groups/stand_up
+
+```json
+"minecraft:behavior.rising": {
+ "priority": 2,
+ "cooldown_range": 0.0,
+ "duration_range": [
+ 2.0,
+ 5.0
+ ],
+ "on_end": {
+ "event": "on_rising_end",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.roar
+
+
+
+warden
+
+
+
+```json
+"minecraft:behavior.roar": {
+ "priority": 2,
+ "duration": 4.2
+}
+```
+
+
+
+## behavior.roll
+
+
+
+panda
+
+#component_groups/minecraft:panda_baby
+
+```json
+"minecraft:behavior.roll": {
+ "priority": 12,
+ "probability": 0.0016
+}
+```
+
+#component_groups/minecraft:panda_playful
+
+```json
+"minecraft:behavior.roll": {
+ "priority": 12,
+ "probability": 0.013
+}
+```
+
+
+
+## behavior.run_around_like_crazy
+
+
+
+donkey
+
+#component_groups/minecraft:donkey_adult
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+horse
+
+#component_groups/minecraft:horse_adult
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+llama
+
+
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+mule
+
+#component_groups/minecraft:mule_adult
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+trader_llama
+
+
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+
+
+## behavior.scared
+
+
+
+panda
+
+#component_groups/minecraft:panda_worried
+
+```json
+"minecraft:behavior.scared": {
+ "priority": 1,
+ "sound_interval": 20
+}
+```
+
+
+
+## behavior.scenting
+
+
+
+sniffer
+
+
+
+```json
+"minecraft:behavior.scenting": {
+ "priority": 6,
+ "cooldown_range": [
+ 400.0,
+ 500.0
+ ],
+ "duration_range": 2.0,
+ "on_end": {
+ "event": "on_scenting_success",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.send_event
+
+
+
+evocation_illager
+
+
+
+```json
+"minecraft:behavior.send_event": {
+ "priority": 3,
+ "event_choices": [
+ {
+ "min_activation_range": 0.0,
+ "max_activation_range": 16.0,
+ "cooldown_time": 5.0,
+ "cast_duration": 3.0,
+ "particle_color": "#FFB38033",
+ "weight": 3,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "sheep"
+ },
+ {
+ "test": "is_color",
+ "subject": "other",
+ "value": "blue"
+ }
+ ]
+ },
+ "start_sound_event": "cast.spell",
+ "sequence": [
+ {
+ "base_delay": 2.0,
+ "event": "wololo",
+ "sound_event": "prepare.wololo"
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+## behavior.share_items
+
+
+
+villager
+
+
+
+```json
+"minecraft:behavior.share_items": {
+ "priority": 8,
+ "max_dist": 3,
+ "goal_radius": 2.0,
+ "speed_multiplier": 0.5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ }
+ }
+ ]
+}
+```
+
+villager_v2
+
+
+
+```json
+"minecraft:behavior.share_items": {
+ "priority": 10,
+ "max_dist": 3,
+ "goal_radius": 2.0,
+ "speed_multiplier": 0.5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ }
+ }
+ ]
+}
+```
+
+
+
+## behavior.silverfish_merge_with_stone
+
+
+
+silverfish
+
+
+
+```json
+"minecraft:behavior.silverfish_merge_with_stone": {
+ "priority": 5
+}
+```
+
+
+
+## behavior.silverfish_wake_up_friends
+
+
+
+silverfish
+
+#component_groups/minecraft:silverfish_angry
+
+```json
+"minecraft:behavior.silverfish_wake_up_friends": {
+ "priority": 1
+}
+```
+
+
+
+## behavior.skeleton_horse_trap
+
+
+
+skeleton_horse
+
+#component_groups/minecraft:skeleton_trap
+
+```json
+"minecraft:behavior.skeleton_horse_trap": {
+ "within_radius": 10.0,
+ "duration": 900.0,
+ "priority": 2
+}
+```
+
+
+
+## behavior.sleep
+
+
+
+villager_v2
+
+#component_groups/job_specific_goals
+
+```json
+"minecraft:behavior.sleep": {}
+```
+
+#component_groups/bed_schedule_villager
+
+```json
+"minecraft:behavior.sleep": {
+ "priority": 3,
+ "goal_radius": 1.5,
+ "speed_multiplier": 0.6,
+ "sleep_collider_height": 0.3,
+ "sleep_collider_width": 1.0,
+ "sleep_y_offset": 0.6,
+ "timeout_cooldown": 10.0
+}
+```
+
+
+
+## behavior.slime_attack
+
+
+
+magma_cube
+
+
+
+```json
+"minecraft:behavior.slime_attack": {
+ "priority": 3
+}
+```
+
+slime
+
+
+
+```json
+"minecraft:behavior.slime_attack": {
+ "priority": 3
+}
+```
+
+
+
+## behavior.slime_float
+
+
+
+magma_cube
+
+
+
+```json
+"minecraft:behavior.slime_float": {
+ "priority": 1,
+ "jump_chance_percentage": 0.8,
+ "speed_multiplier": 1.2
+}
+```
+
+slime
+
+
+
+```json
+"minecraft:behavior.slime_float": {
+ "priority": 1,
+ "jump_chance_percentage": 0.8,
+ "speed_multiplier": 1.2
+}
+```
+
+
+
+## behavior.slime_keep_on_jumping
+
+
+
+magma_cube
+
+
+
+```json
+"minecraft:behavior.slime_keep_on_jumping": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+slime
+
+
+
+```json
+"minecraft:behavior.slime_keep_on_jumping": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+
+
+## behavior.slime_random_direction
+
+
+
+magma_cube
+
+
+
+```json
+"minecraft:behavior.slime_random_direction": {
+ "priority": 4,
+ "add_random_time_range": 3,
+ "turn_range": 360,
+ "min_change_direction_time": 2.0
+}
+```
+
+slime
+
+
+
+```json
+"minecraft:behavior.slime_random_direction": {
+ "priority": 4,
+ "add_random_time_range": 3,
+ "turn_range": 360,
+ "min_change_direction_time": 2.0
+}
+```
+
+
+
+## behavior.snacking
+
+
+
+panda
+
+
+
+```json
+"minecraft:behavior.snacking": {
+ "priority": 2,
+ "snacking_cooldown": 22.5,
+ "snacking_cooldown_min": 20,
+ "snacking_stop_chance": 0.001334,
+ "items": [
+ "bamboo",
+ "cake"
+ ]
+}
+```
+
+#component_groups/minecraft:panda_lazy
+
+```json
+"minecraft:behavior.snacking": {
+ "priority": 3,
+ "snacking_cooldown": 17.5,
+ "snacking_cooldown_min": 10,
+ "snacking_stop_chance": 0.0011,
+ "items": [
+ "bamboo",
+ "cake"
+ ]
+}
+```
+
+
+
+## behavior.sneeze
+
+
+
+panda
+
+#component_groups/minecraft:panda_baby
+
+```json
+"minecraft:behavior.sneeze": {
+ "priority": 7,
+ "probability": 0.0001666,
+ "cooldown_time": 1.0,
+ "within_radius": 10.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "panda"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ },
+ {
+ "test": "on_ground",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 10
+ }
+ ],
+ "drop_item_chance": 0.001,
+ "loot_table": "loot_tables/entities/panda_sneeze.json",
+ "prepare_sound": "presneeze",
+ "prepare_time": 1.0,
+ "sound": "sneeze"
+}
+```
+
+#component_groups/minecraft:panda_sneezing
+
+```json
+"minecraft:behavior.sneeze": {
+ "priority": 7,
+ "probability": 0.002,
+ "cooldown_time": 1.0,
+ "within_radius": 10.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "panda"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ },
+ {
+ "test": "on_ground",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 10
+ }
+ ],
+ "drop_item_chance": 0.001,
+ "loot_table": "loot_tables/entities/panda_sneeze.json",
+ "prepare_sound": "presneeze",
+ "prepare_time": 1.0,
+ "sound": "sneeze"
+}
+```
+
+
+
+## behavior.sniff
+
+
+
+warden
+
+
+
+```json
+"minecraft:behavior.sniff": {
+ "priority": 6,
+ "duration": 4.16,
+ "sniffing_radius": 24.0,
+ "suspicion_radius_horizontal": 6.0,
+ "suspicion_radius_vertical": 20.0,
+ "cooldown_range": [
+ 5.0,
+ 10.0
+ ]
+}
+```
+
+
+
+## behavior.sonic_boom
+
+
+
+warden
+
+
+
+```json
+"minecraft:behavior.sonic_boom": {
+ "priority": 3,
+ "duration": 3.0,
+ "speed_multiplier": 1.2,
+ "attack_damage": 10,
+ "attack_range_horizontal": 15,
+ "attack_range_vertical": 20,
+ "attack_cooldown": 2,
+ "knockback_vertical_strength": 0.5,
+ "knockback_horizontal_strength": 2.5,
+ "knockback_height_cap": 0.5,
+ "duration_until_attack_sound": 1.7,
+ "charge_sound": "sonic_charge",
+ "attack_sound": "sonic_boom"
+}
+```
+
+
+
+## behavior.squid_dive
+
+
+
+glow_squid
+
+
+
+```json
+"minecraft:behavior.squid_dive": {
+ "priority": 2
+}
+```
+
+squid
+
+
+
+```json
+"minecraft:behavior.squid_dive": {
+ "priority": 2
+}
+```
+
+
+
+## behavior.squid_flee
+
+
+
+glow_squid
+
+
+
+```json
+"minecraft:behavior.squid_flee": {
+ "priority": 2
+}
+```
+
+squid
+
+
+
+```json
+"minecraft:behavior.squid_flee": {
+ "priority": 2
+}
+```
+
+
+
+## behavior.squid_idle
+
+
+
+glow_squid
+
+
+
+```json
+"minecraft:behavior.squid_idle": {
+ "priority": 2
+}
+```
+
+squid
+
+
+
+```json
+"minecraft:behavior.squid_idle": {
+ "priority": 2
+}
+```
+
+
+
+## behavior.squid_move_away_from_ground
+
+
+
+glow_squid
+
+
+
+```json
+"minecraft:behavior.squid_move_away_from_ground": {
+ "priority": 1
+}
+```
+
+squid
+
+
+
+```json
+"minecraft:behavior.squid_move_away_from_ground": {
+ "priority": 1
+}
+```
+
+
+
+## behavior.squid_out_of_water
+
+
+
+glow_squid
+
+
+
+```json
+"minecraft:behavior.squid_out_of_water": {
+ "priority": 2
+}
+```
+
+squid
+
+
+
+```json
+"minecraft:behavior.squid_out_of_water": {
+ "priority": 2
+}
+```
+
+
+
+## behavior.stalk_and_pounce_on_target
+
+
+
+fox
+
+
+
+```json
+"minecraft:behavior.stalk_and_pounce_on_target": {
+ "priority": 7,
+ "stalk_speed": 1.2,
+ "max_stalk_dist": 12.0,
+ "leap_height": 0.9,
+ "leap_dist": 0.8,
+ "pounce_max_dist": 5.0,
+ "interest_time": 2.0,
+ "stuck_time": 2.0,
+ "strike_dist": 2.0,
+ "stuck_blocks": {
+ "test": "is_block",
+ "subject": "block",
+ "operator": "==",
+ "value": "snow_layer"
+ }
+}
+```
+
+
+
+## behavior.stay_near_noteblock
+
+
+
+allay
+
+
+
+```json
+"minecraft:behavior.stay_near_noteblock": {
+ "priority": 5,
+ "speed": 8,
+ "start_distance": 16,
+ "stop_distance": 4
+}
+```
+
+
+
+## behavior.stay_while_sitting
+
+
+
+cat
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:behavior.stay_while_sitting": {
+ "priority": 3
+}
+```
+
+ocelot
+
+#component_groups/minecraft:ocelot_tame
+
+```json
+"minecraft:behavior.stay_while_sitting": {
+ "priority": 3
+}
+```
+
+parrot
+
+#component_groups/minecraft:parrot_tame
+
+```json
+"minecraft:behavior.stay_while_sitting": {
+ "priority": 1
+}
+```
+
+wolf
+
+
+
+```json
+"minecraft:behavior.stay_while_sitting": {
+ "priority": 3
+}
+```
+
+
+
+## behavior.stomp_attack
+
+
+
+polar_bear
+
+#component_groups/minecraft:adult_hostile
+
+```json
+"minecraft:behavior.stomp_attack": {
+ "priority": 1,
+ "track_target": true,
+ "require_complete_path": true,
+ "stomp_range_multiplier": 2.0,
+ "no_damage_range_multiplier": 2.0
+}
+```
+
+
+
+## behavior.stomp_turtle_egg
+
+
+
+drowned
+
+
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+husk
+
+
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+zombie
+
+
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+zombie_pigman
+
+
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 5,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+zombie_villager
+
+
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+zombie_villager_v2
+
+
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+
+
+## behavior.stroll_towards_village
+
+
+
+fox
+
+#component_groups/minecraft:fox_night
+
+```json
+"minecraft:behavior.stroll_towards_village": {
+ "priority": 11,
+ "speed_multiplier": 1.0,
+ "goal_radius": 3.0,
+ "cooldown_time": 10.0,
+ "search_range": 32,
+ "start_chance": 0.005
+}
+```
+
+
+
+## behavior.summon_entity
+
+
+
+evocation_illager
+
+
+
+```json
+"minecraft:behavior.summon_entity": {
+ "priority": 2,
+ "summon_choices": [
+ {
+ "min_activation_range": 0.0,
+ "max_activation_range": 3.0,
+ "cooldown_time": 5.0,
+ "weight": 3,
+ "cast_duration": 2.0,
+ "particle_color": "#FF664D59",
+ "start_sound_event": "cast.spell",
+ "sequence": [
+ {
+ "shape": "circle",
+ "target": "self",
+ "base_delay": 1.0,
+ "delay_per_summon": 0.0,
+ "num_entities_spawned": 5,
+ "entity_type": "minecraft:evocation_fang",
+ "size": 1.5,
+ "entity_lifespan": 1.1,
+ "sound_event": "prepare.attack"
+ },
+ {
+ "shape": "circle",
+ "target": "self",
+ "base_delay": 0.15,
+ "delay_per_summon": 0.0,
+ "num_entities_spawned": 8,
+ "entity_type": "minecraft:evocation_fang",
+ "size": 2.5,
+ "entity_lifespan": 1.1
+ }
+ ]
+ },
+ {
+ "min_activation_range": 3.0,
+ "weight": 3,
+ "cooldown_time": 5.0,
+ "cast_duration": 2.0,
+ "particle_color": "#FF664D59",
+ "start_sound_event": "cast.spell",
+ "sequence": [
+ {
+ "shape": "line",
+ "target": "self",
+ "base_delay": 1.0,
+ "delay_per_summon": 0.05,
+ "num_entities_spawned": 16,
+ "entity_type": "minecraft:evocation_fang",
+ "size": 20,
+ "entity_lifespan": 1.1
+ }
+ ]
+ },
+ {
+ "weight": 1,
+ "cooldown_time": 17.0,
+ "cast_duration": 5.0,
+ "particle_color": "#FFB3B3CC",
+ "sequence": [
+ {
+ "shape": "circle",
+ "target": "self",
+ "base_delay": 5.0,
+ "num_entities_spawned": 3,
+ "entity_type": "minecraft:vex",
+ "summon_cap": 8,
+ "summon_cap_radius": 16.0,
+ "size": 1.0,
+ "sound_event": "prepare.summon"
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+## behavior.swell
+
+
+
+creeper
+
+
+
+```json
+"minecraft:behavior.swell": {
+ "start_distance": 2.5,
+ "stop_distance": 6.0,
+ "priority": 2
+}
+```
+
+
+
+## behavior.swim_idle
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:behavior.swim_idle": {
+ "priority": 7,
+ "idle_time": 5.0,
+ "success_rate": 0.05
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:behavior.swim_idle": {
+ "priority": 5,
+ "idle_time": 5.0,
+ "success_rate": 0.1
+}
+```
+
+salmon
+
+
+
+```json
+"minecraft:behavior.swim_idle": {
+ "priority": 5,
+ "idle_time": 5.0,
+ "success_rate": 0.1
+}
+```
+
+tropicalfish
+
+
+
+```json
+"minecraft:behavior.swim_idle": {
+ "priority": 5,
+ "idle_time": 5.0,
+ "success_rate": 0.1
+}
+```
+
+
+
+## behavior.swim_wander
+
+
+
+cod
+
+
+
+```json
+"minecraft:behavior.swim_wander": {
+ "priority": 4,
+ "interval": 0.1,
+ "look_ahead": 2.0,
+ "speed_multiplier": 1.0,
+ "wander_time": 5.0
+}
+```
+
+pufferfish
+
+
+
+```json
+"minecraft:behavior.swim_wander": {
+ "priority": 5,
+ "interval": 1.0,
+ "look_ahead": 2.0,
+ "speed_multiplier": 1.0,
+ "wander_time": 5.0
+}
+```
+
+salmon
+
+
+
+```json
+"minecraft:behavior.swim_wander": {
+ "priority": 4,
+ "interval": 0.0166,
+ "look_ahead": 5.0,
+ "speed_multiplier": 0.014,
+ "wander_time": 5.0
+}
+```
+
+tropicalfish
+
+
+
+```json
+"minecraft:behavior.swim_wander": {
+ "priority": 4,
+ "interval": 0.1,
+ "look_ahead": 2.0,
+ "speed_multiplier": 1.0,
+ "wander_time": 5.0
+}
+```
+
+
+
+## behavior.swim_with_entity
+
+
+
+dolphin
+
+
+
+```json
+"minecraft:behavior.swim_with_entity": {
+ "priority": 4,
+ "success_rate": 0.1,
+ "chance_to_stop": 0.0333,
+ "state_check_interval": 0.5,
+ "catch_up_threshold": 12.0,
+ "match_direction_threshold": 2.0,
+ "catch_up_multiplier": 2.5,
+ "speed_multiplier": 1.5,
+ "search_range": 20.0,
+ "stop_distance": 5.0,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ }
+ ]
+}
+```
+
+
+
+## behavior.swoop_attack
+
+
+
+phantom
+
+
+
+```json
+"minecraft:behavior.swoop_attack": {
+ "priority": 2,
+ "damage_reach": 0.2,
+ "speed_multiplier": 1.0,
+ "delay_range": [
+ 10.0,
+ 20.0
+ ]
+}
+```
+
+
+
+## behavior.take_flower
+
+
+
+villager
+
+#component_groups/baby
+
+```json
+"minecraft:behavior.take_flower": {
+ "priority": 7,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ }
+ ]
+ }
+}
+```
+
+villager_v2
+
+#component_groups/baby
+
+```json
+"minecraft:behavior.take_flower": {
+ "priority": 9,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ }
+ ]
+ }
+}
+```
+
+
+
+## behavior.target_when_pushed
+
+
+
+iron_golem
+
+
+
+```json
+"minecraft:behavior.target_when_pushed": {
+ "priority": 1,
+ "percent_chance": 5.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "creeper"
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+
+
+## behavior.tempt
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 2,
+ "speed_multiplier": 1.1,
+ "can_tempt_vertically": true,
+ "items": [
+ "tropical_fish_bucket"
+ ]
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "within_radius": 8,
+ "can_tempt_vertically": true,
+ "items": [
+ "minecraft:red_flower",
+ "minecraft:yellow_flower",
+ "minecraft:wither_rose",
+ "minecraft:double_plant:0",
+ "minecraft:double_plant:1",
+ "minecraft:double_plant:4",
+ "minecraft:double_plant:5",
+ "minecraft:flowering_azalea",
+ "minecraft:azalea_leaves_flowered",
+ "minecraft:mangrove_propagule",
+ "minecraft:pitcher_plant",
+ "minecraft:torchflower",
+ "minecraft:cherry_leaves",
+ "minecraft:pink_petals"
+ ]
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 3,
+ "speed_multiplier": 2.5,
+ "can_tempt_vertically": true,
+ "items": [
+ "cactus"
+ ]
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_wild
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 0.5,
+ "within_radius": 16,
+ "can_get_scared": true,
+ "items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 0.5,
+ "within_radius": 16,
+ "items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "items": [
+ "wheat_seeds",
+ "beetroot_seeds",
+ "melon_seeds",
+ "pumpkin_seeds",
+ "pitcher_pod",
+ "torchflower_seeds"
+ ]
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 1.25,
+ "items": [
+ "wheat"
+ ]
+}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_tamed
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.2,
+ "items": [
+ "apple",
+ "carrot",
+ "golden_apple",
+ "appleEnchanted",
+ "golden_carrot",
+ "carrotOnAStick",
+ "hay_block",
+ "sugar",
+ "bread",
+ "wheat"
+ ]
+}
+```
+
+
+
+## behavior.trade_interest
+
+
+
+villager_v2
+
+#component_groups/trade_components
+
+```json
+"minecraft:behavior.trade_interest": {}
+```
+
+#component_groups/farmer
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+#component_groups/fisherman
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+wandering_trader
+
+
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 3,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+
+
+## behavior.trade_with_player
+
+
+
+villager
+
+
+
+```json
+"minecraft:behavior.trade_with_player": {
+ "priority": 1,
+ "filters": {
+ "all_of": [
+ {
+ "all_of": [
+ {
+ "test": "in_water",
+ "value": false
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "on_ground",
+ "value": true
+ },
+ {
+ "test": "is_sleeping",
+ "value": true
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+villager_v2
+
+
+
+```json
+"minecraft:behavior.trade_with_player": {
+ "priority": 2,
+ "filters": {
+ "all_of": [
+ {
+ "all_of": [
+ {
+ "test": "in_water",
+ "value": false
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "on_ground",
+ "value": true
+ },
+ {
+ "test": "is_sleeping",
+ "value": true
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+wandering_trader
+
+
+
+```json
+"minecraft:behavior.trade_with_player": {
+ "priority": 1,
+ "filters": {
+ "all_of": [
+ {
+ "all_of": [
+ {
+ "test": "in_water",
+ "value": false
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "on_ground",
+ "value": true
+ },
+ {
+ "test": "is_sleeping",
+ "value": true
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+
+
+## behavior.wither_random_attack_pos_goal
+
+
+
+wither
+
+
+
+```json
+"minecraft:behavior.wither_random_attack_pos_goal": {
+ "priority": 3
+}
+```
+
+
+
+## behavior.wither_target_highest_damage
+
+
+
+wither
+
+
+
+```json
+"minecraft:behavior.wither_target_highest_damage": {
+ "priority": 1
+}
+```
+
+
+
+## behavior.work
+
+
+
+villager_v2
+
+#component_groups/job_specific_goals
+
+```json
+"minecraft:behavior.work": {}
+```
+
+#component_groups/work_schedule_villager
+
+```json
+"minecraft:behavior.work": {
+ "priority": 7,
+ "active_time": 250,
+ "speed_multiplier": 0.5,
+ "goal_cooldown": 200,
+ "sound_delay_min": 100,
+ "sound_delay_max": 200,
+ "can_work_in_rain": false,
+ "work_in_rain_tolerance": 100,
+ "on_arrival": {
+ "event": "minecraft:resupply_trades",
+ "target": "self"
+ }
+}
+```
+
+#component_groups/work_schedule_fisher
+
+```json
+"minecraft:behavior.work": {
+ "priority": 7,
+ "active_time": 250,
+ "speed_multiplier": 0.5,
+ "goal_cooldown": 200,
+ "sound_delay_min": 100,
+ "sound_delay_max": 200,
+ "can_work_in_rain": false,
+ "work_in_rain_tolerance": 100,
+ "on_arrival": {
+ "event": "minecraft:resupply_trades",
+ "target": "self"
+ }
+}
+```
+
+
+
+## behavior.work_composter
+
+
+
+villager_v2
+
+#component_groups/job_specific_goals
+
+```json
+"minecraft:behavior.work_composter": {}
+```
+
+#component_groups/work_schedule_farmer
+
+```json
+"minecraft:behavior.work_composter": {
+ "priority": 9,
+ "active_time": 250,
+ "speed_multiplier": 0.5,
+ "goal_cooldown": 200,
+ "can_work_in_rain": false,
+ "work_in_rain_tolerance": 100,
+ "on_arrival": {
+ "event": "minecraft:resupply_trades",
+ "target": "self"
+ }
+}
+```
+
+
+
+## block_climber
+
+
+
+endermite
+
+
+
+```json
+"minecraft:block_climber": {}
+```
+
+fox
+
+
+
+```json
+"minecraft:block_climber": {}
+```
+
+player
+
+
+
+```json
+"minecraft:block_climber": {}
+```
+
+rabbit
+
+
+
+```json
+"minecraft:block_climber": {}
+```
+
+silverfish
+
+
+
+```json
+"minecraft:block_climber": {}
+```
+
+
+
+## block_sensor
+
+
+
+bee
+
+
+
+```json
+"minecraft:block_sensor": {
+ "sensor_radius": 16,
+ "sources": [
+ {
+ "test": "has_silk_touch",
+ "subject": "other",
+ "value": false
+ }
+ ],
+ "on_break": [
+ {
+ "block_list": [
+ "minecraft:beehive",
+ "minecraft:bee_nest"
+ ],
+ "on_block_broken": "hive_destroyed"
+ }
+ ]
+}
+```
+
+piglin
+
+#component_groups/piglin_adult
+
+```json
+"minecraft:block_sensor": {
+ "sensor_radius": 16,
+ "on_break": [
+ {
+ "block_list": [
+ "minecraft:gold_block",
+ "minecraft:gilded_blackstone",
+ "minecraft:nether_gold_ore",
+ "minecraft:deepslate_gold_ore",
+ "minecraft:raw_gold_block",
+ "minecraft:gold_ore",
+ "minecraft:chest",
+ "minecraft:trapped_chest",
+ "minecraft:ender_chest",
+ "minecraft:barrel",
+ "minecraft:shulker_box",
+ "minecraft:undyed_shulker_box"
+ ],
+ "on_block_broken": "important_block_destroyed_event"
+ }
+ ]
+}
+```
+
+
+
+## boostable
+
+
+
+pig
+
+#component_groups/minecraft:pig_saddled
+
+```json
+"minecraft:boostable": {
+ "speed_multiplier": 1.35,
+ "duration": 3.0,
+ "boost_items": [
+ {
+ "item": "carrotOnAStick",
+ "damage": 2,
+ "replace_item": "fishing_rod"
+ }
+ ]
+}
+```
+
+strider
+
+#component_groups/minecraft:strider_saddled
+
+```json
+"minecraft:boostable": {
+ "speed_multiplier": 1.35,
+ "duration": 16.0,
+ "boost_items": [
+ {
+ "item": "warped_fungus_on_a_stick",
+ "damage": 1,
+ "replace_item": "fishing_rod"
+ }
+ ]
+}
+```
+
+
+
+## boss
+
+
+
+ender_dragon
+
+
+
+```json
+"minecraft:boss": {
+ "should_darken_sky": false,
+ "hud_range": 125
+}
+```
+
+wither
+
+
+
+```json
+"minecraft:boss": {
+ "should_darken_sky": true,
+ "hud_range": 55
+}
+```
+
+
+
+## break_blocks
+
+
+
+ravager
+
+
+
+```json
+"minecraft:break_blocks": {
+ "breakable_blocks": [
+ "bamboo",
+ "bamboo_sapling",
+ "beetroot",
+ "brown_mushroom",
+ "carrots",
+ "carved_pumpkin",
+ "chorus_flower",
+ "chorus_plant",
+ "deadbush",
+ "double_plant",
+ "leaves",
+ "leaves2",
+ "lit_pumpkin",
+ "melon_block",
+ "melon_stem",
+ "potatoes",
+ "pumpkin",
+ "pumpkin_stem",
+ "red_flower",
+ "red_mushroom",
+ "crimson_fungus",
+ "warped_fungus",
+ "reeds",
+ "sapling",
+ "snow_layer",
+ "sweet_berry_bush",
+ "tallgrass",
+ "turtle_egg",
+ "vine",
+ "waterlily",
+ "wheat",
+ "yellow_flower",
+ "azalea",
+ "flowering_azalea",
+ "azalea_leaves",
+ "azalea_leaves_flowered",
+ "cave_vines",
+ "cave_vines_body_with_berries",
+ "cave_vines_head_with_berries",
+ "small_dripleaf_block",
+ "big_dripleaf",
+ "spore_blossom",
+ "hanging_roots",
+ "mangrove_leaves"
+ ]
+}
+```
+
+
+
+## breathable
+
+
+
+allay
+
+
+
+```json
+"minecraft:breathable": {
+ "totalSupply": 15,
+ "suffocateTime": 0
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true,
+ "breathes_air": true,
+ "generates_bubbles": false
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:breathable": {
+ "totalSupply": 15,
+ "suffocateTime": 0
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+
+
+## breedable
+
+
+
+axolotl
+
+#component_groups/axolotl_adult
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breed_items": "tropical_fish_bucket",
+ "transform_to_item": "water_bucket:0",
+ "breeds_with": {
+ "mate_type": "minecraft:axolotl",
+ "baby_type": "minecraft:axolotl",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "mutation_factor": {
+ "variant": 0.00083
+ }
+}
+```
+
+bee
+
+#component_groups/bee_adult
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": {
+ "mate_type": "minecraft:bee",
+ "baby_type": "minecraft:bee",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "minecraft:red_flower",
+ "minecraft:yellow_flower",
+ "minecraft:wither_rose",
+ "minecraft:double_plant:0",
+ "minecraft:double_plant:1",
+ "minecraft:double_plant:4",
+ "minecraft:double_plant:5",
+ "minecraft:flowering_azalea",
+ "minecraft:azalea_leaves_flowered",
+ "minecraft:mangrove_propagule",
+ "minecraft:pitcher_plant",
+ "minecraft:torchflower",
+ "minecraft:cherry_leaves",
+ "minecraft:pink_petals"
+ ]
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_adult
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": [
+ {
+ "mate_type": "minecraft:camel",
+ "baby_type": "minecraft:camel",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+ ],
+ "breed_items": [
+ "cactus"
+ ]
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_adult
+
+```json
+"minecraft:breedable": {
+ "require_tame": true,
+ "require_full_health": true,
+ "allow_sitting": true,
+ "breeds_with": {
+ "mate_type": "minecraft:cat",
+ "baby_type": "minecraft:cat",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+chicken
+
+#component_groups/minecraft:chicken_adult
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": {
+ "mate_type": "minecraft:chicken",
+ "baby_type": "minecraft:chicken",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "wheat_seeds",
+ "beetroot_seeds",
+ "melon_seeds",
+ "pumpkin_seeds",
+ "pitcher_pod",
+ "torchflower_seeds"
+ ]
+}
+```
+
+cow
+
+#component_groups/minecraft:cow_adult
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breed_items": "wheat",
+ "breeds_with": {
+ "mate_type": "minecraft:cow",
+ "baby_type": "minecraft:cow",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_tamed
+
+```json
+"minecraft:breedable": {
+ "parent_centric_attribute_blending": [
+ "minecraft:health"
+ ],
+ "require_tame": true,
+ "inherit_tamed": false,
+ "breeds_with": [
+ {
+ "mate_type": "minecraft:donkey",
+ "baby_type": "minecraft:donkey",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ {
+ "mate_type": "minecraft:horse",
+ "baby_type": "minecraft:mule",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+ ],
+ "breed_items": [
+ "golden_carrot",
+ "golden_apple",
+ "appleEnchanted"
+ ]
+}
+```
+
+fox
+
+#component_groups/minecraft:fox_adult
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breed_items": [
+ "sweet_berries",
+ "glow_berries"
+ ],
+ "breeds_with": {
+ "mate_type": "minecraft:fox",
+ "baby_type": "minecraft:fox",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+}
+```
+
+
+
+## bribeable
+
+
+
+dolphin
+
+#component_groups/dolphin_adult
+
+```json
+"minecraft:bribeable": {
+ "bribe_items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+
+
+## buoyant
+
+
+
+boat
+
+
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": true,
+ "big_wave_probability": 0.03,
+ "big_wave_speed": 10.0,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ]
+}
+```
+
+#component_groups/minecraft:floating
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": true,
+ "big_wave_probability": 0.03,
+ "big_wave_speed": 10.0,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ]
+}
+```
+
+#component_groups/minecraft:above_bubble_column_down
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": false,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ],
+ "drag_down_on_buoyancy_removed": 0.7
+}
+```
+
+chest_boat
+
+
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": true,
+ "big_wave_probability": 0.03,
+ "big_wave_speed": 10.0,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ]
+}
+```
+
+#component_groups/minecraft:floating
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": true,
+ "big_wave_probability": 0.03,
+ "big_wave_speed": 10.0,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ]
+}
+```
+
+#component_groups/minecraft:above_bubble_column_down
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": false,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ],
+ "drag_down_on_buoyancy_removed": 0.7
+}
+```
+
+xp_orb
+
+
+
+```json
+"minecraft:buoyant": {
+ "apply_gravity": false,
+ "liquid_blocks": [
+ "minecraft:flowing_water",
+ "minecraft:water"
+ ]
+}
+```
+
+
+
+## burns_in_daylight
+
+
+
+drowned
+
+
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+magma_cube
+
+
+
+```json
+"minecraft:burns_in_daylight": false
+```
+
+phantom
+
+
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+skeleton
+
+
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+stray
+
+
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+zombie
+
+
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+zombie_villager
+
+
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+zombie_villager_v2
+
+
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+
+
+## can_climb
+
+
+
+blaze
+
+
+
+```json
+"minecraft:can_climb": {}
+```
+
+camel
+
+
+
+```json
+"minecraft:can_climb": {}
+```
+
+cat
+
+
+
+```json
+"minecraft:can_climb": {}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:can_climb": {}
+```
+
+chicken
+
+
+
+```json
+"minecraft:can_climb": {}
+```
+
+cow
+
+
+
+```json
+"minecraft:can_climb": {}
+```
+
+creeper
+
+
+
+```json
+"minecraft:can_climb": {}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:can_climb": {}
+```
+
+
+
+## can_fly
+
+
+
+allay
+
+
+
+```json
+"minecraft:can_fly": {}
+```
+
+bat
+
+
+
+```json
+"minecraft:can_fly": {}
+```
+
+bee
+
+
+
+```json
+"minecraft:can_fly": {}
+```
+
+ghast
+
+
+
+```json
+"minecraft:can_fly": {}
+```
+
+parrot
+
+
+
+```json
+"minecraft:can_fly": {}
+```
+
+wither
+
+
+
+```json
+"minecraft:can_fly": {}
+```
+
+
+
+## can_power_jump
+
+
+
+donkey
+
+#component_groups/minecraft:donkey_saddled
+
+```json
+"minecraft:can_power_jump": {}
+```
+
+horse
+
+#component_groups/minecraft:horse_saddled
+
+```json
+"minecraft:can_power_jump": {}
+```
+
+mule
+
+#component_groups/minecraft:mule_saddled
+
+```json
+"minecraft:can_power_jump": {}
+```
+
+skeleton_horse
+
+
+
+```json
+"minecraft:can_power_jump": {}
+```
+
+
+
+## celebrate_hunt
+
+
+
+piglin
+
+#component_groups/piglin_adult
+
+```json
+"minecraft:celebrate_hunt": {
+ "celebration_targets": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "value": "hoglin"
+ }
+ ]
+ },
+ "broadcast": true,
+ "duration": 10,
+ "celebrate_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ },
+ "radius": 16
+}
+```
+
+
+
+## collision_box
+
+
+
+allay
+
+
+
+```json
+"minecraft:collision_box": {
+ "width": 0.35,
+ "height": 0.6
+}
+```
+
+armor_stand
+
+
+
+```json
+"minecraft:collision_box": {
+ "width": 0.5,
+ "height": 1.975
+}
+```
+
+arrow
+
+
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:collision_box": {
+ "width": 0.75,
+ "height": 0.42
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:collision_box": {
+ "width": 0.5,
+ "height": 0.9
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:collision_box": {
+ "width": 0.55,
+ "height": 0.5
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:collision_box": {
+ "width": 0.5,
+ "height": 1.8
+}
+```
+
+boat
+
+
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 0.455
+}
+```
+
+
+
+## color
+
+
+
+cat
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:color": {
+ "value": 14
+}
+```
+
+sheep
+
+#component_groups/minecraft:sheep_white
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+#component_groups/minecraft:sheep_brown
+
+```json
+"minecraft:color": {
+ "value": 12
+}
+```
+
+#component_groups/minecraft:sheep_black
+
+```json
+"minecraft:color": {
+ "value": 15
+}
+```
+
+tropicalfish
+
+#component_groups/minecraft:tropicalfish_base_white
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+#component_groups/minecraft:tropicalfish_base_orange
+
+```json
+"minecraft:color": {
+ "value": 1
+}
+```
+
+#component_groups/minecraft:tropicalfish_base_magenta
+
+```json
+"minecraft:color": {
+ "value": 2
+}
+```
+
+wolf
+
+#component_groups/minecraft:wolf_tame
+
+```json
+"minecraft:color": {
+ "value": 14
+}
+```
+
+
+
+## color2
+
+
+
+tropicalfish
+
+#component_groups/minecraft:tropicalfish_pattern_white
+
+```json
+"minecraft:color2": {
+ "value": 0
+}
+```
+
+#component_groups/minecraft:tropicalfish_pattern_orange
+
+```json
+"minecraft:color2": {
+ "value": 1
+}
+```
+
+#component_groups/minecraft:tropicalfish_pattern_magenta
+
+```json
+"minecraft:color2": {
+ "value": 2
+}
+```
+
+
+
+## combat_regeneration
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:combat_regeneration": {}
+```
+
+
+
+## conditional_bandwidth_optimization
+
+
+
+allay
+
+
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+area_effect_cloud
+
+
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+armor_stand
+
+
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+arrow
+
+
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+bee
+
+
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+blaze
+
+
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+boat
+
+
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 60.0,
+ "max_dropped_ticks": 20,
+ "use_motion_prediction_hints": true
+ },
+ "conditional_values": [
+ {
+ "max_optimized_distance": 0.0,
+ "max_dropped_ticks": 0,
+ "use_motion_prediction_hints": true,
+ "conditional_values": [
+ {
+ "test": "is_moving",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+## custom_hit_test
+
+
+
+hoglin
+
+#component_groups/minecraft:hoglin_baby
+
+```json
+"minecraft:custom_hit_test": {
+ "hitboxes": [
+ {
+ "width": 1.0,
+ "height": 0.85,
+ "pivot": [
+ 0,
+ 0.5,
+ 0
+ ]
+ }
+ ]
+}
+```
+
+#component_groups/minecraft:hoglin_adult
+
+```json
+"minecraft:custom_hit_test": {
+ "hitboxes": [
+ {
+ "width": 2.0,
+ "height": 1.75,
+ "pivot": [
+ 0,
+ 1,
+ 0
+ ]
+ }
+ ]
+}
+```
+
+zoglin
+
+#component_groups/zoglin_baby
+
+```json
+"minecraft:custom_hit_test": {
+ "hitboxes": [
+ {
+ "width": 1.0,
+ "height": 0.85,
+ "pivot": [
+ 0,
+ 0.5,
+ 0
+ ]
+ }
+ ]
+}
+```
+
+#component_groups/zoglin_adult
+
+```json
+"minecraft:custom_hit_test": {
+ "hitboxes": [
+ {
+ "width": 2.0,
+ "height": 1.75,
+ "pivot": [
+ 0,
+ 1,
+ 0
+ ]
+ }
+ ]
+}
+```
+
+
+
+## damage_over_time
+
+
+
+axolotl
+
+#component_groups/axolotl_dried
+
+```json
+"minecraft:damage_over_time": {
+ "damage_per_hurt": 1,
+ "time_between_hurt": 0
+}
+```
+
+dolphin
+
+#component_groups/dolphin_dried
+
+```json
+"minecraft:damage_over_time": {
+ "damage_per_hurt": 1,
+ "time_between_hurt": 0
+}
+```
+
+
+
+## damage_sensor
+
+
+
+allay
+
+
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": [
+ {
+ "on_damage": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_owner",
+ "subject": "other",
+ "value": true
+ }
+ ]
+ }
+ },
+ "deals_damage": false
+ }
+ ]
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "lightning",
+ "deals_damage": true,
+ "damage_multiplier": 2000.0
+ }
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "lightning"
+ },
+ "event": "minecraft:become_charged"
+ },
+ "deals_damage": false
+ }
+}
+```
+
+
+
+## dash
+
+
+
+camel
+
+#component_groups/minecraft:camel_saddled
+
+```json
+"minecraft:dash": {
+ "cooldown_time": 2.75,
+ "horizontal_momentum": 20.0,
+ "vertical_momentum": 0.6
+}
+```
+
+
+
+## despawn
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+
+
+## drying_out_timer
+
+
+
+axolotl
+
+#component_groups/axolotl_on_land
+
+```json
+"minecraft:drying_out_timer": {
+ "total_time": 300,
+ "water_bottle_refill_time": 90,
+ "dried_out_event": {
+ "event": "dried_out"
+ },
+ "stopped_drying_out_event": {
+ "event": "stop_drying_out"
+ },
+ "recover_after_dried_out_event": {
+ "event": "recover_after_dried_out"
+ }
+}
+```
+
+dolphin
+
+#component_groups/dolphin_on_land
+
+```json
+"minecraft:drying_out_timer": {
+ "total_time": 120,
+ "water_bottle_refill_time": 0,
+ "dried_out_event": {
+ "event": "dried_out"
+ },
+ "stopped_drying_out_event": {
+ "event": "stop_dryingout"
+ },
+ "recover_after_dried_out_event": {
+ "event": "recover_after_dried_out"
+ }
+}
+```
+
+
+
+## dweller
+
+
+
+cat
+
+
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "passive",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+evocation_illager
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "hostile",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+iron_golem
+
+#component_groups/minecraft:village_created
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "defender",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+pillager
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "hostile",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+ravager
+
+#component_groups/minecraft:raid_configuration
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "hostile",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+villager_v2
+
+
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+#component_groups/farmer
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "farmer",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+#component_groups/fisherman
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "fisherman",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+
+
+## economy_trade_table
+
+
+
+villager_v2
+
+#component_groups/trade_components
+
+```json
+"minecraft:economy_trade_table": {}
+```
+
+#component_groups/farmer
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.farmer",
+ "table": "trading/economy_trades/farmer_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+#component_groups/fisherman
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.fisherman",
+ "table": "trading/economy_trades/fisherman_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+wandering_trader
+
+
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.wandering_trader.name",
+ "table": "trading/economy_trades/wandering_trader_trades.json",
+ "new_screen": true
+}
+```
+
+
+
+## entity_sensor
+
+
+
+parrot
+
+#component_groups/minecraft:parrot_not_riding_player
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.0,
+ "relative_range": false,
+ "event_filters": {
+ "all_of": [
+ {
+ "test": "is_riding",
+ "subject": "self",
+ "operator": "equals",
+ "value": true
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "equals",
+ "value": "minecraft:behavior.look_at_player"
+ }
+ ]
+ },
+ "event": "minecraft:on_riding_player"
+}
+```
+
+#component_groups/minecraft:parrot_riding_player
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.0,
+ "relative_range": false,
+ "event_filters": {
+ "all_of": [
+ {
+ "test": "is_riding",
+ "subject": "self",
+ "operator": "equals",
+ "value": false
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "not",
+ "value": "minecraft:behavior.look_at_player"
+ }
+ ]
+ },
+ "event": "minecraft:on_not_riding_player"
+}
+```
+
+pufferfish
+
+#component_groups/minecraft:normal_puff
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.5,
+ "relative_range": false,
+ "minimum_count": 1,
+ "event_filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ },
+ {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "none_of": {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "event": "minecraft:start_half_puff"
+}
+```
+
+#component_groups/minecraft:half_puff_secondary
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.5,
+ "relative_range": false,
+ "minimum_count": 1,
+ "event_filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ },
+ {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "none_of": {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "event": "minecraft:start_full_puff"
+}
+```
+
+#component_groups/minecraft:deflate_sensor
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.9,
+ "relative_range": false,
+ "require_all": true,
+ "event_filters": {
+ "none_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ },
+ {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "none_of": {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ }
+ ]
+ }
+ ],
+ "test": "distance_to_nearest_player",
+ "operator": ">",
+ "value": 2.9
+ },
+ "event": "minecraft:from_full_puff"
+}
+```
+
+
+
+## environment_sensor
+
+
+
+axolotl
+
+#component_groups/axolotl_in_water
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "in_water",
+ "operator": "!=",
+ "value": true
+ },
+ "event": "start_drying_out"
+ }
+ ]
+}
+```
+
+#component_groups/axolotl_on_land_in_rain
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "in_water_or_rain",
+ "operator": "!=",
+ "value": true
+ },
+ "event": "start_drying_out"
+ },
+ {
+ "filters": {
+ "test": "in_water",
+ "operator": "==",
+ "value": true
+ },
+ "event": "enter_water"
+ }
+ ]
+}
+```
+
+bee
+
+#component_groups/shelter_detection
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "event": "seek_shelter",
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "is_daytime",
+ "value": false
+ },
+ {
+ "test": "weather",
+ "operator": "==",
+ "value": "precipitation"
+ }
+ ]
+ },
+ {
+ "test": "bool_property",
+ "domain": "minecraft:has_nectar",
+ "operator": "!="
+ },
+ {
+ "test": "has_biome_tag",
+ "value": "overworld"
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+#component_groups/abort_shelter_detection
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "event": "abort_sheltering",
+ "filters": {
+ "all_of": [
+ {
+ "test": "weather",
+ "operator": "==",
+ "value": "clear"
+ },
+ {
+ "test": "is_daytime",
+ "value": true
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+cave_spider
+
+#component_groups/minecraft:spider_neutral
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_brightness",
+ "operator": "<",
+ "value": 0.49
+ },
+ "event": "minecraft:become_hostile"
+ }
+}
+```
+
+#component_groups/minecraft:spider_hostile
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_brightness",
+ "operator": ">",
+ "value": 0.49
+ },
+ "event": "minecraft:become_neutral"
+ }
+}
+```
+
+dolphin
+
+#component_groups/dolphin_swimming_navigation
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "on_ground",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "in_water",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "event": "navigation_on_land"
+ }
+ ]
+}
+```
+
+#component_groups/dolphin_on_land_in_rain
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "in_water",
+ "operator": "==",
+ "value": true
+ },
+ "event": "navigation_off_land"
+ },
+ {
+ "filters": {
+ "test": "in_water_or_rain",
+ "operator": "!=",
+ "value": true
+ },
+ "event": "start_dryingout"
+ }
+ ]
+}
+```
+
+
+
+## equip_item
+
+
+
+drowned
+
+
+
+```json
+"minecraft:equip_item": {}
+```
+
+fox
+
+
+
+```json
+"minecraft:equip_item": {}
+```
+
+husk
+
+
+
+```json
+"minecraft:equip_item": {}
+```
+
+piglin
+
+
+
+```json
+"minecraft:equip_item": {}
+```
+
+pillager
+
+
+
+```json
+"minecraft:equip_item": {}
+```
+
+skeleton
+
+
+
+```json
+"minecraft:equip_item": {}
+```
+
+stray
+
+
+
+```json
+"minecraft:equip_item": {}
+```
+
+wither_skeleton
+
+
+
+```json
+"minecraft:equip_item": {}
+```
+
+
+
+## equipment
+
+
+
+drowned
+
+#component_groups/minecraft:ranged_equipment
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/drowned_ranged_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.weapon.offhand",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+#component_groups/minecraft:melee_equipment
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/drowned_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.weapon.offhand",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+fox
+
+#component_groups/minecraft:fox_with_item
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/fox_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.weapon.mainhand",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+husk
+
+
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/zombie_equipment.json"
+}
+```
+
+piglin
+
+#component_groups/ranged_unit
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/piglin_gear_ranged.json"
+}
+```
+
+#component_groups/melee_unit
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/piglin_gear_melee.json"
+}
+```
+
+piglin_brute
+
+#component_groups/melee_unit
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/piglin_brute_gear.json"
+}
+```
+
+pillager
+
+
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/pillager_gear.json"
+}
+```
+
+
+
+## equippable
+
+
+
+camel
+
+#component_groups/minecraft:camel_adult
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 0,
+ "item": "saddle",
+ "accepted_items": [
+ "saddle"
+ ],
+ "on_equip": {
+ "event": "minecraft:camel_saddled"
+ },
+ "on_unequip": {
+ "event": "minecraft:camel_unsaddled"
+ }
+ }
+ ]
+}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_tamed
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 0,
+ "item": "saddle",
+ "accepted_items": [
+ "saddle"
+ ],
+ "on_equip": {
+ "event": "minecraft:donkey_saddled"
+ },
+ "on_unequip": {
+ "event": "minecraft:donkey_unsaddled"
+ }
+ }
+ ]
+}
+```
+
+horse
+
+
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 0,
+ "item": "saddle",
+ "accepted_items": [
+ "saddle"
+ ],
+ "on_equip": {
+ "event": "minecraft:horse_saddled"
+ },
+ "on_unequip": {
+ "event": "minecraft:horse_unsaddled"
+ }
+ },
+ {
+ "slot": 1,
+ "item": "horsearmoriron",
+ "accepted_items": [
+ "horsearmorleather",
+ "horsearmoriron",
+ "horsearmorgold",
+ "horsearmordiamond"
+ ]
+ }
+ ]
+}
+```
+
+llama
+
+#component_groups/minecraft:llama_tamed
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 1,
+ "item": "carpet",
+ "accepted_items": [
+ "carpet"
+ ]
+ }
+ ]
+}
+```
+
+mule
+
+#component_groups/minecraft:mule_tamed
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 0,
+ "item": "saddle",
+ "accepted_items": [
+ "saddle"
+ ],
+ "on_equip": {
+ "event": "minecraft:mule_saddled"
+ },
+ "on_unequip": {
+ "event": "minecraft:mule_unsaddled"
+ }
+ }
+ ]
+}
+```
+
+trader_llama
+
+#component_groups/minecraft:llama_tamed
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 1,
+ "item": "carpet",
+ "accepted_items": [
+ "carpet"
+ ]
+ }
+ ]
+}
+```
+
+
+
+## exhaustion_values
+
+
+
+player
+
+
+
+```json
+"minecraft:exhaustion_values": {
+ "heal": 6,
+ "jump": 0.05,
+ "sprint_jump": 0.2,
+ "mine": 0.005,
+ "attack": 0.1,
+ "damage": 0.1,
+ "walk": 0.0,
+ "sprint": 0.1,
+ "swim": 0.01
+}
+```
+
+
+
+## experience_reward
+
+
+
+axolotl
+
+#component_groups/axolotl_adult
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "q.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+bee
+
+#component_groups/bee_adult
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "q.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "q.last_hit_by_player ? 10 : 0"
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_adult
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "q.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_adult
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "q.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "q.last_hit_by_player ? 5 : 0"
+}
+```
+
+chicken
+
+#component_groups/minecraft:chicken_adult
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "q.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+cow
+
+#component_groups/minecraft:cow_adult
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "q.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+
+
+## explode
+
+
+
+creeper
+
+#component_groups/minecraft:exploding
+
+```json
+"minecraft:explode": {
+ "fuse_length": 1.5,
+ "fuse_lit": true,
+ "power": 3,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+#component_groups/minecraft:charged_exploding
+
+```json
+"minecraft:explode": {
+ "fuse_length": 1.5,
+ "fuse_lit": true,
+ "power": 6,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+#component_groups/minecraft:forced_exploding
+
+```json
+"minecraft:explode": {
+ "fuse_length": 1.5,
+ "fuse_lit": true,
+ "power": 3,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+ender_crystal
+
+#component_groups/crystal_exploding
+
+```json
+"minecraft:explode": {
+ "fuse_length": 0,
+ "fuse_lit": true,
+ "power": 6,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+fireball
+
+#component_groups/minecraft:exploding
+
+```json
+"minecraft:explode": {
+ "fuse_length": 0,
+ "fuse_lit": true,
+ "power": 1,
+ "causes_fire": true,
+ "fire_affected_by_griefing": true,
+ "destroy_affected_by_griefing": true
+}
+```
+
+tnt
+
+
+
+```json
+"minecraft:explode": {
+ "fuse_length": 4,
+ "fuse_lit": true,
+ "power": 4,
+ "causes_fire": false
+}
+```
+
+#component_groups/from_explosion
+
+```json
+"minecraft:explode": {
+ "fuse_length": {
+ "range_min": 0.5,
+ "range_max": 2.0
+ },
+ "fuse_lit": true,
+ "power": 4,
+ "causes_fire": false
+}
+```
+
+tnt_minecart
+
+#component_groups/minecraft:primed_tnt
+
+```json
+"minecraft:explode": {
+ "fuse_length": 4,
+ "fuse_lit": true,
+ "power": 3,
+ "causes_fire": false
+}
+```
+
+
+
+## fire_immune
+
+
+
+blaze
+
+
+
+```json
+"minecraft:fire_immune": {}
+```
+
+ender_crystal
+
+
+
+```json
+"minecraft:fire_immune": true
+```
+
+ender_dragon
+
+
+
+```json
+"minecraft:fire_immune": true
+```
+
+ghast
+
+
+
+```json
+"minecraft:fire_immune": {}
+```
+
+magma_cube
+
+
+
+```json
+"minecraft:fire_immune": {}
+```
+
+npc
+
+
+
+```json
+"minecraft:fire_immune": true
+```
+
+shulker
+
+
+
+```json
+"minecraft:fire_immune": true
+```
+
+strider
+
+
+
+```json
+"minecraft:fire_immune": {}
+```
+
+
+
+## flocking
+
+
+
+dolphin
+
+
+
+```json
+"minecraft:flocking": {
+ "in_water": false,
+ "match_variants": false,
+ "use_center_of_mass": false,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 6.0,
+ "breach_influence": 0.0,
+ "separation_weight": 1.75,
+ "separation_threshold": 3.0,
+ "cohesion_weight": 1.85,
+ "cohesion_threshold": 6.5,
+ "innner_cohesion_threshold": 3.5,
+ "min_height": 4.0,
+ "max_height": 4.0,
+ "block_distance": 1.0,
+ "block_weight": 0.0
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:flocking": {
+ "in_water": true,
+ "match_variants": false,
+ "use_center_of_mass": true,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 3.0,
+ "breach_influence": 7.0,
+ "separation_weight": 1.75,
+ "separation_threshold": 0.95,
+ "cohesion_weight": 2.0,
+ "cohesion_threshold": 1.95,
+ "innner_cohesion_threshold": 1.25,
+ "min_height": 1.5,
+ "max_height": 6.0,
+ "block_distance": 2.0,
+ "block_weight": 0.85
+}
+```
+
+pufferfish
+
+
+
+```json
+"minecraft:flocking": {
+ "in_water": true,
+ "match_variants": false,
+ "use_center_of_mass": true,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 3.0,
+ "breach_influence": 7.0,
+ "separation_weight": 1.75,
+ "separation_threshold": 0.95,
+ "cohesion_weight": 2.0,
+ "cohesion_threshold": 1.95,
+ "innner_cohesion_threshold": 1.25,
+ "min_height": 1.5,
+ "max_height": 6.0,
+ "block_distance": 2.0,
+ "block_weight": 0.85
+}
+```
+
+salmon
+
+
+
+```json
+"minecraft:flocking": {
+ "in_water": true,
+ "match_variants": false,
+ "use_center_of_mass": false,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 3.0,
+ "breach_influence": 7.0,
+ "separation_weight": 0.65,
+ "separation_threshold": 0.15,
+ "cohesion_weight": 2.25,
+ "cohesion_threshold": 1.5,
+ "innner_cohesion_threshold": 1.5,
+ "min_height": 4.0,
+ "max_height": 4.0,
+ "block_distance": 1.0,
+ "block_weight": 0.75
+}
+```
+
+tropicalfish
+
+
+
+```json
+"minecraft:flocking": {
+ "in_water": true,
+ "match_variants": true,
+ "use_center_of_mass": false,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 3.0,
+ "breach_influence": 7.0,
+ "separation_weight": 0.65,
+ "separation_threshold": 0.15,
+ "cohesion_weight": 2.75,
+ "cohesion_threshold": 1.5,
+ "innner_cohesion_threshold": 1.5,
+ "min_height": 1.5,
+ "max_height": 6.0,
+ "block_distance": 2.0,
+ "block_weight": 0.85
+}
+```
+
+
+
+## flying_speed
+
+
+
+allay
+
+
+
+```json
+"minecraft:flying_speed": {
+ "value": 0.1
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:flying_speed": {
+ "value": 0.15
+}
+```
+
+ender_dragon
+
+
+
+```json
+"minecraft:flying_speed": {
+ "value": 0.6
+}
+```
+
+
+
+## follow_range
+
+
+
+allay
+
+
+
+```json
+"minecraft:follow_range": {
+ "value": 1024
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:follow_range": {
+ "value": 1024
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:follow_range": {
+ "value": 48,
+ "max": 48
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:follow_range": {
+ "value": 48,
+ "max": 48
+}
+```
+
+elder_guardian
+
+
+
+```json
+"minecraft:follow_range": {
+ "value": 16,
+ "max": 16
+}
+```
+
+enderman
+
+
+
+```json
+"minecraft:follow_range": {
+ "value": 64,
+ "max": 64
+}
+```
+
+evocation_illager
+
+
+
+```json
+"minecraft:follow_range": {
+ "value": 64
+}
+```
+
+ghast
+
+
+
+```json
+"minecraft:follow_range": {
+ "value": 64,
+ "max": 64
+}
+```
+
+
+
+## game_event_movement_tracking
+
+
+
+allay
+
+
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+ender_dragon
+
+
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+parrot
+
+
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+phantom
+
+
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+vex
+
+
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_move": false,
+ "emit_swim": false
+}
+```
+
+
+
+## genetics
+
+
+
+goat
+
+
+
+```json
+"minecraft:genetics": {
+ "mutation_rate": 0.02,
+ "genes": [
+ {
+ "name": "goat_variant",
+ "use_simplified_breeding": true,
+ "allele_range": {
+ "range_min": 1,
+ "range_max": 100
+ },
+ "genetic_variants": [
+ {
+ "main_allele": {
+ "range_min": 1,
+ "range_max": 2
+ },
+ "birth_event": {
+ "event": "minecraft:born_screamer",
+ "target": "self"
+ }
+ },
+ {
+ "main_allele": {
+ "range_min": 3,
+ "range_max": 100
+ },
+ "birth_event": {
+ "event": "minecraft:born_default",
+ "target": "self"
+ }
+ }
+ ]
+ }
+ ]
+}
+```
+
+panda
+
+
+
+```json
+"minecraft:genetics": {
+ "mutation_rate": 0.03125,
+ "genes": [
+ {
+ "name": "panda_variant",
+ "allele_range": {
+ "range_min": 0,
+ "range_max": 15
+ },
+ "genetic_variants": [
+ {
+ "main_allele": 0,
+ "birth_event": {
+ "event": "minecraft:panda_lazy",
+ "target": "self"
+ }
+ },
+ {
+ "main_allele": 1,
+ "birth_event": {
+ "event": "minecraft:panda_worried",
+ "target": "self"
+ }
+ },
+ {
+ "main_allele": 2,
+ "birth_event": {
+ "event": "minecraft:panda_playful",
+ "target": "self"
+ }
+ },
+ {
+ "main_allele": 3,
+ "birth_event": {
+ "event": "minecraft:panda_aggressive",
+ "target": "self"
+ }
+ },
+ {
+ "both_allele": {
+ "range_min": 4,
+ "range_max": 7
+ },
+ "birth_event": {
+ "event": "minecraft:panda_weak",
+ "target": "self"
+ }
+ },
+ {
+ "both_allele": {
+ "range_min": 8,
+ "range_max": 9
+ },
+ "birth_event": {
+ "event": "minecraft:panda_brown",
+ "target": "self"
+ }
+ }
+ ]
+ }
+ ]
+}
+```
+
+
+
+## giveable
+
+
+
+panda
+
+
+
+```json
+"minecraft:giveable": {
+ "triggers": {
+ "cooldown": 3.0,
+ "items": [
+ "bamboo",
+ "cake"
+ ],
+ "on_give": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+ }
+}
+```
+
+
+
+## group_size
+
+
+
+hoglin
+
+#component_groups/minecraft:hoglin_adult
+
+```json
+"minecraft:group_size": {
+ "radius": 32,
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "value": "hoglin"
+ }
+ ]
+ }
+}
+```
+
+piglin
+
+#component_groups/piglin_adult
+
+```json
+"minecraft:group_size": {
+ "radius": 32,
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "value": "piglin"
+ }
+ ]
+ }
+}
+```
+
+
+
+## grows_crop
+
+
+
+bee
+
+#component_groups/has_nectar
+
+```json
+"minecraft:grows_crop": {
+ "charges": 10,
+ "chance": 0.03
+}
+```
+
+
+
+## healable
+
+
+
+camel
+
+
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "cactus",
+ "heal_amount": 2
+ }
+ ]
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "fish",
+ "heal_amount": 2
+ },
+ {
+ "item": "salmon",
+ "heal_amount": 2
+ }
+ ]
+}
+```
+
+donkey
+
+
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "wheat",
+ "heal_amount": 2
+ },
+ {
+ "item": "sugar",
+ "heal_amount": 1
+ },
+ {
+ "item": "hay_block",
+ "heal_amount": 20
+ },
+ {
+ "item": "apple",
+ "heal_amount": 3
+ },
+ {
+ "item": "golden_carrot",
+ "heal_amount": 4
+ },
+ {
+ "item": "golden_apple",
+ "heal_amount": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+horse
+
+
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "wheat",
+ "heal_amount": 2
+ },
+ {
+ "item": "sugar",
+ "heal_amount": 1
+ },
+ {
+ "item": "hay_block",
+ "heal_amount": 20
+ },
+ {
+ "item": "apple",
+ "heal_amount": 3
+ },
+ {
+ "item": "golden_carrot",
+ "heal_amount": 4
+ },
+ {
+ "item": "golden_apple",
+ "heal_amount": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+llama
+
+
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "wheat",
+ "heal_amount": 2
+ },
+ {
+ "item": "hay_block",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+mule
+
+
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "wheat",
+ "heal_amount": 2
+ },
+ {
+ "item": "sugar",
+ "heal_amount": 1
+ },
+ {
+ "item": "hay_block",
+ "heal_amount": 20
+ },
+ {
+ "item": "apple",
+ "heal_amount": 3
+ },
+ {
+ "item": "golden_carrot",
+ "heal_amount": 4
+ },
+ {
+ "item": "golden_apple",
+ "heal_amount": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+parrot
+
+
+
+```json
+"minecraft:healable": {
+ "force_use": true,
+ "filters": {
+ "test": "is_riding",
+ "operator": "!=",
+ "value": true
+ },
+ "items": [
+ {
+ "item": "cookie",
+ "heal_amount": 0,
+ "effects": [
+ {
+ "name": "fatal_poison",
+ "chance": 1.0,
+ "duration": 1000,
+ "amplifier": 0
+ }
+ ]
+ }
+ ]
+}
+```
+
+sniffer
+
+
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "torchflower_seeds",
+ "heal_amount": 2
+ }
+ ]
+}
+```
+
+
+
+## health
+
+
+
+allay
+
+
+
+```json
+"minecraft:health": {
+ "value": 20
+}
+```
+
+armor_stand
+
+
+
+```json
+"minecraft:health": {
+ "value": 6,
+ "max": 6
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:health": {
+ "value": 14
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:health": {
+ "value": 6,
+ "max": 6
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:health": {
+ "value": 32
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_wild
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+
+
+## heartbeat
+
+
+
+warden
+
+
+
+```json
+"minecraft:heartbeat": {
+ "interval": "2.0 - math.clamp(q.anger_level / 80 * 1.5, 0, 1.5)"
+}
+```
+
+
+
+## hide
+
+
+
+villager_v2
+
+
+
+```json
+"minecraft:hide": {}
+```
+
+
+
+## home
+
+
+
+bee
+
+
+
+```json
+"minecraft:home": {
+ "restriction_radius": 22,
+ "home_block_list": [
+ "minecraft:bee_nest",
+ "minecraft:beehive"
+ ]
+}
+```
+
+elder_guardian
+
+
+
+```json
+"minecraft:home": {
+ "restriction_radius": 16
+}
+```
+
+guardian
+
+
+
+```json
+"minecraft:home": {
+ "restriction_radius": 16
+}
+```
+
+piglin_brute
+
+
+
+```json
+"minecraft:home": {}
+```
+
+turtle
+
+
+
+```json
+"minecraft:home": {}
+```
+
+wandering_trader
+
+
+
+```json
+"minecraft:home": {
+ "restriction_radius": 16
+}
+```
+
+
+
+## horse.jump_strength
+
+
+
+donkey
+
+
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": 0.5
+}
+```
+
+horse
+
+
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": {
+ "range_min": 0.4,
+ "range_max": 1.0
+ }
+}
+```
+
+mule
+
+
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": 0.5
+}
+```
+
+skeleton_horse
+
+
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": {
+ "range_min": 0.4,
+ "range_max": 1.0
+ }
+}
+```
+
+zombie_horse
+
+
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": {
+ "range_min": 0.4,
+ "range_max": 1.0
+ }
+}
+```
+
+
+
+## hurt_on_condition
+
+
+
+allay
+
+
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+armor_stand
+
+
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+arrow
+
+
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+#component_groups/perish
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "cause": "none",
+ "damage_per_tick": 999
+ }
+ ]
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_contact_with_water",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "drowning",
+ "damage_per_tick": 1
+ }
+ ]
+}
+```
+
+
+
+## input_ground_controlled
+
+
+
+camel
+
+#component_groups/minecraft:camel_saddled
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_saddled
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+horse
+
+#component_groups/minecraft:horse_saddled
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+mule
+
+#component_groups/minecraft:mule_saddled
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+skeleton_horse
+
+
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+
+
+## inside_block_notifier
+
+
+
+boat
+
+
+
+```json
+"minecraft:inside_block_notifier": {
+ "block_list": [
+ {
+ "block": {
+ "name": "minecraft:bubble_column",
+ "states": {
+ "drag_down": true
+ }
+ },
+ "entered_block_event": {
+ "event": "minecraft:entered_bubble_column_down",
+ "target": "self"
+ },
+ "exited_block_event": {
+ "event": "minecraft:exited_bubble_column",
+ "target": "self"
+ }
+ },
+ {
+ "block": {
+ "name": "minecraft:bubble_column",
+ "states": {
+ "drag_down": false
+ }
+ },
+ "entered_block_event": {
+ "event": "minecraft:entered_bubble_column_up",
+ "target": "self"
+ },
+ "exited_block_event": {
+ "event": "minecraft:exited_bubble_column",
+ "target": "self"
+ }
+ }
+ ]
+}
+```
+
+chest_boat
+
+
+
+```json
+"minecraft:inside_block_notifier": {
+ "block_list": [
+ {
+ "block": {
+ "name": "minecraft:bubble_column",
+ "states": {
+ "drag_down": true
+ }
+ },
+ "entered_block_event": {
+ "event": "minecraft:entered_bubble_column_down",
+ "target": "self"
+ },
+ "exited_block_event": {
+ "event": "minecraft:exited_bubble_column",
+ "target": "self"
+ }
+ },
+ {
+ "block": {
+ "name": "minecraft:bubble_column",
+ "states": {
+ "drag_down": false
+ }
+ },
+ "entered_block_event": {
+ "event": "minecraft:entered_bubble_column_up",
+ "target": "self"
+ },
+ "exited_block_event": {
+ "event": "minecraft:exited_bubble_column",
+ "target": "self"
+ }
+ }
+ ]
+}
+```
+
+
+
+## insomnia
+
+
+
+player
+
+
+
+```json
+"minecraft:insomnia": {
+ "days_until_insomnia": 3
+}
+```
+
+
+
+## interact
+
+
+
+allay
+
+
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneak_held",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ }
+ },
+ "give_item": true,
+ "take_item": true,
+ "interact_text": "action.interact.allay"
+ }
+ ]
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_adult
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "saddle",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneak_held",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.saddle"
+ }
+ ]
+}
+```
+
+cow
+
+#component_groups/minecraft:cow_adult
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "bucket:0"
+ }
+ ]
+ }
+ },
+ "use_item": true,
+ "transform_to_item": "bucket:1",
+ "play_sounds": "milk",
+ "interact_text": "action.interact.milk"
+ }
+ ]
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:interact": {
+ "interactions": {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "flint_and_steel"
+ },
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:explode"
+ }
+ ]
+ },
+ "event": "minecraft:start_exploding_forced",
+ "target": "self"
+ },
+ "hurt_item": 1,
+ "swing": true,
+ "play_sounds": "ignite",
+ "interact_text": "action.interact.creeper"
+ }
+}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_tamed
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.equip"
+ }
+ ]
+}
+```
+
+#component_groups/minecraft:donkey_unchested
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.saddle"
+ },
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "chest"
+ }
+ ]
+ },
+ "event": "minecraft:on_chest",
+ "target": "self"
+ },
+ "use_item": true,
+ "interact_text": "action.interact.attachchest"
+ }
+ ]
+}
+```
+
+#component_groups/minecraft:donkey_chested
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.saddle"
+ }
+ ]
+}
+```
+
+goat
+
+#component_groups/interact_default
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "bucket:0"
+ }
+ ]
+ }
+ },
+ "use_item": true,
+ "transform_to_item": "bucket:1",
+ "play_sounds": "milk_suspiciously",
+ "interact_text": "action.interact.milk"
+ }
+ ]
+}
+```
+
+
+
+## inventory
+
+
+
+allay
+
+
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 1
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_adult
+
+```json
+"minecraft:inventory": {
+ "container_type": "horse"
+}
+```
+
+chest_boat
+
+
+
+```json
+"minecraft:inventory": {
+ "container_type": "chest_boat",
+ "inventory_size": 27,
+ "can_be_siphoned_from": true
+}
+```
+
+chest_minecart
+
+
+
+```json
+"minecraft:inventory": {
+ "container_type": "minecart_chest",
+ "inventory_size": 27,
+ "can_be_siphoned_from": true
+}
+```
+
+command_block_minecart
+
+
+
+```json
+"minecraft:inventory": {}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_tamed
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 16,
+ "container_type": "horse"
+}
+```
+
+hopper_minecart
+
+
+
+```json
+"minecraft:inventory": {
+ "container_type": "minecart_hopper",
+ "inventory_size": 5,
+ "can_be_siphoned_from": true
+}
+```
+
+horse
+
+#component_groups/minecraft:horse_tamed
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 2,
+ "container_type": "horse"
+}
+```
+
+
+
+## is_baby
+
+
+
+axolotl
+
+#component_groups/axolotl_baby
+
+```json
+"minecraft:is_baby": {}
+```
+
+bee
+
+#component_groups/bee_baby
+
+```json
+"minecraft:is_baby": {}
+```
+
+camel
+
+#component_groups/minecraft:camel_baby
+
+```json
+"minecraft:is_baby": {}
+```
+
+cat
+
+#component_groups/minecraft:cat_baby
+
+```json
+"minecraft:is_baby": {}
+```
+
+chicken
+
+#component_groups/minecraft:chicken_baby
+
+```json
+"minecraft:is_baby": {}
+```
+
+cow
+
+#component_groups/minecraft:cow_baby
+
+```json
+"minecraft:is_baby": {}
+```
+
+dolphin
+
+#component_groups/dolphin_baby
+
+```json
+"minecraft:is_baby": {}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_baby
+
+```json
+"minecraft:is_baby": {}
+```
+
+
+
+## is_charged
+
+
+
+creeper
+
+#component_groups/minecraft:charged_creeper
+
+```json
+"minecraft:is_charged": {}
+```
+
+
+
+## is_chested
+
+
+
+donkey
+
+#component_groups/minecraft:donkey_chested
+
+```json
+"minecraft:is_chested": {}
+```
+
+llama
+
+#component_groups/minecraft:llama_chested
+
+```json
+"minecraft:is_chested": {}
+```
+
+mule
+
+#component_groups/minecraft:mule_chested
+
+```json
+"minecraft:is_chested": {}
+```
+
+trader_llama
+
+#component_groups/minecraft:llama_chested
+
+```json
+"minecraft:is_chested": {}
+```
+
+
+
+## is_dyeable
+
+
+
+cat
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:is_dyeable": {
+ "interact_text": "action.interact.dye"
+}
+```
+
+sheep
+
+#component_groups/minecraft:sheep_dyeable
+
+```json
+"minecraft:is_dyeable": {
+ "interact_text": "action.interact.dye"
+}
+```
+
+wolf
+
+#component_groups/minecraft:wolf_tame
+
+```json
+"minecraft:is_dyeable": {
+ "interact_text": "action.interact.dye"
+}
+```
+
+
+
+## is_hidden_when_invisible
+
+
+
+allay
+
+
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+bat
+
+
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+bee
+
+
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+blaze
+
+
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+camel
+
+
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+cat
+
+
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+
+
+## is_ignited
+
+
+
+tnt_minecart
+
+#component_groups/minecraft:primed_tnt
+
+```json
+"minecraft:is_ignited": {}
+```
+
+#component_groups/minecraft:instant_explode_tnt
+
+```json
+"minecraft:is_ignited": {}
+```
+
+
+
+## is_illager_captain
+
+
+
+pillager
+
+#component_groups/minecraft:illager_squad_captain
+
+```json
+"minecraft:is_illager_captain": {}
+```
+
+#component_groups/minecraft:patrol_captain
+
+```json
+"minecraft:is_illager_captain": {}
+```
+
+vindicator
+
+#component_groups/minecraft:illager_squad_captain
+
+```json
+"minecraft:is_illager_captain": {}
+```
+
+#component_groups/minecraft:patrol_captain
+
+```json
+"minecraft:is_illager_captain": {}
+```
+
+
+
+## is_pregnant
+
+
+
+sniffer
+
+#component_groups/sniffer_pregnant
+
+```json
+"minecraft:is_pregnant": {}
+```
+
+
+
+## is_saddled
+
+
+
+camel
+
+#component_groups/minecraft:camel_saddled
+
+```json
+"minecraft:is_saddled": {}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_saddled
+
+```json
+"minecraft:is_saddled": {}
+```
+
+horse
+
+#component_groups/minecraft:horse_saddled
+
+```json
+"minecraft:is_saddled": {}
+```
+
+mule
+
+#component_groups/minecraft:mule_saddled
+
+```json
+"minecraft:is_saddled": {}
+```
+
+pig
+
+#component_groups/minecraft:pig_saddled
+
+```json
+"minecraft:is_saddled": {}
+```
+
+strider
+
+#component_groups/minecraft:strider_saddled
+
+```json
+"minecraft:is_saddled": {}
+```
+
+
+
+## is_shaking
+
+
+
+hoglin
+
+#component_groups/start_zombification
+
+```json
+"minecraft:is_shaking": {}
+```
+
+husk
+
+#component_groups/minecraft:convert_to_zombie
+
+```json
+"minecraft:is_shaking": {}
+```
+
+#component_groups/minecraft:convert_to_baby_zombie
+
+```json
+"minecraft:is_shaking": {}
+```
+
+piglin
+
+#component_groups/start_zombification
+
+```json
+"minecraft:is_shaking": {}
+```
+
+piglin_brute
+
+#component_groups/start_zombification
+
+```json
+"minecraft:is_shaking": {}
+```
+
+skeleton
+
+#component_groups/in_powder_snow
+
+```json
+"minecraft:is_shaking": {}
+```
+
+strider
+
+#component_groups/minecraft:start_suffocating
+
+```json
+"minecraft:is_shaking": {}
+```
+
+zombie
+
+#component_groups/minecraft:convert_to_drowned
+
+```json
+"minecraft:is_shaking": {}
+```
+
+
+
+## is_sheared
+
+
+
+sheep
+
+#component_groups/minecraft:sheep_sheared
+
+```json
+"minecraft:is_sheared": {}
+```
+
+snow_golem
+
+#component_groups/minecraft:snowman_sheared
+
+```json
+"minecraft:is_sheared": {}
+```
+
+
+
+## is_stackable
+
+
+
+boat
+
+
+
+```json
+"minecraft:is_stackable": {}
+```
+
+chest_boat
+
+
+
+```json
+"minecraft:is_stackable": {}
+```
+
+chest_minecart
+
+
+
+```json
+"minecraft:is_stackable": {
+ "value": true
+}
+```
+
+hopper_minecart
+
+
+
+```json
+"minecraft:is_stackable": {}
+```
+
+minecart
+
+
+
+```json
+"minecraft:is_stackable": {}
+```
+
+tnt_minecart
+
+
+
+```json
+"minecraft:is_stackable": {}
+```
+
+
+
+## is_stunned
+
+
+
+ravager
+
+#component_groups/stunned
+
+```json
+"minecraft:is_stunned": {}
+```
+
+
+
+## is_tamed
+
+
+
+camel
+
+
+
+```json
+"minecraft:is_tamed": {}
+```
+
+cat
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:is_tamed": {}
+```
+
+donkey
+
+#component_groups/minecraft:donkey_tamed
+
+```json
+"minecraft:is_tamed": {}
+```
+
+horse
+
+#component_groups/minecraft:horse_tamed
+
+```json
+"minecraft:is_tamed": {}
+```
+
+llama
+
+#component_groups/minecraft:llama_tamed
+
+```json
+"minecraft:is_tamed": {}
+```
+
+mule
+
+#component_groups/minecraft:mule_tamed
+
+```json
+"minecraft:is_tamed": {}
+```
+
+ocelot
+
+#component_groups/minecraft:ocelot_tame
+
+```json
+"minecraft:is_tamed": {}
+```
+
+parrot
+
+#component_groups/minecraft:parrot_tame
+
+```json
+"minecraft:is_tamed": {}
+```
+
+
+
+## item_controllable
+
+
+
+pig
+
+#component_groups/minecraft:pig_saddled
+
+```json
+"minecraft:item_controllable": {
+ "control_items": "carrotOnAStick"
+}
+```
+
+strider
+
+#component_groups/minecraft:strider_saddled
+
+```json
+"minecraft:item_controllable": {
+ "control_items": "warped_fungus_on_a_stick"
+}
+```
+
+
+
+## item_hopper
+
+
+
+hopper_minecart
+
+#component_groups/minecraft:hopper_active
+
+```json
+"minecraft:item_hopper": {}
+```
+
+
+
+## jump.dynamic
+
+
+
+rabbit
+
+
+
+```json
+"minecraft:jump.dynamic": {}
+```
+
+
+
+## jump.static
+
+
+
+allay
+
+
+
+```json
+"minecraft:jump.static": {}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:jump.static": {}
+```
+
+bat
+
+
+
+```json
+"minecraft:jump.static": {}
+```
+
+bee
+
+
+
+```json
+"minecraft:jump.static": {}
+```
+
+blaze
+
+
+
+```json
+"minecraft:jump.static": {}
+```
+
+camel
+
+
+
+```json
+"minecraft:jump.static": {}
+```
+
+cat
+
+
+
+```json
+"minecraft:jump.static": {}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:jump.static": {}
+```
+
+
+
+## knockback_resistance
+
+
+
+armor_stand
+
+
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 1.0
+}
+```
+
+ender_dragon
+
+
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 100,
+ "max": 100
+}
+```
+
+hoglin
+
+
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 0.6
+}
+```
+
+iron_golem
+
+
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 1.0
+}
+```
+
+ravager
+
+
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 0.75
+}
+```
+
+warden
+
+
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 1.0
+}
+```
+
+zoglin
+
+
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 0.6
+}
+```
+
+
+
+## lava_movement
+
+
+
+strider
+
+
+
+```json
+"minecraft:lava_movement": {
+ "value": 0.32
+}
+```
+
+
+
+## leashable
+
+
+
+allay
+
+
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+boat
+
+
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+chest_boat
+
+
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+
+
+## lookat
+
+
+
+enderman
+
+
+
+```json
+"minecraft:lookat": {
+ "search_radius": 64.0,
+ "set_target": true,
+ "look_cooldown": 5.0,
+ "filters": {
+ "all_of": [
+ {
+ "subject": "other",
+ "test": "is_family",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "head",
+ "subject": "other",
+ "operator": "not",
+ "value": "carved_pumpkin"
+ }
+ ]
+ }
+}
+```
+
+
+
+## loot
+
+
+
+armor_stand
+
+
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/armor_stand.json"
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/blaze.json"
+}
+```
+
+boat
+
+
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/boat.json"
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_adult
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/cat.json"
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/spider.json"
+}
+```
+
+chicken
+
+#component_groups/minecraft:chicken_adult
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/chicken.json"
+}
+```
+
+cow
+
+#component_groups/minecraft:cow_adult
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/cow.json"
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/creeper.json"
+}
+```
+
+
+
+## managed_wandering_trader
+
+
+
+wandering_trader
+
+#component_groups/managed
+
+```json
+"minecraft:managed_wandering_trader": {}
+```
+
+
+
+## mark_variant
+
+
+
+bee
+
+#component_groups/countdown_to_perish
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+horse
+
+#component_groups/minecraft:markings_none
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+#component_groups/minecraft:markings_white_details
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+#component_groups/minecraft:markings_white_fields
+
+```json
+"minecraft:mark_variant": {
+ "value": 2
+}
+```
+
+llama
+
+
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+mooshroom
+
+
+
+```json
+"minecraft:mark_variant": {
+ "value": -1
+}
+```
+
+#component_groups/minecraft:mooshroom_fed_nothing
+
+```json
+"minecraft:mark_variant": {
+ "value": -1
+}
+```
+
+#component_groups/minecraft:mooshroom_brown_fed_poppy
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+
+
+## mob_effect
+
+
+
+pufferfish
+
+#component_groups/minecraft:full_puff
+
+```json
+"minecraft:mob_effect": {
+ "effect_range": 0.2,
+ "mob_effect": "poison",
+ "effect_time": 10,
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ }
+ ]
+ }
+}
+```
+
+warden
+
+
+
+```json
+"minecraft:mob_effect": {
+ "effect_range": 20,
+ "effect_time": 13,
+ "mob_effect": "darkness",
+ "cooldown_time": 6,
+ "entity_filter": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "operator": "not",
+ "test": "has_ability",
+ "subject": "other",
+ "value": "invulnerable"
+ }
+ ]
+ }
+}
+```
+
+
+
+## movement
+
+
+
+allay
+
+
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:movement": {
+ "value": 0.23
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:movement": {
+ "value": 0.09
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+
+
+## movement.amphibious
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:movement.amphibious": {
+ "max_turn": 15.0
+}
+```
+
+frog
+
+
+
+```json
+"minecraft:movement.amphibious": {}
+```
+
+turtle
+
+
+
+```json
+"minecraft:movement.amphibious": {
+ "max_turn": 5.0
+}
+```
+
+
+
+## movement.basic
+
+
+
+bat
+
+
+
+```json
+"minecraft:movement.basic": {}
+```
+
+blaze
+
+
+
+```json
+"minecraft:movement.basic": {}
+```
+
+camel
+
+
+
+```json
+"minecraft:movement.basic": {}
+```
+
+cat
+
+
+
+```json
+"minecraft:movement.basic": {}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:movement.basic": {}
+```
+
+chicken
+
+
+
+```json
+"minecraft:movement.basic": {}
+```
+
+cow
+
+
+
+```json
+"minecraft:movement.basic": {}
+```
+
+creeper
+
+
+
+```json
+"minecraft:movement.basic": {}
+```
+
+
+
+## movement.fly
+
+
+
+parrot
+
+
+
+```json
+"minecraft:movement.fly": {}
+```
+
+
+
+## movement.generic
+
+
+
+drowned
+
+
+
+```json
+"minecraft:movement.generic": {}
+```
+
+
+
+## movement.glide
+
+
+
+phantom
+
+
+
+```json
+"minecraft:movement.glide": {
+ "start_speed": 0.1,
+ "speed_when_turning": 0.2
+}
+```
+
+
+
+## movement.hover
+
+
+
+allay
+
+
+
+```json
+"minecraft:movement.hover": {}
+```
+
+bee
+
+
+
+```json
+"minecraft:movement.hover": {}
+```
+
+
+
+## movement.jump
+
+
+
+magma_cube
+
+
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 2.0,
+ 6.0
+ ]
+}
+```
+
+#component_groups/minecraft:slime_calm
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 2.0,
+ 6.0
+ ]
+}
+```
+
+#component_groups/minecraft:slime_aggressive
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 0.667,
+ 2.0
+ ]
+}
+```
+
+slime
+
+
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 0.5,
+ 1.5
+ ]
+}
+```
+
+#component_groups/minecraft:slime_calm
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 0.5,
+ 1.5
+ ]
+}
+```
+
+#component_groups/minecraft:slime_aggressive
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 0.16,
+ 0.5
+ ]
+}
+```
+
+
+
+## movement.skip
+
+
+
+rabbit
+
+
+
+```json
+"minecraft:movement.skip": {}
+```
+
+
+
+## movement.sway
+
+
+
+elder_guardian
+
+
+
+```json
+"minecraft:movement.sway": {}
+```
+
+cod
+
+
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+guardian
+
+
+
+```json
+"minecraft:movement.sway": {}
+```
+
+pufferfish
+
+
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+salmon
+
+
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+tadpole
+
+
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+tropicalfish
+
+
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+
+
+## movement_sound_distance_offset
+
+
+
+warden
+
+
+
+```json
+"minecraft:movement_sound_distance_offset": {
+ "value": 0.55
+}
+```
+
+
+
+## nameable
+
+
+
+allay
+
+
+
+```json
+"minecraft:nameable": {}
+```
+
+armor_stand
+
+
+
+```json
+"minecraft:nameable": {}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:nameable": {}
+```
+
+bat
+
+
+
+```json
+"minecraft:nameable": {}
+```
+
+bee
+
+
+
+```json
+"minecraft:nameable": {}
+```
+
+blaze
+
+
+
+```json
+"minecraft:nameable": {}
+```
+
+camel
+
+
+
+```json
+"minecraft:nameable": {}
+```
+
+cat
+
+
+
+```json
+"minecraft:nameable": {}
+```
+
+
+
+## navigation.climb
+
+
+
+cave_spider
+
+
+
+```json
+"minecraft:navigation.climb": {
+ "can_path_over_water": true
+}
+```
+
+spider
+
+
+
+```json
+"minecraft:navigation.climb": {
+ "can_path_over_water": true
+}
+```
+
+
+
+## navigation.float
+
+
+
+bat
+
+
+
+```json
+"minecraft:navigation.float": {
+ "can_path_over_water": true
+}
+```
+
+ghast
+
+
+
+```json
+"minecraft:navigation.float": {
+ "can_path_over_water": true
+}
+```
+
+
+
+## navigation.fly
+
+
+
+parrot
+
+
+
+```json
+"minecraft:navigation.fly": {
+ "can_path_over_water": true,
+ "can_path_from_air": true
+}
+```
+
+
+
+## navigation.generic
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": true,
+ "can_swim": true,
+ "can_walk": true,
+ "can_sink": false,
+ "avoid_damage_blocks": true
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": true,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": true,
+ "can_sink": false
+}
+```
+
+#component_groups/dolphin_swimming_navigation
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": true,
+ "can_sink": false
+}
+```
+
+#component_groups/dolphin_on_land
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": true,
+ "can_swim": true,
+ "can_walk": true,
+ "can_breach": false,
+ "can_jump": false
+}
+```
+
+drowned
+
+
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_break_doors": true,
+ "can_swim": false,
+ "can_walk": true,
+ "avoid_sun": true
+}
+```
+
+#component_groups/minecraft:hunter_mode
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_break_doors": true,
+ "can_swim": true,
+ "can_walk": true,
+ "avoid_sun": true
+}
+```
+
+#component_groups/minecraft:wander_mode
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_break_doors": true,
+ "can_swim": false,
+ "can_walk": true,
+ "avoid_sun": true
+}
+```
+
+elder_guardian
+
+
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": true
+}
+```
+
+
+
+## navigation.hover
+
+
+
+allay
+
+
+
+```json
+"minecraft:navigation.hover": {
+ "can_path_over_water": true,
+ "can_sink": false,
+ "can_pass_doors": false,
+ "can_path_from_air": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true,
+ "avoid_sun": false
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:navigation.hover": {
+ "can_path_over_water": true,
+ "can_sink": false,
+ "can_pass_doors": false,
+ "can_path_from_air": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true,
+ "avoid_sun": false
+}
+```
+
+
+
+## navigation.walk
+
+
+
+blaze
+
+
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+camel
+
+
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+cat
+
+
+
+```json
+"minecraft:navigation.walk": {
+ "can_float": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true
+}
+```
+
+donkey
+
+
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+enderman
+
+
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": false,
+ "avoid_water": true
+}
+```
+
+
+
+## npc
+
+
+
+npc
+
+
+
+```json
+"minecraft:npc": {
+ "npc_data": {
+ "portrait_offsets": {
+ "translate": [
+ -7,
+ 50,
+ 0
+ ],
+ "scale": [
+ 1.75,
+ 1.75,
+ 1.75
+ ]
+ },
+ "picker_offsets": {
+ "translate": [
+ 0,
+ 20,
+ 0
+ ],
+ "scale": [
+ 1.7,
+ 1.7,
+ 1.7
+ ]
+ },
+ "skin_list": [
+ {
+ "variant": 0
+ },
+ {
+ "variant": 1
+ },
+ {
+ "variant": 2
+ },
+ {
+ "variant": 3
+ },
+ {
+ "variant": 4
+ },
+ {
+ "variant": 5
+ },
+ {
+ "variant": 6
+ },
+ {
+ "variant": 7
+ },
+ {
+ "variant": 8
+ },
+ {
+ "variant": 9
+ },
+ {
+ "variant": 10
+ },
+ {
+ "variant": 11
+ },
+ {
+ "variant": 12
+ },
+ {
+ "variant": 13
+ },
+ {
+ "variant": 14
+ },
+ {
+ "variant": 15
+ },
+ {
+ "variant": 16
+ },
+ {
+ "variant": 17
+ },
+ {
+ "variant": 18
+ },
+ {
+ "variant": 19
+ },
+ {
+ "variant": 25
+ },
+ {
+ "variant": 26
+ },
+ {
+ "variant": 27
+ },
+ {
+ "variant": 28
+ },
+ {
+ "variant": 29
+ },
+ {
+ "variant": 30
+ },
+ {
+ "variant": 31
+ },
+ {
+ "variant": 32
+ },
+ {
+ "variant": 33
+ },
+ {
+ "variant": 34
+ },
+ {
+ "variant": 20
+ },
+ {
+ "variant": 21
+ },
+ {
+ "variant": 22
+ },
+ {
+ "variant": 23
+ },
+ {
+ "variant": 24
+ },
+ {
+ "variant": 35
+ },
+ {
+ "variant": 36
+ },
+ {
+ "variant": 37
+ },
+ {
+ "variant": 38
+ },
+ {
+ "variant": 39
+ },
+ {
+ "variant": 40
+ },
+ {
+ "variant": 41
+ },
+ {
+ "variant": 42
+ },
+ {
+ "variant": 43
+ },
+ {
+ "variant": 44
+ },
+ {
+ "variant": 50
+ },
+ {
+ "variant": 51
+ },
+ {
+ "variant": 52
+ },
+ {
+ "variant": 53
+ },
+ {
+ "variant": 54
+ },
+ {
+ "variant": 45
+ },
+ {
+ "variant": 46
+ },
+ {
+ "variant": 47
+ },
+ {
+ "variant": 48
+ },
+ {
+ "variant": 49
+ },
+ {
+ "variant": 55
+ },
+ {
+ "variant": 56
+ },
+ {
+ "variant": 57
+ },
+ {
+ "variant": 58
+ },
+ {
+ "variant": 59
+ }
+ ]
+ }
+}
+```
+
+
+
+## on_death
+
+
+
+ender_dragon
+
+
+
+```json
+"minecraft:on_death": {
+ "event": "minecraft:start_death",
+ "target": "self"
+}
+```
+
+
+
+## on_friendly_anger
+
+
+
+panda
+
+#component_groups/minecraft:panda_aggressive
+
+```json
+"minecraft:on_friendly_anger": {
+ "event": "minecraft:on_anger",
+ "target": "self"
+}
+```
+
+polar_bear
+
+#component_groups/minecraft:adult_wild
+
+```json
+"minecraft:on_friendly_anger": {
+ "event": "minecraft:on_anger",
+ "target": "self"
+}
+```
+
+trader_llama
+
+#component_groups/minecraft:llama_wandering_trader
+
+```json
+"minecraft:on_friendly_anger": {
+ "event": "minecraft:defend_wandering_trader",
+ "target": "self"
+}
+```
+
+
+
+## on_hurt
+
+
+
+blaze
+
+
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:on_hurt_event",
+ "target": "self"
+}
+```
+
+ender_crystal
+
+
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:crystal_explode",
+ "target": "self"
+}
+```
+
+pillager
+
+#component_groups/minecraft:illager_squad_captain
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+#component_groups/minecraft:patrol_captain
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+#component_groups/minecraft:patrol_follower
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+
+
+## on_hurt_by_player
+
+
+
+blaze
+
+
+
+```json
+"minecraft:on_hurt_by_player": {
+ "event": "minecraft:on_hurt_event",
+ "target": "self"
+}
+```
+
+pillager
+
+#component_groups/minecraft:illager_squad_captain
+
+```json
+"minecraft:on_hurt_by_player": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+#component_groups/minecraft:patrol_captain
+
+```json
+"minecraft:on_hurt_by_player": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+#component_groups/minecraft:patrol_follower
+
+```json
+"minecraft:on_hurt_by_player": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+
+
+## on_start_landing
+
+
+
+ender_dragon
+
+
+
+```json
+"minecraft:on_start_landing": {
+ "event": "minecraft:start_land",
+ "target": "self"
+}
+```
+
+
+
+## on_start_takeoff
+
+
+
+ender_dragon
+
+
+
+```json
+"minecraft:on_start_takeoff": {
+ "event": "minecraft:start_fly",
+ "target": "self"
+}
+```
+
+
+
+## on_target_acquired
+
+
+
+bee
+
+
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "attacked",
+ "target": "self"
+}
+```
+
+cave_spider
+
+#component_groups/minecraft:spider_neutral
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry"
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "become_angry",
+ "target": "self"
+}
+```
+
+#component_groups/dolphin_angry
+
+```json
+"minecraft:on_target_acquired": {}
+```
+
+drowned
+
+
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:has_target",
+ "target": "self"
+}
+```
+
+enderman
+
+#component_groups/minecraft:enderman_calm
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry",
+ "target": "self"
+}
+```
+
+hoglin
+
+#component_groups/minecraft:hoglin_adult
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "become_angry_event",
+ "target": "self"
+}
+```
+
+llama
+
+
+
+```json
+"minecraft:on_target_acquired": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "target",
+ "value": "wolf"
+ },
+ {
+ "test": "has_component",
+ "subject": "target",
+ "operator": "!=",
+ "value": "minecraft:is_tamed"
+ }
+ ]
+ },
+ "event": "minecraft:mad_at_wolf",
+ "target": "self"
+}
+```
+
+
+
+## on_target_escape
+
+
+
+creeper
+
+
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:stop_exploding",
+ "target": "self"
+}
+```
+
+#component_groups/minecraft:forced_exploding
+
+```json
+"minecraft:on_target_escape": {}
+```
+
+#component_groups/minecraft:forced_charged_exploding
+
+```json
+"minecraft:on_target_escape": {}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:on_target_escape": {
+ "target": "self"
+}
+```
+
+drowned
+
+
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:lost_target",
+ "target": "self"
+}
+```
+
+llama
+
+
+
+```json
+"minecraft:on_target_escape": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "target",
+ "value": "wolf"
+ },
+ {
+ "test": "has_component",
+ "subject": "target",
+ "operator": "!=",
+ "value": "minecraft:is_tamed"
+ }
+ ]
+ },
+ "event": "minecraft:on_calm",
+ "target": "self"
+}
+```
+
+magma_cube
+
+
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:become_calm",
+ "target": "self"
+}
+```
+
+panda
+
+#component_groups/minecraft:panda_adult
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+}
+```
+
+
+
+## on_wake_with_owner
+
+
+
+cat
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:on_wake_with_owner": {
+ "event": "minecraft:pet_slept_with_owner",
+ "target": "self"
+}
+```
+
+
+
+## out_of_control
+
+
+
+boat
+
+#component_groups/minecraft:above_bubble_column_down
+
+```json
+"minecraft:out_of_control": {}
+```
+
+#component_groups/minecraft:above_bubble_column_up
+
+```json
+"minecraft:out_of_control": {}
+```
+
+chest_boat
+
+#component_groups/minecraft:above_bubble_column_down
+
+```json
+"minecraft:out_of_control": {}
+```
+
+#component_groups/minecraft:above_bubble_column_up
+
+```json
+"minecraft:out_of_control": {}
+```
+
+
+
+## peek
+
+
+
+shulker
+
+
+
+```json
+"minecraft:peek": {
+ "on_open": {
+ "event": "minecraft:on_open"
+ },
+ "on_close": {
+ "event": "minecraft:on_close"
+ },
+ "on_target_open": {
+ "event": "minecraft:on_open"
+ }
+}
+```
+
+
+
+## persist_sit
+
+
+
+camel
+
+#component_groups/minecraft:camel_sitting
+
+```json
+"minecraft:persist_sit": {}
+```
+
+
+
+## persistent
+
+
+
+armor_stand
+
+
+
+```json
+"minecraft:persistent": {}
+```
+
+ender_dragon
+
+
+
+```json
+"minecraft:persistent": {}
+```
+
+evocation_illager
+
+
+
+```json
+"minecraft:persistent": {}
+```
+
+#component_groups/minecraft:raid_persistence
+
+```json
+"minecraft:persistent": {}
+```
+
+iron_golem
+
+
+
+```json
+"minecraft:persistent": {}
+```
+
+npc
+
+
+
+```json
+"minecraft:persistent": {}
+```
+
+pillager
+
+#component_groups/minecraft:raid_persistence
+
+```json
+"minecraft:persistent": {}
+```
+
+ravager
+
+#component_groups/minecraft:raid_persistence
+
+```json
+"minecraft:persistent": {}
+```
+
+
+
+## physics
+
+
+
+allay
+
+
+
+```json
+"minecraft:physics": {
+ "has_gravity": false
+}
+```
+
+area_effect_cloud
+
+
+
+```json
+"minecraft:physics": {
+ "has_collision": false
+}
+```
+
+armor_stand
+
+
+
+```json
+"minecraft:physics": {}
+```
+
+arrow
+
+
+
+```json
+"minecraft:physics": {}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:physics": {}
+```
+
+bat
+
+
+
+```json
+"minecraft:physics": {}
+```
+
+bee
+
+
+
+```json
+"minecraft:physics": {}
+```
+
+blaze
+
+
+
+```json
+"minecraft:physics": {}
+```
+
+
+
+## player.exhaustion
+
+
+
+player
+
+
+
+```json
+"minecraft:player.exhaustion": {
+ "value": 0,
+ "max": 20
+}
+```
+
+
+
+## player.experience
+
+
+
+player
+
+
+
+```json
+"minecraft:player.experience": {
+ "value": 0,
+ "max": 1
+}
+```
+
+
+
+## player.level
+
+
+
+player
+
+
+
+```json
+"minecraft:player.level": {
+ "value": 0,
+ "max": 24791
+}
+```
+
+
+
+## player.saturation
+
+
+
+player
+
+
+
+```json
+"minecraft:player.saturation": {
+ "value": 5,
+ "max": 20
+}
+```
+
+
+
+## preferred_path
+
+
+
+iron_golem
+
+
+
+```json
+"minecraft:preferred_path": {
+ "max_fall_blocks": 1,
+ "jump_cost": 5,
+ "default_block_cost": 1.5,
+ "preferred_path_blocks": [
+ {
+ "cost": 0,
+ "blocks": [
+ "grass_path"
+ ]
+ },
+ {
+ "cost": 1,
+ "blocks": [
+ "cobblestone",
+ "stone",
+ "stonebrick",
+ "sandstone",
+ "mossy_cobblestone",
+ "stone_slab",
+ "stone_slab2",
+ "stone_slab3",
+ "stone_slab4",
+ "double_stone_slab",
+ "double_stone_slab2",
+ "double_stone_slab3",
+ "double_stone_slab4",
+ "wooden_slab",
+ "double_wooden_slab",
+ "planks",
+ "brick_block",
+ "nether_brick",
+ "red_nether_brick",
+ "end_bricks",
+ "red_sandstone",
+ "stained_glass",
+ "glass",
+ "glowstone",
+ "prismarine",
+ "emerald_block",
+ "diamond_block",
+ "lapis_block",
+ "gold_block",
+ "redstone_block",
+ "purple_glazed_terracotta",
+ "white_glazed_terracotta",
+ "orange_glazed_terracotta",
+ "magenta_glazed_terracotta",
+ "light_blue_glazed_terracotta",
+ "yellow_glazed_terracotta",
+ "lime_glazed_terracotta",
+ "pink_glazed_terracotta",
+ "gray_glazed_terracotta",
+ "silver_glazed_terracotta",
+ "cyan_glazed_terracotta",
+ "blue_glazed_terracotta",
+ "brown_glazed_terracotta",
+ "green_glazed_terracotta",
+ "red_glazed_terracotta",
+ "black_glazed_terracotta"
+ ]
+ },
+ {
+ "cost": 50,
+ "blocks": [
+ "bed",
+ "lectern",
+ "composter",
+ "grindstone",
+ "blast_furnace",
+ "smoker",
+ "fletching_table",
+ "cartography_table",
+ "brewing_stand",
+ "smithing_table",
+ "cauldron",
+ "barrel",
+ "loom",
+ "stonecutter"
+ ]
+ }
+ ]
+}
+```
+
+villager_v2
+
+#component_groups/baby
+
+```json
+"minecraft:preferred_path": {
+ "max_fall_blocks": 1,
+ "jump_cost": 5,
+ "default_block_cost": 1.5,
+ "preferred_path_blocks": [
+ {
+ "cost": 0,
+ "blocks": [
+ "grass_path"
+ ]
+ },
+ {
+ "cost": 1,
+ "blocks": [
+ "cobblestone",
+ "stone",
+ "stonebrick",
+ "sandstone",
+ "mossy_cobblestone",
+ "stone_slab",
+ "stone_slab2",
+ "stone_slab3",
+ "stone_slab4",
+ "double_stone_slab",
+ "double_stone_slab2",
+ "double_stone_slab3",
+ "double_stone_slab4",
+ "wooden_slab",
+ "double_wooden_slab",
+ "planks",
+ "brick_block",
+ "nether_brick",
+ "red_nether_brick",
+ "end_bricks",
+ "red_sandstone",
+ "stained_glass",
+ "glass",
+ "glowstone",
+ "prismarine",
+ "emerald_block",
+ "diamond_block",
+ "lapis_block",
+ "gold_block",
+ "redstone_block",
+ "purple_glazed_terracotta",
+ "white_glazed_terracotta",
+ "orange_glazed_terracotta",
+ "magenta_glazed_terracotta",
+ "light_blue_glazed_terracotta",
+ "yellow_glazed_terracotta",
+ "lime_glazed_terracotta",
+ "pink_glazed_terracotta",
+ "gray_glazed_terracotta",
+ "silver_glazed_terracotta",
+ "cyan_glazed_terracotta",
+ "blue_glazed_terracotta",
+ "brown_glazed_terracotta",
+ "green_glazed_terracotta",
+ "red_glazed_terracotta",
+ "black_glazed_terracotta"
+ ]
+ },
+ {
+ "cost": 50,
+ "blocks": [
+ "bed",
+ "lectern",
+ "composter",
+ "grindstone",
+ "blast_furnace",
+ "smoker",
+ "fletching_table",
+ "cartography_table",
+ "brewing_stand",
+ "smithing_table",
+ "cauldron",
+ "barrel",
+ "loom",
+ "stonecutter"
+ ]
+ }
+ ]
+}
+```
+
+#component_groups/adult
+
+```json
+"minecraft:preferred_path": {
+ "max_fall_blocks": 1,
+ "jump_cost": 20,
+ "default_block_cost": 3,
+ "preferred_path_blocks": [
+ {
+ "cost": 0,
+ "blocks": [
+ "grass_path"
+ ]
+ },
+ {
+ "cost": 1,
+ "blocks": [
+ "cobblestone",
+ "stone",
+ "stonebrick",
+ "sandstone",
+ "mossy_cobblestone",
+ "stone_slab",
+ "stone_slab2",
+ "stone_slab3",
+ "stone_slab4",
+ "double_stone_slab",
+ "double_stone_slab2",
+ "double_stone_slab3",
+ "double_stone_slab4",
+ "wooden_slab",
+ "double_wooden_slab",
+ "planks",
+ "brick_block",
+ "nether_brick",
+ "red_nether_brick",
+ "end_bricks",
+ "red_sandstone",
+ "stained_glass",
+ "glass",
+ "glowstone",
+ "prismarine",
+ "emerald_block",
+ "diamond_block",
+ "lapis_block",
+ "gold_block",
+ "redstone_block",
+ "purple_glazed_terracotta",
+ "white_glazed_terracotta",
+ "orange_glazed_terracotta",
+ "magenta_glazed_terracotta",
+ "light_blue_glazed_terracotta",
+ "yellow_glazed_terracotta",
+ "lime_glazed_terracotta",
+ "pink_glazed_terracotta",
+ "gray_glazed_terracotta",
+ "silver_glazed_terracotta",
+ "cyan_glazed_terracotta",
+ "blue_glazed_terracotta",
+ "brown_glazed_terracotta",
+ "green_glazed_terracotta",
+ "red_glazed_terracotta",
+ "black_glazed_terracotta"
+ ]
+ },
+ {
+ "cost": 50,
+ "blocks": [
+ "bed",
+ "lectern",
+ "composter",
+ "grindstone",
+ "blast_furnace",
+ "smoker",
+ "fletching_table",
+ "cartography_table",
+ "brewing_stand",
+ "smithing_table",
+ "cauldron",
+ "barrel",
+ "loom",
+ "stonecutter"
+ ]
+ }
+ ]
+}
+```
+
+warden
+
+
+
+```json
+"minecraft:preferred_path": {
+ "max_fall_blocks": 20
+}
+```
+
+
+
+## projectile
+
+
+
+arrow
+
+
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": [
+ 1,
+ 4
+ ],
+ "knockback": true,
+ "semi_random_diff_damage": false,
+ "destroy_on_hit": true
+ },
+ "stick_in_ground": {
+ "shake_time": 0.35
+ },
+ "arrow_effect": {}
+ },
+ "hit_sound": "bow.hit",
+ "power": 1.6,
+ "gravity": 0.05,
+ "uncertainty_base": 16,
+ "uncertainty_multiplier": 4,
+ "anchor": 1,
+ "should_bounce": true,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ]
+}
+```
+
+#component_groups/minecraft:hard_arrow
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": [
+ 1,
+ 5
+ ],
+ "knockback": true,
+ "semi_random_diff_damage": false,
+ "destroy_on_hit": true
+ },
+ "stick_in_ground": {
+ "shake_time": 0.35
+ },
+ "arrow_effect": {}
+ },
+ "hit_sound": "bow.hit",
+ "power": 1.6,
+ "gravity": 0.05,
+ "uncertainty_base": 16,
+ "uncertainty_multiplier": 4,
+ "anchor": 1,
+ "should_bounce": true,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ]
+}
+```
+
+#component_groups/minecraft:player_arrow
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 1,
+ "knockback": true,
+ "semi_random_diff_damage": true,
+ "destroy_on_hit": true,
+ "max_critical_damage": 10,
+ "min_critical_damage": 9,
+ "power_multiplier": 0.97
+ },
+ "stick_in_ground": {
+ "shake_time": 0.35
+ },
+ "arrow_effect": {}
+ },
+ "hit_sound": "bow.hit",
+ "power": 5.0,
+ "gravity": 0.05,
+ "uncertainty_base": 1,
+ "uncertainty_multiplier": 0,
+ "anchor": 1,
+ "should_bounce": true,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ]
+}
+```
+
+dragon_fireball
+
+
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "spawn_aoe_cloud": {
+ "radius": 6.0,
+ "radius_on_use": 0,
+ "potion": 23,
+ "particle": "dragonbreath",
+ "duration": 120,
+ "color": [
+ 220,
+ 0,
+ 239
+ ],
+ "affect_owner": false,
+ "reapplication_delay": 20
+ },
+ "remove_on_hit": {}
+ },
+ "power": 1.3,
+ "gravity": 0.0,
+ "inertia": 1,
+ "anchor": 2,
+ "offset": [
+ 0,
+ 0.5,
+ 0
+ ],
+ "semi_random_diff_damage": true,
+ "uncertainty_base": 10.0,
+ "reflect_on_hurt": true,
+ "hit_sound": "explode"
+}
+```
+
+egg
+
+
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 0,
+ "knockback": true,
+ "destroy_on_hit": true
+ },
+ "spawn_chance": {
+ "first_spawn_chance": 8,
+ "second_spawn_chance": 32,
+ "first_spawn_count": 1,
+ "second_spawn_count": 4,
+ "spawn_definition": "minecraft:chicken",
+ "spawn_baby": true
+ },
+ "remove_on_hit": {},
+ "particle_on_hit": {
+ "particle_type": "iconcrack",
+ "num_particles": 6,
+ "on_entity_hit": true,
+ "on_other_hit": true
+ }
+ },
+ "power": 1.5,
+ "gravity": 0.03,
+ "angle_offset": 0.0
+}
+```
+
+ender_pearl
+
+
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "teleport_owner": {},
+ "spawn_chance": {
+ "first_spawn_percent_chance": 5.0,
+ "first_spawn_count": 1,
+ "spawn_definition": "minecraft:endermite"
+ },
+ "remove_on_hit": {}
+ },
+ "power": 1.5,
+ "gravity": 0.025,
+ "angle_offset": 0.0,
+ "inertia": 1,
+ "liquid_inertia": 1
+}
+```
+
+#component_groups/minecraft:no_spawn
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "teleport_owner": {},
+ "remove_on_hit": {}
+ },
+ "power": 1.5,
+ "gravity": 0.025,
+ "angle_offset": 0.0,
+ "inertia": 1,
+ "liquid_inertia": 1
+}
+```
+
+fireball
+
+
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 6,
+ "knockback": false,
+ "semi_random_diff_damage": false
+ },
+ "definition_event": {
+ "affect_projectile": true,
+ "event_trigger": {
+ "event": "minecraft:explode",
+ "target": "self"
+ }
+ }
+ },
+ "power": 1.6,
+ "gravity": 0.0,
+ "inertia": 1,
+ "liquid_inertia": 1,
+ "uncertainty_base": 0,
+ "uncertainty_multiplier": 0,
+ "anchor": 2,
+ "offset": [
+ 0,
+ -1.5,
+ 0
+ ],
+ "reflect_on_hurt": true,
+ "catch_fire": true
+}
+```
+
+
+
+## pushable
+
+
+
+allay
+
+
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+armor_stand
+
+
+
+```json
+"minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": true
+}
+```
+
+arrow
+
+
+
+```json
+"minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": true
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+boat
+
+
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_standing
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+
+
+## raid_trigger
+
+
+
+player
+
+#component_groups/minecraft:raid_trigger
+
+```json
+"minecraft:raid_trigger": {
+ "triggered_event": {
+ "event": "minecraft:remove_raid_trigger",
+ "target": "self"
+ }
+}
+```
+
+
+
+## rail_movement
+
+
+
+chest_minecart
+
+
+
+```json
+"minecraft:rail_movement": {}
+```
+
+command_block_minecart
+
+
+
+```json
+"minecraft:rail_movement": {}
+```
+
+hopper_minecart
+
+
+
+```json
+"minecraft:rail_movement": {}
+```
+
+minecart
+
+
+
+```json
+"minecraft:rail_movement": {}
+```
+
+tnt_minecart
+
+
+
+```json
+"minecraft:rail_movement": {}
+```
+
+
+
+## rail_sensor
+
+
+
+command_block_minecart
+
+#component_groups/minecraft:command_block_active
+
+```json
+"minecraft:rail_sensor": {
+ "check_block_types": true,
+ "eject_on_activate": false,
+ "eject_on_deactivate": false,
+ "tick_command_block_on_activate": true,
+ "tick_command_block_on_deactivate": false,
+ "on_deactivate": {
+ "event": "minecraft:command_block_deactivate"
+ }
+}
+```
+
+#component_groups/minecraft:command_block_inactive
+
+```json
+"minecraft:rail_sensor": {
+ "check_block_types": false,
+ "eject_on_activate": false,
+ "eject_on_deactivate": false,
+ "tick_command_block_on_activate": true,
+ "tick_command_block_on_deactivate": false,
+ "on_activate": {
+ "event": "minecraft:command_block_activate"
+ }
+}
+```
+
+hopper_minecart
+
+#component_groups/minecraft:hopper_active
+
+```json
+"minecraft:rail_sensor": {
+ "on_activate": {
+ "event": "minecraft:hopper_deactivate"
+ }
+}
+```
+
+#component_groups/minecraft:hopper_inactive
+
+```json
+"minecraft:rail_sensor": {
+ "on_deactivate": {
+ "event": "minecraft:hopper_activate"
+ }
+}
+```
+
+minecart
+
+
+
+```json
+"minecraft:rail_sensor": {
+ "eject_on_activate": true
+}
+```
+
+tnt_minecart
+
+#component_groups/minecraft:primed_tnt
+
+```json
+"minecraft:rail_sensor": {}
+```
+
+#component_groups/minecraft:instant_explode_tnt
+
+```json
+"minecraft:rail_sensor": {}
+```
+
+#component_groups/minecraft:inactive
+
+```json
+"minecraft:rail_sensor": {
+ "on_activate": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_game_rule",
+ "domain": "tntexplodes",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "event": "minecraft:on_prime"
+ }
+}
+```
+
+
+
+## ravager_blocked
+
+
+
+ravager
+
+
+
+```json
+"minecraft:ravager_blocked": {
+ "knockback_strength": 3.0,
+ "reaction_choices": [
+ {
+ "weight": 1,
+ "value": {
+ "event": "minecraft:become_stunned",
+ "target": "self"
+ }
+ },
+ {
+ "weight": 1
+ }
+ ]
+}
+```
+
+
+
+## rideable
+
+
+
+boat
+
+
+
+```json
+"minecraft:rideable": {
+ "seat_count": 2,
+ "passenger_max_width": 1.375,
+ "interact_text": "action.interact.ride.boat",
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.0,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 1,
+ "rotate_rider_by": -90,
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ 0.2,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "q.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ -0.6,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "q.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ }
+ ]
+}
+```
+
+#component_groups/minecraft:can_ride_default
+
+```json
+"minecraft:rideable": {
+ "seat_count": 2,
+ "passenger_max_width": 1.375,
+ "interact_text": "action.interact.ride.boat",
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.0,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 1,
+ "rotate_rider_by": -90,
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ 0.2,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "q.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ -0.6,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "q.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ }
+ ]
+}
+```
+
+#component_groups/minecraft:can_ride_bamboo
+
+```json
+"minecraft:rideable": {
+ "seat_count": 2,
+ "passenger_max_width": 1.375,
+ "interact_text": "action.interact.ride.boat",
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.0,
+ 0.1,
+ 0.0
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 1,
+ "rotate_rider_by": -90,
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ 0.2,
+ 0.1,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "q.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ -0.6,
+ 0.1,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "q.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ }
+ ]
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_adult
+
+```json
+"minecraft:rideable": {
+ "seat_count": 2,
+ "crouching_skip_interact": true,
+ "pull_in_entities": true,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": [
+ {
+ "min_rider_count": 0,
+ "max_rider_count": 2,
+ "position": [
+ 0.0,
+ 1.905,
+ 0.5
+ ]
+ },
+ {
+ "min_rider_count": 1,
+ "max_rider_count": 2,
+ "position": [
+ 0.0,
+ 1.905,
+ -0.5
+ ]
+ }
+ ]
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_wild
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.35,
+ 0.0
+ ]
+ }
+}
+```
+
+cave_spider
+
+
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.3,
+ 0.0
+ ]
+ }
+}
+```
+
+#component_groups/minecraft:spider_jockey
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "skeleton"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.3,
+ -0.1
+ ]
+ }
+}
+```
+
+#component_groups/minecraft:spider_stray_jockey
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "skeleton"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.3,
+ -0.1
+ ]
+ }
+}
+```
+
+
+
+## scale
+
+
+
+axolotl
+
+#component_groups/axolotl_baby
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+bee
+
+#component_groups/bee_baby
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+camel
+
+#component_groups/minecraft:camel_baby
+
+```json
+"minecraft:scale": {
+ "value": 0.45
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_baby
+
+```json
+"minecraft:scale": {
+ "value": 0.4
+}
+```
+
+#component_groups/minecraft:cat_adult
+
+```json
+"minecraft:scale": {
+ "value": 0.8
+}
+```
+
+chicken
+
+#component_groups/minecraft:chicken_baby
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+cow
+
+#component_groups/minecraft:cow_baby
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+dolphin
+
+#component_groups/dolphin_baby
+
+```json
+"minecraft:scale": {
+ "value": 0.65
+}
+```
+
+
+
+## scale_by_age
+
+
+
+donkey
+
+#component_groups/minecraft:donkey_baby
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+horse
+
+#component_groups/minecraft:horse_baby
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+mule
+
+#component_groups/minecraft:mule_baby
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+skeleton_horse
+
+#component_groups/minecraft:skeleton_horse_baby
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+zombie_horse
+
+#component_groups/minecraft:horse_baby
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+
+
+## scheduler
+
+
+
+fox
+
+
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 0,
+ "scheduled_events": [
+ {
+ "filters": [
+ {
+ "test": "is_sleeping",
+ "value": true
+ }
+ ],
+ "event": "minecraft:ambient_sleep"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": false
+ },
+ {
+ "test": "distance_to_nearest_player",
+ "operator": ">",
+ "value": 16
+ }
+ ]
+ },
+ "event": "minecraft:ambient_night"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_sleeping",
+ "value": false
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ },
+ {
+ "test": "distance_to_nearest_player",
+ "operator": "<=",
+ "value": 16
+ }
+ ]
+ }
+ ]
+ },
+ "event": "minecraft:ambient_normal"
+ }
+ ]
+}
+```
+
+villager_v2
+
+#component_groups/work_schedule
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 8000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_pro_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 8000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 10000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_gather_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 10000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 11000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_pro_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 11000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+#component_groups/basic_schedule
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 8000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_wander_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 8000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 10000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_gather_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 10000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 11000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_wander_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 11000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+#component_groups/child_schedule
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 11000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_play_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 11000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+
+
+## shareables
+
+
+
+drowned
+
+
+
+```json
+"minecraft:shareables": {
+ "singular_pickup": true,
+ "items": [
+ {
+ "item": "minecraft:nautilus_shell",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:trident",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+fox
+
+
+
+```json
+"minecraft:shareables": {
+ "all_items": true,
+ "all_items_max_amount": 1,
+ "items": [
+ {
+ "item": "minecraft:apple",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:appleEnchanted",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:baked_potato",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:beef",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:beetroot",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:beetroot_soup",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:bread",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:carrot",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:chicken",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:chorus_fruit",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:clownfish",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_beef",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_chicken",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_fish",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_porkchop",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_rabbit",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_salmon",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cookie",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:dried_kelp",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:fish",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:golden_apple",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:golden_carrot",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:melon",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:mushroom_stew",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:muttonCooked",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:muttonRaw",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:poisonous_potato",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:porkchop",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:potato",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:pufferfish",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:pumpkin_pie",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:rabbit",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:rabbit_stew",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:rotten_flesh",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:salmon",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:spider_eye",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:sweet_berries",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:glow_berries",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:suspicious_stew",
+ "priority": 0,
+ "max_amount": 1
+ }
+ ]
+}
+```
+
+husk
+
+
+
+```json
+"minecraft:shareables": {
+ "singular_pickup": true,
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+piglin
+
+
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:golden_sword",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_axe",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_hoe",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_pickaxe",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_shovel",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_rail",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_apple",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:appleEnchanted",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_carrot",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:gold_block",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:gold_nugget",
+ "priority": 2,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:raw_gold",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:gold_ore",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:nether_gold_ore",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:deepslate_gold_ore",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:raw_gold_block",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:gilded_blackstone",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:horsearmorgold",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:crossbow",
+ "priority": 2
+ },
+ {
+ "item": "minecraft:porkchop",
+ "consume_item": true,
+ "priority": 3,
+ "max_amount": 64
+ },
+ {
+ "item": "minecraft:cooked_porkchop",
+ "consume_item": true,
+ "priority": 3,
+ "max_amount": 64
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:2",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:3",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:4",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:5",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:elytra",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:bell",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:clock",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:speckled_melon",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:light_weighted_pressure_plate",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_sword",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:shield",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:gold_ingot",
+ "priority": 1,
+ "pickup_limit": 1,
+ "admire": true,
+ "barter": true
+ }
+ ]
+}
+```
+
+pillager
+
+
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:banner:15",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ }
+ ]
+}
+```
+
+skeleton
+
+
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:bow",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+stray
+
+
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:bow",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+villager
+
+#component_groups/behavior_peasant
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:bread",
+ "want_amount": 3,
+ "surplus_amount": 6,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:carrot",
+ "want_amount": 60,
+ "surplus_amount": 4,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:potato",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:beetroot",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:wheat_seeds",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:beetroot_seeds",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:wheat",
+ "want_amount": 45,
+ "surplus_amount": 18,
+ "craft_into": "minecraft:bread",
+ "stored_in_inventory": true
+ }
+ ]
+}
+```
+
+
+
+## shooter
+
+
+
+blaze
+
+#component_groups/ranged_mode
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:small_fireball"
+}
+```
+
+drowned
+
+#component_groups/minecraft:ranged_mode
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:thrown_trident"
+}
+```
+
+ender_dragon
+
+#component_groups/dragon_flying
+
+```json
+"minecraft:shooter": {
+ "type": "dragonfireball",
+ "def": "minecraft:dragon_fireball"
+}
+```
+
+ghast
+
+
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:fireball"
+}
+```
+
+llama
+
+
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:llama_spit"
+}
+```
+
+piglin
+
+#component_groups/ranged_unit
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:arrow"
+}
+```
+
+pillager
+
+#component_groups/minecraft:ranged_attack
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:arrow"
+}
+```
+
+shulker
+
+
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:shulker_bullet"
+}
+```
+
+
+
+## sittable
+
+
+
+cat
+
+#component_groups/minecraft:cat_tame
+
+```json
+"minecraft:sittable": {}
+```
+
+ocelot
+
+#component_groups/minecraft:ocelot_tame
+
+```json
+"minecraft:sittable": {}
+```
+
+parrot
+
+#component_groups/minecraft:parrot_tame
+
+```json
+"minecraft:sittable": {}
+```
+
+wolf
+
+#component_groups/minecraft:wolf_tame
+
+```json
+"minecraft:sittable": {}
+```
+
+
+
+## skin_id
+
+
+
+villager_v2
+
+#component_groups/villager_skin_0
+
+```json
+"minecraft:skin_id": {
+ "value": 0
+}
+```
+
+#component_groups/villager_skin_1
+
+```json
+"minecraft:skin_id": {
+ "value": 1
+}
+```
+
+#component_groups/villager_skin_2
+
+```json
+"minecraft:skin_id": {
+ "value": 2
+}
+```
+
+zombie_villager_v2
+
+#component_groups/villager_skin_0
+
+```json
+"minecraft:skin_id": {
+ "value": 0
+}
+```
+
+#component_groups/villager_skin_1
+
+```json
+"minecraft:skin_id": {
+ "value": 1
+}
+```
+
+#component_groups/villager_skin_2
+
+```json
+"minecraft:skin_id": {
+ "value": 2
+}
+```
+
+
+
+## spawn_entity
+
+
+
+chicken
+
+#component_groups/minecraft:chicken_adult
+
+```json
+"minecraft:spawn_entity": {
+ "entities": {
+ "min_wait_time": 300,
+ "max_wait_time": 600,
+ "spawn_sound": "plop",
+ "spawn_item": "egg",
+ "filters": {
+ "test": "rider_count",
+ "subject": "self",
+ "operator": "==",
+ "value": 0
+ }
+ }
+}
+```
+
+ocelot
+
+#component_groups/minecraft:wild_child_ocelot_spawn
+
+```json
+"minecraft:spawn_entity": {
+ "entities": {
+ "filters": [
+ {
+ "test": "random_chance",
+ "value": 7
+ }
+ ],
+ "min_wait_time": 0,
+ "max_wait_time": 0,
+ "num_to_spawn": 2,
+ "single_use": true,
+ "spawn_entity": "minecraft:ocelot",
+ "spawn_event": "minecraft:entity_born",
+ "spawn_method": "born",
+ "spawn_sound": ""
+ }
+}
+```
+
+sniffer
+
+#component_groups/sniffer_pregnant
+
+```json
+"minecraft:spawn_entity": {
+ "entities": {
+ "min_wait_time": 0,
+ "max_wait_time": 0,
+ "spawn_sound": "plop",
+ "spawn_item": "sniffer_egg",
+ "spawn_item_event": {
+ "event": "on_egg_spawned",
+ "target": "self"
+ },
+ "single_use": true
+ }
+}
+```
+
+wandering_trader
+
+
+
+```json
+"minecraft:spawn_entity": {
+ "entities": [
+ {
+ "min_wait_time": 0,
+ "max_wait_time": 0,
+ "spawn_entity": "trader_llama",
+ "spawn_event": "minecraft:from_wandering_trader",
+ "single_use": true,
+ "num_to_spawn": 2,
+ "should_leash": true
+ }
+ ]
+}
+```
+
+
+
+## spell_effects
+
+
+
+player
+
+#component_groups/minecraft:add_bad_omen
+
+```json
+"minecraft:spell_effects": {
+ "add_effects": [
+ {
+ "effect": "bad_omen",
+ "duration": 6000,
+ "visible": false,
+ "display_on_screen_animation": true
+ }
+ ]
+}
+```
+
+#component_groups/minecraft:clear_bad_omen_spell_effect
+
+```json
+"minecraft:spell_effects": {}
+```
+
+#component_groups/minecraft:raid_trigger
+
+```json
+"minecraft:spell_effects": {
+ "remove_effects": "bad_omen"
+}
+```
+
+zombie_villager
+
+#component_groups/to_villager
+
+```json
+"minecraft:spell_effects": {
+ "add_effects": [
+ {
+ "effect": "strength",
+ "duration": 100
+ },
+ {
+ "effect": "heal",
+ "duration": 100
+ }
+ ],
+ "remove_effects": "weakness"
+}
+```
+
+zombie_villager_v2
+
+#component_groups/to_villager
+
+```json
+"minecraft:spell_effects": {
+ "add_effects": [
+ {
+ "effect": "strength",
+ "duration": 100
+ },
+ {
+ "effect": "heal",
+ "duration": 100
+ }
+ ],
+ "remove_effects": "weakness"
+}
+```
+
+
+
+## strength
+
+
+
+llama
+
+#component_groups/minecraft:strength_1
+
+```json
+"minecraft:strength": {
+ "value": 1,
+ "max": 5
+}
+```
+
+#component_groups/minecraft:strength_2
+
+```json
+"minecraft:strength": {
+ "value": 2,
+ "max": 5
+}
+```
+
+#component_groups/minecraft:strength_3
+
+```json
+"minecraft:strength": {
+ "value": 3,
+ "max": 5
+}
+```
+
+trader_llama
+
+#component_groups/minecraft:strength_1
+
+```json
+"minecraft:strength": {
+ "value": 1,
+ "max": 5
+}
+```
+
+#component_groups/minecraft:strength_2
+
+```json
+"minecraft:strength": {
+ "value": 2,
+ "max": 5
+}
+```
+
+#component_groups/minecraft:strength_3
+
+```json
+"minecraft:strength": {
+ "value": 3,
+ "max": 5
+}
+```
+
+
+
+## suspect_tracking
+
+
+
+warden
+
+
+
+```json
+"minecraft:suspect_tracking": {}
+```
+
+
+
+## tameable
+
+
+
+cat
+
+#component_groups/minecraft:cat_wild
+
+```json
+"minecraft:tameable": {
+ "probability": 0.33,
+ "tame_items": [
+ "fish",
+ "salmon"
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+parrot
+
+#component_groups/minecraft:parrot_wild
+
+```json
+"minecraft:tameable": {
+ "probability": 0.33,
+ "tame_items": [
+ "wheat_seeds",
+ "pumpkin_seeds",
+ "melon_seeds",
+ "beetroot_seeds",
+ "pitcher_pod",
+ "torchflower_seeds"
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+wolf
+
+#component_groups/minecraft:wolf_wild
+
+```json
+"minecraft:tameable": {
+ "probability": 0.33,
+ "tame_items": "bone",
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+
+
+## tamemount
+
+
+
+donkey
+
+#component_groups/minecraft:donkey_wild
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 100,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "sugar",
+ "temper_mod": 3
+ },
+ {
+ "item": "apple",
+ "temper_mod": 3
+ },
+ {
+ "item": "golden_carrot",
+ "temper_mod": 5
+ },
+ {
+ "item": "golden_apple",
+ "temper_mod": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "temper_mod": 10
+ }
+ ],
+ "auto_reject_items": [
+ {
+ "item": "horsearmorleather"
+ },
+ {
+ "item": "horsearmoriron"
+ },
+ {
+ "item": "horsearmorgold"
+ },
+ {
+ "item": "horsearmordiamond"
+ },
+ {
+ "item": "saddle"
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+horse
+
+#component_groups/minecraft:horse_wild
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 100,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "sugar",
+ "temper_mod": 3
+ },
+ {
+ "item": "apple",
+ "temper_mod": 3
+ },
+ {
+ "item": "golden_carrot",
+ "temper_mod": 5
+ },
+ {
+ "item": "golden_apple",
+ "temper_mod": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "temper_mod": 10
+ }
+ ],
+ "auto_reject_items": [
+ {
+ "item": "horsearmorleather"
+ },
+ {
+ "item": "horsearmoriron"
+ },
+ {
+ "item": "horsearmorgold"
+ },
+ {
+ "item": "horsearmordiamond"
+ },
+ {
+ "item": "saddle"
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+llama
+
+#component_groups/minecraft:llama_wild
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 30,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "hay_block",
+ "temper_mod": 6
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+mule
+
+#component_groups/minecraft:mule_wild
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 100,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "sugar",
+ "temper_mod": 3
+ },
+ {
+ "item": "apple",
+ "temper_mod": 3
+ },
+ {
+ "item": "golden_carrot",
+ "temper_mod": 5
+ },
+ {
+ "item": "golden_apple",
+ "temper_mod": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "temper_mod": 10
+ }
+ ],
+ "auto_reject_items": [
+ {
+ "item": "horsearmorleather"
+ },
+ {
+ "item": "horsearmoriron"
+ },
+ {
+ "item": "horsearmorgold"
+ },
+ {
+ "item": "horsearmordiamond"
+ },
+ {
+ "item": "saddle"
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+trader_llama
+
+#component_groups/minecraft:llama_wild
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 30,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "hay_block",
+ "temper_mod": 6
+ }
+ ],
+ "auto_reject_items": [
+ {
+ "item": "horsearmorleather"
+ },
+ {
+ "item": "horsearmoriron"
+ },
+ {
+ "item": "horsearmorgold"
+ },
+ {
+ "item": "horsearmordiamond"
+ },
+ {
+ "item": "saddle"
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+
+
+## target_nearby_sensor
+
+
+
+blaze
+
+#component_groups/mode_switcher
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 2.0,
+ "outside_range": 3.0,
+ "must_see": true,
+ "on_inside_range": {
+ "event": "switch_to_melee",
+ "target": "self"
+ },
+ "on_outside_range": {
+ "event": "switch_to_ranged",
+ "target": "self"
+ }
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 2.5,
+ "outside_range": 6.0,
+ "must_see": true,
+ "on_inside_range": {
+ "event": "minecraft:start_exploding",
+ "target": "self"
+ },
+ "on_outside_range": {
+ "event": "minecraft:stop_exploding",
+ "target": "self"
+ },
+ "on_vision_lost_inside_range": {
+ "event": "minecraft:stop_exploding",
+ "target": "self"
+ }
+}
+```
+
+#component_groups/minecraft:forced_exploding
+
+```json
+"minecraft:target_nearby_sensor": {}
+```
+
+#component_groups/minecraft:forced_charged_exploding
+
+```json
+"minecraft:target_nearby_sensor": {}
+```
+
+drowned
+
+#component_groups/minecraft:mode_switcher
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 3.0,
+ "outside_range": 5.0,
+ "on_inside_range": {
+ "event": "minecraft:switch_to_melee",
+ "target": "self"
+ },
+ "on_outside_range": {
+ "event": "minecraft:switch_to_ranged",
+ "target": "self"
+ }
+}
+```
+
+guardian
+
+
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 3.0,
+ "outside_range": 4.0,
+ "on_inside_range": {
+ "event": "minecraft:target_too_close",
+ "target": "self"
+ }
+}
+```
+
+#component_groups/minecraft:guardian_aggressive
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 3.0,
+ "outside_range": 4.0,
+ "on_inside_range": {
+ "event": "minecraft:target_too_close",
+ "target": "self"
+ }
+}
+```
+
+
+
+## teleport
+
+
+
+enderman
+
+
+
+```json
+"minecraft:teleport": {
+ "random_teleports": true,
+ "max_random_teleport_time": 30,
+ "random_teleport_cube": [
+ 32,
+ 32,
+ 32
+ ],
+ "target_distance": 16,
+ "target_teleport_chance": 0.05,
+ "light_teleport_chance": 0.05
+}
+```
+
+
+
+## timer
+
+
+
+allay
+
+#component_groups/pickup_item_delay
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 3,
+ "time_down_event": {
+ "event": "pickup_item_delay_complete"
+ }
+}
+```
+
+bee
+
+#component_groups/escape_fire
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": [
+ 20,
+ 50
+ ],
+ "randomInterval": true,
+ "time_down_event": {
+ "event": "stop_panicking_after_fire",
+ "target": "self"
+ }
+}
+```
+
+#component_groups/countdown_to_perish
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": [
+ 10,
+ 60
+ ],
+ "randomInterval": true,
+ "time_down_event": {
+ "event": "perish_event",
+ "target": "self"
+ }
+}
+```
+
+#component_groups/take_nearest_target
+
+```json
+"minecraft:timer": {
+ "looping": true,
+ "time": 5,
+ "time_down_event": {
+ "event": "calmed_down",
+ "target": "self"
+ }
+}
+```
+
+boat
+
+#component_groups/minecraft:above_bubble_column_down
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 3,
+ "time_down_event": {
+ "event": "minecraft:sink",
+ "target": "self"
+ }
+}
+```
+
+chest_boat
+
+#component_groups/minecraft:above_bubble_column_down
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 3,
+ "time_down_event": {
+ "event": "minecraft:sink",
+ "target": "self"
+ }
+}
+```
+
+guardian
+
+#component_groups/minecraft:guardian_passive
+
+```json
+"minecraft:timer": {
+ "time": [
+ 1,
+ 3
+ ],
+ "looping": false,
+ "time_down_event": {
+ "event": "minecraft:target_far_enough",
+ "target": "self"
+ }
+}
+```
+
+hoglin
+
+#component_groups/start_zombification
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 15,
+ "time_down_event": {
+ "event": "become_zombie_event"
+ }
+}
+```
+
+
+
+## trade_resupply
+
+
+
+villager_v2
+
+#component_groups/trade_resupply_component_group
+
+```json
+"minecraft:trade_resupply": {}
+```
+
+
+
+## trade_table
+
+
+
+villager
+
+#component_groups/farmer
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.farmer",
+ "table": "trading/farmer_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+#component_groups/fisherman
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.fisherman",
+ "table": "trading/fisherman_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+#component_groups/shepherd
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.shepherd",
+ "table": "trading/shepherd_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+
+
+## trail
+
+
+
+snow_golem
+
+
+
+```json
+"minecraft:trail": {
+ "block_type": "minecraft:snow_layer",
+ "spawn_filter": {
+ "test": "is_temperature_value",
+ "operator": "<",
+ "value": 0.81
+ }
+}
+```
+
+
+
+## transformation
+
+
+
+hoglin
+
+#component_groups/become_zombie
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zoglin",
+ "transformation_sound": "converted_to_zombified",
+ "keep_level": true
+}
+```
+
+husk
+
+#component_groups/minecraft:convert_to_zombie
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie",
+ "transformation_sound": "convert_to_drowned",
+ "drop_equipment": true,
+ "delay": {
+ "value": 15
+ }
+}
+```
+
+#component_groups/minecraft:convert_to_baby_zombie
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie",
+ "transformation_sound": "convert_to_drowned",
+ "drop_equipment": true,
+ "delay": {
+ "value": 15
+ }
+}
+```
+
+mooshroom
+
+#component_groups/minecraft:mooshroom_become_cow
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:cow"
+}
+```
+
+pig
+
+#component_groups/minecraft:pig_transform
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:pig_zombie",
+ "delay": 0.5
+}
+```
+
+piglin
+
+#component_groups/become_zombie
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie_pigman",
+ "transformation_sound": "converted_to_zombified",
+ "keep_level": true,
+ "drop_inventory": true,
+ "preserve_equipment": true
+}
+```
+
+piglin_brute
+
+#component_groups/become_zombie
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie_pigman",
+ "transformation_sound": "converted_to_zombified",
+ "keep_level": true,
+ "preserve_equipment": true
+}
+```
+
+skeleton
+
+#component_groups/become_stray
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:stray",
+ "transformation_sound": "convert_to_stray",
+ "keep_level": true,
+ "drop_inventory": true,
+ "preserve_equipment": true
+}
+```
+
+
+
+## trust
+
+
+
+fox
+
+#component_groups/minecraft:trusting_fox
+
+```json
+"minecraft:trust": {}
+```
+
+
+
+## trusting
+
+
+
+ocelot
+
+#component_groups/minecraft:ocelot_wild
+
+```json
+"minecraft:trusting": {
+ "probability": 0.33,
+ "trust_items": [
+ "fish",
+ "salmon"
+ ],
+ "trust_event": {
+ "event": "minecraft:on_trust",
+ "target": "self"
+ }
+}
+```
+
+
+
+## type_family
+
+
+
+allay
+
+
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "allay",
+ "mob"
+ ]
+}
+```
+
+armor_stand
+
+
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "armor_stand",
+ "inanimate",
+ "mob"
+ ]
+}
+```
+
+axolotl
+
+
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "axolotl",
+ "mob"
+ ]
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "bat",
+ "mob"
+ ]
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "bee",
+ "mob",
+ "arthropod"
+ ]
+}
+```
+
+#component_groups/countdown_to_perish
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "bee",
+ "mob",
+ "arthropod",
+ "pacified"
+ ]
+}
+```
+
+blaze
+
+
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "blaze",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+boat
+
+
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "boat",
+ "inanimate"
+ ]
+}
+```
+
+
+
+## underwater_movement
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.2
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.15
+}
+```
+
+drowned
+
+
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.06
+}
+```
+
+#component_groups/minecraft:baby_drowned
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.08
+}
+```
+
+elder_guardian
+
+
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.3
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.1
+}
+```
+
+frog
+
+
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.15
+}
+```
+
+guardian
+
+
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.12
+}
+```
+
+
+
+## variable_max_auto_step
+
+
+
+camel
+
+
+
+```json
+"minecraft:variable_max_auto_step": {
+ "base_value": 1.5625,
+ "controlled_value": 1.5625,
+ "jump_prevented_value": 0.5625
+}
+```
+
+enderman
+
+
+
+```json
+"minecraft:variable_max_auto_step": {
+ "base_value": 1.0625,
+ "jump_prevented_value": 0.5625
+}
+```
+
+
+
+## variant
+
+
+
+axolotl
+
+#component_groups/axolotl_lucy
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+#component_groups/axolotl_cyan
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+#component_groups/axolotl_gold
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+cat
+
+#component_groups/minecraft:cat_white
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+#component_groups/minecraft:cat_tuxedo
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+#component_groups/minecraft:cat_red
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+fox
+
+#component_groups/minecraft:fox_red
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+#component_groups/minecraft:fox_arctic
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+
+
+## vibration_damper
+
+
+
+warden
+
+
+
+```json
+"minecraft:vibration_damper": {}
+```
+
+
+
+## vibration_listener
+
+
+
+allay
+
+
+
+```json
+"minecraft:vibration_listener": {}
+```
+
+warden
+
+
+
+```json
+"minecraft:vibration_listener": {}
+```
+
+
+
+## water_movement
+
+
+
+panda
+
+
+
+```json
+"minecraft:water_movement": {
+ "drag_factor": 0.98
+}
+```
+
+polar_bear
+
+
+
+```json
+"minecraft:water_movement": {
+ "drag_factor": 0.98
+}
+```
+
+turtle
+
+
+
+```json
+"minecraft:water_movement": {
+ "drag_factor": 0.9
+}
+```
+
+
+
diff --git a/docs/wiki/3-实体/3-文档/vanilla-usage-spawn-rules.md b/docs/wiki/3-实体/3-文档/vanilla-usage-spawn-rules.md
new file mode 100644
index 00000000..a7cdbf33
--- /dev/null
+++ b/docs/wiki/3-实体/3-文档/vanilla-usage-spawn-rules.md
@@ -0,0 +1,1383 @@
+---
+title: Vanilla 可用生成规则(Spawn Rules)
+category: Documentation
+mentions:
+ - MedicalJewel105
+---
+
+# Vanilla 可用生成规则(Spawn Rules)
+
+
+
+本页面由 [Wiki Content Generator](https://github.com/Bedrock-OSS/bedrock-wiki-content-generator) 创建。 如果有问题,请在 [Bedrock OSS](https://www.google.com/search?q=https://discord.gg/XjV87YN) Discord 服务器上联系我们。
+包含所有示例。 命名空间 `minecraft` 和一些格式已被删除,以加快页面加载速度。 *上次更新于 1.20.10*
+
+## biome_filter
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "lush_caves"
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "animal"
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "plains"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "sunflower_plains"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "flower_forest"
+ }
+]
+```
+
+chicken
+
+
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "animal"
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "warm"
+ }
+]
+```
+
+cow
+
+
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "animal"
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "frozen"
+ }
+]
+```
+
+
+
+## brightness_filter
+
+
+
+bat
+
+
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 4,
+ "adjust_for_weather": true
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+donkey
+
+
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+drowned
+
+
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+
+
+## delay_filter
+
+
+
+pillager_patrol
+
+
+
+```json
+"minecraft:delay_filter": {
+ "min": 600,
+ "max": 660,
+ "identifier": "minecraft:pillager_patrol_easy",
+ "spawn_chance": 20
+}
+```
+
+
+
+```json
+"minecraft:delay_filter": {
+ "min": 600,
+ "max": 660,
+ "identifier": "minecraft:pillager_patrol_normal",
+ "spawn_chance": 20
+}
+```
+
+
+
+```json
+"minecraft:delay_filter": {
+ "min": 600,
+ "max": 660,
+ "identifier": "minecraft:pillager_patrol_hard",
+ "spawn_chance": 20
+}
+```
+
+
+
+## density_limit
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:density_limit": {
+ "underground": 5
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:density_limit": {
+ "surface": 5
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:density_limit": {
+ "surface": 20
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:density_limit": {
+ "surface": 5
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:density_limit": {
+ "surface": 5,
+ "underground": 0
+}
+```
+
+drowned
+
+
+
+```json
+"minecraft:density_limit": {
+ "surface": 5
+}
+```
+
+
+
+```json
+"minecraft:density_limit": {
+ "surface": 2
+}
+```
+
+
+
+```json
+"minecraft:density_limit": {
+ "surface": 2
+}
+```
+
+
+
+## difficulty_filter
+
+
+
+creeper
+
+
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+drowned
+
+
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+enderman
+
+
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+ghast
+
+
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+
+
+## disallow_spawns_in_bubble
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:disallow_spawns_in_bubble": {}
+```
+
+
+
+## distance_filter
+
+
+
+cod
+
+
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+pillager_patrol
+
+
+
+```json
+"minecraft:distance_filter": {
+ "min": 24,
+ "max": 48
+}
+```
+
+
+
+```json
+"minecraft:distance_filter": {
+ "min": 24,
+ "max": 48
+}
+```
+
+
+
+```json
+"minecraft:distance_filter": {
+ "min": 24,
+ "max": 48
+}
+```
+
+pufferfish
+
+
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+salmon
+
+
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+tropicalfish
+
+
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+
+
+## height_filter
+
+
+
+bat
+
+
+
+```json
+"minecraft:height_filter": {
+ "min": -63,
+ "max": 63
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+glow_squid
+
+
+
+```json
+"minecraft:height_filter": {
+ "min": -64,
+ "max": 30
+}
+```
+
+pufferfish
+
+
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+salmon
+
+
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+
+
+```json
+"minecraft:height_filter": {
+ "min": 50,
+ "max": 64
+}
+```
+
+stray
+
+
+
+```json
+"minecraft:height_filter": {
+ "min": 60,
+ "max": 66
+}
+```
+
+
+
+## herd
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 6,
+ "event": "minecraft:entity_born",
+ "event_skip_count": 2
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 2
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 1
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 7
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 3
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:herd": {
+ "min_size": 3,
+ "max_size": 5
+}
+```
+
+donkey
+
+
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 6
+}
+```
+
+
+
+## mob_event_filter
+
+
+
+pillager_patrol
+
+
+
+```json
+"minecraft:mob_event_filter": {
+ "event": "minecraft:pillager_patrols_event"
+}
+```
+
+
+
+```json
+"minecraft:mob_event_filter": {
+ "event": "minecraft:pillager_patrols_event"
+}
+```
+
+
+
+```json
+"minecraft:mob_event_filter": {
+ "event": "minecraft:pillager_patrols_event"
+}
+```
+
+
+
+## permute_type
+
+
+
+pillager_patrol
+
+
+
+```json
+"minecraft:permute_type": [
+ {
+ "weight": 100,
+ "entity_type": "minecraft:pillager"
+ }
+]
+```
+
+
+
+```json
+"minecraft:permute_type": [
+ {
+ "weight": 100,
+ "entity_type": "minecraft:pillager"
+ }
+]
+```
+
+
+
+```json
+"minecraft:permute_type": [
+ {
+ "weight": 100,
+ "entity_type": "minecraft:pillager"
+ }
+]
+```
+
+zombie
+
+
+
+```json
+"minecraft:permute_type": [
+ {
+ "weight": 95
+ },
+ {
+ "weight": 5,
+ "entity_type": "minecraft:zombie_villager_v2"
+ }
+]
+```
+
+
+
+## player_in_village_filter
+
+
+
+pillager_patrol
+
+
+
+```json
+"minecraft:player_in_village_filter": {
+ "distance": 48,
+ "village_border_tolerance": 32
+}
+```
+
+
+
+```json
+"minecraft:player_in_village_filter": {
+ "distance": 48,
+ "village_border_tolerance": 32
+}
+```
+
+
+
+```json
+"minecraft:player_in_village_filter": {
+ "distance": 48,
+ "village_border_tolerance": 32
+}
+```
+
+
+
+## spawn_event
+
+
+
+stray
+
+
+
+```json
+"minecraft:spawn_event": {
+ "event": "change_to_skeleton"
+}
+```
+
+
+
+```json
+"minecraft:spawn_event": {
+ "event": "change_to_skeleton"
+}
+```
+
+
+
+## spawns_lava
+
+
+
+strider
+
+
+
+```json
+"minecraft:spawns_lava": {}
+```
+
+
+
+## spawns_on_block_filter
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:clay"
+```
+
+chicken
+
+
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+cow
+
+
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+donkey
+
+
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+goat
+
+
+
+```json
+"minecraft:spawns_on_block_filter": [
+ "minecraft:stone",
+ "minecraft:snow",
+ "minecraft:powder_snow",
+ "minecraft:snow_layer",
+ "minecraft:packed_ice",
+ "minecraft:gravel"
+]
+```
+
+horse
+
+
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+
+
+## spawns_on_block_prevented_filter
+
+
+
+hoglin
+
+
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+magma_cube
+
+
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+piglin
+
+
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+skeleton
+
+
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+zombie_pigman
+
+
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+
+
+## spawns_on_surface
+
+
+
+bee
+
+
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+chicken
+
+
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+cod
+
+
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+cow
+
+
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+creeper
+
+
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+donkey
+
+
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+
+
+## spawns_underground
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+bat
+
+
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+creeper
+
+
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+enderman
+
+
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+ghast
+
+
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+glow_squid
+
+
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+
+
+## spawns_underwater
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+cod
+
+
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+drowned
+
+
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+glow_squid
+
+
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+guardian
+
+
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+
+
+## weight
+
+
+
+axolotl
+
+
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+bat
+
+
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+bee
+
+
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+chicken
+
+
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+cod
+
+
+
+```json
+"minecraft:weight": {
+ "default": 75
+}
+```
+
+cow
+
+
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+creeper
+
+
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+dolphin
+
+
+
+```json
+"minecraft:weight": {
+ "default": 7
+}
+```
+
+
+
+## world_age_filter
+
+
+
+pillager_patrol
+
+
+
+```json
+"minecraft:world_age_filter": {
+ "min": 6000
+}
+```
+
+
+
+```json
+"minecraft:world_age_filter": {
+ "min": 6000
+}
+```
+
+
+
+```json
+"minecraft:world_age_filter": {
+ "min": 6000
+}
+```
+
+
+
diff --git a/docs/wiki/3-实体/3-文档/vuc-full.md b/docs/wiki/3-实体/3-文档/vuc-full.md
new file mode 100644
index 00000000..9cd638e6
--- /dev/null
+++ b/docs/wiki/3-实体/3-文档/vuc-full.md
@@ -0,0 +1,47771 @@
+---
+title: Vanilla 可用 Components - 完整
+category: Documentation
+mentions:
+ - MedicalJewel105
+hidden: true
+---
+
+# Vanilla 可用 Components - 完整
+
+
+
+本页面由 [Wiki Content Generator](https://github.com/Bedrock-OSS/bedrock-wiki-content-generator) 创建。 如果有问题,请在 [Bedrock OSS](https://www.google.com/search?q=https://discord.gg/XjV87YN) Discord 服务器上联系我们。
+包含所有示例。 命名空间 `minecraft` 和一些格式已被删除,以加快页面加载速度。 *上次更新于 1.20.10*
+
+## addrider
+
+cave_spider
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton.stray"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton.wither"
+}
+```
+
+ravager
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:pillager"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:pillager",
+ "spawn_event": "minecraft:spawn_for_raid"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:evocation_illager",
+ "spawn_event": "minecraft:spawn_for_raid"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:pillager",
+ "spawn_event": "minecraft:spawn_as_illager_captain"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:vindicator"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:vindicator",
+ "spawn_event": "minecraft:spawn_as_illager_captain"
+}
+```
+
+spider
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton.stray"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:skeleton.wither"
+}
+```
+
+strider
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:zombie_pigman",
+ "spawn_event": "minecraft:spawn_as_strider_jockey"
+}
+```
+
+```json
+"minecraft:addrider": {
+ "entity_type": "minecraft:strider",
+ "spawn_event": "minecraft:spawn_baby_strider_jockey"
+}
+```
+
+## admire_item
+
+piglin
+
+```json
+"minecraft:admire_item": {
+ "duration": 8,
+ "cooldown_after_being_attacked": 20
+}
+```
+
+## ageable
+
+axolotl
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "tropical_fish_bucket",
+ "transform_to_item": "water_bucket:0",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+bee
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "minecraft:red_flower",
+ "minecraft:yellow_flower",
+ "minecraft:wither_rose",
+ "minecraft:double_plant:0",
+ "minecraft:double_plant:1",
+ "minecraft:double_plant:4",
+ "minecraft:double_plant:5",
+ "minecraft:flowering_azalea",
+ "minecraft:azalea_leaves_flowered",
+ "minecraft:mangrove_propagule",
+ "minecraft:pitcher_plant",
+ "minecraft:torchflower",
+ "minecraft:cherry_leaves",
+ "minecraft:pink_petals"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+camel
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "cactus",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+cat
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "fish",
+ "salmon"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+chicken
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "wheat_seeds",
+ "beetroot_seeds",
+ "melon_seeds",
+ "pumpkin_seeds",
+ "pitcher_pod",
+ "torchflower_seeds"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+cow
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "wheat",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+dolphin
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "fish",
+ "salmon"
+ ],
+ "grow_up": {
+ "event": "ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+donkey
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ {
+ "item": "wheat",
+ "growth": 0.016667
+ },
+ {
+ "item": "sugar",
+ "growth": 0.025
+ },
+ {
+ "item": "hay_block",
+ "growth": 0.15
+ },
+ {
+ "item": "apple",
+ "growth": 0.05
+ },
+ {
+ "item": "golden_carrot",
+ "growth": 0.05
+ },
+ {
+ "item": "golden_apple",
+ "growth": 0.2
+ },
+ {
+ "item": "appleEnchanted",
+ "growth": 0.2
+ }
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+fox
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "sweet_berries",
+ "glow_berries"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+goat
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "wheat",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+hoglin
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "crimson_fungus"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+horse
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ {
+ "item": "wheat",
+ "growth": 0.016667
+ },
+ {
+ "item": "sugar",
+ "growth": 0.025
+ },
+ {
+ "item": "hay_block",
+ "growth": 0.15
+ },
+ {
+ "item": "apple",
+ "growth": 0.05
+ },
+ {
+ "item": "golden_carrot",
+ "growth": 0.05
+ },
+ {
+ "item": "golden_apple",
+ "growth": 0.2
+ },
+ {
+ "item": "appleEnchanted",
+ "growth": 0.2
+ }
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+llama
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ {
+ "item": "wheat",
+ "growth": 0.1
+ },
+ {
+ "item": "hay_block",
+ "growth": 0.9
+ }
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+mooshroom
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "wheat",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+mule
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ {
+ "item": "wheat",
+ "growth": 0.016667
+ },
+ {
+ "item": "sugar",
+ "growth": 0.025
+ },
+ {
+ "item": "hay_block",
+ "growth": 0.15
+ },
+ {
+ "item": "apple",
+ "growth": 0.05
+ },
+ {
+ "item": "golden_carrot",
+ "growth": 0.05
+ },
+ {
+ "item": "golden_apple",
+ "growth": 0.2
+ },
+ {
+ "item": "appleEnchanted",
+ "growth": 0.2
+ }
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+ocelot
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "fish",
+ "salmon"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+panda
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "bamboo",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+pig
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "carrot",
+ "beetroot",
+ "potato"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+polar_bear
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+rabbit
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "golden_carrot",
+ "carrot",
+ "yellow_flower"
+ ],
+ "grow_up": {
+ "event": "grow_up",
+ "target": "self"
+ }
+}
+```
+
+sheep
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": "wheat",
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+sniffer
+
+```json
+"minecraft:ageable": {
+ "duration": 2400,
+ "feed_items": [
+ "torchflower_seeds"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+strider
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "warped_fungus"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+tadpole
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "slime_ball"
+ ],
+ "grow_up": {
+ "event": "ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+trader_llama
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ {
+ "item": "wheat",
+ "growth": 0.1
+ },
+ {
+ "item": "hay_block",
+ "growth": 0.9
+ }
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+turtle
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "seagrass"
+ ],
+ "drop_items": [
+ "turtle_shell_piece"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+villager
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+villager_v2
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+wolf
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "feed_items": [
+ "chicken",
+ "cooked_chicken",
+ "beef",
+ "cooked_beef",
+ "muttonRaw",
+ "muttonCooked",
+ "porkchop",
+ "cooked_porkchop",
+ "rabbit",
+ "cooked_rabbit",
+ "rotten_flesh"
+ ],
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:ageable": {
+ "duration": 1200,
+ "grow_up": {
+ "event": "minecraft:ageable_grow_up",
+ "target": "self"
+ }
+}
+```
+
+## ambient_sound_interval
+
+allay
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 5.0,
+ "range": 5.0,
+ "event_name": "ambient",
+ "event_names": [
+ {
+ "event_name": "ambient.tame",
+ "condition": "query.is_using_item"
+ },
+ {
+ "event_name": "ambient",
+ "condition": "!query.is_using_item"
+ }
+ ]
+}
+```
+
+bee
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "ambient.pollinate",
+ "range": 3.0,
+ "value": 2.0
+}
+```
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "ambient",
+ "range": 0.0,
+ "value": 0.0
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 2.0,
+ "range": 4.0,
+ "event_name": "ambient.in.raid"
+}
+```
+
+fox
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "ambient"
+}
+```
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "sleep"
+}
+```
+
+```json
+"minecraft:ambient_sound_interval": {
+ "event_name": "screech",
+ "value": 80,
+ "range": 160
+}
+```
+
+pillager
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 2.0,
+ "range": 4.0,
+ "event_name": "ambient.in.raid"
+}
+```
+
+ravager
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 4.0,
+ "range": 8.0,
+ "event_name": "ambient.in.raid"
+}
+```
+
+vindicator
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 2.0,
+ "range": 4.0,
+ "event_name": "ambient.in.raid"
+}
+```
+
+warden
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 2.0,
+ "range": 4.0,
+ "event_name": "ambient",
+ "event_names": [
+ {
+ "event_name": "angry",
+ "condition": "query.anger_level(this) >= 80"
+ },
+ {
+ "event_name": "agitated",
+ "condition": "query.anger_level(this) >= 40"
+ }
+ ]
+}
+```
+
+witch
+
+```json
+"minecraft:ambient_sound_interval": {
+ "value": 2.0,
+ "range": 4.0,
+ "event_name": "ambient.in.raid"
+}
+```
+
+## anger_level
+
+warden
+
+```json
+"minecraft:anger_level": {
+ "max_anger": 150,
+ "angry_threshold": 80,
+ "remove_targets_below_angry_threshold": true,
+ "angry_boost": 20,
+ "anger_decrement_interval": 1.0,
+ "default_annoyingness": 35,
+ "default_projectile_annoyingness": 10,
+ "on_increase_sounds": [
+ {
+ "sound": "listening_angry",
+ "condition": "query.anger_level(this) >= 40"
+ },
+ {
+ "sound": "listening",
+ "condition": "query.anger_level(this) >= 0"
+ }
+ ],
+ "nuisance_filter": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "not",
+ "value": "warden"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "not",
+ "value": "inanimate"
+ }
+ ]
+ }
+}
+```
+
+## angry
+
+bee
+
+```json
+"minecraft:angry": {
+ "duration": 25,
+ "broadcastAnger": true,
+ "broadcastRange": 20,
+ "broadcast_filters": {
+ "test": "is_family",
+ "operator": "!=",
+ "value": "pacified"
+ },
+ "calm_event": {
+ "event": "calmed_down",
+ "target": "self"
+ }
+}
+```
+
+cave_spider
+
+```json
+"minecraft:angry": {
+ "duration": 10,
+ "duration_delta": 3,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+dolphin
+
+```json
+"minecraft:angry": {
+ "duration": 25,
+ "broadcast_anger": true,
+ "broadcast_range": 16,
+ "calm_event": {
+ "event": "on_calm",
+ "target": "self"
+ }
+}
+```
+
+enderman
+
+```json
+"minecraft:angry": {
+ "duration": 25,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+hoglin
+
+```json
+"minecraft:angry": {
+ "duration": 10,
+ "broadcast_anger": true,
+ "broadcast_range": 16,
+ "calm_event": {
+ "event": "become_calm_event",
+ "target": "self"
+ },
+ "angry_sound": "angry",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+llama
+
+```json
+"minecraft:angry": {
+ "duration": 4,
+ "broadcast_anger": false,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:angry": {
+ "duration": -1,
+ "broadcast_anger": false,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+panda
+
+```json
+"minecraft:angry": {
+ "duration": 500,
+ "broadcast_anger": true,
+ "broadcast_range": 41,
+ "broadcast_filters": {
+ "test": "is_family",
+ "operator": "==",
+ "value": "panda_aggressive"
+ },
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:angry": {
+ "duration": 1,
+ "broadcast_anger": true,
+ "broadcast_range": 41,
+ "broadcast_filters": {
+ "test": "is_family",
+ "operator": "==",
+ "value": "panda_aggressive"
+ },
+ "calm_event": {
+ "event": "minecraft:baby_on_calm",
+ "target": "self"
+ }
+}
+```
+
+piglin
+
+```json
+"minecraft:angry": {
+ "duration": 30,
+ "broadcast_anger": true,
+ "broadcast_anger_on_attack": true,
+ "broadcast_anger_on_being_attacked": true,
+ "broadcast_range": 16,
+ "broadcast_targets": [
+ "piglin"
+ ],
+ "calm_event": {
+ "event": "become_calm_event",
+ "target": "self"
+ },
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "piglin"
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:attack_cooldown"
+ }
+ ]
+ },
+ "angry_sound": "angry",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:angry": {
+ "duration": 30,
+ "broadcast_anger": false,
+ "broadcast_anger_on_attack": false,
+ "broadcast_anger_on_being_attacked": true,
+ "broadcast_range": 16,
+ "broadcast_targets": [
+ "piglin"
+ ],
+ "calm_event": {
+ "event": "become_calm_event",
+ "target": "self"
+ },
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "piglin"
+ }
+ ]
+ },
+ "angry_sound": "angry",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+polar_bear
+
+```json
+"minecraft:angry": {
+ "duration": 1,
+ "broadcast_anger": true,
+ "broadcast_range": 41,
+ "calm_event": {
+ "event": "minecraft:baby_on_calm",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:angry": {
+ "duration": 500,
+ "broadcast_anger": false,
+ "broadcast_range": 20,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+silverfish
+
+```json
+"minecraft:angry": {
+ "duration": -1,
+ "broadcast_anger": true,
+ "broadcast_range": 20,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+spider
+
+```json
+"minecraft:angry": {
+ "duration": 10,
+ "duration_delta": 3,
+ "calm_event": {
+ "event": "minecraft:become_calm",
+ "target": "self"
+ }
+}
+```
+
+trader_llama
+
+```json
+"minecraft:angry": {
+ "duration": 4,
+ "broadcast_anger": false,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:angry": {
+ "duration": -1,
+ "broadcast_anger": false,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:angry": {
+ "duration": 10,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+vindicator
+
+```json
+"minecraft:angry": {
+ "duration": -1,
+ "broadcast_anger": false,
+ "calm_event": {
+ "event": "minecraft:stop_aggro",
+ "target": "self"
+ }
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:angry": {
+ "duration": 5,
+ "broadcastAnger": true,
+ "broadcastRange": 10,
+ "broadcast_targets": [
+ "llama",
+ "trader_llama"
+ ],
+ "broadcast_filters": {
+ "test": "is_leashed_to",
+ "subject": "other",
+ "value": true
+ },
+ "calm_event": {
+ "event": "minecraft:become_calm",
+ "target": "self"
+ }
+}
+```
+
+wolf
+
+```json
+"minecraft:angry": {
+ "duration": 25,
+ "broadcast_anger": true,
+ "broadcast_range": 20,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:angry": {
+ "duration": 25,
+ "broadcast_anger": true,
+ "broadcast_range": 20,
+ "calm_event": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+}
+```
+
+## annotation.break_door
+
+drowned
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+husk
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+vindicator
+
+```json
+"minecraft:annotation.break_door": {
+ "break_time": 30,
+ "min_difficulty": "normal"
+}
+```
+
+zombie
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:annotation.break_door": {}
+```
+
+## annotation.open_door
+
+piglin
+
+```json
+"minecraft:annotation.open_door": {}
+```
+
+piglin_brute
+
+```json
+"minecraft:annotation.open_door": {}
+```
+
+villager
+
+```json
+"minecraft:annotation.open_door": {}
+```
+
+villager_v2
+
+```json
+"minecraft:annotation.open_door": {}
+```
+
+## area_attack
+
+magma_cube
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 6,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ }
+}
+```
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 4,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ }
+}
+```
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 3,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ }
+}
+```
+
+pufferfish
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.2,
+ "damage_per_tick": 2,
+ "damage_cooldown": 0.5,
+ "cause": "contact",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ }
+ ]
+ }
+}
+```
+
+slime
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 4,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ }
+ ]
+ }
+}
+```
+
+```json
+"minecraft:area_attack": {
+ "damage_range": 0.15,
+ "damage_per_tick": 2,
+ "damage_cooldown": 0.5,
+ "cause": "entity_attack",
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ }
+ ]
+ }
+}
+```
+
+## attack
+
+axolotl
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+bee
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 10
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 18
+}
+```
+
+blaze
+
+```json
+"minecraft:attack": {
+ "damage": 6
+}
+```
+
+cave_spider
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 0
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 7
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 2,
+ "effect_name": "poison",
+ "effect_duration": 15
+}
+```
+
+creeper
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+dolphin
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+drowned
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:attack": {
+ "damage": 5
+}
+```
+
+enderman
+
+```json
+"minecraft:attack": {
+ "damage": 7
+}
+```
+
+endermite
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+fox
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+goat
+
+```json
+"minecraft:attack": {
+ "damage": 1
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+guardian
+
+```json
+"minecraft:attack": {
+ "damage": 5
+}
+```
+
+hoglin
+
+```json
+"minecraft:attack": {
+ "damage": 1.0
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": [
+ 3,
+ 9
+ ]
+}
+```
+
+husk
+
+```json
+"minecraft:attack": {
+ "damage": 3,
+ "effect_name": "hunger",
+ "effect_duration": 30
+}
+```
+
+iron_golem
+
+```json
+"minecraft:attack": {
+ "damage": {
+ "range_min": 7,
+ "range_max": 21
+ }
+}
+```
+
+magma_cube
+
+```json
+"minecraft:attack": {
+ "damage": 6
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 4
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+panda
+
+```json
+"minecraft:attack": {
+ "damage": 2.0
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 6.0
+}
+```
+
+phantom
+
+```json
+"minecraft:attack": {
+ "damage": 6
+}
+```
+
+piglin
+
+```json
+"minecraft:attack": {
+ "damage": 5
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:attack": {
+ "damage": 7
+}
+```
+
+pillager
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+player
+
+```json
+"minecraft:attack": {
+ "damage": 1
+}
+```
+
+polar_bear
+
+```json
+"minecraft:attack": {
+ "damage": 6.0
+}
+```
+
+ravager
+
+```json
+"minecraft:attack": {
+ "damage": 12.0
+}
+```
+
+silverfish
+
+```json
+"minecraft:attack": {
+ "damage": 1
+}
+```
+
+skeleton
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+slime
+
+```json
+"minecraft:attack": {
+ "damage": 4
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 0
+}
+```
+
+snow_golem
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+spider
+
+```json
+"minecraft:attack": {
+ "damage": 2
+}
+```
+
+stray
+
+```json
+"minecraft:attack": {
+ "damage": 3,
+ "effect_name": "slowness",
+ "effect_duration": 10
+}
+```
+
+vex
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+vindicator
+
+```json
+"minecraft:attack": {
+ "damage": 8
+}
+```
+
+warden
+
+```json
+"minecraft:attack": {
+ "damage": 30
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:attack": {
+ "damage": 4,
+ "effect_name": "wither",
+ "effect_duration": 10
+}
+```
+
+wolf
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": 4
+}
+```
+
+zoglin
+
+```json
+"minecraft:attack": {
+ "damage": 0.5
+}
+```
+
+```json
+"minecraft:attack": {
+ "damage": [
+ 3,
+ 8
+ ]
+}
+```
+
+zombie
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:attack": {
+ "damage": 5
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:attack": {
+ "damage": 3
+}
+```
+
+## attack_cooldown
+
+axolotl
+
+```json
+"minecraft:attack_cooldown": {
+ "attack_cooldown_time": 120.0,
+ "attack_cooldown_complete_event": {
+ "event": "attack_cooldown_complete_event",
+ "target": "self"
+ }
+}
+```
+
+goat
+
+```json
+"minecraft:attack_cooldown": {
+ "attack_cooldown_time": [
+ 30,
+ 40
+ ],
+ "attack_cooldown_complete_event": {
+ "event": "attack_cooldown_complete_event",
+ "target": "self"
+ }
+}
+```
+
+hoglin
+
+```json
+"minecraft:attack_cooldown": {
+ "attack_cooldown_time": [
+ 10.0,
+ 15.0
+ ],
+ "attack_cooldown_complete_event": {
+ "event": "attack_cooldown_complete_event",
+ "target": "self"
+ }
+}
+```
+
+piglin
+
+```json
+"minecraft:attack_cooldown": {
+ "attack_cooldown_time": [
+ 30.0,
+ 120.0
+ ],
+ "attack_cooldown_complete_event": {
+ "event": "attack_cooldown_complete_event",
+ "target": "self"
+ }
+}
+```
+
+## attack_damage
+
+cat
+
+```json
+"minecraft:attack_damage": {
+ "value": 4
+}
+```
+
+ocelot
+
+```json
+"minecraft:attack_damage": {
+ "value": 3
+}
+```
+
+## balloonable
+
+allay
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.5
+}
+```
+
+bee
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.5
+}
+```
+
+boat
+
+```json
+"minecraft:balloonable": {}
+```
+
+cat
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.6
+}
+```
+
+chest_boat
+
+```json
+"minecraft:balloonable": {}
+```
+
+chicken
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.5
+}
+```
+
+cow
+
+```json
+"minecraft:balloonable": {}
+```
+
+dolphin
+
+```json
+"minecraft:balloonable": {}
+```
+
+donkey
+
+```json
+"minecraft:balloonable": {}
+```
+
+fox
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.6
+}
+```
+
+glow_squid
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.5
+}
+```
+
+goat
+
+```json
+"minecraft:balloonable": {}
+```
+
+hoglin
+
+```json
+"minecraft:balloonable": {}
+```
+
+horse
+
+```json
+"minecraft:balloonable": {}
+```
+
+iron_golem
+
+```json
+"minecraft:balloonable": {
+ "mass": 2.0
+}
+```
+
+llama
+
+```json
+"minecraft:balloonable": {}
+```
+
+mooshroom
+
+```json
+"minecraft:balloonable": {}
+```
+
+mule
+
+```json
+"minecraft:balloonable": {}
+```
+
+ocelot
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.7
+}
+```
+
+panda
+
+```json
+"minecraft:balloonable": {}
+```
+
+parrot
+
+```json
+"minecraft:balloonable": {}
+```
+
+pig
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.9
+}
+```
+
+polar_bear
+
+```json
+"minecraft:balloonable": {}
+```
+
+rabbit
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.4
+}
+```
+
+sheep
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.75
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:balloonable": {}
+```
+
+snow_golem
+
+```json
+"minecraft:balloonable": {}
+```
+
+squid
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.5
+}
+```
+
+strider
+
+```json
+"minecraft:balloonable": {}
+```
+
+trader_llama
+
+```json
+"minecraft:balloonable": {}
+```
+
+wolf
+
+```json
+"minecraft:balloonable": {
+ "mass": 0.8
+}
+```
+
+zoglin
+
+```json
+"minecraft:balloonable": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:balloonable": {}
+```
+
+## barter
+
+piglin
+
+```json
+"minecraft:barter": {
+ "barter_table": "loot_tables/entities/piglin_barter.json",
+ "cooldown_after_being_attacked": 20
+}
+```
+
+## behavior.admire_item
+
+piglin
+
+```json
+"minecraft:behavior.admire_item": {
+ "priority": 2,
+ "admire_item_sound": "admire",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ },
+ "on_admire_item_start": {
+ "event": "admire_item_started_event",
+ "target": "self"
+ },
+ "on_admire_item_stop": {
+ "event": "admire_item_stopped_event",
+ "target": "self"
+ }
+}
+```
+
+## behavior.avoid_block
+
+hoglin
+
+```json
+"minecraft:behavior.avoid_block": {
+ "priority": 1,
+ "tick_interval": 5,
+ "search_range": 8,
+ "search_height": 4,
+ "walk_speed_modifier": 1,
+ "sprint_speed_modifier": 1,
+ "avoid_block_sound": "retreat",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ },
+ "target_selection_method": "nearest",
+ "target_blocks": [
+ "minecraft:warped_fungus",
+ "minecraft:portal",
+ "minecraft:respawn_anchor"
+ ],
+ "on_escape": [
+ {
+ "event": "escaped_event",
+ "target": "self"
+ }
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.avoid_block": {
+ "priority": 9,
+ "tick_interval": 5,
+ "search_range": 8,
+ "search_height": 4,
+ "sprint_speed_modifier": 1.1,
+ "target_selection_method": "nearest",
+ "target_blocks": [
+ "minecraft:soul_fire",
+ "minecraft:soul_lantern",
+ "minecraft:soul_torch",
+ "minecraft:item.soul_campfire"
+ ],
+ "avoid_block_sound": "retreat",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+## behavior.avoid_mob_type
+
+cat
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 6,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 10,
+ "walk_speed_multiplier": 0.8,
+ "sprint_speed_multiplier": 1.33
+ }
+ ]
+}
+```
+
+creeper
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 3,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "ocelot"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "cat"
+ }
+ ]
+ },
+ "max_dist": 6,
+ "sprint_speed_multiplier": 1.2
+ }
+ ]
+}
+```
+
+dolphin
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "guardian_elder"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "guardian"
+ }
+ ]
+ },
+ "max_dist": 8,
+ "walk_speed_multiplier": 1.0,
+ "sprint_speed_multiplier": 1.0
+ }
+ ],
+ "probability_per_strength": 0.14
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 8,
+ "walk_speed_multiplier": 0.6,
+ "sprint_speed_multiplier": 1.0
+ }
+ ]
+}
+```
+
+cod
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ "max_dist": 6,
+ "walk_speed_multiplier": 1.5,
+ "sprint_speed_multiplier": 2.0
+ }
+ ]
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "trusts",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "polarbear"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wolf"
+ }
+ ]
+ },
+ "max_dist": 10,
+ "walk_speed_multiplier": 1.0,
+ "sprint_speed_multiplier": 1.5
+ }
+ ]
+}
+```
+
+guardian
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 8,
+ "walk_speed_multiplier": 1,
+ "sprint_speed_multiplier": 1
+ }
+ ]
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 0,
+ "remove_target": true,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_target",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "piglin"
+ }
+ ]
+ },
+ "check_if_outnumbered": true,
+ "max_dist": 10,
+ "sprint_speed_multiplier": 1.2
+ }
+ ],
+ "avoid_mob_sound": "retreat",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 10,
+ "walk_speed_multiplier": 0.8,
+ "sprint_speed_multiplier": 1.33
+ }
+ ]
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 5,
+ "max_dist": 16,
+ "max_flee": 20,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "operator": "!=",
+ "subject": "other",
+ "value": "panda"
+ },
+ "max_dist": 16,
+ "sprint_speed_multiplier": 1.5
+ }
+ ]
+}
+```
+
+phantom
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 0,
+ "max_dist": 16.0,
+ "ignore_visibility": true,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "ocelot"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "cat"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 4,
+ "remove_target": true,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie_pigman"
+ }
+ ]
+ },
+ "max_dist": 6
+ },
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zoglin"
+ }
+ ]
+ },
+ "max_dist": 6
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_target",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "hoglin"
+ }
+ ]
+ },
+ "sprint_speed_multiplier": 1.2,
+ "check_if_outnumbered": true
+ }
+ ],
+ "on_escape_event": {
+ "event": "become_calm_event",
+ "target": "self"
+ },
+ "avoid_mob_sound": "retreat",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+pufferfish
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ "max_dist": 6,
+ "walk_speed_multiplier": 1.5,
+ "sprint_speed_multiplier": 2.0
+ }
+ ]
+}
+```
+
+rabbit
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 4,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 8,
+ "walk_speed_multiplier": 1.5,
+ "sprint_speed_multiplier": 1.8
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wolf"
+ },
+ "max_dist": 4,
+ "walk_speed_multiplier": 1.5,
+ "sprint_speed_multiplier": 1.8
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ },
+ "max_dist": 4,
+ "walk_speed_multiplier": 1.5,
+ "sprint_speed_multiplier": 1.5
+ }
+ ]
+}
+```
+
+salmon
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ "max_dist": 3,
+ "max_flee": 10,
+ "walk_speed_multiplier": 1.5,
+ "sprint_speed_multiplier": 2.0
+ }
+ ]
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 4,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wolf"
+ },
+ "max_dist": 6,
+ "walk_speed_multiplier": 1.2,
+ "sprint_speed_multiplier": 1.2
+ }
+ ]
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 4,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wolf"
+ },
+ "max_dist": 6,
+ "walk_speed_multiplier": 1.2,
+ "sprint_speed_multiplier": 1.2
+ }
+ ]
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ "max_dist": 6,
+ "walk_speed_multiplier": 1.5,
+ "sprint_speed_multiplier": 2.0
+ }
+ ]
+}
+```
+
+villager
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 3,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie_villager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "illager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "vex"
+ }
+ ]
+ },
+ "max_dist": 8,
+ "walk_speed_multiplier": 0.6,
+ "sprint_speed_multiplier": 0.6
+ }
+ ]
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 4,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie_villager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "illager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "vex"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zoglin"
+ }
+ ]
+ },
+ "max_dist": 8,
+ "walk_speed_multiplier": 0.6,
+ "sprint_speed_multiplier": 0.6
+ }
+ ]
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie_villager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie_pigman"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "illager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "vex"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zoglin"
+ }
+ ]
+ },
+ "walk_speed_multiplier": 0.6,
+ "sprint_speed_multiplier": 0.6
+ }
+ ],
+ "max_dist": 6
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.avoid_mob_type": {
+ "priority": 3,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "llama"
+ },
+ "max_dist": 24,
+ "walk_speed_multiplier": 1.5,
+ "sprint_speed_multiplier": 1.5
+ }
+ ],
+ "probability_per_strength": 0.14
+}
+```
+
+## behavior.barter
+
+piglin
+
+```json
+"minecraft:behavior.barter": {
+ "priority": 3
+}
+```
+
+## behavior.beg
+
+wolf
+
+```json
+"minecraft:behavior.beg": {
+ "priority": 9,
+ "look_distance": 8,
+ "look_time": [
+ 2,
+ 4
+ ],
+ "items": [
+ "bone",
+ "porkchop",
+ "cooked_porkchop",
+ "chicken",
+ "cooked_chicken",
+ "beef",
+ "cooked_beef",
+ "rotten_flesh",
+ "muttonraw",
+ "muttoncooked",
+ "rabbit",
+ "cooked_rabbit"
+ ]
+}
+```
+
+## behavior.breed
+
+axolotl
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 1,
+ "speed_multiplier": 1.0
+}
+```
+
+bee
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+camel
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+cat
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+chicken
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+cow
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+donkey
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+frog
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 4
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 0.6
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 0.6
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+mooshroom
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+pig
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+rabbit
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 2,
+ "speed_multiplier": 0.8
+}
+```
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+sheep
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+sniffer
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 3,
+ "speed_multiplier": 1.0
+}
+```
+
+strider
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.breed": {
+ "priority": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+## behavior.celebrate
+
+evocation_illager
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+ravager
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.celebrate": {
+ "priority": 5,
+ "celebration_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "jump_interval": {
+ "range_min": 1.0,
+ "range_max": 3.5
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+## behavior.celebrate_survive
+
+villager
+
+```json
+"minecraft:behavior.celebrate_survive": {
+ "priority": 5,
+ "fireworks_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.celebrate_survive": {
+ "priority": 5,
+ "fireworks_interval": {
+ "range_min": 2.0,
+ "range_max": 7.0
+ },
+ "duration": 30.0,
+ "on_celebration_end_event": {
+ "event": "minecraft:stop_celebrating",
+ "target": "self"
+ }
+}
+```
+
+## behavior.charge_attack
+
+vex
+
+```json
+"minecraft:behavior.charge_attack": {
+ "priority": 4
+}
+```
+
+## behavior.charge_held_item
+
+piglin
+
+```json
+"minecraft:behavior.charge_held_item": {
+ "priority": 3,
+ "items": [
+ "minecraft:arrow"
+ ]
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.charge_held_item": {
+ "priority": 3,
+ "items": [
+ "minecraft:arrow"
+ ]
+}
+```
+
+## behavior.circle_around_anchor
+
+phantom
+
+```json
+"minecraft:behavior.circle_around_anchor": {
+ "priority": 3,
+ "radius_change": 1.0,
+ "radius_adjustment_chance": 0.004,
+ "height_adjustment_chance": 0.002857,
+ "goal_radius": 1.0,
+ "angle_change": 15.0,
+ "radius_range": [
+ 5.0,
+ 15.0
+ ],
+ "height_offset_range": [
+ -4.0,
+ 5.0
+ ],
+ "height_above_target_range": [
+ 20.0,
+ 40.0
+ ]
+}
+```
+
+## behavior.controlled_by_player
+
+pig
+
+```json
+"minecraft:behavior.controlled_by_player": {
+ "priority": 0
+}
+```
+
+strider
+
+```json
+"minecraft:behavior.controlled_by_player": {
+ "priority": 0,
+ "mount_speed_multiplier": 1.45
+}
+```
+
+## behavior.croak
+
+frog
+
+```json
+"minecraft:behavior.croak": {
+ "priority": 9,
+ "interval": [
+ 10,
+ 20
+ ],
+ "duration": 4.5,
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "value": false
+ },
+ {
+ "test": "in_lava",
+ "value": false
+ }
+ ]
+ }
+}
+```
+
+## behavior.defend_trusted_target
+
+fox
+
+```json
+"minecraft:behavior.defend_trusted_target": {
+ "priority": 0,
+ "within_radius": 25,
+ "must_see": false,
+ "aggro_sound": "mad",
+ "sound_chance": 0.05,
+ "on_defend_start": {
+ "event": "minecraft:fox_configure_defending",
+ "target": "self"
+ }
+}
+```
+
+## behavior.defend_village_target
+
+iron_golem
+
+```json
+"minecraft:behavior.defend_village_target": {
+ "priority": 1,
+ "must_reach": true,
+ "attack_chance": 0.05,
+ "entity_types": {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ ]
+ }
+ }
+}
+```
+
+## behavior.delayed_attack
+
+ravager
+
+```json
+"minecraft:behavior.delayed_attack": {
+ "priority": 4,
+ "attack_once": false,
+ "track_target": true,
+ "require_complete_path": false,
+ "random_stop_interval": 0,
+ "reach_multiplier": 1.5,
+ "speed_multiplier": 1.0,
+ "attack_duration": 0.75,
+ "hit_delay_pct": 0.5
+}
+```
+
+## behavior.dig
+
+warden
+
+```json
+"minecraft:behavior.dig": {
+ "priority": 1,
+ "duration": 5.5,
+ "idle_time": 60.0,
+ "vibration_is_disturbance": true,
+ "suspicion_is_disturbance": true,
+ "digs_in_daylight": false,
+ "on_start": {
+ "event": "on_digging_event",
+ "target": "self"
+ }
+}
+```
+
+## behavior.dragonchargeplayer
+
+ender_dragon
+
+```json
+"minecraft:behavior.dragonchargeplayer": {
+ "priority": 1
+}
+```
+
+## behavior.dragondeath
+
+ender_dragon
+
+```json
+"minecraft:behavior.dragondeath": {
+ "priority": 0
+}
+```
+
+## behavior.dragonflaming
+
+ender_dragon
+
+```json
+"minecraft:behavior.dragonflaming": {
+ "priority": 1
+}
+```
+
+## behavior.dragonholdingpattern
+
+ender_dragon
+
+```json
+"minecraft:behavior.dragonholdingpattern": {
+ "priority": 3
+}
+```
+
+## behavior.dragonlanding
+
+ender_dragon
+
+```json
+"minecraft:behavior.dragonlanding": {
+ "priority": 0
+}
+```
+
+## behavior.dragonscanning
+
+ender_dragon
+
+```json
+"minecraft:behavior.dragonscanning": {
+ "priority": 2
+}
+```
+
+## behavior.dragonstrafeplayer
+
+ender_dragon
+
+```json
+"minecraft:behavior.dragonstrafeplayer": {
+ "priority": 2
+}
+```
+
+## behavior.dragontakeoff
+
+ender_dragon
+
+```json
+"minecraft:behavior.dragontakeoff": {
+ "priority": 0
+}
+```
+
+## behavior.drink_milk
+
+wandering_trader
+
+```json
+"minecraft:behavior.drink_milk": {
+ "priority": 5,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ },
+ {
+ "test": "is_visible",
+ "subject": "self",
+ "value": false
+ },
+ {
+ "test": "is_avoiding_mobs",
+ "subject": "self",
+ "value": false
+ }
+ ]
+ }
+}
+```
+
+## behavior.drink_potion
+
+wandering_trader
+
+```json
+"minecraft:behavior.drink_potion": {
+ "priority": 1,
+ "speed_modifier": -0.2,
+ "potions": [
+ {
+ "id": 7,
+ "chance": 1.0,
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 18000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ {
+ "test": "is_visible",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_avoiding_mobs",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "all_of": [
+ {
+ "test": "has_component",
+ "subject": "self",
+ "value": "minecraft:angry"
+ },
+ {
+ "test": "is_family",
+ "subject": "target",
+ "operator": "!=",
+ "value": "player"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "id": 8,
+ "chance": 1.0,
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 18000
+ },
+ {
+ "test": "is_visible",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_avoiding_mobs",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "value": "minecraft:angry"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.drink_potion": {
+ "priority": 1,
+ "speed_modifier": -0.25,
+ "potions": [
+ {
+ "id": 19,
+ "chance": 0.15,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_underwater",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "none_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "self",
+ "value": "water_breathing"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "id": 12,
+ "chance": 0.15,
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "on_fire",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "test": "on_hot_block",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "test": "taking_fire_damage",
+ "subject": "self",
+ "value": true
+ }
+ ]
+ },
+ {
+ "none_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "self",
+ "value": "fire_resistance"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "id": 21,
+ "chance": 0.05,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_missing_health",
+ "subject": "self",
+ "value": true
+ }
+ ]
+ }
+ },
+ {
+ "id": 14,
+ "chance": 0.25,
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_target",
+ "subject": "self",
+ "value": true
+ },
+ {
+ "none_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "self",
+ "value": "speed"
+ }
+ ]
+ },
+ {
+ "test": "target_distance",
+ "subject": "self",
+ "value": 11.0,
+ "operator": ">="
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+## behavior.drop_item_for
+
+cat
+
+```json
+"minecraft:behavior.drop_item_for": {
+ "priority": 1,
+ "seconds_before_pickup": 0.0,
+ "cooldown": 0.25,
+ "drop_item_chance": 0.7,
+ "offering_distance": 5.0,
+ "minimum_teleport_distance": 2.0,
+ "max_head_look_at_height": 10.0,
+ "target_range": [
+ 5.0,
+ 5.0,
+ 5.0
+ ],
+ "teleport_offset": [
+ 0.0,
+ 1.0,
+ 0.0
+ ],
+ "time_of_day_range": [
+ 0.74999,
+ 0.8
+ ],
+ "speed_multiplier": 1.0,
+ "search_range": 5,
+ "search_height": 2,
+ "search_count": 0,
+ "goal_radius": 1.0,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 6
+ }
+ ],
+ "loot_table": "loot_tables/entities/cat_gift.json",
+ "on_drop_attempt": {
+ "event": "minecraft:cat_gifted_owner",
+ "target": "self"
+ }
+}
+```
+
+## behavior.eat_block
+
+sheep
+
+```json
+"minecraft:behavior.eat_block": {
+ "priority": 6,
+ "success_chance": "query.is_baby ? 0.02 : 0.001",
+ "time_until_eat": 1.8,
+ "eat_and_replace_block_pairs": [
+ {
+ "eat_block": "grass",
+ "replace_block": "dirt"
+ },
+ {
+ "eat_block": "tallgrass",
+ "replace_block": "air"
+ }
+ ],
+ "on_eat": {
+ "event": "minecraft:on_eat_block",
+ "target": "self"
+ }
+}
+```
+
+## behavior.eat_carried_item
+
+fox
+
+```json
+"minecraft:behavior.eat_carried_item": {
+ "priority": 12,
+ "delay_before_eating": 28
+}
+```
+
+## behavior.eat_mob
+
+frog
+
+```json
+"minecraft:behavior.eat_mob": {
+ "priority": 7,
+ "run_speed": 2.0,
+ "eat_animation_time": 0.3,
+ "pull_in_force": 0.75,
+ "reach_mob_distance": 1.75,
+ "eat_mob_sound": "tongue",
+ "loot_table": "loot_tables/entities/frog.json"
+}
+```
+
+## behavior.emerge
+
+warden
+
+```json
+"minecraft:behavior.emerge": {
+ "duration": 7.0,
+ "on_done": {
+ "event": "minecraft:emerged",
+ "target": "self"
+ }
+}
+```
+
+## behavior.enderman_leave_block
+
+enderman
+
+```json
+"minecraft:behavior.enderman_leave_block": {
+ "priority": 10
+}
+```
+
+## behavior.enderman_take_block
+
+enderman
+
+```json
+"minecraft:behavior.enderman_take_block": {
+ "priority": 11
+}
+```
+
+## behavior.equip_item
+
+drowned
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 2
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 2
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 5
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 2
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.equip_item": {
+ "priority": 3
+}
+```
+
+## behavior.explore_outskirts
+
+villager_v2
+
+```json
+"minecraft:behavior.explore_outskirts": {}
+```
+
+```json
+"minecraft:behavior.explore_outskirts": {
+ "priority": 9,
+ "next_xz": 5,
+ "next_y": 3,
+ "min_wait_time": 3.0,
+ "max_wait_time": 10.0,
+ "max_travel_time": 60.0,
+ "speed_multiplier": 0.6,
+ "explore_dist": 6.0,
+ "min_perimeter": 1.0,
+ "min_dist_from_target": 2.5,
+ "timer_ratio": 2.0,
+ "dist_from_boundary": [
+ 5.0,
+ 0.0,
+ 5.0
+ ]
+}
+```
+
+## behavior.feeling_happy
+
+sniffer
+
+```json
+"minecraft:behavior.feeling_happy": {
+ "priority": 5,
+ "cooldown_range": 0.0,
+ "duration_range": [
+ 2.0,
+ 5.0
+ ],
+ "on_end": {
+ "event": "on_feeling_happy_end",
+ "target": "self"
+ }
+}
+```
+
+## behavior.fertilize_farm_block
+
+villager_v2
+
+```json
+"minecraft:behavior.fertilize_farm_block": {
+ "priority": 8
+}
+```
+
+## behavior.find_cover
+
+fox
+
+```json
+"minecraft:behavior.find_cover": {
+ "priority": 0,
+ "speed_multiplier": 1,
+ "cooldown_time": 0.0
+}
+```
+
+```json
+"minecraft:behavior.find_cover": {
+ "priority": 9,
+ "speed_multiplier": 1,
+ "cooldown_time": 5.0
+}
+```
+
+## behavior.find_mount
+
+husk
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16
+}
+```
+
+parrot
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 3,
+ "within_radius": 16,
+ "avoid_water": true,
+ "start_delay": 100,
+ "target_needed": false,
+ "mount_distance": 2.0
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16,
+ "start_delay": 15,
+ "max_failed_attempts": 20
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16,
+ "start_delay": 15,
+ "max_failed_attempts": 20
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.find_mount": {
+ "priority": 1,
+ "within_radius": 16
+}
+```
+
+## behavior.find_underwater_treasure
+
+dolphin
+
+```json
+"minecraft:behavior.find_underwater_treasure": {
+ "priority": 2,
+ "speed_multiplier": 2.0,
+ "search_range": 30,
+ "stop_distance": 50
+}
+```
+
+## behavior.flee_sun
+
+drowned
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 2,
+ "speed_multiplier": 1
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 2,
+ "speed_multiplier": 1
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 2,
+ "speed_multiplier": 1
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 4,
+ "speed_multiplier": 1
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.flee_sun": {
+ "priority": 4,
+ "speed_multiplier": 1
+}
+```
+
+## behavior.float
+
+allay
+
+```json
+"minecraft:behavior.float": {
+ "priority": 7
+}
+```
+
+bat
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+bee
+
+```json
+"minecraft:behavior.float": {
+ "priority": 19
+}
+```
+
+blaze
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+camel
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0,
+ "sink_with_passengers": true
+}
+```
+
+cat
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+cave_spider
+
+```json
+"minecraft:behavior.float": {
+ "priority": 1
+}
+```
+
+chicken
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+cow
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+creeper
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+donkey
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+enderman
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+endermite
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+ghast
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+mooshroom
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+mule
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+parrot
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+pig
+
+```json
+"minecraft:behavior.float": {
+ "priority": 2
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+polar_bear
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+rabbit
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+ravager
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+sheep
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+silverfish
+
+```json
+"minecraft:behavior.float": {
+ "priority": 1
+}
+```
+
+sniffer
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+spider
+
+```json
+"minecraft:behavior.float": {
+ "priority": 1
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+vex
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+villager
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+warden
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.float": {
+ "priority": 1
+}
+```
+
+wither
+
+```json
+"minecraft:behavior.float": {
+ "priority": 1
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.float": {
+ "priority": 0
+}
+```
+
+## behavior.float_wander
+
+bat
+
+```json
+"minecraft:behavior.float_wander": {
+ "xz_dist": 10,
+ "y_dist": 7,
+ "y_offset": -2.0,
+ "random_reselect": true,
+ "float_duration": [
+ 0.1,
+ 0.35
+ ]
+}
+```
+
+ghast
+
+```json
+"minecraft:behavior.float_wander": {
+ "priority": 2,
+ "must_reach": true
+}
+```
+
+## behavior.follow_caravan
+
+llama
+
+```json
+"minecraft:behavior.follow_caravan": {
+ "priority": 3,
+ "speed_multiplier": 2.1,
+ "entity_count": 10,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "llama"
+ }
+ }
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.follow_caravan": {
+ "priority": 3,
+ "speed_multiplier": 2.1,
+ "entity_count": 10,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "llama"
+ }
+ }
+}
+```
+
+## behavior.follow_mob
+
+parrot
+
+```json
+"minecraft:behavior.follow_mob": {
+ "priority": 3,
+ "speed_multiplier": 1.0,
+ "stop_distance": 3,
+ "search_range": 20
+}
+```
+
+## behavior.follow_owner
+
+allay
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 6,
+ "speed_multiplier": 8,
+ "start_distance": 16,
+ "stop_distance": 4,
+ "can_teleport": false,
+ "ignore_vibration": false
+}
+```
+
+cat
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "start_distance": 10,
+ "stop_distance": 2
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "start_distance": 10,
+ "stop_distance": 2
+}
+```
+
+parrot
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 2,
+ "speed_multiplier": 1.0,
+ "start_distance": 5,
+ "stop_distance": 1
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.follow_owner": {
+ "priority": 6,
+ "speed_multiplier": 1.0,
+ "start_distance": 10,
+ "stop_distance": 2
+}
+```
+
+## behavior.follow_parent
+
+axolotl
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.1
+}
+```
+
+bee
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 11,
+ "speed_multiplier": 1.1
+}
+```
+
+camel
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 2.5
+}
+```
+
+chicken
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.1
+}
+```
+
+cow
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.1
+}
+```
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 6,
+ "speed_multiplier": 1.1
+}
+```
+
+dolphin
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 4,
+ "speed_multiplier": 1.1
+}
+```
+
+donkey
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 9,
+ "speed_multiplier": 1.1
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 6,
+ "speed_multiplier": 1
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 6,
+ "speed_multiplier": 1
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+mooshroom
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.1
+}
+```
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 6,
+ "speed_multiplier": 1.1
+}
+```
+
+mule
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 13,
+ "speed_multiplier": 1.1
+}
+```
+
+pig
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 6,
+ "speed_multiplier": 1.1
+}
+```
+
+polar_bear
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 4,
+ "speed_multiplier": 1.25
+}
+```
+
+rabbit
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 6,
+ "speed_multiplier": 1.1
+}
+```
+
+sheep
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.1
+}
+```
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 6,
+ "speed_multiplier": 1.1
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+strider
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 6,
+ "speed_multiplier": 1.1
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:behavior.follow_parent": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+## behavior.follow_target_captain
+
+pillager
+
+```json
+"minecraft:behavior.follow_target_captain": {
+ "priority": 5,
+ "speed_multiplier": 0.8,
+ "within_radius": 64,
+ "follow_distance": 5
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.follow_target_captain": {
+ "priority": 5,
+ "speed_multiplier": 0.8,
+ "within_radius": 64,
+ "follow_distance": 5
+}
+```
+
+## behavior.go_and_give_items_to_noteblock
+
+allay
+
+```json
+"minecraft:behavior.go_and_give_items_to_noteblock": {
+ "priority": 3,
+ "run_speed": 8,
+ "throw_sound": "item_thrown",
+ "on_item_throw": [
+ {
+ "event": "pickup_item_delay",
+ "target": "self"
+ }
+ ]
+}
+```
+
+## behavior.go_and_give_items_to_owner
+
+allay
+
+```json
+"minecraft:behavior.go_and_give_items_to_owner": {
+ "priority": 4,
+ "run_speed": 8,
+ "throw_sound": "item_thrown",
+ "on_item_throw": [
+ {
+ "event": "pickup_item_delay",
+ "target": "self"
+ }
+ ]
+}
+```
+
+## behavior.go_home
+
+bee
+
+```json
+"minecraft:behavior.go_home": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "interval": 1,
+ "goal_radius": 1.2,
+ "on_home": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_block",
+ "subject": "block",
+ "value": "minecraft:bee_nest"
+ },
+ {
+ "test": "is_block",
+ "subject": "block",
+ "value": "minecraft:beehive"
+ }
+ ]
+ },
+ "event": "minecraft:bee_returned_to_hive",
+ "target": "block"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_block",
+ "subject": "block",
+ "operator": "!=",
+ "value": "minecraft:bee_nest"
+ },
+ {
+ "test": "is_block",
+ "subject": "block",
+ "operator": "!=",
+ "value": "minecraft:beehive"
+ }
+ ]
+ },
+ "event": "find_hive_event",
+ "target": "self"
+ }
+ ],
+ "on_failed": [
+ {
+ "event": "find_hive_event",
+ "target": "self"
+ }
+ ]
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:behavior.go_home": {
+ "priority": 6,
+ "interval": 200,
+ "speed_multiplier": 0.6,
+ "goal_radius": 4.0,
+ "on_failed": [
+ {
+ "event": "go_back_to_spawn_failed",
+ "target": "self"
+ }
+ ]
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.go_home": {
+ "priority": 1,
+ "speed_multiplier": 1.0,
+ "interval": 700,
+ "goal_radius": 4.0,
+ "on_home": [
+ {
+ "event": "minecraft:go_lay_egg",
+ "target": "self"
+ }
+ ]
+}
+```
+
+## behavior.guardian_attack
+
+elder_guardian
+
+```json
+"minecraft:behavior.guardian_attack": {
+ "priority": 4
+}
+```
+
+guardian
+
+```json
+"minecraft:behavior.guardian_attack": {
+ "priority": 4
+}
+```
+
+```json
+"minecraft:behavior.guardian_attack": {
+ "priority": 4
+}
+```
+
+## behavior.harvest_farm_block
+
+villager
+
+```json
+"minecraft:behavior.harvest_farm_block": {
+ "priority": 9,
+ "speed_multiplier": 0.5
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.harvest_farm_block": {}
+```
+
+```json
+"minecraft:behavior.harvest_farm_block": {
+ "priority": 7
+}
+```
+
+## behavior.hide
+
+villager_v2
+
+```json
+"minecraft:behavior.hide": {
+ "priority": 0,
+ "speed_multiplier": 0.8,
+ "poi_type": "bed",
+ "duration": 30.0
+}
+```
+
+## behavior.hold_ground
+
+pillager
+
+```json
+"minecraft:behavior.hold_ground": {
+ "priority": 5,
+ "min_radius": 10,
+ "broadcast": true,
+ "broadcast_range": 8,
+ "within_radius_event": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:behavior.hold_ground": {
+ "priority": 6,
+ "min_radius": 10,
+ "broadcast": true,
+ "broadcast_range": 8,
+ "within_radius_event": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+ }
+}
+```
+
+## behavior.hurt_by_target
+
+bee
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+blaze
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+cave_spider
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+creeper
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 2
+}
+```
+
+dolphin
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+drowned
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+enderman
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 3
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+ghast
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 2
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+iron_golem
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 2,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "creeper"
+ }
+ }
+}
+```
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 2,
+ "entity_types": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "creeper"
+ }
+ ]
+ }
+ }
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1,
+ "hurt_owner": true
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "illager"
+ },
+ "max_dist": 64
+ }
+}
+```
+
+polar_bear
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+ravager
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 2,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "illager"
+ },
+ "max_dist": 64
+ }
+}
+```
+
+shulker
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 2,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "shulker"
+ }
+ }
+}
+```
+
+silverfish
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1,
+ "alert_same_type": true
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+spider
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1,
+ "hurt_owner": true,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "trader_llama"
+ }
+ }
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+vex
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+wither
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 2
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 3
+}
+```
+
+zoglin
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.hurt_by_target": {
+ "priority": 1
+}
+```
+
+## behavior.inspect_bookshelf
+
+villager_v2
+
+```json
+"minecraft:behavior.inspect_bookshelf": {}
+```
+
+```json
+"minecraft:behavior.inspect_bookshelf": {
+ "priority": 8,
+ "speed_multiplier": 0.6,
+ "search_range": 4,
+ "search_height": 3,
+ "goal_radius": 0.8,
+ "search_count": 0
+}
+```
+
+## behavior.investigate_suspicious_location
+
+warden
+
+```json
+"minecraft:behavior.investigate_suspicious_location": {
+ "priority": 5,
+ "speed_multiplier": 0.7
+}
+```
+
+## behavior.jump_to_block
+
+frog
+
+```json
+"minecraft:behavior.jump_to_block": {
+ "priority": 10,
+ "search_width": 8,
+ "search_height": 4,
+ "minimum_path_length": 2,
+ "minimum_distance": 1,
+ "scale_factor": 0.6,
+ "max_velocity": 1,
+ "cooldown_range": [
+ 5,
+ 7
+ ],
+ "preferred_blocks": [
+ "minecraft:waterlily",
+ "minecraft:big_dripleaf"
+ ],
+ "preferred_blocks_chance": 0.5,
+ "forbidden_blocks": [
+ "minecraft:water"
+ ]
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.jump_to_block": {
+ "priority": 8,
+ "search_width": 10,
+ "search_height": 10,
+ "minimum_path_length": 8,
+ "minimum_distance": 1,
+ "scale_factor": 0.6,
+ "cooldown_range": [
+ 30,
+ 60
+ ]
+}
+```
+
+## behavior.knockback_roar
+
+ravager
+
+```json
+"minecraft:behavior.knockback_roar": {
+ "priority": 1,
+ "duration": 1,
+ "attack_time": 0.5,
+ "knockback_damage": 6,
+ "knockback_horizontal_strength": 3,
+ "knockback_vertical_strength": 3,
+ "knockback_range": 4,
+ "knockback_filters": {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "ravager"
+ },
+ "damage_filters": {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "illager"
+ },
+ "on_roar_end": {
+ "event": "minecraft:end_roar"
+ },
+ "cooldown_time": 0.1
+}
+```
+
+## behavior.lay_down
+
+panda
+
+```json
+"minecraft:behavior.lay_down": {
+ "priority": 5,
+ "interval": 400,
+ "random_stop_interval": 2000
+}
+```
+
+## behavior.lay_egg
+
+frog
+
+```json
+"minecraft:behavior.lay_egg": {
+ "priority": 2,
+ "speed_multiplier": 1.0,
+ "search_range": 10,
+ "search_height": 3,
+ "goal_radius": 1.7,
+ "target_blocks": [
+ "minecraft:water"
+ ],
+ "target_materials_above_block": [
+ "Air"
+ ],
+ "allow_laying_from_below": true,
+ "use_default_animation": false,
+ "lay_seconds": 2,
+ "egg_type": "minecraft:frog_spawn",
+ "lay_egg_sound": "lay_spawn",
+ "on_lay": {
+ "event": "laid_egg",
+ "target": "self"
+ }
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.lay_egg": {
+ "priority": 1,
+ "speed_multiplier": 1.0,
+ "search_range": 16,
+ "search_height": 4,
+ "goal_radius": 1.5,
+ "on_lay": {
+ "event": "minecraft:laid_egg",
+ "target": "self"
+ }
+}
+```
+
+## behavior.leap_at_target
+
+cat
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 3,
+ "target_dist": 0.3
+}
+```
+
+cave_spider
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 4,
+ "yd": 0.4,
+ "must_be_on_ground": false
+}
+```
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 4,
+ "yd": 0.4,
+ "must_be_on_ground": false
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 3,
+ "target_dist": 0.3
+}
+```
+
+spider
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 4,
+ "yd": 0.4,
+ "must_be_on_ground": false
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.leap_at_target": {
+ "priority": 4,
+ "target_dist": 0.4
+}
+```
+
+## behavior.look_at_entity
+
+evocation_illager
+
+```json
+"minecraft:behavior.look_at_entity": {
+ "priority": 10,
+ "look_distance": 8.0,
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ }
+}
+```
+
+ravager
+
+```json
+"minecraft:behavior.look_at_entity": {
+ "priority": 10,
+ "look_distance": 8,
+ "angle_of_view_horizontal": 45,
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ }
+}
+```
+
+vex
+
+```json
+"minecraft:behavior.look_at_entity": {
+ "priority": 9,
+ "look_distance": 6.0,
+ "probability": 0.02,
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ }
+}
+```
+
+## behavior.look_at_player
+
+allay
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+axolotl
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 10,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+camel
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+cat
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 9
+}
+```
+
+cave_spider
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+chicken
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+cow
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+creeper
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 6,
+ "look_distance": 8
+}
+```
+
+dolphin
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6
+}
+```
+
+donkey
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+drowned
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6,
+ "probability": 0.02
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 12.0,
+ "probability": 0.01
+}
+```
+
+enderman
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 8.0,
+ "probability": 8.0
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 9,
+ "look_distance": 3.0,
+ "probability": 1.0
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 14,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+frog
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 12,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 10,
+ "look_distance": 6,
+ "probability": 0.02
+}
+```
+
+guardian
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 12.0,
+ "probability": 0.01
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6,
+ "probability": 0.02
+}
+```
+
+iron_golem
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+mooshroom
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+mule
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+npc
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 0,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 9
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+parrot
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 1,
+ "look_distance": 8.0
+}
+```
+
+pig
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 11,
+ "look_distance": 8
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 8
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 9,
+ "look_distance": 8
+}
+```
+
+polar_bear
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 6,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+rabbit
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 11
+}
+```
+
+ravager
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6,
+ "angle_of_view_horizontal": 45,
+ "probability": 1
+}
+```
+
+sheep
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+shulker
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 1,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 8
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+sniffer
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+snow_golem
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 3,
+ "look_distance": 6.0
+}
+```
+
+spider
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 8
+}
+```
+
+strider
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 9,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+tadpole
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 3,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+vex
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 9,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+villager
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 12,
+ "look_distance": 8,
+ "probability": 0.02
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 9,
+ "look_distance": 8,
+ "probability": 0.02
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 10,
+ "look_distance": 8,
+ "probability": 0.02
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 8,
+ "probability": 0.02
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 5,
+ "look_distance": 8.0
+}
+```
+
+wither
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 6,
+ "look_distance": 8
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 8
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 6,
+ "target_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+zoglin
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6,
+ "probability": 0.02
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 7,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 8,
+ "look_distance": 6.0,
+ "probability": 0.02
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 10,
+ "look_distance": 6,
+ "probability": 0.02
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.look_at_player": {
+ "priority": 10,
+ "look_distance": 6,
+ "probability": 0.02
+}
+```
+
+## behavior.look_at_target
+
+wither
+
+```json
+"minecraft:behavior.look_at_target": {
+ "priority": 5
+}
+```
+
+## behavior.look_at_trading_player
+
+villager
+
+```json
+"minecraft:behavior.look_at_trading_player": {
+ "priority": 2
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.look_at_trading_player": {
+ "priority": 7
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.look_at_trading_player": {
+ "priority": 4
+}
+```
+
+## behavior.make_love
+
+villager
+
+```json
+"minecraft:behavior.make_love": {
+ "priority": 6
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.make_love": {
+ "priority": 5
+}
+```
+
+## behavior.melee_attack
+
+axolotl
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "on_kill": {
+ "event": "killed_enemy_event",
+ "target": "self"
+ }
+}
+```
+
+bee
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 2,
+ "attack_once": true,
+ "speed_multiplier": 1.4,
+ "on_attack": {
+ "event": "countdown_to_perish_event",
+ "target": "self"
+ }
+}
+```
+
+blaze
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3
+}
+```
+
+cave_spider
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3,
+ "track_target": true,
+ "random_stop_interval": 100,
+ "reach_multiplier": 0.8
+}
+```
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3,
+ "track_target": true,
+ "reach_multiplier": 1.4
+}
+```
+
+creeper
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "speed_multiplier": 1.25,
+ "track_target": false,
+ "reach_multiplier": 0.0
+}
+```
+
+dolphin
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 2,
+ "track_target": true
+}
+```
+
+drowned
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3,
+ "speed_multiplier": 1,
+ "track_target": false,
+ "require_complete_path": true
+}
+```
+
+enderman
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 2
+}
+```
+
+endermite
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3,
+ "track_target": true
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 10,
+ "track_target": true,
+ "require_complete_path": true,
+ "reach_multiplier": 1.5
+}
+```
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 1,
+ "track_target": true,
+ "require_complete_path": true,
+ "reach_multiplier": 1.5
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "track_target": true,
+ "reach_multiplier": 1.0,
+ "cooldown_time": 0.75
+}
+```
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "track_target": true,
+ "reach_multiplier": 2.15,
+ "cooldown_time": 2
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3
+}
+```
+
+iron_golem
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 1,
+ "track_target": true
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 2,
+ "attack_once": true,
+ "track_target": true,
+ "reach_multiplier": 1.0
+}
+```
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 2,
+ "track_target": true,
+ "reach_multiplier": 1.0
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 8,
+ "speed_multiplier": 1.0,
+ "track_target": true
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "track_target": true
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "track_target": true
+}
+```
+
+silverfish
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "track_target": true
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "track_target": true,
+ "speed_multiplier": 1.25
+}
+```
+
+spider
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3,
+ "track_target": true,
+ "reach_multiplier": 0.8
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "track_target": true,
+ "speed_multiplier": 1.25
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3
+}
+```
+
+warden
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "speed_multiplier": 1.2,
+ "melee_fov": 360
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "track_target": true,
+ "speed_multiplier": 1.25
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 5
+}
+```
+
+zoglin
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "reach_multiplier": 2.15,
+ "speed_multiplier": 1.4,
+ "track_target": true
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 3
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 4,
+ "speed_multiplier": 1.5
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 6
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.melee_attack": {
+ "priority": 6
+}
+```
+
+## behavior.mingle
+
+villager_v2
+
+```json
+"minecraft:behavior.mingle": {}
+```
+
+```json
+"minecraft:behavior.mingle": {
+ "priority": 7,
+ "speed_multiplier": 0.5,
+ "duration": 30,
+ "cooldown_time": 10,
+ "mingle_partner_type": "minecraft:villager_v2",
+ "mingle_distance": 2.0
+}
+```
+
+## behavior.mount_pathing
+
+cat
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "target_dist": 0,
+ "track_target": true
+}
+```
+
+cave_spider
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+chicken
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+cow
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+donkey
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+mooshroom
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+mule
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "target_dist": 0,
+ "track_target": true
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 5,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+pig
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+ravager
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+sheep
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 4.0,
+ "track_target": true
+}
+```
+
+spider
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "target_dist": 0,
+ "track_target": true
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.5,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 2,
+ "speed_multiplier": 1.25,
+ "target_dist": 0,
+ "track_target": true
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.mount_pathing": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "target_dist": 0.0,
+ "track_target": true
+}
+```
+
+## behavior.move_indoors
+
+villager
+
+```json
+"minecraft:behavior.move_indoors": {
+ "priority": 4,
+ "speed_multiplier": 0.8
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.move_indoors": {
+ "priority": 6,
+ "speed_multiplier": 0.8,
+ "timeout_cooldown": 8.0
+}
+```
+
+## behavior.move_outdoors
+
+villager
+
+```json
+"minecraft:behavior.move_outdoors": {
+ "priority": 2,
+ "speed_multiplier": 0.8,
+ "timeout_cooldown": 8.0
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.move_outdoors": {
+ "priority": 2,
+ "speed_multiplier": 0.8,
+ "timeout_cooldown": 8.0
+}
+```
+
+## behavior.move_through_village
+
+iron_golem
+
+```json
+"minecraft:behavior.move_through_village": {
+ "priority": 3,
+ "speed_multiplier": 0.6,
+ "only_at_night": true
+}
+```
+
+## behavior.move_to_block
+
+bee
+
+```json
+"minecraft:behavior.move_to_block": {
+ "priority": 10,
+ "tick_interval": 1,
+ "start_chance": 0.5,
+ "search_range": 6,
+ "search_height": 4,
+ "goal_radius": 1.0,
+ "stay_duration": 20.0,
+ "target_selection_method": "random",
+ "target_offset": [
+ 0,
+ 0.25,
+ 0
+ ],
+ "target_block_filters": {
+ "test": "is_waterlogged",
+ "subject": "block",
+ "operator": "==",
+ "value": false
+ },
+ "target_blocks": [
+ "minecraft:red_flower",
+ "minecraft:yellow_flower",
+ "minecraft:wither_rose",
+ "minecraft:double_plant:8",
+ "minecraft:double_plant:9",
+ "minecraft:double_plant:12",
+ "minecraft:double_plant:13",
+ "minecraft:flowering_azalea",
+ "minecraft:azalea_leaves_flowered",
+ "minecraft:mangrove_propagule",
+ "minecraft:pitcher_plant",
+ "minecraft:torchflower",
+ "minecraft:cherry_leaves",
+ "minecraft:pink_petals"
+ ],
+ "on_stay_completed": [
+ {
+ "event": "collected_nectar",
+ "target": "self"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:behavior.move_to_block": {
+ "priority": 10,
+ "search_range": 16,
+ "search_height": 10,
+ "tick_interval": 1,
+ "goal_radius": 0.633,
+ "target_blocks": [
+ "bee_nest",
+ "beehive"
+ ],
+ "on_reach": [
+ {
+ "event": "minecraft:bee_returned_to_hive",
+ "target": "block"
+ }
+ ]
+}
+```
+
+## behavior.move_to_land
+
+frog
+
+```json
+"minecraft:behavior.move_to_land": {
+ "priority": 6,
+ "search_range": 30,
+ "search_height": 8,
+ "search_count": 80,
+ "goal_radius": 2
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.move_to_land": {
+ "priority": 6,
+ "search_range": 16,
+ "search_height": 5,
+ "goal_radius": 0.5
+}
+```
+
+## behavior.move_to_liquid
+
+strider
+
+```json
+"minecraft:behavior.move_to_liquid": {
+ "priority": 7,
+ "search_range": 16,
+ "search_height": 10,
+ "goal_radius": 0.9,
+ "material_type": "Lava",
+ "search_count": 30
+}
+```
+
+## behavior.move_to_random_block
+
+pillager
+
+```json
+"minecraft:behavior.move_to_random_block": {
+ "priority": 6,
+ "speed_multiplier": 0.55,
+ "within_radius": 8,
+ "block_distance": 512
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.move_to_random_block": {
+ "priority": 5,
+ "speed_multiplier": 0.55,
+ "within_radius": 8,
+ "block_distance": 512
+}
+```
+
+## behavior.move_to_village
+
+evocation_illager
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 6,
+ "speed_multiplier": 0.7
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 5,
+ "speed_multiplier": 1.0,
+ "goal_radius": 2.0
+}
+```
+
+ravager
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 5,
+ "speed_multiplier": 1.0,
+ "goal_radius": 2.0
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "goal_radius": 2.0
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.move_to_village": {
+ "priority": 3,
+ "speed_multiplier": 1.2,
+ "goal_radius": 2.0
+}
+```
+
+## behavior.move_to_water
+
+axolotl
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 6,
+ "search_range": 16,
+ "search_height": 5,
+ "search_count": 1,
+ "goal_radius": 0.1
+}
+```
+
+dolphin
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 1,
+ "search_range": 15,
+ "search_height": 5
+}
+```
+
+frog
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 3,
+ "search_range": 20,
+ "search_height": 5,
+ "goal_radius": 1.5
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 4,
+ "search_range": 16,
+ "search_height": 5,
+ "goal_radius": 1.5
+}
+```
+
+```json
+"minecraft:behavior.move_to_water": {
+ "priority": 1,
+ "search_range": 15,
+ "search_height": 5,
+ "goal_radius": 0.1
+}
+```
+
+## behavior.move_towards_dwelling_restriction
+
+cat
+
+```json
+"minecraft:behavior.move_towards_dwelling_restriction": {
+ "priority": 7
+}
+```
+
+iron_golem
+
+```json
+"minecraft:behavior.move_towards_dwelling_restriction": {
+ "priority": 4,
+ "speed_multiplier": 1
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.move_towards_dwelling_restriction": {
+ "priority": 11,
+ "speed_multiplier": 0.6
+}
+```
+
+## behavior.move_towards_home_restriction
+
+bee
+
+```json
+"minecraft:behavior.move_towards_home_restriction": {
+ "priority": 9
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:behavior.move_towards_home_restriction": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+guardian
+
+```json
+"minecraft:behavior.move_towards_home_restriction": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.move_towards_home_restriction": {
+ "priority": 6,
+ "speed_multiplier": 0.6
+}
+```
+
+## behavior.move_towards_target
+
+iron_golem
+
+```json
+"minecraft:behavior.move_towards_target": {
+ "priority": 2,
+ "speed_multiplier": 0.9,
+ "within_radius": 32
+}
+```
+
+## behavior.nap
+
+fox
+
+```json
+"minecraft:behavior.nap": {
+ "priority": 8,
+ "cooldown_min": 2.0,
+ "cooldown_max": 7.0,
+ "mob_detect_dist": 12.0,
+ "mob_detect_height": 6.0,
+ "can_nap_filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ {
+ "test": "on_ground",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "is_underground",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "weather_at_position",
+ "subject": "self",
+ "operator": "!=",
+ "value": "thunderstorm"
+ }
+ ]
+ },
+ "wake_mob_exceptions": {
+ "any_of": [
+ {
+ "test": "trusts",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "==",
+ "value": "fox"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+}
+```
+
+## behavior.nearest_attackable_target
+
+axolotl
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 3,
+ "must_see": true,
+ "reselect_targets": true,
+ "within_radius": 20.0,
+ "must_see_forget_duration": 17.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:attack_cooldown"
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "squid"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "fish"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "tadpole"
+ }
+ ]
+ }
+ ]
+ },
+ "max_dist": 8
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "drowned"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "guardian"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "guardian_elder"
+ }
+ ]
+ }
+ ]
+ },
+ "max_dist": 8
+ }
+ ]
+}
+```
+
+bee
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 10
+ }
+ ]
+}
+```
+
+blaze
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 48.0
+ }
+ ]
+}
+```
+
+cat
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "reselect_targets": true,
+ "within_radius": 16.0,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "rabbit"
+ },
+ "max_dist": 8
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 8
+ }
+ ]
+}
+```
+
+cave_spider
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "attack_interval": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "attack_interval": 10,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+creeper
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "must_see": true,
+ "must_see_forget_duration": 3.0,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+drowned
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "reselect_targets": true,
+ "must_see": true,
+ "within_radius": 12.0,
+ "must_see_forget_duration": 17.0,
+ "persist_time": 0.5,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "in_water",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "test": "is_daytime",
+ "value": false
+ }
+ ]
+ }
+ ]
+ },
+ "max_dist": 20
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "in_water",
+ "subject": "other",
+ "value": true
+ },
+ {
+ "test": "is_daytime",
+ "value": false
+ }
+ ]
+ }
+ ]
+ },
+ "max_dist": 20,
+ "must_see": false
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 20
+ }
+ ]
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "squid"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "attack_interval_min": 1.0,
+ "must_see": true
+}
+```
+
+enderman
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 5,
+ "must_see": true,
+ "attack_interval": 10,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "endermite"
+ },
+ "max_dist": 64
+ }
+ ]
+}
+```
+
+endermite
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 5,
+ "must_see": true,
+ "within_radius": 16.0,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "enderman"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ "max_dist": 20
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ }
+ ]
+ },
+ "max_dist": 20
+ }
+ ],
+ "must_see": true
+}
+```
+
+frog
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 8,
+ "within_radius": 16,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "slime"
+ },
+ {
+ "test": "is_variant",
+ "subject": "other",
+ "operator": "==",
+ "value": 1
+ }
+ ]
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "magmacube"
+ },
+ {
+ "test": "is_variant",
+ "subject": "other",
+ "operator": "==",
+ "value": 1
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "must_see": true
+}
+```
+
+ghast
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 28
+ }
+ ],
+ "must_see": true
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 6,
+ "within_radius": 16,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "goat"
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:attack_cooldown"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "must_see": true
+}
+```
+
+guardian
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "squid"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "attack_interval_min": 1.0,
+ "must_see": true
+}
+```
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "squid"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "axolotl"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "attack_interval_min": 1.0,
+ "must_see": true
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 4,
+ "within_radius": 16.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:attack_cooldown"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "must_see": true
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "reselect_targets": true,
+ "within_radius": 25.0,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 35
+ },
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ "max_dist": 35,
+ "must_see": false
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 35
+ }
+ ]
+}
+```
+
+iron_golem
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 3,
+ "must_reach": true,
+ "must_see": true,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "creeper"
+ }
+ ]
+ },
+ "within_default": 10
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "hoglin"
+ },
+ {
+ "test": "is_difficulty",
+ "operator": "!=",
+ "value": "peaceful"
+ }
+ ]
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zoglin"
+ },
+ {
+ "test": "is_difficulty",
+ "operator": "!=",
+ "value": "peaceful"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "attack_interval": 16,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wolf"
+ },
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_tamed"
+ }
+ ]
+ },
+ "max_dist": 10
+ }
+ ],
+ "must_see": false,
+ "must_reach": true
+}
+```
+
+magma_cube
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "must_see": true
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "reselect_targets": true,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "chicken"
+ },
+ "max_dist": 8
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 8
+ }
+ ]
+}
+```
+
+phantom
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "reselect_targets": true,
+ "scan_interval": 20,
+ "within_radius": 64.0,
+ "must_see_forget_duration": 0.5,
+ "target_search_height": 80.0,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 64
+ }
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 7,
+ "within_radius": 16.0,
+ "persist_time": 0.0,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wither"
+ }
+ ]
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "self",
+ "value": "piglin_hunter"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "hoglin_huntable"
+ },
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:attack_cooldown"
+ }
+ ]
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "head",
+ "operator": "!=",
+ "value": "golden_helmet"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "torso",
+ "operator": "!=",
+ "value": "golden_chestplate"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "leg",
+ "operator": "!=",
+ "value": "golden_leggings"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "feet",
+ "operator": "!=",
+ "value": "golden_boots"
+ }
+ ]
+ },
+ "max_dist": 16,
+ "reevaluate_description": true
+ },
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "has_container_open",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "must_see": true
+}
+```
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 7,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 3,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "reselect_targets": true,
+ "within_radius": 16.0,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+polar_bear
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 4,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 4,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "fox"
+ },
+ "max_dist": 16
+ }
+ ],
+ "must_see": false
+}
+```
+
+ravager
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 3,
+ "must_see": true,
+ "within_radius": 16.0,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "subject": "other",
+ "test": "is_family",
+ "value": "player"
+ },
+ {
+ "subject": "other",
+ "test": "is_family",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+shulker
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 3,
+ "entity_types": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 16
+ },
+ "must_see": true
+}
+```
+
+silverfish
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "attack_interval": 10,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 8
+ }
+ ]
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "reselect_targets": true,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+slime
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "must_see": true
+}
+```
+
+snow_golem
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 1,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ },
+ "within_default": 6
+ }
+ ]
+}
+```
+
+spider
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "attack_interval": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "reselect_targets": true,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "attack_interval": 16,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wolf"
+ },
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_tamed"
+ }
+ ]
+ },
+ "max_dist": 10
+ }
+ ],
+ "must_see": false,
+ "must_reach": true
+}
+```
+
+vex
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 3,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ "max_dist": 70
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ }
+ ]
+ },
+ "max_dist": 70
+ }
+ ],
+ "must_see": true
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "within_radius": 12.0,
+ "must_see_forget_duration": 40.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "illager"
+ }
+ ]
+ },
+ "max_dist": 12
+ }
+ ]
+}
+```
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "within_radius": 12.0,
+ "must_see_forget_duration": 40.0,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ "max_dist": 12
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ }
+ ]
+ },
+ "max_dist": 12
+ }
+ ]
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 10
+ }
+ ],
+ "must_reach": true
+}
+```
+
+wither
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 3,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 70
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "undead"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "inanimate"
+ }
+ ]
+ },
+ "max_dist": 70
+ }
+ ],
+ "must_see": true
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "reselect_targets": true,
+ "must_see": true,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "piglin"
+ },
+ {
+ "test": "is_difficulty",
+ "operator": "!=",
+ "value": "peaceful"
+ }
+ ]
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 4,
+ "reselect_targets": true,
+ "must_see": true,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "skeleton"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "sheep"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "rabbit"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "fox"
+ }
+ ]
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 16
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "skeleton"
+ },
+ {
+ "test": "is_underwater",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 5,
+ "must_see": true,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "skeleton"
+ },
+ "max_dist": 16
+ }
+ ]
+}
+```
+
+zoglin
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 3,
+ "within_radius": 16.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "zoglin"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "creeper"
+ }
+ ]
+ },
+ "max_dist": 16
+ }
+ ],
+ "must_see": true
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "reselect_targets": true,
+ "within_radius": 25.0,
+ "must_see_forget_duration": 17.0,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 35
+ },
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ "max_dist": 35,
+ "must_see": false
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 35
+ }
+ ]
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "reselect_targets": true,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ }
+ ]
+ },
+ "max_dist": 35
+ },
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ "max_dist": 35,
+ "must_see": false
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 35
+ }
+ ]
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.nearest_attackable_target": {
+ "priority": 2,
+ "must_see": true,
+ "reselect_targets": true,
+ "entity_types": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "snowgolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "irongolem"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wandering_trader"
+ }
+ ]
+ },
+ "max_dist": 35
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 35
+ }
+ ]
+}
+```
+
+## behavior.nearest_prioritized_attackable_target
+
+fox
+
+```json
+"minecraft:behavior.nearest_prioritized_attackable_target": {
+ "priority": 6,
+ "attack_interval": 2,
+ "reselect_targets": true,
+ "target_search_height": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "rabbit"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "chicken"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "cod"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "salmon"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "tropicalfish"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 12,
+ "priority": 0
+ }
+ ]
+}
+```
+
+```json
+"minecraft:behavior.nearest_prioritized_attackable_target": {
+ "priority": 6,
+ "attack_interval": 2,
+ "reselect_targets": true,
+ "target_search_height": 5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "rabbit"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "chicken"
+ },
+ "max_dist": 12,
+ "priority": 1
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "cod"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "salmon"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "tropicalfish"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "baby_turtle"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 12,
+ "priority": 1
+ }
+ ]
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:behavior.nearest_prioritized_attackable_target": {
+ "priority": 3,
+ "within_radius": 12.0,
+ "persist_time": 2.0,
+ "must_see": true,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ "max_dist": 12,
+ "priority": 0
+ },
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "wither"
+ },
+ "max_dist": 12,
+ "priority": 1
+ }
+ ]
+}
+```
+
+## behavior.ocelot_sit_on_block
+
+cat
+
+```json
+"minecraft:behavior.ocelot_sit_on_block": {
+ "priority": 7,
+ "speed_multiplier": 1.0
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.ocelot_sit_on_block": {
+ "priority": 6,
+ "speed_multiplier": 1.0
+}
+```
+
+## behavior.ocelotattack
+
+cat
+
+```json
+"minecraft:behavior.ocelotattack": {
+ "priority": 4,
+ "cooldown_time": 1.0,
+ "x_max_rotation": 30.0,
+ "y_max_head_rotation": 30.0,
+ "max_distance": 15.0,
+ "max_sneak_range": 15.0,
+ "max_sprint_range": 4.0,
+ "reach_multiplier": 2.0,
+ "sneak_speed_multiplier": 0.6,
+ "sprint_speed_multiplier": 1.33,
+ "walk_speed_multiplier": 0.8
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.ocelotattack": {
+ "priority": 4,
+ "cooldown_time": 1.0,
+ "x_max_rotation": 30.0,
+ "y_max_head_rotation": 30.0,
+ "max_distance": 15.0,
+ "max_sneak_range": 15.0,
+ "max_sprint_range": 4.0,
+ "reach_multiplier": 2.0,
+ "sneak_speed_multiplier": 0.6,
+ "sprint_speed_multiplier": 1.33,
+ "walk_speed_multiplier": 0.8
+}
+```
+
+## behavior.offer_flower
+
+iron_golem
+
+```json
+"minecraft:behavior.offer_flower": {
+ "priority": 5,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ }
+ ]
+ }
+}
+```
+
+## behavior.open_door
+
+villager
+
+```json
+"minecraft:behavior.open_door": {
+ "priority": 6,
+ "close_door_after": true
+}
+```
+
+## behavior.owner_hurt_by_target
+
+wolf
+
+```json
+"minecraft:behavior.owner_hurt_by_target": {
+ "priority": 1
+}
+```
+
+## behavior.owner_hurt_target
+
+wolf
+
+```json
+"minecraft:behavior.owner_hurt_target": {
+ "priority": 2
+}
+```
+
+## behavior.panic
+
+allay
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 2.0
+}
+```
+
+bee
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "force": true
+}
+```
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "force": true
+}
+```
+
+camel
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 4
+}
+```
+
+cat
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+chicken
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.5
+}
+```
+
+cow
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+dolphin
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+donkey
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 2,
+ "speed_multiplier": 1.25
+}
+```
+
+frog
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 2.0
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 3,
+ "speed_multiplier": 1.2
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 4,
+ "speed_multiplier": 1.2
+}
+```
+
+mooshroom
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+mule
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 2.5
+}
+```
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "ignore_mob_damage": true
+}
+```
+
+parrot
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 0,
+ "speed_multiplier": 1.25
+}
+```
+
+pig
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 3,
+ "speed_multiplier": 1.25
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.1
+}
+```
+
+rabbit
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 2.2
+}
+```
+
+sheep
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.25
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+sniffer
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 2
+}
+```
+
+strider
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 3,
+ "speed_multiplier": 1.1,
+ "panic_sound": "panic",
+ "sound_interval": {
+ "range_min": 1.0,
+ "range_max": 3.0
+ }
+}
+```
+
+tadpole
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 2.0
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 4,
+ "speed_multiplier": 1.2
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 0,
+ "prefer_water": true,
+ "speed_multiplier": 1.2
+}
+```
+
+villager
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 3,
+ "speed_multiplier": 0.6
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 0.6
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 0.6
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:behavior.panic": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+## behavior.pet_sleep_with_owner
+
+cat
+
+```json
+"minecraft:behavior.pet_sleep_with_owner": {
+ "priority": 2,
+ "speed_multiplier": 1.2,
+ "search_radius": 10,
+ "search_height": 10,
+ "goal_radius": 1.0
+}
+```
+
+## behavior.pickup_items
+
+allay
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 2,
+ "max_dist": 32,
+ "search_height": 32,
+ "goal_radius": 2.2,
+ "speed_multiplier": 6,
+ "pickup_based_on_chance": false,
+ "can_pickup_any_item": false,
+ "can_pickup_to_hand_or_equipment": false,
+ "pickup_same_items_as_in_hand": true
+}
+```
+
+drowned
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 6,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true,
+ "excluded_items": [
+ "minecraft:glow_ink_sac"
+ ]
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 11,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 0.5
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 6,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true,
+ "excluded_items": [
+ "minecraft:glow_ink_sac"
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 6,
+ "max_dist": 10,
+ "goal_radius": 2,
+ "speed_multiplier": 0.8,
+ "pickup_based_on_chance": false,
+ "can_pickup_any_item": false,
+ "cooldown_after_being_attacked": 20.0
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 7,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 5,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 5,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true
+}
+```
+
+villager
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 9,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 0.5,
+ "can_pickup_to_hand_or_equipment": false
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 4,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 0.5,
+ "can_pickup_to_hand_or_equipment": false
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 5,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 6,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true,
+ "excluded_items": [
+ "minecraft:glow_ink_sac"
+ ]
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 6,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 8,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true,
+ "excluded_items": [
+ "minecraft:glow_ink_sac"
+ ]
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.pickup_items": {
+ "priority": 8,
+ "max_dist": 3,
+ "goal_radius": 2,
+ "speed_multiplier": 1.0,
+ "pickup_based_on_chance": true,
+ "can_pickup_any_item": true,
+ "excluded_items": [
+ "minecraft:glow_ink_sac"
+ ]
+}
+```
+
+## behavior.play
+
+villager
+
+```json
+"minecraft:behavior.play": {
+ "priority": 8,
+ "speed_multiplier": 0.32
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.play": {
+ "priority": 8,
+ "speed_multiplier": 0.6,
+ "friend_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ },
+ {
+ "test": "is_baby",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+## behavior.play_dead
+
+axolotl
+
+```json
+"minecraft:behavior.play_dead": {
+ "priority": 0,
+ "duration": 10,
+ "force_below_health": 8,
+ "random_start_chance": 0.33,
+ "random_damage_range": [
+ 0,
+ 2
+ ],
+ "damage_sources": [
+ "contact",
+ "entity_attack",
+ "entity_explosion",
+ "magic",
+ "projectile",
+ "thorns",
+ "wither"
+ ],
+ "apply_regeneration": true,
+ "filters": {
+ "test": "in_water",
+ "operator": "==",
+ "value": true
+ }
+}
+```
+
+## behavior.player_ride_tamed
+
+camel
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+donkey
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+horse
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+mule
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:behavior.player_ride_tamed": {}
+```
+
+## behavior.raid_garden
+
+fox
+
+```json
+"minecraft:behavior.raid_garden": {
+ "priority": 12,
+ "blocks": [
+ "minecraft:sweet_berry_bush",
+ "minecraft:cave_vines_head_with_berries",
+ "minecraft:cave_vines_body_with_berries"
+ ],
+ "speed_multiplier": 1.2,
+ "search_range": 12,
+ "search_height": 2,
+ "goal_radius": 0.8,
+ "max_to_eat": 0,
+ "initial_eat_delay": 2
+}
+```
+
+rabbit
+
+```json
+"minecraft:behavior.raid_garden": {
+ "priority": 5,
+ "blocks": [
+ "minecraft:carrots"
+ ],
+ "search_range": 16,
+ "goal_radius": 0.8
+}
+```
+
+## behavior.ram_attack
+
+goat
+
+```json
+"minecraft:behavior.ram_attack": {
+ "priority": 5,
+ "run_speed": 0.7,
+ "ram_speed": 1.8,
+ "min_ram_distance": 4,
+ "ram_distance": 7,
+ "knockback_force": 2.5,
+ "knockback_height": 0.04,
+ "pre_ram_sound": "pre_ram",
+ "ram_impact_sound": "ram_impact",
+ "cooldown_range": [
+ 30,
+ 300
+ ],
+ "on_start": [
+ {
+ "event": "start_event",
+ "target": "self"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:behavior.ram_attack": {
+ "priority": 5,
+ "run_speed": 0.7,
+ "ram_speed": 1.8,
+ "min_ram_distance": 4,
+ "ram_distance": 7,
+ "knockback_force": 2.5,
+ "knockback_height": 0.04,
+ "pre_ram_sound": "pre_ram.screamer",
+ "ram_impact_sound": "ram_impact.screamer",
+ "cooldown_range": [
+ 5,
+ 15
+ ],
+ "on_start": [
+ {
+ "event": "start_event",
+ "target": "self"
+ }
+ ]
+}
+```
+
+## behavior.random_breach
+
+dolphin
+
+```json
+"minecraft:behavior.random_breach": {
+ "priority": 6,
+ "interval": 50,
+ "xz_dist": 6,
+ "cooldown_time": 2.0
+}
+```
+
+## behavior.random_fly
+
+parrot
+
+```json
+"minecraft:behavior.random_fly": {
+ "priority": 2,
+ "xz_dist": 15,
+ "y_dist": 1,
+ "y_offset": 0,
+ "speed_multiplier": 1.0,
+ "can_land_on_trees": true,
+ "avoid_damage_blocks": true
+}
+```
+
+## behavior.random_hover
+
+allay
+
+```json
+"minecraft:behavior.random_hover": {
+ "priority": 9,
+ "xz_dist": 8,
+ "y_dist": 8,
+ "y_offset": -1,
+ "interval": 1,
+ "hover_height": [
+ 1,
+ 4
+ ]
+}
+```
+
+bee
+
+```json
+"minecraft:behavior.random_hover": {
+ "priority": 12,
+ "xz_dist": 8,
+ "y_dist": 8,
+ "y_offset": -1,
+ "interval": 1,
+ "hover_height": [
+ 1,
+ 4
+ ]
+}
+```
+
+## behavior.random_look_around
+
+allay
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+blaze
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 5
+}
+```
+
+camel
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+cave_spider
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 7
+}
+```
+
+chicken
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+cow
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+creeper
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 6
+}
+```
+
+dolphin
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 7
+}
+```
+
+donkey
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+drowned
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+enderman
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 15
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 11
+}
+```
+
+guardian
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+iron_golem
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+mooshroom
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+mule
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+pig
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 12
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 10
+}
+```
+
+polar_bear
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 7
+}
+```
+
+sheep
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+shulker
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+sniffer
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+snow_golem
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 4
+}
+```
+
+spider
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 7
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+strider
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 10
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+warden
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 11
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 5,
+ "look_distance": 8.0
+}
+```
+
+wither
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 7
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+zoglin
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 8
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 9
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 11
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.random_look_around": {
+ "priority": 11
+}
+```
+
+## behavior.random_look_around_and_sit
+
+camel
+
+```json
+"minecraft:behavior.random_look_around_and_sit": {
+ "priority": 4,
+ "continue_if_leashed": true,
+ "min_look_count": 2,
+ "max_look_count": 5,
+ "min_look_time": 80,
+ "max_look_time": 100,
+ "min_angle_of_view_horizontal": -30,
+ "max_angle_of_view_horizontal": 30,
+ "random_look_around_cooldown": 5,
+ "probability": 0.001
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.random_look_around_and_sit": {
+ "priority": 12,
+ "min_look_count": 2,
+ "max_look_count": 5,
+ "min_look_time": 80,
+ "max_look_time": 100,
+ "probability": 0.001
+}
+```
+
+## behavior.random_search_and_dig
+
+sniffer
+
+```json
+"minecraft:behavior.random_search_and_dig": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "find_valid_position_retries": 5,
+ "goal_radius": 2.0,
+ "search_range_xz": 20.0,
+ "search_range_y": 3,
+ "cooldown_range": 0.0,
+ "digging_duration_range": [
+ 8.0,
+ 10.0
+ ],
+ "items": [
+ {
+ "item": "torchflower_seeds",
+ "weight": 1
+ },
+ {
+ "item": "pitcher_pod",
+ "weight": 1
+ }
+ ],
+ "spawn_item_after_seconds": 6.0,
+ "spawn_item_pos_offset": 2.25,
+ "on_searching_start": {
+ "event": "on_searching_start",
+ "target": "self"
+ },
+ "on_fail_during_searching": {
+ "event": "on_fail_during_searching",
+ "target": "self"
+ },
+ "on_digging_start": {
+ "event": "on_digging_start",
+ "target": "self"
+ },
+ "on_item_found": {
+ "event": "on_item_found",
+ "target": "self"
+ },
+ "on_fail_during_digging": {
+ "event": "on_fail_during_digging",
+ "target": "self"
+ },
+ "on_success": {
+ "event": "on_search_and_digging_success",
+ "target": "self"
+ }
+}
+```
+
+## behavior.random_sitting
+
+panda
+
+```json
+"minecraft:behavior.random_sitting": {
+ "priority": 5,
+ "start_chance": 0.01,
+ "stop_chance": 0.3,
+ "cooldown": 30,
+ "min_sit_time": 10
+}
+```
+
+```json
+"minecraft:behavior.random_sitting": {
+ "priority": 6,
+ "start_chance": 0.02,
+ "stop_chance": 0.2,
+ "cooldown": 25,
+ "min_sit_time": 15
+}
+```
+
+## behavior.random_stroll
+
+axolotl
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 9,
+ "interval": 100
+}
+```
+
+blaze
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+camel
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 2
+}
+```
+
+cat
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 8,
+ "speed_multiplier": 0.8
+}
+```
+
+cave_spider
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.8
+}
+```
+
+chicken
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 1.0
+}
+```
+
+cow
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.8
+}
+```
+
+creeper
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 5,
+ "speed_multiplier": 1
+}
+```
+
+donkey
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.7
+}
+```
+
+drowned
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 1
+}
+```
+
+enderman
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 1.0
+}
+```
+
+endermite
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 1
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 8,
+ "speed_multiplier": 0.6
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 13,
+ "speed_multiplier": 0.8
+}
+```
+
+frog
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 11
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 9,
+ "speed_multiplier": 0.6
+}
+```
+
+hoglin
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 0.4
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.7
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 1
+}
+```
+
+iron_golem
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.6,
+ "xz_dist": 16
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.7
+}
+```
+
+mooshroom
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.8
+}
+```
+
+mule
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.7
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 8,
+ "speed_multiplier": 0.8
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 14,
+ "speed_multiplier": 0.8
+}
+```
+
+pig
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 1.0
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 10,
+ "speed_multiplier": 0.6
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 0.6
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 8,
+ "speed_multiplier": 1
+}
+```
+
+polar_bear
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 5
+}
+```
+
+rabbit
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.6,
+ "xz_dist": 2,
+ "y_dist": 1
+}
+```
+
+ravager
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 1.0
+}
+```
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.4
+}
+```
+
+sheep
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 0.8
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 1
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.7
+}
+```
+
+sniffer
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 1
+}
+```
+
+snow_golem
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 2,
+ "speed_multiplier": 1
+}
+```
+
+spider
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.8
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 1
+}
+```
+
+strider
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 8,
+ "speed_multiplier": 0.8
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.7
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 9,
+ "interval": 100
+}
+```
+
+villager
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 11,
+ "speed_multiplier": 0.6
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 11,
+ "speed_multiplier": 0.6
+}
+```
+
+vindicator
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 9,
+ "speed_multiplier": 1
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 0.6
+}
+```
+
+warden
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 9,
+ "speed_multiplier": 0.5
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 4,
+ "speed_multiplier": 1.0
+}
+```
+
+wither
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 5,
+ "speed_multiplier": 1
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 1
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 8,
+ "speed_multiplier": 1.0
+}
+```
+
+zoglin
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 1.0
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 1
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 6,
+ "speed_multiplier": 0.7
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 7,
+ "speed_multiplier": 1.0
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 9,
+ "speed_multiplier": 1
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.random_stroll": {
+ "priority": 9,
+ "speed_multiplier": 1
+}
+```
+
+## behavior.random_swim
+
+axolotl
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 8,
+ "interval": 0,
+ "xz_dist": 30,
+ "y_dist": 15
+}
+```
+
+dolphin
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 5,
+ "interval": 0,
+ "xz_dist": 20
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 7,
+ "speed_multiplier": 0.5,
+ "avoid_surface": false
+}
+```
+
+cod
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 3,
+ "speed_multiplier": 1.0,
+ "xz_dist": 16,
+ "y_dist": 4,
+ "interval": 0
+}
+```
+
+guardian
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 7,
+ "speed_multiplier": 1.0,
+ "interval": 80,
+ "avoid_surface": false
+}
+```
+
+pufferfish
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 3,
+ "speed_multiplier": 1.0,
+ "xz_dist": 16,
+ "y_dist": 4,
+ "interval": 0
+}
+```
+
+salmon
+
+```json
+"minecraft:behavior.random_swim": {
+ "speed_multiplier": 1.0,
+ "priority": 3,
+ "xz_dist": 16,
+ "y_dist": 4,
+ "interval": 0
+}
+```
+
+tadpole
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 2,
+ "interval": 100
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 3,
+ "speed_multiplier": 1.0,
+ "xz_dist": 16,
+ "y_dist": 4,
+ "interval": 0
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.random_swim": {
+ "priority": 7,
+ "interval": 0,
+ "xz_dist": 30,
+ "y_dist": 15
+}
+```
+
+## behavior.ranged_attack
+
+blaze
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 3,
+ "burst_shots": 3,
+ "burst_interval": 0.3,
+ "charge_charged_trigger": 0.0,
+ "charge_shoot_trigger": 4.0,
+ "attack_interval_min": 3.0,
+ "attack_interval_max": 5.0,
+ "attack_radius": 16.0
+}
+```
+
+drowned
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 3,
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 3.0,
+ "attack_radius": 10.0,
+ "swing": true
+}
+```
+
+ghast
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 1,
+ "attack_radius": 64,
+ "charge_shoot_trigger": 2,
+ "charge_charged_trigger": 1
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 2,
+ "attack_radius": 64,
+ "charge_shoot_trigger": 2,
+ "charge_charged_trigger": 1
+}
+```
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 2,
+ "attack_radius": 64,
+ "charge_shoot_trigger": 2,
+ "charge_charged_trigger": 1
+}
+```
+
+piglin
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 8,
+ "attack_interval_min": 1,
+ "attack_interval_max": 1,
+ "attack_radius": 8,
+ "attack_radius_min": 4,
+ "speed_multiplier": 1.0,
+ "target_in_sight_time": 0.1
+}
+```
+
+pillager
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 4,
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 1.0,
+ "attack_radius": 8.0
+}
+```
+
+shulker
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "attack_interval_min": 1,
+ "attack_interval_max": 3,
+ "attack_radius": 15
+}
+```
+
+skeleton
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 0,
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 3.0,
+ "attack_radius": 15.0
+}
+```
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 0,
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 3.0,
+ "attack_radius": 15.0
+}
+```
+
+snow_golem
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 1,
+ "speed_multiplier": 1.25,
+ "attack_interval": 1,
+ "attack_radius": 10
+}
+```
+
+stray
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 0,
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 3.0,
+ "attack_radius": 15.0
+}
+```
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 0,
+ "attack_interval_min": 1.0,
+ "attack_interval_max": 3.0,
+ "attack_radius": 15.0
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 2,
+ "attack_radius": 64,
+ "charge_shoot_trigger": 2,
+ "charge_charged_trigger": 1
+}
+```
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 2,
+ "attack_radius": 64,
+ "charge_shoot_trigger": 2,
+ "charge_charged_trigger": 1
+}
+```
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 2,
+ "attack_radius": 64,
+ "charge_shoot_trigger": 2,
+ "charge_charged_trigger": 1
+}
+```
+
+witch
+
+```json
+"minecraft:behavior.ranged_attack": {
+ "priority": 2,
+ "speed_multiplier": 1.0,
+ "attack_interval_min": 3,
+ "attack_interval_max": 3,
+ "attack_radius": 10.0
+}
+```
+
+## behavior.receive_love
+
+villager
+
+```json
+"minecraft:behavior.receive_love": {
+ "priority": 7
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.receive_love": {
+ "priority": 6
+}
+```
+
+## behavior.restrict_open_door
+
+villager
+
+```json
+"minecraft:behavior.restrict_open_door": {
+ "priority": 5
+}
+```
+
+## behavior.rise_to_liquid_level
+
+strider
+
+```json
+"minecraft:behavior.rise_to_liquid_level": {
+ "priority": 0,
+ "liquid_y_offset": 0.25,
+ "rise_delta": 0.01,
+ "sink_delta": 0.01
+}
+```
+
+## behavior.rising
+
+sniffer
+
+```json
+"minecraft:behavior.rising": {
+ "priority": 2,
+ "cooldown_range": 0.0,
+ "duration_range": [
+ 2.0,
+ 5.0
+ ],
+ "on_end": {
+ "event": "on_rising_end",
+ "target": "self"
+ }
+}
+```
+
+## behavior.roar
+
+warden
+
+```json
+"minecraft:behavior.roar": {
+ "priority": 2,
+ "duration": 4.2
+}
+```
+
+## behavior.roll
+
+panda
+
+```json
+"minecraft:behavior.roll": {
+ "priority": 12,
+ "probability": 0.0016
+}
+```
+
+```json
+"minecraft:behavior.roll": {
+ "priority": 12,
+ "probability": 0.013
+}
+```
+
+## behavior.run_around_like_crazy
+
+donkey
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+llama
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+mule
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+trader_llama
+
+```json
+"minecraft:behavior.run_around_like_crazy": {
+ "priority": 1,
+ "speed_multiplier": 1.2
+}
+```
+
+## behavior.scared
+
+panda
+
+```json
+"minecraft:behavior.scared": {
+ "priority": 1,
+ "sound_interval": 20
+}
+```
+
+## behavior.scenting
+
+sniffer
+
+```json
+"minecraft:behavior.scenting": {
+ "priority": 6,
+ "cooldown_range": [
+ 400.0,
+ 500.0
+ ],
+ "duration_range": 2.0,
+ "on_end": {
+ "event": "on_scenting_success",
+ "target": "self"
+ }
+}
+```
+
+## behavior.send_event
+
+evocation_illager
+
+```json
+"minecraft:behavior.send_event": {
+ "priority": 3,
+ "event_choices": [
+ {
+ "min_activation_range": 0.0,
+ "max_activation_range": 16.0,
+ "cooldown_time": 5.0,
+ "cast_duration": 3.0,
+ "particle_color": "#FFB38033",
+ "weight": 3,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "sheep"
+ },
+ {
+ "test": "is_color",
+ "subject": "other",
+ "value": "blue"
+ }
+ ]
+ },
+ "start_sound_event": "cast.spell",
+ "sequence": [
+ {
+ "base_delay": 2.0,
+ "event": "wololo",
+ "sound_event": "prepare.wololo"
+ }
+ ]
+ }
+ ]
+}
+```
+
+## behavior.share_items
+
+villager
+
+```json
+"minecraft:behavior.share_items": {
+ "priority": 8,
+ "max_dist": 3,
+ "goal_radius": 2.0,
+ "speed_multiplier": 0.5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ }
+ }
+ ]
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.share_items": {
+ "priority": 10,
+ "max_dist": 3,
+ "goal_radius": 2.0,
+ "speed_multiplier": 0.5,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "villager"
+ }
+ }
+ ]
+}
+```
+
+## behavior.silverfish_merge_with_stone
+
+silverfish
+
+```json
+"minecraft:behavior.silverfish_merge_with_stone": {
+ "priority": 5
+}
+```
+
+## behavior.silverfish_wake_up_friends
+
+silverfish
+
+```json
+"minecraft:behavior.silverfish_wake_up_friends": {
+ "priority": 1
+}
+```
+
+## behavior.skeleton_horse_trap
+
+skeleton_horse
+
+```json
+"minecraft:behavior.skeleton_horse_trap": {
+ "within_radius": 10.0,
+ "duration": 900.0,
+ "priority": 2
+}
+```
+
+## behavior.sleep
+
+villager_v2
+
+```json
+"minecraft:behavior.sleep": {}
+```
+
+```json
+"minecraft:behavior.sleep": {
+ "priority": 3,
+ "goal_radius": 1.5,
+ "speed_multiplier": 0.6,
+ "sleep_collider_height": 0.3,
+ "sleep_collider_width": 1.0,
+ "sleep_y_offset": 0.6,
+ "timeout_cooldown": 10.0
+}
+```
+
+## behavior.slime_attack
+
+magma_cube
+
+```json
+"minecraft:behavior.slime_attack": {
+ "priority": 3
+}
+```
+
+slime
+
+```json
+"minecraft:behavior.slime_attack": {
+ "priority": 3
+}
+```
+
+## behavior.slime_float
+
+magma_cube
+
+```json
+"minecraft:behavior.slime_float": {
+ "priority": 1,
+ "jump_chance_percentage": 0.8,
+ "speed_multiplier": 1.2
+}
+```
+
+slime
+
+```json
+"minecraft:behavior.slime_float": {
+ "priority": 1,
+ "jump_chance_percentage": 0.8,
+ "speed_multiplier": 1.2
+}
+```
+
+## behavior.slime_keep_on_jumping
+
+magma_cube
+
+```json
+"minecraft:behavior.slime_keep_on_jumping": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+slime
+
+```json
+"minecraft:behavior.slime_keep_on_jumping": {
+ "priority": 5,
+ "speed_multiplier": 1.0
+}
+```
+
+## behavior.slime_random_direction
+
+magma_cube
+
+```json
+"minecraft:behavior.slime_random_direction": {
+ "priority": 4,
+ "add_random_time_range": 3,
+ "turn_range": 360,
+ "min_change_direction_time": 2.0
+}
+```
+
+slime
+
+```json
+"minecraft:behavior.slime_random_direction": {
+ "priority": 4,
+ "add_random_time_range": 3,
+ "turn_range": 360,
+ "min_change_direction_time": 2.0
+}
+```
+
+## behavior.snacking
+
+panda
+
+```json
+"minecraft:behavior.snacking": {
+ "priority": 2,
+ "snacking_cooldown": 22.5,
+ "snacking_cooldown_min": 20,
+ "snacking_stop_chance": 0.001334,
+ "items": [
+ "bamboo",
+ "cake"
+ ]
+}
+```
+
+```json
+"minecraft:behavior.snacking": {
+ "priority": 3,
+ "snacking_cooldown": 17.5,
+ "snacking_cooldown_min": 10,
+ "snacking_stop_chance": 0.0011,
+ "items": [
+ "bamboo",
+ "cake"
+ ]
+}
+```
+
+## behavior.sneeze
+
+panda
+
+```json
+"minecraft:behavior.sneeze": {
+ "priority": 7,
+ "probability": 0.0001666,
+ "cooldown_time": 1.0,
+ "within_radius": 10.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "panda"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ },
+ {
+ "test": "on_ground",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 10
+ }
+ ],
+ "drop_item_chance": 0.001,
+ "loot_table": "loot_tables/entities/panda_sneeze.json",
+ "prepare_sound": "presneeze",
+ "prepare_time": 1.0,
+ "sound": "sneeze"
+}
+```
+
+```json
+"minecraft:behavior.sneeze": {
+ "priority": 7,
+ "probability": 0.002,
+ "cooldown_time": 1.0,
+ "within_radius": 10.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "subject": "other",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "panda"
+ },
+ {
+ "test": "in_water",
+ "subject": "other",
+ "operator": "!=",
+ "value": true
+ },
+ {
+ "test": "on_ground",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "max_dist": 10
+ }
+ ],
+ "drop_item_chance": 0.001,
+ "loot_table": "loot_tables/entities/panda_sneeze.json",
+ "prepare_sound": "presneeze",
+ "prepare_time": 1.0,
+ "sound": "sneeze"
+}
+```
+
+## behavior.sniff
+
+warden
+
+```json
+"minecraft:behavior.sniff": {
+ "priority": 6,
+ "duration": 4.16,
+ "sniffing_radius": 24.0,
+ "suspicion_radius_horizontal": 6.0,
+ "suspicion_radius_vertical": 20.0,
+ "cooldown_range": [
+ 5.0,
+ 10.0
+ ]
+}
+```
+
+## behavior.sonic_boom
+
+warden
+
+```json
+"minecraft:behavior.sonic_boom": {
+ "priority": 3,
+ "duration": 3.0,
+ "speed_multiplier": 1.2,
+ "attack_damage": 10,
+ "attack_range_horizontal": 15,
+ "attack_range_vertical": 20,
+ "attack_cooldown": 2,
+ "knockback_vertical_strength": 0.5,
+ "knockback_horizontal_strength": 2.5,
+ "knockback_height_cap": 0.5,
+ "duration_until_attack_sound": 1.7,
+ "charge_sound": "sonic_charge",
+ "attack_sound": "sonic_boom"
+}
+```
+
+## behavior.squid_dive
+
+glow_squid
+
+```json
+"minecraft:behavior.squid_dive": {
+ "priority": 2
+}
+```
+
+squid
+
+```json
+"minecraft:behavior.squid_dive": {
+ "priority": 2
+}
+```
+
+## behavior.squid_flee
+
+glow_squid
+
+```json
+"minecraft:behavior.squid_flee": {
+ "priority": 2
+}
+```
+
+squid
+
+```json
+"minecraft:behavior.squid_flee": {
+ "priority": 2
+}
+```
+
+## behavior.squid_idle
+
+glow_squid
+
+```json
+"minecraft:behavior.squid_idle": {
+ "priority": 2
+}
+```
+
+squid
+
+```json
+"minecraft:behavior.squid_idle": {
+ "priority": 2
+}
+```
+
+## behavior.squid_move_away_from_ground
+
+glow_squid
+
+```json
+"minecraft:behavior.squid_move_away_from_ground": {
+ "priority": 1
+}
+```
+
+squid
+
+```json
+"minecraft:behavior.squid_move_away_from_ground": {
+ "priority": 1
+}
+```
+
+## behavior.squid_out_of_water
+
+glow_squid
+
+```json
+"minecraft:behavior.squid_out_of_water": {
+ "priority": 2
+}
+```
+
+squid
+
+```json
+"minecraft:behavior.squid_out_of_water": {
+ "priority": 2
+}
+```
+
+## behavior.stalk_and_pounce_on_target
+
+fox
+
+```json
+"minecraft:behavior.stalk_and_pounce_on_target": {
+ "priority": 7,
+ "stalk_speed": 1.2,
+ "max_stalk_dist": 12.0,
+ "leap_height": 0.9,
+ "leap_dist": 0.8,
+ "pounce_max_dist": 5.0,
+ "interest_time": 2.0,
+ "stuck_time": 2.0,
+ "strike_dist": 2.0,
+ "stuck_blocks": {
+ "test": "is_block",
+ "subject": "block",
+ "operator": "==",
+ "value": "snow_layer"
+ }
+}
+```
+
+## behavior.stay_near_noteblock
+
+allay
+
+```json
+"minecraft:behavior.stay_near_noteblock": {
+ "priority": 5,
+ "speed": 8,
+ "start_distance": 16,
+ "stop_distance": 4
+}
+```
+
+## behavior.stay_while_sitting
+
+cat
+
+```json
+"minecraft:behavior.stay_while_sitting": {
+ "priority": 3
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.stay_while_sitting": {
+ "priority": 3
+}
+```
+
+parrot
+
+```json
+"minecraft:behavior.stay_while_sitting": {
+ "priority": 1
+}
+```
+
+wolf
+
+```json
+"minecraft:behavior.stay_while_sitting": {
+ "priority": 3
+}
+```
+
+## behavior.stomp_attack
+
+polar_bear
+
+```json
+"minecraft:behavior.stomp_attack": {
+ "priority": 1,
+ "track_target": true,
+ "require_complete_path": true,
+ "stomp_range_multiplier": 2.0,
+ "no_damage_range_multiplier": 2.0
+}
+```
+
+## behavior.stomp_turtle_egg
+
+drowned
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+husk
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+zombie
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 5,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:behavior.stomp_turtle_egg": {
+ "priority": 4,
+ "speed_multiplier": 1,
+ "search_range": 10,
+ "search_height": 2,
+ "goal_radius": 1.14,
+ "interval": 20
+}
+```
+
+## behavior.stroll_towards_village
+
+fox
+
+```json
+"minecraft:behavior.stroll_towards_village": {
+ "priority": 11,
+ "speed_multiplier": 1.0,
+ "goal_radius": 3.0,
+ "cooldown_time": 10.0,
+ "search_range": 32,
+ "start_chance": 0.005
+}
+```
+
+## behavior.summon_entity
+
+evocation_illager
+
+```json
+"minecraft:behavior.summon_entity": {
+ "priority": 2,
+ "summon_choices": [
+ {
+ "min_activation_range": 0.0,
+ "max_activation_range": 3.0,
+ "cooldown_time": 5.0,
+ "weight": 3,
+ "cast_duration": 2.0,
+ "particle_color": "#FF664D59",
+ "start_sound_event": "cast.spell",
+ "sequence": [
+ {
+ "shape": "circle",
+ "target": "self",
+ "base_delay": 1.0,
+ "delay_per_summon": 0.0,
+ "num_entities_spawned": 5,
+ "entity_type": "minecraft:evocation_fang",
+ "size": 1.5,
+ "entity_lifespan": 1.1,
+ "sound_event": "prepare.attack"
+ },
+ {
+ "shape": "circle",
+ "target": "self",
+ "base_delay": 0.15,
+ "delay_per_summon": 0.0,
+ "num_entities_spawned": 8,
+ "entity_type": "minecraft:evocation_fang",
+ "size": 2.5,
+ "entity_lifespan": 1.1
+ }
+ ]
+ },
+ {
+ "min_activation_range": 3.0,
+ "weight": 3,
+ "cooldown_time": 5.0,
+ "cast_duration": 2.0,
+ "particle_color": "#FF664D59",
+ "start_sound_event": "cast.spell",
+ "sequence": [
+ {
+ "shape": "line",
+ "target": "self",
+ "base_delay": 1.0,
+ "delay_per_summon": 0.05,
+ "num_entities_spawned": 16,
+ "entity_type": "minecraft:evocation_fang",
+ "size": 20,
+ "entity_lifespan": 1.1
+ }
+ ]
+ },
+ {
+ "weight": 1,
+ "cooldown_time": 17.0,
+ "cast_duration": 5.0,
+ "particle_color": "#FFB3B3CC",
+ "sequence": [
+ {
+ "shape": "circle",
+ "target": "self",
+ "base_delay": 5.0,
+ "num_entities_spawned": 3,
+ "entity_type": "minecraft:vex",
+ "summon_cap": 8,
+ "summon_cap_radius": 16.0,
+ "size": 1.0,
+ "sound_event": "prepare.summon"
+ }
+ ]
+ }
+ ]
+}
+```
+
+## behavior.swell
+
+creeper
+
+```json
+"minecraft:behavior.swell": {
+ "start_distance": 2.5,
+ "stop_distance": 6.0,
+ "priority": 2
+}
+```
+
+## behavior.swim_idle
+
+axolotl
+
+```json
+"minecraft:behavior.swim_idle": {
+ "priority": 7,
+ "idle_time": 5.0,
+ "success_rate": 0.05
+}
+```
+
+cod
+
+```json
+"minecraft:behavior.swim_idle": {
+ "priority": 5,
+ "idle_time": 5.0,
+ "success_rate": 0.1
+}
+```
+
+salmon
+
+```json
+"minecraft:behavior.swim_idle": {
+ "priority": 5,
+ "idle_time": 5.0,
+ "success_rate": 0.1
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:behavior.swim_idle": {
+ "priority": 5,
+ "idle_time": 5.0,
+ "success_rate": 0.1
+}
+```
+
+## behavior.swim_wander
+
+cod
+
+```json
+"minecraft:behavior.swim_wander": {
+ "priority": 4,
+ "interval": 0.1,
+ "look_ahead": 2.0,
+ "speed_multiplier": 1.0,
+ "wander_time": 5.0
+}
+```
+
+pufferfish
+
+```json
+"minecraft:behavior.swim_wander": {
+ "priority": 5,
+ "interval": 1.0,
+ "look_ahead": 2.0,
+ "speed_multiplier": 1.0,
+ "wander_time": 5.0
+}
+```
+
+salmon
+
+```json
+"minecraft:behavior.swim_wander": {
+ "priority": 4,
+ "interval": 0.0166,
+ "look_ahead": 5.0,
+ "speed_multiplier": 0.014,
+ "wander_time": 5.0
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:behavior.swim_wander": {
+ "priority": 4,
+ "interval": 0.1,
+ "look_ahead": 2.0,
+ "speed_multiplier": 1.0,
+ "wander_time": 5.0
+}
+```
+
+## behavior.swim_with_entity
+
+dolphin
+
+```json
+"minecraft:behavior.swim_with_entity": {
+ "priority": 4,
+ "success_rate": 0.1,
+ "chance_to_stop": 0.0333,
+ "state_check_interval": 0.5,
+ "catch_up_threshold": 12.0,
+ "match_direction_threshold": 2.0,
+ "catch_up_multiplier": 2.5,
+ "speed_multiplier": 1.5,
+ "search_range": 20.0,
+ "stop_distance": 5.0,
+ "entity_types": [
+ {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ }
+ ]
+}
+```
+
+## behavior.swoop_attack
+
+phantom
+
+```json
+"minecraft:behavior.swoop_attack": {
+ "priority": 2,
+ "damage_reach": 0.2,
+ "speed_multiplier": 1.0,
+ "delay_range": [
+ 10.0,
+ 20.0
+ ]
+}
+```
+
+## behavior.take_flower
+
+villager
+
+```json
+"minecraft:behavior.take_flower": {
+ "priority": 7,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ }
+ ]
+ }
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.take_flower": {
+ "priority": 9,
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ }
+ ]
+ }
+}
+```
+
+## behavior.target_when_pushed
+
+iron_golem
+
+```json
+"minecraft:behavior.target_when_pushed": {
+ "priority": 1,
+ "percent_chance": 5.0,
+ "entity_types": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "creeper"
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+## behavior.tempt
+
+axolotl
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 2,
+ "speed_multiplier": 1.1,
+ "can_tempt_vertically": true,
+ "items": [
+ "tropical_fish_bucket"
+ ]
+}
+```
+
+bee
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "within_radius": 8,
+ "can_tempt_vertically": true,
+ "items": [
+ "minecraft:red_flower",
+ "minecraft:yellow_flower",
+ "minecraft:wither_rose",
+ "minecraft:double_plant:0",
+ "minecraft:double_plant:1",
+ "minecraft:double_plant:4",
+ "minecraft:double_plant:5",
+ "minecraft:flowering_azalea",
+ "minecraft:azalea_leaves_flowered",
+ "minecraft:mangrove_propagule",
+ "minecraft:pitcher_plant",
+ "minecraft:torchflower",
+ "minecraft:cherry_leaves",
+ "minecraft:pink_petals"
+ ]
+}
+```
+
+camel
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 3,
+ "speed_multiplier": 2.5,
+ "can_tempt_vertically": true,
+ "items": [
+ "cactus"
+ ]
+}
+```
+
+cat
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 0.5,
+ "within_radius": 16,
+ "can_get_scared": true,
+ "items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 0.5,
+ "within_radius": 16,
+ "items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+chicken
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 1.0,
+ "items": [
+ "wheat_seeds",
+ "beetroot_seeds",
+ "melon_seeds",
+ "pumpkin_seeds",
+ "pitcher_pod",
+ "torchflower_seeds"
+ ]
+}
+```
+
+cow
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 1.25,
+ "items": [
+ "wheat"
+ ]
+}
+```
+
+donkey
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.2,
+ "items": [
+ "apple",
+ "carrot",
+ "golden_apple",
+ "appleEnchanted",
+ "golden_carrot",
+ "carrotOnAStick",
+ "hay_block",
+ "sugar",
+ "bread",
+ "wheat"
+ ]
+}
+```
+
+fox
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 3,
+ "speed_multiplier": 0.5,
+ "within_radius": 16,
+ "can_get_scared": true,
+ "items": [
+ "sweet_berries",
+ "glow_berries"
+ ]
+}
+```
+
+frog
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "can_tempt_vertically": true,
+ "items": [
+ "slime_ball"
+ ]
+}
+```
+
+goat
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 0.75,
+ "items": [
+ "wheat"
+ ]
+}
+```
+
+horse
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.2,
+ "items": [
+ "golden_apple",
+ "appleEnchanted",
+ "golden_carrot"
+ ]
+}
+```
+
+mooshroom
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 1.25,
+ "items": [
+ "wheat"
+ ]
+}
+```
+
+mule
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.2,
+ "items": [
+ "apple",
+ "carrot",
+ "golden_apple",
+ "appleEnchanted",
+ "golden_carrot",
+ "carrotOnAStick",
+ "hay_block",
+ "sugar",
+ "bread",
+ "wheat"
+ ]
+}
+```
+
+ocelot
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 0.5,
+ "within_radius": 16,
+ "can_get_scared": true,
+ "items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 0.5,
+ "within_radius": 16,
+ "items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+panda
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 1.25,
+ "items": [
+ "bamboo"
+ ]
+}
+```
+
+pig
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.2,
+ "items": [
+ "potato",
+ "carrot",
+ "beetroot",
+ "carrotOnAStick"
+ ]
+}
+```
+
+rabbit
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 3,
+ "speed_multiplier": 1,
+ "items": [
+ "golden_carrot",
+ "carrot",
+ "yellow_flower"
+ ]
+}
+```
+
+sheep
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 1.25,
+ "items": [
+ "wheat"
+ ]
+}
+```
+
+sniffer
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 4,
+ "speed_multiplier": 1.25,
+ "items": [
+ "torchflower_seeds"
+ ]
+}
+```
+
+strider
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.2,
+ "items": [
+ "warped_fungus",
+ "warped_fungus_on_a_stick"
+ ],
+ "can_tempt_while_ridden": true,
+ "tempt_sound": "tempt",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ }
+}
+```
+
+tadpole
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 5,
+ "speed_multiplier": 1.25,
+ "can_tempt_vertically": true,
+ "items": [
+ "slime_ball"
+ ]
+}
+```
+
+turtle
+
+```json
+"minecraft:behavior.tempt": {
+ "priority": 3,
+ "speed_multiplier": 1.1,
+ "can_tempt_vertically": true,
+ "items": [
+ "seagrass"
+ ]
+}
+```
+
+## behavior.trade_interest
+
+villager_v2
+
+```json
+"minecraft:behavior.trade_interest": {}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 5,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.trade_interest": {
+ "priority": 3,
+ "within_radius": 6.0,
+ "interest_time": 45.0,
+ "remove_item_time": 1.0,
+ "carried_item_switch_time": 2.0,
+ "cooldown": 2.0
+}
+```
+
+## behavior.trade_with_player
+
+villager
+
+```json
+"minecraft:behavior.trade_with_player": {
+ "priority": 1,
+ "filters": {
+ "all_of": [
+ {
+ "all_of": [
+ {
+ "test": "in_water",
+ "value": false
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "on_ground",
+ "value": true
+ },
+ {
+ "test": "is_sleeping",
+ "value": true
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+villager_v2
+
+```json
+"minecraft:behavior.trade_with_player": {
+ "priority": 2,
+ "filters": {
+ "all_of": [
+ {
+ "all_of": [
+ {
+ "test": "in_water",
+ "value": false
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "on_ground",
+ "value": true
+ },
+ {
+ "test": "is_sleeping",
+ "value": true
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:behavior.trade_with_player": {
+ "priority": 1,
+ "filters": {
+ "all_of": [
+ {
+ "all_of": [
+ {
+ "test": "in_water",
+ "value": false
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "on_ground",
+ "value": true
+ },
+ {
+ "test": "is_sleeping",
+ "value": true
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+## behavior.wither_random_attack_pos_goal
+
+wither
+
+```json
+"minecraft:behavior.wither_random_attack_pos_goal": {
+ "priority": 3
+}
+```
+
+## behavior.wither_target_highest_damage
+
+wither
+
+```json
+"minecraft:behavior.wither_target_highest_damage": {
+ "priority": 1
+}
+```
+
+## behavior.work
+
+villager_v2
+
+```json
+"minecraft:behavior.work": {}
+```
+
+```json
+"minecraft:behavior.work": {
+ "priority": 7,
+ "active_time": 250,
+ "speed_multiplier": 0.5,
+ "goal_cooldown": 200,
+ "sound_delay_min": 100,
+ "sound_delay_max": 200,
+ "can_work_in_rain": false,
+ "work_in_rain_tolerance": 100,
+ "on_arrival": {
+ "event": "minecraft:resupply_trades",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:behavior.work": {
+ "priority": 7,
+ "active_time": 250,
+ "speed_multiplier": 0.5,
+ "goal_cooldown": 200,
+ "sound_delay_min": 100,
+ "sound_delay_max": 200,
+ "can_work_in_rain": false,
+ "work_in_rain_tolerance": 100,
+ "on_arrival": {
+ "event": "minecraft:resupply_trades",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:behavior.work": {
+ "priority": 7,
+ "active_time": 250,
+ "speed_multiplier": 0.5,
+ "goal_cooldown": 200,
+ "sound_delay_min": 100,
+ "sound_delay_max": 200,
+ "can_work_in_rain": false,
+ "work_in_rain_tolerance": 100,
+ "on_arrival": {
+ "event": "minecraft:resupply_trades",
+ "target": "self"
+ }
+}
+```
+
+## behavior.work_composter
+
+villager_v2
+
+```json
+"minecraft:behavior.work_composter": {}
+```
+
+```json
+"minecraft:behavior.work_composter": {
+ "priority": 9,
+ "active_time": 250,
+ "speed_multiplier": 0.5,
+ "goal_cooldown": 200,
+ "can_work_in_rain": false,
+ "work_in_rain_tolerance": 100,
+ "on_arrival": {
+ "event": "minecraft:resupply_trades",
+ "target": "self"
+ }
+}
+```
+
+## block_climber
+
+endermite
+
+```json
+"minecraft:block_climber": {}
+```
+
+fox
+
+```json
+"minecraft:block_climber": {}
+```
+
+player
+
+```json
+"minecraft:block_climber": {}
+```
+
+rabbit
+
+```json
+"minecraft:block_climber": {}
+```
+
+silverfish
+
+```json
+"minecraft:block_climber": {}
+```
+
+## block_sensor
+
+bee
+
+```json
+"minecraft:block_sensor": {
+ "sensor_radius": 16,
+ "sources": [
+ {
+ "test": "has_silk_touch",
+ "subject": "other",
+ "value": false
+ }
+ ],
+ "on_break": [
+ {
+ "block_list": [
+ "minecraft:beehive",
+ "minecraft:bee_nest"
+ ],
+ "on_block_broken": "hive_destroyed"
+ }
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:block_sensor": {
+ "sensor_radius": 16,
+ "on_break": [
+ {
+ "block_list": [
+ "minecraft:gold_block",
+ "minecraft:gilded_blackstone",
+ "minecraft:nether_gold_ore",
+ "minecraft:deepslate_gold_ore",
+ "minecraft:raw_gold_block",
+ "minecraft:gold_ore",
+ "minecraft:chest",
+ "minecraft:trapped_chest",
+ "minecraft:ender_chest",
+ "minecraft:barrel",
+ "minecraft:shulker_box",
+ "minecraft:undyed_shulker_box"
+ ],
+ "on_block_broken": "important_block_destroyed_event"
+ }
+ ]
+}
+```
+
+## boostable
+
+pig
+
+```json
+"minecraft:boostable": {
+ "speed_multiplier": 1.35,
+ "duration": 3.0,
+ "boost_items": [
+ {
+ "item": "carrotOnAStick",
+ "damage": 2,
+ "replace_item": "fishing_rod"
+ }
+ ]
+}
+```
+
+strider
+
+```json
+"minecraft:boostable": {
+ "speed_multiplier": 1.35,
+ "duration": 16.0,
+ "boost_items": [
+ {
+ "item": "warped_fungus_on_a_stick",
+ "damage": 1,
+ "replace_item": "fishing_rod"
+ }
+ ]
+}
+```
+
+## boss
+
+ender_dragon
+
+```json
+"minecraft:boss": {
+ "should_darken_sky": false,
+ "hud_range": 125
+}
+```
+
+wither
+
+```json
+"minecraft:boss": {
+ "should_darken_sky": true,
+ "hud_range": 55
+}
+```
+
+## break_blocks
+
+ravager
+
+```json
+"minecraft:break_blocks": {
+ "breakable_blocks": [
+ "bamboo",
+ "bamboo_sapling",
+ "beetroot",
+ "brown_mushroom",
+ "carrots",
+ "carved_pumpkin",
+ "chorus_flower",
+ "chorus_plant",
+ "deadbush",
+ "double_plant",
+ "leaves",
+ "leaves2",
+ "lit_pumpkin",
+ "melon_block",
+ "melon_stem",
+ "potatoes",
+ "pumpkin",
+ "pumpkin_stem",
+ "red_flower",
+ "red_mushroom",
+ "crimson_fungus",
+ "warped_fungus",
+ "reeds",
+ "sapling",
+ "snow_layer",
+ "sweet_berry_bush",
+ "tallgrass",
+ "turtle_egg",
+ "vine",
+ "waterlily",
+ "wheat",
+ "yellow_flower",
+ "azalea",
+ "flowering_azalea",
+ "azalea_leaves",
+ "azalea_leaves_flowered",
+ "cave_vines",
+ "cave_vines_body_with_berries",
+ "cave_vines_head_with_berries",
+ "small_dripleaf_block",
+ "big_dripleaf",
+ "spore_blossom",
+ "hanging_roots",
+ "mangrove_leaves"
+ ]
+}
+```
+
+## breathable
+
+allay
+
+```json
+"minecraft:breathable": {
+ "totalSupply": 15,
+ "suffocateTime": 0
+}
+```
+
+axolotl
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true,
+ "breathes_air": true,
+ "generates_bubbles": false
+}
+```
+
+bat
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+bee
+
+```json
+"minecraft:breathable": {
+ "totalSupply": 15,
+ "suffocateTime": 0
+}
+```
+
+camel
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+cat
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+cave_spider
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+chicken
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+cow
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+creeper
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+dolphin
+
+```json
+"minecraft:breathable": {
+ "total_supply": 240,
+ "suffocate_time": 0,
+ "breathes_air": true,
+ "breathes_water": false,
+ "generates_bubbles": false
+}
+```
+
+donkey
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+drowned
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_air": true,
+ "breathes_water": true
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:breathable": {
+ "breathes_water": true
+}
+```
+
+enderman
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+endermite
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+cod
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_air": false,
+ "breathes_water": true
+}
+```
+
+fox
+
+```json
+"minecraft:breathable": {
+ "totalSupply": 15,
+ "suffocateTime": 0
+}
+```
+
+frog
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true,
+ "breathes_air": true,
+ "generates_bubbles": false
+}
+```
+
+ghast
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+glow_squid
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_air": false,
+ "breathes_water": true
+}
+```
+
+goat
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+guardian
+
+```json
+"minecraft:breathable": {
+ "breathes_water": true
+}
+```
+
+hoglin
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+horse
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+husk
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+llama
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+magma_cube
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_lava": true
+}
+```
+
+mooshroom
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+mule
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+ocelot
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+panda
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+parrot
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+phantom
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_air": true,
+ "breathes_water": false
+}
+```
+
+pig
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+piglin
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+pillager
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+player
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": -1,
+ "inhale_time": 3.75,
+ "generates_bubbles": false
+}
+```
+
+polar_bear
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+pufferfish
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_air": false,
+ "breathes_water": true
+}
+```
+
+rabbit
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+ravager
+
+```json
+"minecraft:breathable": {
+ "suffocate_time": 0,
+ "total_supply": 15
+}
+```
+
+salmon
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_air": false,
+ "breathes_water": true
+}
+```
+
+sheep
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+shulker
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_lava": false,
+ "breathes_water": false
+}
+```
+
+silverfish
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+skeleton
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+slime
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+sniffer
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+snow_golem
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+spider
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+squid
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_air": false,
+ "breathes_water": true
+}
+```
+
+stray
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+tadpole
+
+```json
+"minecraft:breathable": {
+ "total_supply": 8,
+ "suffocate_time": 0,
+ "breathes_water": true,
+ "breathes_air": false,
+ "generates_bubbles": false
+}
+```
+
+trader_llama
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_air": false,
+ "breathes_water": true
+}
+```
+
+turtle
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true,
+ "breathes_air": true,
+ "generates_bubbles": false
+}
+```
+
+villager
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+villager_v2
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+vindicator
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+warden
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+witch
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+wither
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+wolf
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0
+}
+```
+
+zoglin
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+zombie
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_air": true,
+ "breathes_water": true
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:breathable": {
+ "total_supply": 15,
+ "suffocate_time": 0,
+ "breathes_water": true
+}
+```
+
+## breedable
+
+axolotl
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breed_items": "tropical_fish_bucket",
+ "transform_to_item": "water_bucket:0",
+ "breeds_with": {
+ "mate_type": "minecraft:axolotl",
+ "baby_type": "minecraft:axolotl",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "mutation_factor": {
+ "variant": 0.00083
+ }
+}
+```
+
+bee
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": {
+ "mate_type": "minecraft:bee",
+ "baby_type": "minecraft:bee",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "minecraft:red_flower",
+ "minecraft:yellow_flower",
+ "minecraft:wither_rose",
+ "minecraft:double_plant:0",
+ "minecraft:double_plant:1",
+ "minecraft:double_plant:4",
+ "minecraft:double_plant:5",
+ "minecraft:flowering_azalea",
+ "minecraft:azalea_leaves_flowered",
+ "minecraft:mangrove_propagule",
+ "minecraft:pitcher_plant",
+ "minecraft:torchflower",
+ "minecraft:cherry_leaves",
+ "minecraft:pink_petals"
+ ]
+}
+```
+
+camel
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": [
+ {
+ "mate_type": "minecraft:camel",
+ "baby_type": "minecraft:camel",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+ ],
+ "breed_items": [
+ "cactus"
+ ]
+}
+```
+
+cat
+
+```json
+"minecraft:breedable": {
+ "require_tame": true,
+ "require_full_health": true,
+ "allow_sitting": true,
+ "breeds_with": {
+ "mate_type": "minecraft:cat",
+ "baby_type": "minecraft:cat",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+chicken
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": {
+ "mate_type": "minecraft:chicken",
+ "baby_type": "minecraft:chicken",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "wheat_seeds",
+ "beetroot_seeds",
+ "melon_seeds",
+ "pumpkin_seeds",
+ "pitcher_pod",
+ "torchflower_seeds"
+ ]
+}
+```
+
+cow
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breed_items": "wheat",
+ "breeds_with": {
+ "mate_type": "minecraft:cow",
+ "baby_type": "minecraft:cow",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+}
+```
+
+donkey
+
+```json
+"minecraft:breedable": {
+ "parent_centric_attribute_blending": [
+ "minecraft:health"
+ ],
+ "require_tame": true,
+ "inherit_tamed": false,
+ "breeds_with": [
+ {
+ "mate_type": "minecraft:donkey",
+ "baby_type": "minecraft:donkey",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ {
+ "mate_type": "minecraft:horse",
+ "baby_type": "minecraft:mule",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+ ],
+ "breed_items": [
+ "golden_carrot",
+ "golden_apple",
+ "appleEnchanted"
+ ]
+}
+```
+
+fox
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breed_items": [
+ "sweet_berries",
+ "glow_berries"
+ ],
+ "breeds_with": {
+ "mate_type": "minecraft:fox",
+ "baby_type": "minecraft:fox",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+}
+```
+
+frog
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "causes_pregnancy": true,
+ "breeds_with": {
+ "mate_type": "minecraft:frog",
+ "baby_type": "minecraft:tadpole",
+ "breed_event": {
+ "event": "become_pregnant"
+ }
+ },
+ "breed_items": [
+ "slime_ball"
+ ]
+}
+```
+
+goat
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breed_items": "wheat",
+ "breeds_with": {
+ "mate_type": "minecraft:goat",
+ "baby_type": "minecraft:goat",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "mutation_factor": {
+ "variant": 0
+ }
+}
+```
+
+hoglin
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "love_filters": {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:attack_cooldown"
+ },
+ "breeds_with": {
+ "mate_type": "minecraft:hoglin",
+ "baby_type": "minecraft:hoglin",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "crimson_fungus"
+ ]
+}
+```
+
+horse
+
+```json
+"minecraft:breedable": {
+ "parent_centric_attribute_blending": [
+ "minecraft:health",
+ "minecraft:movement",
+ "minecraft:horse.jump_strength"
+ ],
+ "require_tame": true,
+ "inherit_tamed": false,
+ "breeds_with": [
+ {
+ "mate_type": "minecraft:horse",
+ "baby_type": "minecraft:horse",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ {
+ "mate_type": "minecraft:donkey",
+ "baby_type": "minecraft:mule",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+ ],
+ "breed_items": [
+ "golden_carrot",
+ "golden_apple",
+ "appleEnchanted"
+ ],
+ "mutation_factor": {
+ "extra_variant": 0.2,
+ "variant": 0.111
+ },
+ "mutation_strategy": "random",
+ "random_variant_mutation_interval": [
+ 0,
+ 7
+ ],
+ "random_extra_variant_mutation_interval": [
+ 0,
+ 5
+ ]
+}
+```
+
+llama
+
+```json
+"minecraft:breedable": {
+ "parent_centric_attribute_blending": [
+ "minecraft:health"
+ ],
+ "require_tame": true,
+ "inherit_tamed": false,
+ "breeds_with": {
+ "mate_type": "minecraft:llama",
+ "baby_type": "minecraft:llama",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "hay_block"
+ ]
+}
+```
+
+mooshroom
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breed_items": "wheat",
+ "breeds_with": {
+ "mate_type": "minecraft:mooshroom",
+ "baby_type": "minecraft:mooshroom",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "deny_parents_variant": {
+ "chance": 0.00098,
+ "min_variant": 0,
+ "max_variant": 1
+ }
+}
+```
+
+ocelot
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": {
+ "mate_type": "minecraft:ocelot",
+ "baby_type": "minecraft:ocelot",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+panda
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "blend_attributes": false,
+ "environment_requirements": {
+ "blocks": "bamboo",
+ "count": 8,
+ "radius": 5
+ },
+ "breed_items": "bamboo",
+ "breeds_with": {
+ "mate_type": "minecraft:panda",
+ "baby_type": "minecraft:panda",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "mutation_factor": {
+ "variant": 1.0
+ }
+}
+```
+
+pig
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": {
+ "mate_type": "minecraft:pig",
+ "baby_type": "minecraft:pig",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "carrot",
+ "beetroot",
+ "potato"
+ ]
+}
+```
+
+rabbit
+
+```json
+"minecraft:breedable": {
+ "breed_items": [
+ "golden_carrot",
+ "carrot",
+ "yellow_flower"
+ ],
+ "breeds_with": {
+ "mate_type": "minecraft:rabbit",
+ "baby_type": "minecraft:rabbit"
+ },
+ "require_tame": false,
+ "mutation_factor": {
+ "variant": 0.2
+ }
+}
+```
+
+sheep
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": {
+ "mate_type": "minecraft:sheep",
+ "baby_type": "minecraft:sheep"
+ },
+ "breed_items": "wheat"
+}
+```
+
+sniffer
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "causes_pregnancy": true,
+ "breeds_with": [
+ {
+ "mate_type": "minecraft:sniffer",
+ "breed_event": {
+ "event": "on_pregnant",
+ "target": "self"
+ }
+ }
+ ],
+ "breed_items": [
+ "torchflower_seeds"
+ ]
+}
+```
+
+strider
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "breeds_with": {
+ "mate_type": "minecraft:strider",
+ "baby_type": "minecraft:strider",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "warped_fungus"
+ ]
+}
+```
+
+trader_llama
+
+```json
+"minecraft:breedable": {
+ "require_tame": true,
+ "inherit_tamed": false,
+ "breeds_with": [
+ {
+ "mate_type": "minecraft:llama",
+ "baby_type": "minecraft:llama",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ {
+ "mate_type": "minecraft:trader_llama",
+ "baby_type": "minecraft:trader_llama",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ }
+ ],
+ "breed_items": [
+ "hay_block"
+ ]
+}
+```
+
+turtle
+
+```json
+"minecraft:breedable": {
+ "require_tame": false,
+ "causes_pregnancy": true,
+ "breeds_with": {
+ "mate_type": "minecraft:turtle",
+ "baby_type": "minecraft:turtle",
+ "breed_event": {
+ "event": "minecraft:become_pregnant",
+ "target": "self"
+ }
+ },
+ "breed_items": [
+ "seagrass"
+ ]
+}
+```
+
+wolf
+
+```json
+"minecraft:breedable": {
+ "require_tame": true,
+ "require_full_health": true,
+ "breeds_with": {
+ "mate_type": "minecraft:wolf",
+ "baby_type": "minecraft:wolf",
+ "breed_event": {
+ "event": "minecraft:entity_born",
+ "target": "baby"
+ }
+ },
+ "breed_items": [
+ "chicken",
+ "cooked_chicken",
+ "beef",
+ "cooked_beef",
+ "muttonRaw",
+ "muttonCooked",
+ "porkchop",
+ "cooked_porkchop",
+ "rabbit",
+ "cooked_rabbit",
+ "rotten_flesh"
+ ]
+}
+```
+
+## bribeable
+
+dolphin
+
+```json
+"minecraft:bribeable": {
+ "bribe_items": [
+ "fish",
+ "salmon"
+ ]
+}
+```
+
+## buoyant
+
+boat
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": true,
+ "big_wave_probability": 0.03,
+ "big_wave_speed": 10.0,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ]
+}
+```
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": true,
+ "big_wave_probability": 0.03,
+ "big_wave_speed": 10.0,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ]
+}
+```
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": false,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ],
+ "drag_down_on_buoyancy_removed": 0.7
+}
+```
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": false,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ],
+ "drag_down_on_buoyancy_removed": 0.7
+}
+```
+
+chest_boat
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": true,
+ "big_wave_probability": 0.03,
+ "big_wave_speed": 10.0,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ]
+}
+```
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": true,
+ "big_wave_probability": 0.03,
+ "big_wave_speed": 10.0,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ]
+}
+```
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": false,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ],
+ "drag_down_on_buoyancy_removed": 0.7
+}
+```
+
+```json
+"minecraft:buoyant": {
+ "base_buoyancy": 1.0,
+ "apply_gravity": true,
+ "simulate_waves": false,
+ "liquid_blocks": [
+ "minecraft:water",
+ "minecraft:flowing_water"
+ ],
+ "drag_down_on_buoyancy_removed": 0.7
+}
+```
+
+xp_orb
+
+```json
+"minecraft:buoyant": {
+ "apply_gravity": false,
+ "liquid_blocks": [
+ "minecraft:flowing_water",
+ "minecraft:water"
+ ]
+}
+```
+
+## burns_in_daylight
+
+drowned
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+magma_cube
+
+```json
+"minecraft:burns_in_daylight": false
+```
+
+phantom
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+skeleton
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+stray
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+zombie
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:burns_in_daylight": {}
+```
+
+## can_climb
+
+blaze
+
+```json
+"minecraft:can_climb": {}
+```
+
+camel
+
+```json
+"minecraft:can_climb": {}
+```
+
+cat
+
+```json
+"minecraft:can_climb": {}
+```
+
+cave_spider
+
+```json
+"minecraft:can_climb": {}
+```
+
+chicken
+
+```json
+"minecraft:can_climb": {}
+```
+
+cow
+
+```json
+"minecraft:can_climb": {}
+```
+
+creeper
+
+```json
+"minecraft:can_climb": {}
+```
+
+dolphin
+
+```json
+"minecraft:can_climb": {}
+```
+
+drowned
+
+```json
+"minecraft:can_climb": {}
+```
+
+enderman
+
+```json
+"minecraft:can_climb": {}
+```
+
+endermite
+
+```json
+"minecraft:can_climb": {}
+```
+
+evocation_illager
+
+```json
+"minecraft:can_climb": {}
+```
+
+fox
+
+```json
+"minecraft:can_climb": {}
+```
+
+glow_squid
+
+```json
+"minecraft:can_climb": {}
+```
+
+goat
+
+```json
+"minecraft:can_climb": {}
+```
+
+hoglin
+
+```json
+"minecraft:can_climb": {}
+```
+
+husk
+
+```json
+"minecraft:can_climb": {}
+```
+
+iron_golem
+
+```json
+"minecraft:can_climb": {}
+```
+
+magma_cube
+
+```json
+"minecraft:can_climb": {}
+```
+
+mooshroom
+
+```json
+"minecraft:can_climb": {}
+```
+
+ocelot
+
+```json
+"minecraft:can_climb": {}
+```
+
+panda
+
+```json
+"minecraft:can_climb": {}
+```
+
+pig
+
+```json
+"minecraft:can_climb": {}
+```
+
+player
+
+```json
+"minecraft:can_climb": {}
+```
+
+polar_bear
+
+```json
+"minecraft:can_climb": {}
+```
+
+rabbit
+
+```json
+"minecraft:can_climb": {}
+```
+
+sheep
+
+```json
+"minecraft:can_climb": {}
+```
+
+silverfish
+
+```json
+"minecraft:can_climb": {}
+```
+
+skeleton
+
+```json
+"minecraft:can_climb": {}
+```
+
+slime
+
+```json
+"minecraft:can_climb": {}
+```
+
+sniffer
+
+```json
+"minecraft:can_climb": {}
+```
+
+snow_golem
+
+```json
+"minecraft:can_climb": {}
+```
+
+spider
+
+```json
+"minecraft:can_climb": {}
+```
+
+squid
+
+```json
+"minecraft:can_climb": {}
+```
+
+stray
+
+```json
+"minecraft:can_climb": {}
+```
+
+vex
+
+```json
+"minecraft:can_climb": {}
+```
+
+villager
+
+```json
+"minecraft:can_climb": {}
+```
+
+villager_v2
+
+```json
+"minecraft:can_climb": {}
+```
+
+wandering_trader
+
+```json
+"minecraft:can_climb": {}
+```
+
+warden
+
+```json
+"minecraft:can_climb": {}
+```
+
+witch
+
+```json
+"minecraft:can_climb": {}
+```
+
+wither
+
+```json
+"minecraft:can_climb": {}
+```
+
+wither_skeleton
+
+```json
+"minecraft:can_climb": {}
+```
+
+wolf
+
+```json
+"minecraft:can_climb": {}
+```
+
+zoglin
+
+```json
+"minecraft:can_climb": {}
+```
+
+zombie
+
+```json
+"minecraft:can_climb": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:can_climb": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:can_climb": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:can_climb": {}
+```
+
+## can_fly
+
+allay
+
+```json
+"minecraft:can_fly": {}
+```
+
+bat
+
+```json
+"minecraft:can_fly": {}
+```
+
+bee
+
+```json
+"minecraft:can_fly": {}
+```
+
+ghast
+
+```json
+"minecraft:can_fly": {}
+```
+
+parrot
+
+```json
+"minecraft:can_fly": {}
+```
+
+wither
+
+```json
+"minecraft:can_fly": {}
+```
+
+## can_power_jump
+
+donkey
+
+```json
+"minecraft:can_power_jump": {}
+```
+
+horse
+
+```json
+"minecraft:can_power_jump": {}
+```
+
+mule
+
+```json
+"minecraft:can_power_jump": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:can_power_jump": {}
+```
+
+## celebrate_hunt
+
+piglin
+
+```json
+"minecraft:celebrate_hunt": {
+ "celebration_targets": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "value": "hoglin"
+ }
+ ]
+ },
+ "broadcast": true,
+ "duration": 10,
+ "celebrate_sound": "celebrate",
+ "sound_interval": {
+ "range_min": 2.0,
+ "range_max": 5.0
+ },
+ "radius": 16
+}
+```
+
+## collision_box
+
+allay
+
+```json
+"minecraft:collision_box": {
+ "width": 0.35,
+ "height": 0.6
+}
+```
+
+armor_stand
+
+```json
+"minecraft:collision_box": {
+ "width": 0.5,
+ "height": 1.975
+}
+```
+
+arrow
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+axolotl
+
+```json
+"minecraft:collision_box": {
+ "width": 0.75,
+ "height": 0.42
+}
+```
+
+bat
+
+```json
+"minecraft:collision_box": {
+ "width": 0.5,
+ "height": 0.9
+}
+```
+
+bee
+
+```json
+"minecraft:collision_box": {
+ "width": 0.55,
+ "height": 0.5
+}
+```
+
+blaze
+
+```json
+"minecraft:collision_box": {
+ "width": 0.5,
+ "height": 1.8
+}
+```
+
+boat
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 0.455
+}
+```
+
+camel
+
+```json
+"minecraft:collision_box": {
+ "width": 1.7,
+ "height": 2.375
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 1.7,
+ "height": 0.945
+}
+```
+
+cat
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 0.7
+}
+```
+
+cave_spider
+
+```json
+"minecraft:collision_box": {
+ "width": 0.7,
+ "height": 0.5
+}
+```
+
+chest_boat
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 0.455
+}
+```
+
+chest_minecart
+
+```json
+"minecraft:collision_box": {
+ "width": 0.98,
+ "height": 0.7
+}
+```
+
+chicken
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 0.8
+}
+```
+
+command_block_minecart
+
+```json
+"minecraft:collision_box": {
+ "width": 0.98,
+ "height": 0.7
+}
+```
+
+cow
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 1.3
+}
+```
+
+creeper
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.8
+}
+```
+
+dolphin
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 0.6
+}
+```
+
+donkey
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 1.6
+}
+```
+
+dragon_fireball
+
+```json
+"minecraft:collision_box": {
+ "width": 0.31,
+ "height": 0.31
+}
+```
+
+drowned
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+egg
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:collision_box": {
+ "width": 1.99,
+ "height": 1.99
+}
+```
+
+enderman
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 2.9
+}
+```
+
+endermite
+
+```json
+"minecraft:collision_box": {
+ "width": 0.4,
+ "height": 0.3
+}
+```
+
+ender_crystal
+
+```json
+"minecraft:collision_box": {
+ "width": 2,
+ "height": 2
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:collision_box": {
+ "width": 13,
+ "height": 4
+}
+```
+
+ender_pearl
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+eye_of_ender_signal
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+fireball
+
+```json
+"minecraft:collision_box": {
+ "width": 1.0,
+ "height": 1.0
+}
+```
+
+fireworks_rocket
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+cod
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 0.3
+}
+```
+
+fishing_hook
+
+```json
+"minecraft:collision_box": {
+ "width": 0.15,
+ "height": 0.15
+}
+```
+
+fox
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 0.7
+}
+```
+
+frog
+
+```json
+"minecraft:collision_box": {
+ "width": 0.5,
+ "height": 0.55
+}
+```
+
+ghast
+
+```json
+"minecraft:collision_box": {
+ "width": 4.02,
+ "height": 4
+}
+```
+
+glow_squid
+
+```json
+"minecraft:collision_box": {
+ "width": 0.95,
+ "height": 0.95
+}
+```
+
+goat
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 1.3
+}
+```
+
+guardian
+
+```json
+"minecraft:collision_box": {
+ "width": 0.85,
+ "height": 0.85
+}
+```
+
+hoglin
+
+```json
+"minecraft:collision_box": {
+ "width": 0.85,
+ "height": 0.85
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 1.4
+}
+```
+
+hopper_minecart
+
+```json
+"minecraft:collision_box": {
+ "width": 0.98,
+ "height": 0.7
+}
+```
+
+horse
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 1.6
+}
+```
+
+husk
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+iron_golem
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 2.9
+}
+```
+
+lingering_potion
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+llama
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 1.87
+}
+```
+
+llama_spit
+
+```json
+"minecraft:collision_box": {
+ "width": 0.31,
+ "height": 0.31
+}
+```
+
+magma_cube
+
+```json
+"minecraft:collision_box": {
+ "width": 2.08,
+ "height": 2.08
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 2.08,
+ "height": 2.08
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 1.04,
+ "height": 1.02
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 0.52,
+ "height": 0.52
+}
+```
+
+minecart
+
+```json
+"minecraft:collision_box": {
+ "width": 0.98,
+ "height": 0.7
+}
+```
+
+mooshroom
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 1.3
+}
+```
+
+mule
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 1.6
+}
+```
+
+npc
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 2.1
+}
+```
+
+ocelot
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 0.7
+}
+```
+
+panda
+
+```json
+"minecraft:collision_box": {
+ "width": 1.3,
+ "height": 1.25
+}
+```
+
+parrot
+
+```json
+"minecraft:collision_box": {
+ "width": 0.5,
+ "height": 1
+}
+```
+
+phantom
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 0.5
+}
+```
+
+pig
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 0.9
+}
+```
+
+piglin
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+pillager
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+player
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.8
+}
+```
+
+polar_bear
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 1.4
+}
+```
+
+pufferfish
+
+```json
+"minecraft:collision_box": {
+ "width": 0.8,
+ "height": 0.8
+}
+```
+
+rabbit
+
+```json
+"minecraft:collision_box": {
+ "width": 0.67,
+ "height": 0.67
+}
+```
+
+ravager
+
+```json
+"minecraft:collision_box": {
+ "height": 2.2,
+ "width": 1.95
+}
+```
+
+salmon
+
+```json
+"minecraft:collision_box": {
+ "width": 0.5,
+ "height": 0.5
+}
+```
+
+sheep
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 1.3
+}
+```
+
+shulker_bullet
+
+```json
+"minecraft:collision_box": {
+ "width": 0.625,
+ "height": 0.625
+}
+```
+
+silverfish
+
+```json
+"minecraft:collision_box": {
+ "width": 0.4,
+ "height": 0.3
+}
+```
+
+skeleton
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 1.6
+}
+```
+
+slime
+
+```json
+"minecraft:collision_box": {
+ "width": 2.08,
+ "height": 2.08
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 2.08,
+ "height": 2.08
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 1.04,
+ "height": 1.04
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 0.52,
+ "height": 0.52
+}
+```
+
+small_fireball
+
+```json
+"minecraft:collision_box": {
+ "width": 0.31,
+ "height": 0.31
+}
+```
+
+sniffer
+
+```json
+"minecraft:collision_box": {
+ "width": 1.9,
+ "height": 1.75
+}
+```
+
+snowball
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+snow_golem
+
+```json
+"minecraft:collision_box": {
+ "width": 0.4,
+ "height": 1.8
+}
+```
+
+spider
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 0.9
+}
+```
+
+splash_potion
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+squid
+
+```json
+"minecraft:collision_box": {
+ "width": 0.95,
+ "height": 0.95
+}
+```
+
+stray
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+strider
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 1.7
+}
+```
+
+tadpole
+
+```json
+"minecraft:collision_box": {
+ "width": 0.8,
+ "height": 0.6
+}
+```
+
+thrown_trident
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.35
+}
+```
+
+tnt
+
+```json
+"minecraft:collision_box": {
+ "width": 0.98,
+ "height": 0.98
+}
+```
+
+tnt_minecart
+
+```json
+"minecraft:collision_box": {
+ "width": 0.98,
+ "height": 0.7
+}
+```
+
+trader_llama
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 1.87
+}
+```
+
+tripod_camera
+
+```json
+"minecraft:collision_box": {
+ "width": 0.75,
+ "height": 1.8
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:collision_box": {
+ "width": 0.4,
+ "height": 0.4
+}
+```
+
+turtle
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 0.2
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 1.2,
+ "height": 0.4
+}
+```
+
+vex
+
+```json
+"minecraft:collision_box": {
+ "width": 0.4,
+ "height": 0.8
+}
+```
+
+villager
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+villager_v2
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+vindicator
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+warden
+
+```json
+"minecraft:collision_box": {
+ "width": 0.9,
+ "height": 2.9
+}
+```
+
+witch
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+wither
+
+```json
+"minecraft:collision_box": {
+ "width": 1,
+ "height": 3
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:collision_box": {
+ "width": 0.72,
+ "height": 2.01
+}
+```
+
+wither_skull
+
+```json
+"minecraft:collision_box": {
+ "width": 0.15,
+ "height": 0.15
+}
+```
+
+wither_skull_dangerous
+
+```json
+"minecraft:collision_box": {
+ "width": 0.15,
+ "height": 0.15
+}
+```
+
+wolf
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 0.8
+}
+```
+
+xp_bottle
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+xp_orb
+
+```json
+"minecraft:collision_box": {
+ "width": 0.25,
+ "height": 0.25
+}
+```
+
+zoglin
+
+```json
+"minecraft:collision_box": {
+ "width": 0.85,
+ "height": 0.85
+}
+```
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 1.4
+}
+```
+
+zombie
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:collision_box": {
+ "width": 1.4,
+ "height": 1.6
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:collision_box": {
+ "width": 0.6,
+ "height": 1.9
+}
+```
+
+## color
+
+cat
+
+```json
+"minecraft:color": {
+ "value": 14
+}
+```
+
+sheep
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 12
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 15
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 8
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 6
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 14
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 6
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 8
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 9
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 10
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 11
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 12
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 13
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 14
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 11
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 6
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 10
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 9
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 14
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 14
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 14
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:color": {
+ "value": 9
+}
+```
+
+wolf
+
+```json
+"minecraft:color": {
+ "value": 14
+}
+```
+
+## color2
+
+tropicalfish
+
+```json
+"minecraft:color2": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 6
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 8
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 9
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 10
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 11
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 12
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 13
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 14
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 14
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 6
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 14
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:color2": {
+ "value": 4
+}
+```
+
+## combat_regeneration
+
+axolotl
+
+```json
+"minecraft:combat_regeneration": {}
+```
+
+## conditional_bandwidth_optimization
+
+allay
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+area_effect_cloud
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+armor_stand
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+arrow
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+bat
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+bee
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+blaze
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+boat
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 60.0,
+ "max_dropped_ticks": 20,
+ "use_motion_prediction_hints": true
+ },
+ "conditional_values": [
+ {
+ "max_optimized_distance": 0.0,
+ "max_dropped_ticks": 0,
+ "use_motion_prediction_hints": true,
+ "conditional_values": [
+ {
+ "test": "is_moving",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ ]
+}
+```
+
+camel
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+cat
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+cave_spider
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+chest_boat
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 60.0,
+ "max_dropped_ticks": 20,
+ "use_motion_prediction_hints": true
+ },
+ "conditional_values": [
+ {
+ "max_optimized_distance": 0.0,
+ "max_dropped_ticks": 0,
+ "use_motion_prediction_hints": true,
+ "conditional_values": [
+ {
+ "test": "is_moving",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ ]
+}
+```
+
+chest_minecart
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 60.0,
+ "max_dropped_ticks": 20,
+ "use_motion_prediction_hints": true
+ },
+ "conditional_values": [
+ {
+ "max_optimized_distance": 0.0,
+ "max_dropped_ticks": 0,
+ "conditional_values": [
+ {
+ "test": "is_moving",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ ]
+}
+```
+
+chicken
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+command_block_minecart
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 60.0,
+ "max_dropped_ticks": 20,
+ "use_motion_prediction_hints": true
+ },
+ "conditional_values": [
+ {
+ "max_optimized_distance": 0.0,
+ "max_dropped_ticks": 0,
+ "conditional_values": [
+ {
+ "test": "is_moving",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ ]
+}
+```
+
+cow
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+creeper
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+dolphin
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+donkey
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+drowned
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+egg
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+enderman
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 10,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+endermite
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+ender_crystal
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+ender_pearl
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+eye_of_ender_signal
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 10,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+fireball
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+fireworks_rocket
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 10,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+cod
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+fishing_hook
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+fox
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+ghast
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+guardian
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+hoglin
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+hopper_minecart
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 60.0,
+ "max_dropped_ticks": 20,
+ "use_motion_prediction_hints": true
+ },
+ "conditional_values": [
+ {
+ "max_optimized_distance": 0.0,
+ "max_dropped_ticks": 0,
+ "conditional_values": [
+ {
+ "test": "is_moving",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ ]
+}
+```
+
+horse
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+husk
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+iron_golem
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+lightning_bolt
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 10,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+lingering_potion
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 5,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+llama
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+llama_spit
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+magma_cube
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+minecart
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 60.0,
+ "max_dropped_ticks": 20,
+ "use_motion_prediction_hints": true
+ },
+ "conditional_values": [
+ {
+ "max_optimized_distance": 0.0,
+ "max_dropped_ticks": 0,
+ "conditional_values": [
+ {
+ "test": "is_moving",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ ]
+}
+```
+
+mooshroom
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+mule
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+ocelot
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+panda
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+parrot
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+phantom
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+pig
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+piglin
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+piglin_brute
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+pillager
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+player
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+polar_bear
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+pufferfish
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+rabbit
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+ravager
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+salmon
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+sheep
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+shulker
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 10,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+shulker_bullet
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+silverfish
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+skeleton
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+slime
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+small_fireball
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+sniffer
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+snowball
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 100.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+snow_golem
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+spider
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+splash_potion
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 5,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+squid
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+stray
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+strider
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+thrown_trident
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+tnt
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 5,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+tnt_minecart
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 60.0,
+ "max_dropped_ticks": 20,
+ "use_motion_prediction_hints": true
+ },
+ "conditional_values": [
+ {
+ "max_optimized_distance": 0.0,
+ "max_dropped_ticks": 0,
+ "conditional_values": [
+ {
+ "test": "is_moving",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ }
+ ]
+}
+```
+
+trader_llama
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+tripod_camera
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+tropicalfish
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+turtle
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+vex
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+villager
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+villager_v2
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+vindicator
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+wandering_trader
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+witch
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+wither
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+wither_skeleton
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+wither_skull
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+wither_skull_dangerous
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 7,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+wolf
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+xp_bottle
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 5,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+xp_orb
+
+```json
+"minecraft:conditional_bandwidth_optimization": {
+ "default_values": {
+ "max_optimized_distance": 80.0,
+ "max_dropped_ticks": 10,
+ "use_motion_prediction_hints": true
+ }
+}
+```
+
+zoglin
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+zombie
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:conditional_bandwidth_optimization": {}
+```
+
+## custom_hit_test
+
+hoglin
+
+```json
+"minecraft:custom_hit_test": {
+ "hitboxes": [
+ {
+ "width": 1.0,
+ "height": 0.85,
+ "pivot": [
+ 0,
+ 0.5,
+ 0
+ ]
+ }
+ ]
+}
+```
+
+```json
+"minecraft:custom_hit_test": {
+ "hitboxes": [
+ {
+ "width": 2.0,
+ "height": 1.75,
+ "pivot": [
+ 0,
+ 1,
+ 0
+ ]
+ }
+ ]
+}
+```
+
+zoglin
+
+```json
+"minecraft:custom_hit_test": {
+ "hitboxes": [
+ {
+ "width": 1.0,
+ "height": 0.85,
+ "pivot": [
+ 0,
+ 0.5,
+ 0
+ ]
+ }
+ ]
+}
+```
+
+```json
+"minecraft:custom_hit_test": {
+ "hitboxes": [
+ {
+ "width": 2.0,
+ "height": 1.75,
+ "pivot": [
+ 0,
+ 1,
+ 0
+ ]
+ }
+ ]
+}
+```
+
+## damage_over_time
+
+axolotl
+
+```json
+"minecraft:damage_over_time": {
+ "damage_per_hurt": 1,
+ "time_between_hurt": 0
+}
+```
+
+dolphin
+
+```json
+"minecraft:damage_over_time": {
+ "damage_per_hurt": 1,
+ "time_between_hurt": 0
+}
+```
+
+## damage_sensor
+
+allay
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": [
+ {
+ "on_damage": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_owner",
+ "subject": "other",
+ "value": true
+ }
+ ]
+ }
+ },
+ "deals_damage": false
+ }
+ ]
+}
+```
+
+axolotl
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "lightning",
+ "deals_damage": true,
+ "damage_multiplier": 2000.0
+ }
+}
+```
+
+bat
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+bee
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+blaze
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+cat
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+chicken
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+creeper
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "lightning"
+ },
+ "event": "minecraft:become_charged"
+ },
+ "deals_damage": false
+ }
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+fox
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": [
+ {
+ "on_damage": {
+ "filters": {
+ "test": "is_block",
+ "subject": "block",
+ "value": "minecraft:sweet_berry_bush"
+ }
+ },
+ "deals_damage": false
+ }
+ ]
+}
+```
+
+frog
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": true,
+ "damage_modifier": -5
+ }
+}
+```
+
+ghast
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+goat
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": true,
+ "damage_modifier": -10
+ }
+}
+```
+
+iron_golem
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+llama
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "all",
+ "deals_damage": true,
+ "on_damage": {
+ "filters": {
+ "test": "in_caravan",
+ "value": false
+ },
+ "event": "minecraft:become_angry"
+ }
+ }
+}
+```
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "all",
+ "deals_damage": true
+ }
+}
+```
+
+magma_cube
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+mooshroom
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": [
+ {
+ "on_damage": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "lightning"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 0
+ }
+ ]
+ },
+ "event": "minecraft:become_brown"
+ },
+ "deals_damage": false,
+ "on_damage_sound_event": "convert_mooshroom"
+ },
+ {
+ "on_damage": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "lightning"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ }
+ ]
+ },
+ "event": "minecraft:become_red"
+ },
+ "deals_damage": false,
+ "on_damage_sound_event": "convert_mooshroom"
+ }
+ ]
+}
+```
+
+npc
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "all",
+ "deals_damage": false
+ }
+}
+```
+
+ocelot
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+parrot
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+pig
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "lightning"
+ },
+ {
+ "test": "is_difficulty",
+ "operator": "!=",
+ "value": "peaceful"
+ }
+ ],
+ "event": "become_zombie"
+ },
+ "deals_damage": false
+ }
+}
+```
+
+pillager
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_damage",
+ "value": "fatal"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ ]
+ },
+ "event": "minecraft:gain_bad_omen",
+ "target": "other"
+ }
+ }
+}
+```
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_damage",
+ "value": "fatal"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ ]
+ },
+ "event": "minecraft:gain_bad_omen",
+ "target": "other"
+ }
+ }
+}
+```
+
+skeleton
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "other_with_families": "lightning"
+ }
+ },
+ "deals_damage": false
+ }
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "lightning"
+ }
+ },
+ "deals_damage": false
+ }
+}
+```
+
+snow_golem
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "fall",
+ "deals_damage": false
+ }
+}
+```
+
+trader_llama
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "all",
+ "deals_damage": true,
+ "on_damage": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "operator": "!=",
+ "value": "trader_llama"
+ },
+ {
+ "test": "in_caravan",
+ "value": false
+ }
+ ]
+ },
+ "event": "minecraft:become_angry"
+ }
+ }
+}
+```
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "all",
+ "deals_damage": true
+ }
+}
+```
+
+turtle
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "cause": "lightning",
+ "deals_damage": true,
+ "damage_multiplier": 2000.0
+ }
+}
+```
+
+villager
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": [
+ {
+ "on_damage": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "lightning"
+ },
+ "event": "become_witch"
+ },
+ "deals_damage": false
+ },
+ {
+ "on_damage": {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "husk"
+ }
+ ],
+ "all_of": [
+ {
+ "test": "has_damage",
+ "value": "fatal"
+ }
+ ]
+ },
+ "event": "become_zombie"
+ }
+ }
+ ]
+}
+```
+
+villager_v2
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": [
+ {
+ "on_damage": {
+ "filters": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "lightning"
+ },
+ {
+ "test": "is_difficulty",
+ "operator": "!=",
+ "value": "peaceful"
+ }
+ ],
+ "event": "become_witch"
+ },
+ "deals_damage": false
+ },
+ {
+ "on_damage": {
+ "filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "zombie"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "husk"
+ }
+ ],
+ "all_of": [
+ {
+ "test": "has_damage",
+ "value": "fatal"
+ }
+ ]
+ },
+ "event": "become_zombie"
+ }
+ }
+ ]
+}
+```
+
+vindicator
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_damage",
+ "value": "fatal"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ ]
+ },
+ "event": "minecraft:gain_bad_omen",
+ "target": "other"
+ }
+ }
+}
+```
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_damage",
+ "value": "fatal"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ ]
+ },
+ "event": "minecraft:gain_bad_omen",
+ "target": "other"
+ }
+ }
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": [
+ {
+ "cause": "entity_attack",
+ "deals_damage": true,
+ "on_damage": {
+ "event": "minecraft:become_scared"
+ }
+ },
+ {
+ "cause": "projectile",
+ "deals_damage": true,
+ "on_damage": {
+ "event": "minecraft:become_scared"
+ }
+ },
+ {
+ "cause": "magic",
+ "deals_damage": true,
+ "on_damage": {
+ "event": "minecraft:become_scared"
+ }
+ }
+ ]
+}
+```
+
+witch
+
+```json
+"minecraft:damage_sensor": {}
+```
+
+wither
+
+```json
+"minecraft:damage_sensor": {
+ "triggers": {
+ "on_damage": {
+ "filters": {
+ "test": "is_family",
+ "subject": "other",
+ "value": "undead"
+ }
+ },
+ "deals_damage": false
+ }
+}
+```
+
+## dash
+
+camel
+
+```json
+"minecraft:dash": {
+ "cooldown_time": 2.75,
+ "horizontal_momentum": 20.0,
+ "vertical_momentum": 0.6
+}
+```
+
+## despawn
+
+axolotl
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+bat
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+blaze
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+camel
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+cat
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+cave_spider
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+chicken
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+cow
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+creeper
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+dolphin
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+donkey
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+drowned
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+enderman
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+endermite
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+cod
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {
+ "min_distance": 32,
+ "max_distance": 40
+ }
+}
+```
+
+fox
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+frog
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+ghast
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+glow_squid
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+goat
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+guardian
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+hoglin
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+horse
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+husk
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+llama
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+magma_cube
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+mooshroom
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+mule
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+ocelot
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+panda
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+parrot
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+phantom
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+pig
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+piglin
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:despawn": {
+ "filters": {
+ "any_of": [
+ {
+ "all_of": [
+ {
+ "test": "is_persistent",
+ "value": false
+ },
+ {
+ "test": "distance_to_nearest_player",
+ "operator": ">",
+ "value": 54
+ }
+ ]
+ },
+ {
+ "all_of": [
+ {
+ "test": "is_persistent",
+ "value": false
+ },
+ {
+ "test": "inactivity_timer",
+ "subject": "self",
+ "value": 30
+ },
+ {
+ "test": "random_chance",
+ "value": 800
+ },
+ {
+ "test": "distance_to_nearest_player",
+ "operator": ">",
+ "value": 32
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+pillager
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+polar_bear
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+pufferfish
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {
+ "min_distance": 32,
+ "max_distance": 40
+ }
+}
+```
+
+rabbit
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+ravager
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+salmon
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {
+ "min_distance": 32,
+ "max_distance": 40
+ }
+}
+```
+
+sheep
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+silverfish
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+skeleton
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+slime
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+spider
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+squid
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+stray
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+strider
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+tadpole
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+trader_llama
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {
+ "min_distance": 32,
+ "max_distance": 40
+ }
+}
+```
+
+turtle
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+vex
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+vindicator
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:despawn": {
+ "remove_child_entities": true,
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "self",
+ "value": "wandering_trader_despawning"
+ },
+ {
+ "test": "has_trade_supply",
+ "subject": "self",
+ "value": false
+ }
+ ]
+ },
+ {
+ "test": "distance_to_nearest_player",
+ "operator": ">",
+ "value": 24
+ }
+ ]
+ }
+}
+```
+
+witch
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+wolf
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+zoglin
+
+```json
+"minecraft:despawn": {
+ "filters": {
+ "any_of": [
+ {
+ "all_of": [
+ {
+ "test": "is_persistent",
+ "value": false
+ },
+ {
+ "test": "distance_to_nearest_player",
+ "operator": ">",
+ "value": 54
+ }
+ ]
+ },
+ {
+ "all_of": [
+ {
+ "test": "is_persistent",
+ "value": false
+ },
+ {
+ "test": "inactivity_timer",
+ "subject": "self",
+ "value": 30
+ },
+ {
+ "test": "random_chance",
+ "value": 800
+ },
+ {
+ "test": "distance_to_nearest_player",
+ "operator": ">",
+ "value": 32
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+
+zombie
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:despawn": {
+ "despawn_from_distance": {}
+}
+```
+
+## drying_out_timer
+
+axolotl
+
+```json
+"minecraft:drying_out_timer": {
+ "total_time": 300,
+ "water_bottle_refill_time": 90,
+ "dried_out_event": {
+ "event": "dried_out"
+ },
+ "stopped_drying_out_event": {
+ "event": "stop_drying_out"
+ },
+ "recover_after_dried_out_event": {
+ "event": "recover_after_dried_out"
+ }
+}
+```
+
+dolphin
+
+```json
+"minecraft:drying_out_timer": {
+ "total_time": 120,
+ "water_bottle_refill_time": 0,
+ "dried_out_event": {
+ "event": "dried_out"
+ },
+ "stopped_drying_out_event": {
+ "event": "stop_dryingout"
+ },
+ "recover_after_dried_out_event": {
+ "event": "recover_after_dried_out"
+ }
+}
+```
+
+## dweller
+
+cat
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "passive",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "hostile",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+iron_golem
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "defender",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+pillager
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "hostile",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+ravager
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "hostile",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+villager_v2
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "farmer",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "fisherman",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "shepherd",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "fletcher",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "librarian",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "cartographer",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "cleric",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "armorer",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "weaponsmith",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "toolsmith",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "butcher",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "leatherworker",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "inhabitant",
+ "preferred_profession": "mason",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": true,
+ "can_migrate": true,
+ "first_founding_reward": 5
+}
+```
+
+vindicator
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "hostile",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+witch
+
+```json
+"minecraft:dweller": {
+ "dwelling_type": "village",
+ "dweller_role": "hostile",
+ "update_interval_base": 60,
+ "update_interval_variant": 40,
+ "can_find_poi": false,
+ "can_migrate": true,
+ "first_founding_reward": 0
+}
+```
+
+## economy_trade_table
+
+villager_v2
+
+```json
+"minecraft:economy_trade_table": {}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.farmer",
+ "table": "trading/economy_trades/farmer_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.fisherman",
+ "table": "trading/economy_trades/fisherman_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.shepherd",
+ "table": "trading/economy_trades/shepherd_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.fletcher",
+ "table": "trading/economy_trades/fletcher_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.librarian",
+ "table": "trading/economy_trades/librarian_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.cartographer",
+ "table": "trading/economy_trades/cartographer_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.cleric",
+ "table": "trading/economy_trades/cleric_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.armor",
+ "table": "trading/economy_trades/armorer_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.weapon",
+ "table": "trading/economy_trades/weapon_smith_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.tool",
+ "table": "trading/economy_trades/tool_smith_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.butcher",
+ "table": "trading/economy_trades/butcher_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.leather",
+ "table": "trading/economy_trades/leather_worker_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.villager.mason",
+ "table": "trading/economy_trades/stone_mason_trades.json",
+ "new_screen": true,
+ "persist_trades": true,
+ "cured_discount": [
+ -100,
+ -100
+ ],
+ "max_cured_discount": [
+ -500,
+ -500
+ ]
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:economy_trade_table": {
+ "display_name": "entity.wandering_trader.name",
+ "table": "trading/economy_trades/wandering_trader_trades.json",
+ "new_screen": true
+}
+```
+
+## entity_sensor
+
+parrot
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.0,
+ "relative_range": false,
+ "event_filters": {
+ "all_of": [
+ {
+ "test": "is_riding",
+ "subject": "self",
+ "operator": "equals",
+ "value": true
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "equals",
+ "value": "minecraft:behavior.look_at_player"
+ }
+ ]
+ },
+ "event": "minecraft:on_riding_player"
+}
+```
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.0,
+ "relative_range": false,
+ "event_filters": {
+ "all_of": [
+ {
+ "test": "is_riding",
+ "subject": "self",
+ "operator": "equals",
+ "value": false
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "not",
+ "value": "minecraft:behavior.look_at_player"
+ }
+ ]
+ },
+ "event": "minecraft:on_not_riding_player"
+}
+```
+
+pufferfish
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.5,
+ "relative_range": false,
+ "minimum_count": 1,
+ "event_filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ },
+ {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "none_of": {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "event": "minecraft:start_half_puff"
+}
+```
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.5,
+ "relative_range": false,
+ "minimum_count": 1,
+ "event_filters": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ },
+ {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "none_of": {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "event": "minecraft:start_full_puff"
+}
+```
+
+```json
+"minecraft:entity_sensor": {
+ "sensor_range": 2.9,
+ "relative_range": false,
+ "require_all": true,
+ "event_filters": {
+ "none_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "mob"
+ },
+ {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "none_of": {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ }
+ ]
+ }
+ ],
+ "test": "distance_to_nearest_player",
+ "operator": ">",
+ "value": 2.9
+ },
+ "event": "minecraft:from_full_puff"
+}
+```
+
+## environment_sensor
+
+axolotl
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "in_water",
+ "operator": "!=",
+ "value": true
+ },
+ "event": "start_drying_out"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "in_water_or_rain",
+ "operator": "!=",
+ "value": true
+ },
+ "event": "start_drying_out"
+ },
+ {
+ "filters": {
+ "test": "in_water",
+ "operator": "==",
+ "value": true
+ },
+ "event": "enter_water"
+ }
+ ]
+}
+```
+
+bee
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "event": "seek_shelter",
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "is_daytime",
+ "value": false
+ },
+ {
+ "test": "weather",
+ "operator": "==",
+ "value": "precipitation"
+ }
+ ]
+ },
+ {
+ "test": "bool_property",
+ "domain": "minecraft:has_nectar",
+ "operator": "!="
+ },
+ {
+ "test": "has_biome_tag",
+ "value": "overworld"
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "event": "abort_sheltering",
+ "filters": {
+ "all_of": [
+ {
+ "test": "weather",
+ "operator": "==",
+ "value": "clear"
+ },
+ {
+ "test": "is_daytime",
+ "value": true
+ }
+ ]
+ }
+ }
+ ]
+}
+```
+
+cave_spider
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_brightness",
+ "operator": "<",
+ "value": 0.49
+ },
+ "event": "minecraft:become_hostile"
+ }
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_brightness",
+ "operator": ">",
+ "value": 0.49
+ },
+ "event": "minecraft:become_neutral"
+ }
+}
+```
+
+dolphin
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "on_ground",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "in_water",
+ "operator": "!=",
+ "value": true
+ }
+ ]
+ },
+ "event": "navigation_on_land"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "in_water",
+ "operator": "==",
+ "value": true
+ },
+ "event": "navigation_off_land"
+ },
+ {
+ "filters": {
+ "test": "in_water_or_rain",
+ "operator": "!=",
+ "value": true
+ },
+ "event": "start_dryingout"
+ }
+ ]
+}
+```
+
+fox
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "is_daytime",
+ "value": false
+ },
+ "event": "minecraft:fox_configure_night"
+ },
+ {
+ "filters": {
+ "test": "is_daytime",
+ "value": true
+ },
+ "event": "minecraft:fox_configure_day"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ },
+ {
+ "test": "has_target",
+ "operator": "==",
+ "value": false
+ }
+ ]
+ },
+ "event": "minecraft:fox_configure_docile_day"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": false
+ },
+ {
+ "test": "has_target",
+ "operator": "==",
+ "value": false
+ }
+ ]
+ },
+ "event": "minecraft:fox_configure_docile_night"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "weather_at_position",
+ "operator": "!=",
+ "value": "thunderstorm"
+ },
+ {
+ "test": "is_daytime",
+ "value": true
+ }
+ ]
+ },
+ "event": "minecraft:fox_configure_day"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "weather_at_position",
+ "operator": "!=",
+ "value": "thunderstorm"
+ },
+ {
+ "test": "is_daytime",
+ "value": false
+ }
+ ]
+ },
+ "event": "minecraft:fox_configure_night"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "weather_at_position",
+ "value": "thunderstorm"
+ },
+ "event": "minecraft:fox_configure_thunderstorm"
+ },
+ {
+ "filters": {
+ "test": "is_daytime",
+ "value": false
+ },
+ "event": "minecraft:fox_configure_night"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "weather_at_position",
+ "value": "thunderstorm"
+ },
+ "event": "minecraft:fox_configure_thunderstorm"
+ },
+ {
+ "filters": {
+ "test": "is_daytime",
+ "value": true
+ },
+ "event": "minecraft:fox_configure_day"
+ }
+ ]
+}
+```
+
+hoglin
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "in_nether",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "start_zombification_event"
+ }
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "in_nether",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "stop_zombification_event"
+ }
+}
+```
+
+husk
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:start_transforming"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:start_transforming"
+ }
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "minecraft:stop_transforming"
+ }
+}
+```
+
+piglin
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "in_nether",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "start_zombification_event"
+ }
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "in_nether",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "stop_zombification_event"
+ }
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "in_nether",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "start_zombification_event"
+ }
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "in_nether",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "stop_zombification_event"
+ }
+}
+```
+
+pillager
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:melee_mode"
+ }
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "in_water",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "minecraft:ranged_mode"
+ }
+}
+```
+
+player
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "self",
+ "value": "bad_omen"
+ },
+ {
+ "test": "is_in_village",
+ "subject": "self",
+ "value": true
+ }
+ ]
+ },
+ "event": "minecraft:trigger_raid"
+ }
+}
+```
+
+skeleton
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:melee_mode"
+ },
+ {
+ "filters": {
+ "test": "has_ranged_weapon",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "minecraft:melee_mode"
+ },
+ {
+ "filters": {
+ "test": "in_block",
+ "subject": "self",
+ "operator": "==",
+ "value": "minecraft:powder_snow"
+ },
+ "event": "got_in_powder_snow"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "in_block",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:powder_snow"
+ },
+ "event": "got_out_of_powder_snow"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:melee_mode"
+ },
+ {
+ "filters": {
+ "test": "has_ranged_weapon",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "minecraft:melee_mode"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ {
+ "test": "has_ranged_weapon",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "event": "minecraft:ranged_mode"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:melee_mode"
+ },
+ {
+ "filters": {
+ "test": "has_ranged_weapon",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "minecraft:melee_mode"
+ },
+ {
+ "filters": {
+ "test": "in_block",
+ "subject": "self",
+ "operator": "==",
+ "value": "minecraft:powder_snow"
+ },
+ "event": "got_in_powder_snow"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ {
+ "test": "has_ranged_weapon",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "event": "minecraft:ranged_mode"
+ },
+ {
+ "filters": {
+ "test": "in_block",
+ "subject": "self",
+ "operator": "==",
+ "value": "minecraft:powder_snow"
+ },
+ "event": "got_in_powder_snow"
+ }
+ ]
+}
+```
+
+spider
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_brightness",
+ "operator": "<",
+ "value": 0.49
+ },
+ "event": "minecraft:become_hostile"
+ }
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_brightness",
+ "operator": ">",
+ "value": 0.49
+ },
+ "event": "minecraft:become_neutral"
+ }
+}
+```
+
+stray
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:melee_mode"
+ },
+ {
+ "filters": {
+ "test": "has_ranged_weapon",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "minecraft:melee_mode"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:melee_mode"
+ },
+ {
+ "filters": {
+ "test": "has_ranged_weapon",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "minecraft:melee_mode"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_water",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ {
+ "test": "has_ranged_weapon",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "event": "minecraft:ranged_mode"
+ }
+ ]
+}
+```
+
+strider
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "any_of": [
+ {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "in_lava",
+ "subject": "other",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "event": "stop_suffocating"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_riding",
+ "subject": "self",
+ "operator": "equals",
+ "value": false
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "not",
+ "value": "minecraft:behavior.move_to_liquid"
+ }
+ ]
+ },
+ "event": "on_not_riding_parent"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_riding",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ {
+ "test": "in_lava",
+ "subject": "other",
+ "operator": "==",
+ "value": false
+ }
+ ]
+ }
+ ]
+ },
+ "event": "start_suffocating"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_riding",
+ "subject": "self",
+ "operator": "equals",
+ "value": false
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "not",
+ "value": "minecraft:behavior.move_to_liquid"
+ }
+ ]
+ },
+ "event": "on_not_riding_parent"
+ }
+ ]
+}
+```
+
+trader_llama
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_leashed",
+ "subject": "self",
+ "value": false
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:is_tamed"
+ }
+ ]
+ },
+ "event": "minecraft:on_tame"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_leashed",
+ "subject": "self",
+ "value": false
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "==",
+ "value": "minecraft:persistent"
+ }
+ ]
+ },
+ "event": "minecraft:remove_persistence"
+ }
+ ]
+}
+```
+
+zombie
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_underwater",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:start_transforming"
+ }
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "event": "minecraft:start_transforming"
+ }
+}
+```
+
+```json
+"minecraft:environment_sensor": {
+ "triggers": {
+ "filters": {
+ "test": "is_underwater",
+ "subject": "self",
+ "operator": "==",
+ "value": false
+ },
+ "event": "minecraft:stop_transforming"
+ }
+}
+```
+
+## equip_item
+
+drowned
+
+```json
+"minecraft:equip_item": {}
+```
+
+fox
+
+```json
+"minecraft:equip_item": {}
+```
+
+husk
+
+```json
+"minecraft:equip_item": {}
+```
+
+piglin
+
+```json
+"minecraft:equip_item": {}
+```
+
+pillager
+
+```json
+"minecraft:equip_item": {}
+```
+
+skeleton
+
+```json
+"minecraft:equip_item": {}
+```
+
+stray
+
+```json
+"minecraft:equip_item": {}
+```
+
+wither_skeleton
+
+```json
+"minecraft:equip_item": {}
+```
+
+zombie
+
+```json
+"minecraft:equip_item": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:equip_item": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:equip_item": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:equip_item": {}
+```
+
+## equipment
+
+drowned
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/drowned_ranged_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.weapon.offhand",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/drowned_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.weapon.offhand",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+fox
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/fox_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.weapon.mainhand",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+husk
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/zombie_equipment.json"
+}
+```
+
+piglin
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/piglin_gear_ranged.json"
+}
+```
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/piglin_gear_melee.json"
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/piglin_brute_gear.json"
+}
+```
+
+pillager
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/pillager_gear.json"
+}
+```
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/pillager_captain_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.armor.chest",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/pillager_captain_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.armor.chest",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+skeleton
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/skeleton_gear.json"
+}
+```
+
+stray
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/skeleton_gear.json"
+}
+```
+
+vex
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/vex_gear.json"
+}
+```
+
+vindicator
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/vindicator_gear.json"
+}
+```
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/vindicator_captain_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.armor.chest",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/vindicator_captain_equipment.json",
+ "slot_drop_chance": [
+ {
+ "slot": "slot.armor.chest",
+ "drop_chance": 1.0
+ }
+ ]
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/wither_skeleton_gear.json"
+}
+```
+
+zombie
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/zombie_equipment.json"
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/zombie_pigman_gear.json"
+}
+```
+
+```json
+"minecraft:equipment": {
+ "table": "loot_tables/entities/zombified_piglin_rider_gear.json"
+}
+```
+
+## equippable
+
+camel
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 0,
+ "item": "saddle",
+ "accepted_items": [
+ "saddle"
+ ],
+ "on_equip": {
+ "event": "minecraft:camel_saddled"
+ },
+ "on_unequip": {
+ "event": "minecraft:camel_unsaddled"
+ }
+ }
+ ]
+}
+```
+
+donkey
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 0,
+ "item": "saddle",
+ "accepted_items": [
+ "saddle"
+ ],
+ "on_equip": {
+ "event": "minecraft:donkey_saddled"
+ },
+ "on_unequip": {
+ "event": "minecraft:donkey_unsaddled"
+ }
+ }
+ ]
+}
+```
+
+horse
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 0,
+ "item": "saddle",
+ "accepted_items": [
+ "saddle"
+ ],
+ "on_equip": {
+ "event": "minecraft:horse_saddled"
+ },
+ "on_unequip": {
+ "event": "minecraft:horse_unsaddled"
+ }
+ },
+ {
+ "slot": 1,
+ "item": "horsearmoriron",
+ "accepted_items": [
+ "horsearmorleather",
+ "horsearmoriron",
+ "horsearmorgold",
+ "horsearmordiamond"
+ ]
+ }
+ ]
+}
+```
+
+llama
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 1,
+ "item": "carpet",
+ "accepted_items": [
+ "carpet"
+ ]
+ }
+ ]
+}
+```
+
+mule
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 0,
+ "item": "saddle",
+ "accepted_items": [
+ "saddle"
+ ],
+ "on_equip": {
+ "event": "minecraft:mule_saddled"
+ },
+ "on_unequip": {
+ "event": "minecraft:mule_unsaddled"
+ }
+ }
+ ]
+}
+```
+
+trader_llama
+
+```json
+"minecraft:equippable": {
+ "slots": [
+ {
+ "slot": 1,
+ "item": "carpet",
+ "accepted_items": [
+ "carpet"
+ ]
+ }
+ ]
+}
+```
+
+## exhaustion_values
+
+player
+
+```json
+"minecraft:exhaustion_values": {
+ "heal": 6,
+ "jump": 0.05,
+ "sprint_jump": 0.2,
+ "mine": 0.005,
+ "attack": 0.1,
+ "damage": 0.1,
+ "walk": 0.0,
+ "sprint": 0.1,
+ "swim": 0.01
+}
+```
+
+## experience_reward
+
+axolotl
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+bee
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+blaze
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 10 : 0"
+}
+```
+
+camel
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+cat
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+cave_spider
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+chicken
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+cow
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+creeper
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+dolphin
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+donkey
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+drowned
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 12 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 10 : 0"
+}
+```
+
+enderman
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+endermite
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 3 : 0"
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "10"
+}
+```
+
+cod
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+fox
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+frog
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+ghast
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+glow_squid
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "!query.is_baby && query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+goat
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+guardian
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 10 : 0"
+}
+```
+
+hoglin
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+horse
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+husk
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 12 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+llama
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+magma_cube
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? query.variant : 0"
+}
+```
+
+mooshroom
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+mule
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+ocelot
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+panda
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+parrot
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+phantom
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+pig
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+piglin
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 1 + (query.equipment_count * Math.Random(1,2)) : 0"
+}
+```
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 20 : 0"
+}
+```
+
+pillager
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? (query.is_baby ? 12 : 5) + (Math.die_roll(query.equipment_count,1,3)) : 0"
+}
+```
+
+player
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "Math.Min(query.player_level * 7, 100)"
+}
+```
+
+polar_bear
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+pufferfish
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+rabbit
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+ravager
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 20 : 0"
+}
+```
+
+salmon
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+sheep
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+shulker
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+silverfish
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+skeleton
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+slime
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? query.variant : 0"
+}
+```
+
+sniffer
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+spider
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+squid
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "!query.is_baby && query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+stray
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+strider
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+trader_llama
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+turtle
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+vex
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+vindicator
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? (query.is_baby ? 12 : 5) + (Math.die_roll(query.equipment_count,1,3)) : 0"
+}
+```
+
+warden
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+witch
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? (query.is_baby ? 12 : 5) + (Math.die_roll(query.equipment_count,1,3)) : 0"
+}
+```
+
+wither
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "50"
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+wolf
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+zoglin
+
+```json
+"minecraft:experience_reward": {
+ "on_bred": "Math.Random(1,7)",
+ "on_death": "query.last_hit_by_player ? 5 : 0"
+}
+```
+
+zombie
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 12 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 12 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 12 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 12 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+```json
+"minecraft:experience_reward": {
+ "on_death": "query.last_hit_by_player ? 5 + (query.equipment_count * Math.Random(1,3)) : 0"
+}
+```
+
+## explode
+
+creeper
+
+```json
+"minecraft:explode": {
+ "fuse_length": 1.5,
+ "fuse_lit": true,
+ "power": 3,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+```json
+"minecraft:explode": {
+ "fuse_length": 1.5,
+ "fuse_lit": true,
+ "power": 6,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+```json
+"minecraft:explode": {
+ "fuse_length": 1.5,
+ "fuse_lit": true,
+ "power": 3,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+```json
+"minecraft:explode": {
+ "fuse_length": 1.5,
+ "fuse_lit": true,
+ "power": 6,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+ender_crystal
+
+```json
+"minecraft:explode": {
+ "fuse_length": 0,
+ "fuse_lit": true,
+ "power": 6,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+fireball
+
+```json
+"minecraft:explode": {
+ "fuse_length": 0,
+ "fuse_lit": true,
+ "power": 1,
+ "causes_fire": true,
+ "fire_affected_by_griefing": true,
+ "destroy_affected_by_griefing": true
+}
+```
+
+tnt
+
+```json
+"minecraft:explode": {
+ "fuse_length": 4,
+ "fuse_lit": true,
+ "power": 4,
+ "causes_fire": false
+}
+```
+
+```json
+"minecraft:explode": {
+ "fuse_length": {
+ "range_min": 0.5,
+ "range_max": 2.0
+ },
+ "fuse_lit": true,
+ "power": 4,
+ "causes_fire": false
+}
+```
+
+tnt_minecart
+
+```json
+"minecraft:explode": {
+ "fuse_length": 4,
+ "fuse_lit": true,
+ "power": 3,
+ "causes_fire": false
+}
+```
+
+```json
+"minecraft:explode": {
+ "fuse_length": 0,
+ "fuse_lit": true,
+ "power": 3,
+ "causes_fire": false
+}
+```
+
+wither_skull
+
+```json
+"minecraft:explode": {
+ "fuse_length": 0,
+ "fuse_lit": true,
+ "power": 1,
+ "causes_fire": false,
+ "destroy_affected_by_griefing": true
+}
+```
+
+wither_skull_dangerous
+
+```json
+"minecraft:explode": {
+ "fuse_length": 0,
+ "fuse_lit": true,
+ "power": 1,
+ "causes_fire": false,
+ "max_resistance": 4.0,
+ "destroy_affected_by_griefing": true
+}
+```
+
+## fire_immune
+
+blaze
+
+```json
+"minecraft:fire_immune": {}
+```
+
+ender_crystal
+
+```json
+"minecraft:fire_immune": true
+```
+
+ender_dragon
+
+```json
+"minecraft:fire_immune": true
+```
+
+ghast
+
+```json
+"minecraft:fire_immune": {}
+```
+
+magma_cube
+
+```json
+"minecraft:fire_immune": {}
+```
+
+npc
+
+```json
+"minecraft:fire_immune": true
+```
+
+shulker
+
+```json
+"minecraft:fire_immune": true
+```
+
+strider
+
+```json
+"minecraft:fire_immune": {}
+```
+
+vex
+
+```json
+"minecraft:fire_immune": {}
+```
+
+warden
+
+```json
+"minecraft:fire_immune": {}
+```
+
+wither
+
+```json
+"minecraft:fire_immune": {}
+```
+
+wither_skeleton
+
+```json
+"minecraft:fire_immune": {}
+```
+
+zoglin
+
+```json
+"minecraft:fire_immune": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:fire_immune": {}
+```
+
+## flocking
+
+dolphin
+
+```json
+"minecraft:flocking": {
+ "in_water": false,
+ "match_variants": false,
+ "use_center_of_mass": false,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 6.0,
+ "breach_influence": 0.0,
+ "separation_weight": 1.75,
+ "separation_threshold": 3.0,
+ "cohesion_weight": 1.85,
+ "cohesion_threshold": 6.5,
+ "innner_cohesion_threshold": 3.5,
+ "min_height": 4.0,
+ "max_height": 4.0,
+ "block_distance": 1.0,
+ "block_weight": 0.0
+}
+```
+
+cod
+
+```json
+"minecraft:flocking": {
+ "in_water": true,
+ "match_variants": false,
+ "use_center_of_mass": true,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 3.0,
+ "breach_influence": 7.0,
+ "separation_weight": 1.75,
+ "separation_threshold": 0.95,
+ "cohesion_weight": 2.0,
+ "cohesion_threshold": 1.95,
+ "innner_cohesion_threshold": 1.25,
+ "min_height": 1.5,
+ "max_height": 6.0,
+ "block_distance": 2.0,
+ "block_weight": 0.85
+}
+```
+
+pufferfish
+
+```json
+"minecraft:flocking": {
+ "in_water": true,
+ "match_variants": false,
+ "use_center_of_mass": true,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 3.0,
+ "breach_influence": 7.0,
+ "separation_weight": 1.75,
+ "separation_threshold": 0.95,
+ "cohesion_weight": 2.0,
+ "cohesion_threshold": 1.95,
+ "innner_cohesion_threshold": 1.25,
+ "min_height": 1.5,
+ "max_height": 6.0,
+ "block_distance": 2.0,
+ "block_weight": 0.85
+}
+```
+
+salmon
+
+```json
+"minecraft:flocking": {
+ "in_water": true,
+ "match_variants": false,
+ "use_center_of_mass": false,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 3.0,
+ "breach_influence": 7.0,
+ "separation_weight": 0.65,
+ "separation_threshold": 0.15,
+ "cohesion_weight": 2.25,
+ "cohesion_threshold": 1.5,
+ "innner_cohesion_threshold": 1.5,
+ "min_height": 4.0,
+ "max_height": 4.0,
+ "block_distance": 1.0,
+ "block_weight": 0.75
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:flocking": {
+ "in_water": true,
+ "match_variants": true,
+ "use_center_of_mass": false,
+ "low_flock_limit": 4,
+ "high_flock_limit": 8,
+ "goal_weight": 2.0,
+ "loner_chance": 0.1,
+ "influence_radius": 3.0,
+ "breach_influence": 7.0,
+ "separation_weight": 0.65,
+ "separation_threshold": 0.15,
+ "cohesion_weight": 2.75,
+ "cohesion_threshold": 1.5,
+ "innner_cohesion_threshold": 1.5,
+ "min_height": 1.5,
+ "max_height": 6.0,
+ "block_distance": 2.0,
+ "block_weight": 0.85
+}
+```
+
+## flying_speed
+
+allay
+
+```json
+"minecraft:flying_speed": {
+ "value": 0.1
+}
+```
+
+bee
+
+```json
+"minecraft:flying_speed": {
+ "value": 0.15
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:flying_speed": {
+ "value": 0.6
+}
+```
+
+## follow_range
+
+allay
+
+```json
+"minecraft:follow_range": {
+ "value": 1024
+}
+```
+
+bee
+
+```json
+"minecraft:follow_range": {
+ "value": 1024
+}
+```
+
+blaze
+
+```json
+"minecraft:follow_range": {
+ "value": 48,
+ "max": 48
+}
+```
+
+dolphin
+
+```json
+"minecraft:follow_range": {
+ "value": 48,
+ "max": 48
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:follow_range": {
+ "value": 16,
+ "max": 16
+}
+```
+
+enderman
+
+```json
+"minecraft:follow_range": {
+ "value": 64,
+ "max": 64
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:follow_range": {
+ "value": 64
+}
+```
+
+ghast
+
+```json
+"minecraft:follow_range": {
+ "value": 64,
+ "max": 64
+}
+```
+
+guardian
+
+```json
+"minecraft:follow_range": {
+ "value": 16,
+ "max": 16
+}
+```
+
+iron_golem
+
+```json
+"minecraft:follow_range": {
+ "value": 64
+}
+```
+
+llama
+
+```json
+"minecraft:follow_range": {
+ "value": 40,
+ "max": 40
+}
+```
+
+phantom
+
+```json
+"minecraft:follow_range": {
+ "value": 64,
+ "max": 64
+}
+```
+
+piglin
+
+```json
+"minecraft:follow_range": {
+ "value": 64
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:follow_range": {
+ "value": 64
+}
+```
+
+pillager
+
+```json
+"minecraft:follow_range": {
+ "value": 64
+}
+```
+
+polar_bear
+
+```json
+"minecraft:follow_range": {
+ "value": 48
+}
+```
+
+ravager
+
+```json
+"minecraft:follow_range": {
+ "value": 64
+}
+```
+
+sniffer
+
+```json
+"minecraft:follow_range": {
+ "value": 64.0
+}
+```
+
+trader_llama
+
+```json
+"minecraft:follow_range": {
+ "value": 40,
+ "max": 40
+}
+```
+
+turtle
+
+```json
+"minecraft:follow_range": {
+ "value": 1024
+}
+```
+
+villager_v2
+
+```json
+"minecraft:follow_range": {
+ "value": 128
+}
+```
+
+vindicator
+
+```json
+"minecraft:follow_range": {
+ "value": 64
+}
+```
+
+warden
+
+```json
+"minecraft:follow_range": 30
+```
+
+witch
+
+```json
+"minecraft:follow_range": {
+ "value": 64
+}
+```
+
+## game_event_movement_tracking
+
+allay
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+bat
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+bee
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+chicken
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+parrot
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+phantom
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_flap": true
+}
+```
+
+vex
+
+```json
+"minecraft:game_event_movement_tracking": {
+ "emit_move": false,
+ "emit_swim": false
+}
+```
+
+## genetics
+
+goat
+
+```json
+"minecraft:genetics": {
+ "mutation_rate": 0.02,
+ "genes": [
+ {
+ "name": "goat_variant",
+ "use_simplified_breeding": true,
+ "allele_range": {
+ "range_min": 1,
+ "range_max": 100
+ },
+ "genetic_variants": [
+ {
+ "main_allele": {
+ "range_min": 1,
+ "range_max": 2
+ },
+ "birth_event": {
+ "event": "minecraft:born_screamer",
+ "target": "self"
+ }
+ },
+ {
+ "main_allele": {
+ "range_min": 3,
+ "range_max": 100
+ },
+ "birth_event": {
+ "event": "minecraft:born_default",
+ "target": "self"
+ }
+ }
+ ]
+ }
+ ]
+}
+```
+
+panda
+
+```json
+"minecraft:genetics": {
+ "mutation_rate": 0.03125,
+ "genes": [
+ {
+ "name": "panda_variant",
+ "allele_range": {
+ "range_min": 0,
+ "range_max": 15
+ },
+ "genetic_variants": [
+ {
+ "main_allele": 0,
+ "birth_event": {
+ "event": "minecraft:panda_lazy",
+ "target": "self"
+ }
+ },
+ {
+ "main_allele": 1,
+ "birth_event": {
+ "event": "minecraft:panda_worried",
+ "target": "self"
+ }
+ },
+ {
+ "main_allele": 2,
+ "birth_event": {
+ "event": "minecraft:panda_playful",
+ "target": "self"
+ }
+ },
+ {
+ "main_allele": 3,
+ "birth_event": {
+ "event": "minecraft:panda_aggressive",
+ "target": "self"
+ }
+ },
+ {
+ "both_allele": {
+ "range_min": 4,
+ "range_max": 7
+ },
+ "birth_event": {
+ "event": "minecraft:panda_weak",
+ "target": "self"
+ }
+ },
+ {
+ "both_allele": {
+ "range_min": 8,
+ "range_max": 9
+ },
+ "birth_event": {
+ "event": "minecraft:panda_brown",
+ "target": "self"
+ }
+ }
+ ]
+ }
+ ]
+}
+```
+
+## giveable
+
+panda
+
+```json
+"minecraft:giveable": {
+ "triggers": {
+ "cooldown": 3.0,
+ "items": [
+ "bamboo",
+ "cake"
+ ],
+ "on_give": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+ }
+ }
+}
+```
+
+## group_size
+
+hoglin
+
+```json
+"minecraft:group_size": {
+ "radius": 32,
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "value": "hoglin"
+ }
+ ]
+ }
+}
+```
+
+piglin
+
+```json
+"minecraft:group_size": {
+ "radius": 32,
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "value": "piglin"
+ }
+ ]
+ }
+}
+```
+
+## grows_crop
+
+bee
+
+```json
+"minecraft:grows_crop": {
+ "charges": 10,
+ "chance": 0.03
+}
+```
+
+## healable
+
+camel
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "cactus",
+ "heal_amount": 2
+ }
+ ]
+}
+```
+
+cat
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "fish",
+ "heal_amount": 2
+ },
+ {
+ "item": "salmon",
+ "heal_amount": 2
+ }
+ ]
+}
+```
+
+donkey
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "wheat",
+ "heal_amount": 2
+ },
+ {
+ "item": "sugar",
+ "heal_amount": 1
+ },
+ {
+ "item": "hay_block",
+ "heal_amount": 20
+ },
+ {
+ "item": "apple",
+ "heal_amount": 3
+ },
+ {
+ "item": "golden_carrot",
+ "heal_amount": 4
+ },
+ {
+ "item": "golden_apple",
+ "heal_amount": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+horse
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "wheat",
+ "heal_amount": 2
+ },
+ {
+ "item": "sugar",
+ "heal_amount": 1
+ },
+ {
+ "item": "hay_block",
+ "heal_amount": 20
+ },
+ {
+ "item": "apple",
+ "heal_amount": 3
+ },
+ {
+ "item": "golden_carrot",
+ "heal_amount": 4
+ },
+ {
+ "item": "golden_apple",
+ "heal_amount": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+llama
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "wheat",
+ "heal_amount": 2
+ },
+ {
+ "item": "hay_block",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+mule
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "wheat",
+ "heal_amount": 2
+ },
+ {
+ "item": "sugar",
+ "heal_amount": 1
+ },
+ {
+ "item": "hay_block",
+ "heal_amount": 20
+ },
+ {
+ "item": "apple",
+ "heal_amount": 3
+ },
+ {
+ "item": "golden_carrot",
+ "heal_amount": 4
+ },
+ {
+ "item": "golden_apple",
+ "heal_amount": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+parrot
+
+```json
+"minecraft:healable": {
+ "force_use": true,
+ "filters": {
+ "test": "is_riding",
+ "operator": "!=",
+ "value": true
+ },
+ "items": [
+ {
+ "item": "cookie",
+ "heal_amount": 0,
+ "effects": [
+ {
+ "name": "fatal_poison",
+ "chance": 1.0,
+ "duration": 1000,
+ "amplifier": 0
+ }
+ ]
+ }
+ ]
+}
+```
+
+sniffer
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "torchflower_seeds",
+ "heal_amount": 2
+ }
+ ]
+}
+```
+
+trader_llama
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "wheat",
+ "heal_amount": 2
+ },
+ {
+ "item": "hay_block",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+wolf
+
+```json
+"minecraft:healable": {
+ "items": [
+ {
+ "item": "porkchop",
+ "heal_amount": 3
+ },
+ {
+ "item": "cooked_porkchop",
+ "heal_amount": 8
+ },
+ {
+ "item": "fish",
+ "heal_amount": 2
+ },
+ {
+ "item": "salmon",
+ "heal_amount": 2
+ },
+ {
+ "item": "clownfish",
+ "heal_amount": 1
+ },
+ {
+ "item": "pufferfish",
+ "heal_amount": 1
+ },
+ {
+ "item": "cooked_fish",
+ "heal_amount": 5
+ },
+ {
+ "item": "cooked_salmon",
+ "heal_amount": 6
+ },
+ {
+ "item": "beef",
+ "heal_amount": 3
+ },
+ {
+ "item": "cooked_beef",
+ "heal_amount": 8
+ },
+ {
+ "item": "chicken",
+ "heal_amount": 2
+ },
+ {
+ "item": "cooked_chicken",
+ "heal_amount": 6
+ },
+ {
+ "item": "muttonRaw",
+ "heal_amount": 2
+ },
+ {
+ "item": "muttonCooked",
+ "heal_amount": 6
+ },
+ {
+ "item": "rotten_flesh",
+ "heal_amount": 4
+ },
+ {
+ "item": "rabbit",
+ "heal_amount": 3
+ },
+ {
+ "item": "cooked_rabbit",
+ "heal_amount": 5
+ },
+ {
+ "item": "rabbit_stew",
+ "heal_amount": 10
+ }
+ ]
+}
+```
+
+## health
+
+allay
+
+```json
+"minecraft:health": {
+ "value": 20
+}
+```
+
+armor_stand
+
+```json
+"minecraft:health": {
+ "value": 6,
+ "max": 6
+}
+```
+
+axolotl
+
+```json
+"minecraft:health": {
+ "value": 14
+}
+```
+
+bat
+
+```json
+"minecraft:health": {
+ "value": 6,
+ "max": 6
+}
+```
+
+bee
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+blaze
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+camel
+
+```json
+"minecraft:health": {
+ "value": 32
+}
+```
+
+cat
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+cave_spider
+
+```json
+"minecraft:health": {
+ "value": 12,
+ "max": 12
+}
+```
+
+chicken
+
+```json
+"minecraft:health": {
+ "value": 4,
+ "max": 4
+}
+```
+
+cow
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+creeper
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+dolphin
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+donkey
+
+```json
+"minecraft:health": {
+ "value": {
+ "range_min": 15,
+ "range_max": 30
+ }
+}
+```
+
+drowned
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:health": {
+ "value": 80,
+ "max": 80
+}
+```
+
+enderman
+
+```json
+"minecraft:health": {
+ "value": 40,
+ "max": 40
+}
+```
+
+endermite
+
+```json
+"minecraft:health": {
+ "value": 8,
+ "max": 8
+}
+```
+
+ender_crystal
+
+```json
+"minecraft:health": {
+ "value": 1,
+ "max": 1
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:health": {
+ "value": 200,
+ "max": 200
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:health": {
+ "value": 24,
+ "max": 24
+}
+```
+
+cod
+
+```json
+"minecraft:health": {
+ "value": 3,
+ "max": 3
+}
+```
+
+fox
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+frog
+
+```json
+"minecraft:health": {
+ "value": 10
+}
+```
+
+ghast
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+glow_squid
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+goat
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+guardian
+
+```json
+"minecraft:health": {
+ "value": 30,
+ "max": 30
+}
+```
+
+hoglin
+
+```json
+"minecraft:health": {
+ "value": 40,
+ "max": 40
+}
+```
+
+horse
+
+```json
+"minecraft:health": {
+ "value": {
+ "range_min": 15,
+ "range_max": 30
+ }
+}
+```
+
+husk
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+iron_golem
+
+```json
+"minecraft:health": {
+ "value": 100,
+ "max": 100
+}
+```
+
+llama
+
+```json
+"minecraft:health": {
+ "value": {
+ "range_min": 15,
+ "range_max": 30
+ }
+}
+```
+
+magma_cube
+
+```json
+"minecraft:health": {
+ "value": 16,
+ "max": 16
+}
+```
+
+```json
+"minecraft:health": {
+ "value": 4,
+ "max": 4
+}
+```
+
+```json
+"minecraft:health": {
+ "value": 1,
+ "max": 1
+}
+```
+
+mooshroom
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+mule
+
+```json
+"minecraft:health": {
+ "value": {
+ "range_min": 15,
+ "range_max": 30
+ }
+}
+```
+
+ocelot
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+panda
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+parrot
+
+```json
+"minecraft:health": {
+ "value": 6,
+ "max": 6
+}
+```
+
+phantom
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+pig
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+piglin
+
+```json
+"minecraft:health": {
+ "value": 16,
+ "max": 16
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:health": {
+ "value": 50,
+ "max": 50
+}
+```
+
+pillager
+
+```json
+"minecraft:health": {
+ "value": 24,
+ "max": 24
+}
+```
+
+polar_bear
+
+```json
+"minecraft:health": {
+ "value": 30
+}
+```
+
+pufferfish
+
+```json
+"minecraft:health": {
+ "value": 3,
+ "max": 3
+}
+```
+
+rabbit
+
+```json
+"minecraft:health": {
+ "value": 3,
+ "max": 3
+}
+```
+
+ravager
+
+```json
+"minecraft:health": {
+ "max": 100,
+ "value": 100
+}
+```
+
+salmon
+
+```json
+"minecraft:health": {
+ "value": 3,
+ "max": 3
+}
+```
+
+sheep
+
+```json
+"minecraft:health": {
+ "value": 8,
+ "max": 8
+}
+```
+
+shulker
+
+```json
+"minecraft:health": {
+ "value": 30,
+ "max": 30
+}
+```
+
+silverfish
+
+```json
+"minecraft:health": {
+ "value": 8,
+ "max": 8
+}
+```
+
+skeleton
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:health": {
+ "value": 15,
+ "max": 15
+}
+```
+
+slime
+
+```json
+"minecraft:health": {
+ "value": 16,
+ "max": 16
+}
+```
+
+```json
+"minecraft:health": {
+ "value": 4,
+ "max": 4
+}
+```
+
+```json
+"minecraft:health": {
+ "value": 1,
+ "max": 1
+}
+```
+
+sniffer
+
+```json
+"minecraft:health": {
+ "value": 14
+}
+```
+
+snow_golem
+
+```json
+"minecraft:health": {
+ "value": 4,
+ "max": 4
+}
+```
+
+spider
+
+```json
+"minecraft:health": {
+ "value": 16,
+ "max": 16
+}
+```
+
+squid
+
+```json
+"minecraft:health": {
+ "value": 10,
+ "max": 10
+}
+```
+
+stray
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+strider
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+tadpole
+
+```json
+"minecraft:health": {
+ "value": 6
+}
+```
+
+trader_llama
+
+```json
+"minecraft:health": {
+ "value": {
+ "range_min": 15,
+ "range_max": 30
+ }
+}
+```
+
+tripod_camera
+
+```json
+"minecraft:health": {
+ "value": 4,
+ "max": 4
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:health": {
+ "value": 3,
+ "max": 3
+}
+```
+
+turtle
+
+```json
+"minecraft:health": {
+ "value": 30
+}
+```
+
+vex
+
+```json
+"minecraft:health": {
+ "value": 14,
+ "max": 14
+}
+```
+
+villager
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+villager_v2
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+vindicator
+
+```json
+"minecraft:health": {
+ "value": 24,
+ "max": 24
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+warden
+
+```json
+"minecraft:health": {
+ "value": 500,
+ "max": 500
+}
+```
+
+witch
+
+```json
+"minecraft:health": {
+ "value": 26,
+ "max": 26
+}
+```
+
+wither
+
+```json
+"minecraft:health": {
+ "value": 600,
+ "max": 600
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+wolf
+
+```json
+"minecraft:health": {
+ "value": 8,
+ "max": 8
+}
+```
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+xp_orb
+
+```json
+"minecraft:health": {
+ "value": 5,
+ "max": 5
+}
+```
+
+zoglin
+
+```json
+"minecraft:health": {
+ "value": 40,
+ "max": 40
+}
+```
+
+zombie
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:health": {
+ "value": 15,
+ "max": 15
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:health": {
+ "value": 20,
+ "max": 20
+}
+```
+
+## heartbeat
+
+warden
+
+```json
+"minecraft:heartbeat": {
+ "interval": "2.0 - math.clamp(query.anger_level / 80 * 1.5, 0, 1.5)"
+}
+```
+
+## hide
+
+villager_v2
+
+```json
+"minecraft:hide": {}
+```
+
+## home
+
+bee
+
+```json
+"minecraft:home": {
+ "restriction_radius": 22,
+ "home_block_list": [
+ "minecraft:bee_nest",
+ "minecraft:beehive"
+ ]
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:home": {
+ "restriction_radius": 16
+}
+```
+
+guardian
+
+```json
+"minecraft:home": {
+ "restriction_radius": 16
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:home": {}
+```
+
+turtle
+
+```json
+"minecraft:home": {}
+```
+
+wandering_trader
+
+```json
+"minecraft:home": {
+ "restriction_radius": 16
+}
+```
+
+## horse.jump_strength
+
+donkey
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": 0.5
+}
+```
+
+horse
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": {
+ "range_min": 0.4,
+ "range_max": 1.0
+ }
+}
+```
+
+mule
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": 0.5
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": {
+ "range_min": 0.4,
+ "range_max": 1.0
+ }
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:horse.jump_strength": {
+ "value": {
+ "range_min": 0.4,
+ "range_max": 1.0
+ }
+}
+```
+
+## hurt_on_condition
+
+allay
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+armor_stand
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+arrow
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+axolotl
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+bat
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+bee
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "cause": "none",
+ "damage_per_tick": 999
+ }
+ ]
+}
+```
+
+blaze
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_contact_with_water",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "drowning",
+ "damage_per_tick": 1
+ }
+ ]
+}
+```
+
+boat
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+camel
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+cat
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+cave_spider
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+chest_boat
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+chicken
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+cow
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+creeper
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+dolphin
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+donkey
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+drowned
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+enderman
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ },
+ {
+ "filters": {
+ "test": "in_contact_with_water",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "drowning",
+ "damage_per_tick": 1
+ }
+ ]
+}
+```
+
+endermite
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+cod
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+frog
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+glow_squid
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+goat
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+guardian
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+hoglin
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+horse
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+husk
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+iron_golem
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+llama
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+mooshroom
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+mule
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+ocelot
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+panda
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+parrot
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+phantom
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+pig
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+pillager
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+player
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+polar_bear
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+pufferfish
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+rabbit
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+ravager
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+salmon
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+sheep
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+silverfish
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+skeleton
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+slime
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+sniffer
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+snow_golem
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ },
+ {
+ "filters": {
+ "test": "is_temperature_value",
+ "operator": ">",
+ "value": 1.0
+ },
+ "cause": "temperature",
+ "damage_per_tick": 1
+ },
+ {
+ "filters": {
+ "test": "in_contact_with_water",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "drowning",
+ "damage_per_tick": 1
+ }
+ ]
+}
+```
+
+spider
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+squid
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+stray
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+strider
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_contact_with_water",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "drowning",
+ "damage_per_tick": 1
+ }
+ ]
+}
+```
+
+tadpole
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+trader_llama
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+tripod_camera
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+turtle
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+villager
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+villager_v2
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+vindicator
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+witch
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+wolf
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+zombie
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:hurt_on_condition": {
+ "damage_conditions": [
+ {
+ "filters": {
+ "test": "in_lava",
+ "subject": "self",
+ "operator": "==",
+ "value": true
+ },
+ "cause": "lava",
+ "damage_per_tick": 4
+ }
+ ]
+}
+```
+
+## input_ground_controlled
+
+camel
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+donkey
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+horse
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+mule
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:input_ground_controlled": {}
+```
+
+## inside_block_notifier
+
+boat
+
+```json
+"minecraft:inside_block_notifier": {
+ "block_list": [
+ {
+ "block": {
+ "name": "minecraft:bubble_column",
+ "states": {
+ "drag_down": true
+ }
+ },
+ "entered_block_event": {
+ "event": "minecraft:entered_bubble_column_down",
+ "target": "self"
+ },
+ "exited_block_event": {
+ "event": "minecraft:exited_bubble_column",
+ "target": "self"
+ }
+ },
+ {
+ "block": {
+ "name": "minecraft:bubble_column",
+ "states": {
+ "drag_down": false
+ }
+ },
+ "entered_block_event": {
+ "event": "minecraft:entered_bubble_column_up",
+ "target": "self"
+ },
+ "exited_block_event": {
+ "event": "minecraft:exited_bubble_column",
+ "target": "self"
+ }
+ }
+ ]
+}
+```
+
+chest_boat
+
+```json
+"minecraft:inside_block_notifier": {
+ "block_list": [
+ {
+ "block": {
+ "name": "minecraft:bubble_column",
+ "states": {
+ "drag_down": true
+ }
+ },
+ "entered_block_event": {
+ "event": "minecraft:entered_bubble_column_down",
+ "target": "self"
+ },
+ "exited_block_event": {
+ "event": "minecraft:exited_bubble_column",
+ "target": "self"
+ }
+ },
+ {
+ "block": {
+ "name": "minecraft:bubble_column",
+ "states": {
+ "drag_down": false
+ }
+ },
+ "entered_block_event": {
+ "event": "minecraft:entered_bubble_column_up",
+ "target": "self"
+ },
+ "exited_block_event": {
+ "event": "minecraft:exited_bubble_column",
+ "target": "self"
+ }
+ }
+ ]
+}
+```
+
+## insomnia
+
+player
+
+```json
+"minecraft:insomnia": {
+ "days_until_insomnia": 3
+}
+```
+
+## interact
+
+allay
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneak_held",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ }
+ },
+ "give_item": true,
+ "take_item": true,
+ "interact_text": "action.interact.allay"
+ }
+ ]
+}
+```
+
+camel
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "saddle",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneak_held",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.saddle"
+ }
+ ]
+}
+```
+
+cow
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "bucket:0"
+ }
+ ]
+ }
+ },
+ "use_item": true,
+ "transform_to_item": "bucket:1",
+ "play_sounds": "milk",
+ "interact_text": "action.interact.milk"
+ }
+ ]
+}
+```
+
+creeper
+
+```json
+"minecraft:interact": {
+ "interactions": {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "flint_and_steel"
+ },
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:explode"
+ }
+ ]
+ },
+ "event": "minecraft:start_exploding_forced",
+ "target": "self"
+ },
+ "hurt_item": 1,
+ "swing": true,
+ "play_sounds": "ignite",
+ "interact_text": "action.interact.creeper"
+ }
+}
+```
+
+donkey
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.equip"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.saddle"
+ },
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "chest"
+ }
+ ]
+ },
+ "event": "minecraft:on_chest",
+ "target": "self"
+ },
+ "use_item": true,
+ "interact_text": "action.interact.attachchest"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.saddle"
+ }
+ ]
+}
+```
+
+goat
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "bucket:0"
+ }
+ ]
+ }
+ },
+ "use_item": true,
+ "transform_to_item": "bucket:1",
+ "play_sounds": "milk_suspiciously",
+ "interact_text": "action.interact.milk"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "bucket:0"
+ }
+ ]
+ }
+ },
+ "use_item": true,
+ "transform_to_item": "bucket:1",
+ "play_sounds": "milk.screamer",
+ "interact_text": "action.interact.milk"
+ }
+ ]
+}
+```
+
+horse
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "none_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "value": "leather_horse_armor"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "value": "iron_horse_armor"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "value": "golden_horse_armor"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "value": "diamond_horse_armor"
+ }
+ ]
+ },
+ {
+ "any_of": [
+ {
+ "test": "has_equipment",
+ "subject": "player",
+ "domain": "hand",
+ "value": "leather_horse_armor"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "player",
+ "domain": "hand",
+ "value": "iron_horse_armor"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "player",
+ "domain": "hand",
+ "value": "golden_horse_armor"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "player",
+ "domain": "hand",
+ "value": "diamond_horse_armor"
+ }
+ ]
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 1,
+ "interact_text": "action.interact.equiphorsearmor"
+ },
+ {
+ "play_sounds": "saddle",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.saddle"
+ }
+ ]
+}
+```
+
+iron_golem
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "iron_ingot"
+ },
+ {
+ "test": "is_missing_health",
+ "value": true
+ }
+ ]
+ }
+ },
+ "use_item": true,
+ "health_amount": 25,
+ "play_sounds": "irongolem.repair",
+ "interact_text": "action.interact.repair"
+ }
+ ]
+}
+```
+
+llama
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "chest"
+ }
+ ]
+ },
+ "event": "minecraft:on_chest",
+ "target": "self"
+ },
+ "use_item": true,
+ "interact_text": "action.interact.attachchest"
+ },
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "carpet"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "carpet"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.equipcarpet"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "carpet"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "carpet"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.equipcarpet"
+ }
+ ]
+}
+```
+
+mooshroom
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "bowl"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:transformation"
+ }
+ ]
+ },
+ "event": "minecraft:flowerless",
+ "target": "self"
+ },
+ "add_items": {
+ "table": "loot_tables/gameplay/entities/mooshroom_milking.json"
+ },
+ "use_item": true,
+ "play_sounds": "milk_suspiciously",
+ "interact_text": "action.interact.moostew"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:2"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 7
+ }
+ ]
+ },
+ "event": "minecraft:ate_allium",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:3"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 3
+ }
+ ]
+ },
+ "event": "minecraft:ate_bluet",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:1"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 6
+ }
+ ]
+ },
+ "event": "minecraft:ate_orchid",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:9"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 1
+ }
+ ]
+ },
+ "event": "minecraft:ate_cornflower",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "yellow_flower"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 5
+ }
+ ]
+ },
+ "event": "minecraft:ate_dandelion",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:10"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 4
+ }
+ ]
+ },
+ "event": "minecraft:ate_lily",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:8"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 8
+ }
+ ]
+ },
+ "event": "minecraft:ate_daisy",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:0"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 0
+ }
+ ]
+ },
+ "event": "minecraft:ate_poppy",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "any_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:4"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:5"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:6"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "red_flower:7"
+ }
+ ],
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 2
+ }
+ ]
+ },
+ "event": "minecraft:ate_tulip",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "wither_rose"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 9
+ }
+ ]
+ },
+ "event": "minecraft:ate_rose",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "torchflower"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ },
+ {
+ "test": "is_mark_variant",
+ "subject": "self",
+ "operator": "!=",
+ "value": 10
+ }
+ ]
+ },
+ "event": "minecraft:ate_torchflower",
+ "target": "self"
+ },
+ "use_item": true,
+ "play_sounds": "eat",
+ "particle_on_start": {
+ "particle_type": "smoke",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.feed"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "shears"
+ },
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:transformation"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 0
+ }
+ ]
+ },
+ "event": "become_cow",
+ "target": "self"
+ },
+ "use_item": false,
+ "hurt_item": 1,
+ "play_sounds": "shear",
+ "spawn_items": {
+ "table": "loot_tables/entities/mooshroom_shear.json"
+ },
+ "particle_on_start": {
+ "particle_type": "largeexplode",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.mooshear",
+ "vibration": "shear"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "shears"
+ },
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:transformation"
+ },
+ {
+ "test": "is_variant",
+ "subject": "self",
+ "operator": "==",
+ "value": 1
+ }
+ ]
+ },
+ "event": "become_cow",
+ "target": "self"
+ },
+ "use_item": false,
+ "hurt_item": 1,
+ "play_sounds": "shear",
+ "spawn_items": {
+ "table": "loot_tables/entities/brown_mooshroom_shear.json"
+ },
+ "particle_on_start": {
+ "particle_type": "largeexplode",
+ "particle_y_offset": 0.25,
+ "particle_offset_towards_interactor": true
+ },
+ "interact_text": "action.interact.mooshear",
+ "vibration": "shear"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "bucket:0"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ }
+ ]
+ }
+ },
+ "use_item": true,
+ "transform_to_item": "bucket:1",
+ "play_sounds": "milk",
+ "interact_text": "action.interact.milk"
+ }
+ ]
+}
+```
+
+mule
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "chest"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "event": "minecraft:on_chest",
+ "target": "self"
+ },
+ "use_item": true,
+ "interact_text": "action.interact.attachchest"
+ },
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.saddle"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "self",
+ "domain": "inventory",
+ "operator": "not",
+ "value": "saddle"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_sneaking",
+ "subject": "other",
+ "value": false
+ }
+ ]
+ },
+ "target": "self"
+ },
+ "equip_item_slot": 0,
+ "interact_text": "action.interact.saddle"
+ }
+ ]
+}
+```
+
+pig
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ "event": "minecraft:on_saddled"
+ },
+ "use_item": true,
+ "play_sounds": "saddle",
+ "interact_text": "action.interact.saddle"
+ }
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "gold_ingot"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ }
+ ]
+ }
+ },
+ "barter": true,
+ "admire": true,
+ "use_item": true,
+ "cooldown_after_being_attacked": 20,
+ "interact_text": "action.interact.barter"
+ }
+ ]
+}
+```
+
+sheep
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "cooldown": 2.5,
+ "use_item": false,
+ "hurt_item": 1,
+ "spawn_items": {
+ "table": "loot_tables/entities/sheep_shear.json"
+ },
+ "play_sounds": "shear",
+ "interact_text": "action.interact.shear",
+ "vibration": "shear",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "shears"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:is_baby"
+ },
+ {
+ "test": "has_component",
+ "value": "minecraft:is_dyeable"
+ }
+ ]
+ },
+ "event": "minecraft:on_sheared",
+ "target": "self"
+ }
+ }
+ ]
+}
+```
+
+shulker
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:0"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:16"
+ }
+ ]
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_black"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:8"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_gray"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:7"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_silver"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:15"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:19"
+ }
+ ]
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_white"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:12"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_light_blue"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:14"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_orange"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:1"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_red"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:4"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:18"
+ }
+ ]
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_blue"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:5"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_purple"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:13"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_magenta"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:9"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_pink"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "any_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:3"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:17"
+ }
+ ]
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_brown"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:11"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_yellow"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:10"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_lime"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:2"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_green"
+ },
+ "use_item": true
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "dye:6"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_ability",
+ "subject": "other",
+ "value": "instabuild"
+ }
+ ]
+ },
+ "event": "minecraft:turn_cyan"
+ },
+ "use_item": true
+ }
+ ]
+}
+```
+
+snow_golem
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "cooldown": 2.5,
+ "use_item": false,
+ "hurt_item": 1,
+ "spawn_items": {
+ "table": "loot_tables/entities/snow_golem_shear.json"
+ },
+ "play_sounds": "shear",
+ "interact_text": "action.interact.shear",
+ "vibration": "shear",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "shears"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_component",
+ "operator": "!=",
+ "value": "minecraft:is_sheared"
+ }
+ ]
+ },
+ "event": "minecraft:on_sheared",
+ "target": "self"
+ }
+ }
+ ]
+}
+```
+
+strider
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "saddle"
+ },
+ "event": "minecraft:on_saddled"
+ },
+ "use_item": true,
+ "play_sounds": "saddle",
+ "interact_text": "action.interact.saddle"
+ }
+ ]
+}
+```
+
+tnt_minecart
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "on_interact": {
+ "filters": {
+ "any_of": [
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "fireball:0"
+ },
+ {
+ "test": "has_equipment",
+ "subject": "other",
+ "domain": "hand",
+ "value": "flint_and_steel"
+ }
+ ],
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_game_rule",
+ "domain": "tntexplodes",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "event": "minecraft:on_prime",
+ "target": "self"
+ },
+ "swing": true,
+ "play_sounds": "ignite",
+ "interact_text": "action.interact.creeper"
+ },
+ {
+ "on_interact": {
+ "filters": {
+ "any_of": [
+ {
+ "test": "has_component",
+ "subject": "other",
+ "value": "fire_aspect"
+ }
+ ],
+ "all_of": [
+ {
+ "test": "is_game_rule",
+ "domain": "tntexplodes",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "event": "minecraft:on_prime",
+ "target": "self"
+ },
+ "swing": true,
+ "interact_text": "action.interact.creeper"
+ }
+ ]
+}
+```
+
+trader_llama
+
+```json
+"minecraft:interact": {
+ "interactions": [
+ {
+ "play_sounds": "armor.equip_generic",
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "chest"
+ }
+ ]
+ },
+ "event": "minecraft:on_chest",
+ "target": "self"
+ },
+ "use_item": true,
+ "interact_text": "action.interact.attachchest"
+ }
+ ]
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:interact": {
+ "interactions": {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "golden_apple"
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "value": "minecraft:effect.weakness"
+ }
+ ]
+ },
+ "event": "villager_converted",
+ "target": "self"
+ },
+ "use_item": true,
+ "interact_text": "action.interact.cure"
+ }
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:interact": {
+ "interactions": {
+ "on_interact": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "has_equipment",
+ "domain": "hand",
+ "subject": "other",
+ "value": "golden_apple"
+ },
+ {
+ "test": "has_component",
+ "subject": "self",
+ "value": "minecraft:effect.weakness"
+ }
+ ]
+ },
+ "event": "villager_converted",
+ "target": "self"
+ },
+ "use_item": true,
+ "interact_text": "action.interact.cure"
+ }
+}
+```
+
+## inventory
+
+allay
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 1
+}
+```
+
+camel
+
+```json
+"minecraft:inventory": {
+ "container_type": "horse"
+}
+```
+
+chest_boat
+
+```json
+"minecraft:inventory": {
+ "container_type": "chest_boat",
+ "inventory_size": 27,
+ "can_be_siphoned_from": true
+}
+```
+
+chest_minecart
+
+```json
+"minecraft:inventory": {
+ "container_type": "minecart_chest",
+ "inventory_size": 27,
+ "can_be_siphoned_from": true
+}
+```
+
+command_block_minecart
+
+```json
+"minecraft:inventory": {}
+```
+
+donkey
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 16,
+ "container_type": "horse"
+}
+```
+
+hopper_minecart
+
+```json
+"minecraft:inventory": {
+ "container_type": "minecart_hopper",
+ "inventory_size": 5,
+ "can_be_siphoned_from": true
+}
+```
+
+horse
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 2,
+ "container_type": "horse"
+}
+```
+
+llama
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 16,
+ "container_type": "horse",
+ "additional_slots_per_strength": 3
+}
+```
+
+mule
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 16,
+ "container_type": "horse"
+}
+```
+
+panda
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 1,
+ "private": true
+}
+```
+
+piglin
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 8
+}
+```
+
+trader_llama
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 16,
+ "container_type": "horse",
+ "additional_slots_per_strength": 3
+}
+```
+
+villager
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 8,
+ "private": true
+}
+```
+
+villager_v2
+
+```json
+"minecraft:inventory": {
+ "inventory_size": 8,
+ "private": true
+}
+```
+
+## is_baby
+
+axolotl
+
+```json
+"minecraft:is_baby": {}
+```
+
+bee
+
+```json
+"minecraft:is_baby": {}
+```
+
+camel
+
+```json
+"minecraft:is_baby": {}
+```
+
+cat
+
+```json
+"minecraft:is_baby": {}
+```
+
+chicken
+
+```json
+"minecraft:is_baby": {}
+```
+
+cow
+
+```json
+"minecraft:is_baby": {}
+```
+
+dolphin
+
+```json
+"minecraft:is_baby": {}
+```
+
+donkey
+
+```json
+"minecraft:is_baby": {}
+```
+
+drowned
+
+```json
+"minecraft:is_baby": {}
+```
+
+fox
+
+```json
+"minecraft:is_baby": {}
+```
+
+glow_squid
+
+```json
+"minecraft:is_baby": {}
+```
+
+goat
+
+```json
+"minecraft:is_baby": {}
+```
+
+hoglin
+
+```json
+"minecraft:is_baby": {}
+```
+
+horse
+
+```json
+"minecraft:is_baby": {}
+```
+
+husk
+
+```json
+"minecraft:is_baby": {}
+```
+
+llama
+
+```json
+"minecraft:is_baby": {}
+```
+
+mooshroom
+
+```json
+"minecraft:is_baby": {}
+```
+
+mule
+
+```json
+"minecraft:is_baby": {}
+```
+
+ocelot
+
+```json
+"minecraft:is_baby": {}
+```
+
+panda
+
+```json
+"minecraft:is_baby": {}
+```
+
+pig
+
+```json
+"minecraft:is_baby": {}
+```
+
+piglin
+
+```json
+"minecraft:is_baby": {}
+```
+
+polar_bear
+
+```json
+"minecraft:is_baby": {}
+```
+
+rabbit
+
+```json
+"minecraft:is_baby": {}
+```
+
+sheep
+
+```json
+"minecraft:is_baby": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:is_baby": {}
+```
+
+sniffer
+
+```json
+"minecraft:is_baby": {}
+```
+
+squid
+
+```json
+"minecraft:is_baby": {}
+```
+
+strider
+
+```json
+"minecraft:is_baby": {}
+```
+
+tadpole
+
+```json
+"minecraft:is_baby": {}
+```
+
+trader_llama
+
+```json
+"minecraft:is_baby": {}
+```
+
+turtle
+
+```json
+"minecraft:is_baby": {}
+```
+
+villager
+
+```json
+"minecraft:is_baby": {}
+```
+
+villager_v2
+
+```json
+"minecraft:is_baby": {}
+```
+
+wolf
+
+```json
+"minecraft:is_baby": {}
+```
+
+zoglin
+
+```json
+"minecraft:is_baby": {}
+```
+
+zombie
+
+```json
+"minecraft:is_baby": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:is_baby": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:is_baby": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:is_baby": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:is_baby": {}
+```
+
+## is_charged
+
+creeper
+
+```json
+"minecraft:is_charged": {}
+```
+
+## is_chested
+
+donkey
+
+```json
+"minecraft:is_chested": {}
+```
+
+llama
+
+```json
+"minecraft:is_chested": {}
+```
+
+mule
+
+```json
+"minecraft:is_chested": {}
+```
+
+trader_llama
+
+```json
+"minecraft:is_chested": {}
+```
+
+## is_dyeable
+
+cat
+
+```json
+"minecraft:is_dyeable": {
+ "interact_text": "action.interact.dye"
+}
+```
+
+sheep
+
+```json
+"minecraft:is_dyeable": {
+ "interact_text": "action.interact.dye"
+}
+```
+
+wolf
+
+```json
+"minecraft:is_dyeable": {
+ "interact_text": "action.interact.dye"
+}
+```
+
+## is_hidden_when_invisible
+
+allay
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+axolotl
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+bat
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+bee
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+blaze
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+camel
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+cat
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+cave_spider
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+chicken
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+cow
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+creeper
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+dolphin
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+donkey
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+elder_guardian
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+enderman
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+endermite
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+ender_dragon
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+evocation_illager
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+cod
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+fox
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+frog
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+ghast
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+glow_squid
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+goat
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+guardian
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+hoglin
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+horse
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+husk
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+iron_golem
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+llama
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+magma_cube
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+mooshroom
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+mule
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+ocelot
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+panda
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+parrot
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+phantom
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+pig
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+piglin
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+piglin_brute
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+pillager
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+player
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+polar_bear
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+pufferfish
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+rabbit
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+ravager
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+salmon
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+sheep
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+shulker
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+silverfish
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+skeleton
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+slime
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+sniffer
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+snow_golem
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+spider
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+squid
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+stray
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+strider
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+tadpole
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+trader_llama
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+tropicalfish
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+turtle
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+vex
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+villager
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+villager_v2
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+vindicator
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+wandering_trader
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+warden
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+witch
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+wither
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+wither_skeleton
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+wolf
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+zoglin
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+zombie
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:is_hidden_when_invisible": {}
+```
+
+## is_ignited
+
+tnt_minecart
+
+```json
+"minecraft:is_ignited": {}
+```
+
+```json
+"minecraft:is_ignited": {}
+```
+
+## is_illager_captain
+
+pillager
+
+```json
+"minecraft:is_illager_captain": {}
+```
+
+```json
+"minecraft:is_illager_captain": {}
+```
+
+vindicator
+
+```json
+"minecraft:is_illager_captain": {}
+```
+
+```json
+"minecraft:is_illager_captain": {}
+```
+
+## is_pregnant
+
+sniffer
+
+```json
+"minecraft:is_pregnant": {}
+```
+
+## is_saddled
+
+camel
+
+```json
+"minecraft:is_saddled": {}
+```
+
+donkey
+
+```json
+"minecraft:is_saddled": {}
+```
+
+horse
+
+```json
+"minecraft:is_saddled": {}
+```
+
+mule
+
+```json
+"minecraft:is_saddled": {}
+```
+
+pig
+
+```json
+"minecraft:is_saddled": {}
+```
+
+strider
+
+```json
+"minecraft:is_saddled": {}
+```
+
+## is_shaking
+
+hoglin
+
+```json
+"minecraft:is_shaking": {}
+```
+
+husk
+
+```json
+"minecraft:is_shaking": {}
+```
+
+```json
+"minecraft:is_shaking": {}
+```
+
+piglin
+
+```json
+"minecraft:is_shaking": {}
+```
+
+piglin_brute
+
+```json
+"minecraft:is_shaking": {}
+```
+
+skeleton
+
+```json
+"minecraft:is_shaking": {}
+```
+
+strider
+
+```json
+"minecraft:is_shaking": {}
+```
+
+zombie
+
+```json
+"minecraft:is_shaking": {}
+```
+
+```json
+"minecraft:is_shaking": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:is_shaking": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:is_shaking": {}
+```
+
+## is_sheared
+
+sheep
+
+```json
+"minecraft:is_sheared": {}
+```
+
+snow_golem
+
+```json
+"minecraft:is_sheared": {}
+```
+
+## is_stackable
+
+boat
+
+```json
+"minecraft:is_stackable": {}
+```
+
+chest_boat
+
+```json
+"minecraft:is_stackable": {}
+```
+
+chest_minecart
+
+```json
+"minecraft:is_stackable": {
+ "value": true
+}
+```
+
+hopper_minecart
+
+```json
+"minecraft:is_stackable": {}
+```
+
+minecart
+
+```json
+"minecraft:is_stackable": {}
+```
+
+tnt_minecart
+
+```json
+"minecraft:is_stackable": {}
+```
+
+## is_stunned
+
+ravager
+
+```json
+"minecraft:is_stunned": {}
+```
+
+## is_tamed
+
+camel
+
+```json
+"minecraft:is_tamed": {}
+```
+
+cat
+
+```json
+"minecraft:is_tamed": {}
+```
+
+donkey
+
+```json
+"minecraft:is_tamed": {}
+```
+
+horse
+
+```json
+"minecraft:is_tamed": {}
+```
+
+llama
+
+```json
+"minecraft:is_tamed": {}
+```
+
+mule
+
+```json
+"minecraft:is_tamed": {}
+```
+
+ocelot
+
+```json
+"minecraft:is_tamed": {}
+```
+
+parrot
+
+```json
+"minecraft:is_tamed": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:is_tamed": {}
+```
+
+trader_llama
+
+```json
+"minecraft:is_tamed": {}
+```
+
+wolf
+
+```json
+"minecraft:is_tamed": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:is_tamed": {}
+```
+
+## item_controllable
+
+pig
+
+```json
+"minecraft:item_controllable": {
+ "control_items": "carrotOnAStick"
+}
+```
+
+strider
+
+```json
+"minecraft:item_controllable": {
+ "control_items": "warped_fungus_on_a_stick"
+}
+```
+
+## item_hopper
+
+hopper_minecart
+
+```json
+"minecraft:item_hopper": {}
+```
+
+## jump.dynamic
+
+rabbit
+
+```json
+"minecraft:jump.dynamic": {}
+```
+
+## jump.static
+
+allay
+
+```json
+"minecraft:jump.static": {}
+```
+
+axolotl
+
+```json
+"minecraft:jump.static": {}
+```
+
+bat
+
+```json
+"minecraft:jump.static": {}
+```
+
+bee
+
+```json
+"minecraft:jump.static": {}
+```
+
+blaze
+
+```json
+"minecraft:jump.static": {}
+```
+
+camel
+
+```json
+"minecraft:jump.static": {}
+```
+
+cat
+
+```json
+"minecraft:jump.static": {}
+```
+
+cave_spider
+
+```json
+"minecraft:jump.static": {}
+```
+
+chicken
+
+```json
+"minecraft:jump.static": {}
+```
+
+cow
+
+```json
+"minecraft:jump.static": {}
+```
+
+creeper
+
+```json
+"minecraft:jump.static": {}
+```
+
+dolphin
+
+```json
+"minecraft:jump.static": {
+ "jump_power": 0.6
+}
+```
+
+donkey
+
+```json
+"minecraft:jump.static": {}
+```
+
+drowned
+
+```json
+"minecraft:jump.static": {}
+```
+
+elder_guardian
+
+```json
+"minecraft:jump.static": {}
+```
+
+enderman
+
+```json
+"minecraft:jump.static": {}
+```
+
+endermite
+
+```json
+"minecraft:jump.static": {}
+```
+
+evocation_illager
+
+```json
+"minecraft:jump.static": {}
+```
+
+fox
+
+```json
+"minecraft:jump.static": {}
+```
+
+frog
+
+```json
+"minecraft:jump.static": {}
+```
+
+ghast
+
+```json
+"minecraft:jump.static": {}
+```
+
+glow_squid
+
+```json
+"minecraft:jump.static": {}
+```
+
+goat
+
+```json
+"minecraft:jump.static": {}
+```
+
+guardian
+
+```json
+"minecraft:jump.static": {}
+```
+
+hoglin
+
+```json
+"minecraft:jump.static": {}
+```
+
+horse
+
+```json
+"minecraft:jump.static": {}
+```
+
+husk
+
+```json
+"minecraft:jump.static": {}
+```
+
+iron_golem
+
+```json
+"minecraft:jump.static": {}
+```
+
+llama
+
+```json
+"minecraft:jump.static": {}
+```
+
+magma_cube
+
+```json
+"minecraft:jump.static": {}
+```
+
+mooshroom
+
+```json
+"minecraft:jump.static": {}
+```
+
+mule
+
+```json
+"minecraft:jump.static": {}
+```
+
+ocelot
+
+```json
+"minecraft:jump.static": {}
+```
+
+panda
+
+```json
+"minecraft:jump.static": {}
+```
+
+parrot
+
+```json
+"minecraft:jump.static": {}
+```
+
+pig
+
+```json
+"minecraft:jump.static": {}
+```
+
+piglin
+
+```json
+"minecraft:jump.static": {}
+```
+
+piglin_brute
+
+```json
+"minecraft:jump.static": {}
+```
+
+pillager
+
+```json
+"minecraft:jump.static": {}
+```
+
+polar_bear
+
+```json
+"minecraft:jump.static": {}
+```
+
+ravager
+
+```json
+"minecraft:jump.static": {}
+```
+
+sheep
+
+```json
+"minecraft:jump.static": {}
+```
+
+silverfish
+
+```json
+"minecraft:jump.static": {}
+```
+
+skeleton
+
+```json
+"minecraft:jump.static": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:jump.static": {}
+```
+
+slime
+
+```json
+"minecraft:jump.static": {}
+```
+
+sniffer
+
+```json
+"minecraft:jump.static": {}
+```
+
+snow_golem
+
+```json
+"minecraft:jump.static": {}
+```
+
+spider
+
+```json
+"minecraft:jump.static": {}
+```
+
+squid
+
+```json
+"minecraft:jump.static": {}
+```
+
+stray
+
+```json
+"minecraft:jump.static": {}
+```
+
+strider
+
+```json
+"minecraft:jump.static": {}
+```
+
+trader_llama
+
+```json
+"minecraft:jump.static": {}
+```
+
+turtle
+
+```json
+"minecraft:jump.static": {}
+```
+
+vex
+
+```json
+"minecraft:jump.static": {}
+```
+
+villager
+
+```json
+"minecraft:jump.static": {}
+```
+
+villager_v2
+
+```json
+"minecraft:jump.static": {}
+```
+
+vindicator
+
+```json
+"minecraft:jump.static": {}
+```
+
+wandering_trader
+
+```json
+"minecraft:jump.static": {}
+```
+
+warden
+
+```json
+"minecraft:jump.static": {}
+```
+
+witch
+
+```json
+"minecraft:jump.static": {}
+```
+
+wither
+
+```json
+"minecraft:jump.static": {}
+```
+
+wither_skeleton
+
+```json
+"minecraft:jump.static": {}
+```
+
+wolf
+
+```json
+"minecraft:jump.static": {}
+```
+
+zoglin
+
+```json
+"minecraft:jump.static": {}
+```
+
+zombie
+
+```json
+"minecraft:jump.static": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:jump.static": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:jump.static": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:jump.static": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:jump.static": {}
+```
+
+## knockback_resistance
+
+armor_stand
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 1.0
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 100,
+ "max": 100
+}
+```
+
+hoglin
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 0.6
+}
+```
+
+iron_golem
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 1.0
+}
+```
+
+ravager
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 0.75
+}
+```
+
+warden
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 1.0
+}
+```
+
+zoglin
+
+```json
+"minecraft:knockback_resistance": {
+ "value": 0.6
+}
+```
+
+## lava_movement
+
+strider
+
+```json
+"minecraft:lava_movement": {
+ "value": 0.32
+}
+```
+
+## leashable
+
+allay
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+axolotl
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+bee
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+boat
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+camel
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+cat
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+chest_boat
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+chicken
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+cow
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+dolphin
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+donkey
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+fox
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+frog
+
+```json
+"minecraft:leashable": {}
+```
+
+glow_squid
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+goat
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4,
+ "hard_distance": 6,
+ "max_distance": 10
+}
+```
+
+hoglin
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+horse
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+iron_golem
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+llama
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0,
+ "can_be_stolen": true
+}
+```
+
+mooshroom
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+mule
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+ocelot
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0,
+ "on_leash": {
+ "event": "minecraft:on_leash",
+ "target": "self"
+ },
+ "on_unleash": {
+ "event": "minecraft:on_unleash",
+ "target": "self"
+ }
+}
+```
+
+parrot
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+pig
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+polar_bear
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+rabbit
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+sheep
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+sniffer
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+snow_golem
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+squid
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+strider
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+trader_llama
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0,
+ "can_be_stolen": true
+}
+```
+
+wolf
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0,
+ "on_leash": {
+ "event": "minecraft:on_leash",
+ "target": "self"
+ },
+ "on_unleash": {
+ "event": "minecraft:on_unleash",
+ "target": "self"
+ }
+}
+```
+
+zoglin
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:leashable": {
+ "soft_distance": 4.0,
+ "hard_distance": 6.0,
+ "max_distance": 10.0
+}
+```
+
+## lookat
+
+enderman
+
+```json
+"minecraft:lookat": {
+ "search_radius": 64.0,
+ "set_target": true,
+ "look_cooldown": 5.0,
+ "filters": {
+ "all_of": [
+ {
+ "subject": "other",
+ "test": "is_family",
+ "value": "player"
+ },
+ {
+ "test": "has_equipment",
+ "domain": "head",
+ "subject": "other",
+ "operator": "not",
+ "value": "carved_pumpkin"
+ }
+ ]
+ }
+}
+```
+
+## loot
+
+armor_stand
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/armor_stand.json"
+}
+```
+
+blaze
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/blaze.json"
+}
+```
+
+boat
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/boat.json"
+}
+```
+
+cat
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/cat.json"
+}
+```
+
+cave_spider
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/spider.json"
+}
+```
+
+chicken
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/chicken.json"
+}
+```
+
+cow
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/cow.json"
+}
+```
+
+creeper
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/creeper.json"
+}
+```
+
+dolphin
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/dolphin.json"
+}
+```
+
+donkey
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/horse.json"
+}
+```
+
+drowned
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/drowned.json"
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/elder_guardian.json"
+}
+```
+
+enderman
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/enderman.json"
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/evocation_illager.json"
+}
+```
+
+cod
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/fish.json"
+}
+```
+
+fishing_hook
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/gameplay/fishing.json"
+}
+```
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/gameplay/jungle_fishing.json"
+}
+```
+
+fox
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/fox.json"
+}
+```
+
+ghast
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/ghast.json"
+}
+```
+
+glow_squid
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/glow_squid.json"
+}
+```
+
+goat
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/goat.json"
+}
+```
+
+guardian
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/guardian.json"
+}
+```
+
+hoglin
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/hoglin.json"
+}
+```
+
+horse
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/horse.json"
+}
+```
+
+husk
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/zombie.json"
+}
+```
+
+iron_golem
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/iron_golem.json"
+}
+```
+
+llama
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/llama.json"
+}
+```
+
+magma_cube
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/magma_cube.json"
+}
+```
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/magma_cube.json"
+}
+```
+
+mooshroom
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/mooshroom.json"
+}
+```
+
+mule
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/horse.json"
+}
+```
+
+npc
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/empty.json"
+}
+```
+
+ocelot
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/ocelot.json"
+}
+```
+
+panda
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/panda.json"
+}
+```
+
+parrot
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/parrot.json"
+}
+```
+
+phantom
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/phantom.json"
+}
+```
+
+pig
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/pig.json"
+}
+```
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/pig_saddled.json"
+}
+```
+
+piglin
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/piglin.json"
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/piglin.json"
+}
+```
+
+pillager
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/pillager.json"
+}
+```
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/pillager_raid.json"
+}
+```
+
+player
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/empty.json"
+}
+```
+
+polar_bear
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/polar_bear.json"
+}
+```
+
+pufferfish
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/pufferfish.json"
+}
+```
+
+rabbit
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/rabbit.json"
+}
+```
+
+ravager
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/ravager.json"
+}
+```
+
+salmon
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/salmon_normal.json"
+}
+```
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/salmon_normal.json"
+}
+```
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/salmon_large.json"
+}
+```
+
+sheep
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/sheep_sheared.json"
+}
+```
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/sheep.json"
+}
+```
+
+shulker
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/shulker.json"
+}
+```
+
+silverfish
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/silverfish.json"
+}
+```
+
+skeleton
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/skeleton.json"
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/skeleton_horse.json"
+}
+```
+
+slime
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/slime.json"
+}
+```
+
+snow_golem
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/snowman.json"
+}
+```
+
+spider
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/spider.json"
+}
+```
+
+squid
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/squid.json"
+}
+```
+
+stray
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/stray.json"
+}
+```
+
+strider
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/strider_saddled.json"
+}
+```
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/strider.json"
+}
+```
+
+trader_llama
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/llama.json"
+}
+```
+
+tripod_camera
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/empty.json"
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/tropicalfish.json"
+}
+```
+
+turtle
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/sea_turtle.json"
+}
+```
+
+vindicator
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/vindication_illager.json"
+}
+```
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/vindicator_raid.json"
+}
+```
+
+warden
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/warden.json"
+}
+```
+
+witch
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/witch.json"
+}
+```
+
+wither
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/wither_boss.json"
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/wither_skeleton.json"
+}
+```
+
+wolf
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/wolf.json"
+}
+```
+
+zoglin
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/zoglin.json"
+}
+```
+
+zombie
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/zombie.json"
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/zombie_horse.json"
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/zombie_pigman.json"
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/zombie.json"
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:loot": {
+ "table": "loot_tables/entities/zombie.json"
+}
+```
+
+## managed_wandering_trader
+
+wandering_trader
+
+```json
+"minecraft:managed_wandering_trader": {}
+```
+
+## mark_variant
+
+bee
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+horse
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 4
+}
+```
+
+llama
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+mooshroom
+
+```json
+"minecraft:mark_variant": {
+ "value": -1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": -1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 6
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 8
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 9
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 10
+}
+```
+
+trader_llama
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 3
+}
+```
+
+villager_v2
+
+```json
+"minecraft:mark_variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 6
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:mark_variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:mark_variant": {
+ "value": 6
+}
+```
+
+## mob_effect
+
+pufferfish
+
+```json
+"minecraft:mob_effect": {
+ "effect_range": 0.2,
+ "mob_effect": "poison",
+ "effect_time": 10,
+ "entity_filter": {
+ "any_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "monster"
+ }
+ ]
+ }
+}
+```
+
+warden
+
+```json
+"minecraft:mob_effect": {
+ "effect_range": 20,
+ "effect_time": 13,
+ "mob_effect": "darkness",
+ "cooldown_time": 6,
+ "entity_filter": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "other",
+ "value": "player"
+ },
+ {
+ "operator": "not",
+ "test": "has_ability",
+ "subject": "other",
+ "value": "invulnerable"
+ }
+ ]
+ }
+}
+```
+
+## movement
+
+allay
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+axolotl
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+bat
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+bee
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+blaze
+
+```json
+"minecraft:movement": {
+ "value": 0.23
+}
+```
+
+camel
+
+```json
+"minecraft:movement": {
+ "value": 0.09
+}
+```
+
+cat
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+cave_spider
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+chicken
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+cow
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+creeper
+
+```json
+"minecraft:movement": {
+ "value": 0.2
+}
+```
+
+dolphin
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+donkey
+
+```json
+"minecraft:movement": {
+ "value": 0.175
+}
+```
+
+drowned
+
+```json
+"minecraft:movement": {
+ "value": 0.23
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+enderman
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.45
+}
+```
+
+endermite
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:movement": {
+ "value": 0.5
+}
+```
+
+cod
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+fox
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+frog
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+ghast
+
+```json
+"minecraft:movement": {
+ "value": 0.03
+}
+```
+
+glow_squid
+
+```json
+"minecraft:movement": {
+ "value": 0.2
+}
+```
+
+goat
+
+```json
+"minecraft:movement": {
+ "value": 0.4
+}
+```
+
+guardian
+
+```json
+"minecraft:movement": {
+ "value": 0.12
+}
+```
+
+hoglin
+
+```json
+"minecraft:movement": {
+ "value": 0.36
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+horse
+
+```json
+"minecraft:movement": {
+ "value": {
+ "range_min": 0.1125,
+ "range_max": 0.3375
+ }
+}
+```
+
+husk
+
+```json
+"minecraft:movement": {
+ "value": 0.35
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.23
+}
+```
+
+iron_golem
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+llama
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+magma_cube
+
+```json
+"minecraft:movement": {
+ "value": 0.75
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.66
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.6
+}
+```
+
+mooshroom
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+mule
+
+```json
+"minecraft:movement": {
+ "value": 0.175
+}
+```
+
+npc
+
+```json
+"minecraft:movement": {
+ "value": 0.5
+}
+```
+
+ocelot
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+panda
+
+```json
+"minecraft:movement": {
+ "value": 0.15
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.07
+}
+```
+
+parrot
+
+```json
+"minecraft:movement": {
+ "value": 0.4
+}
+```
+
+phantom
+
+```json
+"minecraft:movement": {
+ "value": 1.8
+}
+```
+
+pig
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+piglin
+
+```json
+"minecraft:movement": {
+ "value": 0.42
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.35
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:movement": {
+ "value": 0.35
+}
+```
+
+pillager
+
+```json
+"minecraft:movement": {
+ "value": 0.35
+}
+```
+
+player
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+polar_bear
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+pufferfish
+
+```json
+"minecraft:movement": {
+ "value": 0.13
+}
+```
+
+rabbit
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+ravager
+
+```json
+"minecraft:movement": {
+ "value": 0.0
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.4
+}
+```
+
+salmon
+
+```json
+"minecraft:movement": {
+ "value": 0.12
+}
+```
+
+sheep
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+shulker
+
+```json
+"minecraft:movement": {
+ "value": 0.0,
+ "max": 0.0
+}
+```
+
+silverfish
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+skeleton
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:movement": {
+ "value": 0.2
+}
+```
+
+slime
+
+```json
+"minecraft:movement": {
+ "value": 0.6
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.4
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+sniffer
+
+```json
+"minecraft:movement": {
+ "value": 0.09
+}
+```
+
+snow_golem
+
+```json
+"minecraft:movement": {
+ "value": 0.2
+}
+```
+
+spider
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+squid
+
+```json
+"minecraft:movement": {
+ "value": 0.2
+}
+```
+
+stray
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+strider
+
+```json
+"minecraft:movement": {
+ "value": 0.16
+}
+```
+
+tadpole
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+trader_llama
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:movement": {
+ "value": 0.12
+}
+```
+
+turtle
+
+```json
+"minecraft:movement": {
+ "value": 0.1
+}
+```
+
+vex
+
+```json
+"minecraft:movement": {
+ "value": 1.0
+}
+```
+
+villager
+
+```json
+"minecraft:movement": {
+ "value": 0.5
+}
+```
+
+villager_v2
+
+```json
+"minecraft:movement": {
+ "value": 0.5
+}
+```
+
+vindicator
+
+```json
+"minecraft:movement": {
+ "value": 0.35
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:movement": {
+ "value": 0.5
+}
+```
+
+warden
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+witch
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+wither
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+wolf
+
+```json
+"minecraft:movement": {
+ "value": 0.3
+}
+```
+
+zoglin
+
+```json
+"minecraft:movement": {
+ "value": 0.25
+}
+```
+
+zombie
+
+```json
+"minecraft:movement": {
+ "value": 0.35
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.23
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:movement": {
+ "value": 0.2
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:movement": {
+ "value": 0.23
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:movement": {
+ "value": 0.35
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.23
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:movement": {
+ "value": 0.35
+}
+```
+
+```json
+"minecraft:movement": {
+ "value": 0.23
+}
+```
+
+## movement.amphibious
+
+axolotl
+
+```json
+"minecraft:movement.amphibious": {
+ "max_turn": 15.0
+}
+```
+
+frog
+
+```json
+"minecraft:movement.amphibious": {}
+```
+
+turtle
+
+```json
+"minecraft:movement.amphibious": {
+ "max_turn": 5.0
+}
+```
+
+## movement.basic
+
+bat
+
+```json
+"minecraft:movement.basic": {}
+```
+
+blaze
+
+```json
+"minecraft:movement.basic": {}
+```
+
+camel
+
+```json
+"minecraft:movement.basic": {}
+```
+
+cat
+
+```json
+"minecraft:movement.basic": {}
+```
+
+cave_spider
+
+```json
+"minecraft:movement.basic": {}
+```
+
+chicken
+
+```json
+"minecraft:movement.basic": {}
+```
+
+cow
+
+```json
+"minecraft:movement.basic": {}
+```
+
+creeper
+
+```json
+"minecraft:movement.basic": {}
+```
+
+donkey
+
+```json
+"minecraft:movement.basic": {}
+```
+
+enderman
+
+```json
+"minecraft:movement.basic": {}
+```
+
+endermite
+
+```json
+"minecraft:movement.basic": {}
+```
+
+evocation_illager
+
+```json
+"minecraft:movement.basic": {}
+```
+
+fox
+
+```json
+"minecraft:movement.basic": {}
+```
+
+glow_squid
+
+```json
+"minecraft:movement.basic": {}
+```
+
+goat
+
+```json
+"minecraft:movement.basic": {}
+```
+
+hoglin
+
+```json
+"minecraft:movement.basic": {}
+```
+
+horse
+
+```json
+"minecraft:movement.basic": {}
+```
+
+husk
+
+```json
+"minecraft:movement.basic": {}
+```
+
+iron_golem
+
+```json
+"minecraft:movement.basic": {}
+```
+
+llama
+
+```json
+"minecraft:movement.basic": {}
+```
+
+mooshroom
+
+```json
+"minecraft:movement.basic": {}
+```
+
+mule
+
+```json
+"minecraft:movement.basic": {}
+```
+
+ocelot
+
+```json
+"minecraft:movement.basic": {}
+```
+
+panda
+
+```json
+"minecraft:movement.basic": {}
+```
+
+pig
+
+```json
+"minecraft:movement.basic": {}
+```
+
+piglin
+
+```json
+"minecraft:movement.basic": {}
+```
+
+piglin_brute
+
+```json
+"minecraft:movement.basic": {}
+```
+
+pillager
+
+```json
+"minecraft:movement.basic": {}
+```
+
+polar_bear
+
+```json
+"minecraft:movement.basic": {}
+```
+
+ravager
+
+```json
+"minecraft:movement.basic": {}
+```
+
+sheep
+
+```json
+"minecraft:movement.basic": {}
+```
+
+shulker
+
+```json
+"minecraft:movement.basic": {}
+```
+
+silverfish
+
+```json
+"minecraft:movement.basic": {}
+```
+
+skeleton
+
+```json
+"minecraft:movement.basic": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:movement.basic": {}
+```
+
+sniffer
+
+```json
+"minecraft:movement.basic": {}
+```
+
+snow_golem
+
+```json
+"minecraft:movement.basic": {}
+```
+
+spider
+
+```json
+"minecraft:movement.basic": {}
+```
+
+squid
+
+```json
+"minecraft:movement.basic": {}
+```
+
+stray
+
+```json
+"minecraft:movement.basic": {}
+```
+
+strider
+
+```json
+"minecraft:movement.basic": {}
+```
+
+trader_llama
+
+```json
+"minecraft:movement.basic": {}
+```
+
+vex
+
+```json
+"minecraft:movement.basic": {}
+```
+
+villager
+
+```json
+"minecraft:movement.basic": {}
+```
+
+villager_v2
+
+```json
+"minecraft:movement.basic": {}
+```
+
+vindicator
+
+```json
+"minecraft:movement.basic": {}
+```
+
+wandering_trader
+
+```json
+"minecraft:movement.basic": {}
+```
+
+warden
+
+```json
+"minecraft:movement.basic": {}
+```
+
+witch
+
+```json
+"minecraft:movement.basic": {}
+```
+
+wither
+
+```json
+"minecraft:movement.basic": {
+ "max_turn": 180.0
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:movement.basic": {}
+```
+
+wolf
+
+```json
+"minecraft:movement.basic": {}
+```
+
+zoglin
+
+```json
+"minecraft:movement.basic": {}
+```
+
+zombie
+
+```json
+"minecraft:movement.basic": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:movement.basic": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:movement.basic": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:movement.basic": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:movement.basic": {}
+```
+
+## movement.fly
+
+parrot
+
+```json
+"minecraft:movement.fly": {}
+```
+
+## movement.generic
+
+drowned
+
+```json
+"minecraft:movement.generic": {}
+```
+
+## movement.glide
+
+phantom
+
+```json
+"minecraft:movement.glide": {
+ "start_speed": 0.1,
+ "speed_when_turning": 0.2
+}
+```
+
+## movement.hover
+
+allay
+
+```json
+"minecraft:movement.hover": {}
+```
+
+bee
+
+```json
+"minecraft:movement.hover": {}
+```
+
+## movement.jump
+
+magma_cube
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 2.0,
+ 6.0
+ ]
+}
+```
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 2.0,
+ 6.0
+ ]
+}
+```
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 0.667,
+ 2.0
+ ]
+}
+```
+
+slime
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 0.5,
+ 1.5
+ ]
+}
+```
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 0.5,
+ 1.5
+ ]
+}
+```
+
+```json
+"minecraft:movement.jump": {
+ "jump_delay": [
+ 0.16,
+ 0.5
+ ]
+}
+```
+
+## movement.skip
+
+rabbit
+
+```json
+"minecraft:movement.skip": {}
+```
+
+## movement.sway
+
+elder_guardian
+
+```json
+"minecraft:movement.sway": {}
+```
+
+cod
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+guardian
+
+```json
+"minecraft:movement.sway": {}
+```
+
+pufferfish
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+salmon
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+tadpole
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:movement.sway": {
+ "sway_amplitude": 0.0
+}
+```
+
+## movement_sound_distance_offset
+
+warden
+
+```json
+"minecraft:movement_sound_distance_offset": {
+ "value": 0.55
+}
+```
+
+## nameable
+
+allay
+
+```json
+"minecraft:nameable": {}
+```
+
+armor_stand
+
+```json
+"minecraft:nameable": {}
+```
+
+axolotl
+
+```json
+"minecraft:nameable": {}
+```
+
+bat
+
+```json
+"minecraft:nameable": {}
+```
+
+bee
+
+```json
+"minecraft:nameable": {}
+```
+
+blaze
+
+```json
+"minecraft:nameable": {}
+```
+
+camel
+
+```json
+"minecraft:nameable": {}
+```
+
+cat
+
+```json
+"minecraft:nameable": {}
+```
+
+cave_spider
+
+```json
+"minecraft:nameable": {}
+```
+
+chicken
+
+```json
+"minecraft:nameable": {}
+```
+
+cow
+
+```json
+"minecraft:nameable": {}
+```
+
+creeper
+
+```json
+"minecraft:nameable": {}
+```
+
+dolphin
+
+```json
+"minecraft:nameable": {}
+```
+
+donkey
+
+```json
+"minecraft:nameable": {}
+```
+
+drowned
+
+```json
+"minecraft:nameable": {}
+```
+
+elder_guardian
+
+```json
+"minecraft:nameable": {}
+```
+
+enderman
+
+```json
+"minecraft:nameable": {}
+```
+
+endermite
+
+```json
+"minecraft:nameable": {}
+```
+
+evocation_illager
+
+```json
+"minecraft:nameable": {}
+```
+
+cod
+
+```json
+"minecraft:nameable": {}
+```
+
+fox
+
+```json
+"minecraft:nameable": {}
+```
+
+frog
+
+```json
+"minecraft:nameable": {}
+```
+
+ghast
+
+```json
+"minecraft:nameable": {}
+```
+
+glow_squid
+
+```json
+"minecraft:nameable": {}
+```
+
+goat
+
+```json
+"minecraft:nameable": {}
+```
+
+guardian
+
+```json
+"minecraft:nameable": {}
+```
+
+hoglin
+
+```json
+"minecraft:nameable": {}
+```
+
+horse
+
+```json
+"minecraft:nameable": {}
+```
+
+husk
+
+```json
+"minecraft:nameable": {}
+```
+
+iron_golem
+
+```json
+"minecraft:nameable": {}
+```
+
+llama
+
+```json
+"minecraft:nameable": {}
+```
+
+magma_cube
+
+```json
+"minecraft:nameable": {}
+```
+
+mooshroom
+
+```json
+"minecraft:nameable": {}
+```
+
+mule
+
+```json
+"minecraft:nameable": {}
+```
+
+npc
+
+```json
+"minecraft:nameable": {
+ "always_show": false,
+ "allow_name_tag_renaming": false
+}
+```
+
+ocelot
+
+```json
+"minecraft:nameable": {}
+```
+
+panda
+
+```json
+"minecraft:nameable": {}
+```
+
+parrot
+
+```json
+"minecraft:nameable": {}
+```
+
+phantom
+
+```json
+"minecraft:nameable": {}
+```
+
+pig
+
+```json
+"minecraft:nameable": {}
+```
+
+piglin
+
+```json
+"minecraft:nameable": {}
+```
+
+piglin_brute
+
+```json
+"minecraft:nameable": {}
+```
+
+pillager
+
+```json
+"minecraft:nameable": {}
+```
+
+player
+
+```json
+"minecraft:nameable": {
+ "always_show": true,
+ "allow_name_tag_renaming": false
+}
+```
+
+polar_bear
+
+```json
+"minecraft:nameable": {}
+```
+
+pufferfish
+
+```json
+"minecraft:nameable": {}
+```
+
+rabbit
+
+```json
+"minecraft:nameable": {}
+```
+
+ravager
+
+```json
+"minecraft:nameable": {}
+```
+
+salmon
+
+```json
+"minecraft:nameable": {}
+```
+
+sheep
+
+```json
+"minecraft:nameable": {}
+```
+
+shulker
+
+```json
+"minecraft:nameable": {}
+```
+
+silverfish
+
+```json
+"minecraft:nameable": {}
+```
+
+skeleton
+
+```json
+"minecraft:nameable": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:nameable": {}
+```
+
+slime
+
+```json
+"minecraft:nameable": {}
+```
+
+sniffer
+
+```json
+"minecraft:nameable": {}
+```
+
+snow_golem
+
+```json
+"minecraft:nameable": {}
+```
+
+spider
+
+```json
+"minecraft:nameable": {}
+```
+
+squid
+
+```json
+"minecraft:nameable": {}
+```
+
+stray
+
+```json
+"minecraft:nameable": {}
+```
+
+strider
+
+```json
+"minecraft:nameable": {}
+```
+
+tadpole
+
+```json
+"minecraft:nameable": {}
+```
+
+trader_llama
+
+```json
+"minecraft:nameable": {}
+```
+
+tropicalfish
+
+```json
+"minecraft:nameable": {}
+```
+
+turtle
+
+```json
+"minecraft:nameable": {}
+```
+
+vex
+
+```json
+"minecraft:nameable": {}
+```
+
+villager
+
+```json
+"minecraft:nameable": {}
+```
+
+villager_v2
+
+```json
+"minecraft:nameable": {}
+```
+
+vindicator
+
+```json
+"minecraft:nameable": {
+ "default_trigger": {
+ "event": "minecraft:stop_johnny",
+ "target": "self"
+ },
+ "name_actions": [
+ {
+ "name_filter": "Johnny",
+ "on_named": {
+ "event": "minecraft:start_johnny",
+ "target": "self"
+ }
+ }
+ ]
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:nameable": {}
+```
+
+warden
+
+```json
+"minecraft:nameable": {}
+```
+
+witch
+
+```json
+"minecraft:nameable": {}
+```
+
+wither
+
+```json
+"minecraft:nameable": {}
+```
+
+wither_skeleton
+
+```json
+"minecraft:nameable": {}
+```
+
+wolf
+
+```json
+"minecraft:nameable": {}
+```
+
+zoglin
+
+```json
+"minecraft:nameable": {}
+```
+
+zombie
+
+```json
+"minecraft:nameable": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:nameable": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:nameable": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:nameable": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:nameable": {}
+```
+
+## navigation.climb
+
+cave_spider
+
+```json
+"minecraft:navigation.climb": {
+ "can_path_over_water": true
+}
+```
+
+spider
+
+```json
+"minecraft:navigation.climb": {
+ "can_path_over_water": true
+}
+```
+
+## navigation.float
+
+bat
+
+```json
+"minecraft:navigation.float": {
+ "can_path_over_water": true
+}
+```
+
+ghast
+
+```json
+"minecraft:navigation.float": {
+ "can_path_over_water": true
+}
+```
+
+## navigation.fly
+
+parrot
+
+```json
+"minecraft:navigation.fly": {
+ "can_path_over_water": true,
+ "can_path_from_air": true
+}
+```
+
+## navigation.generic
+
+axolotl
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": true,
+ "can_swim": true,
+ "can_walk": true,
+ "can_sink": false,
+ "avoid_damage_blocks": true
+}
+```
+
+dolphin
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": true,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": true,
+ "can_sink": false
+}
+```
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": true,
+ "can_sink": false
+}
+```
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": true,
+ "can_swim": true,
+ "can_walk": true,
+ "can_breach": false,
+ "can_jump": false
+}
+```
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": true,
+ "can_swim": true,
+ "can_walk": true,
+ "can_breach": false,
+ "can_jump": false
+}
+```
+
+drowned
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_break_doors": true,
+ "can_swim": false,
+ "can_walk": true,
+ "avoid_sun": true
+}
+```
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_break_doors": true,
+ "can_swim": true,
+ "can_walk": true,
+ "avoid_sun": true
+}
+```
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_break_doors": true,
+ "can_swim": false,
+ "can_walk": true,
+ "avoid_sun": true
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": true
+}
+```
+
+cod
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": false,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": false,
+ "can_sink": false
+}
+```
+
+frog
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": true,
+ "can_swim": true,
+ "can_walk": true,
+ "can_sink": false,
+ "avoid_damage_blocks": true
+}
+```
+
+guardian
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": true
+}
+```
+
+pufferfish
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": false,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": false,
+ "can_sink": false
+}
+```
+
+salmon
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": false,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": false,
+ "can_sink": false
+}
+```
+
+tadpole
+
+```json
+"minecraft:navigation.generic": {
+ "can_path_over_water": true,
+ "can_swim": true,
+ "can_walk": false,
+ "can_sink": false,
+ "avoid_damage_blocks": true
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": false,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": false,
+ "can_breach": false,
+ "can_sink": false
+}
+```
+
+turtle
+
+```json
+"minecraft:navigation.generic": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "can_swim": true,
+ "can_walk": true,
+ "can_sink": false,
+ "avoid_damage_blocks": true
+}
+```
+
+## navigation.hover
+
+allay
+
+```json
+"minecraft:navigation.hover": {
+ "can_path_over_water": true,
+ "can_sink": false,
+ "can_pass_doors": false,
+ "can_path_from_air": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true,
+ "avoid_sun": false
+}
+```
+
+bee
+
+```json
+"minecraft:navigation.hover": {
+ "can_path_over_water": true,
+ "can_sink": false,
+ "can_pass_doors": false,
+ "can_path_from_air": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true,
+ "avoid_sun": false
+}
+```
+
+## navigation.walk
+
+blaze
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+camel
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+cat
+
+```json
+"minecraft:navigation.walk": {
+ "can_float": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+chicken
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+cow
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+creeper
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true
+}
+```
+
+donkey
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+enderman
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": false,
+ "avoid_water": true
+}
+```
+
+endermite
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "can_pass_doors": true,
+ "can_open_doors": true,
+ "avoid_water": true
+}
+```
+
+fox
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+glow_squid
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "can_sink": false
+}
+```
+
+goat
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true,
+ "blocks_to_avoid": [
+ {
+ "name": "minecraft:powder_snow"
+ }
+ ]
+}
+```
+
+hoglin
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+horse
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+husk
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "can_pass_doors": true,
+ "can_break_doors": true,
+ "avoid_portals": false
+}
+```
+
+iron_golem
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": false,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+llama
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+magma_cube
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true
+}
+```
+
+mooshroom
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+mule
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+ocelot
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+panda
+
+```json
+"minecraft:navigation.walk": {
+ "can_float": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+pig
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+piglin
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "can_open_doors": true
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "can_open_doors": true
+}
+```
+
+pillager
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true
+}
+```
+
+polar_bear
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+rabbit
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true
+}
+```
+
+ravager
+
+```json
+"minecraft:navigation.walk": {
+ "avoid_damage_blocks": true,
+ "can_path_over_water": true,
+ "can_sink": false
+}
+```
+
+sheep
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true
+}
+```
+
+shulker
+
+```json
+"minecraft:navigation.walk": {}
+```
+
+silverfish
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true
+}
+```
+
+skeleton
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "avoid_sun": true,
+ "avoid_water": true
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "avoid_water": true
+}
+```
+
+slime
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true
+}
+```
+
+sniffer
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+snow_golem
+
+```json
+"minecraft:navigation.walk": {
+ "avoid_water": true
+}
+```
+
+squid
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "can_sink": false
+}
+```
+
+stray
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "avoid_sun": true,
+ "avoid_water": true
+}
+```
+
+strider
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_lava": true,
+ "avoid_water": true,
+ "can_sink": false,
+ "can_walk_in_lava": true
+}
+```
+
+trader_llama
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+vex
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true
+}
+```
+
+villager
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "can_path_over_water": true,
+ "can_pass_doors": true,
+ "can_open_doors": true,
+ "can_walk": true,
+ "avoid_water": true
+}
+```
+
+villager_v2
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "can_pass_doors": true,
+ "can_open_doors": true,
+ "avoid_water": true
+}
+```
+
+vindicator
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true
+}
+```
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "can_pass_doors": true,
+ "can_break_doors": true
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "can_pass_doors": true,
+ "can_open_doors": false,
+ "avoid_water": true
+}
+```
+
+warden
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "can_path_over_lava": true,
+ "avoid_damage_blocks": true
+}
+```
+
+witch
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": false
+}
+```
+
+wither
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_water": true
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "avoid_sun": true,
+ "avoid_water": true
+}
+```
+
+wolf
+
+```json
+"minecraft:navigation.walk": {
+ "can_path_over_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+zoglin
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "can_path_over_water": false,
+ "avoid_water": true,
+ "avoid_damage_blocks": true
+}
+```
+
+zombie
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "can_pass_doors": true,
+ "can_walk": true,
+ "can_break_doors": true
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "avoid_water": true
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "can_pass_doors": true,
+ "can_open_doors": true,
+ "avoid_water": true,
+ "avoid_portals": true
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "can_pass_doors": true,
+ "can_break_doors": true,
+ "avoid_sun": false
+}
+```
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "can_pass_doors": true,
+ "can_open_doors": true,
+ "avoid_water": true,
+ "avoid_sun": true
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "can_pass_doors": true,
+ "can_break_doors": true,
+ "avoid_sun": false
+}
+```
+
+```json
+"minecraft:navigation.walk": {
+ "is_amphibious": true,
+ "can_pass_doors": true,
+ "can_open_doors": true,
+ "avoid_water": true,
+ "avoid_sun": true
+}
+```
+
+## npc
+
+npc
+
+```json
+"minecraft:npc": {
+ "npc_data": {
+ "portrait_offsets": {
+ "translate": [
+ -7,
+ 50,
+ 0
+ ],
+ "scale": [
+ 1.75,
+ 1.75,
+ 1.75
+ ]
+ },
+ "picker_offsets": {
+ "translate": [
+ 0,
+ 20,
+ 0
+ ],
+ "scale": [
+ 1.7,
+ 1.7,
+ 1.7
+ ]
+ },
+ "skin_list": [
+ {
+ "variant": 0
+ },
+ {
+ "variant": 1
+ },
+ {
+ "variant": 2
+ },
+ {
+ "variant": 3
+ },
+ {
+ "variant": 4
+ },
+ {
+ "variant": 5
+ },
+ {
+ "variant": 6
+ },
+ {
+ "variant": 7
+ },
+ {
+ "variant": 8
+ },
+ {
+ "variant": 9
+ },
+ {
+ "variant": 10
+ },
+ {
+ "variant": 11
+ },
+ {
+ "variant": 12
+ },
+ {
+ "variant": 13
+ },
+ {
+ "variant": 14
+ },
+ {
+ "variant": 15
+ },
+ {
+ "variant": 16
+ },
+ {
+ "variant": 17
+ },
+ {
+ "variant": 18
+ },
+ {
+ "variant": 19
+ },
+ {
+ "variant": 25
+ },
+ {
+ "variant": 26
+ },
+ {
+ "variant": 27
+ },
+ {
+ "variant": 28
+ },
+ {
+ "variant": 29
+ },
+ {
+ "variant": 30
+ },
+ {
+ "variant": 31
+ },
+ {
+ "variant": 32
+ },
+ {
+ "variant": 33
+ },
+ {
+ "variant": 34
+ },
+ {
+ "variant": 20
+ },
+ {
+ "variant": 21
+ },
+ {
+ "variant": 22
+ },
+ {
+ "variant": 23
+ },
+ {
+ "variant": 24
+ },
+ {
+ "variant": 35
+ },
+ {
+ "variant": 36
+ },
+ {
+ "variant": 37
+ },
+ {
+ "variant": 38
+ },
+ {
+ "variant": 39
+ },
+ {
+ "variant": 40
+ },
+ {
+ "variant": 41
+ },
+ {
+ "variant": 42
+ },
+ {
+ "variant": 43
+ },
+ {
+ "variant": 44
+ },
+ {
+ "variant": 50
+ },
+ {
+ "variant": 51
+ },
+ {
+ "variant": 52
+ },
+ {
+ "variant": 53
+ },
+ {
+ "variant": 54
+ },
+ {
+ "variant": 45
+ },
+ {
+ "variant": 46
+ },
+ {
+ "variant": 47
+ },
+ {
+ "variant": 48
+ },
+ {
+ "variant": 49
+ },
+ {
+ "variant": 55
+ },
+ {
+ "variant": 56
+ },
+ {
+ "variant": 57
+ },
+ {
+ "variant": 58
+ },
+ {
+ "variant": 59
+ }
+ ]
+ }
+}
+```
+
+## on_death
+
+ender_dragon
+
+```json
+"minecraft:on_death": {
+ "event": "minecraft:start_death",
+ "target": "self"
+}
+```
+
+## on_friendly_anger
+
+panda
+
+```json
+"minecraft:on_friendly_anger": {
+ "event": "minecraft:on_anger",
+ "target": "self"
+}
+```
+
+polar_bear
+
+```json
+"minecraft:on_friendly_anger": {
+ "event": "minecraft:on_anger",
+ "target": "self"
+}
+```
+
+trader_llama
+
+```json
+"minecraft:on_friendly_anger": {
+ "event": "minecraft:defend_wandering_trader",
+ "target": "self"
+}
+```
+
+## on_hurt
+
+blaze
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:on_hurt_event",
+ "target": "self"
+}
+```
+
+ender_crystal
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:crystal_explode",
+ "target": "self"
+}
+```
+
+pillager
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_hurt": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+## on_hurt_by_player
+
+blaze
+
+```json
+"minecraft:on_hurt_by_player": {
+ "event": "minecraft:on_hurt_event",
+ "target": "self"
+}
+```
+
+pillager
+
+```json
+"minecraft:on_hurt_by_player": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_hurt_by_player": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_hurt_by_player": {
+ "event": "minecraft:ranged_mode",
+ "target": "self"
+}
+```
+
+## on_start_landing
+
+ender_dragon
+
+```json
+"minecraft:on_start_landing": {
+ "event": "minecraft:start_land",
+ "target": "self"
+}
+```
+
+## on_start_takeoff
+
+ender_dragon
+
+```json
+"minecraft:on_start_takeoff": {
+ "event": "minecraft:start_fly",
+ "target": "self"
+}
+```
+
+## on_target_acquired
+
+bee
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "attacked",
+ "target": "self"
+}
+```
+
+cave_spider
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry"
+}
+```
+
+dolphin
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "become_angry",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_target_acquired": {}
+```
+
+drowned
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:has_target",
+ "target": "self"
+}
+```
+
+enderman
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry",
+ "target": "self"
+}
+```
+
+hoglin
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "become_angry_event",
+ "target": "self"
+}
+```
+
+llama
+
+```json
+"minecraft:on_target_acquired": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "target",
+ "value": "wolf"
+ },
+ {
+ "test": "has_component",
+ "subject": "target",
+ "operator": "!=",
+ "value": "minecraft:is_tamed"
+ }
+ ]
+ },
+ "event": "minecraft:mad_at_wolf",
+ "target": "self"
+}
+```
+
+magma_cube
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_aggressive",
+ "target": "self"
+}
+```
+
+panda
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:on_scared",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_target_acquired": {}
+```
+
+piglin
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "become_angry_event",
+ "target": "self"
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "become_angry_event",
+ "target": "self"
+}
+```
+
+polar_bear
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:on_scared",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:on_anger",
+ "target": "self"
+}
+```
+
+silverfish
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry",
+ "target": "self"
+}
+```
+
+slime
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_aggressive",
+ "target": "self"
+}
+```
+
+spider
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry"
+}
+```
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry"
+}
+```
+
+trader_llama
+
+```json
+"minecraft:on_target_acquired": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "target",
+ "value": "wolf"
+ },
+ {
+ "test": "has_component",
+ "subject": "target",
+ "operator": "!=",
+ "value": "minecraft:is_tamed"
+ }
+ ]
+ },
+ "event": "minecraft:mad_at_wolf",
+ "target": "self"
+}
+```
+
+vindicator
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_aggro",
+ "target": "self"
+}
+```
+
+wolf
+
+```json
+"minecraft:on_target_acquired": {}
+```
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry",
+ "target": "self"
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:on_target_acquired": {
+ "event": "minecraft:become_angry",
+ "target": "self"
+}
+```
+
+## on_target_escape
+
+creeper
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:stop_exploding",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_target_escape": {}
+```
+
+```json
+"minecraft:on_target_escape": {}
+```
+
+dolphin
+
+```json
+"minecraft:on_target_escape": {
+ "target": "self"
+}
+```
+
+drowned
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:lost_target",
+ "target": "self"
+}
+```
+
+llama
+
+```json
+"minecraft:on_target_escape": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "target",
+ "value": "wolf"
+ },
+ {
+ "test": "has_component",
+ "subject": "target",
+ "operator": "!=",
+ "value": "minecraft:is_tamed"
+ }
+ ]
+ },
+ "event": "minecraft:on_calm",
+ "target": "self"
+}
+```
+
+magma_cube
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:become_calm",
+ "target": "self"
+}
+```
+
+panda
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:on_calm",
+ "target": "self"
+}
+```
+
+pillager
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:calm",
+ "target": "self"
+}
+```
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:calm",
+ "target": "self"
+}
+```
+
+slime
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:become_calm",
+ "target": "self"
+}
+```
+
+trader_llama
+
+```json
+"minecraft:on_target_escape": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_family",
+ "subject": "target",
+ "value": "wolf"
+ },
+ {
+ "test": "has_component",
+ "subject": "target",
+ "operator": "!=",
+ "value": "minecraft:is_tamed"
+ }
+ ]
+ },
+ "event": "minecraft:on_calm",
+ "target": "self"
+}
+```
+
+vindicator
+
+```json
+"minecraft:on_target_escape": {
+ "event": "minecraft:stop_aggro",
+ "target": "self"
+}
+```
+
+## on_wake_with_owner
+
+cat
+
+```json
+"minecraft:on_wake_with_owner": {
+ "event": "minecraft:pet_slept_with_owner",
+ "target": "self"
+}
+```
+
+## out_of_control
+
+boat
+
+```json
+"minecraft:out_of_control": {}
+```
+
+```json
+"minecraft:out_of_control": {}
+```
+
+chest_boat
+
+```json
+"minecraft:out_of_control": {}
+```
+
+```json
+"minecraft:out_of_control": {}
+```
+
+## peek
+
+shulker
+
+```json
+"minecraft:peek": {
+ "on_open": {
+ "event": "minecraft:on_open"
+ },
+ "on_close": {
+ "event": "minecraft:on_close"
+ },
+ "on_target_open": {
+ "event": "minecraft:on_open"
+ }
+}
+```
+
+## persist_sit
+
+camel
+
+```json
+"minecraft:persist_sit": {}
+```
+
+## persistent
+
+armor_stand
+
+```json
+"minecraft:persistent": {}
+```
+
+ender_dragon
+
+```json
+"minecraft:persistent": {}
+```
+
+evocation_illager
+
+```json
+"minecraft:persistent": {}
+```
+
+```json
+"minecraft:persistent": {}
+```
+
+iron_golem
+
+```json
+"minecraft:persistent": {}
+```
+
+npc
+
+```json
+"minecraft:persistent": {}
+```
+
+pillager
+
+```json
+"minecraft:persistent": {}
+```
+
+ravager
+
+```json
+"minecraft:persistent": {}
+```
+
+sniffer
+
+```json
+"minecraft:persistent": {}
+```
+
+snow_golem
+
+```json
+"minecraft:persistent": {}
+```
+
+trader_llama
+
+```json
+"minecraft:persistent": {}
+```
+
+villager
+
+```json
+"minecraft:persistent": {}
+```
+
+villager_v2
+
+```json
+"minecraft:persistent": {}
+```
+
+vindicator
+
+```json
+"minecraft:persistent": {}
+```
+
+witch
+
+```json
+"minecraft:persistent": {}
+```
+
+wither
+
+```json
+"minecraft:persistent": {}
+```
+
+## physics
+
+allay
+
+```json
+"minecraft:physics": {
+ "has_gravity": false
+}
+```
+
+area_effect_cloud
+
+```json
+"minecraft:physics": {
+ "has_collision": false
+}
+```
+
+armor_stand
+
+```json
+"minecraft:physics": {}
+```
+
+arrow
+
+```json
+"minecraft:physics": {}
+```
+
+axolotl
+
+```json
+"minecraft:physics": {}
+```
+
+bat
+
+```json
+"minecraft:physics": {}
+```
+
+bee
+
+```json
+"minecraft:physics": {}
+```
+
+blaze
+
+```json
+"minecraft:physics": {}
+```
+
+boat
+
+```json
+"minecraft:physics": {}
+```
+
+camel
+
+```json
+"minecraft:physics": {}
+```
+
+cat
+
+```json
+"minecraft:physics": {}
+```
+
+cave_spider
+
+```json
+"minecraft:physics": {}
+```
+
+chest_boat
+
+```json
+"minecraft:physics": {}
+```
+
+chest_minecart
+
+```json
+"minecraft:physics": {}
+```
+
+chicken
+
+```json
+"minecraft:physics": {}
+```
+
+command_block_minecart
+
+```json
+"minecraft:physics": {}
+```
+
+cow
+
+```json
+"minecraft:physics": {}
+```
+
+creeper
+
+```json
+"minecraft:physics": {}
+```
+
+dolphin
+
+```json
+"minecraft:physics": {}
+```
+
+donkey
+
+```json
+"minecraft:physics": {}
+```
+
+drowned
+
+```json
+"minecraft:physics": {}
+```
+
+egg
+
+```json
+"minecraft:physics": {}
+```
+
+elder_guardian
+
+```json
+"minecraft:physics": {}
+```
+
+enderman
+
+```json
+"minecraft:physics": {}
+```
+
+endermite
+
+```json
+"minecraft:physics": {}
+```
+
+ender_crystal
+
+```json
+"minecraft:physics": {}
+```
+
+ender_dragon
+
+```json
+"minecraft:physics": {
+ "has_gravity": false,
+ "has_collision": false
+}
+```
+
+ender_pearl
+
+```json
+"minecraft:physics": {}
+```
+
+evocation_illager
+
+```json
+"minecraft:physics": {}
+```
+
+eye_of_ender_signal
+
+```json
+"minecraft:physics": {}
+```
+
+fireball
+
+```json
+"minecraft:physics": {}
+```
+
+fireworks_rocket
+
+```json
+"minecraft:physics": {}
+```
+
+cod
+
+```json
+"minecraft:physics": {
+ "has_gravity": false
+}
+```
+
+fishing_hook
+
+```json
+"minecraft:physics": {}
+```
+
+fox
+
+```json
+"minecraft:physics": {}
+```
+
+frog
+
+```json
+"minecraft:physics": {}
+```
+
+ghast
+
+```json
+"minecraft:physics": {}
+```
+
+glow_squid
+
+```json
+"minecraft:physics": {}
+```
+
+goat
+
+```json
+"minecraft:physics": {}
+```
+
+guardian
+
+```json
+"minecraft:physics": {}
+```
+
+hoglin
+
+```json
+"minecraft:physics": {}
+```
+
+hopper_minecart
+
+```json
+"minecraft:physics": {}
+```
+
+horse
+
+```json
+"minecraft:physics": {}
+```
+
+husk
+
+```json
+"minecraft:physics": {}
+```
+
+iron_golem
+
+```json
+"minecraft:physics": {}
+```
+
+lingering_potion
+
+```json
+"minecraft:physics": {}
+```
+
+llama
+
+```json
+"minecraft:physics": {}
+```
+
+llama_spit
+
+```json
+"minecraft:physics": {}
+```
+
+magma_cube
+
+```json
+"minecraft:physics": {}
+```
+
+minecart
+
+```json
+"minecraft:physics": {}
+```
+
+mooshroom
+
+```json
+"minecraft:physics": {}
+```
+
+mule
+
+```json
+"minecraft:physics": {}
+```
+
+npc
+
+```json
+"minecraft:physics": {}
+```
+
+ocelot
+
+```json
+"minecraft:physics": {}
+```
+
+panda
+
+```json
+"minecraft:physics": {}
+```
+
+parrot
+
+```json
+"minecraft:physics": {}
+```
+
+phantom
+
+```json
+"minecraft:physics": {
+ "has_gravity": false
+}
+```
+
+pig
+
+```json
+"minecraft:physics": {}
+```
+
+piglin
+
+```json
+"minecraft:physics": {}
+```
+
+piglin_brute
+
+```json
+"minecraft:physics": {}
+```
+
+pillager
+
+```json
+"minecraft:physics": {}
+```
+
+player
+
+```json
+"minecraft:physics": {
+ "push_towards_closest_space": true
+}
+```
+
+polar_bear
+
+```json
+"minecraft:physics": {}
+```
+
+pufferfish
+
+```json
+"minecraft:physics": {
+ "has_gravity": false
+}
+```
+
+rabbit
+
+```json
+"minecraft:physics": {}
+```
+
+ravager
+
+```json
+"minecraft:physics": {}
+```
+
+salmon
+
+```json
+"minecraft:physics": {
+ "has_gravity": false
+}
+```
+
+sheep
+
+```json
+"minecraft:physics": {}
+```
+
+shulker
+
+```json
+"minecraft:physics": {}
+```
+
+shulker_bullet
+
+```json
+"minecraft:physics": {
+ "has_collision": false
+}
+```
+
+silverfish
+
+```json
+"minecraft:physics": {}
+```
+
+skeleton
+
+```json
+"minecraft:physics": {}
+```
+
+skeleton_horse
+
+```json
+"minecraft:physics": {}
+```
+
+slime
+
+```json
+"minecraft:physics": {}
+```
+
+small_fireball
+
+```json
+"minecraft:physics": {}
+```
+
+sniffer
+
+```json
+"minecraft:physics": {}
+```
+
+snowball
+
+```json
+"minecraft:physics": {}
+```
+
+snow_golem
+
+```json
+"minecraft:physics": {}
+```
+
+spider
+
+```json
+"minecraft:physics": {}
+```
+
+splash_potion
+
+```json
+"minecraft:physics": {}
+```
+
+squid
+
+```json
+"minecraft:physics": {}
+```
+
+stray
+
+```json
+"minecraft:physics": {}
+```
+
+strider
+
+```json
+"minecraft:physics": {}
+```
+
+tadpole
+
+```json
+"minecraft:physics": {}
+```
+
+thrown_trident
+
+```json
+"minecraft:physics": {}
+```
+
+tnt
+
+```json
+"minecraft:physics": {}
+```
+
+tnt_minecart
+
+```json
+"minecraft:physics": {}
+```
+
+trader_llama
+
+```json
+"minecraft:physics": {}
+```
+
+tripod_camera
+
+```json
+"minecraft:physics": {}
+```
+
+tropicalfish
+
+```json
+"minecraft:physics": {
+ "has_gravity": false
+}
+```
+
+turtle
+
+```json
+"minecraft:physics": {}
+```
+
+vex
+
+```json
+"minecraft:physics": {
+ "has_gravity": false,
+ "has_collision": false
+}
+```
+
+villager
+
+```json
+"minecraft:physics": {}
+```
+
+villager_v2
+
+```json
+"minecraft:physics": {}
+```
+
+vindicator
+
+```json
+"minecraft:physics": {}
+```
+
+wandering_trader
+
+```json
+"minecraft:physics": {}
+```
+
+warden
+
+```json
+"minecraft:physics": {}
+```
+
+witch
+
+```json
+"minecraft:physics": {}
+```
+
+wither
+
+```json
+"minecraft:physics": {}
+```
+
+wither_skeleton
+
+```json
+"minecraft:physics": {}
+```
+
+wither_skull
+
+```json
+"minecraft:physics": {}
+```
+
+wither_skull_dangerous
+
+```json
+"minecraft:physics": {}
+```
+
+wolf
+
+```json
+"minecraft:physics": {}
+```
+
+xp_bottle
+
+```json
+"minecraft:physics": {}
+```
+
+xp_orb
+
+```json
+"minecraft:physics": {}
+```
+
+zoglin
+
+```json
+"minecraft:physics": {}
+```
+
+zombie
+
+```json
+"minecraft:physics": {}
+```
+
+zombie_horse
+
+```json
+"minecraft:physics": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:physics": {}
+```
+
+zombie_villager
+
+```json
+"minecraft:physics": {}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:physics": {}
+```
+
+## player.exhaustion
+
+player
+
+```json
+"minecraft:player.exhaustion": {
+ "value": 0,
+ "max": 20
+}
+```
+
+## player.experience
+
+player
+
+```json
+"minecraft:player.experience": {
+ "value": 0,
+ "max": 1
+}
+```
+
+## player.level
+
+player
+
+```json
+"minecraft:player.level": {
+ "value": 0,
+ "max": 24791
+}
+```
+
+## player.saturation
+
+player
+
+```json
+"minecraft:player.saturation": {
+ "value": 5,
+ "max": 20
+}
+```
+
+## preferred_path
+
+iron_golem
+
+```json
+"minecraft:preferred_path": {
+ "max_fall_blocks": 1,
+ "jump_cost": 5,
+ "default_block_cost": 1.5,
+ "preferred_path_blocks": [
+ {
+ "cost": 0,
+ "blocks": [
+ "grass_path"
+ ]
+ },
+ {
+ "cost": 1,
+ "blocks": [
+ "cobblestone",
+ "stone",
+ "stonebrick",
+ "sandstone",
+ "mossy_cobblestone",
+ "stone_slab",
+ "stone_slab2",
+ "stone_slab3",
+ "stone_slab4",
+ "double_stone_slab",
+ "double_stone_slab2",
+ "double_stone_slab3",
+ "double_stone_slab4",
+ "wooden_slab",
+ "double_wooden_slab",
+ "planks",
+ "brick_block",
+ "nether_brick",
+ "red_nether_brick",
+ "end_bricks",
+ "red_sandstone",
+ "stained_glass",
+ "glass",
+ "glowstone",
+ "prismarine",
+ "emerald_block",
+ "diamond_block",
+ "lapis_block",
+ "gold_block",
+ "redstone_block",
+ "purple_glazed_terracotta",
+ "white_glazed_terracotta",
+ "orange_glazed_terracotta",
+ "magenta_glazed_terracotta",
+ "light_blue_glazed_terracotta",
+ "yellow_glazed_terracotta",
+ "lime_glazed_terracotta",
+ "pink_glazed_terracotta",
+ "gray_glazed_terracotta",
+ "silver_glazed_terracotta",
+ "cyan_glazed_terracotta",
+ "blue_glazed_terracotta",
+ "brown_glazed_terracotta",
+ "green_glazed_terracotta",
+ "red_glazed_terracotta",
+ "black_glazed_terracotta"
+ ]
+ },
+ {
+ "cost": 50,
+ "blocks": [
+ "bed",
+ "lectern",
+ "composter",
+ "grindstone",
+ "blast_furnace",
+ "smoker",
+ "fletching_table",
+ "cartography_table",
+ "brewing_stand",
+ "smithing_table",
+ "cauldron",
+ "barrel",
+ "loom",
+ "stonecutter"
+ ]
+ }
+ ]
+}
+```
+
+villager_v2
+
+```json
+"minecraft:preferred_path": {
+ "max_fall_blocks": 1,
+ "jump_cost": 5,
+ "default_block_cost": 1.5,
+ "preferred_path_blocks": [
+ {
+ "cost": 0,
+ "blocks": [
+ "grass_path"
+ ]
+ },
+ {
+ "cost": 1,
+ "blocks": [
+ "cobblestone",
+ "stone",
+ "stonebrick",
+ "sandstone",
+ "mossy_cobblestone",
+ "stone_slab",
+ "stone_slab2",
+ "stone_slab3",
+ "stone_slab4",
+ "double_stone_slab",
+ "double_stone_slab2",
+ "double_stone_slab3",
+ "double_stone_slab4",
+ "wooden_slab",
+ "double_wooden_slab",
+ "planks",
+ "brick_block",
+ "nether_brick",
+ "red_nether_brick",
+ "end_bricks",
+ "red_sandstone",
+ "stained_glass",
+ "glass",
+ "glowstone",
+ "prismarine",
+ "emerald_block",
+ "diamond_block",
+ "lapis_block",
+ "gold_block",
+ "redstone_block",
+ "purple_glazed_terracotta",
+ "white_glazed_terracotta",
+ "orange_glazed_terracotta",
+ "magenta_glazed_terracotta",
+ "light_blue_glazed_terracotta",
+ "yellow_glazed_terracotta",
+ "lime_glazed_terracotta",
+ "pink_glazed_terracotta",
+ "gray_glazed_terracotta",
+ "silver_glazed_terracotta",
+ "cyan_glazed_terracotta",
+ "blue_glazed_terracotta",
+ "brown_glazed_terracotta",
+ "green_glazed_terracotta",
+ "red_glazed_terracotta",
+ "black_glazed_terracotta"
+ ]
+ },
+ {
+ "cost": 50,
+ "blocks": [
+ "bed",
+ "lectern",
+ "composter",
+ "grindstone",
+ "blast_furnace",
+ "smoker",
+ "fletching_table",
+ "cartography_table",
+ "brewing_stand",
+ "smithing_table",
+ "cauldron",
+ "barrel",
+ "loom",
+ "stonecutter"
+ ]
+ }
+ ]
+}
+```
+
+```json
+"minecraft:preferred_path": {
+ "max_fall_blocks": 1,
+ "jump_cost": 20,
+ "default_block_cost": 3,
+ "preferred_path_blocks": [
+ {
+ "cost": 0,
+ "blocks": [
+ "grass_path"
+ ]
+ },
+ {
+ "cost": 1,
+ "blocks": [
+ "cobblestone",
+ "stone",
+ "stonebrick",
+ "sandstone",
+ "mossy_cobblestone",
+ "stone_slab",
+ "stone_slab2",
+ "stone_slab3",
+ "stone_slab4",
+ "double_stone_slab",
+ "double_stone_slab2",
+ "double_stone_slab3",
+ "double_stone_slab4",
+ "wooden_slab",
+ "double_wooden_slab",
+ "planks",
+ "brick_block",
+ "nether_brick",
+ "red_nether_brick",
+ "end_bricks",
+ "red_sandstone",
+ "stained_glass",
+ "glass",
+ "glowstone",
+ "prismarine",
+ "emerald_block",
+ "diamond_block",
+ "lapis_block",
+ "gold_block",
+ "redstone_block",
+ "purple_glazed_terracotta",
+ "white_glazed_terracotta",
+ "orange_glazed_terracotta",
+ "magenta_glazed_terracotta",
+ "light_blue_glazed_terracotta",
+ "yellow_glazed_terracotta",
+ "lime_glazed_terracotta",
+ "pink_glazed_terracotta",
+ "gray_glazed_terracotta",
+ "silver_glazed_terracotta",
+ "cyan_glazed_terracotta",
+ "blue_glazed_terracotta",
+ "brown_glazed_terracotta",
+ "green_glazed_terracotta",
+ "red_glazed_terracotta",
+ "black_glazed_terracotta"
+ ]
+ },
+ {
+ "cost": 50,
+ "blocks": [
+ "bed",
+ "lectern",
+ "composter",
+ "grindstone",
+ "blast_furnace",
+ "smoker",
+ "fletching_table",
+ "cartography_table",
+ "brewing_stand",
+ "smithing_table",
+ "cauldron",
+ "barrel",
+ "loom",
+ "stonecutter"
+ ]
+ }
+ ]
+}
+```
+
+warden
+
+```json
+"minecraft:preferred_path": {
+ "max_fall_blocks": 20
+}
+```
+
+## projectile
+
+arrow
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": [
+ 1,
+ 4
+ ],
+ "knockback": true,
+ "semi_random_diff_damage": false,
+ "destroy_on_hit": true
+ },
+ "stick_in_ground": {
+ "shake_time": 0.35
+ },
+ "arrow_effect": {}
+ },
+ "hit_sound": "bow.hit",
+ "power": 1.6,
+ "gravity": 0.05,
+ "uncertainty_base": 16,
+ "uncertainty_multiplier": 4,
+ "anchor": 1,
+ "should_bounce": true,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ]
+}
+```
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": [
+ 1,
+ 5
+ ],
+ "knockback": true,
+ "semi_random_diff_damage": false,
+ "destroy_on_hit": true
+ },
+ "stick_in_ground": {
+ "shake_time": 0.35
+ },
+ "arrow_effect": {}
+ },
+ "hit_sound": "bow.hit",
+ "power": 1.6,
+ "gravity": 0.05,
+ "uncertainty_base": 16,
+ "uncertainty_multiplier": 4,
+ "anchor": 1,
+ "should_bounce": true,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ]
+}
+```
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 1,
+ "knockback": true,
+ "semi_random_diff_damage": true,
+ "destroy_on_hit": true,
+ "max_critical_damage": 10,
+ "min_critical_damage": 9,
+ "power_multiplier": 0.97
+ },
+ "stick_in_ground": {
+ "shake_time": 0.35
+ },
+ "arrow_effect": {}
+ },
+ "hit_sound": "bow.hit",
+ "power": 5.0,
+ "gravity": 0.05,
+ "uncertainty_base": 1,
+ "uncertainty_multiplier": 0,
+ "anchor": 1,
+ "should_bounce": true,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ]
+}
+```
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": [
+ 3,
+ 6
+ ],
+ "knockback": true,
+ "semi_random_diff_damage": false,
+ "destroy_on_hit": true
+ },
+ "stick_in_ground": {
+ "shake_time": 0.35
+ },
+ "arrow_effect": {}
+ },
+ "hit_sound": "bow.hit",
+ "power": 1.6,
+ "gravity": 0.05,
+ "uncertainty_base": 16,
+ "uncertainty_multiplier": 4,
+ "anchor": 1,
+ "should_bounce": true,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ]
+}
+```
+
+dragon_fireball
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "spawn_aoe_cloud": {
+ "radius": 6.0,
+ "radius_on_use": 0,
+ "potion": 23,
+ "particle": "dragonbreath",
+ "duration": 120,
+ "color": [
+ 220,
+ 0,
+ 239
+ ],
+ "affect_owner": false,
+ "reapplication_delay": 20
+ },
+ "remove_on_hit": {}
+ },
+ "power": 1.3,
+ "gravity": 0.0,
+ "inertia": 1,
+ "anchor": 2,
+ "offset": [
+ 0,
+ 0.5,
+ 0
+ ],
+ "semi_random_diff_damage": true,
+ "uncertainty_base": 10.0,
+ "reflect_on_hurt": true,
+ "hit_sound": "explode"
+}
+```
+
+egg
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 0,
+ "knockback": true,
+ "destroy_on_hit": true
+ },
+ "spawn_chance": {
+ "first_spawn_chance": 8,
+ "second_spawn_chance": 32,
+ "first_spawn_count": 1,
+ "second_spawn_count": 4,
+ "spawn_definition": "minecraft:chicken",
+ "spawn_baby": true
+ },
+ "remove_on_hit": {},
+ "particle_on_hit": {
+ "particle_type": "iconcrack",
+ "num_particles": 6,
+ "on_entity_hit": true,
+ "on_other_hit": true
+ }
+ },
+ "power": 1.5,
+ "gravity": 0.03,
+ "angle_offset": 0.0
+}
+```
+
+ender_pearl
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "teleport_owner": {},
+ "spawn_chance": {
+ "first_spawn_percent_chance": 5.0,
+ "first_spawn_count": 1,
+ "spawn_definition": "minecraft:endermite"
+ },
+ "remove_on_hit": {}
+ },
+ "power": 1.5,
+ "gravity": 0.025,
+ "angle_offset": 0.0,
+ "inertia": 1,
+ "liquid_inertia": 1
+}
+```
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "teleport_owner": {},
+ "remove_on_hit": {}
+ },
+ "power": 1.5,
+ "gravity": 0.025,
+ "angle_offset": 0.0,
+ "inertia": 1,
+ "liquid_inertia": 1
+}
+```
+
+fireball
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 6,
+ "knockback": false,
+ "semi_random_diff_damage": false
+ },
+ "definition_event": {
+ "affect_projectile": true,
+ "event_trigger": {
+ "event": "minecraft:explode",
+ "target": "self"
+ }
+ }
+ },
+ "power": 1.6,
+ "gravity": 0.0,
+ "inertia": 1,
+ "liquid_inertia": 1,
+ "uncertainty_base": 0,
+ "uncertainty_multiplier": 0,
+ "anchor": 2,
+ "offset": [
+ 0,
+ -1.5,
+ 0
+ ],
+ "reflect_on_hurt": true,
+ "catch_fire": true
+}
+```
+
+fishing_hook
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "stick_in_ground": {}
+ }
+}
+```
+
+lingering_potion
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "douse_fire": {},
+ "spawn_aoe_cloud": {
+ "radius": 3.0,
+ "radius_on_use": -0.5,
+ "duration": 30,
+ "reapplication_delay": 40
+ },
+ "remove_on_hit": {}
+ },
+ "power": 0.5,
+ "gravity": 0.05,
+ "angle_offset": -20.0,
+ "hit_sound": "glass"
+}
+```
+
+llama_spit
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 1,
+ "knockback": false
+ },
+ "remove_on_hit": {}
+ },
+ "power": 1.5,
+ "gravity": 0.06,
+ "inertia": 1,
+ "uncertainty_base": 10,
+ "uncertainty_multiplier": 4,
+ "anchor": 1,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ],
+ "reflect_on_hurt": true
+}
+```
+
+shulker_bullet
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 4,
+ "knockback": true,
+ "should_bounce": true
+ },
+ "mob_effect": {
+ "effect": "levitation",
+ "durationeasy": 200,
+ "durationnormal": 200,
+ "durationhard": 200,
+ "amplifier": 0
+ },
+ "remove_on_hit": {},
+ "particle_on_hit": {
+ "particle_type": "largeexplode",
+ "on_other_hit": true
+ }
+ },
+ "hit_sound": "bullet.hit",
+ "destroyOnHurt": true,
+ "crit_particle_on_hurt": true,
+ "power": 1.6,
+ "gravity": 0.05,
+ "uncertainty_base": 16,
+ "uncertainty_multiplier": 4,
+ "anchor": 1,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ],
+ "homing": true
+}
+```
+
+small_fireball
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 5,
+ "knockback": true,
+ "catch_fire": true,
+ "semi_random_diff_damage": false
+ },
+ "catch_fire": {
+ "fire_affected_by_griefing": true
+ },
+ "remove_on_hit": {}
+ },
+ "power": 1.3,
+ "gravity": 0.0,
+ "inertia": 1,
+ "liquid_inertia": 1,
+ "anchor": 2,
+ "offset": [
+ 0,
+ 0.5,
+ 0
+ ],
+ "semi_random_diff_damage": true,
+ "uncertainty_base": 10.0,
+ "reflect_on_hurt": true
+}
+```
+
+snowball
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "filter": "blaze",
+ "damage": 3,
+ "knockback": true
+ },
+ "remove_on_hit": {},
+ "particle_on_hit": {
+ "particle_type": "snowballpoof",
+ "num_particles": 6,
+ "on_entity_hit": true,
+ "on_other_hit": true
+ }
+ },
+ "anchor": 1,
+ "power": 1.5,
+ "gravity": 0.03,
+ "angle_offset": 0.0,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ]
+}
+```
+
+splash_potion
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "douse_fire": {},
+ "thrown_potion_effect": {},
+ "remove_on_hit": {}
+ },
+ "power": 0.5,
+ "gravity": 0.05,
+ "angle_offset": -20.0,
+ "hit_sound": "glass"
+}
+```
+
+thrown_trident
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "impact_damage": {
+ "damage": 8,
+ "knockback": true,
+ "semi_random_diff_damage": false,
+ "destroy_on_hit": false
+ },
+ "stick_in_ground": {
+ "shake_time": 0
+ }
+ },
+ "liquid_inertia": 0.99,
+ "hit_sound": "item.trident.hit",
+ "hit_ground_sound": "item.trident.hit_ground",
+ "power": 4,
+ "gravity": 0.1,
+ "uncertainty_base": 1,
+ "uncertainty_multiplier": 0,
+ "stop_on_hurt": true,
+ "anchor": 1,
+ "should_bounce": true,
+ "multiple_targets": false,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ]
+}
+```
+
+wither_skull
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "definition_event": {
+ "affect_projectile": true,
+ "event_trigger": {
+ "event": "minecraft:explode",
+ "target": "self"
+ }
+ },
+ "mob_effect": {
+ "effect": "wither",
+ "durationeasy": 0,
+ "durationnormal": 200,
+ "durationhard": 800,
+ "amplifier": 1
+ }
+ },
+ "power": 1.2,
+ "gravity": 0.0,
+ "uncertainty_base": 7.5,
+ "uncertainty_multiplier": 1,
+ "shoot_sound": "bow",
+ "hit_sound": "bow.hit",
+ "anchor": 1,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ],
+ "inertia": 1.0,
+ "liquid_inertia": 1.0,
+ "shoot_target": false
+}
+```
+
+wither_skull_dangerous
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "definition_event": {
+ "affect_projectile": true,
+ "event_trigger": {
+ "event": "minecraft:explode",
+ "target": "self"
+ }
+ },
+ "mob_effect": {
+ "effect": "wither",
+ "durationeasy": 0,
+ "durationnormal": 200,
+ "durationhard": 800,
+ "amplifier": 1
+ }
+ },
+ "power": 0.6,
+ "gravity": 0.0,
+ "uncertainty_base": 7.5,
+ "uncertainty_multiplier": 1,
+ "shoot_sound": "bow",
+ "hit_sound": "bow.hit",
+ "anchor": 1,
+ "offset": [
+ 0,
+ -0.1,
+ 0
+ ],
+ "is_dangerous": true,
+ "inertia": 1.0,
+ "liquid_inertia": 1.0,
+ "shoot_target": false,
+ "reflect_on_hurt": true
+}
+```
+
+xp_bottle
+
+```json
+"minecraft:projectile": {
+ "on_hit": {
+ "grant_xp": {
+ "minXP": 3,
+ "maxXP": 11
+ },
+ "remove_on_hit": {}
+ },
+ "power": 0.5,
+ "gravity": 0.05,
+ "angle_offset": -20.0,
+ "hit_sound": "glass"
+}
+```
+
+## pushable
+
+allay
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+armor_stand
+
+```json
+"minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": true
+}
+```
+
+arrow
+
+```json
+"minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": true
+}
+```
+
+axolotl
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+bee
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+blaze
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+boat
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+camel
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+```json
+"minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": true
+}
+```
+
+cat
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+cave_spider
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+chest_boat
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+chest_minecart
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+chicken
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+command_block_minecart
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+cow
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+creeper
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+dolphin
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+donkey
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+drowned
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+egg
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+enderman
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+endermite
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+ender_crystal
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+ender_pearl
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+eye_of_ender_signal
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+fireball
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+fireworks_rocket
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+cod
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+fishing_hook
+
+```json
+"minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": true
+}
+```
+
+fox
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+frog
+
+```json
+"minecraft:pushable": {}
+```
+
+ghast
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+glow_squid
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+goat
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+guardian
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+hoglin
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+hopper_minecart
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+horse
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+husk
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+iron_golem
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+lingering_potion
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+llama
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+llama_spit
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+magma_cube
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+minecart
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+mooshroom
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+mule
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+ocelot
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+panda
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+parrot
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+phantom
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+pig
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+piglin
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+pillager
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+player
+
+```json
+"minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": true
+}
+```
+
+polar_bear
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+pufferfish
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+rabbit
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+ravager
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+salmon
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+sheep
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+silverfish
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+skeleton
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+slime
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+small_fireball
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+sniffer
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+snowball
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+snow_golem
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+spider
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+splash_potion
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+squid
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+stray
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+strider
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+tadpole
+
+```json
+"minecraft:pushable": {}
+```
+
+thrown_trident
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+tnt
+
+```json
+"minecraft:pushable": {
+ "is_pushable": false,
+ "is_pushable_by_piston": true
+}
+```
+
+tnt_minecart
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+trader_llama
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+turtle
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+villager
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+villager_v2
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+vindicator
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+warden
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+witch
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+wither
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+wither_skull
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+wither_skull_dangerous
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+wolf
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+xp_bottle
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+xp_orb
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+zoglin
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+zombie
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:pushable": {
+ "is_pushable": true,
+ "is_pushable_by_piston": true
+}
+```
+
+## raid_trigger
+
+player
+
+```json
+"minecraft:raid_trigger": {
+ "triggered_event": {
+ "event": "minecraft:remove_raid_trigger",
+ "target": "self"
+ }
+}
+```
+
+## rail_movement
+
+chest_minecart
+
+```json
+"minecraft:rail_movement": {}
+```
+
+command_block_minecart
+
+```json
+"minecraft:rail_movement": {}
+```
+
+hopper_minecart
+
+```json
+"minecraft:rail_movement": {}
+```
+
+minecart
+
+```json
+"minecraft:rail_movement": {}
+```
+
+tnt_minecart
+
+```json
+"minecraft:rail_movement": {}
+```
+
+## rail_sensor
+
+command_block_minecart
+
+```json
+"minecraft:rail_sensor": {
+ "check_block_types": true,
+ "eject_on_activate": false,
+ "eject_on_deactivate": false,
+ "tick_command_block_on_activate": true,
+ "tick_command_block_on_deactivate": false,
+ "on_deactivate": {
+ "event": "minecraft:command_block_deactivate"
+ }
+}
+```
+
+```json
+"minecraft:rail_sensor": {
+ "check_block_types": false,
+ "eject_on_activate": false,
+ "eject_on_deactivate": false,
+ "tick_command_block_on_activate": true,
+ "tick_command_block_on_deactivate": false,
+ "on_activate": {
+ "event": "minecraft:command_block_activate"
+ }
+}
+```
+
+hopper_minecart
+
+```json
+"minecraft:rail_sensor": {
+ "on_activate": {
+ "event": "minecraft:hopper_deactivate"
+ }
+}
+```
+
+```json
+"minecraft:rail_sensor": {
+ "on_deactivate": {
+ "event": "minecraft:hopper_activate"
+ }
+}
+```
+
+minecart
+
+```json
+"minecraft:rail_sensor": {
+ "eject_on_activate": true
+}
+```
+
+tnt_minecart
+
+```json
+"minecraft:rail_sensor": {}
+```
+
+```json
+"minecraft:rail_sensor": {}
+```
+
+```json
+"minecraft:rail_sensor": {
+ "on_activate": {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_game_rule",
+ "domain": "tntexplodes",
+ "operator": "==",
+ "value": true
+ }
+ ]
+ },
+ "event": "minecraft:on_prime"
+ }
+}
+```
+
+## ravager_blocked
+
+ravager
+
+```json
+"minecraft:ravager_blocked": {
+ "knockback_strength": 3.0,
+ "reaction_choices": [
+ {
+ "weight": 1,
+ "value": {
+ "event": "minecraft:become_stunned",
+ "target": "self"
+ }
+ },
+ {
+ "weight": 1
+ }
+ ]
+}
+```
+
+## rideable
+
+boat
+
+```json
+"minecraft:rideable": {
+ "seat_count": 2,
+ "passenger_max_width": 1.375,
+ "interact_text": "action.interact.ride.boat",
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.0,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 1,
+ "rotate_rider_by": -90,
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ 0.2,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "query.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ -0.6,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "query.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ }
+ ]
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 2,
+ "passenger_max_width": 1.375,
+ "interact_text": "action.interact.ride.boat",
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.0,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 1,
+ "rotate_rider_by": -90,
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ 0.2,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "query.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ -0.6,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "query.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ }
+ ]
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 2,
+ "passenger_max_width": 1.375,
+ "interact_text": "action.interact.ride.boat",
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.0,
+ 0.1,
+ 0.0
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 1,
+ "rotate_rider_by": -90,
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ 0.2,
+ 0.1,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "query.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ },
+ {
+ "position": [
+ -0.6,
+ 0.1,
+ 0.0
+ ],
+ "min_rider_count": 2,
+ "max_rider_count": 2,
+ "rotate_rider_by": "query.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ }
+ ]
+}
+```
+
+camel
+
+```json
+"minecraft:rideable": {
+ "seat_count": 2,
+ "crouching_skip_interact": true,
+ "pull_in_entities": true,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": [
+ {
+ "min_rider_count": 0,
+ "max_rider_count": 2,
+ "position": [
+ 0.0,
+ 1.905,
+ 0.5
+ ]
+ },
+ {
+ "min_rider_count": 1,
+ "max_rider_count": 2,
+ "position": [
+ 0.0,
+ 1.905,
+ -0.5
+ ]
+ }
+ ]
+}
+```
+
+cat
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.35,
+ 0.0
+ ]
+ }
+}
+```
+
+cave_spider
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.3,
+ 0.0
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "skeleton"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.3,
+ -0.1
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "skeleton"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.3,
+ -0.1
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "skeleton"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.25,
+ -0.1
+ ]
+ }
+}
+```
+
+chest_boat
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "passenger_max_width": 1.375,
+ "interact_text": "action.interact.ride.boat",
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.2,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 1,
+ "rotate_rider_by": "query.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ }
+ ]
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "passenger_max_width": 1.375,
+ "interact_text": "action.interact.ride.boat",
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.2,
+ -0.2,
+ 0.0
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 1,
+ "rotate_rider_by": "query.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ }
+ ]
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "passenger_max_width": 1.375,
+ "interact_text": "action.interact.ride.boat",
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.2,
+ 0.1,
+ 0.0
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 1,
+ "rotate_rider_by": "query.has_any_family('blaze', 'creeper', 'enderman', 'illager', 'magmacube', 'piglin', 'player', 'skeleton', 'slime', 'villager', 'wandering_trader', 'witch', 'zombie', 'zombie_pigman') ? -90 : 0",
+ "lock_rider_rotation": 90
+ }
+ ]
+}
+```
+
+chicken
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.4,
+ 0.0
+ ]
+ }
+}
+```
+
+cow
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 1.105,
+ 0.0
+ ]
+ }
+}
+```
+
+donkey
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "player",
+ "zombie"
+ ],
+ "interact_text": "action.interact.mount",
+ "seats": {
+ "position": [
+ 0.0,
+ 0.925,
+ -0.2
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "crouching_skip_interact": true,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": {
+ "position": [
+ 0.0,
+ 0.925,
+ -0.2
+ ]
+ }
+}
+```
+
+hoglin
+
+```json
+"minecraft:rideable": {
+ "seat_count": 3,
+ "family_types": [
+ "piglin"
+ ],
+ "seats": [
+ {
+ "position": [
+ 0.0,
+ 0.9,
+ -0.3
+ ],
+ "lock_rider_rotation": 0
+ },
+ {
+ "position": [
+ 0.0,
+ 2.4,
+ -0.3
+ ],
+ "lock_rider_rotation": 0
+ },
+ {
+ "position": [
+ 0.0,
+ 3.9,
+ -0.3
+ ],
+ "lock_rider_rotation": 0
+ }
+ ]
+}
+```
+
+horse
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "player",
+ "zombie"
+ ],
+ "interact_text": "action.interact.mount",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.1,
+ -0.2
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "crouching_skip_interact": true,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.1,
+ -0.2
+ ]
+ }
+}
+```
+
+husk
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 1.1,
+ -0.35
+ ],
+ "lock_rider_rotation": 0
+ }
+}
+```
+
+llama
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.mount",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.17,
+ -0.3
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "crouching_skip_interact": true,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.17,
+ -0.3
+ ]
+ }
+}
+```
+
+minecart
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "interact_text": "action.interact.ride.minecart",
+ "pull_in_entities": true,
+ "seats": {
+ "position": [
+ 0.0,
+ -0.2,
+ 0.0
+ ]
+ }
+}
+```
+
+mooshroom
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 1.105,
+ 0.0
+ ]
+ }
+}
+```
+
+mule
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "player",
+ "zombie"
+ ],
+ "interact_text": "action.interact.mount",
+ "seats": {
+ "position": [
+ 0.0,
+ 0.975,
+ -0.2
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "crouching_skip_interact": true,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": {
+ "position": [
+ 0.0,
+ 0.975,
+ -0.2
+ ]
+ }
+}
+```
+
+ocelot
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.35,
+ 0.0
+ ]
+ }
+}
+```
+
+panda
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 1.105,
+ 0.0
+ ]
+ }
+}
+```
+
+pig
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.63,
+ 0.0
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "interact_text": "action.interact.ride.horse",
+ "family_types": [
+ "player"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.63,
+ 0.0
+ ]
+ }
+}
+```
+
+player
+
+```json
+"minecraft:rideable": {
+ "seat_count": 2,
+ "family_types": [
+ "parrot_tame"
+ ],
+ "pull_in_entities": true,
+ "seats": [
+ {
+ "position": [
+ 0.4,
+ -0.2,
+ -0.1
+ ],
+ "min_rider_count": 0,
+ "max_rider_count": 0,
+ "lock_rider_rotation": 0
+ },
+ {
+ "position": [
+ -0.4,
+ -0.2,
+ -0.1
+ ],
+ "min_rider_count": 1,
+ "max_rider_count": 2,
+ "lock_rider_rotation": 0
+ }
+ ]
+}
+```
+
+ravager
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "pillager",
+ "vindicator",
+ "evocation_illager"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 2.1,
+ -0.3
+ ]
+ }
+}
+```
+
+sheep
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.9,
+ 0.0
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.975,
+ 0.0
+ ]
+ }
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "player",
+ "skeleton",
+ "zombie"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.2,
+ -0.2
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "player",
+ "skeleton",
+ "zombie"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.2,
+ -0.2
+ ]
+ }
+}
+```
+
+spider
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.54,
+ -0.1
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "skeleton"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.54,
+ 0.0
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "skeleton"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.54,
+ 0.0
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "skeleton"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.54,
+ 0.0
+ ]
+ }
+}
+```
+
+strider
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "crouching_skip_interact": true,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.ride.strider",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.6,
+ -0.2
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "crouching_skip_interact": true,
+ "family_types": [
+ "player",
+ "zombie_pigman"
+ ],
+ "interact_text": "action.interact.ride.strider",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.65,
+ -0.2
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "strider"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 1.6,
+ 0.0
+ ]
+ }
+}
+```
+
+trader_llama
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.mount",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.17,
+ -0.3
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "crouching_skip_interact": true,
+ "family_types": [
+ "player"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.17,
+ -0.3
+ ]
+ }
+}
+```
+
+wolf
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.675,
+ -0.1
+ ]
+ }
+}
+```
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 0.675,
+ -0.1
+ ]
+ }
+}
+```
+
+zombie
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 1.1,
+ -0.35
+ ],
+ "lock_rider_rotation": 0
+ }
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "interact_text": "action.interact.ride.horse",
+ "seats": {
+ "position": [
+ 0.0,
+ 1.2,
+ -0.2
+ ]
+ }
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 1.1,
+ -0.35
+ ],
+ "lock_rider_rotation": 0
+ }
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 1.1,
+ -0.35
+ ]
+ }
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:rideable": {
+ "seat_count": 1,
+ "family_types": [
+ "zombie"
+ ],
+ "seats": {
+ "position": [
+ 0.0,
+ 1.1,
+ -0.35
+ ]
+ }
+}
+```
+
+## scale
+
+axolotl
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+bee
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+camel
+
+```json
+"minecraft:scale": {
+ "value": 0.45
+}
+```
+
+cat
+
+```json
+"minecraft:scale": {
+ "value": 0.4
+}
+```
+
+```json
+"minecraft:scale": {
+ "value": 0.8
+}
+```
+
+chicken
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+cow
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+dolphin
+
+```json
+"minecraft:scale": {
+ "value": 0.65
+}
+```
+
+drowned
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+cod
+
+```json
+"minecraft:scale": {
+ "value": 1.0
+}
+```
+
+fox
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+glow_squid
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+goat
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+hoglin
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+husk
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+llama
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+mooshroom
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+ocelot
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+```json
+"minecraft:scale": {
+ "value": 1
+}
+```
+
+panda
+
+```json
+"minecraft:scale": {
+ "value": 1.0
+}
+```
+
+```json
+"minecraft:scale": {
+ "value": 0.4
+}
+```
+
+pig
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+piglin
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+polar_bear
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+pufferfish
+
+```json
+"minecraft:scale": {
+ "value": 1.2
+}
+```
+
+rabbit
+
+```json
+"minecraft:scale": {
+ "value": 0.6
+}
+```
+
+```json
+"minecraft:scale": {
+ "value": 0.4
+}
+```
+
+```json
+"minecraft:scale": {
+ "value": 0.6
+}
+```
+
+salmon
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+```json
+"minecraft:scale": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:scale": {
+ "value": 1.5
+}
+```
+
+sheep
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+sniffer
+
+```json
+"minecraft:scale": {
+ "value": 0.45
+}
+```
+
+squid
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+strider
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+trader_llama
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:scale": {
+ "value": 1.3
+}
+```
+
+turtle
+
+```json
+"minecraft:scale": {
+ "value": 0.16
+}
+```
+
+villager
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+villager_v2
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:scale": {
+ "value": 1.2
+}
+```
+
+wolf
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+zoglin
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+zombie
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:scale": {
+ "value": 0.5
+}
+```
+
+## scale_by_age
+
+donkey
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+horse
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+mule
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:scale_by_age": {
+ "start_scale": 0.5,
+ "end_scale": 1.0
+}
+```
+
+## scheduler
+
+fox
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 0,
+ "scheduled_events": [
+ {
+ "filters": [
+ {
+ "test": "is_sleeping",
+ "value": true
+ }
+ ],
+ "event": "minecraft:ambient_sleep"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_daytime",
+ "value": false
+ },
+ {
+ "test": "distance_to_nearest_player",
+ "operator": ">",
+ "value": 16
+ }
+ ]
+ },
+ "event": "minecraft:ambient_night"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "is_sleeping",
+ "value": false
+ },
+ {
+ "any_of": [
+ {
+ "test": "is_daytime",
+ "value": true
+ },
+ {
+ "test": "distance_to_nearest_player",
+ "operator": "<=",
+ "value": 16
+ }
+ ]
+ }
+ ]
+ },
+ "event": "minecraft:ambient_normal"
+ }
+ ]
+}
+```
+
+villager_v2
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 8000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_pro_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 8000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 10000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_gather_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 10000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 11000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_pro_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 11000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 8000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_wander_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 8000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 10000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_gather_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 10000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 11000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_wander_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 11000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 11000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_play_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 11000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 2000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 13000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_wander_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 13000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 14000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 14000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 2000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 8000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_fisher"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 8000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 10000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_gather_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 10000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 11000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_fisher"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 11000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 8000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_librarian"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 8000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 10000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_gather_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 10000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 11000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_librarian"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 11000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:scheduler": {
+ "min_delay_secs": 0,
+ "max_delay_secs": 10,
+ "scheduled_events": [
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 0
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 8000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_farmer"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 8000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 10000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_gather_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 10000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 11000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_work_farmer"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 11000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 12000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_home_villager"
+ },
+ {
+ "filters": {
+ "all_of": [
+ {
+ "test": "hourly_clock_time",
+ "operator": ">=",
+ "value": 12000
+ },
+ {
+ "test": "hourly_clock_time",
+ "operator": "<",
+ "value": 24000
+ }
+ ]
+ },
+ "event": "minecraft:schedule_bed_villager"
+ }
+ ]
+}
+```
+
+## shareables
+
+drowned
+
+```json
+"minecraft:shareables": {
+ "singular_pickup": true,
+ "items": [
+ {
+ "item": "minecraft:nautilus_shell",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:trident",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+fox
+
+```json
+"minecraft:shareables": {
+ "all_items": true,
+ "all_items_max_amount": 1,
+ "items": [
+ {
+ "item": "minecraft:apple",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:appleEnchanted",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:baked_potato",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:beef",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:beetroot",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:beetroot_soup",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:bread",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:carrot",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:chicken",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:chorus_fruit",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:clownfish",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_beef",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_chicken",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_fish",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_porkchop",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_rabbit",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cooked_salmon",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:cookie",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:dried_kelp",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:fish",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:golden_apple",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:golden_carrot",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:melon",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:mushroom_stew",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:muttonCooked",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:muttonRaw",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:poisonous_potato",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:porkchop",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:potato",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:pufferfish",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:pumpkin_pie",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:rabbit",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:rabbit_stew",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:rotten_flesh",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:salmon",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:spider_eye",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:sweet_berries",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:glow_berries",
+ "priority": 0,
+ "max_amount": 1
+ },
+ {
+ "item": "minecraft:suspicious_stew",
+ "priority": 0,
+ "max_amount": 1
+ }
+ ]
+}
+```
+
+husk
+
+```json
+"minecraft:shareables": {
+ "singular_pickup": true,
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:golden_sword",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_axe",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_hoe",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_pickaxe",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_shovel",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_rail",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_apple",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:appleEnchanted",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:golden_carrot",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:gold_block",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:gold_nugget",
+ "priority": 2,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:raw_gold",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:gold_ore",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:nether_gold_ore",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:deepslate_gold_ore",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:raw_gold_block",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:gilded_blackstone",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:horsearmorgold",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:crossbow",
+ "priority": 2
+ },
+ {
+ "item": "minecraft:porkchop",
+ "consume_item": true,
+ "priority": 3,
+ "max_amount": 64
+ },
+ {
+ "item": "minecraft:cooked_porkchop",
+ "consume_item": true,
+ "priority": 3,
+ "max_amount": 64
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:2",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:3",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:4",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:skull:5",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 8
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:elytra",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:bell",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:clock",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:speckled_melon",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:light_weighted_pressure_plate",
+ "priority": 2,
+ "admire": true,
+ "pickup_limit": 1,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_sword",
+ "priority": 3
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "priority": 4
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "priority": 5
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "priority": 6
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:shield",
+ "priority": 7
+ },
+ {
+ "item": "minecraft:gold_ingot",
+ "priority": 1,
+ "pickup_limit": 1,
+ "admire": true,
+ "barter": true
+ }
+ ]
+}
+```
+
+pillager
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:banner:15",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ }
+ ]
+}
+```
+
+skeleton
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:bow",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+stray
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:bow",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+villager
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:bread",
+ "want_amount": 3,
+ "surplus_amount": 6,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:carrot",
+ "want_amount": 60,
+ "surplus_amount": 4,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:potato",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:beetroot",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:wheat_seeds",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:beetroot_seeds",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:wheat",
+ "want_amount": 45,
+ "surplus_amount": 18,
+ "craft_into": "minecraft:bread",
+ "stored_in_inventory": true
+ }
+ ]
+}
+```
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:bread",
+ "want_amount": 3,
+ "surplus_amount": 6,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:carrot",
+ "want_amount": 12,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:potato",
+ "want_amount": 12,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:beetroot",
+ "want_amount": 12,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ }
+ ]
+}
+```
+
+villager_v2
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:bread",
+ "want_amount": 3,
+ "surplus_amount": 6,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:carrot",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:potato",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:beetroot",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:wheat_seeds",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:beetroot_seeds",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:torchflower_seeds",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:pitcher_pod",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:bone_meal",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:wheat",
+ "want_amount": 45,
+ "surplus_amount": 18,
+ "craft_into": "minecraft:bread",
+ "stored_in_inventory": true
+ }
+ ]
+}
+```
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:bread",
+ "want_amount": 3,
+ "surplus_amount": 6,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:carrot",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:potato",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:beetroot",
+ "want_amount": 60,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:wheat_seeds",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:beetroot_seeds",
+ "want_amount": 64,
+ "surplus_amount": 64,
+ "stored_in_inventory": true,
+ "pickup_only": true
+ },
+ {
+ "item": "minecraft:wheat",
+ "want_amount": 45,
+ "surplus_amount": 18,
+ "craft_into": "minecraft:bread",
+ "stored_in_inventory": true
+ }
+ ]
+}
+```
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:bread",
+ "want_amount": 3,
+ "surplus_amount": 6,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:carrot",
+ "want_amount": 12,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:potato",
+ "want_amount": 12,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ },
+ {
+ "item": "minecraft:beetroot",
+ "want_amount": 12,
+ "surplus_amount": 24,
+ "stored_in_inventory": true
+ }
+ ]
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:wooden_shovel",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:stone_shovel",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:golden_shovel",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:iron_shovel",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:diamond_shovel",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:netherite_shovel",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:wooden_pickaxe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:stone_pickaxe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:golden_pickaxe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:iron_pickaxe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:diamond_pickaxe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:netherite_pickaxe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:wooden_axe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:stone_axe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:golden_axe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:iron_axe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:diamond_axe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:netherite_axe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:wooden_hoe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:stone_hoe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:golden_hoe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:iron_hoe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:diamond_hoe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:netherite_hoe",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+zombie
+
+```json
+"minecraft:shareables": {
+ "singular_pickup": true,
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:shareables": {
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:shareables": {
+ "singular_pickup": true,
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:shareables": {
+ "singular_pickup": true,
+ "items": [
+ {
+ "item": "minecraft:netherite_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:stone_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:wooden_sword",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:turtle_helmet",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 6
+ },
+ {
+ "item": "minecraft:skull:0",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:skull:1",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:carved_pumpkin",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 7
+ },
+ {
+ "item": "minecraft:netherite_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_chestplate",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_leggings",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ },
+ {
+ "item": "minecraft:netherite_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 0
+ },
+ {
+ "item": "minecraft:diamond_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 1
+ },
+ {
+ "item": "minecraft:iron_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 2
+ },
+ {
+ "item": "minecraft:chainmail_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 3
+ },
+ {
+ "item": "minecraft:golden_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 4
+ },
+ {
+ "item": "minecraft:leather_boots",
+ "want_amount": 1,
+ "surplus_amount": 1,
+ "priority": 5
+ }
+ ]
+}
+```
+
+## shooter
+
+blaze
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:small_fireball"
+}
+```
+
+drowned
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:thrown_trident"
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:shooter": {
+ "type": "dragonfireball",
+ "def": "minecraft:dragon_fireball"
+}
+```
+
+ghast
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:fireball"
+}
+```
+
+llama
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:llama_spit"
+}
+```
+
+piglin
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:arrow"
+}
+```
+
+pillager
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:arrow"
+}
+```
+
+shulker
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:shulker_bullet"
+}
+```
+
+skeleton
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:arrow"
+}
+```
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:arrow"
+}
+```
+
+snow_golem
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:snowball"
+}
+```
+
+stray
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:arrow",
+ "aux_val": 19
+}
+```
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:arrow",
+ "aux_val": 19
+}
+```
+
+trader_llama
+
+```json
+"minecraft:shooter": {
+ "def": "minecraft:llama_spit"
+}
+```
+
+witch
+
+```json
+"minecraft:shooter": {
+ "power": 0.75,
+ "def": "minecraft:splash_potion",
+ "aux_val": 23,
+ "sound": "throw",
+ "projectiles": [
+ {
+ "def": "minecraft:splash_potion",
+ "aux_val": 17,
+ "filters": {
+ "all_of": [
+ {
+ "test": "target_distance",
+ "subject": "self",
+ "value": 8.0,
+ "operator": ">="
+ },
+ {
+ "none_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "other",
+ "value": "slowness"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "def": "minecraft:splash_potion",
+ "aux_val": 25,
+ "filters": {
+ "all_of": [
+ {
+ "test": "actor_health",
+ "subject": "other",
+ "value": 8,
+ "operator": ">="
+ },
+ {
+ "none_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "other",
+ "value": "poison"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ {
+ "def": "minecraft:splash_potion",
+ "aux_val": 34,
+ "filters": {
+ "all_of": [
+ {
+ "test": "target_distance",
+ "subject": "self",
+ "value": 3,
+ "operator": "<="
+ },
+ {
+ "none_of": [
+ {
+ "test": "has_mob_effect",
+ "subject": "other",
+ "value": "weakness"
+ }
+ ]
+ }
+ ]
+ },
+ "chance": 0.25
+ }
+ ],
+ "magic": true
+}
+```
+
+## sittable
+
+cat
+
+```json
+"minecraft:sittable": {}
+```
+
+ocelot
+
+```json
+"minecraft:sittable": {}
+```
+
+parrot
+
+```json
+"minecraft:sittable": {}
+```
+
+wolf
+
+```json
+"minecraft:sittable": {}
+```
+
+## skin_id
+
+villager_v2
+
+```json
+"minecraft:skin_id": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 5
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:skin_id": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:skin_id": {
+ "value": 5
+}
+```
+
+## spawn_entity
+
+chicken
+
+```json
+"minecraft:spawn_entity": {
+ "entities": {
+ "min_wait_time": 300,
+ "max_wait_time": 600,
+ "spawn_sound": "plop",
+ "spawn_item": "egg",
+ "filters": {
+ "test": "rider_count",
+ "subject": "self",
+ "operator": "==",
+ "value": 0
+ }
+ }
+}
+```
+
+ocelot
+
+```json
+"minecraft:spawn_entity": {
+ "entities": {
+ "filters": [
+ {
+ "test": "random_chance",
+ "value": 7
+ }
+ ],
+ "min_wait_time": 0,
+ "max_wait_time": 0,
+ "num_to_spawn": 2,
+ "single_use": true,
+ "spawn_entity": "minecraft:ocelot",
+ "spawn_event": "minecraft:entity_born",
+ "spawn_method": "born",
+ "spawn_sound": ""
+ }
+}
+```
+
+sniffer
+
+```json
+"minecraft:spawn_entity": {
+ "entities": {
+ "min_wait_time": 0,
+ "max_wait_time": 0,
+ "spawn_sound": "plop",
+ "spawn_item": "sniffer_egg",
+ "spawn_item_event": {
+ "event": "on_egg_spawned",
+ "target": "self"
+ },
+ "single_use": true
+ }
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:spawn_entity": {
+ "entities": [
+ {
+ "min_wait_time": 0,
+ "max_wait_time": 0,
+ "spawn_entity": "trader_llama",
+ "spawn_event": "minecraft:from_wandering_trader",
+ "single_use": true,
+ "num_to_spawn": 2,
+ "should_leash": true
+ }
+ ]
+}
+```
+
+## spell_effects
+
+player
+
+```json
+"minecraft:spell_effects": {
+ "add_effects": [
+ {
+ "effect": "bad_omen",
+ "duration": 6000,
+ "visible": false,
+ "display_on_screen_animation": true
+ }
+ ]
+}
+```
+
+```json
+"minecraft:spell_effects": {}
+```
+
+```json
+"minecraft:spell_effects": {
+ "remove_effects": "bad_omen"
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:spell_effects": {
+ "add_effects": [
+ {
+ "effect": "strength",
+ "duration": 100
+ },
+ {
+ "effect": "heal",
+ "duration": 100
+ }
+ ],
+ "remove_effects": "weakness"
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:spell_effects": {
+ "add_effects": [
+ {
+ "effect": "strength",
+ "duration": 100
+ },
+ {
+ "effect": "heal",
+ "duration": 100
+ }
+ ],
+ "remove_effects": "weakness"
+}
+```
+
+## strength
+
+llama
+
+```json
+"minecraft:strength": {
+ "value": 1,
+ "max": 5
+}
+```
+
+```json
+"minecraft:strength": {
+ "value": 2,
+ "max": 5
+}
+```
+
+```json
+"minecraft:strength": {
+ "value": 3,
+ "max": 5
+}
+```
+
+```json
+"minecraft:strength": {
+ "value": 4,
+ "max": 5
+}
+```
+
+```json
+"minecraft:strength": {
+ "value": 5,
+ "max": 5
+}
+```
+
+trader_llama
+
+```json
+"minecraft:strength": {
+ "value": 1,
+ "max": 5
+}
+```
+
+```json
+"minecraft:strength": {
+ "value": 2,
+ "max": 5
+}
+```
+
+```json
+"minecraft:strength": {
+ "value": 3,
+ "max": 5
+}
+```
+
+```json
+"minecraft:strength": {
+ "value": 4,
+ "max": 5
+}
+```
+
+```json
+"minecraft:strength": {
+ "value": 5,
+ "max": 5
+}
+```
+
+## suspect_tracking
+
+warden
+
+```json
+"minecraft:suspect_tracking": {}
+```
+
+## tameable
+
+cat
+
+```json
+"minecraft:tameable": {
+ "probability": 0.33,
+ "tame_items": [
+ "fish",
+ "salmon"
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+parrot
+
+```json
+"minecraft:tameable": {
+ "probability": 0.33,
+ "tame_items": [
+ "wheat_seeds",
+ "pumpkin_seeds",
+ "melon_seeds",
+ "beetroot_seeds",
+ "pitcher_pod",
+ "torchflower_seeds"
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+wolf
+
+```json
+"minecraft:tameable": {
+ "probability": 0.33,
+ "tame_items": "bone",
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+## tamemount
+
+donkey
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 100,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "sugar",
+ "temper_mod": 3
+ },
+ {
+ "item": "apple",
+ "temper_mod": 3
+ },
+ {
+ "item": "golden_carrot",
+ "temper_mod": 5
+ },
+ {
+ "item": "golden_apple",
+ "temper_mod": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "temper_mod": 10
+ }
+ ],
+ "auto_reject_items": [
+ {
+ "item": "horsearmorleather"
+ },
+ {
+ "item": "horsearmoriron"
+ },
+ {
+ "item": "horsearmorgold"
+ },
+ {
+ "item": "horsearmordiamond"
+ },
+ {
+ "item": "saddle"
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+horse
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 100,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "sugar",
+ "temper_mod": 3
+ },
+ {
+ "item": "apple",
+ "temper_mod": 3
+ },
+ {
+ "item": "golden_carrot",
+ "temper_mod": 5
+ },
+ {
+ "item": "golden_apple",
+ "temper_mod": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "temper_mod": 10
+ }
+ ],
+ "auto_reject_items": [
+ {
+ "item": "horsearmorleather"
+ },
+ {
+ "item": "horsearmoriron"
+ },
+ {
+ "item": "horsearmorgold"
+ },
+ {
+ "item": "horsearmordiamond"
+ },
+ {
+ "item": "saddle"
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+llama
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 30,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "hay_block",
+ "temper_mod": 6
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+mule
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 100,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "sugar",
+ "temper_mod": 3
+ },
+ {
+ "item": "apple",
+ "temper_mod": 3
+ },
+ {
+ "item": "golden_carrot",
+ "temper_mod": 5
+ },
+ {
+ "item": "golden_apple",
+ "temper_mod": 10
+ },
+ {
+ "item": "appleEnchanted",
+ "temper_mod": 10
+ }
+ ],
+ "auto_reject_items": [
+ {
+ "item": "horsearmorleather"
+ },
+ {
+ "item": "horsearmoriron"
+ },
+ {
+ "item": "horsearmorgold"
+ },
+ {
+ "item": "horsearmordiamond"
+ },
+ {
+ "item": "saddle"
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+trader_llama
+
+```json
+"minecraft:tamemount": {
+ "min_temper": 0,
+ "max_temper": 30,
+ "feed_text": "action.interact.feed",
+ "ride_text": "action.interact.mount",
+ "feed_items": [
+ {
+ "item": "wheat",
+ "temper_mod": 3
+ },
+ {
+ "item": "hay_block",
+ "temper_mod": 6
+ }
+ ],
+ "auto_reject_items": [
+ {
+ "item": "horsearmorleather"
+ },
+ {
+ "item": "horsearmoriron"
+ },
+ {
+ "item": "horsearmorgold"
+ },
+ {
+ "item": "horsearmordiamond"
+ },
+ {
+ "item": "saddle"
+ }
+ ],
+ "tame_event": {
+ "event": "minecraft:on_tame",
+ "target": "self"
+ }
+}
+```
+
+## target_nearby_sensor
+
+blaze
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 2.0,
+ "outside_range": 3.0,
+ "must_see": true,
+ "on_inside_range": {
+ "event": "switch_to_melee",
+ "target": "self"
+ },
+ "on_outside_range": {
+ "event": "switch_to_ranged",
+ "target": "self"
+ }
+}
+```
+
+creeper
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 2.5,
+ "outside_range": 6.0,
+ "must_see": true,
+ "on_inside_range": {
+ "event": "minecraft:start_exploding",
+ "target": "self"
+ },
+ "on_outside_range": {
+ "event": "minecraft:stop_exploding",
+ "target": "self"
+ },
+ "on_vision_lost_inside_range": {
+ "event": "minecraft:stop_exploding",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:target_nearby_sensor": {}
+```
+
+```json
+"minecraft:target_nearby_sensor": {}
+```
+
+drowned
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 3.0,
+ "outside_range": 5.0,
+ "on_inside_range": {
+ "event": "minecraft:switch_to_melee",
+ "target": "self"
+ },
+ "on_outside_range": {
+ "event": "minecraft:switch_to_ranged",
+ "target": "self"
+ }
+}
+```
+
+guardian
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 3.0,
+ "outside_range": 4.0,
+ "on_inside_range": {
+ "event": "minecraft:target_too_close",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:target_nearby_sensor": {
+ "inside_range": 3.0,
+ "outside_range": 4.0,
+ "on_inside_range": {
+ "event": "minecraft:target_too_close",
+ "target": "self"
+ }
+}
+```
+
+## teleport
+
+enderman
+
+```json
+"minecraft:teleport": {
+ "random_teleports": true,
+ "max_random_teleport_time": 30,
+ "random_teleport_cube": [
+ 32,
+ 32,
+ 32
+ ],
+ "target_distance": 16,
+ "target_teleport_chance": 0.05,
+ "light_teleport_chance": 0.05
+}
+```
+
+## timer
+
+allay
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 3,
+ "time_down_event": {
+ "event": "pickup_item_delay_complete"
+ }
+}
+```
+
+bee
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": [
+ 20,
+ 50
+ ],
+ "randomInterval": true,
+ "time_down_event": {
+ "event": "stop_panicking_after_fire",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": [
+ 10,
+ 60
+ ],
+ "randomInterval": true,
+ "time_down_event": {
+ "event": "perish_event",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:timer": {
+ "looping": true,
+ "time": 5,
+ "time_down_event": {
+ "event": "calmed_down",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:timer": {
+ "looping": true,
+ "time": 180,
+ "time_down_event": {
+ "event": "find_flower_timeout"
+ }
+}
+```
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 180,
+ "time_down_event": {
+ "event": "find_hive_timeout",
+ "target": "self"
+ }
+}
+```
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": [
+ 5,
+ 20
+ ],
+ "randomInterval": true,
+ "time_down_event": {
+ "event": "find_hive_event",
+ "target": "self"
+ }
+}
+```
+
+boat
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 3,
+ "time_down_event": {
+ "event": "minecraft:sink",
+ "target": "self"
+ }
+}
+```
+
+chest_boat
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 3,
+ "time_down_event": {
+ "event": "minecraft:sink",
+ "target": "self"
+ }
+}
+```
+
+guardian
+
+```json
+"minecraft:timer": {
+ "time": [
+ 1,
+ 3
+ ],
+ "looping": false,
+ "time_down_event": {
+ "event": "minecraft:target_far_enough",
+ "target": "self"
+ }
+}
+```
+
+hoglin
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 15,
+ "time_down_event": {
+ "event": "become_zombie_event"
+ }
+}
+```
+
+husk
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 30,
+ "time_down_event": {
+ "event": "minecraft:convert_to_zombie"
+ }
+}
+```
+
+piglin
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 15,
+ "time_down_event": {
+ "event": "become_zombie_event"
+ }
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 15,
+ "time_down_event": {
+ "event": "become_zombie_event"
+ }
+}
+```
+
+player
+
+```json
+"minecraft:timer": {
+ "time": [
+ 0.0,
+ 0.0
+ ],
+ "looping": false,
+ "time_down_event": {
+ "event": "minecraft:clear_add_bad_omen",
+ "target": "self"
+ }
+}
+```
+
+pufferfish
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 2,
+ "randomInterval": false,
+ "time_down_event": {
+ "event": "minecraft:on_half_puff"
+ }
+}
+```
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 2,
+ "randomInterval": false,
+ "time_down_event": {
+ "event": "minecraft:on_normal_puff"
+ }
+}
+```
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 0.01,
+ "randomInterval": false,
+ "time_down_event": {
+ "event": "minecraft:on_full_puff"
+ }
+}
+```
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 3,
+ "randomInterval": false,
+ "time_down_event": {
+ "event": "minecraft:on_deflate"
+ }
+}
+```
+
+ravager
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 2,
+ "time_down_event": {
+ "event": "minecraft:start_roar"
+ }
+}
+```
+
+skeleton
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 20,
+ "time_down_event": {
+ "event": "become_stray_event"
+ }
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "random_time_choices": [
+ {
+ "weight": 50,
+ "value": 2400
+ },
+ {
+ "weight": 50,
+ "value": 3600
+ }
+ ],
+ "time_down_event": {
+ "event": "minecraft:start_despawn",
+ "target": "self"
+ }
+}
+```
+
+zombie
+
+```json
+"minecraft:timer": {
+ "looping": false,
+ "time": 30,
+ "time_down_event": {
+ "event": "minecraft:convert_to_drowned"
+ }
+}
+```
+
+## trade_resupply
+
+villager_v2
+
+```json
+"minecraft:trade_resupply": {}
+```
+
+## trade_table
+
+villager
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.farmer",
+ "table": "trading/farmer_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.fisherman",
+ "table": "trading/fisherman_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.shepherd",
+ "table": "trading/shepherd_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.fletcher",
+ "table": "trading/fletcher_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.librarian",
+ "table": "trading/librarian_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.cartographer",
+ "table": "trading/cartographer_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.cleric",
+ "table": "trading/cleric_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.armor",
+ "table": "trading/armorer_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.weapon",
+ "table": "trading/weapon_smith_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.tool",
+ "table": "trading/tool_smith_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.butcher",
+ "table": "trading/butcher_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+```json
+"minecraft:trade_table": {
+ "display_name": "entity.villager.leather",
+ "table": "trading/leather_worker_trades.json",
+ "convert_trades_economy": true
+}
+```
+
+## trail
+
+snow_golem
+
+```json
+"minecraft:trail": {
+ "block_type": "minecraft:snow_layer",
+ "spawn_filter": {
+ "test": "is_temperature_value",
+ "operator": "<",
+ "value": 0.81
+ }
+}
+```
+
+## transformation
+
+hoglin
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zoglin",
+ "transformation_sound": "converted_to_zombified",
+ "keep_level": true
+}
+```
+
+husk
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie",
+ "transformation_sound": "convert_to_drowned",
+ "drop_equipment": true,
+ "delay": {
+ "value": 15
+ }
+}
+```
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie",
+ "transformation_sound": "convert_to_drowned",
+ "drop_equipment": true,
+ "delay": {
+ "value": 15
+ }
+}
+```
+
+mooshroom
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:cow"
+}
+```
+
+pig
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:pig_zombie",
+ "delay": 0.5
+}
+```
+
+piglin
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie_pigman",
+ "transformation_sound": "converted_to_zombified",
+ "keep_level": true,
+ "drop_inventory": true,
+ "preserve_equipment": true
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie_pigman",
+ "transformation_sound": "converted_to_zombified",
+ "keep_level": true,
+ "preserve_equipment": true
+}
+```
+
+skeleton
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:stray",
+ "transformation_sound": "convert_to_stray",
+ "keep_level": true,
+ "drop_inventory": true,
+ "preserve_equipment": true
+}
+```
+
+stray
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:skeleton",
+ "delay": 0.5
+}
+```
+
+tadpole
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:frog",
+ "transformation_sound": "convert_to_frog"
+}
+```
+
+villager
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:witch",
+ "delay": 0.5
+}
+```
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:villager_v2",
+ "keep_level": true
+}
+```
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie_villager"
+}
+```
+
+villager_v2
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:witch",
+ "delay": 0.5
+}
+```
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie_villager_v2",
+ "keep_level": true
+}
+```
+
+zombie
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:drowned",
+ "transformation_sound": "convert_to_drowned",
+ "drop_equipment": true,
+ "delay": {
+ "value": 15
+ }
+}
+```
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:drowned",
+ "transformation_sound": "convert_to_drowned",
+ "drop_equipment": true,
+ "delay": {
+ "value": 15
+ }
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:zombie_villager_v2",
+ "keep_level": false
+}
+```
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:villager",
+ "begin_transform_sound": "remedy",
+ "transformation_sound": "unfect",
+ "delay": {
+ "value": 100,
+ "block_assist_chance": 0.01,
+ "block_radius": 4,
+ "block_chance": 0.3,
+ "block_types": [
+ "minecraft:bed",
+ "minecraft:iron_bars"
+ ]
+ }
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:transformation": {
+ "into": "minecraft:villager_v2",
+ "begin_transform_sound": "remedy",
+ "transformation_sound": "unfect",
+ "drop_equipment": true,
+ "keep_level": true,
+ "delay": {
+ "value": 100,
+ "block_assist_chance": 0.01,
+ "block_radius": 4,
+ "block_chance": 0.3,
+ "block_types": [
+ "minecraft:bed",
+ "minecraft:iron_bars"
+ ]
+ }
+}
+```
+
+## trust
+
+fox
+
+```json
+"minecraft:trust": {}
+```
+
+## trusting
+
+ocelot
+
+```json
+"minecraft:trusting": {
+ "probability": 0.33,
+ "trust_items": [
+ "fish",
+ "salmon"
+ ],
+ "trust_event": {
+ "event": "minecraft:on_trust",
+ "target": "self"
+ }
+}
+```
+
+## type_family
+
+allay
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "allay",
+ "mob"
+ ]
+}
+```
+
+armor_stand
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "armor_stand",
+ "inanimate",
+ "mob"
+ ]
+}
+```
+
+axolotl
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "axolotl",
+ "mob"
+ ]
+}
+```
+
+bat
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "bat",
+ "mob"
+ ]
+}
+```
+
+bee
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "bee",
+ "mob",
+ "arthropod"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "bee",
+ "mob",
+ "arthropod",
+ "pacified"
+ ]
+}
+```
+
+blaze
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "blaze",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+boat
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "boat",
+ "inanimate"
+ ]
+}
+```
+
+camel
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "camel",
+ "mob"
+ ]
+}
+```
+
+cat
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "cat",
+ "mob"
+ ]
+}
+```
+
+cave_spider
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "cavespider",
+ "monster",
+ "arthropod",
+ "mob"
+ ]
+}
+```
+
+chest_boat
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "boat",
+ "inanimate"
+ ]
+}
+```
+
+chest_minecart
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "minecart",
+ "inanimate"
+ ]
+}
+```
+
+chicken
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "chicken",
+ "mob"
+ ]
+}
+```
+
+command_block_minecart
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "minecart",
+ "inanimate"
+ ]
+}
+```
+
+cow
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "cow",
+ "mob"
+ ]
+}
+```
+
+creeper
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "creeper",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+dolphin
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "dolphin",
+ "mob"
+ ]
+}
+```
+
+donkey
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "donkey",
+ "mob"
+ ]
+}
+```
+
+drowned
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "drowned",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "guardian_elder",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+enderman
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "enderman",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+endermite
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "endermite",
+ "arthropod",
+ "monster",
+ "lightweight",
+ "mob"
+ ]
+}
+```
+
+ender_dragon
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "dragon",
+ "mob"
+ ]
+}
+```
+
+evocation_illager
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "evocation_illager",
+ "monster",
+ "illager",
+ "mob"
+ ]
+}
+```
+
+cod
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "cod",
+ "fish"
+ ]
+}
+```
+
+fox
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "fox",
+ "lightweight",
+ "mob"
+ ]
+}
+```
+
+frog
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "frog",
+ "mob"
+ ]
+}
+```
+
+ghast
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "ghast",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+glow_squid
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "squid",
+ "mob"
+ ]
+}
+```
+
+goat
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "goat",
+ "animal"
+ ]
+}
+```
+
+guardian
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "guardian",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+hoglin
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "hoglin",
+ "hoglin_baby",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "hoglin",
+ "hoglin_adult",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "hoglin",
+ "hoglin_adult",
+ "hoglin_huntable",
+ "mob"
+ ]
+}
+```
+
+hopper_minecart
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "minecart",
+ "inanimate"
+ ]
+}
+```
+
+horse
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "horse",
+ "mob"
+ ]
+}
+```
+
+husk
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "husk",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+iron_golem
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "irongolem",
+ "mob"
+ ]
+}
+```
+
+lightning_bolt
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "lightning"
+ ]
+}
+```
+
+llama
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "llama",
+ "mob"
+ ]
+}
+```
+
+magma_cube
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "magmacube",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+minecart
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "minecart",
+ "inanimate"
+ ]
+}
+```
+
+mooshroom
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "mushroomcow",
+ "mob"
+ ]
+}
+```
+
+mule
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "mule",
+ "mob"
+ ]
+}
+```
+
+npc
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "npc",
+ "mob"
+ ]
+}
+```
+
+ocelot
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "ocelot",
+ "mob"
+ ]
+}
+```
+
+panda
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "panda"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "panda",
+ "panda_aggressive",
+ "mob"
+ ]
+}
+```
+
+parrot
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "parrot_wild",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "parrot_tame",
+ "mob"
+ ]
+}
+```
+
+phantom
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "phantom",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+pig
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "pig",
+ "mob"
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "piglin",
+ "piglin_hunter",
+ "monster"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "piglin",
+ "monster"
+ ]
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "piglin",
+ "adult_piglin",
+ "piglin_brute",
+ "monster"
+ ]
+}
+```
+
+pillager
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "pillager",
+ "monster",
+ "illager",
+ "mob"
+ ]
+}
+```
+
+player
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "player"
+ ]
+}
+```
+
+polar_bear
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "polarbear",
+ "mob"
+ ]
+}
+```
+
+pufferfish
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "pufferfish",
+ "fish"
+ ]
+}
+```
+
+rabbit
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "rabbit",
+ "lightweight",
+ "mob"
+ ]
+}
+```
+
+ravager
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "monster",
+ "ravager",
+ "mob"
+ ]
+}
+```
+
+salmon
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "salmon",
+ "fish"
+ ]
+}
+```
+
+sheep
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "sheep",
+ "mob"
+ ]
+}
+```
+
+shulker
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "shulker",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+silverfish
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "silverfish",
+ "monster",
+ "lightweight",
+ "mob",
+ "arthropod"
+ ]
+}
+```
+
+skeleton
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "skeleton",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "skeletonhorse",
+ "undead",
+ "mob"
+ ]
+}
+```
+
+slime
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "slime",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+sniffer
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "sniffer",
+ "mob"
+ ]
+}
+```
+
+snow_golem
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "snowgolem",
+ "mob"
+ ]
+}
+```
+
+spider
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "spider",
+ "monster",
+ "mob",
+ "arthropod"
+ ]
+}
+```
+
+squid
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "squid",
+ "mob"
+ ]
+}
+```
+
+stray
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "stray",
+ "skeleton",
+ "monster",
+ "mob",
+ "undead"
+ ]
+}
+```
+
+strider
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "strider",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "strider",
+ "strider_baby",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "strider",
+ "strider_adult",
+ "mob"
+ ]
+}
+```
+
+tadpole
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "tadpole",
+ "mob"
+ ]
+}
+```
+
+tnt
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "tnt",
+ "inanimate"
+ ]
+}
+```
+
+tnt_minecart
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "minecart",
+ "inanimate"
+ ]
+}
+```
+
+trader_llama
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "trader_llama",
+ "llama",
+ "mob"
+ ]
+}
+```
+
+tripod_camera
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "tripodcamera",
+ "inanimate",
+ "mob"
+ ]
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "tropicalfish",
+ "fish"
+ ]
+}
+```
+
+turtle
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "turtle",
+ "baby_turtle",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "turtle",
+ "mob"
+ ]
+}
+```
+
+vex
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "vex",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+villager
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "farmer",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "fisherman",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "shepherd",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "fletcher",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "librarian",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "cartographer",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "priest",
+ "cleric",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "blacksmith",
+ "armorer",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "blacksmith",
+ "weaponsmith",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "blacksmith",
+ "toolsmith",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "artisan",
+ "butcher",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "artisan",
+ "leatherworker",
+ "mob"
+ ]
+}
+```
+
+villager_v2
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "unskilled",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "farmer",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "fisherman",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "shepherd",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "fletcher",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "librarian",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "cartographer",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "priest",
+ "cleric",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "blacksmith",
+ "armorer",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "blacksmith",
+ "weaponsmith",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "blacksmith",
+ "toolsmith",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "artisan",
+ "butcher",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "artisan",
+ "leatherworker",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "artisan",
+ "stone_mason",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "villager",
+ "peasant",
+ "nitwit",
+ "mob"
+ ]
+}
+```
+
+vindicator
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "vindicator",
+ "monster",
+ "illager",
+ "mob"
+ ]
+}
+```
+
+wandering_trader
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "wandering_trader",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "wandering_trader",
+ "wandering_trader_despawning",
+ "mob"
+ ]
+}
+```
+
+warden
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "warden",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+witch
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "witch",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+wither
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "wither",
+ "skeleton",
+ "monster",
+ "undead",
+ "mob"
+ ]
+}
+```
+
+wither_skeleton
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "wither",
+ "monster",
+ "undead",
+ "skeleton",
+ "mob"
+ ]
+}
+```
+
+wolf
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "wolf",
+ "mob"
+ ]
+}
+```
+
+xp_orb
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "inanimate"
+ ]
+}
+```
+
+zoglin
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "zoglin",
+ "zoglin_baby",
+ "undead",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "zoglin",
+ "zoglin_adult",
+ "undead",
+ "mob"
+ ]
+}
+```
+
+zombie
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+zombie_horse
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "zombiehorse",
+ "undead",
+ "mob"
+ ]
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "zombie_pigman",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "farmer",
+ "zombie",
+ "zombie_villager",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "fisherman",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "shepherd",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "fletcher",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "librarian",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "cartographer",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "cleric",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "armorer",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "weaponsmith",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "toolsmith",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "butcher",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "leatherworker",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "unskilled",
+ "zombie",
+ "zombie_villager",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "nitwit",
+ "zombie",
+ "zombie_villager",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "farmer",
+ "zombie",
+ "zombie_villager",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "fisherman",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "shepherd",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "fletcher",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "librarian",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "cartographer",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "cleric",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "armorer",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "weaponsmith",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "toolsmith",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "butcher",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "leatherworker",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+```json
+"minecraft:type_family": {
+ "family": [
+ "stone_mason",
+ "zombie_villager",
+ "zombie",
+ "undead",
+ "monster",
+ "mob"
+ ]
+}
+```
+
+## underwater_movement
+
+axolotl
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.2
+}
+```
+
+dolphin
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.15
+}
+```
+
+drowned
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.06
+}
+```
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.08
+}
+```
+
+elder_guardian
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.3
+}
+```
+
+cod
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.1
+}
+```
+
+frog
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.15
+}
+```
+
+guardian
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.12
+}
+```
+
+pufferfish
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.13
+}
+```
+
+salmon
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.12
+}
+```
+
+skeleton_horse
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.08
+}
+```
+
+tadpole
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.1
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.12
+}
+```
+
+turtle
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.06
+}
+```
+
+```json
+"minecraft:underwater_movement": {
+ "value": 0.12
+}
+```
+
+## variable_max_auto_step
+
+camel
+
+```json
+"minecraft:variable_max_auto_step": {
+ "base_value": 1.5625,
+ "controlled_value": 1.5625,
+ "jump_prevented_value": 0.5625
+}
+```
+
+enderman
+
+```json
+"minecraft:variable_max_auto_step": {
+ "base_value": 1.0625,
+ "jump_prevented_value": 0.5625
+}
+```
+
+## variant
+
+axolotl
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+cat
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 6
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 8
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 9
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 10
+}
+```
+
+fox
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+frog
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+goat
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+horse
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 6
+}
+```
+
+husk
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+llama
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+magma_cube
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+mooshroom
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+panda
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 6
+}
+```
+
+parrot
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+piglin
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+piglin_brute
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+pillager
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+pufferfish
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+rabbit
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 5
+}
+```
+
+shulker
+
+```json
+"minecraft:variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 6
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 8
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 12
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 10
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 13
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 14
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 9
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 16
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 15
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 11
+}
+```
+
+slime
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+trader_llama
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+villager
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+villager_v2
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 5
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 6
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 7
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 8
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 9
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 10
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 11
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 12
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 13
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 14
+}
+```
+
+vindicator
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+zombie_villager
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 1
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 2
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 3
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 4
+}
+```
+
+zombie_villager_v2
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+```json
+"minecraft:variant": {
+ "value": 0
+}
+```
+
+## vibration_damper
+
+warden
+
+```json
+"minecraft:vibration_damper": {}
+```
+
+## vibration_listener
+
+allay
+
+```json
+"minecraft:vibration_listener": {}
+```
+
+warden
+
+```json
+"minecraft:vibration_listener": {}
+```
+
+## water_movement
+
+panda
+
+```json
+"minecraft:water_movement": {
+ "drag_factor": 0.98
+}
+```
+
+polar_bear
+
+```json
+"minecraft:water_movement": {
+ "drag_factor": 0.98
+}
+```
+
+turtle
+
+```json
+"minecraft:water_movement": {
+ "drag_factor": 0.9
+}
+```
+
diff --git a/docs/wiki/3-实体/3-文档/vusr-full.md b/docs/wiki/3-实体/3-文档/vusr-full.md
new file mode 100644
index 00000000..24b154b3
--- /dev/null
+++ b/docs/wiki/3-实体/3-文档/vusr-full.md
@@ -0,0 +1,4500 @@
+---
+title: Vanilla 可用 Spawn Rules - 完整
+category: Documentation
+mentions:
+ - MedicalJewel105
+hidden: true
+---
+
+# Vanilla 可用 Spawn Rules - 完整
+
+
+
+本页面由 [Wiki Content Generator](https://github.com/Bedrock-OSS/bedrock-wiki-content-generator) 创建。 如果有问题,请在 [Bedrock OSS](https://www.google.com/search?q=https://discord.gg/XjV87YN) Discord 服务器上联系我们。
+包含所有示例。 命名空间 `minecraft` 和一些格式已被删除,以加快页面加载速度。 *上次更新于 1.20.10*
+
+## biome_filter
+
+axolotl
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "lush_caves"
+}
+```
+
+bat
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "animal"
+}
+```
+
+bee
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "plains"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "sunflower_plains"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "flower_forest"
+ }
+]
+```
+
+chicken
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "animal"
+}
+```
+
+cod
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "warm"
+ }
+]
+```
+
+cow
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "animal"
+}
+```
+
+creeper
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+}
+```
+
+dolphin
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "frozen"
+ }
+]
+```
+
+donkey
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "plains"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "meadow"
+}
+```
+
+drowned
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "river"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "dripstone_caves"
+}
+```
+
+enderman
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "all_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "nether"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "spawn_endermen"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "warped_forest"
+}
+```
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "the_end"
+ }
+]
+```
+
+fox
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "taiga"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "grove"
+}
+```
+
+frog
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "swamp"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "mangrove_swamp"
+ }
+ ]
+}
+```
+
+ghast
+
+```json
+"minecraft:biome_filter": {
+ "all_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "nether"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "spawn_ghast"
+ }
+ ]
+}
+```
+
+goat
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "snowy_slopes"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "jagged_peaks"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "frozen_peaks"
+ }
+ ]
+}
+```
+
+hoglin
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "crimson_forest"
+}
+```
+
+horse
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "plains"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "savanna"
+}
+```
+
+husk
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "desert"
+}
+```
+
+llama
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "extreme_hills"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "savanna"
+}
+```
+
+magma_cube
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "spawn_magma_cubes"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "spawn_many_magma_cubes"
+}
+```
+
+mooshroom
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "mooshroom_island"
+}
+```
+
+ocelot
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "jungle"
+}
+```
+
+panda
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "jungle"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "bamboo"
+ }
+]
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "bamboo"
+}
+```
+
+parrot
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "jungle"
+}
+```
+
+phantom
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+}
+```
+
+pig
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "animal"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "cherry_grove"
+ }
+ ]
+}
+```
+
+piglin
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "spawn_piglin"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "spawn_few_piglins"
+}
+```
+
+pillager_patrol
+
+```json
+"minecraft:biome_filter": {
+ "all_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "mooshroom_island"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "nether"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "the_end"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "all_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "mooshroom_island"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "nether"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "the_end"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "all_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "mooshroom_island"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "nether"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "the_end"
+ }
+ ]
+}
+```
+
+polar_bear
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "frozen"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "ocean"
+ }
+]
+```
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "frozen"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ }
+]
+```
+
+pufferfish
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "warm"
+ }
+]
+```
+
+rabbit
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "all_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "taiga"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "mega"
+ }
+ ]
+ },
+ {
+ "test": "is_snow_covered",
+ "operator": "==",
+ "value": true
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "desert"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "flower_forest"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "grove"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "snowy_slopes"
+ }
+ ]
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "meadow"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "cherry_grove"
+ }
+ ]
+}
+```
+
+salmon
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "warm"
+ }
+]
+```
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "river"
+ }
+]
+```
+
+sheep
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "animal"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "meadow"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "cherry_grove"
+ }
+ ]
+}
+```
+
+skeleton
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "all_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "frozen"
+ }
+ ]
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "soulsand_valley"
+ }
+ ]
+}
+```
+
+slime
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "swamp"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "mangrove_swamp"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "frozen"
+ }
+ ]
+}
+```
+
+spider
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+}
+```
+
+squid
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "river"
+ }
+ ]
+}
+```
+
+stray
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "frozen"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "ocean"
+ }
+]
+```
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "frozen"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ }
+]
+```
+
+strider
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "nether"
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ },
+ {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "warm"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "lukewarm"
+ }
+ ]
+ }
+]
+```
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "ocean"
+ },
+ {
+ "any_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "warm"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "lukewarm"
+ }
+ ]
+ }
+]
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "lush_caves"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "lush_caves"
+}
+```
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "mangrove_swamp"
+ }
+]
+```
+
+turtle
+
+```json
+"minecraft:biome_filter": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "beach"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "warm"
+ }
+]
+```
+
+witch
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+}
+```
+
+wolf
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "taiga"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "grove"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "all_of": [
+ {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "forest"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "mutated"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "birch"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "roofed"
+ },
+ {
+ "test": "has_biome_tag",
+ "operator": "!=",
+ "value": "mountain"
+ }
+ ]
+}
+```
+
+zombie
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "monster"
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "spawn_zombified_piglin"
+}
+```
+
+```json
+"minecraft:biome_filter": {
+ "test": "has_biome_tag",
+ "operator": "==",
+ "value": "spawn_few_zombified_piglins"
+}
+```
+
+## brightness_filter
+
+bat
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 4,
+ "adjust_for_weather": true
+}
+```
+
+bee
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+chicken
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+cow
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+creeper
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+donkey
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+drowned
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+enderman
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+fox
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+goat
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+horse
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+husk
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+llama
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+mooshroom
+
+```json
+"minecraft:brightness_filter": {
+ "min": 9,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+ocelot
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+panda
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+parrot
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+phantom
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+pig
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+pillager_patrol
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": false
+}
+```
+
+polar_bear
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+rabbit
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+sheep
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+skeleton
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+spider
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+stray
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+turtle
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+witch
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+wolf
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 7,
+ "max": 15,
+ "adjust_for_weather": false
+}
+```
+
+zombie
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 7,
+ "adjust_for_weather": true
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 11,
+ "adjust_for_weather": true
+}
+```
+
+```json
+"minecraft:brightness_filter": {
+ "min": 0,
+ "max": 11,
+ "adjust_for_weather": true
+}
+```
+
+## delay_filter
+
+pillager_patrol
+
+```json
+"minecraft:delay_filter": {
+ "min": 600,
+ "max": 660,
+ "identifier": "minecraft:pillager_patrol_easy",
+ "spawn_chance": 20
+}
+```
+
+```json
+"minecraft:delay_filter": {
+ "min": 600,
+ "max": 660,
+ "identifier": "minecraft:pillager_patrol_normal",
+ "spawn_chance": 20
+}
+```
+
+```json
+"minecraft:delay_filter": {
+ "min": 600,
+ "max": 660,
+ "identifier": "minecraft:pillager_patrol_hard",
+ "spawn_chance": 20
+}
+```
+
+## density_limit
+
+axolotl
+
+```json
+"minecraft:density_limit": {
+ "underground": 5
+}
+```
+
+bat
+
+```json
+"minecraft:density_limit": {
+ "surface": 5
+}
+```
+
+cod
+
+```json
+"minecraft:density_limit": {
+ "surface": 20
+}
+```
+
+creeper
+
+```json
+"minecraft:density_limit": {
+ "surface": 5
+}
+```
+
+dolphin
+
+```json
+"minecraft:density_limit": {
+ "surface": 5,
+ "underground": 0
+}
+```
+
+drowned
+
+```json
+"minecraft:density_limit": {
+ "surface": 5
+}
+```
+
+```json
+"minecraft:density_limit": {
+ "surface": 2
+}
+```
+
+```json
+"minecraft:density_limit": {
+ "surface": 2
+}
+```
+
+ghast
+
+```json
+"minecraft:density_limit": {
+ "surface": 0,
+ "underground": 2
+}
+```
+
+phantom
+
+```json
+"minecraft:density_limit": {
+ "surface": 5
+}
+```
+
+pufferfish
+
+```json
+"minecraft:density_limit": {
+ "surface": 3
+}
+```
+
+salmon
+
+```json
+"minecraft:density_limit": {
+ "surface": 10
+}
+```
+
+```json
+"minecraft:density_limit": {
+ "surface": 4
+}
+```
+
+squid
+
+```json
+"minecraft:density_limit": {
+ "surface": 4
+}
+```
+
+```json
+"minecraft:density_limit": {
+ "surface": 2
+}
+```
+
+strider
+
+```json
+"minecraft:density_limit": {
+ "surface": 3
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:density_limit": {
+ "surface": 20
+}
+```
+
+```json
+"minecraft:density_limit": {
+ "surface": 20
+}
+```
+
+```json
+"minecraft:density_limit": {
+ "underground": 20
+}
+```
+
+```json
+"minecraft:density_limit": {
+ "underground": 20
+}
+```
+
+```json
+"minecraft:density_limit": {
+ "surface": 20
+}
+```
+
+## difficulty_filter
+
+creeper
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+drowned
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+enderman
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+ghast
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+hoglin
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "peaceful",
+ "max": "hard"
+}
+```
+
+husk
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+magma_cube
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+phantom
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+piglin
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "peaceful",
+ "max": "hard"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "peaceful",
+ "max": "hard"
+}
+```
+
+pillager_patrol
+
+```json
+"minecraft:difficulty_filter": {
+ "max": "easy"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "normal",
+ "max": "normal"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "hard"
+}
+```
+
+skeleton
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+slime
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+spider
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+stray
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+strider
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "peaceful",
+ "max": "hard"
+}
+```
+
+witch
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+zombie
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+```json
+"minecraft:difficulty_filter": {
+ "min": "easy",
+ "max": "hard"
+}
+```
+
+## disallow_spawns_in_bubble
+
+axolotl
+
+```json
+"minecraft:disallow_spawns_in_bubble": {}
+```
+
+## distance_filter
+
+cod
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+pillager_patrol
+
+```json
+"minecraft:distance_filter": {
+ "min": 24,
+ "max": 48
+}
+```
+
+```json
+"minecraft:distance_filter": {
+ "min": 24,
+ "max": 48
+}
+```
+
+```json
+"minecraft:distance_filter": {
+ "min": 24,
+ "max": 48
+}
+```
+
+pufferfish
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+salmon
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+```json
+"minecraft:distance_filter": {
+ "min": 12,
+ "max": 32
+}
+```
+
+## height_filter
+
+bat
+
+```json
+"minecraft:height_filter": {
+ "min": -63,
+ "max": 63
+}
+```
+
+cod
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+dolphin
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+glow_squid
+
+```json
+"minecraft:height_filter": {
+ "min": -64,
+ "max": 30
+}
+```
+
+pufferfish
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+salmon
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+```json
+"minecraft:height_filter": {
+ "min": 50,
+ "max": 64
+}
+```
+
+stray
+
+```json
+"minecraft:height_filter": {
+ "min": 60,
+ "max": 66
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+```json
+"minecraft:height_filter": {
+ "min": 50,
+ "max": 64
+}
+```
+
+```json
+"minecraft:height_filter": {
+ "min": 0,
+ "max": 64
+}
+```
+
+turtle
+
+```json
+"minecraft:height_filter": {
+ "min": 60,
+ "max": 67
+}
+```
+
+## herd
+
+axolotl
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 6,
+ "event": "minecraft:entity_born",
+ "event_skip_count": 2
+}
+```
+
+bat
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 2
+}
+```
+
+bee
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 1
+}
+```
+
+chicken
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+cod
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 7
+}
+```
+
+cow
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 3
+}
+```
+
+dolphin
+
+```json
+"minecraft:herd": {
+ "min_size": 3,
+ "max_size": 5
+}
+```
+
+donkey
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 6
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2
+}
+```
+
+drowned
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+enderman
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 1
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 1
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 4
+}
+```
+
+fox
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4,
+ "event": "minecraft:entity_born",
+ "event_skip_count": 2
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4,
+ "event": "minecraft:entity_born",
+ "event_skip_count": 2
+}
+```
+
+frog
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 5
+}
+```
+
+glow_squid
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+goat
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 3
+}
+```
+
+hoglin
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 4
+}
+```
+
+horse
+
+```json
+"minecraft:herd": [
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_white"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_creamy"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_chestnut"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_brown"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_black"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_gray"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_darkbrown"
+ }
+]
+```
+
+```json
+"minecraft:herd": [
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_white"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_creamy"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_chestnut"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_brown"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_black"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_gray"
+ },
+ {
+ "min_size": 2,
+ "max_size": 6,
+ "event": "minecraft:make_darkbrown"
+ }
+]
+```
+
+husk
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+llama
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 6
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 4
+}
+```
+
+magma_cube
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 4
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 5
+}
+```
+
+mooshroom
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 8
+}
+```
+
+ocelot
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2
+}
+```
+
+panda
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2
+}
+```
+
+parrot
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2
+}
+```
+
+pig
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 3
+}
+```
+
+piglin
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 4
+}
+```
+
+pillager_patrol
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 5,
+ "initial_event": "minecraft:promote_to_patrol_captain",
+ "initial_event_count": 1,
+ "event": "minecraft:spawn_as_patrol_follower",
+ "event_skip_count": 1
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 5,
+ "initial_event": "minecraft:promote_to_patrol_captain",
+ "initial_event_count": 1,
+ "event": "minecraft:spawn_as_patrol_follower",
+ "event_skip_count": 1
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 5,
+ "initial_event": "minecraft:promote_to_patrol_captain",
+ "initial_event_count": 1,
+ "event": "minecraft:spawn_as_patrol_follower",
+ "event_skip_count": 1
+}
+```
+
+polar_bear
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2,
+ "event": "minecraft:entity_born",
+ "event_skip_count": 1
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2,
+ "event": "minecraft:entity_born",
+ "event_skip_count": 1
+}
+```
+
+pufferfish
+
+```json
+"minecraft:herd": {
+ "min_size": 3,
+ "max_size": 5
+}
+```
+
+rabbit
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 3
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 3
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 6
+}
+```
+
+salmon
+
+```json
+"minecraft:herd": {
+ "min_size": 3,
+ "max_size": 5
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 3,
+ "max_size": 5
+}
+```
+
+sheep
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 3
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+skeleton
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2
+}
+```
+
+squid
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+stray
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 2
+}
+```
+
+strider
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:herd": [
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_anenonme"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_black_tang"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_blue_dory"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_butterfly_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_cichlid"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_clownfish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_cc_betta"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_dog_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_e_red_snapper"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_goat_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_moorish_idol"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_ornate_butterfly"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_parrot_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_queen_angel_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_red_cichlid"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_red_lipped_benny"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_red_snapper"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_threadfin"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_tomato_clown"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_triggerfish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_yellow_tang"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_yellow_tail_parrot"
+ }
+]
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 3
+}
+```
+
+```json
+"minecraft:herd": [
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_anenonme"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_black_tang"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_blue_dory"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_butterfly_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_cichlid"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_clownfish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_cc_betta"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_dog_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_e_red_snapper"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_goat_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_moorish_idol"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_ornate_butterfly"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_parrot_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_queen_angel_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_red_cichlid"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_red_lipped_benny"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_red_snapper"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_threadfin"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_tomato_clown"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_triggerfish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_yellow_tang"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_yellow_tail_parrot"
+ }
+]
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 1,
+ "max_size": 3
+}
+```
+
+```json
+"minecraft:herd": [
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_anenonme"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_black_tang"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_blue_dory"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_butterfly_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_cichlid"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_clownfish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_cc_betta"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_dog_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_e_red_snapper"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_goat_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_moorish_idol"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_ornate_butterfly"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_parrot_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_queen_angel_fish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_red_cichlid"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_red_lipped_benny"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_red_snapper"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_threadfin"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_tomato_clown"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_triggerfish"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_yellow_tang"
+ },
+ {
+ "min_size": 3,
+ "max_size": 5,
+ "event": "minecraft:become_yellow_tail_parrot"
+ }
+]
+```
+
+turtle
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 6
+}
+```
+
+wolf
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 4
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 4,
+ "max_size": 4
+}
+```
+
+zombie
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+```json
+"minecraft:herd": {
+ "min_size": 2,
+ "max_size": 4
+}
+```
+
+## mob_event_filter
+
+pillager_patrol
+
+```json
+"minecraft:mob_event_filter": {
+ "event": "minecraft:pillager_patrols_event"
+}
+```
+
+```json
+"minecraft:mob_event_filter": {
+ "event": "minecraft:pillager_patrols_event"
+}
+```
+
+```json
+"minecraft:mob_event_filter": {
+ "event": "minecraft:pillager_patrols_event"
+}
+```
+
+## permute_type
+
+pillager_patrol
+
+```json
+"minecraft:permute_type": [
+ {
+ "weight": 100,
+ "entity_type": "minecraft:pillager"
+ }
+]
+```
+
+```json
+"minecraft:permute_type": [
+ {
+ "weight": 100,
+ "entity_type": "minecraft:pillager"
+ }
+]
+```
+
+```json
+"minecraft:permute_type": [
+ {
+ "weight": 100,
+ "entity_type": "minecraft:pillager"
+ }
+]
+```
+
+zombie
+
+```json
+"minecraft:permute_type": [
+ {
+ "weight": 95
+ },
+ {
+ "weight": 5,
+ "entity_type": "minecraft:zombie_villager_v2"
+ }
+]
+```
+
+## player_in_village_filter
+
+pillager_patrol
+
+```json
+"minecraft:player_in_village_filter": {
+ "distance": 48,
+ "village_border_tolerance": 32
+}
+```
+
+```json
+"minecraft:player_in_village_filter": {
+ "distance": 48,
+ "village_border_tolerance": 32
+}
+```
+
+```json
+"minecraft:player_in_village_filter": {
+ "distance": 48,
+ "village_border_tolerance": 32
+}
+```
+
+## spawn_event
+
+stray
+
+```json
+"minecraft:spawn_event": {
+ "event": "change_to_skeleton"
+}
+```
+
+```json
+"minecraft:spawn_event": {
+ "event": "change_to_skeleton"
+}
+```
+
+## spawns_lava
+
+strider
+
+```json
+"minecraft:spawns_lava": {}
+```
+
+## spawns_on_block_filter
+
+axolotl
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:clay"
+```
+
+chicken
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+cow
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+donkey
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+goat
+
+```json
+"minecraft:spawns_on_block_filter": [
+ "minecraft:stone",
+ "minecraft:snow",
+ "minecraft:powder_snow",
+ "minecraft:snow_layer",
+ "minecraft:packed_ice",
+ "minecraft:gravel"
+]
+```
+
+horse
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+llama
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+ocelot
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+panda
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+parrot
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+pig
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+polar_bear
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:ice"
+```
+
+rabbit
+
+```json
+"minecraft:spawns_on_block_filter": [
+ "minecraft:grass",
+ "minecraft:snow",
+ "minecraft:sand",
+ "minecraft:snow_layer"
+]
+```
+
+```json
+"minecraft:spawns_on_block_filter": [
+ "minecraft:grass",
+ "minecraft:snow",
+ "minecraft:sand",
+ "minecraft:snow_layer"
+]
+```
+
+```json
+"minecraft:spawns_on_block_filter": [
+ "minecraft:grass",
+ "minecraft:snow",
+ "minecraft:sand",
+ "minecraft:snow_layer"
+]
+```
+
+sheep
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+turtle
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:sand"
+```
+
+wolf
+
+```json
+"minecraft:spawns_on_block_filter": [
+ "minecraft:grass",
+ "minecraft:podzol",
+ "minecraft:dirt"
+]
+```
+
+```json
+"minecraft:spawns_on_block_filter": [
+ "minecraft:grass",
+ "minecraft:podzol",
+ "minecraft:dirt"
+]
+```
+
+```json
+"minecraft:spawns_on_block_filter": "minecraft:grass"
+```
+
+## spawns_on_block_prevented_filter
+
+hoglin
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+magma_cube
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+piglin
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+skeleton
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+zombie_pigman
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+```json
+"minecraft:spawns_on_block_prevented_filter": [
+ "minecraft:nether_wart_block",
+ "minecraft:shroomlight"
+]
+```
+
+## spawns_on_surface
+
+bee
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+chicken
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+cod
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+cow
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+creeper
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+dolphin
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+donkey
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+drowned
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+enderman
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+fox
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+frog
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+goat
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+horse
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+husk
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+llama
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+mooshroom
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+ocelot
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+panda
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+parrot
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+phantom
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+pig
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+pillager_patrol
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+polar_bear
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+pufferfish
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+rabbit
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+salmon
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+sheep
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+skeleton
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+slime
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+spider
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+squid
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+stray
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+tropicalfish
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+turtle
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+witch
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+wolf
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+zombie
+
+```json
+"minecraft:spawns_on_surface": {}
+```
+
+## spawns_underground
+
+axolotl
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+bat
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+creeper
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+enderman
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+ghast
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+glow_squid
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+hoglin
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+magma_cube
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+piglin
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+skeleton
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+slime
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+spider
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+stray
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+strider
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+tropicalfish
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+witch
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+zombie
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+zombie_pigman
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+```json
+"minecraft:spawns_underground": {}
+```
+
+## spawns_underwater
+
+axolotl
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+cod
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+dolphin
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+drowned
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+glow_squid
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+guardian
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+pufferfish
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+salmon
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+squid
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+tropicalfish
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+```json
+"minecraft:spawns_underwater": {}
+```
+
+## weight
+
+axolotl
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+bat
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+bee
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+chicken
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+cod
+
+```json
+"minecraft:weight": {
+ "default": 75
+}
+```
+
+cow
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+creeper
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+dolphin
+
+```json
+"minecraft:weight": {
+ "default": 7
+}
+```
+
+donkey
+
+```json
+"minecraft:weight": {
+ "default": 1
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 1
+}
+```
+
+drowned
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 5
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+enderman
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 6
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+fox
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+frog
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+ghast
+
+```json
+"minecraft:weight": {
+ "default": 40
+}
+```
+
+glow_squid
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+goat
+
+```json
+"minecraft:weight": {
+ "default": 5
+}
+```
+
+hoglin
+
+```json
+"minecraft:weight": {
+ "default": 20
+}
+```
+
+horse
+
+```json
+"minecraft:weight": {
+ "default": 4
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 1
+}
+```
+
+husk
+
+```json
+"minecraft:weight": {
+ "default": 240
+}
+```
+
+llama
+
+```json
+"minecraft:weight": {
+ "default": 5
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+magma_cube
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+mooshroom
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+ocelot
+
+```json
+"minecraft:weight": {
+ "default": 30
+}
+```
+
+panda
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 40
+}
+```
+
+parrot
+
+```json
+"minecraft:weight": {
+ "default": 40
+}
+```
+
+phantom
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+pig
+
+```json
+"minecraft:weight": {
+ "default": 10
+}
+```
+
+piglin
+
+```json
+"minecraft:weight": {
+ "default": 5
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 15
+}
+```
+
+polar_bear
+
+```json
+"minecraft:weight": {
+ "default": 1
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 5
+}
+```
+
+pufferfish
+
+```json
+"minecraft:weight": {
+ "default": 25
+}
+```
+
+rabbit
+
+```json
+"minecraft:weight": {
+ "default": 4
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 4
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 2
+}
+```
+
+salmon
+
+```json
+"minecraft:weight": {
+ "default": 26
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 16
+}
+```
+
+sheep
+
+```json
+"minecraft:weight": {
+ "default": 12
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 2
+}
+```
+
+skeleton
+
+```json
+"minecraft:weight": {
+ "default": 80
+}
+```
+
+slime
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+spider
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+squid
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+stray
+
+```json
+"minecraft:weight": {
+ "default": 120
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 120
+}
+```
+
+strider
+
+```json
+"minecraft:weight": {
+ "default": 20
+}
+```
+
+tropicalfish
+
+```json
+"minecraft:weight": {
+ "default": 75
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 25
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 75
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 25
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 25
+}
+```
+
+turtle
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+witch
+
+```json
+"minecraft:weight": {
+ "default": 5
+}
+```
+
+wolf
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 8
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 5
+}
+```
+
+zombie
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+zombie_pigman
+
+```json
+"minecraft:weight": {
+ "default": 100
+}
+```
+
+```json
+"minecraft:weight": {
+ "default": 1
+}
+```
+
+## world_age_filter
+
+pillager_patrol
+
+```json
+"minecraft:world_age_filter": {
+ "min": 6000
+}
+```
+
+```json
+"minecraft:world_age_filter": {
+ "min": 6000
+}
+```
+
+```json
+"minecraft:world_age_filter": {
+ "min": 6000
+}
+```
+
diff --git a/docs/wiki/4-Json-UI/1-基础/best-practices.md b/docs/wiki/4-Json-UI/1-基础/best-practices.md
new file mode 100644
index 00000000..164e88db
--- /dev/null
+++ b/docs/wiki/4-Json-UI/1-基础/best-practices.md
@@ -0,0 +1,155 @@
+---
+title: 最佳实践
+category: 通用指南
+nav_order: 2
+tags:
+ - 指南
+mentions:
+ - LukasPAH
+ - SmokeyStack
+ - TheItsNameless
+ - ThomasOrs
+---
+
+# 最佳实践
+
+
+
+:::tip 提示
+本文内容假定您已对JSON-UI系统有一定了解。如果您是JSON-UI的新手,请务必先阅读[JSON-UI介绍](/json-ui/json-ui-intro)和[JSON-UI文档](/json-ui/json-ui-documentation)。
+:::
+
+## 最大化兼容性并减少UI崩溃的可能性
+
+JSON-UI与其他附加包系统不同,因为**JSON-UI没有版本控制**。随着Mojang更新和修复JSON-UI系统,您对UI所做的任何修改都可能失效。幸运的是,您可以通过以下几种方法在Mojang更新原版UI时保持自定义UI的稳定性。
+
+### 仅修改必要内容
+最有效的防崩溃策略是只修改需要调整的部分。例如若只需要禁用经验条阴影,正确做法应是在资源包中向`hud_screen.json`文件添加:
+
+```json
+{
+ "progress_text_label": {
+ "shadow": false
+ }
+}
+```
+
+这种极简修改方式能显著降低未来更新导致UI崩溃的风险,同时保持文件整洁并大幅缩小体积。**若您将整个原版UI文件复制到资源包中进行修改,说明您错误理解了JSON-UI的工作机制**。
+
+### 善用修改策略
+使用[wiki文档中的修改策略](/json-ui/json-ui-intro#modifications)能有效降低更新风险。例如在HUD中添加自定义元素时,推荐使用修改数组操作而非直接插入控件:
+
+::: code-group
+```json [正确做法]
+{
+ "root_panel": {
+ "modifications": [
+ {
+ "array_name": "controls",
+ "operation": "insert_front",
+ "value": [
+ {
+ "custom_ui@namespace.custom_ui": {}
+ }
+ ]
+ }
+ ]
+ }
+}
+```
+:::
+
+这种策略性合并方式能提升与其他资源包的兼容性,并减少因原版控件结构调整导致的崩溃风险。
+
+### 避免修改深层嵌套控件
+修改嵌套层级过深的控件容易引发问题。推荐优先修改基础元素定义,必要时使用斜杠语法定位子控件:
+
+::: code-group
+```json [推荐修改方式]
+{
+ "panel_with_label_and_bg/bg_image": {
+ "size": ["100%c", "100%c"]
+ },
+ "panel_with_label_and_bg/bg_image/label": {
+ "layer": -5
+ }
+}
+```
+:::
+
+### 使用单一入口点
+合并自定义UI时建议集中到单个入口点。例如将多个自定义控件统一插入`root_panel`:
+
+::: code-group
+```json [优化后]
+{
+ "root_panel": {
+ "modifications": [
+ {
+ "array_name": "controls",
+ "operation": "insert_front",
+ "value": [
+ {"custom_ui_1@ns1.control1": {}},
+ {"custom_ui_2@ns1.control2": {}}
+ ]
+ }
+ ]
+ }
+}
+```
+:::
+
+### 避免使用原版命名空间
+开发大规模UI修改时,建议创建自定义[命名空间](/json-ui/json-ui-intro#namespaces)并使用前缀(如`wiki:namespace`)来防止命名冲突。通过`element@namespace.element`语法引用其他命名空间的元素。
+
+## 性能优化指南
+
+JSON-UI是仅次于实体的性能消耗大户。以下策略可帮助提升UI性能表现:
+
+### 减少操作符使用
+[操作符](/json-ui/json-ui-intro#using-operators)会显著增加计算开销。优化示例:
+
+```json
+"$var": "(-2 * $number)" // 优于 "(2 * (-1 * $number))"
+```
+
+### 精简绑定数量
+每个[绑定](/json-ui/json-ui-intro#bindings)都会产生性能开销。建议:
+- 移除无效绑定
+- 合并相似功能绑定
+- 避免重复绑定相同数据
+
+### 优化控件结构
+通过以下方式减少控件数量:
+1. 删除无用控件或添加`"ignored": true`
+2. 合并相似控件
+3. 使用条件渲染替代多个独立控件
+
+::: code-group
+```json [优化前]
+// 5个独立图像控件
+"image_1@image_template": {
+ "$texture": "textures/ui/example_1",
+ "$binding_text": "1"
+}
+...
+```
+```json [优化后]
+// 单个动态图像控件
+"image": {
+ "type": "image",
+ "texture": "#texture",
+ "bindings": [
+ {
+ "binding_type": "view",
+ "source_property_name": "('textures/ui/example_' + #hud_title_text_string)",
+ "target_property_name": "#texture"
+ }
+ ]
+}
+```
+:::
+
+**注意**:`"visible": false`不会阻止控件计算,应优先使用`"ignored": true`彻底禁用控件。
+
+通过系统性优化,可显著提升UI响应速度并降低资源消耗,为玩家提供更流畅的游戏体验。
\ No newline at end of file
diff --git a/docs/wiki/4-Json-UI/1-基础/json-ui-intro.md b/docs/wiki/4-Json-UI/1-基础/json-ui-intro.md
new file mode 100644
index 00000000..eb8a3b4d
--- /dev/null
+++ b/docs/wiki/4-Json-UI/1-基础/json-ui-intro.md
@@ -0,0 +1,837 @@
+---
+title: JSON UI 入门指南
+category: 通用
+nav_order: 1
+tags:
+ - guide
+mentions:
+ - sermah
+ - KalmeMarq
+ - SirLich
+ - solvedDev
+ - Joelant05
+ - GTB3NW
+ - stirante
+ - MedicalJewel105
+ - r4isen1920
+ - shanewolf38
+ - LeGend077
+ - mark-wiemer
+ - TheItsNameless
+ - ThomasOrs
+---
+
+# JSON UI 入门指南
+
+
+
+## 简介
+
+:::warning
+JSON UI 已进入弃用阶段,推荐使用 [Ore UI](https://github.com/Mojang/ore-ui) 替代。请注意,任何使用 JSON UI 的附加包将在未来几年内失效。
+:::
+
+:::tip
+本文概述了 JSON UI 的基础知识。如需更详细的文档,请查阅 [JSON UI 文档](/json-ui/json-ui-documentation)。
+:::
+
+游戏用户界面采用数据驱动模式,支持自定义修改。通过 JSON UI 系统,我们可以调整用户界面的渲染方式及部分交互行为。所有原版 UI 文件均存储在 `RP/ui/...` 文件夹中。
+
+JSON UI 可能包含以下文件类型:
+
+### 系统文件
+
+这些是 JSON UI 的内置文件:
+
+- `_global_variables.json` - 存储全局变量定义
+- `_ui_defs.json` - 管理 UI 文件引用清单
+
+### 屏幕文件
+
+用于定义特定界面布局的文件:
+
+- `hud_screen.json` - 显示包含快捷栏等游戏元素的 HUD 界面
+- `inventory_screen.json` - 玩家背包界面
+- 其他屏幕文件
+
+### 模板文件
+
+存储可复用 UI 组件的文件:
+
+- `ui_common.json` - 包含通用组件(如设置界面的按钮模板)
+- `ui_template_*.json` - 模块化组织的组件集合
+
+## UI 定义文件
+
+`_ui_defs.json` 通过数组形式引用所有 JSON UI 文件。
+
+例如新增 `RP/ui/button.json` 和 `RP/my_ui/main_menu.json` 时,应如下配置:
+
+::: code-group
+```json [RP/ui/_ui_defs.json]
+{
+ "ui_defs": ["ui/button.json", "my_ui/main_menu.json"]
+}
+```
+:::
+
+- 必须包含从资源包根目录开始的完整文件路径(包括 `.json` 扩展名)
+- 只需声明自建文件,无需包含原版或其他第三方文件
+- 支持非 `RP/ui/...` 路径的文件引用
+- 可使用非 `.json` 扩展名,但文件内容必须为合法 JSON
+
+## 全局变量
+
+在 `_global_variables.json` 中定义变量 `"$info_text_color"`:
+
+::: code-group
+```json [RP/ui/_global_variables.json]
+{
+ "$info_text_color": [0.8, 0.8, 0.8]
+}
+```
+:::
+
+其他 UI 文件可调用此变量:
+
+::: code-group
+```json [vanilla/my_ui/file1.json]
+{
+ "some_info": {
+ ...
+ "text": "Hey",
+ "color": "$info_text_color"
+ }
+}
+```
+
+```json [vanilla/my_ui/file2.json]
+{
+ "info": {
+ ...
+ "text": "Information",
+ "color": "$info_text_color"
+ }
+}
+```
+:::
+
+- 支持定义多个变量(逗号分隔)
+- 全局变量为单向常量,不可跨文件修改
+
+## 命名空间
+
+命名空间是 UI 文件的唯一标识符,用于跨文件引用元素。每个命名空间必须具有唯一名称。
+
+示例命名空间 `one` 中的元素:
+
+::: code-group
+```json [vanilla/ui/file_a.json]
+{
+ "namespace": "one",
+ "foobar": {...}
+}
+```
+:::
+
+在命名空间 `two` 中引用:
+
+::: code-group
+```json [vanilla/ui/file_b.json]
+{
+ "namespace": "two",
+ "fizzbuzz@one.foobar": {...}
+}
+```
+:::
+
+跨命名空间引用格式:
+```json
+"[元素名称]@[命名空间].[被引用元素]"
+```
+
+## 屏幕系统
+
+屏幕文件包含游戏在特定场景调用的界面布局(如背包界面)。每个屏幕文件必须包含根元素供游戏直接访问。
+
+屏幕文件具有数据访问隔离特性。
+
+## UI 元素
+
+UI 元素是 JSON UI 的基本组成单元,每个命名空间内的元素名称必须唯一。
+
+示例文本元素:
+
+::: code-group
+```json [vanilla/ui/example_file.json]
+{
+ "test_element": {
+ "type": "label",
+ "text": "Hello World"
+ }
+}
+```
+:::
+
+### 元素类型
+
+常用元素类型 (`type` 属性值):
+
+- `label` - 文本对象
+- `image` - 图像渲染
+- `button` - 交互按钮
+- `panel` - 层叠容器
+- `stack_panel` - 流式布局容器
+- `grid` - 网格模板渲染
+- `factory` - 动态元素生成器
+- `custom` - 自定义渲染器
+- `screen` - 根屏幕元素
+
+## 动画系统
+
+使用 `anim_type` 属性创建动画元素,可通过 `anims` 数组应用于其他元素。
+
+示例动画元素:
+
+::: code-group
+```json [vanilla/ui/example_file.json]
+{
+ "namespace": "example_nm",
+
+ "anim_size": {
+ "anim_type": "size",
+ "easing": "linear",
+ "from": [ "100%", 27 ],
+ "to": [ "100% + 3px", 30 ],
+ "duration": 1.25
+ },
+
+ "anim_alpha": {
+ "anim_type": "alpha",
+ "easing": "linear",
+ "from": 1,
+ "to": 0.5,
+ "duration": 2
+ },
+
+ "test_animated_element": {
+ ...
+ "anims": [
+ "@example_nm.anim_size",
+ "@example_nm.anim_alpha"
+ ]
+ }
+}
+```
+:::
+
+### 动画类型
+
+支持动画类型 (`anim_type`):
+
+- `alpha` - 透明度动画
+- `offset` - 位移动画
+- `size` - 尺寸动画
+- `flip_book` - 翻页动画
+- `uv` - UV 贴图动画
+- `color` - 颜色过渡
+- `wait` - 等待延时
+- `aseprite_flip_book` - 精灵表动画
+- `clip` - 裁剪动画
+
+## 操作符系统
+
+支持在属性中使用运算符,结合 `$变量` 和 `#绑定` 实现动态计算。
+
+| 运算符 | 符号 | 示例 |
+|----------------------|------|----------------------------------------------------------------------|
+| 加法 | + | `"100% + 420px"` `($text + ' my')` |
+| 减法 | - | `"100% - 69px"` `($index - 13)` |
+| 乘法 | * | `($var * 9)` |
+| 除法 | / | `(#value / 2)` |
+| 等于 | = | `($var = 'text')` |
+| 大于 | > | `(#value > 13)` |
+| 小于 | < | `($var < 4)` |
+| 大于等于 | >= | `(#value >= 2)` |
+| 小于等于 | <= | `(#value <= 2)` |
+| 逻辑与 | and | `($cond1 and $cond2)` |
+| 逻辑或 | or | `($condA or $condB)` |
+| 逻辑非 | not | `(not #flag)` |
+
+## 变量系统
+
+除全局变量外,支持在元素内定义局部变量。
+
+### 变量定义
+
+使用 `$` 前缀定义变量,支持多种数据类型:
+
+::: code-group
+```json [vanilla/ui/example_file.json]
+{
+ "test_element": {
+ // 定义变量
+ "$array_var": [10, 10],
+ "$str_var": "foobar",
+
+ // 使用变量
+ "size": "$array_var",
+ "text": "$str_var",
+
+ // 动态引用模板
+ "controls": [
+ { "foobar@$str_var": {} }
+ ]
+ }
+}
+```
+:::
+
+### 变量继承
+
+支持通过元素继承覆盖变量:
+
+::: code-group
+```json [vanilla/ui/example_file.json]
+{
+ "base_element": {
+ "$var1": 1,
+ "$var2": false
+ },
+
+ "derived_element@base_element": {
+ "$var1": 2 // 覆盖父元素变量
+ }
+}
+```
+:::
+
+## 数据绑定
+
+通过 `bindings` 实现数据源与元素的动态关联。
+
+### 简单绑定
+
+::: code-group
+```json [vanilla/ui/example_file.json]
+{
+ "label": {
+ "type": "label",
+ "text": "#hardtext",
+ "bindings": [
+ {
+ "binding_name": "#hardtext"
+ }
+ ]
+ }
+}
+```
+:::
+
+### 重定向绑定
+
+::: code-group
+```json [vanilla/ui/example_file.json]
+{
+ "label": {
+ "type": "label",
+ "text": "#display_text",
+ "bindings": [
+ {
+ "binding_name": "#source_data",
+ "binding_name_override": "#display_text"
+ }
+ ]
+ }
+}
+```
+:::
+
+### 跨元素绑定
+
+::: code-group
+```json
+{
+ "status_panel": {
+ "bindings": [
+ {
+ "binding_type": "view",
+ "source_control_name": "my_toggle",
+ "source_property_name": "#state",
+ "target_property_name": "#visible"
+ }
+ ]
+ }
+}
+```
+:::
+
+## 条件渲染
+
+通过变量和绑定实现动态显示控制。
+
+### 变量条件
+
+::: code-group
+```json [vanilla/ui/hud_screen.json]
+{
+ "hud_actionbar_text/actionbar_message": {
+ "$atext": "$actionbar_text",
+ "visible": "(not ($atext = 'hello world'))"
+ }
+}
+```
+:::
+
+### 工厂条件
+
+::: code-group
+```json [vanilla/ui/hud_screen.json]
+{
+ "conditional_image": {
+ "type": "image",
+ "texture": "textures/ui/Black",
+ "$atext": "$actionbar_text",
+ "visible": "($atext = 'show_image')"
+ },
+
+ "image_factory": {
+ "type": "panel",
+ "factory": {
+ "name": "hud_actionbar_text_factory",
+ "control_ids": {
+ "hud_actionbar_text": "conditional_image@hud.conditional_image"
+ }
+ }
+ }
+}
+```
+:::
+
+通过结合操作符系统,可实现复杂的条件逻辑判断,为界面交互提供灵活的控制能力。
+
+::: code-group
+```json [vanilla/ui/hud_screen.json]
+```
+:::
+
+### 使用绑定的条件渲染
+
+根据上文提到的操作栏示例,你可能会认为标题也使用变量。但实际情况并非如此。标题使用绑定(bindings)来获取数据,如下所示。
+
+::: code-group
+```json [vanilla/ui/hud_screen.json]
+{
+...
+ "hud_title_text": {
+ "type": "stack_panel",
+ "orientation": "vertical", // 垂直排列
+ "offset": [ 0, -19 ], // 位置偏移
+ "layer": 1, // 渲染层级
+ "alpha": "@hud.anim_title_text_alpha_in", // 透明度动画
+ "propagate_alpha": true, // 透明度继承
+ "controls": [ // 子控件集合
+ {
+ "title_frame": {
+ "type": "panel", // 面板类型
+ "size": [ "100%", "100%cm" ], // 尺寸设置
+ "controls": [
+ {
+ "title_background": {
+ "type": "image", // 图像类型
+ "size": [ "100%sm + 30px", "100%sm + 6px" ], // 动态尺寸计算
+ "texture": "textures/ui/hud_tip_text_background", // 纹理路径
+ "alpha": "@hud.anim_title_background_alpha_in" // 背景透明度动画
+ }
+ },
+ {
+ "title": {
+ "type": "label", // 文本标签类型
+ "anchor_from": "top_middle", // 锚点起始位置
+ "anchor_to": "top_middle", // 锚点目标位置
+ "color": "$title_command_text_color", // 文字颜色变量
+ "text": "#text", // 文本内容绑定
+ "layer": 1, // 渲染层级
+ "localize": false, // 关闭本地化
+ "font_size": "extra_large", // 超大字号
+ "variables": [ // 条件变量组
+ {
+ "requires": "(not $title_shadow)", // 无阴影条件
+ "$show_shadow": false // 关闭阴影显示
+ },
+ {
+ "requires": "$title_shadow", // 启用阴影条件
+ "$show_shadow": true // 启用阴影显示
+ }
+ ],
+ "shadow": "$show_shadow", // 阴影状态绑定
+ "text_alignment": "center", // 文本居中
+ "offset": [ 0, 6 ], // 位置微调
+ "bindings": [ // 数据绑定组
+ {
+ "binding_name": "#hud_title_text_string", // 原始绑定名
+ "binding_name_override": "#text", // 覆盖目标属性
+ "binding_type": "global" // 全局绑定类型
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+...
+}
+```
+:::
+
+我们需要在文本组件中添加另一个绑定对象来控制可见性。注意`#visible`属性会通过绑定直接控制元素可见性。以下示例将不会渲染"hello world"标题,但会显示其他所有标题。可在游戏中输入`/title @s title hello world`观察效果。
+
+::: code-group
+```json [vanilla/ui/hud_screen.json]
+{
+...
+ "hud_title_text": {
+ "type": "stack_panel",
+ "orientation": "vertical",
+ "offset": [ 0, -19 ],
+ "layer": 1,
+ "alpha": "@hud.anim_title_text_alpha_in",
+ "propagate_alpha": true,
+ "controls": [
+ {
+ "title_frame": {
+ "type": "panel",
+ "size": [ "100%", "100%cm" ],
+ "controls": [
+ {
+ "title_background": {
+ "type": "image",
+ "size": [ "100%sm + 30px", "100%sm + 6px" ],
+ "texture": "textures/ui/hud_tip_text_background",
+ "alpha": "@hud.anim_title_background_alpha_in"
+ }
+ },
+ {
+ "title": {
+ "type": "label",
+ "anchor_from": "top_middle",
+ "anchor_to": "top_middle",
+ "color": "$title_command_text_color",
+ "text": "#text",
+ "layer": 1,
+ "localize": false,
+ "font_size": "extra_large",
+ "variables": [
+ {
+ "requires": "(not $title_shadow)",
+ "$show_shadow": false
+ },
+ {
+ "requires": "$title_shadow",
+ "$show_shadow": true
+ }
+ ],
+ "shadow": "$show_shadow",
+ "text_alignment": "center",
+ "offset": [ 0, 6 ],
+ "bindings": [
+ {
+ "binding_name": "#hud_title_text_string",
+ "binding_name_override": "#text",
+ "binding_type": "global"
+ },
+ {
+ "binding_type": "view", // 将此设为视图绑定
+ "source_property_name": "(not (#text = 'hello world'))", // 当标题文本不等于"hello world"时触发
+ "target_property_name": "#visible" // 根据条件覆盖可见性属性
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ }
+...
+}
+```
+:::
+
+在资源包中使用非侵入式UI文件修改时,应保持如下格式:
+
+::: code-group
+```json [RP/ui/hud_screen.json]
+{
+ "hud_title_text/title_frame/title": {
+ "modifications": [
+ {
+ "array_name": "bindings", // 目标数组名
+ "operation": "insert_back", // 末尾插入操作
+ "value": { // 新增绑定对象
+ "binding_type": "view",
+ "source_property_name": "(not (#text = 'hello world'))",
+ "target_property_name": "#visible"
+ }
+ }
+ ]
+ }
+}
+```
+:::
+
+下面是一个更复杂的条件渲染示例。16x16的黑色图片仅在标题文本等于"hello world"时显示。虽然在此案例中不需要使用标题工厂(title factory),但如需使用UI动画则建议采用。
+
+::: code-group
+```json [RP/ui/hud_screen.json]
+{
+ "black_conditional_image": {
+ "type": "image",
+ "texture": "textures/ui/Black", // 黑色纹理
+ "size": [16, 16], // 固定尺寸
+ "layer": 10, // 较高渲染层级
+ "bindings": [
+ {
+ "binding_name": "#hud_title_text_string" // 标题文本绑定
+ },
+ {
+ "binding_type": "view",
+ "source_property_name": "(#hud_title_text_string = 'hello world')", // 条件判断
+ "target_property_name": "#visible" // 可见性控制
+ }
+ ]
+ },
+
+ "black_conditional_image_factory": {
+ "type": "panel",
+ "factory": {
+ "name": "hud_title_text_factory", // 使用标题工厂
+ "control_ids": {
+ "hud_title_text": "black_conditional_image@hud.black_conditional_image" // 控件ID映射
+ }
+ }
+ },
+
+ "root_panel": {
+ "modifications": [
+ {
+ "array_name": "controls", // 根面板控件数组
+ "operation": "insert_front", // 前置插入
+ "value": {
+ "black_conditional_image_factory@hud.black_conditional_image_factory": {} // 工厂实例
+ }
+ }
+ ]
+ }
+}
+```
+:::
+
+## 字符串格式化
+
+使用`%.#s`格式可以从字符串中截取指定长度的部分,其中`#`代表字符数量。示例:
+
+```json
+{
+ "label_element": {
+ "type": "label",
+ "text": "#text", // 文本绑定
+ "layer": 2,
+ "bindings": [
+ {
+ "binding_type": "global",
+ "binding_name": "#hud_title_text_string" // 全局标题绑定
+ },
+ {
+ "binding_type": "view",
+ "source_property_name": "('%.3s' * #hud_title_text_string)", // 截取前3个字符
+ "target_property_name": "#text" // 输出结果
+ }
+ ]
+ }
+}
+```
+
+假设变量`"$var": "abcdefghijklmn"`,则:
+- `'%.5s' * $var` 返回 `abcde`
+- `$var - ('%.7s' * $var)` 返回 `hijklm`
+
+注意该格式的使用场景较为有限。
+
+## 按钮映射
+
+`button_mappings`允许重新定义控件输入与按钮行为的对应关系,支持键鼠、触屏和手柄输入。
+
+按钮元素配置示例:
+
+```json
+{
+ "sample_button@common.button": {
+ "$pressed_button_name": "button_id", // 按钮ID变量
+ "button_mappings": [
+ {
+ "to_button_id": "$pressed_button_name",
+ "mapping_type": "pressed" // 按压映射
+ },
+ {
+ "from_button_id": "button.menu_ok", // 来源按钮
+ "to_button_id": "$pressed_button_name", // 目标按钮
+ "mapping_type": "focused" // 焦点状态映射
+ },
+ {
+ "from_button_id": "button.menu_select", // 选择按钮
+ "to_button_id": "$pressed_button_name",
+ "mapping_type": "pressed"
+ },
+ {
+ "from_button_id": "button.menu_up", // 上方向键
+ "to_button_id": "$pressed_button_name",
+ "mapping_type": "global" // 全局映射
+ }
+ ]
+ }
+}
+```
+
+### 映射类型
+
+定义按钮映射的作用范围:
+
+- `focused` - 控件获得焦点时生效
+- `pressed` - 控件被点击/按压时生效
+- `global` - 控件存在时全局生效
+
+条件触发示例:
+```json
+{
+ "sample_button@common.button": {
+ "$pressed_button_name": "button_id",
+ "button_mappings": [
+ // 鼠标悬停时触发
+ {
+ "from_button_id": "button.menu_ok",
+ "to_button_id": "$pressed_button_name",
+ "mapping_type": "focused"
+ },
+ // 点击时触发
+ {
+ "from_button_id": "button.menu_select",
+ "to_button_id": "$pressed_button_name",
+ "mapping_type": "pressed"
+ },
+ // 全局响应上方向键
+ {
+ "from_button_id": "button.menu_up",
+ "to_button_id": "$pressed_button_name",
+ "mapping_type": "global"
+ }
+ ]
+ }
+}
+```
+
+### 常用按钮ID
+
+**键鼠映射表:**
+| 按钮ID | 说明 |
+|-----------------------------|---------------|
+| `button.menu_select` | 鼠标左键 |
+| `button.menu_secondary_select` | 鼠标右键 |
+| `button.menu_ok` | 回车键 |
+| `button.menu_exit` | ESC键 |
+| `button.menu_cancel` | ESC键 |
+| `button.menu_up` | 上方向键 |
+| `button.menu_down` | 下方向键 |
+| `button.menu_left` | 左方向键 |
+| `button.menu_right` | 右方向键 |
+| `button.menu_autocomplete` | Tab键 |
+
+**手柄映射表:**
+| 按钮ID | 说明 |
+|-----------------------------|-------------|
+| `button.controller_select` | X/A键 |
+| `button.menu_secondary_select` | Y键 |
+| `button.menu_exit` | B键 |
+| `button.menu_cancel` | B键 |
+| `button.menu_up` | 方向键上 |
+| `button.menu_down` | 方向键下 |
+| `button.menu_left` | 方向键左 |
+| `button.menu_right` | 方向键右 |
+
+建议在设计UI时兼容多种输入设备。
+
+## 修改操作
+
+使用`modifications`属性可以非侵入式地修改现有JSON UI元素,提升资源包兼容性。
+
+| 操作类型 | 描述 |
+|------------------|-----------------------|
+| `insert_back` | 在数组末尾插入 |
+| `insert_front` | 在数组开头插入 |
+| `insert_after` | 在目标元素后插入 |
+| `insert_before` | 在目标元素前插入 |
+| `move_back` | 移动元素到数组末尾 |
+| `move_front` | 移动元素到数组开头 |
+| `move_after` | 移动元素到目标之后 |
+| `move_before` | 移动元素到目标之前 |
+| `swap` | 交换两个元素位置 |
+| `replace` | 替换目标元素 |
+| `remove` | 移除目标元素 |
+
+### 操作示例
+
+#### 首尾操作
+```json
+// 在控件列表开头插入新元素
+{
+ "array_name": "controls",
+ "operation": "insert_front",
+ "value": [{"foo@example.bar": {}}]
+}
+
+// 将现有元素移至末尾
+{
+ "array_name": "controls",
+ "operation": "move_back",
+ "value": [{"foo@example.bar": {}}]
+}
+```
+
+#### 相对定位操作
+```json
+// 在指定绑定后插入新绑定
+{
+ "array_name": "bindings",
+ "operation": "insert_after",
+ "where": {"binding_name": "#example_binding_2"},
+ "value": [{"binding_name": "#my_binding_1"}]
+}
+
+// 移动绑定到指定位置前
+{
+ "array_name": "bindings",
+ "operation": "move_before",
+ "where": {"binding_name": "#example_binding_1"},
+ "target": {"binding_name": "#example_binding_2"}
+}
+```
+
+#### 替换与删除
+```json
+// 替换现有绑定
+{
+ "array_name": "bindings",
+ "operation": "replace",
+ "where": {"binding_name": "#example_binding_1"},
+ "value": {"binding_name": "#replacement_binding"}
+}
+
+// 删除指定绑定
+{
+ "array_name": "bindings",
+ "operation": "remove",
+ "where": {"binding_name": "#example_binding_1"}
+}
+```
\ No newline at end of file
diff --git a/docs/wiki/4-Json-UI/2-巧思案例/add-hud-elements.md b/docs/wiki/4-Json-UI/2-巧思案例/add-hud-elements.md
new file mode 100644
index 00000000..8ebaabdb
--- /dev/null
+++ b/docs/wiki/4-Json-UI/2-巧思案例/add-hud-elements.md
@@ -0,0 +1,89 @@
+---
+title: 添加HUD元素
+category: 教程
+tags:
+ - 初学者
+mentions:
+ - shanewolf38
+ - SmokeyStack
+---
+
+# 添加HUD元素
+
+
+
+在本教程中,你将学习如何向HUD界面添加元素。
+
+## 概述
+
+HUD界面在游戏中大部分时间都会显示,为玩家提供关键信息。很多时候你需要在界面上添加元素,比如在完成特定事件后弹出文字、显示玩家体力的耐力条、显示玩家速度的时速表等等!
+
+要将创建的元素添加到HUD界面,需要使用`modification`参数在`root_panel`中添加新的`control`(界面元素)。Root_panel是一个面板类型的元素,包含了HUD界面上几乎所有显示的元素。
+
+## 单个元素添加
+
+下面这段代码会在屏幕顶部创建一个显示黑色方块的图像元素,在屏幕右上角创建显示文字"HUD文本"的标签元素,并通过修改`root_panel`将它们添加到HUD界面。
+
+::: code-group
+```json [RP/ui/hud_screen.json]
+"hud_square": {
+ "type": "image",
+ "texture": "textures/ui/Black", // 原版纹理
+ "anchor_from": "top_middle",
+ "anchor_to": "top_middle",
+ "size": [ 64, 64 ],
+ "offset": [ 0, 4 ]
+},
+
+"hud_text": {
+ "type": "label",
+ "text": "HUD文本",
+ "anchor_from": "top_right",
+ "anchor_to": "top_right",
+ "offset": [ -4, 4 ]
+},
+
+"root_panel": {
+ "modifications": [
+ {
+ "array_name": "controls",
+ "operation": "insert_front",
+ "value": [
+ { "hud_square@hud.hud_square": {} },
+ { "hud_text@hud.hud_text": {} }
+ ]
+ }
+ ]
+},
+```
+
+需要添加到HUD界面上的所有元素都列举在root_panel的`modifications`->`value`部分。在添加元素时使用的命名空间标识(例如`@hud.hud_square`)可以根据实际模块进行调整。比如当`hud_square`元素是创建在`scoreboard`命名空间的scoreboards.json界面文件中时,添加时应使用`@scoreboard.hud_square`。
+
+## 组合元素添加
+
+出于组织结构考虑,通常不建议将大量元素直接逐个添加到根面板中。以下代码将之前定义的`hud_square`和`hud_text`元素(示例中未展示)包裹在名为`hud_elements_panel`的面板元素中,然后将该面板整体添加到HUD的根面板。最终效果与单个元素添加方式相同。
+
+::: code-group
+```json [RP/ui/hud_screen.json]
+"hud_elements_panel": {
+ "type": "panel",
+ "controls": [
+ { "hud_square@hud_square": {} },
+ { "hud_text@hud_text": {} }
+ ]
+},
+
+"root_panel": {
+ "modifications": [
+ {
+ "array_name": "controls",
+ "operation": "insert_front",
+ "value": [
+ { "hud_elements_panel@hud.hud_elements_panel": {} }
+ ]
+ }
+ ]
+},
+```
+
+此处`hud_elements_panel`没有直接定义尺寸参数,因此将继承其父元素(`root_panel`)的尺寸。这使得子元素的锚点定位、百分比尺寸等效果能相对于HUD屏幕进行适配。
\ No newline at end of file
diff --git a/docs/wiki/4-Json-UI/2-巧思案例/aseprite-animations.md b/docs/wiki/4-Json-UI/2-巧思案例/aseprite-animations.md
new file mode 100644
index 00000000..cc7cd70e
--- /dev/null
+++ b/docs/wiki/4-Json-UI/2-巧思案例/aseprite-animations.md
@@ -0,0 +1,64 @@
+---
+title: Aseprite动画
+category: 教程
+mentions:
+ - TheDataLioness
+ - shanewolf38
+ - TheItsNameless
+ - LeGend077
+ - stirante
+---
+
+# Aseprite动画
+
+
+
+## Aseprite简介
+
+[Aseprite](https://www.aseprite.org/) 是一款付费像素艺术软件,专门用于轻松创建皮肤和资源包。它提供丰富的工具、详尽的文档和教程,适合不同水平的艺术家使用。
+
+[LibreSprite](https://libresprite.github.io/) 是Aseprite的免费开源替代品。它基于Aseprite最后一个开源许可版本进行分支开发,本教程中的操作同样适用于LibreSprite。
+
+## 在Aseprite中创建动画
+
+假设你有一组按数字1到5顺序命名的"frameimage"系列帧图像。导入第一张图像后,Aseprite会自动识别同名但编号不同的其他图片,将它们按正确顺序排列并创建动画。
+
+
+
+使用`箭头键`在帧间导航,`Enter键`控制动画的播放/暂停。按下`Tab键`可打开时间轴选择单帧,右键点击时间轴上的帧可设置各种参数。
+
+通过快捷键`Ctrl + E`或菜单`文件 -> 导出到精灵表`进行导出操作。在输出设置中选择输出文件和JSON数据格式,出现包含哈希(Hash)和数组(Array)两种选项的下拉菜单时,请确保选择数组(Array)模式,否则会导致异常。
+
+最终将生成两个文件:SpriteSheet图像和JSON文件。请确保这两个文件主文件名相同且扩展名不同。
+
+## 在JSON-UI中使用Aseprite动画
+
+`aseprite_flip_book`动画类型专用于`image`类型元素的`uv`属性配置。
+
+::: code-group
+```json [RP/ui/example_file.json]
+{
+ "image_element": { // 此处为动画元素
+ "type": "image",
+ "texture": "textures/ui/my_sprite_file",
+ "uv_size": [32, 32],
+ "uv": "@example_namespace.image_uv_animation"
+ },
+
+ "image_uv_animation": { // 此处为动画控制参数
+ "anim_type": "aseprite_flip_book",
+ "initial_uv": [0, 0]
+ }
+}
+```
+:::
+
+将`texture`字段设置为导出文件的路径(不包含扩展名)。`uv_size`字段应设置为单帧的宽高尺寸。
\ No newline at end of file
diff --git a/docs/wiki/4-Json-UI/2-巧思案例/preserve-title-texts.md b/docs/wiki/4-Json-UI/2-巧思案例/preserve-title-texts.md
new file mode 100644
index 00000000..a0d71c3e
--- /dev/null
+++ b/docs/wiki/4-Json-UI/2-巧思案例/preserve-title-texts.md
@@ -0,0 +1,78 @@
+---
+title: 保留标题文本
+category: 教程分类
+tags:
+ - 中级
+mentions:
+ - shanewolf38
+ - SmokeyStack
+---
+
+# 保留标题文本
+
+
+
+在本教程中,您将学习如何保存绑定数据并根据含有特定字符串的标题更新界面元素。
+
+## 概述
+
+标题是向UI系统传递数据的常用方法。当标题包含特定字符串时才更新相关数据元素,而忽略所有不含该字符串的标题数据非常有用。尽管本教程以标题为例,但该方法适用于所有通过绑定传递的数据(如副标题、玩家记分板名称等)。
+
+要保存特定字符串,我们需要组合使用 `visibility_changed` 绑定更新条件和 `source_control_name`,从而仅在包含特定字符串时更新绑定,并将该绑定传递给另一个元素。
+
+## 标题指令
+
+以下代码创建了一个标签元素,当将其添加到根面板时,可以在屏幕显示包含字符串"update"的标题(显示文本中会移除"update"部分)。后续传入的标题信息只有包含"update"时才会更新显示文本。
+
+::: code-group
+```json [RP/ui/hud_screen.json]
+"preserved_title_display": {
+ "$update_string": "update", // 标题必须包含此字符串才触发元素更新
+ "type": "label",
+ "text": "#text",
+ "controls": [
+ {
+ "data_control": {
+ "type": "panel",
+ "size": [ 0, 0 ],
+ "bindings": [
+ {
+ "binding_name": "#hud_title_text_string" // 读取当前标题字符串
+ },
+ {
+ "binding_name": "#hud_title_text_string",
+ "binding_name_override": "#preserved_text", // 元素可见性变化时更新#preserved_text
+ "binding_condition": "visibility_changed"
+ },
+ // 当包含更新字符的标题传入后,元素会短暂可见后立即隐藏
+ {
+ "binding_type": "view",
+ "source_property_name": "(not (#hud_title_text_string = #preserved_text) and not ((#hud_title_text_string - $update_string) = #hud_title_text_string))",
+ "target_property_name": "#visible"
+ }
+ ]
+ }
+ }
+ ],
+ "bindings": [
+ {
+ "binding_type": "view",
+ "source_control_name": "data_control", // 从"data_control"子元素读取绑定
+ //"resolve_sibling_scope": true, // 当"data_control"与绑定调用元素为同级时需启用
+ "source_property_name": "(#preserved_text - $update_string)", // 从显示文本中移除更新字符串
+ "target_property_name": "#text"
+ }
+ ]
+},
+```
+
+变量 `$update_string` 定义了触发元素更新的标题必须包含的特定字符串。子元素 `data_control` 用于在标题包含更新字符串时存储标题文本。`data_control` 必须是要传递保留文本元素的子级或同级元素,因为其可见性变化会触发文本保存。该元素的三个绑定分别实现:
+1. 首绑定:持续追踪当前标题文本
+2. 次绑定:在元素可见性变化时将当前标题保存至 `#preserved_text`
+3. 末绑定:当传入含更新字符串的标题时短暂显示元素后立即隐藏
+
+在 `data_control` 元素的第三个绑定中,需同时满足两个条件才可见:
+1. `not (#hud_title_text_string = #preserved_text)` - 当前标题与保存标题不一致时成立
+2. `not ((#hud_title_text_string - $update_string)` - 当前标题含有更新字符串时成立
+
+当含有更新字符串且与已存文本不同的标题传入时,两条件同时触发,元素更新数据后立即重新隐藏自身。
\ No newline at end of file
diff --git a/docs/wiki/4-Json-UI/2-巧思案例/string-to-number.md b/docs/wiki/4-Json-UI/2-巧思案例/string-to-number.md
new file mode 100644
index 00000000..5abed0c3
--- /dev/null
+++ b/docs/wiki/4-Json-UI/2-巧思案例/string-to-number.md
@@ -0,0 +1,80 @@
+---
+title: 字符串转数值
+category: 教程
+tags:
+ - 中级
+mentions:
+ - shanewolf38
+ - SmokeyStack
+ - ThomasOrs
+---
+
+# 字符串转数值
+
+
+
+在本教程中,您将学习如何将数字字符串转换为数值,以及如何将数值转换为文本字符串。
+
+## 概述
+
+在许多情况下会有文本字符串通过标题、操作栏、记分板或其他来源传递到用户界面中。当我们希望根据输入的字符串动态调整UI元素时,能够进行数字比较就显得非常重要。但类似于"34"或"89"这样的数值型字符串通常会被视为普通文本,既无法与数值进行比较,也难以直接作为运算数据使用。此时我们需要将这类字符串转换为数值。
+
+要实现字符串到数值的转换,我们可以利用乘法运算特性。任何包含数字的字符串与数值相乘,或者通过去除字符串中的非数字部分,都能使游戏引擎将该值作为数值而非字符串处理。
+
+## 字符串转数值
+
+以下代码创建了一个标签元素,当添加到主面板时,可在记分板侧栏的最高分值处于100-999范围内时显示该数值。
+
+::: code-group
+```json [RP/ui/hud_screen.json]
+"string_to_number": {
+ "type": "label",
+ "text": "#player_score_sidebar",
+ "bindings": [
+ {
+ "binding_name": "#player_score_sidebar",
+ "binding_type": "collection",
+ "binding_collection_name": "scoreboard_scores"
+ },
+ {
+ "binding_type": "view",
+ "source_property_name": "(#player_score_sidebar * 1)", // 将分数从字符串转换为数值
+ "target_property_name": "#score"
+ },
+ {
+ "binding_type": "view",
+ "source_property_name": "((#score > 99) and (#score < 1000))", // 仅在100-999范围内可见
+ "target_property_name": "#visible"
+ }
+ ]
+}
+```
+
+第一个绑定从记分板侧栏读取最大数值(该绑定值以字符串形式固定传输),第二个绑定通过将分数乘以1将其转换为数值(也可以通过减法操作去除字符串中的文本),第三个绑定设置元素仅在分数大于99且小于1000时可见。
+
+**注意:** 如果需要将数值识别为浮点类型而非整数,可在等式运算中引入浮点变量或绑定,例如除以1.0(必须通过变量或绑定实现——直接插入浮点数无法生效)。这在处理`#clip-ratio`绑定时尤为实用。
+
+## 数值转字符串
+
+以下代码创建了一个标签元素,当添加到主面板时,可将"Strength: #"格式标题中的数字部分单独显示。
+
+::: code-group
+```json [RP/ui/hud_screen.json]
+"number_to_string": {
+ "type": "label",
+ "text": "#text",
+ "bindings": [
+ {
+ "binding_type": "global",
+ "binding_name": "#hud_title_text_string"
+ },
+ {
+ "binding_type": "view",
+ "source_property_name": "('§z' + (#hud_title_text_string - 'strength: '))",
+ "target_property_name": "#text"
+ }
+ ]
+}
+```
+
+当使用标题、副标题等方式传递包含数字的文本时,此方法可单独显示数值。通过减法运算去除多余文本后,需在数值前添加文本使其转换为字符串类型(`text`参数无法直接读取纯数值型绑定)。此例中的括号并非必需,主要用于区分数值转换操作。添加的`§z`字符是无效的Minecraft格式代码,既不显示也不影响标签颜色参数。若需要去除显示中无法通过减法处理的文本,推荐将元素嵌套在设置`"clips_children": true`和适当尺寸的容器面板中实现遮挡效果。
\ No newline at end of file
diff --git a/docs/wiki/4-Json-UI/3-文档/json-ui-documentation.md b/docs/wiki/4-Json-UI/3-文档/json-ui-documentation.md
new file mode 100644
index 00000000..ceb888de
--- /dev/null
+++ b/docs/wiki/4-Json-UI/3-文档/json-ui-documentation.md
@@ -0,0 +1,2067 @@
+---
+title: JSON UI Documentation
+category: Documentation
+nav_order: 1
+mentions:
+ - KalmeMarq
+ - SirLich
+ - solvedDev
+ - Joelant05
+ - GTB3NW
+ - stirante
+ - sermah
+ - MedicalJewel105
+ - tinedpakgamer
+ - LeGend077
+ - TheDataLioness
+ - shanewolf38
+ - JosiahDZD
+ - Tcbdxh
+ - inotflying
+ - TheItsNameless
+ - SmokeyStack
+ - Gotemba912
+---
+
+# JSON UI Documentation
+
+## UI Elements
+
+### Element Types
+
+| Name | Description | Allowed Properties |
+| ---------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| panel | A container, like `` in HTML | [Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| stack_panel | Similar to `panel` but stacks its children depending on `orientation` property value | [Stack Panel](/json-ui/json-ui-documentation#stack-panel)
[Collection](/json-ui/json-ui-documentation#collection)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| collection_panel | Similar to `stack_panel`, but does not have the `orientation` property | [Collection](/json-ui/json-ui-documentation#collection)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| grid | Grid of elements | [Grid](/json-ui/json-ui-documentation#grid)
[Collection](/json-ui/json-ui-documentation#collection)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| label | Text element | [Text](/json-ui/json-ui-documentation#text)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| image | Sprite element. Draws a texture. | [Sprite](/json-ui/json-ui-documentation#sprite)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| input_panel | A `panel` that accepts input | [Input](/json-ui/json-ui-documentation#input)
[Focus](/json-ui/json-ui-documentation#focus)
[Sound](/json-ui/json-ui-documentation#sound)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| button | A button and it can have 4 states (default, hover, pressed and locked) | [Button](/json-ui/json-ui-documentation#button)
[Input](/json-ui/json-ui-documentation#input)
[Focus](/json-ui/json-ui-documentation#focus)
[Sound](/json-ui/json-ui-documentation#sound)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| toggle | A toggle and it has 2 states (checked or unchecked). Each state has a hover and locked variant | [Toggle](/json-ui/json-ui-documentation#toggle)
[Input](/json-ui/json-ui-documentation#input)
[Focus](/json-ui/json-ui-documentation#focus)
[Sound](/json-ui/json-ui-documentation#sound)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| dropdown | A toggle for dropdown purposes | [Dropdown](/json-ui/json-ui-documentation#dropdown)
[Toggle](/json-ui/json-ui-documentation#toggle)
[Input](/json-ui/json-ui-documentation#input)
[Focus](/json-ui/json-ui-documentation#focus)
[Sound](/json-ui/json-ui-documentation#sound)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| slider | Range input element | [Slider](/json-ui/json-ui-documentation#slider)
[Input](/json-ui/json-ui-documentation#input)
[Focus](/json-ui/json-ui-documentation#focus)
[Sound](/json-ui/json-ui-documentation#sound)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| slider_box | The slider button that you use to change the slider value | [Slider Box](/json-ui/json-ui-documentation#slider-box)
[Input](/json-ui/json-ui-documentation#input)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| edit_box | Text field element. By default it's single-lined | [Text Edit](/json-ui/json-ui-documentation#text-edit)
[Button](/json-ui/json-ui-documentation#button)
[Input](/json-ui/json-ui-documentation#input)
[Focus](/json-ui/json-ui-documentation#focus)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| scroll_view | Creates a scrolling panel element | [Scroll View](/json-ui/json-ui-documentation#scroll-view)
[Input](/json-ui/json-ui-documentation#input)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| scrollbar_track | The scrollbar track | [Input](/json-ui/json-ui-documentation#input)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout) |
+| scrollbar_box | The scrollbar "thumb"/button. The draggable scrolling handle. By default is oriented vertically | [Input](/json-ui/json-ui-documentation#input)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout) |
+| factory | A element generator | [Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout) |
+| screen | Screen element | [Screen](/json-ui/json-ui-documentation#screen) [Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| custom | Special renderer element that is created in the code because it's too complex for JSON UI | [Custom Render](/json-ui/json-ui-documentation#custom-render)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| selection_wheel | | [Selection Wheel](/json-ui/json-ui-documentation#selection-wheel)
[Input](/json-ui/json-ui-documentation#input)
[Focus](/json-ui/json-ui-documentation#focus)
[Sound](/json-ui/json-ui-documentation#sound)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+
+#### Legacy Element Types (No longer work)
+
+| Name | Description | Allowed Properties |
+| -------------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| tab | The way tabs were made before the addition of toggles | [Tab](/json-ui/json-ui-documentation#tab-legacy)
[Button](/json-ui/json-ui-documentation#button)
[Input](/json-ui/json-ui-documentation#input)
[Focus](/json-ui/json-ui-documentation#focus)
[Sound](/json-ui/json-ui-documentation#sound)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| carousel_label | | [Carousel Text](/json-ui/json-ui-documentation#carousel-text-legacy)
[Text](/json-ui/json-ui-documentation#text)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| grid_item | A `panel` but specifically to be an item/child of a grid | [Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+| scrollbar | | [Input](/json-ui/json-ui-documentation#input)
[Focus](/json-ui/json-ui-documentation#focus)
[Control](/json-ui/json-ui-documentation#control)
[Layout](/json-ui/json-ui-documentation#layout)
[Data Binding](/json-ui/json-ui-documentation#data-binding) |
+
+## Properties
+
+### Control
+
+| Property Name | Type | Default Value | Description |
+| ------------------------- | :------------------: | :-----------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| visible | boolean | `true` | If the UI element should be visible |
+| enabled | boolean | `true` | If true and if the UI element or any of its children have the locked state then they will be in the locked |
+| layer | int | `0` | Z-Index/Layer (like zindex in CSS) relative to parent element. Higher layers will render above |
+| alpha | float | `1.0` | Alpha/transparency of the element. It will only affect the UI element. Its children will be unaffected. If you want the alpha to apply for both the parent and children also use `propagate_alpha` |
+| propagate_alpha | boolean | `false` | If `alpha` should not only apply to the parent if possible but also all its children |
+| clips_children | boolean | `false` | Cuts off visually and interactively everything beyond the bounderies of the UI element |
+| allow_clipping | boolean | `true` | If `clips_children` works in the UI element. Otherwise, it won't have any effect |
+| clip_offset | Vector [x, y] | `[0, 0]` | Offset from the start of the clipping |
+| clip_state_change_event | string | | |
+| enable_scissor_test | boolean | | [https://www.khronos.org/opengl/wiki/Scissor_Test](https://www.khronos.org/opengl/wiki/Scissor_Test) |
+| property_bag | object | | [Property bag](/json-ui/json-ui-documentation#property-bag) contains properties/variables that are more related with the data than the actually structure and look of the UI element |
+| selected | boolean | | If the text box is selected by default |
+| use_child_anchors | boolean | `false` | Use the `anchor_from` and`anchor_to` of the child of the UI element |
+| controls | array | | For adding children to the element |
+| anims | string[] | | Array of the animation names |
+| disable_anim_fast_forward | boolean | | |
+| animation_reset_name | string | | |
+| ignored | boolean | `false` | If the UI element should be ignored |
+| variables | array or object | | A bunch of conditions that change the variables values |
+| modifications | array | | Allows to modify the UI files of resource packs below (vanilla being the most bottom one) |
+| grid_position | Vector [row, column] | | Position that the control will take inside the grid. This also allows to modify specific grid items of a hardcoded grid |
+| collection_index | int | | Index that the control takes in the collection |
+
+#### Legacy (no longer works)
+
+| Property Name | Type | Default Value | Description |
+| ------------- | :------: | :-----------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| z_order | int | 0 | First version of the `layer` property |
+| scroll_report | string[] | | Array of the name of the controls to notify when content inside of the scroll panel changes |
+| alignment | enum | | Possible values:
`top_left`
`top_middle`
`top_right`
`left_middle`
`center`
`right_middle`
`bottom_left`
`bottom_middle`
`bottom_right` |
+
+### Layout
+
+| Property Name | Type | Default Value | Description |
+| -------------------------- | :--------------------: | :----------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| size | Vector [width, height] | `["default", "default"]` | Size of the UI element.
Possible values:
`"default"` (Default value which is `"100%"`)
`0` (Number of pixels)
`"0px"` (Number of pixels. It's the same as 0 but it's put inside a string with px at the end. It's used when you want to sum or subtract a percentage based value with a specific number of pixels. (e.g. `"75% + 12px"`))
`"0%"` (Percentage of relative to the parent element)
`"0%c"` (Percentage of the total width/height of the element children)
`"0%cm"` (Percentage of the width/height of the biggest visible child of that element)
`"0%sm"` (Percentage of the width/height of the sibling element)
`"0%y"` (Percentage of the element height)
`"0%x"` (Percentage of the element width)
`"fill"` (Expands to the remaining width/height of the parent element) |
+| max_size | Vector [width, height] | `["default", "default"]` | Maximum size of the UI element can have |
+| min_size | Vector [width, height] | `["default", "default"]` | Minimum size of the UI element can have |
+| offset | Vector [x, y] | `[0, 0]` | Position of the UI element relative to the parent UI element. It's TopLeft based meaning the coordinates [0, 0] start at the top left of the screen.
`10`- pixels
`"10px"` - pixels
`"50%"` - Width/height of the parent element
`"50%x"` - Width of the element
`"50%y"` - Height of the element |
+| anchor_from | enum | `center` | Anchor point in the parent element.
Possible values:
`top_left`
`top_middle`
`top_right`
`left_middle`
`center`
`right_middle`
`bottom_left`
`bottom_middle`
`bottom_right` |
+| anchor_to | enum | `center` | Anchor point in the element.
Possible values:
`top_left`
`top_middle`
`top_right`
`left_middle`
`center`
`right_middle`
`bottom_left`
`bottom_middle`
`bottom_right` |
+| inherit_max_sibling_width | boolean | `false` | Use the maximum width of the sibling element |
+| inherit_max_sibling_height | boolean | `false` | Use the maximum height of the sibling element |
+| use_anchored_offset | boolean | | |
+| contained | boolean | | |
+| draggable | enum | | Makes the element draggable through cursor. The element should be able to accept input in order to be draggable (`input_panel`, `button`, etc.) and must have the required button mappings.
Possible values: `vertical`, `horizontal` and `both` |
+| follows_cursor | boolean | `false` | Follows the cursor |
+
+### Data Binding
+
+| Property Name | Type | Default Value | Description |
+| ------------- | :---------------------------------------------------------------------------------------: | :-----------: | -------------------------------------------------- |
+| bindings | Vector of [binding object](/json-ui/json-ui-documentation#data-binding-array-object) | | Bind and work with hardcoded values in the element |
+
+
+#### Data Binding Array Object
+
+Data Binding allows to bind hardcoded values/variables to an element property.
+
+| Property Name | Type | Default Value | Description |
+| ------------------------- | :-----: | :-----------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| ignored | boolean | `false` | If binding should be ignored |
+| binding_type | enum | | Possible values:
`global`
`view`
`collection`
`collection_details`
`none` |
+| binding_name | string | | Stores the value of the data binding name or condition with it |
+| binding_name_override | string | | Name of the UI element property that will apply the stored value in `binding_name` |
+| binding_collection_name | string | | Name of the collection of items to be used |
+| binding_collection_prefix | string | | |
+| binding_condition | enum | | Condition for the data binding to happen.
Possible values:
`always`
`always_when_visible`
`visible`
`once`
`none`
`visibility_changed` |
+| source_control_name | string | | Name of the UI element to observe its property values |
+| source_property_name | string | | Store the value of the property value of the UI element refered in `source_control_name` |
+| target_property_name | string | | The UI element property that the stored value in `source_property_name` will be applied to |
+| resolve_sibling_scope | boolean | | If `true`, allows the selection of a sibling element in the same control instead of its child, for `source_control_name` |
+
+### Stack Panel
+
+| Property Name | Type | Default Value | Description |
+| ------------- | :---: | :-----------: | ---------------------------------------------------------------------------------------------------------- |
+| orientation | enum | `vertical` | Direction the elements stack inside `stack_panel`.
Possible values:
`vertical`
`horizontal` |
+
+### Grid
+
+| Property Name | Type | Default Value | Description |
+| ------------------------- | :--------------------: | ------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
+| grid_dimensions | Vector [rows, columns] | | Number of columns and rows the grid has |
+| maximum_grid_items | int | | Maximum number of items the grid will generate |
+| grid_dimension_binding | string | | Binding name for grid dimensions |
+| grid_rescaling_type | enum | | Grid rescaling orientation.
Possible values:
`vertical`
`horizontal`
`none` |
+| grid_fill_direction | enum | | Possible values:
`vertical`
`horizontal`
`none` |
+| grid_item_template | string | | An element capable of handling collections
(e.g. `"common.container_item"`, `"container_items"`, `"inventory_items"` and etc.) |
+| precached_grid_item_count | int | | |
+
+### Text
+
+| Property Name | Type | Default Value | Description |
+| ----------------------- | :--------------: | :---------------: | --------------------------------------------------------------------------------------------------------------------- |
+| text | string | | Text content |
+| color | Vector [r, g, b] | `[1.0, 1.0, 1.0]` | Text color. RGB value from 0.0 to 1.0 |
+| locked_color | Vector [r, g, b] | | Text color when a parent has `enabled: false` |
+| shadow | boolean | `false` | Text shadow |
+| hide_hyphen | boolean | `false` | Hide hyphen caused by word breaking |
+| notify_on_ellipses | string[] | | Array of names of the controls to notify when text gets or loses ellipses |
+| enable_profanity_filter | boolean | `false` | If "bad" words should be censored |
+| locked_alpha | float | | Alpha/transparency of label when a parent has `enabled: false` |
+| font_size | enum | `normal` | Size of the text.
Possible values:
`small`
`normal`
`large`
`extra_large` |
+| font_scale_factor | float | `1.0` | Scale of the text |
+| localize | boolean | `false` | If ```text``` should be able to be translated |
+| line_padding | number | | Space between lines |
+| font_type | enum | `default` | Font of the text.
Possible values:
`default`
`rune`
`unicode`
`smooth`
`MinecraftTen`
or any other custom font |
+| backup_font_type | enum | `default` | Font used if `font_type` didn't work |
+| text_alignment | enum | | Text alignment direction. If it's not defined it will adjust automatically based on `anchor_from` and ```anchor_to``` |
+
+#### Legacy (no longer works)
+
+| Property Name | Type | Default Value | Description |
+| ------------- | :-----: | :-----------: | ------------------------------------------------------------------- |
+| wrap | boolean | `false` | Break text into lines if text is bigger than width of the element |
+| clip | boolean | `false` | |
+
+
+
+Use of `notify_on_ellipses`. Mostly used with hardcoded texts.
+
+
RP/ui/example_file.json
+
+```json
+{
+ "label": {
+ ...
+ "notify_on_ellipses": [
+ "my_button"
+ ]
+ },
+
+ "my_button": {
+ ...
+ "bindings": [
+ {
+ "binding_type": "view",
+ "source_property_name": "#using_ellipses",
+ "target_property_name": "#visible"
+ }
+ ]
+ }
+}
+```
+
+### Sprite
+
+| Property Name | Type | Default Value | Description |
+| --------------------------- | :-------------------------------------------: | :-----------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| texture | string | | Image path starting from pack root. (e.g. `"textures/ui/White"`) |
+| allow_debug_missing_texture | boolean | `true` | Display the missing_texture if the texture is not found |
+| uv | Vector [u, v] | | Start position of the texture mapping |
+| uv_size | Vector [width, height] | | Size of the texture mapping |
+| texture_file_system | string |`InUserPackage`| Source to get the texture.
Possible values:
`InUserPackage`
`InAppPackage`
`RawPath`
`RawPersistent`
`InSettingsDir`
`InExternalDir`
`InServerPackage`
`InDataDir`
`InUserDir`
`InWorldDir`
`StoreCache`
Usage is Unknown |
+| nineslice_size | int, Vector [x, y] or Vector [x0, y0, x1, y1] | | 9-slice. A method that divides an texture into 9 pieces. When resized the corners will stay in place and the rest will stretch |
+| tiled | boolean or enum | | If the texture will tile when the size of the UI element is bigger than the texture size.
Possible values:
`true`/`false`
`x`
`y` |
+| tiled_scale | Vector [sX, sY] | `false` | Scale of the tile textures |
+| clip_direction | enum | | Start point position for the `clip_ratio`. If `down`, the image will begin to appear from the bottom.
Possible values:
`left`
`right`
`up`
`down`
`center` |
+| clip_ratio | float | | How much to clip. From 0.0 to 1.0 |
+| clip_pixelperfect | boolean | | If the clip should try to be the most pixel accurate possible |
+| keep_ratio | boolean | `true` | Keep ratio when resizing image |
+| bilinear | boolean | `false` | Use the bilinear function when resizing the image |
+| fill | boolean | `false` | Scratch the image to the size |
+| $fit_to_width | boolean | | |
+| zip_folder | string | | |
+| grayscale | boolean | `false` | Render image in black and white |
+| force_texture_reload | boolean | | Reload image when the texture path is changed |
+| base_size | Vector [width, height] | | |
+
+To use clipping, bind a `#*_ratio` binding name to a `#clip-ratio` property with binding condition `"always"`. Progress arrow and fuel images in furnace UI work like this.
+
+### Input
+
+| Property Name | Type | Default Value | Description |
+| ---------------------------------- | :-----------------------------------------------------------------------------------------: | :-----------: | ----------- |
+| button_mappings | Vector of [mapping object](/json-ui/json-ui-documentation#button-mapping-array-object) | | |
+| modal | boolean | | |
+| inline_modal | boolean | | |
+| always_listen_to_input | boolean | | |
+| always_handle_pointer | boolean | | |
+| always_handle_controller_direction | boolean | | |
+| hover_enabled | boolean | | |
+| prevent_touch_input | boolean | | |
+| consume_event | boolean | | |
+| consume_hover_events | boolean | | |
+| gesture_tracking_button | string | | |
+
+#### Button Mapping Array Object
+
+| Property Name | Type | Default Value | Description |
+| -------------------------------- | :-----: | :-----------: | ---------------------------------------------------------------------------------- |
+| ignored | boolean | `false` | If mapping should be ignored |
+| from_button_id | string | | ID of the action that fires the event |
+| to_button_id | string | | ID of the action to be executed when event is fired |
+| mapping_type | enum | | Possible values:
`global`
`pressed`
`double_pressed`
`focused` |
+| scope | enum | | Possible values:
`view`
`controller` |
+| input_mode_condition | enum | | Possible values:
`not_gaze`
`not_gamepad`
`gamepad_and_not_gaze` |
+| ignore_input_scope | boolean | | |
+| consume_event | boolean | | |
+| handle_select | boolean | | |
+| handle_deselect | boolean | | |
+| button_up_right_of_first_refusal | boolean | | |
+
+### Focus
+
+| Property Name | Type | Default Value | Description |
+| ---------------------------- | :-----------------------------------------------------------------------------------------------------------: | :-----------: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| default_focus_precedence | int | | |
+| focus_enabled | boolean | | If the arrow keys or controller can focus the element |
+| focus_wrap_enabled | boolean | | |
+| focus_magnet_enabled | boolean | | |
+| focus_identifier | string | | Focus identifier for this element |
+| focus_change_down | string | | Identifier (`focus_identifier`) of the focusable element that will recieve focus when on button.menu_down. If you want to prevent the focus to escape from the bottom use `FOCUS_OVERRIDE_STOP` |
+| focus_change_up | string | | Identifier (`focus_identifier`) of the focusable element that will recieve focus when on button.menu_up. If you want to prevent the focus to escape from the top use `FOCUS_OVERRIDE_STOP` |
+| focus_change_left | string | | Identifier (`focus_identifier`) of the focusable element that will recieve focus when on button.menu_left. If you want to prevent the focus to escape from the left use `FOCUS_OVERRIDE_STOP` |
+| focus_change_right | string | | Identifier (`focus_identifier`) of the focusable element that will recieve focus when on button.menu_right. If you want to prevent the focus to escape from the right use `FOCUS_OVERRIDE_STOP` |
+| focus_mapping | array | | |
+| focus_container | boolean | | |
+| use_last_focus | boolean | | |
+| focus_navigation_mode_left | enum | | Possible values: `none`
`stop`
`custom`
`contained` |
+| focus_navigation_mode_right | enum | | Possible values: `none`
`stop`
`custom`
`contained` |
+| focus_navigation_mode_down | enum | | Possible values: `none`
`stop`
`custom`
`contained` |
+| focus_navigation_mode_up | enum | | Possible values: `none`
`stop`
`custom`
`contained` |
+| focus_container_custom_left | Vector of [focus container custom object](/json-ui/json-ui-documentation#focus-container-custom-array-object) | | |
+| focus_container_custom_right | Vector of [focus container custom object](/json-ui/json-ui-documentation#focus-container-custom-array-object) | | |
+| focus_container_custom_down | Vector of [focus container custom object](/json-ui/json-ui-documentation#focus-container-custom-array-object) | | |
+| focus_container_custom_up | Vector of [focus container custom object](/json-ui/json-ui-documentation#focus-container-custom-array-object) | | |
+
+
+#### Focus Container Custom Array Object
+
+| Property Name | Type | Description |
+| -------------------------- | :----: | ------------------------------------------------------------------------------------------------------------------------------ |
+| other_focus_container_name | string | Name of the UI control that will receive focus when on button.menu_left, button.menu_right, button.menu_up or button.menu_down |
+| focus_id_inside | string | Identifier (`focus_identifier`) of the focusable child control of the `other_focus_container_name` that will recieve the focus |
+
+
RP/ui/example_file.json
+
+```json
+...
+{
+ "other_panel": {
+ ...
+ "focus_container": true,
+ "controls": [
+ ...
+ ]
+ }
+},
+{
+ "input_panel": {
+ ...
+ "focus_container_custom_up": [
+ {
+ "other_focus_container_name": "other_panel" // name of the object that will receive focus when the focus of this container ends on `button.menu_up`
+ }
+ ]
+ }
+}
+...
+```
+
+### Button
+
+| Property Name | Type | Default Value | Description |
+| --------------- | :----: | :-----------: | -------------------------------------------------------------------------- |
+| default_control | string | | Name of the child control that will be displayed only in the default state |
+| hover_control | string | | Name of the child control that will be displayed only in the hover state |
+| pressed_control | string | | Name of the child control that will be displayed only in the pressed state |
+| locked_control | string | | Name of the child control that will be displayed only in the locked state |
+
+### Toggle
+
+| Property Name | Type | Default Value | Description |
+| ------------------------------ | :-----: | :-----------: | ----------------------------------------------------------------------------------------- |
+| radio_toggle_group | boolean | | |
+| toggle_name | string | | Identifier for the toggle group it belongs to. It can be a custom one. |
+| toggle_default_state | boolean | | |
+| toggle_group_forced_index | int | | Index of the toggle in its group |
+| toggle_group_default_selected | int | | Index of the default toggle of the its group |
+| reset_on_focus_lost | boolean | | |
+| toggle_on_hover | string | | |
+| toggle_on_button | string | | |
+| toggle_off_button | string | | |
+| enable_directional_toggling | boolean | | |
+| toggle_grid_collection_name | string | | Name of the collection the toggle belongs to |
+| checked_control | string | | Name of the child control that will be displayed only in the checked state |
+| unchecked_control | string | | Name of the child control that will be displayed only in the unchecked state |
+| checked_hover_control | string | | Name of the child control that will be displayed only in the checked hover state |
+| unchecked_hover_control | string | | Name of the child control that will be displayed only in the unchecked hover state |
+| checked_locked_control | string | | Name of the child control that will be displayed only in the checked locked state |
+| unchecked_locked_control | string | | Name of the child control that will be displayed only in the unchecked locked state |
+| checked_locked_hover_control | string | | Name of the child control that will be displayed only in the checked locked hover state |
+| unchecked_locked_hover_control | string | | Name of the child control that will be displayed only in the unchecked locked hover state |
+### HardCoded Toggles
+
+In some screens,navigation tab group has its mapping default selected tabs,such as settings or inventory.
+I guess these values are right.
+```json
+$search_index - $construction_index
+$survival_layout_index - $construction_index
+$recipe_book_layout_index - $equipment_index
+$creative_layout_index - $items_index
+``````
+And there are some must toggles in setting and inventory,even though you can not get a warning without dev version and open the assert diagnosis,they exactly esist and controlled by a function called *ScreenView::_passViewCommand::
::()::::operator()*,when you totally modify these screens,you may meet this assertion.
+
+For example,in setting that is accessibility and in inventory,the construction,equipment,items and nature tabs are must.
+### Dropdown
+
+| Property Name | Type | Default Value | Description |
+| ------------------------ | :----: | :-----------: | -------------------------------------------------------------------- |
+| dropdown_name | string | | Identifier for the dropdown |
+| dropdown_content_control | string | | Name of the child control that will behave as the root content panel |
+| dropdown_area | string | | Name of the child control that will behave as the inside content |
+
+### Sound
+
+| Property Name | Type | Description |
+| ------------- | :------------------------------------------------------------------------------: | ------------------------------------------------------------------------------------------------------------------- |
+| sound_name | string | Name of the sound defined in the `RP/sounds/sound_definitions.json` file that plays when the pressed event is fired |
+| sound_volume | float | Volume of the sound |
+| sound_pitch | float | Pitch of the sound |
+| sounds | Vector of [sound object](/json-ui/json-ui-documentation#sound-array-object) | Array of the sounds to play when the pressed event is fired |
+
+#### Sound Array Object
+
+| Property Name | Type | Description |
+| ------------------------- | :----: | ------------------------------------------------------------------------------------------------------------------- |
+| sound_name | string | Name of the sound defined in the `RP/sounds/sound_definitions.json` file that plays when the pressed event is fired |
+| sound_volume | float | Volume of the sound |
+| sound_pitch | float | Pitch of the sound |
+| min_seconds_between_plays | float | Seconds of wait before the sound can be played again |
+
+
+### Collection
+
+| Property Name | Type | Description |
+| --------------- | :----: | --------------------------------- |
+| collection_name | string | Name of the collection to be used |
+
+### Text Edit
+
+| Property Name | Type | Default Value | Description |
+| ---------------------------------- | :-----: | :-----------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| text_box_name | string | | Identifier for text box |
+| text_edit_box_grid_collection_name | string | | Name of the collection the `edit_box` belongs to |
+| constrain_to_rect | boolean | | |
+| enabled_newline | boolean | | Allows multiline text |
+| text_type | enum | | Type of characters that the user is allowed to type in th text field.
Possible values:
`ExtendedASCII`
`IdentifierChars`
`NumberChars` |
+| max_length | int | | Maximum number of characters allow in the text field |
+| text_control | string | | Name of the child control that will be used for displaying the text |
+| place_holder_control | string | | Name of the child control that will be used for display the placeholder text |
+| can_be_deselected | boolean | | |
+| always_listening | boolean | | |
+| virtual_keyboard_buffer_control | string | | |
+
+### Slider
+
+| Property Name | Type | Default Value | Description |
+| ---------------------------- | :-----: | :-----------: | ------------------------------------------------------------------------------------------------------------ |
+| slider_track_button | string | | ID of the action for the slider track |
+| slider_small_decrease_button | string | | ID of the action for the decrease slider |
+| slider_small_increase_button | string | | ID of the action for the increase slider |
+| slider_steps | int | | nHow many steps (or values) does the slider have |
+| slider_direction | enum | | Orientation of the slider movement.
Possible values:
`vertical`
`horizontal` |
+| slider_timeout | number | | |
+| slider_collection_name | string | | Name of the collection the slider belongs to |
+| slider_name | string | | Identifier for the slider |
+| slider_select_on_hover | boolean | | Focus slider when it's hovered |
+| slider_selected_button | string | | ID of the action for when the slider is selected |
+| slider_deselected_button | string | | ID of the action for when the slider is deselected |
+| slider_box_control | string | | Name of the child control that will behave as the slider thumb |
+| background_control | string | | Name of the child control that will behave as the slider background |
+| background_hover_control | string | | Name of the child control that will behave as the slider background on hover |
+| progress_control | string | | Name of the child control that will behave as the slider background overlay for the slider progress |
+| progress_hover_control | string | | Name of the child control that will behave as the slider background overlay for the slider progress on hover |
+
+### Slider Box
+
+| Property Name | Type | Default Value | Description |
+| --------------- | :----: | :-----------: | --------------------------------------------------------------------- |
+| default_control | string | | Name of the child control that will be displayed in the default state |
+| hover_control | string | | Name of the child control that will be displayed in the hover state |
+| locked_control | string | | Name of the child control that will be displayed in the locked state |
+
+### Scroll View
+
+| Property Name | Type | Default Value | Description |
+| -------------------------- | :-----: | :-----------: | ------------------------------------------------------------------------------------------------- |
+| scrollbar_track_button | string | | ID of the action for the track button |
+| scrollbar_touch_button | string | | ID of the action for the touch input |
+| scroll_speed | number | | Scrolling speed |
+| gesture_control_enabled | boolean | | |
+| always_handle_scrolling | boolean | | |
+| touch_mode | boolean | | |
+| scrollbar_box | string | | Name of child UI element or nested UI element that will behave as the scrollbar thumb. |
+| scrollbar_track | string | | Name of child UI element or nested UI element that will behave as the scrollbar track |
+| scroll_view_port | string | | Name of child UI element that will behave as the view port |
+| scroll_content | string | | Name of child UI element that will behave as the content root parent |
+| scroll_box_and_track_panel | string | | Name of child UI element that will contain the scrollbox and track controls |
+| jump_to_bottom_on_update | boolean | | Jump to the bottom when the scrolling panel has an update. For example, adds more children to it. |
+
+### Custom Render
+
+| Property Name | Type | Description |
+| ------------- | :---: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| renderer | enum | Possible values:
`hover_text_renderer`
`3d_structure_renderer`
`splash_text_renderer`
`ui_holo_cursor`
`trial_time_renderer`
`panorama_renderer`
`actor_portrait_renderer`
`banner_pattern_renderer`
`live_player_renderer`
`web_view_renderer`
`hunger_renderer`
`bubbles_renderer`
`mob_effects_renderer`
`cursor_renderer`
`progress_indicator_renderer`
`camera_renderer`
`horse_jump_renderer`
`armor_renderer`
`horse_heart_renderer`
`heart_renderer`
`hotbar_cooldown_renderer`
`hotbar_renderer`
`hud_player_renderer`
`live_horse_renderer`
`holographic_postrenderer`
`enchanting_book_renderer`
`debug_screen_renderer`
`gradient_renderer`
`paper_doll_renderer`
`name_tag_renderer`
`flying_item_renderer`
`inventory_item_renderer`
`credits_renderer`
`vignette_renderer`
`progress_bar_renderer`
`debug_overlay_renderer`
`background_renderer`
`bohr_model_renderer`
`experience_renderer` (Legacy, no longer works)
`menu_background_renderer` (Legacy, no longer works) |
+
+
+#### Renderers
+
+| Renderer Name | Description |
+| ----------------------------- | -------------------------------------------------------------------------------------------------------------- |
+| `flying_item_renderer` | The flying item when you change an item from a slot to another |
+| `inventory_item_renderer` | Renders an item icon. It only work in screens when ingame |
+| `credits_renderer` | The credits and end poem |
+| `vignette_renderer` | A vignette |
+| `name_tag_renderer` | It's something like the playername above the player head or the name above animals when used a nametag on them |
+| `paper_doll_renderer` | A skin model |
+| `debug_screen_renderer` | The debug text that appears on the beta/preview versions |
+| `enchanting_book_renderer` | The enchantment table book. It opens when there's an item to be enchanted |
+| `gradient_renderer` | Draws a gradient |
+| `live_horse_renderer` | The horse/donkey/llama... model |
+| `live_player_renderer` | The player model |
+| `hud_player_renderer` | The player model that imitates what the player is doing |
+| `hotbar_renderer` | Gets the hotbar slot image for each slot |
+| `hotbar_cooldown_renderer` | Draws the item cooldown |
+| `heart_renderer` | Draws the player health |
+| `horse_heart_renderer` | Draws the horse/donkey/... health |
+| `armor_renderer` | Draws the player armor |
+| `horse_jump_renderer` | Draws the horse jumping progress bar |
+| `hunger_renderer` | Draws the player hunger |
+| `bubbles_renderer` | Draws the respiration bubbles |
+| `mob_effects_renderer` | Draws the effects that are applied to the player |
+| `cursor_renderer` | Draws the crosshair in the center of the screen |
+| `progress_indicator_renderer` | Not used |
+| `camera_renderer` | Used for the camera item |
+| `web_view_renderer` | Shows a website view |
+| `banner_pattern_renderer` | Renders a banner |
+| `actor_portrait_renderer` | Draws an portrait |
+| `trial_time_renderer` | In the trial version of the game it renders the time left to be able to use the world |
+| `progress_bar_renderer` | Draws a progress bar. It has more than one type |
+| `3d_structure_renderer` | Renders the structure block structure |
+| `splash_text_renderer` | Gets and renders a random splash text from the `splashes.json` file |
+| `hover_text_renderer` | Draws a tooltip |
+| `ui_holo_cursor` | |
+| `panorama_renderer` | It's not the panoramas that appear behind the menus. It's the panorama of the worlds on the store. |
+
+
+#### Specific Properties
+
+| Property Name | Type | Renderer | Description |
+| -------------------- | :-----------------: | --------------------------------------------- | ------------------------------------------------------------- |
+| gradient_direction | enum | `gradient_renderer` | Possible values:
`vertical`
`horizontal` |
+| color1 | Vector [r, g, b, a] | `gradient_renderer` | |
+| color2 | Vector [r, g, b, a] | `gradient_renderer` | |
+| text_color | Vector [r, g, b, a] | `name_tag_renderer` | |
+| background_color | Vector [r, g, b, a] | `name_tag_renderer` | |
+| primary_color | Vector [r, g, b, a] | `progress_bar_renderer` | |
+| secondary_color | Vector [r, g, b, a] | `progress_bar_renderer` | |
+| camera_tilt_degrees | number | `paper_doll_renderer` | |
+| starting_rotation | number | `paper_doll_renderer` | |
+| use_selected_skin | boolean | `paper_doll_renderer` | |
+| use_uuid | boolean | `paper_doll_renderer` | |
+| use_skin_gui_scale | boolean | `paper_doll_renderer` | |
+| use_player_paperdoll | boolean | `paper_doll_renderer` | |
+| rotation | enum | `paper_doll_renderer` and `panorama_renderer` | Possible values:
`auto`
`gesture_x`
`custom_y` |
+| end_event | string | `credits_renderer` | |
+
+### Screen
+
+| Property Name | Type | Description |
+| ----------------------------------- | :-----: | ------------------------------------------------------------------------- |
+| render_only_when_topmost | boolean | Only render the screen if it's the most top screen in the screen stack |
+| screen_not_flushable | boolean | |
+| always_accepts_input | boolean | |
+| render_game_behind | boolean | Doesn't prevent screen below of being able to receive input from the user |
+| absorbs_input | boolean | |
+| is_showing_menu | boolean | |
+| is_modal | boolean | It's a screen modal |
+| should_steal_mouse | boolean | Captures the cursor and hides it |
+| low_frequency_rendering | boolean | Uses less memory to render the screen |
+| screen_draws_last | boolean | It's the last screen to be drawn/rendered |
+| vr_mode | boolean | |
+| force_render_below | boolean | Renders bottom screens below current screen in the screen stack |
+| send_telemetry | boolean | |
+| close_on_player_hurt | boolean | Close the screen is the player takes damage |
+| cache_screen | boolean | |
+| load_screen_immediately | boolean | |
+| gamepad_cursor | boolean | |
+| gamepad_cursor_deflection_mode | boolean | |
+| should_be_skipped_during_automation | boolean | |
+
+### Selection Wheel
+
+| Property Name | Type | Description |
+| ------------------------- | :------: | ----------- |
+| inner_radius | number | |
+| outer_radius | number | |
+| state_controls | string[] | |
+| slice_count | integer | |
+| button_name | string | |
+| iterate_left_button_name | string | |
+| iterate_right_button_name | string | |
+| initial_button_slice | integer | |
+
+### TTS
+| Property Name | Type | Description |
+| ----------------------------------- | :-----: | ------------------------------------------------------------------------------------------ |
+| tts_name | string | |
+| tts_control_header | string | |
+| tts_section_header | string | |
+| tts_control_type_order_priority | integer | |
+| tts_index_priority | integer | |
+| tts_toggle_on | string | Use by the `toggle` type |
+| tts_toggle_off | string | Use by the `toggle` type |
+| tts_override_control_value | string | |
+| tts_inherit_siblings | boolean | |
+| tts_value_changed | string | |
+| ttsSectionContainer | boolean | |
+| tts_ignore_count | boolean | |
+| tts_skip_message | boolean | |
+| tts_value_order_priority | integer | |
+| tts_play_on_unchanged_focus_control | boolean | |
+| tts_ignore_subsections | boolean | |
+| text_tts | string | |
+| use_priority | boolean | If the `priority` property will be use to determine the TTS priority of each child control |
+| priority | boolean | Order/index of priority that the element has on TTS |
+
+### Tab (Legacy)
+
+| Property Name | Type | Default Value | Description |
+| ------------- | :----: | :-----------: | --------------------------------------------------------- |
+| tab_index | int | | ID of tab in its group |
+| tab_group | int | | ID of the group the tab belongs to |
+| tab_control | string | | Name of the control that will show when the tab is active |
+
+### Carousel Text (Legacy)
+
+| Property Name | Type | Default Value | Description |
+| ------------- | :------------------: | :-----------: | ------------------------------- |
+| always_rotate | boolean | | |
+| rotate_speed | number | | |
+| hover_color | Vector [r, g, b, a], | | `color` when element is hovered |
+| hover_alpha | float | | `alpha` when element is hovered |
+| pressed_color | Vector [r, g, b, a], | | `color` when element is pressed |
+| pressed_alpha | float | | `alpha` when element is pressed |
+
+## Properties Additional Information
+
+### Anchor Properties
+
+Anchors allows the elements to align to a certain point where position, size, scale, animations, etc will take as the point for transformation.
+In JSON UI, there's two properties `anchor_from` and `anchor_to` that together achieve this.
+
+Most people use them by giving them the same value:
+
+RP/ui/example_file.json
+
+```json
+{
+ "element": {
+ "anchor_from": "top_left",
+ "anchor_to": "top_left"
+ }
+}
+```
+
+
+
+However, what happens when they have different values? Let's look at happens when `anchor_from: center` and `anchor_from: top_left`. It's the best example to demonstrate what's really happening.
+
+RP/ui/example_file.json
+
+```json
+{
+ "element": {
+ "anchor_from": "center",
+ "anchor_to": "top_left"
+ }
+}
+```
+
+
+
+The top left point of the element is in the center point of the parent element.
+
+Another example:
+
+
+
+The blue box top left point is in the top middle point of the parent element. As for the black box, the right midde point is in the center of the parent.
+
+
+Basically `anchor_to` is the anchor point in the element that will be attached to the `anchor_from` in the parent element.
+
+### Variables Property
+
+| Name | Type | Description |
+| ---------- | :----: | ----------- |
+| `requires` | string | condition |
+
+
+
+If you only have one variable to use, you should just use `"variables": {}`
+
+RP/ui/example_file.json
+
+```json
+{
+ "element": {
+ ...
+ "size": "$el_size",
+ "$el_size|default": ["100%", 20],
+ "variables": {
+ "requires": "$var_condition",
+ "$el_size": ["100%", 30]
+ }
+ }
+}
+```
+
+If you have multiple variables use `"variables": [{}]`
+
+RP/ui/example_file.json
+
+```json
+{
+ "element": {
+ ...
+ "size": "$el_size",
+ "offset": "$el_offset",
+ "$el_offset|default": [0, 40],
+ "$el_size|default": ["100%", 20],
+ "variables": [
+ {
+ "requires": "$var_condition",
+ "$el_size": ["100%", 30]
+ },
+ {
+ "requires": "$other_var_condition",
+ "$el_offset": [0, 15],
+ "$el_size": ["90%", 35]
+ }
+ ]
+ }
+}
+```
+
+## Property Bag
+
+| Name | Type | Requirements | Description |
+| ---------------------------------- | :-----------------: | ---------------------------------------------------- | --------------------------------------------------------------- |
+| #filtered_light_multiplier | float | type[custom]
renderer[inventory_item_renderer] | |
+| #banner_patterns | string | type[custom]
renderer[inventory_item_renderer] | |
+| #banner_colors | string | type[custom]
renderer[inventory_item_renderer] | |
+| #item_id_aux | int | type[custom]
renderer[inventory_item_renderer] | |
+| #item_custom_color | int | type[custom]
renderer[inventory_item_renderer] | |
+| #disabled_filter_visible | boolean | type[custom]
renderer[inventory_item_renderer] | |
+| #item_pickup_time | float | type[custom]
renderer[inventory_item_renderer] | |
+| #look_at_cursor | boolean | type[custom]
renderer[hud_player_renderer] | |
+| entity_type | enum | type[custom]
renderer[paper_doll_renderer] | Possible values:
`player`
`npc` |
+| #skin_idx | int | type[custom]
renderer[paper_doll_renderer] | |
+| #player_uuid | string | type[custom]
renderer[paper_doll_renderer] | |
+| #skin_rotation | boolean | type[custom]
renderer[paper_doll_renderer] | |
+| #custom_rot_y | float | type[custom]
renderer[paper_doll_renderer] | |
+| #gesture_delta_source | string | type[custom]
renderer[paper_doll_renderer] | |
+| #gesture_mouse_delta_x | string | type[custom]
renderer[paper_doll_renderer] | |
+| #pack_id | int | type[custom]
renderer[paper_doll_renderer] | |
+| #force_skin_update | string | type[custom]
renderer[paper_doll_renderer] | |
+| #progress_bar_visible | boolean | type[custom]
renderer[paper_doll_renderer] | |
+| #progress_bar_total_amount | float | type[custom]
renderer[progress_bar_renderer] | |
+| #progress_bar_current_amount | float | type[custom]
renderer[progress_bar_renderer] | |
+| is_durability | boolean | type[custom]
renderer[progress_bar_renderer] | |
+| round_value | boolean | type[custom]
renderer[progress_bar_renderer] | |
+| #hover_text | string | type[custom]
renderer[hover_text_renderer] | |
+| #open | boolean | type[custom]
renderer[enchanting_book_renderer] | |
+| flying_item_count | int | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_id_aux | int | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_custom_color | int | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_origin_position_x | float | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_origin_position_y | float | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_origin_scale | float | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_destination_position_x | float | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_destination_position_y | float | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_destination_scale | float | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_banner_patterns | string | type[custom]
renderer[flying_item_renderer] | |
+| flying_item_banner_colors | string | type[custom]
renderer[flying_item_renderer] | |
+| #use_heart_offset | boolean | type[custom]
renderer[armor_renderer] | |
+| opacity_override | float | type[custom]
renderer[vignette_renderer] | |
+| #playername | string | type[custom]
renderer[name_tag_renderer] | |
+| #x_padding | number | type[custom]
renderer[name_tag_renderer] | |
+| #entity_id | string or int | type[custom]
renderer[live_horse_renderer] | |
+| #hyperlink | string | type[button] | |
+| #anchored_offset_value_x | number | `use_anchored_offset` property | |
+| #anchored_offset_value_y | number | `use_anchored_offset` property | |
+| #size_binding_x | number | `use_anchored_offset` property | |
+| #size_binding_y | number | `use_anchored_offset` property | |
+| #has_focus | boolean | type[custom]
renderer[3d_structure_renderer] | |
+| #block_position | Vector [x, y, z] | type[custom]
renderer[3d_structure_renderer] | |
+| #top_right_block | Vector [x, y, z] | type[custom]
renderer[3d_structure_renderer] | |
+| #bottom_left_block | Vector [x, y, z] | type[custom]
renderer[3d_structure_renderer] | |
+| #include_entities | boolean | type[custom]
renderer[3d_structure_renderer] | |
+| #remove_blocks | boolean | type[custom]
renderer[3d_structure_renderer] | |
+| #include_players | boolean | type[custom]
renderer[3d_structure_renderer] | |
+| #slider_steps | number | type[slider] | |
+| #slider_value | number | type[slider] | |
+| #property_field | string | type[edit_box] | |
+| #hover_slice | int | type[selection_wheel] | |
+| #toggle_state | boolean | type[toggle] | |
+| #start_selected | boolean | | |
+| #tts_dialog_title | string | | |
+| #tts_dialog_body | string | | |
+| force_update | boolean | | |
+| #sub_command | string | | |
+| #panel_title | string | | |
+| #index | int | | |
+| #collection_prefix | string | | |
+| #collection_name | string | | |
+| #visible | boolean | | |
+| #common | Vector [r, g, b, a] | | |
+| #uncommon | Vector [r, g, b, a] | | |
+| #rare | Vector [r, g, b, a] | | |
+| #epic | Vector [r, g, b, a] | | |
+| #legendary | Vector [r, g, b, a] | | |
+| reset_group | enum | | Possible values:
`video`
`audio`
`accessibility` |
+| #text | string | | |
+| timer_duration | number | | |
+| #should_host | boolean | | |
+| is_local | boolean | | |
+| #is_left | boolean | | |
+| #is_skins | boolean | | |
+| #is_featured | boolean | | |
+| #image_name | string | | |
+| #is_dropdown | boolean | | |
+| #timer_field_count_to_show | number | | |
+| #owned_incompatible_prompt_color | Vector [r, g, b] | | |
+| #modal_title_text | string | | |
+| #modal_label_text | string | | |
+| #buttons_visible | boolean | | |
+| #no_buttons_visible | boolean | | |
+| #single_button_visible | boolean | | |
+| #two_buttons_visible | boolean | | |
+| is_fixed_inventory | boolean | | |
+| experimental_radio_button_state | string | | |
+| classic_radio_button_state | string | | |
+
+## Animations
+
+| Animation Property Name | Type | Description |
+| ------------------------- | :-----------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| anim_type | enum | Possible values:
`alpha`
`clip`
`color`
`flip_book`
`offset`
`size`
`uv`
`wait`
`aseprite_flip_book` |
+| duration | number | |
+| next | string | |
+| destroy_at_end | string | |
+| play_event | string | |
+| end_event | string | |
+| start_event | string | |
+| reset_event | string | |
+| easing | enum | Possible values:
`linear`
`spring`
`in_quad`
`out_quad`
`in_out_quad`
`in_cubic`
`out_cubic`
`in_out_cubic`
`in_quart`
`out_quart`
`in_out_quart`
`in_quint`
`out_quint`
`in_out_quint`
`in_sine`
`out_sine`
`in_out_sine`
`in_expo`
`out_expo`
`in_out_expo`
`in_circ`
`out_circ`
`in_out_circ`
`in_bounce`
`out_bounce`
`in_out_bounce`
`in_back`
`out_back`
`in_out_back`
`in_elastic`
`out_elastic`
`in_out_elastic` |
+| from | | |
+| to | | |
+| initial_uv | Vector [u, v] | |
+| fps | int | Frames per second |
+| frame_count | int | |
+| frame_step | number | |
+| reversible | boolean | |
+| resettable | boolean | |
+| scale_from_starting_alpha | boolean | |
+| activated | boolean | |
+
+For more information about the `aseprite_flip_book` animation type, please see our page on [Aseprite Animations](/json-ui/aseprite-animations)
+
+## Global Variables
+
+| Variable | Note |
+| -------------------------------------- | ----------------------------------------------------------------------------------------- |
+| $store_disabled | |
+| $game_pad | There's a controller connected to the device |
+| $mouse | There's a mouse connected to the device |
+| $touch | |
+| $trial | It's in the trial version of the game |
+| $build_platform_UWP | |
+| $win10_edition | |
+| $ignore_add_servers | |
+| $disable_gamertag_controls | |
+| $console_edition | |
+| $osx_edition | |
+| $pocket_edition | |
+| $education_edition | |
+| $world_archive_support | |
+| $file_picking_supported | |
+| $desktop_screen | If the classic UI is selected |
+| $pocket_screen | If the pocket UI is selected |
+| $is_holographic | |
+| $gear_vr | |
+| $oculus_rift | |
+| $is_living_room_mode | |
+| $is_reality_mode | |
+| $realms_beta | |
+| $fire_tv | |
+| $is_ios | |
+| $apple_tv | |
+| $is_windows_10_mobile | |
+| $image_picking_not_supported | |
+| $pre_release | |
+| $ios | |
+| $is_console | |
+| $can_quit | |
+| $is_settopbox | |
+| $microsoft_os | |
+| $apple_os | |
+| $google_os | |
+| $nx_os | |
+| $horizontal_safezone_size | |
+| $vertical_safezone_size | |
+| $can_splitscreen | |
+| $is_secondary_client | |
+| $multiplayer_requires_live_gold | |
+| $xbox_one | |
+| $is_pregame | If it's a out-game screen. It's in-game when you are playing in a world, server or realms |
+| $is_win10_arm | |
+| $vibration_supported | |
+| $is_mobile_vr | |
+| $is_xboxlive_enabled | |
+| $device_must_be_removed_for_xbl_signin | |
+| $is_publish | It's public and not a developer version |
+| $is_desktop | |
+| $is_ps4 | |
+| $is_on_3p_server | |
+| $ignore_3rd_party_servers | |
+| $is_berwick | |
+
+## Hardcoded Hyperlinks
+
+`#hyperlink` doesn't allow custom urls. These are the ones that will work:
+
+- `http://education.minecraft.net/eula`
+- `http://pocketbeta.minecraft.net/p/how-to-join-and-leave-beta.html`
+- `http://aka.ms/minecraftrealmsfb`
+- `http://aka.ms/minecraftrealmsterms`
+- `http://aka.ms/minecraftfb`
+- `http://aka.ms/minecraftedusupport`
+- `https://aka.ms/blockxboxmessages`
+- `http://aka.ms/minecraftfbbeta`
+- `https://minecraft.net/attribution`
+- `http://aka.ms/mcedulogs`
+- `https://minecraft.net/licensed-content/`
+- `https://education.minecraft.net/eula`
+- `https://aka.ms/mcedulogs`
+- `https://aka.ms/minecraftrealmsterms`
+- `https://aka.ms/minecraftfb`
+- `https://aka.ms/minecraftfbbeta`
+- `https://aka.ms/minecraftedusupport`
+- `https://itunes.apple.com/us/app/minecraft/id479516143?mt=8`
+- `https://account.xbox.com/Settings`
+- `https://aka.ms/meeterms`
+- `https://aka.ms/privacy`
+- `https://aka.ms/MCBanned`
+- `https://aka.ms/MCMultiplayerHelp`
+- `https://aka.ms/meeeula`
+- `https://aka.ms/mee_privacy`
+- `https://www.minecraft.net/attribution/?hideChrome`
+- `https://aka.ms/switchattribution`
+- `https://www.minecraft.net/licensed-content/?hideChrome`
+- `https://aka.ms/switchcontent`
+- `https://social.xbox.com/changegamertag`
+
+## Hardcoded Button IDs
+
+Some of them only work in specific screens.
+
+### Buttons IDs:
+
+- `button.menu_exit`
+- `button.menu_cancel` (`Escape` key or Controller `B`)
+- `button.menu_inventory_cancel` (`Open Inventory` keybinding)
+- `button.menu_ok` (`Enter` key)
+- `button.menu_select` (Mouse click)
+- `button.controller_select` (Controller `X`)
+- `button.menu_secondary_select`
+- `button.controller_secondary_select`
+- `button.controller_secondary_select_left`
+- `button.controller_secondary_select_right` (Controller `R3`)
+- `button.controller_start`
+- `button.menu_up` (`Arrow Up` key)
+- `button.menu_down` (`Arrow Down` key)
+- `button.menu_left` (`Arrow Left` key)
+- `button.menu_right` (`Arrow Right` key)
+- `button.menu_tab_left` (`Menu Tab Left` keybinding or Controller `Left Bumper`)
+- `button.menu_tab_right` (`Menu Tab Right` keybinding or Controller `Right Bumper`)
+- `button.menu_alternate_tab_left`
+- `button.menu_alternate_tab_right`
+- `button.menu_autocomplete` (Uses `Tab` key)
+- `button.menu_autocomplete_back`
+- `button.controller_autocomplete`
+- `button.controller_autocomplete_back`
+- `button.menu_textedit_up` (Uses `Arrow Up` key)
+- `button.menu_textedit_down` (Uses `Arrow Down` key)
+- `button.controller_textedit_up`
+- `button.controller_textedit_down`
+- `button.menu_auto_place`
+- `button.menu_inventory_drop` (`Drop Item` keybinding)
+- `button.menu_inventory_drop_all` (`Drop Item` + `Control` key)
+- `button.menu_clear`
+- `button.chat` (`Open Chat` keybinding)
+- `button.mobeffects` (`Mob Effects` keybinding)
+- `key.emote` (`Emote` keybinding)
+- `button.slot1` (Emote Wheel) (`1` key)
+- `button.slot2` (Emote Wheel) (`2` key)
+- `button.slot3` (Emote Wheel) (`3` key)
+- `button.slot4` (Emote Wheel) (`4` key)
+- `button.slot5` (Emote Wheel) (`5` key)
+- `button.slot6` (Emote Wheel) (`6` key)
+- `button.inventory_right` (`Mouse Wheel Up`)
+- `button.inventory_left` (`Mouse Wheel Down`)
+- `button.scoreboard`
+- `button.hide_gui` (`F1` key)
+- `button.hide_tooltips`
+- `button.hide_paperdoll`
+- `button.slot0`
+- `button.slot1` (`1` key)
+- `button.slot2` (`2` key)
+- `button.slot3` (`3` key)
+- `button.slot4` (`4` key)
+- `button.slot5` (`5` key)
+- `button.slot6` (`6` key)
+- `button.slot7` (`7` key)
+- `button.slot8` (`8` key)
+- `button.slot9` (`9` key)
+- `button.menu_vr_realign`
+- `any` (literally the name of it)
+
+### Specific Screen Button IDs:
+
+#### Settings (`ui/settings_screen.json`)
+
+- `button.open_content_log_history`
+- `button.clear_content_log_files`
+- `button.clear_msa_token_button`
+- `button.terms_and_conditions_popup`
+- `button.credits`
+- `button.unlink_msa`
+- `button.attribute_popup`
+- `button.licensed_content`
+- `button.font_license`
+- `button.tos_hyperlink`
+- `button.privpol_hyperlink`
+- `button.tos_popup`
+- `button.privpol_popup`
+- `button.binding_button`
+- `button.reset_binding`
+- `button.reset_keyboard_bindings`
+- `button.view_account_errors`
+
+#### Book (`ui/book_screen.json`)
+
+- `button.prev_page`
+- `button.next_page`
+- `button.book_exit`
+
+#### Chat (`ui/chat_screen.json`)
+
+- `button.send`
+- `button.chat_autocomplete`
+- `button.chat_autocomplete_back`
+- `button.chat_previous_message`
+- `button.chat_next_message`
+- `button.chat_menu_cancel`
+
+#### Command Block (`ui/command_block_screen.json`)
+
+- `command_block.input_minimize`
+- `button.chat_autocomplete`
+- `button.chat_autocomplete_back`
+
+#### Comment (`ui/comment_screen.json`)
+
+- `button.comment_options_close`
+- `button.comment_feed_options_close`
+- `button.close_comments`
+- `button.comment_next_button`
+- `button.comment_prev_button`
+
+#### Credits (`ui/credits_screen.json`)
+
+- `button.show_skip`
+
+#### Death Menu (`ui/death_screen.json`)
+
+- `button.respawn_button`
+- `button.main_menu_button`
+
+#### Emote Wheel (`ui/emote_screen_wheel.json`)
+
+- `button.rebind_mode`
+- `button.dressing_room`
+- `button.emote_selected`
+- `button.select_emote_slot_0`
+- `button.select_emote_slot_1`
+- `button.select_emote_slot_2`
+- `button.select_emote_slot_3`
+- `button.select_emote_slot_4`
+- `button.select_emote_slot_5`
+- `button.iterate_selection_left`
+- `button.iterate_selection_right`
+
+#### Feed (`ui/feed_screen.json`)
+
+- `button.feed_image`
+- `button.newpost`
+- `button.add_screenshot`
+- `button.feed_comment`
+- `button.feed_prev_button`
+- `button.feed_next_button`
+- `button.feed_new_post_close`
+- `button.feed_options_close`
+- `button.close_feed`
+
+#### Game Menu (`ui/pause_screen.json`)
+
+- `button.to_profile_or_skins_screen`
+- `button.player_profile_card`
+- `button.menu_continue`
+- `button.menu_server_store`
+- `button.screenshot`
+- `button.menu_how_to_play`
+- `button.menu_feedback`
+- `button.menu_permission`
+- `button.menu_invite_players`
+- `button.menu_quit`
+- `button.menu_feed`
+- `button.pause_focus_filler`
+
+#### In Bed (`ui/in_bed_screen.json`)
+
+- `button.wake_up_button`
+
+#### Invite (`ui/invite_screen.json`)
+
+- `button.add_friend`
+- `button.add_member`
+- `button.send_invites`
+
+#### Manage Feed (`ui/manage_feed_screen.json`)
+
+- `button.manage_feed_prev_button`
+- `button.manage_feed_next_button`
+- `button.manage_feed_ignore`
+- `button.manage_feed_delete`
+- `button.close_manage_feed`
+
+#### Anvil (`ui/anvil_screen.json`)
+
+- `button.anvil_take_all_place_all`
+- `button.anvil_coalesce_stack`
+
+#### Cartography Table (`ui/cartography_screen.json`)
+
+- `button.cartography_result_take_all_place_all`
+
+#### Enchanting Table (`ui/enchanting_table_screen.json`)
+
+- `button.enchant`
+
+#### Grindstone (`ui/grindstone_screen.json`)
+
+- `button.grindstone_take_all_place_all`
+- `button.grindstone_coalesce_stack`
+
+#### Loom (`ui/loom_screen.json`)
+
+- `button.loom_result_take_all_place_all`
+- `button.pattern_select`
+
+#### Villager Trade (`ui/trade_screen.json`)
+
+- `button.cycle_recipe_left`
+- `button.cycle_recipe_right`
+- `button.trade_take_all_place_all`
+- `button.trade_take_half_place_one`
+- `button.trade_coalesce_stack`
+
+#### Play (`ui/play_screen.json`)
+
+- `button.menu_sign_in_to_view_realms`
+- `button.menu_realms_world_item_edit`
+- `button.menu_realms_feed`
+- `button.menu_realms_world_item_remove`
+- `button.menu_network_world_item`
+- `button.menu_network_server_world_edit`
+- `button.connect_to_third_party_server`
+- `button.view_third_party_server_offers`
+- `button.description_read_toggle`
+- `button.news_read_toggle`
+- `button.local_world_upload`
+- `button.menu_start_local_world`
+- `button.convert_legacy_world`
+- `button.menu_local_world_item_edit`
+- `button.menu_legacy_world_item_delete`
+- `button.import_beta_retail_local_world`
+- `button.import_beta_retail_legacy_world`
+- `button.menu_network_add_friend`
+- `button.menu_network_join_by_code`
+- `button.menu_quick_play`
+- `button.new_world_upload`
+- `button.menu_local_world_create`
+- `button.create_on_realms_button`
+- `button.archived_world_upload`
+- `button.menu_import_level`
+- `button.menu_sync_legacy_worlds`
+- `button.realms_warning_more_info`
+- `button.menu_realm_world_trial`
+- `button.menu_realm_nintendo_first_realm_purchase_button`
+- `button.no_local_worlds_launch_help`
+- `button.menu_network_join_by_code_popup_join`
+- `button.join_server_anyway`
+- `button.cancel_join_server`
+
+### Others
+
+- `button.try_menu_exit`
+- `button.close_dialog`
+- `button.menu_play`
+- `$play_button_target` (**hardcoded**)
+- `button.menu_store`
+- `button.menu_achievements`
+- `button.menu_settings`
+- `button.signin`
+- `button.menu_skins`
+- `button.to_profile_screen`
+- `button.menu_courses`
+- `button.menu_tutorial`
+- `button.featured_world`
+- `button.switch_accounts`
+- `button.launch_editions`
+- `button.edu_feedback`
+- `button.edu_resources`
+- `button.menu_buy_game`
+- `button.menu_invite_notification`
+- `button.search`
+- `button.hotbar_inventory_button`
+- `button.select_offer`
+- `button.action_button`
+- `button.create_realm`
+- `button.switch_accounts`
+- `button.hotbar_select`
+- `button.hotbar_ok`
+- `button.slot_pressed`
+- `button.hotbar_inventory_left`
+- `button.hotbar_inventory_right`
+- `button.hide_gui_all`
+- `button.hide_tooltips_hud`
+- `button.hide_paperdoll_hud`
+- `button.slot_1`
+- `button.slot_2`
+- `button.slot_3`
+- `button.slot_4`
+- `button.slot_5`
+- `button.slot_6`
+- `button.slot_7`
+- `button.slot_8`
+- `button.slot_9`
+- `button.slot_0`
+- `button.chat`
+- `button.menu_continue`
+- `user_confirm_dialog.escape`
+- `user_confirm_dialog.left_button`
+- `user_confirm_dialog.middle_button`
+- `user_confirm_dialog.rightcancel_button`
+- `button.view_skin`
+- `button.delete_action`
+- `button.exit_student`
+- `button.play_video`
+- `button.menu_store_error`
+- `button.left_panel_tab_increment`
+- `button.left_panel_tab_decrement`
+- `button.right_panel_tab_increment`
+- `button.right_panel_tab_decrement`
+- `button.layout_increment`
+- `button.layout_decrement`
+- `button.is_hovered`
+- `button.container_take_all_place_all`
+- `button.container_take_half_place_one`
+- `button.container_auto_place`
+- `button.coalesce_stack`
+- `button.shape_drawing`
+- `button.destroy_selection`
+- `button.clear_selected_recipe`
+- `button.clear_hotbar_or_remove_one`
+- `button.clear_hotbar_or_drop`
+- `button.container_reset_held`
+- `button.container_auto_place`
+- `button.container_slot_hovered`
+- `button.button_hovered`
+- `button.shift_pane_focus`
+- `button.focus_left`
+- `button.focus_right`
+- `button.filter_toggle_hovered`
+- `button.drop_one`
+- `button.cursor_drop_one`
+- `button.drop_all`
+- `button.cursor_drop_all`
+- `button.search_bar_clear`
+- `button.search_bar_selected`
+- `button.search_bar_deselected`
+- `button.menu_leave_screen`
+- `button.turn_doll`
+- `button.select_skin`
+- `button.skin_hovered`
+- `button.skin_unhovered`
+- `button.leave`
+- `button.leave_on_device`
+- `button.text_edit_box_selected`
+- `button.text_edit_box_deselected`
+- `button.text_edit_box_hovered`
+- `button.text_edit_box_clear`
+- `button.help`
+- `button.menu_open_uri`
+- `button.no_interaction`
+- `button.copy_to_clipboard`
+- ...
+
+## Hardcoded Collection Names
+
+All of them only in specific screens.
+
+### Screen specific:
+
+#### Book (`ui/book_screen.json`)
+
+- `book_pages`
+- `pick_collection`
+
+#### Bundle Purchase Warning (`ui/bundle_purchase_warning_screen.json`)
+
+- `owned_list`
+- `unowned_list`
+
+#### Chat (`ui/chat_screen.json`)
+
+- `auto_complete`
+- `font_colors`
+- `host_main_collection`
+- `players_collection`
+- `host_teleport_collection`
+- `host_time_collection`
+- `host_weather_collection`
+
+#### Choose Realm (`ui/choose_realm_screen.json`)
+
+- `realms_collection`
+
+#### Coin Purchase (`ui/coin_purchase_screen.json`)
+
+- `coin_purchase_grid`
+
+#### Comment (`ui/comment_screen.json`)
+
+- `comment_collection`
+
+#### Content Log History (`ui/content_log_history_screen.json`)
+
+- `content_log_message`
+
+#### Create World Upsell (`ui/create_world_upsell_screen.json`)
+
+- `world_list`
+- `realm_list`
+
+#### Custom Templates (`ui/custom_templates_screen.json`)
+
+- `templates_collection`
+
+#### Feed (`ui/feed_screen.json`)
+
+- `feed_collection`
+
+#### HUD (`ui/hud_screen.json`)
+
+- `boss_bars`
+- `chat_text_grid`
+- `hotbar_items`
+- `scoreboard_players`
+- `scoreboard_scores`
+- `left_helper_collection`
+- `right_helper_collection`
+
+#### Invite (`ui/invite_screen.json`)
+
+- `online_platform_friends`
+- `online_linked_account_friends`
+- `online_xbox_live_friends`
+- `offline_platform_friends`
+- `offline_linked_account_friends`
+- `offline_xbox_live_friends`
+
+#### Manage Feed (`ui/manage_feed_screen.json`)
+
+- `manage_feed_collection`
+
+#### Manifest Validation (`manifest_validation_screen.json`)
+
+- `pack_errors`
+
+#### Mob Effects (`ui/mob_effects_screen.json`)
+
+- `mob_effects_collection`
+
+#### Game Menu (`ui/pause_screen.json`)
+
+- `players_collection`
+
+#### PDP (`ui/pdp_screen.json`)
+
+- `factory_collection`
+- `ratings_star_collection`
+
+#### Permissions (`ui/permissions_screen.json`)
+
+- `players_collection` - it's also used in `pause_screen.json`
+- `permissions_collection`
+
+#### Persona (`ui/persona_screen.json`)
+
+- `color_collection`
+- `skin_pack_in_grid_item`
+- `persona_featured_skin_pack_collection`
+- `body_size_collection`
+- `arm_size_collection`
+- `category_featured_collection`
+- `main_featured_collection`
+- `profile_featured_collection`
+- `custom_section_collection`
+- `featured_collection`
+- `foobar_collection`
+- `emote_collection`
+
+#### Play (`ui/play_screen.json`)
+
+- `friends_network_worlds`
+- `cross_platform_friends_network_worlds`
+- `lan_network_worlds`
+- `personal_realms`
+- `friends_realms`
+- `servers_network_worlds`
+- `third_party_server_network_worlds`
+- `server_screenshot_collection`
+- `server_games_collection`
+- `local_worlds`
+- `legacy_worlds`
+- `beta_retail_local_worlds`
+- `personal_realms`
+- `loading_personal_realms`
+- `friends_realms`
+- `loading_friends_realms`
+
+#### Portfolio (`ui/portfolio_screen.json`)
+
+- `photos`
+
+#### Progress (`ui/progress_screen.json`)
+
+- `required_resourcepacks`
+- `optional_resourcepacks`
+
+#### Realms Pending Invitations (`ui/realms_pending_invitations_screen.json`)
+
+- `pending_invites_collection`
+
+#### Realms Settings (`ui/realms_settings_screen.json`)
+
+- `additional_realms_subscriptions_collection`
+- `realms_branch_collection`
+- `realms_backup_collection`
+- `members_collection`
+- `invited_friends_collection`
+- `uninvited_friends_collection`
+- `blocked_players_collection`
+
+#### Screenshot Picker (`ui/screenshot_picker_screen.json`)
+
+- `screenshotpicker_collection`
+
+#### Server Form (`ui/server_form.json`)
+
+- `custom_form`
+- `form_buttons`
+- `custom_dropdown`
+
+#### Settings (`ui/settings_screen.json`)
+
+- `keyboard_standard_collection`
+- `keyboard_full_collection`
+- `gamepad_collection`
+- `languages`
+- `realms_plus_subscriptions_collection`
+- `additional_realms_subscriptions_collection`
+- `#selected_pack_items_global`
+- `#available_pack_items_global`
+- `#realms_pack_items_global`
+- `#unowned_pack_items_global`
+- `#invalid_pack_items_global`
+- `#selected_pack_items_level`
+- `#available_pack_items_level`
+- `#realms_pack_items_level`
+- `#unowned_pack_items_level`
+- `#invalid_pack_items_level`
+- `#selected_pack_items_addon`
+- `#available_pack_items_addon`
+- `#realms_pack_items_addon`
+- `#unowned_pack_items_addon`
+- `#invalid_pack_items_addon`
+- `experimental_toggles`
+- `world_panel`
+- `world_template_panel`
+- `resource_panel`
+- `behavior_panel`
+- `skin_panel`
+- `cache_panel`
+- `dependent_packs_panel`
+- `dependency_panel`
+
+#### Structure Block (`ui/structure_editor_screen.json`)
+
+- `save_size_grid`
+- `save_offset_grid`
+- `load_offset_grid`
+- `export_size_grid`
+- `export_offset_grid`
+
+#### Seed Picker (`ui/ugc_viewer_screen.json`)
+
+- `ugc_items`
+
+#### World Templates (`ui/world_templates_screen.json`)
+
+- `world_templates`
+- `realms_plus_templates`
+- `custom_world_templates`
+- `#suggested_offers_collection`
+
+#### Anvil (`ui/anvil_screen.json`)
+
+- `anvil_input_items`
+- `anvil_material_items`
+- `anvil_result_items`
+
+#### Beacon (`ui/beacon_screen.json`)
+
+- `beacon_payment_items`
+- `speed`
+- `haste`
+- `resist`
+- `jump`
+- `strength`
+- `regen`
+- `extra`
+- `confirm`
+- `cancel`
+
+#### Brewing Stand (`ui/brewing_stand_screen.json`)
+
+- `brewing_fuel_item`
+- `brewing_input_item`
+- `brewing_result_items`
+
+#### Cartography Table (`ui/cartography_screen.json`)
+
+- `cartography_input_items`
+- `cartography_additional_items`
+- `cartography_result_items`
+
+#### Enchanting Table (`ui/enchanting_table_screen.json`)
+
+- `enchanting_input_items`
+- `enchanting_lapis_items`
+- `#enchant_buttons`
+
+#### Furnace (`ui/furnace_screen.json`)
+
+- `furnace_ingredient_items`
+- `furnace_fuel_items`
+- `furnace_output_items`
+
+#### Gridstone (`ui/grindstone_screen.json`)
+
+- `grindstone_input_items`
+- `grindstone_additional_items`
+- `grindstone_result_items`
+
+#### Horse (`ui/horse_screen.json`)
+
+- `horse_equip_items`
+
+#### Inventory (`ui/inventory_screen.json` and `ui/inventory_screen_pocket.json`)
+
+- `armor_items`
+- `offhand_items`
+- `crafting_input_items`
+- `crafting_output_items`
+- `recipe_book`
+
+#### Loom (`ui/loom_screen.json`)
+
+- `loom_input_items`
+- `loom_dye_items`
+- `loom_material_items`
+- `loom_result_items`
+- `patterns`
+
+#### Smithing Table (`ui/smithing_table_screen.json`)
+
+- `smithing_table_input_items`
+- `smithing_table_material_items`
+- `smithing_table_result_items`
+
+#### Stonecutter (`ui/stonecutter_screen.json`)
+
+- `stonecutter_input_items`
+- `stonecutter_result_items`
+- `stones`
+
+#### Villager Trade 2 (`ui/trade_2_screen.json`)
+
+- `trade2_ingredient1_item`
+- `trade2_ingredient2_item`
+- `trade2_result_item`
+- `trade_item_1`
+- `trade_item_2`
+- `sell_item`
+- `trades`
+- `trade_tiers`
+
+## Hardcoded Binding Names
+
+Some of them only work in specific screens.
+
+### Screen specific:
+
+#### Account Transfer Error (`ui/account_transfer_error_screen.json`)
+
+- `#error_title_text`
+- `#error_number_label`
+- `#error_number`
+- `#correlation_id_label`
+- `#correlation_id`
+
+#### Add External Server (`ui/add_external_server_screen.json`)
+
+- `#play_button_enabled`
+- `#play_button_disabled`
+- `#save_button_enabled`
+- `#save_button_disabled`
+
+#### Adhoc In Progress (`ui/adhoc_in_progress_screen.json`)
+
+- `#adhoc_title`
+
+#### Authentication (`ui/authentication_screen.json`)
+
+- `#sign_in_visible`
+- `#sign_in_ios_visible`
+- `#sign_in_button_visible`
+- `#sign_in_ios_buttons_visible`
+- `#authentication_message`
+- `#confirm_button_enabled`
+- `#edu_store_visible`
+- `#edu_store_purchase_info`
+- `#asking_to_buy_visible`
+- `#confirming_purchase_visible`
+- `#demo_choice_visible`
+- `#eula_visible`
+- `#popup_text`
+- `#popup_message_student_text`
+- `#popup_message_student_visible`
+- `#generic_popup_link_visible`
+- `#trial_purchase_link_visible`
+- `#show_popup_dismiss_button`
+
+#### Book (`ui/book_screen.json`)
+
+- `#screenshot_path`
+- `#is_photo_page`
+- `#is_text_page`
+- `#pick_grid_dimensions`
+- `#page_number`
+- `#title_text_box_item_name`
+- `#author_editable`
+- `#author_text_box_item_name`
+- `#editable`
+- `#viewing`
+- `#signing`
+- `#picking`
+- `#exporting`
+- `#page_visible`
+- `#pick_item_visible`
+- `#close_button_visible`
+- `#edit_controls_active`
+- `#finalize_button_enabled`
+
+#### Braze (`ui/braze_screen.json`)
+
+- `#image_texture`
+
+#### Bundle Purchase Warning (`ui/bundle_purchase_warning_screen.json`)
+
+- `#banner_visible`
+- `#offer_title`
+- `#keyart_path`
+- `#keyart_texture_file_system`
+
+#### Chat (`ui/chat_screen.json`)
+
+- `#keyboard_being_use`
+- `#keyboard_button_focus_override_up`
+- `#keyboard_button_focus_override_down`
+- `#keyboard_button_visible`
+- `#send_button_visible`
+- `#send_button_accessibility_text`
+- `#chat_visible`
+- `#message_text_box_content`
+- `#text_edit_box_focus_override_up`
+- `#text_edit_box_focus_override_down`
+- `#auto_complete_item`
+- `#auto_complete_text`
+- `#get_grid_size`
+- `#chat_title_text`
+- `#chat_typeface_visible`
+
+#### Choose Realm (`ui/choose_realm_screen.json`)
+
+- `#realms_grid_dimension`
+- `#world_button_focus_identifier`
+- `#ten_player_button_visible`
+- `#two_player_button_visible`
+- `#realms_world_player_count`
+- `#realms_game_online`
+- `#realms_game_unavailable`
+- `#realms_game_offline`
+
+#### Coin Purchase (`ui/coin_purchase_screen.json`)
+
+- `#bonus_coins`
+- `#coins_without_bonus`
+- `#coin_offer_texture_name`
+- `#coin_offer_texture_file_system`
+- `#bonus_coins_visible`
+- `#price_text`
+- `#coins_required_for_purchase`
+- `#show_missing_coins`
+- `#coin_offer_size`
+- `#has_coin_offers`
+- `#coin_loading_visible`
+
+#### Command Block (`ui/command_block_screen.json`)
+
+- `#maximized_input_visible`
+- `#block_type_icon_texture`
+- `#close_button_visible_binding_name`
+- `#command_impulse_mode`
+- `#command_chain_mode`
+- `#command_repeat_mode`
+- `#block_type_dropdown_toggle_label`
+- `#block_type_dropdown_label_color_binding`
+- `#block_type_dropdown_enabled`
+- `#command_conditional_mode`
+- `#command_unconditional_mode`
+- `#condition_dropdown_toggle_label`
+- `#condition_dropdown_enabled`
+- `#command_always_on_mode`
+- `#command_needs_redstone_mode`
+- `#redstone_dropdown_enabled`
+- `#command_hover_note`
+- `#execute_on_first_tick_enabled`
+- `#command_tick_delay`
+- `#command_text_edit`
+- `#command_output_text`
+- `#previous_block_type_text`
+- `#previous_block_type_text_color`
+- `#previous_condition_mode_text`
+- `#previous_redstone_mode_text`
+- `#minimize_button_visible_binding_name`
+
+#### Comment (`ui/comment_screen.json`)
+
+- `#report_to_club_button_visible_feeditem`
+- `#report_to_enforcement_button_visible_feeditem`
+- `#delete_button_visible_feeditem`
+- `#report_to_club_button_visible_comment`
+- `#report_to_enforcement_button_visible_comment`
+- `#delete_button_visible_comment`
+- `#comment_buttons_visible`
+- `#feed_comment_page_collection_length`
+- `#comment_content`
+- `#is_author_linked_account`
+- `#content`
+- `#text_visible`
+- `#likes_and_comments`
+- `#screenshot_texture`
+- `#screenshot_texture_source`
+- `#textpost_content`
+- `#textpost_visible`
+- `#comment_text_box`
+- `#comment_platform_tag`
+- `#comment_gamertag`
+- `#likes_and_time_since_comment_post`
+- `#author_gamertag`
+- `#time_since_feed_post`
+- `#author_platform_tag`
+- `#author_gamertag`
+
+#### Confirm MSA Unlink (`ui/confirm_msa_unlink_screen.json`)
+
+- `#unlink_warning_text`
+- `#unlink_consequences_acknowledged`
+- `#confirm_0`
+- `#confirm_0_enabled`
+- `#confirm_1`
+- `#confirm_1_enabled`
+- `#confirm_2`
+- `#confirm_2_enabled`
+- `#confirm_3`
+- `#confirm_3_enabled`
+
+#### Content Log History (`ui/content_log_history_screen.json`)
+
+- `#content_log_text`
+- `#messages_size`
+
+#### Create World Upsell (`ui/create_world_upsell.json`)
+
+- `#realm_button_text`
+- `#realm_trial_available`
+
+#### Anvil (`ui/anvil_screen.json`)
+
+- `#cost_text`
+- `#cost_text_green`
+- `#cost_text_red`
+
+#### Beacon (`ui/beacon_screen.json`)
+
+- `#supports_netherite`
+- `#extra_image_selection`
+
+#### Brewing Stand (`ui/brewing_stand_screen.json`)
+
+- `#empty_bottle_image_visible`
+- `#empty_fuel_image_visible`
+- `#brewing_bubbles_ratio`
+- `#brewing_fuel_ratio`
+- `#brewing_arrow_ratio`
+
+#### Cartography Table (`ui/cartography_screen.json`)
+
+- `#is_none_mode`
+- `#is_clone_mode`
+- `#is_rename_mode`
+- `#is_basic_map_mode`
+- `#is_locator_map_mode`
+- `#is_extend_mode`
+- `#is_locked_mode`
+- `#output_description`
+
+#### Enchanting Table (`ui/enchanting_table_screen.json`)
+
+- `#selectable_dust_is_visible`
+- `#unselectable_dust_is_visible`
+- `#runes`
+- `#cost`
+- `#unselectable_button_visibility`
+- `#selectable_button_visibility`
+- `#show_selected_button_highlight`
+- `#active_enchant`
+- `#inactive_enchant`
+- `#input_item_id`
+- `#output_item_id`
+- `#enchant_hint`
+- `#player_level_color`
+- `#player_level_info`
+- `#enchant_error`
+
+#### Furnace (`ui/furnace_screen.json`)
+
+- `#furnace_arrow_ratio`
+- `#furnace_flame_ratio`
+- `#output_name`
+
+#### Horse (`ui/horse_screen.json`)
+
+- `#entity_id`
+- `#equip_grid_dimensions`
+- `#inv_grid_dimensions`
+- `#sadle_slot_centered`
+- `#has_saddle_slot`
+- `#has_armor_slot`
+- `#has_only_armor_slot`
+- `#has_only_carpet_slot`
+- `#has_armor_and_saddle_slot`
+- `#has_carpet_and_saddle_slot`
+- `#is_chested`
+- `#renderer_tab_toggle`
+- `#chest_tab_toggle`
+
+#### Loom (`ui/loom_screen.json`)
+
+- `#pattern_cell_background_texture`
+- `#container_cell_background_texture`
+- `#empty_image_visible`
+- `#banner_patterns`
+- `#banner_colors`
+- `#pattern_selector_total_items`
+- `#result_patterns`
+- `#result_colors`
+- `#is_right_tab_loom`
+- `#is_left_tab_patterns`
+
+#### Stonecutter (`ui/stonecutter_screen.json`)
+
+- `#stone_cell_background_texture`
+- `#container_cell_background_texture`
+- `#item_stack_count`
+- `#stone_selector_total_items`
+- `#has_input_item`
+- `#is_right_tab_stonecutter`
+- `#is_left_tab_stones`
+
+#### Death (`ui/death_screen.json`)
+
+- `#death_reason_text`
+- `#respawn_visible`
+- `#quit_enabled`
+- `#quit_visible`
+- `#buttons_and_deathmessage_visible`
+
+#### Villager Trade2 (`ui/trade2_screen.json`)
+
+- `#name_label`
+- `#trade_cell_background_texture`
+- `#trade_item_count`
+- `#single_slash_visible`
+- `#double_slash_visible`
+- `#second_trade_item_count`
+- `#trade_price_different`
+- `#trade_cross_out_visible`
+- `#padding_around_sell_item`
+- `#trade_possible`
+- `#trade_toggle_state`
+- `#trade_toggle_enabled`
+- `#trade_tier_total`
+- `#tier_name`
+- `#is_tier_unlocked`
+- `#is_left_tab_trade`
+- `#show_level`
+- `#tier_visible`
+- `#trade_selector_total`
+- `#has_second_buy_item`
+- `#exp_bar_visible`
+- `#exp_progress`
+- `#exp_possible_progress`
+- `#trade_details_button_1_visible`
+- `#trade_details_button_2_visible`
+- `#enchantment_details_button_visible`
+- `#item_valid`
+
+### Value depends on the screen it is in:
+
+- `#title_text`
+- `#body_text`
+- `#hover_text`
+- `#cross_out_icon`
+- `#is_left_tab_inventory`
+- `#selected_hover_text`
+
+### Others:
+
+- `#tts_dialog_body`
+- `#button_enabled`
+- `#using_touch`
+- `#close_button_visible`
+
+## Settings
+
+### Sliders
+
+| Name | Slider Name | Value Binding Name | TTS Value (`tts_value_changed`) | Slider Text | Enabled Binding Name |
+| ------------------------- | ------------------------------- | -------------------------------- | ------------------------------- | --------------------------------------------- | ---------------------------------------- |
+| Brightness | `gamma` | `#gamma` | `#gamma_text_value` | `#gamma_slider_label` | `#gamma_enabled` |
+| Brightness (VR) | `vr_gamma` | `#vr_gamma` | `#vr_gamma_text_value` | `#vr_gamma_slider_label` | `#vr_gamma_enabled` |
+| HUD Opacity | `interface_opacity` | `#interface_opacity` | `#interface_opacity_text_value` | `#interface_opacity_slider_label` | `#interface_opacity_enabled` |
+| HUD Opacity (Splitscreen) | `splitscreen_interface_opacity` | `#splitscreen_interface_opacity` | `#interface_opacity_text_value` | `#splitscreen_interface_opacity_slider_label` | `#splitscreen_interface_opacity_enabled` |
+| Field Of View | `field_of_view` | `#field_of_view` | `#field_of_view_text_value` | `#field_of_view_slider_label` | `#field_of_view_enabled` |
+
+### Toggles
+
+| Name | Toggle Name | State Binding Name | Enabled Binding Name |
+| --------------------------------------- | ------------------------------------- | -------------------------------------- | ---------------------------------------------- |
+| Invert Y Axis (Mouse) | `keyboard_mouse_invert_y_axis` | `#keyboard_mouse_invert_y_axis` | `#keyboard_mouse_invert_y_axis_enabled` |
+| Auto Jump (Mouse) | `keyboard_mouse_autojump` | `#keyboard_mouse_autojump` | `#keyboard_mouse_autojump_enabled` |
+| Show Full Keyboard Options | `keyboard_show_full_keyboard_options` | `#keyboard_show_full_keyboard_options` | `#keyboard_show_full_keyboard_options_enabled` |
+| Hide Keyboard Tooltips | `hide_keyboard_tooltips` | `#hide_keyboard_tooltips` | `#hide_keyboard_tooltips_enabled` |
+| Content File Log | `content_log_file` | `#content_log_file` | `#content_log_file_enabled` |
+| Content Gui Log | `content_log_gui` | `#content_log_gui` | `#content_log_gui_enabled` |
+| Use SSO | `ad_use_single_sign_on` | `#ad_use_single_sign_on` | |
+| Auto Update OFF | `#auto_update_mode_off` | `#auto_update_mode_off` | |
+| Auto Update ON with Cellular | `#auto_update_mode_on_with_cellular` | `#auto_update_mode_on_with_cellular` | |
+| Auto Update on WiFi Only | `#auto_update_mode_on_wifi_only` | `#auto_update_mode_on_wifi_only` | |
+| Auto Update Enabled | `auto_update_enabled` | `#auto_update_enabled` | |
+| Cross Platform Enabled | `crossplatform_toggle` | `#crossplatform_toggle` | `#crossplatform_toggle_enabled` |
+| Allow Cellular Data | `allow_cellular_data` | `#allow_cellular_data` | `#allow_cellular_data_enabled` |
+| Websocket Encryption | `websocket_encryption` | `#websocket_encryption` | `#websocket_encryption_enabled` |
+| Only Trusted Skins Allowed | `only_trusted_skins_allowed` | `#only_trusted_skins_allowed` | `#only_trusted_skins_allowed_enabled` |
+| Storage Location External | `#storage_location_radio_external` | `#storage_location_radio_external` | `#file_storage_location_enabled` |
+| Storage Location App | `#storage_location_radio_package` | `#storage_location_radio_package` | `#file_storage_location_enabled` |
+| First Person Perspective | `#thirdperson_radio_first` | `#thirdperson_radio_first` | `#third_person_dropdown_enabled` |
+| Third Person Back Perspective | `#thirdperson_radio_third_back` | `#thirdperson_radio_third_back` | `#third_person_dropdown_enabled` |
+| Third Person Front Perspective | `#thirdperson_radio_third_front` | `#thirdperson_radio_third_front` | `#third_person_dropdown_enabled` |
+| Fullscreen | `full_screen` | `#full_screen` | `#full_screen_enabled` |
+| Hide Hand | `hide_hand` | `#hide_hand` | `#hide_hand_enabled` |
+| Hide Hand (VR) | `vr_hide_hand` | `#vr_hide_hand` | `#vr_hide_hand_enabled` |
+| Hide Paperdoll | `hide_paperdoll` | `#hide_paperdoll` | `#hide_paperdoll_enabled` |
+| Hide HUD | `hide_hud` | `#hide_hud` | `#hide_hud_enabled` |
+| Hide HUD (VR) | `vr_hide_hud` | `#vr_hide_hud` | `#vr_hide_hud_enabled` |
+| Screen Animations | `screen_animations` | `#screen_animations` | `#screen_animations_enabled` |
+| Split Screen Horizontally | `#split_screen_radio_horizontal` | `#split_screen_radio_horizontal` | `#split_screen_dropdown_enabled` |
+| Split Screen Vertically | `#split_screen_radio_vertical` | `#split_screen_radio_vertical` | `#split_screen_dropdown_enabled` |
+| Show Auto Save Icon | `show_auto_save_icon` | `#show_auto_save_icon` | `#show_auto_save_icon_enabled` |
+| Outline Selection | `classic_box_selection` | `#classic_box_selection` | `#classic_box_selection_enabled` |
+| Outline Selection (VR) | `vr_classic_box_selection` | `#vr_classic_box_selection` | `#vr_classic_box_selection_enabled` |
+| Show Players Names Ingame | `ingame_player_names` | `#ingame_player_names` | `#ingame_player_names_enabled` |
+| Show Players Names Ingame (Splitscreen) | `splitscreen_ingame_player_names` | `#splitscreen_ingame_player_names` | `#splitscreen_ingame_player_names_enabled` |
+| View Bobbing | `view_bobbing` | `#view_bobbing` | `#view_bobbing_enabled` |
+| Camera Shake | `camera_shake` | `#camera_shake` | `#camera_shake_enabled` |
+| Fancy Leaves | `transparent_leaves` | `#transparent_leaves` | `#transparent_leaves_enabled` |
+| Fancy Leaves (VR) | `vr_transparent_leaves` | `#vr_transparent_leaves` | `#vr_transparent_leaves_enabled` |
+| Fancy Bubbles | `bubble_particles` | `#bubble_particles` | `#bubble_particles_enabled` |
+| Render Clouds | `render_clouds` | `#render_clouds` | `#render_clouds_enabled` |
+| Fancy Clouds | `fancy_skies` | `#fancy_skies` | `#fancy_skies_enabled` |
+| Smooth Lighting | `smooth_lighting` | `#smooth_lighting` | `#smooth_lighting_enabled` |
+| Smooth Lighting (VR) | `graphics_toggle` | `#graphics_toggle` | `#graphics_toggle_enabled` |
+| Graphics | `graphics_toggle` | `#graphics_toggle` | `#graphics_toggle_enabled` |
+| Field of View | `field_of_view_toggle` | `#field_of_view_toggle` | `#field_of_view_toggle_enabled` |
+| Classic UI Profile | `#ui_profile_radio_classic` | `#ui_profile_radio_classic` | `#ui_profile_dropdown_enabled` |
+| Pocket UI Profile | `#ui_profile_radio_pocket` | `#ui_profile_radio_pocket` | `#ui_profile_dropdown_enabled` |
+| Texel Anti-Aliasing | `texel_aa` | `#texel_aa` | `#texel_aa_enabled` |
+| 3D Rendering (VR) | `vr_3d_rendering` | `#vr_3d_rendering` | `#vr_3d_rendering_enabled` |
+| Mirror Texture (VR) | `vr_mirror_texture` | `#vr_mirror_texture` | `#vr_mirror_texture_enabled` |
+| Hand Pointer Visible (VR) | `vr_hand_pointer` | `#vr_hand_pointer` | `#vr_hand_pointer_enabled` |
+| Hands Visible (VR) | `vr_hands_visible` | `#vr_hands_visible` | `#vr_hands_visible_enabled` |
+| Enable Auto TTS | `enable_auto_text_to_speech` | `#enable_auto_text_to_speech` | `#enable_auto_text_to_speech_enabled` |
+| Enable UI TTS | `enable_ui_text_to_speech` | `#enable_ui_text_to_speech` | `#enable_ui_text_to_speech_enabled` |
+| Enable Chat TTS | `enable_chat_text_to_speech` | `#enable_chat_text_to_speech` | `#enable_chat_text_to_speech_enabled` |
+| Enable Open Chat Message | `enable_open_chat_message` | `#enable_open_chat_message` | `#enable_open_chat_message_enabled` |
+| Camera Shake | `camera_shake` | `#camera_shake` | `#camera_shake_enabled` |
+| Languages (Collection) | `languages` | `#language_initial_selected` | |
+
+## Item ID Aux (`#item_id_aux`)
+
+| Name | ID | Aux Values |
+| ----------------- | :--: | :--------: |
+| diamond | 306 | 20054016 |
+| emerald | 519 | 34013184 |
+| gold_ingot | 308 | 20185088 |
+| iron_ingot | 307 | 20119552 |
+| netherite_ingot | 616 | 40370176 |
+| banner | 574 | 37617664 |
+| saddle | 373 | 24444928 |
+| cartography_table | -200 | -13107200 |
+| chest | 54 | 3538944 |
+| crafting_table | 58 | 3801088 |
+| loom | -204 | -13369344 |
+| stonecutter_block | -197 | -12910592 |
+
+#### How to calculate block item aux value:
+
+Aux = ID \* 65536
+
+ID = Aux / 65536
+65536 = Aux / ID
+
+Get all Item IDs [here](https://docs.microsoft.com/en-us/minecraft/creator/reference/content/addonsreference/examples/addonitems).
diff --git a/docs/wiki/bedrock-wiki-mirror.md b/docs/wiki/bedrock-wiki-mirror.md
new file mode 100644
index 00000000..e27873f4
--- /dev/null
+++ b/docs/wiki/bedrock-wiki-mirror.md
@@ -0,0 +1,7 @@
+---
+hidden: true
+---
+
+:::details 本页面镜像自 [BedrockWiki](https://wiki.bedrock.dev)
+根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。
+:::
\ No newline at end of file
diff --git a/entities/vuc-full b/entities/vuc-full
new file mode 100644
index 00000000..e69de29b
diff --git a/package-lock.json b/package-lock.json
index 18ccf52f..a92fb0c3 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -16,6 +16,7 @@
"gray-matter": "^4.0.3",
"marked": "^15.0.7",
"mermaid": "^11.5.0",
+ "openai": "^4.87.4",
"vitepress": "^1.6.3",
"vitepress-plugin-mermaid": "^2.0.17",
"vue": "^3.5.13"
@@ -1709,6 +1710,17 @@
"undici-types": "~6.20.0"
}
},
+ "node_modules/@types/node-fetch": {
+ "version": "2.6.12",
+ "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.12.tgz",
+ "integrity": "sha512-8nneRWKCg3rMtF69nLQJnOYUcbafYeFSjqkw3jCRLsqkWFlHaoQrr5mXmofFGOx3DKn7UfmBMyov8ySvLRVldA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "form-data": "^4.0.0"
+ }
+ },
"node_modules/@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
@@ -2003,6 +2015,19 @@
"url": "https://github.com/sponsors/antfu"
}
},
+ "node_modules/abort-controller": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
+ "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "event-target-shim": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6.5"
+ }
+ },
"node_modules/acorn": {
"version": "8.14.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
@@ -2016,6 +2041,19 @@
"node": ">=0.4.0"
}
},
+ "node_modules/agentkeepalive": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz",
+ "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "humanize-ms": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 8.0.0"
+ }
+ },
"node_modules/algoliasearch": {
"version": "5.21.0",
"resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.21.0.tgz",
@@ -2051,6 +2089,13 @@
"sprintf-js": "~1.0.2"
}
},
+ "node_modules/asynckit": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/birpc": {
"version": "0.2.19",
"resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.19.tgz",
@@ -2074,6 +2119,20 @@
"node": ">=8"
}
},
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/ccount": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz",
@@ -2135,6 +2194,19 @@
"chevrotain": "^11.0.0"
}
},
+ "node_modules/combined-stream": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "delayed-stream": "~1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.8"
+ }
+ },
"node_modules/comma-separated-tokens": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz",
@@ -2772,6 +2844,16 @@
"robust-predicates": "^3.0.2"
}
},
+ "node_modules/delayed-stream": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
"node_modules/dequal": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
@@ -2819,6 +2901,21 @@
"url": "https://dotenvx.com"
}
},
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/emoji-regex-xs": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz",
@@ -2839,6 +2936,55 @@
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/esbuild": {
"version": "0.25.1",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz",
@@ -2902,6 +3048,16 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/event-target-shim": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
+ "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/exsolve": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz",
@@ -2972,6 +3128,43 @@
"tabbable": "^6.2.0"
}
},
+ "node_modules/form-data": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
+ "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "asynckit": "^0.4.0",
+ "combined-stream": "^1.0.8",
+ "es-set-tostringtag": "^2.1.0",
+ "mime-types": "^2.1.12"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/form-data-encoder": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.2.tgz",
+ "integrity": "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/formdata-node": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-4.4.1.tgz",
+ "integrity": "sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "node-domexception": "1.0.0",
+ "web-streams-polyfill": "4.0.0-beta.3"
+ },
+ "engines": {
+ "node": ">= 12.20"
+ }
+ },
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
@@ -2987,6 +3180,55 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -3013,6 +3255,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/gray-matter": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz",
@@ -3036,6 +3291,48 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/hast-util-to-html": {
"version": "9.0.5",
"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz",
@@ -3092,6 +3389,16 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/humanize-ms": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
+ "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.0.0"
+ }
+ },
"node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -3314,6 +3621,16 @@
"node": ">= 18"
}
},
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
"node_modules/mdast-util-to-hast": {
"version": "13.2.0",
"resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
@@ -3483,6 +3800,29 @@
"node": ">=8.6"
}
},
+ "node_modules/mime-db": {
+ "version": "1.52.0",
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
+ "node_modules/mime-types": {
+ "version": "2.1.35",
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mime-db": "1.52.0"
+ },
+ "engines": {
+ "node": ">= 0.6"
+ }
+ },
"node_modules/minisearch": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.2.tgz",
@@ -3555,6 +3895,47 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/node-domexception": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
+ "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/jimmywarting"
+ },
+ {
+ "type": "github",
+ "url": "https://paypal.me/jimmywarting"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.5.0"
+ }
+ },
+ "node_modules/node-fetch": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
+ "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-url": "^5.0.0"
+ },
+ "engines": {
+ "node": "4.x || >=6.0.0"
+ },
+ "peerDependencies": {
+ "encoding": "^0.1.0"
+ },
+ "peerDependenciesMeta": {
+ "encoding": {
+ "optional": true
+ }
+ }
+ },
"node_modules/non-layered-tidy-tree-layout": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz",
@@ -3575,6 +3956,54 @@
"regex-recursion": "^6.0.2"
}
},
+ "node_modules/openai": {
+ "version": "4.87.4",
+ "resolved": "https://registry.npmjs.org/openai/-/openai-4.87.4.tgz",
+ "integrity": "sha512-lsfM20jZY4A0lNexfoUAkfmrEXxaTXvv8OKYicpeAJUNHObpRgkvC7pxPgMnB6gc9ID8OCwzzhEhBpNy69UR7w==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/node": "^18.11.18",
+ "@types/node-fetch": "^2.6.4",
+ "abort-controller": "^3.0.0",
+ "agentkeepalive": "^4.2.1",
+ "form-data-encoder": "1.7.2",
+ "formdata-node": "^4.3.2",
+ "node-fetch": "^2.6.7"
+ },
+ "bin": {
+ "openai": "bin/cli"
+ },
+ "peerDependencies": {
+ "ws": "^8.18.0",
+ "zod": "^3.23.8"
+ },
+ "peerDependenciesMeta": {
+ "ws": {
+ "optional": true
+ },
+ "zod": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/openai/node_modules/@types/node": {
+ "version": "18.19.80",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.80.tgz",
+ "integrity": "sha512-kEWeMwMeIvxYkeg1gTc01awpwLbfMRZXdIhwRcakd/KlK53jmRC26LqcbIt7fnAQTu5GzlnWmzA3H6+l1u6xxQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~5.26.4"
+ }
+ },
+ "node_modules/openai/node_modules/undici-types": {
+ "version": "5.26.5",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/package-manager-detector": {
"version": "0.2.11",
"resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz",
@@ -4036,6 +4465,13 @@
"node": ">=8.0"
}
},
+ "node_modules/tr46": {
+ "version": "0.0.3",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+ "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/trim-lines": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz",
@@ -4884,6 +5320,34 @@
}
}
},
+ "node_modules/web-streams-polyfill": {
+ "version": "4.0.0-beta.3",
+ "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz",
+ "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/webidl-conversions": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
+ "dev": true,
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/whatwg-url": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+ "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "~0.0.3",
+ "webidl-conversions": "^3.0.0"
+ }
+ },
"node_modules/zwitch": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz",
diff --git a/package.json b/package.json
index 1594e28a..c70e9876 100644
--- a/package.json
+++ b/package.json
@@ -19,6 +19,7 @@
"gray-matter": "^4.0.3",
"marked": "^15.0.7",
"mermaid": "^11.5.0",
+ "openai": "^4.87.4",
"vitepress": "^1.6.3",
"vitepress-plugin-mermaid": "^2.0.17",
"vue": "^3.5.13"
diff --git a/scripts/ai-translate.mjs b/scripts/ai-translate.mjs
new file mode 100644
index 00000000..4741656e
--- /dev/null
+++ b/scripts/ai-translate.mjs
@@ -0,0 +1,238 @@
+import fs from 'fs/promises';
+import path from 'path';
+import dotenv from 'dotenv';
+import OpenAI from 'openai';
+import { fileURLToPath } from 'url';
+import { createInterface } from 'readline';
+
+// 加载环境变量
+dotenv.config();
+
+// 检查环境变量是否存在
+const requiredEnvVars = ['OPENAI_API_KEY', 'OPENAI_BASE_URL', 'OPENAI_MODEL'];
+const missingEnvVars = requiredEnvVars.filter(varName => !process.env[varName]);
+
+if (missingEnvVars.length > 0) {
+ console.error(`❌ 缺少必要的环境变量: ${missingEnvVars.join(', ')}`);
+ console.error('请在.env文件中设置这些变量');
+ process.exit(1);
+}
+
+// 初始化OpenAI客户端
+const openai = new OpenAI({
+ apiKey: process.env.OPENAI_API_KEY,
+ baseURL: process.env.OPENAI_BASE_URL
+});
+
+const model = process.env.OPENAI_MODEL || 'gpt-4-turbo';
+
+// 获取命令行参数(相对路径)
+const args = process.argv.slice(2);
+
+if (args.length !== 1) {
+ console.error('❌ 请提供要翻译的目录的相对路径');
+ console.error('用法: node ai-translate.mjs <目录相对路径>');
+ process.exit(1);
+}
+
+// 获取脚本所在目录的绝对路径
+const scriptDir = path.dirname(fileURLToPath(import.meta.url));
+// 计算目标目录的绝对路径
+const targetDir = path.resolve(scriptDir, '..', args[0]);
+
+async function findMarkdownFiles(dir) {
+ const files = [];
+
+ // 检测文本是否包含中文的函数
+ function containsChinese(text) {
+ // 匹配中文字符的正则表达式
+ const chineseRegex = /[\u4e00-\u9fa5]/;
+ return chineseRegex.test(text);
+ }
+
+ async function traverse(currentDir) {
+ const entries = await fs.readdir(currentDir, { withFileTypes: true });
+
+ for (const entry of entries) {
+ const fullPath = path.join(currentDir, entry.name);
+
+ if (entry.isDirectory()) {
+ await traverse(fullPath);
+ } else if (entry.isFile() && entry.name.endsWith('.md')) {
+ try {
+ // 读取文件内容
+ const content = await fs.readFile(fullPath, 'utf-8');
+
+ // 如果文件不包含中文,则添加到待翻译列表
+ if (!containsChinese(content)) {
+ files.push(fullPath);
+ } else {
+ console.log(`⏭️ 跳过已包含中文的文件: ${path.relative(targetDir, fullPath)}`);
+ }
+ } catch (error) {
+ console.error(`❌ 读取文件 ${fullPath} 时出错:`, error.message);
+ }
+ }
+ }
+ }
+
+ await traverse(dir);
+ return files;
+}
+async function translateMarkdown(filePath) {
+ try {
+ console.log(`🔄 正在处理文件: ${path.relative(targetDir, filePath)}`);
+
+ // 读取Markdown内容
+ const content = await fs.readFile(filePath, 'utf-8');
+
+ // 创建翻译提示
+ const prompt = `你是一位专业的Minecraft基岩版文档翻译者,需要结合给出的原始英文文档,准确翻译为简体中文,保留所有的vitepress特性和组件。在翻译时,尽量保证概念传达的准确性,但是同时需要满足中文母语者的生活自然语序和语法和词语,阅读时需要尽量轻松和容易。
+翻译要求:
+- 包括头部的matter yml内容,也需要对应翻译。
+- 在开头根据matter yml的title字段,添加h1大标题(如果没有的话就不用添加)
+- 不需要翻译代码,但是需要翻译代码块中的注释。
+- 部分在开发时遇到的专有词汇,需要考虑是否需要保留英文原文。比如:Tick、Component、Entity、Block、Item等
+- 组件需要被替换为另一种表达形式,使用::: code-group :::包裹(别忘了末尾的:::),例子:
+::: code-group
+\`\`\`json [原始CodeHeader的值]
+xxx
+\`\`\`
+:::
+
+以下为待翻译内容:
+${content}`;
+
+ console.log(`🧠 开始翻译,请耐心等待...`);
+
+ // 使用OpenAI API进行流式翻译
+ const stream = await openai.chat.completions.create({
+ model: model,
+ messages: [
+ {
+ role: "system",
+ content: "你是一个专业的Markdown文档翻译助手,能够准确地将英文Markdown内容翻译成简体中文,同时保持原有格式和结构。"
+ },
+ {
+ role: "user",
+ content: prompt
+ }
+ ],
+ stream: true,
+ max_tokens: 8 * 1024,
+ response_format: { type: "text" },
+ });
+
+ let translatedContent = '';
+ let reasoningContent = '';
+
+ for await (const chunk of stream) {
+ // 提取思考过程和内容(如果有的话)
+ const reasoning = chunk.choices[0]?.delta?.reasoning_content || '';
+ const content = chunk.choices[0]?.delta?.content || '';
+
+ if (reasoning) {
+ process.stdout.write(reasoning);
+ reasoningContent += reasoning;
+ }
+
+ if (content) {
+ process.stdout.write(content);
+ translatedContent += content;
+ }
+ }
+
+ // 将翻译后的内容写入文件
+ await fs.writeFile(filePath, translatedContent.trim(), 'utf-8');
+ console.log(`\n✅ 文件翻译完成: ${path.relative(targetDir, filePath)}`);
+
+ return true;
+ } catch (error) {
+ console.error(`\n❌ 翻译 ${path.relative(targetDir, filePath)} 时出错:`);
+ console.error(error.message);
+ return false;
+ }
+}
+
+async function promptForConfirmation(message) {
+ const rl = createInterface({
+ input: process.stdin,
+ output: process.stdout
+ });
+
+ return new Promise(resolve => {
+ rl.question(message, answer => {
+ rl.close();
+ resolve(answer.toLowerCase() === 'y' || answer.toLowerCase() === 'yes');
+ });
+ });
+}
+
+async function main() {
+ try {
+ console.log(`🔍 正在扫描目录: ${targetDir}`);
+
+ // 检查目录是否存在
+ try {
+ await fs.access(targetDir);
+ } catch (error) {
+ console.error(`❌ 指定的目录不存在: ${targetDir}`);
+ process.exit(1);
+ }
+
+ // 查找所有Markdown文件
+ const markdownFiles = await findMarkdownFiles(targetDir);
+
+ if (markdownFiles.length === 0) {
+ console.log(`⚠️ 在 ${targetDir} 中没有找到Markdown文件`);
+ process.exit(0);
+ }
+
+ console.log(`🔎 找到 ${markdownFiles.length} 个Markdown文件`);
+ markdownFiles.forEach((file, index) => {
+ console.log(` ${index + 1}. ${path.relative(targetDir, file)}`);
+ });
+
+ // 请求确认
+ const confirmed = await promptForConfirmation(`⚠️ 此操作将翻译并覆盖以上文件。确认继续吗? (y/n): `);
+
+ if (!confirmed) {
+ console.log('❌ 操作已取消');
+ process.exit(0);
+ }
+
+ console.log('🚀 开始翻译...');
+
+ // 逐个翻译文件
+ let successful = 0;
+ let failed = 0;
+
+ for (let i = 0; i < markdownFiles.length; i++) {
+ const file = markdownFiles[i];
+ console.log(`\n[${i + 1}/${markdownFiles.length}] 处理文件: ${path.relative(targetDir, file)}`);
+
+ const success = await translateMarkdown(file);
+
+ if (success) {
+ successful++;
+ } else {
+ failed++;
+ }
+ }
+
+ console.log('\n📊 翻译统计:');
+ console.log(`✅ 成功: ${successful} 个文件`);
+ console.log(`❌ 失败: ${failed} 个文件`);
+
+ if (failed > 0) {
+ process.exit(1);
+ }
+ } catch (error) {
+ console.error('❌ 发生错误:');
+ console.error(error);
+ process.exit(1);
+ }
+}
+
+// 通过node指令手动执行,因为需要带参数:node scripts/ai-translate.mjs <目录相对路径>
+main();
\ No newline at end of file
diff --git a/scripts/sidebar.ts b/scripts/sidebar.ts
index f98751fe..95bcfadb 100644
--- a/scripts/sidebar.ts
+++ b/scripts/sidebar.ts
@@ -1,6 +1,7 @@
import fs from 'fs/promises';
import path from 'path';
import fg from 'fast-glob';
+import matter from 'gray-matter'
// 定义侧边栏项目接口
interface SidebarItem {
@@ -34,9 +35,16 @@ const CATEGORY_MAP: Record = {
* 从名称中提取排序数字
* 例如:'0-概述' 返回 0,'1-基础' 返回 1
*/
-function extractOrderNumber(name: string): number {
+function extractOrderNumber(name: string, matterData: any): number {
const match = name.match(/^(\d+)-/);
- return match ? parseInt(match[1], 10) : Number.MAX_SAFE_INTEGER; // 没有数字前缀的排在最后
+ if (match) {
+ return parseInt(match[1], 10);
+ } else if (matterData.order) {
+ return parseInt(matterData.order);
+ } else if (matterData.nav_order) {
+ return parseInt(matterData.nav_order);
+ }
+ return Number.MAX_SAFE_INTEGER;
}
/**
@@ -54,6 +62,14 @@ async function generateSidebar(): Promise> {
const segments = relativePath.split(path.sep);
const categoryKey = segments[0];
+ // 读取文件内容,然后通过matter读取头部信息
+ const fileContent = await fs.readFile(filePath, 'utf-8');
+ const { data: matterData } = matter(fileContent);
+
+ if (matterData.hidden) {
+ continue;
+ }
+
// 使用映射表获取显示名称
const categoryName = CATEGORY_MAP[categoryKey] || categoryKey;
@@ -77,11 +93,11 @@ async function generateSidebar(): Promise> {
link = `/${segment}`;
}
- const order = extractOrderNumber(segment); // 提取排序号
+ const order = extractOrderNumber(segment, matterData); // 提取排序号
if (isLast) {
// 添加最终文件项
- const title = await getTitleFromFile(filePath);
+ const title = await getTitleFromFile(filePath, matterData);
// 添加 activeMatch 以支持更精确的高亮匹配
const activeMatch = `^${link}(?:/|$)`;
currentLevel.push({ text: title, link, order, activeMatch });
@@ -158,25 +174,14 @@ function sortSidebarItems(items: SidebarItem[]): void {
/**
* 从文件 Frontmatter 或文件名提取标题
*/
-async function getTitleFromFile(filePath: string): Promise {
- try {
- const content = await fs.readFile(filePath, 'utf-8');
- // 寻找 title 在 frontmatter 中的位置
- const frontmatterMatch = content.match(/^---\s*[\s\S]*?title:\s*(.*?)[\r\n][\s\S]*?---/);
-
- if (frontmatterMatch && frontmatterMatch[1]) {
- // 清理标题(移除引号等)
- return frontmatterMatch[1].trim().replace(/['"]/g, '');
- }
-
- // 如果没有 frontmatter title,从文件名获取
- const basename = path.basename(filePath, '.md');
- // 普通文件,移除数字前缀和连字符
- return basename.replace(/^\d+-\s*/, '').replace(/-/g, ' ');
- } catch (error) {
- console.error(`读取文件失败: ${filePath}`, error);
- return path.basename(filePath, '.md');
+async function getTitleFromFile(filePath: string, matterData: any): Promise {
+ if (matterData.title) {
+ return matterData.title.trim().replace(/['"]/g, '');
}
+ // 如果没有 frontmatter title,从文件名获取
+ const basename = path.basename(filePath, '.md');
+ // 普通文件,移除数字前缀和连字符
+ return basename.replace(/^\d+-\s*/, '').replace(/-/g, ' ');
}
export default generateSidebar;