New addons: - hemp-addon: silverlabs:hemp_crop (5 ages, indoor sun-lamp grown vs outdoor sky-lit), shears harvest, cauldron tincture, brownie food, bonemeal, sun-lamp redstone-lit block (light_dampening: 0 so crops beneath stay lit), grass-seed bootstrap, wandering-trader buyback, pillager raid stealing. - trees-features-addon: ods_orch wild cherry tree — log/leaves/planks/ stripped/sapling/fruit blocks with seasonal fruit states, structure- spawn worldgen. - naturalist-lite-addon: 13-mob subset of Naturalist (deer, fox, owl, skunk, snake, hedgehog, red panda, capybara, elephant, kangaroo, moose, tiger, firefly), trimmed for Switch joinability. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
94 lines
5.3 KiB
JSON
94 lines
5.3 KiB
JSON
{
|
|
"format_version": "1.10.0",
|
|
"minecraft:client_entity": {
|
|
"description": {
|
|
"identifier": "silverlabs_nat:elephant",
|
|
"materials": { "default": "entity_alphatest" },
|
|
"textures": {
|
|
"default": "textures/sf/nba/entity/elephant/elephant",
|
|
"baby": "textures/sf/nba/entity/elephant/elephant_baby"
|
|
},
|
|
"geometry": {
|
|
"default": "geometry.silverlabs_nat.elephant",
|
|
"baby": "geometry.silverlabs_nat.elephant_baby"
|
|
},
|
|
"animations": {
|
|
"walk": "animation.silverlabs_nat.elephant.walk2",
|
|
"look_at_target": "animation.silverlabs_nat.elephant.look_at_target",
|
|
"body_rotation": "animation.silverlabs_nat.elephant.body_rotation",
|
|
"idle": "animation.silverlabs_nat.elephant.idle",
|
|
"water": "animation.silverlabs_nat.elephant.water",
|
|
"swing": "animation.silverlabs_nat.elephant.swing",
|
|
"drink": "animation.silverlabs_nat.elephant.drink",
|
|
"move": "controller.animation.silverlabs_nat.elephant.move",
|
|
"attack": "controller.animation.silverlabs_nat.elephant.attack",
|
|
"drinking": "controller.animation.silverlabs_nat.elephant.drinking",
|
|
"body_rotation_controller": "controller.animation.silverlabs_nat.elephant.body_rotation",
|
|
"baby_idle": "animation.silverlabs_nat.elephant_baby.idle",
|
|
"baby_walk": "animation.silverlabs_nat.elephant_baby.walk",
|
|
"baby_run": "animation.silverlabs_nat.elephant_baby.run",
|
|
"baby_playful": "animation.silverlabs_nat.elephant_baby.playful",
|
|
"baby_idle_event": "animation.silverlabs_nat.elephant_baby.idle_event",
|
|
"baby_look_at_target": "animation.silverlabs_nat.look_at_target",
|
|
"baby_body_rotation": "animation.silverlabs_nat.elephant_baby.body_rotation",
|
|
"baby_move": "controller.animation.silverlabs_nat.elephant.baby_move",
|
|
"baby_look_at_target_controller": "controller.animation.silverlabs_nat.elephant.baby_look_at_target",
|
|
"baby_body_rotation_controller": "controller.animation.silverlabs_nat.elephant.baby_body_rotation",
|
|
"baby_idle_event_controller": "controller.animation.silverlabs_nat.elephant.baby_idle_event"
|
|
},
|
|
"scripts": {
|
|
"initialize": [
|
|
"v.anim_speed_multiplier = 0;",
|
|
"v.anim_speed_movement_max = 0;"
|
|
],
|
|
"pre_animation": [
|
|
"v.anim_speed_multiplier = 1.5;",
|
|
"v.anim_speed_movement_max = 0.5;",
|
|
"v.head_y_rot = q.is_baby ? math.clamp(q.target_y_rotation, -45, 45) : math.clamp(q.target_y_rotation, -35, 35);",
|
|
"v.head_x_rot = q.is_baby ? math.clamp(q.target_x_rotation, -45, 22.5) : math.clamp(q.target_x_rotation, -45, 30);",
|
|
"v.target_head_rot_x = q.is_baby ? math.clamp(q.target_x_rotation, -45, 22.5) : math.clamp(q.target_x_rotation, -45, 30);",
|
|
"v.head_rot_x = math.lerp(v.head_rot_x ?? 0.0, v.target_head_rot_x, 0.1);",
|
|
"v.target_head_rot_y = q.modified_move_speed < 0.01 ? v.head_y_rot : 0.0;",
|
|
"v.head_rot_y = math.lerp(v.head_rot_y ?? 0.0, v.target_head_rot_y, 0.1);",
|
|
"v.body_rot_x = q.is_baby ? math.lerp(v.body_rot_x ?? 0.0, v.target_head_rot_x * 0.3, 0.05) : math.clamp(math.lerp(v.body_rot_x ?? 0.0, v.target_head_rot_x * 0.3, 0.05), -10, 10);",
|
|
"v.body_rot_y = q.is_baby ? math.lerp(v.body_rot_y ?? 0.0, v.target_head_rot_y * 0.3, 0.05) : math.clamp(math.lerp(v.body_rot_y ?? 0.0, v.target_head_rot_y * 0.3, 0.05), -10, 10);",
|
|
"v.trunk_immediate_y = v.head_y_rot * (q.is_baby ? 0.5 : 0.35);",
|
|
"v.trunk_target_y = math.lerp(v.trunk_target_y ?? 0, v.trunk_immediate_y, q.is_baby ? 0.4 : 0.3);",
|
|
"v.trunk_target_y = math.lerp(v.trunk_target_y, 0, 0.15);",
|
|
"v.trunk_y = math.lerp(v.trunk_y ?? 0, v.trunk_target_y, q.is_baby ? 0.15 : 0.1);",
|
|
"v.trunk_immediate_x = q.is_baby ? (-v.head_x_rot + math.abs(v.head_y_rot) * 0.1) : (-v.head_x_rot * 0.8 + math.abs(v.head_y_rot) * 0.08);",
|
|
"v.trunk_target_x = math.lerp(v.trunk_target_x ?? 0, v.trunk_immediate_x, q.is_baby ? 0.4 : 0.3);",
|
|
"v.trunk_target_x = math.lerp(v.trunk_target_x, 0, v.head_x_rot == 0 && v.head_y_rot == 0 ? 0.15 : (q.is_baby ? 0.03 : 0.02));",
|
|
"v.trunk_x = math.lerp(v.trunk_x ?? 0, v.trunk_target_x, q.is_baby ? 0.15 : 0.1);"
|
|
],
|
|
"animate": [
|
|
{ "body_rotation_controller": "!q.is_baby" },
|
|
{ "baby_body_rotation_controller": "q.is_baby" },
|
|
{ "look_at_target": "!q.is_baby" },
|
|
{ "baby_look_at_target_controller": "q.is_baby" },
|
|
{ "move": "!q.is_baby" },
|
|
{ "baby_move": "q.is_baby" },
|
|
{ "baby_idle_event_controller": "q.is_baby" },
|
|
"attack",
|
|
"drinking"
|
|
]
|
|
},
|
|
"particle_effects": {
|
|
"dirt": "silverlabs_nat:elephant_dirt"
|
|
},
|
|
"render_controllers": ["controller.render.silverlabs_nat.elephant"],
|
|
"spawn_egg": {
|
|
"texture": "silverlabs_nat.elephant_spawn_egg"
|
|
},
|
|
"sound_effects": {
|
|
"water": "silverlabs_nat.elephant.water",
|
|
"drink": "silverlabs_nat.elephant.drink",
|
|
"attack": "silverlabs_nat.elephant.attack",
|
|
"step": "silverlabs_nat.step.largehoof",
|
|
"step_-6dB": "silverlabs_nat.step.largehoof_-6dB",
|
|
"step_-12dB": "silverlabs_nat.step.largehoof_-12dB"
|
|
}
|
|
}
|
|
}
|
|
}
|