🧱Bedrock Academy
🎁 āĻšāĻžāϤ⧇-āĻ•āϞāĻŽā§‡ āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ

🎁 āĻĒā§āϰāĻœā§‡āĻ•ā§āϟ: The Guard Dog

āĻāĻ•āϟāĻž custom āĻŽāĻŦ āϝāĻž āĻĒā§āϞ⧇āϝāĻŧāĻžāϰāϕ⧇ follow āĻ•āϰāĻŦ⧇ āφāϰ āĻļāĻ¤ā§āϰ⧁āϕ⧇ āφāĻ•ā§āϰāĻŽāĻŖ āĻ•āϰāĻŦ⧇ — AI behavior āĻĻāĻŋāϝāĻŧ⧇āĨ¤ āϤ⧋āĻŽāĻžāϰ āĻĒā§āϰāĻĨāĻŽ 'āĻŦ⧁āĻĻā§āϧāĻŋāĻŽāĻžāύ' āĻŽāĻŦāĨ¤

⏱ ~30 āĻŽāĻŋāύāĻŋāϟ

āϧāĻžāĻĒ ā§§: BP entity — behavior āϏāĻš

behavior_pack/entities/guard_dog.json
1{
2 "format_version": "1.21.0",
3 "minecraft:entity": {
4 "description": {
5 "identifier": "myaddon:guard_dog",
6 "is_spawnable": true,
7 "is_summonable": true
8 },
9 "components": {
10 "minecraft:type_family": { "family": ["guard_dog", "mob"] },
11 "minecraft:health": { "value": 24, "max": 24 },
12 "minecraft:movement": { "value": 0.3 },
13 "minecraft:navigation.walk": { "can_path_over_water": true },
14 "minecraft:movement.basic": {},
15 "minecraft:jump.static": {},
16 "minecraft:physics": {},
17 "minecraft:collision_box": { "width": 0.6, "height": 0.8 },
18 "minecraft:attack": { "damage": 5 },ⓘ
19
20 "minecraft:behavior.follow_owner": {ⓘ
21 "priority": 4, "speed_multiplier": 1.2,
22 "start_distance": 10, "stop_distance": 2
23 },
24 "minecraft:behavior.nearest_attackable_target": {ⓘ
25 "priority": 2,
26 "must_see": true,
27 "entity_types": [
28 { "filters": { "test": "is_family", "subject": "other", "value": "monster" } }ⓘ
29 ]
30 },
31 "minecraft:behavior.melee_attack": { "priority": 3 },ⓘ
32 "minecraft:behavior.look_at_player": { "priority": 7 },
33 "minecraft:behavior.random_stroll": { "priority": 8 }ⓘ
34 }
35 }
36}
  • L18attack.damage: āĻ•āĻžāĻŽāĻĄāĻŧ⧇ āĻ•āϤ āĻĄā§āϝāĻžāĻŽā§‡āϜ āĻĻ⧇āĻŦ⧇āĨ¤
  • L20follow_owner: tame āĻ•āϰāĻž owner-āϕ⧇ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻŦ⧇āĨ¤
  • L24nearest_attackable_target: āĻ•āĻžāϕ⧇ āĻļāĻ¤ā§āϰ⧁ āϧāϰāĻŦ⧇ āϤāĻž āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤
  • L28is_family 'monster' → āĻļ⧁āϧ⧁ āĻļāĻ¤ā§āϰ⧁-āĻŽāĻŦāϕ⧇ āϟāĻžāĻ°ā§āϗ⧇āϟ āĻ•āϰāĻŦ⧇, āĻĒā§āϞ⧇āϝāĻŧāĻžāϰāϕ⧇ āύāϝāĻŧāĨ¤
  • L31melee_attack: āĻ•āĻžāϛ⧇ āĻ—āĻŋāϝāĻŧ⧇ āφāϘāĻžāϤ āĻ•āϰāĻžāϰ āφāϚāϰāĻŖāĨ¤
  • L33priority: āϛ⧋āϟ āϏāĻ‚āĻ–ā§āϝāĻž = āĻŦ⧇āĻļāĻŋ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĨ¤ āϏāĻ‚āϘāĻ°ā§āώ⧇ āϕ⧋āύāϟāĻž āφāϗ⧇ āϚāϞāĻŦ⧇ āϤāĻž āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤

āϧāĻžāĻĒ ā§¨: tame āĻ•āϰāĻžāϰ āϏ⧁āϝ⧋āĻ— (interact)

āĻĒā§āϞ⧇āϝāĻŧāĻžāϰ āĻšāĻžāĻĄāĻŧ (bone) āĻĻāĻŋāϝāĻŧ⧇ āĻĄāĻžāύ-āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāϞ⧇ tame āĻšāĻŦ⧇ — āĻāĻŽāύ āĻāĻ•āϟāĻž āϏāϰāϞ āϏ⧇āϟāφāĻĒ minecraft:behavior.follow_owner-āϕ⧇ āĻ…āĻ°ā§āĻĨāĻĒā§‚āĻ°ā§āĻŖ āĻ•āϰ⧇āĨ¤ āĻĒā§‚āĻ°ā§āĻŖ tameable āϏ⧇āϟāφāĻĒ (minecraft:tameable) āĻĒāϰ⧇āϰ āĻŽāĻĄāĻŋāωāϞ⧇; āĻāĻ–āύ follow_owner āĻŸā§‡āĻ¸ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ /summon āĻ•āϰ⧇ owner āĻšāĻŋāϏ⧇āĻŦ⧇ āύāĻŋāĻœā§‡āϕ⧇āχ āϧāϰ⧋āĨ¤

āϧāĻžāĻĒ ā§Š: RP client entity āĻ“ model

resource_pack/entity/guard_dog.json
1{
2 "format_version": "1.10.0",
3 "minecraft:client_entity": {
4 "description": {
5 "identifier": "myaddon:guard_dog",
6 "materials": { "default": "entity_alphatest" },
7 "textures": { "default": "textures/entity/guard_dog" },
8 "geometry": { "default": "geometry.wolf" },ⓘ
9 "render_controllers": ["controller.render.default"]
10 }
11 }
12}
  • L8āĻļ⧁āϰ⧁āϤ⧇ āύāĻŋāĻœā§‡āϰ model āύāĻž āĻĨāĻžāĻ•āϞ⧇ vanilla geometry.wolf āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧋ — Module 5-āĻ āύāĻŋāĻœā§‡āϰ āĻŦāĻžāύāĻžāĻŦ⧇āĨ¤

āϧāĻžāĻĒ ā§Ē: āĻŸā§‡āĻ¸ā§āϟ āĻ•āϰ⧋

  1. 1RP + BP activate āĻ•āϰ⧇ world-āĻ āĻĸā§‹āϕ⧋āĨ¤
  2. 2/summon myaddon:guard_dog — āϤ⧋āĻŽāĻžāϰ āĻĒāĻžāĻļ⧇ dog āφāϏāĻŦ⧇āĨ¤
  3. 3/summon zombie ~5 ~ ~ āĻĻāĻŋāϝāĻŧ⧇ āĻ•āĻžāϛ⧇ āĻāĻ•āϟāĻž zombie āφāύ⧋āĨ¤
  4. 4āĻĻ⧇āĻ–ā§‹ dog āύāĻŋāĻœā§‡ āĻĨ⧇āϕ⧇ zombie-āϰ āĻĻāĻŋāϕ⧇ āϛ⧁āĻŸā§‡ āĻ—āĻŋāϝāĻŧ⧇ āφāĻ•ā§āϰāĻŽāĻŖ āĻ•āϰāϛ⧇! 🐕