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": {
"silverlabs:wild": {
"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": {
"silverlabs:tamed_following": {
"minecraft:behavior.follow_owner": {
"priority": 4,
"speed_multiplier": 0.9,
@@ -105,30 +36,6 @@
"min_random_teleport_time": 15,
"target_distance": 64,
"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
},
"minecraft:collision_box": {
"width": 0.5,
"width": 0.4,
"height": 0.7
},
"minecraft:health": {
@@ -172,45 +79,112 @@
"total_supply": 15,
"suffocate_time": -1
},
"minecraft:despawn": {
"despawn_from_distance": {}
},
"minecraft:persistent": {},
"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.panic": {
"priority": 1,
"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": {
"priority": 9,
"target_distance": 6,
"look_time": [2, 4]
},
"minecraft:behavior.random_look_around": {
"priority": 10
},
"minecraft:behavior.random_stroll": {
"priority": 8,
"speed_multiplier": 0.6
"minecraft:behavior.tempt": {
"priority": 3,
"speed_multiplier": 0.6,
"items": ["wheat", "wheat_seeds", "beetroot_seeds", "melon_seeds", "pumpkin_seeds"],
"can_tempt_vertically": false
}
},
"events": {
"minecraft:entity_spawned": {
"add": {
"component_groups": ["silverlabs:wild"]
}
"set_property": { "silverlabs:heyhe_tamed": false }
},
"silverlabs:hatched": {
"set_property": { "silverlabs:heyhe_tamed": false }
},
"silverlabs:become_tamed": {
"set_property": {
"silverlabs:heyhe_tamed": true
},
"remove": {
"component_groups": ["silverlabs:wild"]
},
"add": {
"component_groups": ["silverlabs:tamed"]
}
"set_property": { "silverlabs:heyhe_tamed": true },
"add": { "component_groups": ["silverlabs:tamed_following"] }
},
"silverlabs:toggle_sit": {
"sequence": [
@@ -220,12 +194,8 @@
"domain": "silverlabs:heyhe_sitting",
"value": false
},
"set_property": {
"silverlabs:heyhe_sitting": true
},
"add": {
"component_groups": ["silverlabs:sitting"]
}
"set_property": { "silverlabs:heyhe_sitting": true },
"add": { "component_groups": ["silverlabs:sitting"] }
},
{
"filters": {
@@ -233,12 +203,8 @@
"domain": "silverlabs:heyhe_sitting",
"value": true
},
"set_property": {
"silverlabs:heyhe_sitting": false
},
"remove": {
"component_groups": ["silverlabs:sitting"]
}
"set_property": { "silverlabs:heyhe_sitting": false },
"remove": { "component_groups": ["silverlabs:sitting"] }
}
]
}

View File

@@ -8,58 +8,69 @@
"is_experimental": false
},
"components": {
"minecraft:type_family": {
"family": ["heyhe_egg"]
},
"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
},
"component_groups": {
"silverlabs:egg_waiting": {
"minecraft:timer": {
"looping": false,
"time": 10,
"time_down_event": {
"event": "silverlabs:hatch",
"event": "silverlabs:start_hatching",
"target": "self"
}
},
"minecraft:ambient_sound_interval": {
"event_name": "mob.chicken.egg",
"range": 0,
"value": 8
}
},
"events": {
"silverlabs:hatch": {
"sequence": [
"silverlabs:egg_hatching": {
"minecraft:spawn_entity": {
"entities": [
{
"spawn_entity": {
"entities_to_spawn": [
{
"entity_type": "silverlabs:heyhe_chicken",
"num_to_spawn": 1
"min_wait_time": 0,
"max_wait_time": 1,
"spawn_sound": "mob.chicken.egg",
"spawn_entity": "silverlabs:heyhe_chicken",
"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": {
"loop": true,
"animation_length": 2.0,
"animation_length": 1.2,
"bones": {
"body": {
"position": {
"0.0": [0, 0, 0],
"1.0": [0, 0.4, 0],
"2.0": [0, 0, 0]
"0.6": [0, 0.3, 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": {
"rotation": {
"0.0": [0, 0, 0],
"0.4": [10, 0, 0],
"0.8": [0, 0, 0],
"1.4": [10, 0, 0],
"1.8": [0, 0, 0],
"2.0": [0, 0, 0]
"0.0": [0, 5, 0],
"0.6": [0, -5, 0],
"1.2": [0, 5, 0]
}
}
}
@@ -28,43 +37,57 @@
"animation.heyhe_chicken.walk": {
"loop": true,
"animation_length": 0.8,
"animation_length": 0.7,
"bones": {
"body": {
"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]
"0.0": [0, 0, 5],
"0.175":[0, 0, 0],
"0.35": [0, 0, -5],
"0.525":[0, 0, 0],
"0.7": [0, 0, 5]
}
},
"head": {
"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]
},
"neck": {
"position": {
"0.0": [0, 0, 0.5],
"0.4": [0, 0, -0.5],
"0.8": [0, 0, 0.5]
"0.35": [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": {
"rotation": {
"0.0": [ 15, 0, 0],
"0.4": [-15, 0, 0],
"0.8": [ 15, 0, 0]
"0.0": [ 20, 0, 0],
"0.35": [-20, 0, 0],
"0.7": [ 20, 0, 0]
}
},
"leg_right": {
"rotation": {
"0.0": [-15, 0, 0],
"0.4": [ 15, 0, 0],
"0.8": [-15, 0, 0]
"0.0": [-20, 0, 0],
"0.35": [ 20, 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": {
"loop": true,
"animation_length": 1.6,
"animation_length": 0.8,
"bones": {
"body": {
"position": {
"0.0": [0, -2.5, 0],
"0.8": [0, -2.5, 0]
"position": { "0.0": [0, -2, 0] },
"rotation": { "0.0": [8, 0, 0] }
},
"neck": {
"rotation": {
"0.0": [5, 0, 0],
"0.8": [5, 0, 0]
"0.0": [0, 0, 0],
"0.2": [18, 0, 0],
"0.4": [0, 0, 0],
"0.6": [18, 0, 0],
"0.8": [0, 0, 0]
}
},
"wing_left": {
"rotation": {
"0.0": [0, 0, -10],
"0.8": [0, 0, -18],
"1.6": [0, 0, -10]
"0.0": [0, 0, -15],
"0.4": [0, 0, -22],
"0.8": [0, 0, -15]
}
},
"wing_right": {
"rotation": {
"0.0": [0, 0, 10],
"0.8": [0, 0, 18],
"1.6": [0, 0, 10]
"0.0": [0, 0, 15],
"0.4": [0, 0, 22],
"0.8": [0, 0, 15]
}
},
"head": {
"rotation": {
"0.0": [ 0, 0, 0],
"0.4": [12, 0, 0],
"0.8": [ 0, 0, 0],
"1.2": [12, 0, 0],
"1.6": [ 0, 0, 0]
}
"leg_left": {
"rotation": { "0.0": [30, 0, 0] }
},
"leg_right": {
"rotation": { "0.0": [30, 0, 0] }
}
}
}

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 305 B

After

Width:  |  Height:  |  Size: 303 B