fix(heyhe): correct egg spawn, fix taming, skinny model, wonky eyes, persistent
All checks were successful
Deploy Addons / deploy (push) Successful in 14s

- heyhe_egg: rebuild spawn mechanism with component groups (spawn_entity/die
  can't live in event sequences — follow dragon_egg pattern exactly)
- heyhe_chicken: move interact to base components so taming always works
  regardless of spawn method; add persistent to stop vanishing
- Geometry: skinny tall body, thin neck, proper UV coordinates throughout
- Texture: fill whole atlas white first (no dark gaps), matched UV regions,
  wonky asymmetric eyes (one big+high, one small+low)
- Animation: neck peck 3x per cycle at 22deg, body sway on walk, wing flutter

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-05 09:37:25 +01:00
parent 56ed7d76ee
commit 86950012e9
5 changed files with 307 additions and 286 deletions

View File

@@ -22,76 +22,7 @@
"component_groups": { "component_groups": {
"silverlabs:wild": { "silverlabs:tamed_following": {
"minecraft:behavior.tempt": {
"priority": 3,
"speed_multiplier": 0.6,
"items": ["wheat", "wheat_seeds", "beetroot_seeds", "melon_seeds", "pumpkin_seeds"],
"can_tempt_vertically": false
},
"minecraft:behavior.avoid_mob_type": {
"priority": 4,
"max_dist": 8,
"walk_speed_multiplier": 1.2,
"sprint_speed_multiplier": 1.2,
"entity_types": [
{
"filters": {
"test": "is_family",
"subject": "other",
"value": "monster"
},
"max_dist": 8
}
]
},
"minecraft:interact": {
"interactions": [
{
"on_interact": {
"filters": {
"all_of": [
{ "test": "is_family", "subject": "other", "value": "player" },
{ "test": "has_equipment", "subject": "other", "domain": "hand", "value": "wheat" }
]
},
"event": "silverlabs:become_tamed",
"target": "self"
},
"use_item": true,
"interact_text": "action.interact.tame",
"play_sounds": "random.eat",
"particle_on_start": {
"particle_type": "minecraft:heart_particle",
"particle_y_offset": 1.0,
"particle_offset_towards_interactor": false
}
},
{
"on_interact": {
"filters": {
"all_of": [
{ "test": "is_family", "subject": "other", "value": "player" },
{ "test": "has_equipment", "subject": "other", "domain": "hand", "value": "wheat_seeds" }
]
},
"event": "silverlabs:become_tamed",
"target": "self"
},
"use_item": true,
"interact_text": "action.interact.tame",
"play_sounds": "random.eat",
"particle_on_start": {
"particle_type": "minecraft:heart_particle",
"particle_y_offset": 1.0,
"particle_offset_towards_interactor": false
}
}
]
}
},
"silverlabs:tamed": {
"minecraft:behavior.follow_owner": { "minecraft:behavior.follow_owner": {
"priority": 4, "priority": 4,
"speed_multiplier": 0.9, "speed_multiplier": 0.9,
@@ -105,30 +36,6 @@
"min_random_teleport_time": 15, "min_random_teleport_time": 15,
"target_distance": 64, "target_distance": 64,
"target_teleport_chance": 0.05 "target_teleport_chance": 0.05
},
"minecraft:interact": {
"interactions": [
{
"on_interact": {
"filters": {
"all_of": [
{ "test": "is_family", "subject": "other", "value": "player" },
{
"test": "has_equipment",
"subject": "other",
"domain": "hand",
"operator": "equals",
"value": "air"
}
]
},
"event": "silverlabs:toggle_sit",
"target": "self"
},
"use_item": false,
"interact_text": "action.interact.sit"
}
]
} }
}, },
@@ -150,7 +57,7 @@
"is_pushable_by_piston": true "is_pushable_by_piston": true
}, },
"minecraft:collision_box": { "minecraft:collision_box": {
"width": 0.5, "width": 0.4,
"height": 0.7 "height": 0.7
}, },
"minecraft:health": { "minecraft:health": {
@@ -172,45 +79,112 @@
"total_supply": 15, "total_supply": 15,
"suffocate_time": -1 "suffocate_time": -1
}, },
"minecraft:despawn": { "minecraft:persistent": {},
"despawn_from_distance": {}
},
"minecraft:nameable": {}, "minecraft:nameable": {},
"minecraft:interact": {
"interactions": [
{
"on_interact": {
"filters": {
"all_of": [
{ "test": "is_family", "subject": "other", "value": "player" },
{ "test": "has_equipment", "subject": "other", "domain": "hand", "value": "wheat" },
{
"test": "bool_property",
"domain": "silverlabs:heyhe_tamed",
"value": false
}
]
},
"event": "silverlabs:become_tamed",
"target": "self"
},
"use_item": true,
"interact_text": "Tame Hey Hey (Wheat)",
"play_sounds": "random.eat"
},
{
"on_interact": {
"filters": {
"all_of": [
{ "test": "is_family", "subject": "other", "value": "player" },
{ "test": "has_equipment", "subject": "other", "domain": "hand", "value": "wheat_seeds" },
{
"test": "bool_property",
"domain": "silverlabs:heyhe_tamed",
"value": false
}
]
},
"event": "silverlabs:become_tamed",
"target": "self"
},
"use_item": true,
"interact_text": "Tame Hey Hey (Seeds)",
"play_sounds": "random.eat"
},
{
"on_interact": {
"filters": {
"all_of": [
{ "test": "is_family", "subject": "other", "value": "player" },
{
"test": "bool_property",
"domain": "silverlabs:heyhe_tamed",
"value": true
},
{
"test": "has_equipment",
"subject": "other",
"domain": "hand",
"operator": "not",
"value": "wheat"
}
]
},
"event": "silverlabs:toggle_sit",
"target": "self"
},
"use_item": false,
"interact_text": "Sit / Stand"
}
]
},
"minecraft:behavior.float": { "priority": 0 }, "minecraft:behavior.float": { "priority": 0 },
"minecraft:behavior.panic": { "minecraft:behavior.panic": {
"priority": 1, "priority": 1,
"speed_multiplier": 1.5 "speed_multiplier": 1.5
}, },
"minecraft:behavior.random_look_around": { "priority": 10 },
"minecraft:behavior.random_stroll": {
"priority": 8,
"speed_multiplier": 0.6
},
"minecraft:behavior.look_at_player": { "minecraft:behavior.look_at_player": {
"priority": 9, "priority": 9,
"target_distance": 6, "target_distance": 6,
"look_time": [2, 4] "look_time": [2, 4]
}, },
"minecraft:behavior.random_look_around": { "minecraft:behavior.tempt": {
"priority": 10 "priority": 3,
}, "speed_multiplier": 0.6,
"minecraft:behavior.random_stroll": { "items": ["wheat", "wheat_seeds", "beetroot_seeds", "melon_seeds", "pumpkin_seeds"],
"priority": 8, "can_tempt_vertically": false
"speed_multiplier": 0.6
} }
}, },
"events": { "events": {
"minecraft:entity_spawned": { "minecraft:entity_spawned": {
"add": { "set_property": { "silverlabs:heyhe_tamed": false }
"component_groups": ["silverlabs:wild"] },
} "silverlabs:hatched": {
"set_property": { "silverlabs:heyhe_tamed": false }
}, },
"silverlabs:become_tamed": { "silverlabs:become_tamed": {
"set_property": { "set_property": { "silverlabs:heyhe_tamed": true },
"silverlabs:heyhe_tamed": true "add": { "component_groups": ["silverlabs:tamed_following"] }
},
"remove": {
"component_groups": ["silverlabs:wild"]
},
"add": {
"component_groups": ["silverlabs:tamed"]
}
}, },
"silverlabs:toggle_sit": { "silverlabs:toggle_sit": {
"sequence": [ "sequence": [
@@ -220,12 +194,8 @@
"domain": "silverlabs:heyhe_sitting", "domain": "silverlabs:heyhe_sitting",
"value": false "value": false
}, },
"set_property": { "set_property": { "silverlabs:heyhe_sitting": true },
"silverlabs:heyhe_sitting": true "add": { "component_groups": ["silverlabs:sitting"] }
},
"add": {
"component_groups": ["silverlabs:sitting"]
}
}, },
{ {
"filters": { "filters": {
@@ -233,12 +203,8 @@
"domain": "silverlabs:heyhe_sitting", "domain": "silverlabs:heyhe_sitting",
"value": true "value": true
}, },
"set_property": { "set_property": { "silverlabs:heyhe_sitting": false },
"silverlabs:heyhe_sitting": false "remove": { "component_groups": ["silverlabs:sitting"] }
},
"remove": {
"component_groups": ["silverlabs:sitting"]
}
} }
] ]
} }

