feat(spark_pet): major overhaul — traits, animations, riding, fire, coloured hatching
All checks were successful
Deploy Addons / deploy (push) Successful in 24s

- Movement: slower follow (speed 0.3, stop_dist 5), near-zero teleport chance
- Scales: baby 0.65, juvenile 0.9, adult 1.3 (up from 0.4/0.7/1.0)
- Personality traits (0–4): set by feeding specific foods while sneaking;
  affects stroll range, follow distance, look-at-player frequency
- Passtime animations driven by pure Molang lifecycle math (no timer components):
  groom, sniff, stretch, happy_bounce cycling ~every 3 min per dragon
- Rideable adults: minecraft:rideable + input_ground_controlled, seat at [0,0.9,-0.3]
- Fire breathing: autonomous vs monsters (radius 16) + player-triggered (sneak + fire_charge)
- New hatching system: 6 nest block variants (oak/spruce/jungle/crimson/warped/obsidian),
  craft nest + dragon_egg → coloured egg item; place egg, bonemeal + blaze powder → hatch;
  dragon colour matches nest type via 6 separate egg entity types + born_color events
- 18 new PNG textures: 6 dragon colours, 6 nest blocks, 6 egg items (HSV hue rotation)
- Render controller updated to use texture array indexed by silverlabs:dragon_color property

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-25 02:12:44 +00:00
parent c32dbf42c4
commit 4bd9efc081
57 changed files with 2162 additions and 320 deletions

View File