View File

@@ -8,58 +8,69 @@
"is_experimental": false "is_experimental": false
}, },
"components": { "component_groups": {
"minecraft:type_family": {
"family": ["heyhe_egg"] "silverlabs:egg_waiting": {
},
"minecraft:collision_box": {
"width": 0.5,
"height": 0.6
},
"minecraft:physics": {
"has_gravity": true,
"has_collision": true
},
"minecraft:pushable": {
"is_pushable": false,
"is_pushable_by_piston": false
},
"minecraft:health": {
"value": 5,
"max": 5
},
"minecraft:timer": { "minecraft:timer": {
"looping": false, "looping": false,
"time": 10, "time": 10,
"time_down_event": { "time_down_event": {
"event": "silverlabs:hatch", "event": "silverlabs:start_hatching",
"target": "self" "target": "self"
} }
},
"minecraft:ambient_sound_interval": {
"event_name": "mob.chicken.egg",
"range": 0,
"value": 8
} }
}, },
"events": { "silverlabs:egg_hatching": {
"silverlabs:hatch": { "minecraft:spawn_entity": {
"sequence": [ "entities": [
{ {
"spawn_entity": { "min_wait_time": 0,
"entities_to_spawn": [ "max_wait_time": 1,
{ "spawn_sound": "mob.chicken.egg",
"entity_type": "silverlabs:heyhe_chicken", "spawn_entity": "silverlabs:heyhe_chicken",
"num_to_spawn": 1 "spawn_event": "silverlabs:hatched",
"num_to_spawn": 1,
"single_use": true
} }
] ]
},
"minecraft:timer": {
"looping": false,
"time": 2,
"time_down_event": {
"event": "silverlabs:despawn_egg",
"target": "self"
}
} }
}, },
{
"die": {} "silverlabs:egg_despawning": {
"minecraft:instant_despawn": {}
} }
]
},
"components": {
"minecraft:type_family": { "family": ["heyhe_egg"] },
"minecraft:physics": { "has_gravity": true, "has_collision": true },
"minecraft:collision_box": { "width": 0.5, "height": 0.6 },
"minecraft:pushable": { "is_pushable": false, "is_pushable_by_piston": false },
"minecraft:knockback_resistance": { "value": 1.0 },
"minecraft:persistent": {},
"minecraft:health": { "value": 5, "max": 5 }
},
"events": {
"minecraft:entity_spawned": {
"add": { "component_groups": ["silverlabs:egg_waiting"] }
},
"silverlabs:start_hatching": {
"remove": { "component_groups": ["silverlabs:egg_waiting"] },
"add": { "component_groups": ["silverlabs:egg_hatching"] }
},
"silverlabs:despawn_egg": {
"add": { "component_groups": ["silverlabs:egg_despawning"] }
} }
} }
} }

View File

@@ -4,23 +4,32 @@
"animation.heyhe_chicken.idle": { "animation.heyhe_chicken.idle": {
"loop": true, "loop": true,
"animation_length": 2.0, "animation_length": 1.2,
"bones": { "bones": {
"body": { "body": {
"position": { "position": {
"0.0": [0, 0, 0], "0.0": [0, 0, 0],
"1.0": [0, 0.4, 0], "0.6": [0, 0.3, 0],
"2.0": [0, 0, 0] "1.2": [0, 0, 0]
}
},
"neck": {
"rotation": {
"0.0": [0, 0, 0],
"0.2": [22, 0, 0],
"0.35": [0, 0, 0],
"0.55": [22, 0, 0],
"0.7": [0, 0, 0],
"0.9": [22, 0, 0],
"1.05": [0, 0, 0],
"1.2": [0, 0, 0]
} }
}, },
"head": { "head": {
"rotation": { "rotation": {
"0.0": [0, 0, 0], "0.0": [0, 5, 0],
"0.4": [10, 0, 0], "0.6": [0, -5, 0],
"0.8": [0, 0, 0], "1.2": [0, 5, 0]
"1.4": [10, 0, 0],
"1.8": [0, 0, 0],
"2.0": [0, 0, 0]
} }
} }
} }
@@ -28,43 +37,57 @@
"animation.heyhe_chicken.walk": { "animation.heyhe_chicken.walk": {
"loop": true, "loop": true,
"animation_length": 0.8, "animation_length": 0.7,
"bones": { "bones": {
"body": { "body": {
"rotation": { "rotation": {
"0.0": [0, 0, 4], "0.0": [0, 0, 5],
"0.2": [0, 0, 0], "0.175":[0, 0, 0],
"0.4": [0, 0, -4], "0.35": [0, 0, -5],
"0.6": [0, 0, 0], "0.525":[0, 0, 0],
"0.8": [0, 0, 4] "0.7": [0, 0, 5]
} }
}, },
"head": { "neck": {
"rotation": {
"0.0": [0, 0, -4],
"0.2": [0, 0, 0],
"0.4": [0, 0, 4],
"0.6": [0, 0, 0],
"0.8": [0, 0, -4]
},
"position": { "position": {
"0.0": [0, 0, 0.5], "0.0": [0, 0, 0.5],
"0.4": [0, 0, -0.5], "0.35": [0, 0, -0.5],
"0.8": [0, 0, 0.5] "0.7": [0, 0, 0.5]
},
"rotation": {
"0.0": [10, 0, 0],
"0.2": [-5, 0, 0],
"0.35": [10, 0, 0],
"0.55": [-5, 0, 0],
"0.7": [10, 0, 0]
} }
}, },
"leg_left": { "leg_left": {
"rotation": { "rotation": {
"0.0": [ 15, 0, 0], "0.0": [ 20, 0, 0],
"0.4": [-15, 0, 0], "0.35": [-20, 0, 0],
"0.8": [ 15, 0, 0] "0.7": [ 20, 0, 0]
} }
}, },
"leg_right": { "leg_right": {
"rotation": { "rotation": {
"0.0": [-15, 0, 0], "0.0": [-20, 0, 0],
"0.4": [ 15, 0, 0], "0.35": [ 20, 0, 0],
"0.8": [-15, 0, 0] "0.7": [-20, 0, 0]
}
},
"wing_left": {
"rotation": {
"0.0": [0, 0, -5],
"0.35": [0, 0, -12],
"0.7": [0, 0, -5]
}
},
"wing_right": {
"rotation": {
"0.0": [0, 0, 5],
"0.35": [0, 0, 12],
"0.7": [0, 0, 5]
} }
} }
} }
@@ -72,40 +95,40 @@
"animation.heyhe_chicken.sit": { "animation.heyhe_chicken.sit": {
"loop": true, "loop": true,
"animation_length": 1.6, "animation_length": 0.8,
"bones": { "bones": {
"body": { "body": {
"position": { "position": { "0.0": [0, -2, 0] },
"0.0": [0, -2.5, 0], "rotation": { "0.0": [8, 0, 0] }
"0.8": [0, -2.5, 0]
}, },
"neck": {
"rotation": { "rotation": {
"0.0": [5, 0, 0], "0.0": [0, 0, 0],
"0.8": [5, 0, 0] "0.2": [18, 0, 0],
"0.4": [0, 0, 0],
"0.6": [18, 0, 0],
"0.8": [0, 0, 0]
} }
}, },
"wing_left": { "wing_left": {
"rotation": { "rotation": {
"0.0": [0, 0, -10], "0.0": [0, 0, -15],
"0.8": [0, 0, -18], "0.4": [0, 0, -22],
"1.6": [0, 0, -10] "0.8": [0, 0, -15]
} }
}, },
"wing_right": { "wing_right": {
"rotation": { "rotation": {
"0.0": [0, 0, 10], "0.0": [0, 0, 15],
"0.8": [0, 0, 18], "0.4": [0, 0, 22],
"1.6": [0, 0, 10] "0.8": [0, 0, 15]
} }
}, },
"head": { "leg_left": {
"rotation": { "rotation": { "0.0": [30, 0, 0] }
"0.0": [ 0, 0, 0], },
"0.4": [12, 0, 0], "leg_right": {
"0.8": [ 0, 0, 0], "rotation": { "0.0": [30, 0, 0] }
"1.2": [12, 0, 0],
"1.6": [ 0, 0, 0]
}
} }
} }
} }

View File

@@ -11,194 +11,215 @@
"visible_bounds_offset": [0, 0.75, 0] "visible_bounds_offset": [0, 0.75, 0]
}, },
"bones": [ "bones": [
{
"name": "root", { "name": "root", "pivot": [0, 0, 0] },
"pivot": [0, 0, 0]
},
{ {
"name": "body", "name": "body",
"parent": "root", "parent": "root",
"pivot": [0, 7, 0], "pivot": [0, 5, 0],
"cubes": [ "cubes": [
{ {
"origin": [-5, 3, -4], "comment": "W=5 H=7 D=4 → uv needs 2*(4+5)=18 wide, 4+7=11 tall",
"size": [10, 8, 8], "origin": [-2.5, 1, -2],
"size": [5, 7, 4],
"uv": [0, 0] "uv": [0, 0]
} }
] ]
}, },
{ {
"name": "wing_left", "name": "wing_left",
"parent": "body", "parent": "body",
"pivot": [-5, 9, 0], "pivot": [-2.5, 7, 0],
"cubes": [ "cubes": [
{ {
"origin": [-7, 6, -2], "comment": "W=2 H=5 D=4 → uv needs 2*(4+2)=12 wide, 4+5=9 tall",
"size": [2, 5, 5], "origin": [-4.5, 3, -2],
"uv": [24, 0] "size": [2, 5, 4],
"uv": [26, 0]
} }
] ]
}, },
{ {
"name": "wing_right", "name": "wing_right",
"parent": "body", "parent": "body",
"pivot": [5, 9, 0], "pivot": [2.5, 7, 0],
"mirror": true, "mirror": true,
"cubes": [ "cubes": [
{ {
"origin": [5, 6, -2], "origin": [2.5, 3, -2],
"size": [2, 5, 5], "size": [2, 5, 4],
"uv": [24, 0] "uv": [26, 0]
} }
] ]
}, },
{ {
"name": "tail", "name": "tail",
"parent": "body", "parent": "body",
"pivot": [0, 11, -4], "pivot": [0, 8, -2],
"rotation": [-30, 0, 0], "rotation": [-30, 0, 0],
"cubes": [ "cubes": [
{ {
"origin": [-2, 9, -6], "comment": "W=3 H=4 D=2 → uv needs 2*(2+3)=10 wide, 2+4=6 tall",
"size": [4, 4, 2], "origin": [-1.5, 6, -4],
"uv": [40, 0] "size": [3, 4, 2],
"uv": [38, 0]
} }
] ]
}, },
{ {
"name": "neck", "name": "neck",
"parent": "body", "parent": "body",
"pivot": [0, 11, 3], "pivot": [0, 8, 1.5],
"cubes": [ "cubes": [
{ {
"origin": [-2, 8, 2], "comment": "W=2 H=5 D=2 → uv needs 2*(2+2)=8 wide, 2+5=7 tall",
"size": [4, 4, 3], "origin": [-1, 6, 1],
"uv": [14, 0] "size": [2, 5, 2],
"uv": [18, 0]
} }
] ]
}, },
{ {
"name": "head", "name": "head",
"parent": "neck", "parent": "neck",
"pivot": [0, 13, 4], "pivot": [0, 11, 2],
"cubes": [ "cubes": [
{ {
"origin": [-3, 11, 1], "comment": "W=4 H=4 D=4 → uv needs 2*(4+4)=16 wide, 4+4=8 tall",
"size": [6, 6, 6], "origin": [-2, 11, 0],
"uv": [0, 16] "size": [4, 4, 4],
"uv": [0, 11]
} }
] ]
}, },
{ {
"name": "comb_a", "name": "comb_a",
"parent": "head", "parent": "head",
"pivot": [0, 17, 4],
"cubes": [ "cubes": [
{ {
"origin": [-1, 17, 2], "comment": "front bump W=1 H=2 D=1",
"size": [2, 2, 2], "origin": [-0.5, 15, 0.5],
"uv": [30, 16] "size": [1, 2, 1],
"uv": [16, 11]
} }
] ]
}, },
{ {
"name": "comb_b", "name": "comb_b",
"parent": "head", "parent": "head",
"pivot": [0, 17, 4],
"cubes": [ "cubes": [
{ {
"origin": [-1, 16, 4], "comment": "middle/tallest bump W=1 H=3 D=1",
"size": [2, 3, 2], "origin": [-0.5, 15, 1.5],
"uv": [38, 16] "size": [1, 3, 1],
"uv": [20, 11]
} }
] ]
}, },
{ {
"name": "comb_c", "name": "comb_c",
"parent": "head", "parent": "head",
"pivot": [0, 17, 4],
"cubes": [ "cubes": [
{ {
"origin": [-1, 17, 6], "comment": "back bump W=1 H=2 D=1",
"size": [2, 2, 2], "origin": [-0.5, 15, 2.5],
"uv": [30, 16] "size": [1, 2, 1],
"uv": [16, 11]
} }
] ]
}, },
{ {
"name": "beak", "name": "beak",
"parent": "head", "parent": "head",
"pivot": [0, 13, 7],
"cubes": [ "cubes": [
{ {
"origin": [-1, 12, 7], "comment": "W=2 H=2 D=2 → uv needs 2*(2+2)=8 wide, 2+2=4 tall",
"origin": [-1, 12, 4],
"size": [2, 2, 2], "size": [2, 2, 2],
"uv": [44, 16] "uv": [24, 11]
} }
] ]
}, },
{ {
"name": "wattle", "name": "wattle",
"parent": "head", "parent": "head",
"pivot": [0, 11, 7],
"cubes": [ "cubes": [
{ {
"origin": [-1, 9, 6], "comment": "W=1 H=2 D=1 → uv needs 4 wide, 3 tall",
"size": [2, 2, 1], "origin": [-0.5, 11, 3.5],
"uv": [50, 16] "size": [1, 2, 1],
"uv": [32, 11]
} }
] ]
}, },
{ {
"name": "leg_left", "name": "leg_left",
"parent": "root", "parent": "root",
"pivot": [-2, 5, 0], "pivot": [-1, 4, 0],
"cubes": [ "cubes": [
{ {
"origin": [-3, 1, -1], "comment": "W=1 H=4 D=1 → uv needs 4 wide, 5 tall",
"size": [2, 4, 2], "origin": [-1.5, 0, -0.5],
"size": [1, 4, 1],
"uv": [48, 0] "uv": [48, 0]
} }
] ]
}, },
{ {
"name": "foot_left", "name": "foot_left",
"parent": "leg_left", "parent": "leg_left",
"pivot": [-2, 1, 0], "pivot": [-1, 0, 0],
"cubes": [ "cubes": [
{ {
"origin": [-4, 0, -2], "comment": "W=3 H=1 D=3 → uv needs 12 wide, 4 tall",
"size": [4, 1, 4], "origin": [-2.5, -1, -1.5],
"uv": [48, 6] "size": [3, 1, 3],
"uv": [52, 0]
} }
] ]
}, },
{ {
"name": "leg_right", "name": "leg_right",
"parent": "root", "parent": "root",
"pivot": [2, 5, 0], "pivot": [1, 4, 0],
"mirror": true, "mirror": true,
"cubes": [ "cubes": [
{ {
"origin": [1, 1, -1], "origin": [0.5, 0, -0.5],
"size": [2, 4, 2], "size": [1, 4, 1],
"uv": [48, 0] "uv": [48, 0]
} }
] ]
}, },
{ {
"name": "foot_right", "name": "foot_right",
"parent": "leg_right", "parent": "leg_right",
"pivot": [2, 1, 0], "pivot": [1, 0, 0],
"mirror": true, "mirror": true,
"cubes": [ "cubes": [
{ {
"origin": [0, 0, -2], "origin": [-0.5, -1, -1.5],
"size": [4, 1, 4], "size": [3, 1, 3],
"uv": [48, 6] "uv": [52, 0]
} }
] ]
} }
] ]
} }
] ]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

After

Width:  |  Height:  |  Size: 303 B