@@ -32,9 +32,17 @@
"1.0": [0, 5, 0],
"2.0": [0, -5, 0]
}
},
"head": {
"rotation": {
"0.0": [0, 0, 0],
"1.0": [3, 2, 0],
"2.0": [0, 0, 0]
}
}
}
},
"animation.spark_dragon.walk": {
"loop": true,
"animation_length": 0.8,
@@ -77,20 +85,16 @@
},
"wing_left": {
"rotation": {
"0.0": [0, 0, -10],
"0.2": [0, 0, -30],
"0.4": [0, 0, -10],
"0.6": [0, 0, -30],
"0.8": [0, 0, -10]
"0.0": [0, 0, -8],
"0.4": [0, 0, -18],
"0.8": [0, 0, -8]
}
},
"wing_right": {
"rotation": {
"0.0": [0, 0, 10],
"0.2": [0, 0, 30],
"0.4": [0, 0, 10],
"0.6": [0, 0, 30],
"0.8": [0, 0, 10]
"0.0": [0, 0, 8],
"0.4": [0, 0, 18],
"0.8": [0, 0, 8]
}
},
"tail": {
@@ -103,14 +107,15 @@
"body": {
"position": {
"0.0": [0, 0, 0],
"0.2": [0, 0.5, 0],
"0.2": [0, 0.4, 0],
"0.4": [0, 0, 0],
"0.6": [0, 0.5, 0],
"0.6": [0, 0.4, 0],
"0.8": [0, 0, 0]
}
}
}
},
"animation.spark_dragon.sit": {
"loop": true,
"animation_length": 2.0,
@@ -147,6 +152,7 @@
}
}
},
"animation.spark_dragon.sleep": {
"loop": true,
"animation_length": 4.0,
@@ -188,6 +194,7 @@
}
}
},
"animation.spark_dragon.fly": {
"loop": true,
"animation_length": 0.6,
@@ -241,6 +248,315 @@
"rotation": [10, 0, 0]
}
}
},
"animation.spark_dragon.groom": {
"loop": true,
"animation_length": 3.0,
"bones": {
"body": {
"position": [0, -1.5, 0]
},
"head": {
"rotation": {
"0.0": [0, 20, 5],
"0.5": [5, 30, 8],
"1.0": [0, 22, 5],
"1.5": [8, 28, 5],
"2.0": [0, 20, 5],
"2.5": [5, 32, 8],
"3.0": [0, 20, 5]
}
},
"leg_front_left": {
"rotation": {
"0.0": [-60, 0, 0],
"0.4": [-30, 15, 20],
"0.8": [-50, 5, 10],
"1.2": [-30, 15, 20],
"1.6": [-50, 5, 10],
"2.0": [-30, 15, 20],
"2.4": [-50, 5, 10],
"3.0": [-60, 0, 0]
}
},
"leg_front_right": {
"rotation": [-60, 0, 0]
},
"leg_back_left": {
"rotation": [-90, 20, 0]
},
"leg_back_right": {
"rotation": [-90, -20, 0]
},
"wing_left": {
"rotation": [0, 0, 5],
"position": [0, 0, 1]
},
"wing_right": {
"rotation": [0, 0, -5],
"position": [0, 0, 1]
},
"tail": {
"rotation": {
"0.0": [5, -35, 0],
"1.5": [5, -20, 0],
"3.0": [5, -35, 0]
}
}
}
},
"animation.spark_dragon.sniff": {
"loop": true,
"animation_length": 2.4,
"bones": {
"head": {
"rotation": {
"0.0": [0, 0, 0],
"0.4": [30, 5, 0],
"0.8": [25, -5, 0],
"1.2": [32, 3, 0],
"1.6": [20, 0, 0],
"2.0": [28, -4, 0],
"2.4": [0, 0, 0]
},
"position": {
"0.0": [0, 0, 0],
"0.4": [0, -0.8, 1],
"1.2": [0, -0.6, 1],
"2.4": [0, 0, 0]
}
},
"body": {
"rotation": {
"0.0": [0, 0, 0],
"0.6": [5, 0, 0],
"1.8": [5, 0, 0],
"2.4": [0, 0, 0]
}
},
"tail": {
"rotation": {
"0.0": [0, -8, 0],
"0.6": [-10, 0, 0],
"1.2": [-15, 5, 0],
"1.8": [-10, -3, 0],
"2.4": [0, -8, 0]
}
},
"wing_left": {
"rotation": {
"0.0": [0, 0, -5],
"1.2": [0, 0, -8],
"2.4": [0, 0, -5]
}
},
"wing_right": {
"rotation": {
"0.0": [0, 0, 5],
"1.2": [0, 0, 8],
"2.4": [0, 0, 5]
}
}
}
},
"animation.spark_dragon.stretch": {
"loop": false,
"animation_length": 3.0,
"bones": {
"body": {
"position": {
"0.0": [0, 0, 0],
"0.4": [0, -0.5, 0],
"1.2": [0, -0.8, 0],
"2.0": [0, -0.3, 0],
"3.0": [0, 0, 0]
},
"rotation": {
"0.0": [0, 0, 0],
"0.6": [8, 0, 0],
"1.5": [5, 0, 0],
"3.0": [0, 0, 0]
}
},
"head": {
"rotation": {
"0.0": [0, 0, 0],
"0.6": [-5, 0, 0],
"1.2": [-15, 0, 0],
"2.0": [-20, 0, 0],
"2.6": [-5, 0, 3],
"3.0": [0, 0, 0]
}
},
"leg_front_left": {
"rotation": {
"0.0": [0, 0, 0],
"0.5": [30, 0, 0],
"1.2": [45, 0, 0],
"2.2": [20, 0, 0],
"3.0": [0, 0, 0]
}
},
"leg_front_right": {
"rotation": {
"0.0": [0, 0, 0],
"0.5": [30, 0, 0],
"1.2": [45, 0, 0],
"2.2": [20, 0, 0],
"3.0": [0, 0, 0]
}
},
"leg_back_left": {
"rotation": {
"0.0": [0, 0, 0],
"0.8": [-15, 10, 0],
"1.5": [-25, 15, 0],
"2.5": [-10, 5, 0],
"3.0": [0, 0, 0]
}
},
"leg_back_right": {
"rotation": {
"0.0": [0, 0, 0],
"0.8": [-15, -10, 0],
"1.5": [-25, -15, 0],
"2.5": [-10, -5, 0],
"3.0": [0, 0, 0]
}
},
"wing_left": {
"rotation": {
"0.0": [0, 0, -5],
"1.0": [5, 0, -25],
"1.8": [10, 0, -40],
"2.4": [5, 0, -20],
"3.0": [0, 0, -5]
}
},
"wing_right": {
"rotation": {
"0.0": [0, 0, 5],
"1.0": [5, 0, 25],
"1.8": [10, 0, 40],
"2.4": [5, 0, 20],
"3.0": [0, 0, 5]
}
},
"tail": {
"rotation": {
"0.0": [0, -5, 0],
"0.8": [-5, 0, 0],
"1.5": [-15, 0, 0],
"2.5": [-20, 10, 0],
"3.0": [0, -5, 0]
}
}
}
},
"animation.spark_dragon.happy_bounce": {
"loop": true,
"animation_length": 0.7,
"bones": {
"body": {
"position": {
"0.0": [0, 0, 0],
"0.175": [0, 0.7, 0],
"0.35": [0, 0, 0],
"0.525": [0, 0.7, 0],
"0.7": [0, 0, 0]
}
},
"tail": {
"rotation": {
"0.0": [0, -20, 0],
"0.175": [0, 20, 0],
"0.35": [0, -20, 0],
"0.525": [0, 20, 0],
"0.7": [0, -20, 0]
}
},
"wing_left": {
"rotation": {
"0.0": [0, 0, -10],
"0.175": [0, 0, -30],
"0.35": [0, 0, -10],
"0.525": [0, 0, -30],
"0.7": [0, 0, -10]
}
},
"wing_right": {
"rotation": {
"0.0": [0, 0, 10],
"0.175": [0, 0, 30],
"0.35": [0, 0, 10],
"0.525": [0, 0, 30],
"0.7": [0, 0, 10]
}
},
"head": {
"rotation": {
"0.0": [0, 0, 0],
"0.175": [-5, 0, 0],
"0.35": [0, 0, 0],
"0.525": [-5, 0, 0],
"0.7": [0, 0, 0]
}
}
}
},
"animation.spark_dragon.fire_breath": {
"loop": false,
"animation_length": 1.2,
"bones": {
"body": {
"rotation": {
"0.0": [0, 0, 0],
"0.3": [-8, 0, 0],
"0.7": [-10, 0, 0],
"1.0": [-5, 0, 0],
"1.2": [0, 0, 0]
}
},
"head": {
"rotation": {
"0.0": [0, 0, 0],
"0.2": [10, 0, 0],
"0.4": [-5, 0, 0],
"0.8": [-8, 0, 0],
"1.0": [5, 0, 0],
"1.2": [0, 0, 0]
}
},
"wing_left": {
"rotation": {
"0.0": [0, 0, -5],
"0.4": [15, 0, -50],
"0.8": [15, 0, -50],
"1.2": [0, 0, -5]
}
},
"wing_right": {
"rotation": {
"0.0": [0, 0, 5],
"0.4": [15, 0, 50],
"0.8": [15, 0, 50],
"1.2": [0, 0, 5]
}
},
"tail": {
"rotation": {
"0.0": [0, -5, 0],
"0.5": [-20, 0, 0],
"1.0": [-25, 0, 0],
"1.2": [0, -5, 0]
}
}
}
}
}
}