feat(addons): hemp plant, wild cherry tree, naturalist-lite

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>
This commit is contained in:
2026-04-27 22:00:06 +01:00
parent b9e3380f6c
commit 7c8cd5b075
984 changed files with 192691 additions and 0 deletions

View File

@@ -0,0 +1,27 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.alligator.evict_riders": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"eject_rider": "query.has_target"
}
]
},
"eject_rider": {
"transitions": [
{
"default": "(1.0)"
}
],
"on_entry": [
"/ride @s evict_riders"
]
}
}
}
}
}

View File

@@ -0,0 +1,27 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.anteater": {
"initial_state": "default",
"states": {
"default": {
"on_entry": ["/effect @s clear slowness"],
"transitions": [
{
"not_move": "q.is_interested || q.timer_flag_1 || query.property('silverlabs_nat:on_defensive_mode') == 'enabled'"
}
]
},
"not_move": {
"on_entry": ["/effect @s slowness infinite 255 true"],
"transitions": [
{
"default": "!q.is_interested && !q.timer_flag_1 && query.property('silverlabs_nat:on_defensive_mode') != 'enabled'"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,71 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.badger.daylight_controller": {
"initial_state": "init",
"states": {
"init": {
"transitions": [
{
"daylight_tamed": "((q.time_of_day - 0.25) <= 0.5) && q.is_tamed"
},
{
"daylight_untamed": "((q.time_of_day - 0.25) <= 0.5)"
},
{
"night": "((q.time_of_day - 0.25) > 0.5)"
}
]
},
"daylight_tamed": {
"on_entry": [
"@s silverlabs_nat:badger_daytime_tamed"
],
"transitions": [
{
"daylight_tamed": "((q.time_of_day - 0.25) <= 0.5) && q.is_tamed"
},
{
"daylight_untamed": "((q.time_of_day - 0.25) <= 0.5)"
},
{
"night": "((q.time_of_day - 0.25) > 0.5)"
}
]
},
"daylight_untamed": {
"on_entry": [
"@s silverlabs_nat:badger_daytime_wild"
],
"transitions": [
{
"daylight_tamed": "((q.time_of_day - 0.25) <= 0.5) && q.is_tamed"
},
{
"daylight_untamed": "((q.time_of_day - 0.25) <= 0.5)"
},
{
"night": "((q.time_of_day - 0.25) > 0.5)"
}
]
},
"night": {
"on_entry": [
"@s silverlabs_nat:badger_nighttime"
],
"transitions": [
{
"daylight_tamed": "((q.time_of_day - 0.25) <= 0.5) && q.is_tamed"
},
{
"daylight_untamed": "((q.time_of_day - 0.25) <= 0.5)"
},
{
"night": "((q.time_of_day - 0.25) > 0.5)"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,37 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.bear.eat": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"can_use": "query.property('silverlabs_nat:is_sitting')"
}
]
},
"can_use": {
"transitions": [
{
"default": "!query.property('silverlabs_nat:is_sitting')"
},
{
"configure_eating": "!math.random_integer(0, 79)"
}
]
},
"configure_eating": {
"on_entry": [
"@s silverlabs_nat:configure_eating"
],
"transitions": [
{
"default": "!query.property('silverlabs_nat:is_sitting')"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.beaver.chew_watcher": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{ "chewing": "query.property('silverlabs_nat:is_chewing')" }
]
},
"chewing": {
"on_exit": [
"/scriptevent silverlabs_nat:beaver_chew"
],
"transitions": [
{ "default": "!query.property('silverlabs_nat:is_chewing')" }
]
}
}
}
}
}

View File

@@ -0,0 +1,116 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.bird.landing_check": {
"initial_state": "default",
"states": {
"default": {
"on_entry": [
"v.switch_chance = 200;"
],
"transitions": [
{
"walking": "query.property('silverlabs_nat:movement_mode') == 'walk'"
},
{
"flying": "query.property('silverlabs_nat:movement_mode') == 'fly'"
}
]
},
"walking": {
"on_entry": [
"v.switch_delay = query.life_time + Math.random_integer(5, 10);"
],
"transitions": [
{
"start_flying": "!q.is_baby && (Math.random_integer(0, (v.switch_chance ?? 1)) == (v.switch_chance ?? 1) && (query.life_time > (v.switch_delay ?? 0))) && !query.property('silverlabs_nat:is_tempted') && !q.is_sitting && !q.is_in_love"
},
{
"flying": "query.property('silverlabs_nat:movement_mode') == 'fly'"
}
]
},
"start_flying": {
"on_entry": [
"@s silverlabs_nat:bird_set_flying_mode"
],
"transitions": [
{
"flying": "query.property('silverlabs_nat:movement_mode') == 'fly'"
}
]
},
"flying": {
"on_entry": [
"v.switch_delay = query.life_time + Math.random_integer(5, 10);"
],
"transitions": [
{
"landing_check": "q.is_baby || (Math.random_integer(0, (v.switch_chance ?? 1)) == (v.switch_chance ?? 1) && (query.life_time > (v.switch_delay ?? 0)) && !q.has_target) || query.property('silverlabs_nat:is_tempted') || q.is_sitting || q.is_in_love"
},
{
"walking": "query.property('silverlabs_nat:movement_mode') == 'walk'"
}
]
},
"landing_check": {
"on_entry": [
"/scriptevent silverlabs_nat:bird_landing_check"
],
"transitions": [
{
"default": "1"
}
]
}
}
},
"controller.animation.silverlabs_nat.bird.tempt_check": {
"initial_state": "default",
"states": {
"default": {
"on_entry": [
"@s silverlabs_nat:not_tempted"
],
"transitions": [
{
"tempted": "q.is_interested"
}
]
},
"tempted": {
"on_entry": [
"@s silverlabs_nat:is_tempted"
],
"transitions": [
{
"default": "!q.is_interested"
}
]
}
}
},
"controller.animation.silverlabs_nat.bird.smooth_landing": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"tempted": "!q.is_on_ground"
}
]
},
"tempted": {
"on_entry": [
"/effect @s slow_falling 2 1 true"
],
"transitions": [
{
"default": "1"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,46 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.blobfish": {
"initial_state": "init",
"states": {
"init": {
"transitions": [
{
"normal_blobfish": "query.is_in_water && q.position(1) < 30"
},
{
"land_blobfish": "q.position(1) > 30"
}
]
},
"normal_blobfish": {
"animations": [
"blobfish.duration"
],
"on_entry": [
"@s silverlabs_nat:blobfish_normal"
],
"transitions": [
{
"land_blobfish": "q.anim_time > 3.0 && q.position(1) > 30"
}
]
},
"land_blobfish": {
"animations": [
"blobfish.duration"
],
"on_entry": [
"@s silverlabs_nat:blobfish_land"
],
"transitions": [
{
"normal_blobfish": "q.anim_time > 3.0 && query.is_in_water && q.position(1) < 30"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.bucketable_entity": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"on_bucket": "q.has_any_family('silverlabs_nat:bucketable_entity') && query.property('silverlabs_nat:on_bucket')"
}
]
},
"on_bucket": {
"on_entry": [
"/scriptevent silverlabs_nat:bucketable_entity_interaction @initiator"
]
}
}
}
}
}

View File

@@ -0,0 +1,51 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.clam.launch": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"before_open": "query.property('silverlabs_nat:before_open')"
}
]
},
"before_open": {
"on_entry": [
"/scriptevent silverlabs_nat:clam_launch"
],
"transitions": [
{
"default": "!query.property('silverlabs_nat:before_open')"
}
]
}
}
},
"controller.animation.silverlabs_nat.clam.took_item": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"has_item": "query.property('silverlabs_nat:has_item')"
}
]
},
"has_item": {
"transitions": [
{
"took_item": "query.property('silverlabs_nat:took_item')"
}
]
},
"took_item": {
"on_entry": [
"/replaceitem entity @s slot.weapon.mainhand 0 minecraft:air"
]
}
}
}
}
}

View File

@@ -0,0 +1,39 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.crab": {
"initial_state": "on_load",
"states": {
"on_load": {
"on_entry": ["@s silverlabs_nat:crab_is_not_dancing"],
"transitions": [
{
"try_collect_sand": "query.property('silverlabs_nat:sand_block_interaction_state') == 'try_collect_sand'"
},
{
"try_place_sand": "query.property('silverlabs_nat:sand_block_interaction_state') == 'try_place_sand'"
}
]
},
"try_collect_sand": {
"on_entry": ["/scriptevent silverlabs_nat:crab_try_collect_sand"],
"transitions": [
{
"on_load": "query.property('silverlabs_nat:sand_block_interaction_state') != 'try_collect_sand'"
}
]
},
"try_place_sand": {
"on_entry": ["/scriptevent silverlabs_nat:crab_try_place_sand"],
"transitions": [
{
"on_load": "query.property('silverlabs_nat:sand_block_interaction_state') != 'try_place_sand'"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,36 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.eel_water_land": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"land": "!q.is_in_water"
},
{
"water": "q.is_in_water"
}
]
},
"land": {
"on_entry": ["@s silverlabs_nat:eel_on_land"],
"transitions": [
{
"water": "q.is_in_water"
}
]
},
"water": {
"on_entry": ["@s silverlabs_nat:eel_in_water"],
"transitions": [
{
"land": "!q.is_in_water"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,82 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.emperor_penguin.fall": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"fall": "query.property('silverlabs_nat:slip_anim') == 'none' && q.is_on_ground && !q.is_in_water && q.modified_move_speed > 0.05 && !query.property('silverlabs_nat:egg_protector') && math.random_integer(0, 333) == 0"
}
]
},
"fall": {
"on_entry": [
"/scriptevent silverlabs_nat:emperor_penguin_fall",
"v.cooldown_timer = query.life_time;"
],
"transitions": [
{
"default": "query.life_time >= (v.cooldown_timer + 16.0)"
}
]
}
}
},
"controller.animation.silverlabs_nat.emperor_penguin.egg_check": {
"initial_state": "default",
"states": {
"default": {
"on_entry": [
"v.cooldown_timer = 0;"
],
"transitions": [
{
"remove": "query.property('silverlabs_nat:egg_protector') && q.has_rider"
},
{
"cooldown": "query.property('silverlabs_nat:egg_protector') && !q.has_target"
}
]
},
"cooldown": {
"on_entry": [
"v.cooldown_timer = query.life_time;"
],
"transitions": [
{
"remove": "q.has_rider"
},
{
"default": "!query.property('silverlabs_nat:egg_protector') || q.has_target"
},
{
"egg_check": "query.life_time >= (v.cooldown_timer + 6.0)"
}
]
},
"egg_check": {
"on_entry": [
"/execute unless entity @e[type=silverlabs_nat:emperor_penguin_egg,c=1,r=24] run event entity @s silverlabs_nat:remove_egg_protector"
],
"transitions": [
{
"default": "1"
}
]
},
"remove": {
"on_entry": [
"@s silverlabs_nat:remove_egg_protector"
],
"transitions": [
{
"default": "1"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,133 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.light": {
"states": {
"default": {
"on_entry": [
"@s silverlabs_nat:reset_all"
],
"transitions": [
{
"reset": "q.is_shaking"
},
{
"on": "!q.is_shaking"
}
]
},
"on": {
"on_entry": [
"/tag @s add silverlabs_nat:light_source",
"/function sf/nba/lighting/setup"
],
"transitions": [
{
"default": "query.property('silverlabs_nat:furniture_variant') == 1"
},
{
"reset": "q.is_shaking"
}
]
},
"reset": {
"on_entry": [
"/function sf/nba/lighting/remove",
"/tag @s remove silverlabs_nat:light_source"
]
}
}
},
"controller.animation.silverlabs_nat.furniture_moved": {
"initial_state": "not_moving",
"states": {
"not_moving": {
"transitions": [
{
"moving": "math.abs(q.position_delta(0)) > 0.01 || math.abs(q.position_delta(1)) > 0.01 || math.abs(q.position_delta(2)) > 0.01 || q.is_in_lava"
}
]
},
"moving": {
"on_entry": [
"@s silverlabs_nat:drop_egg"
]
}
}
},
"controller.animation.silverlabs_nat.furniture_hit": {
"initial_state": "not_hit",
"states": {
"not_hit": {
"transitions": [
{
"hit": "query.property('silverlabs_nat:furniture_hit')"
},
{
"destroy": "query.is_shaking"
}
]
},
"hit": {
"on_entry": [
"@s silverlabs_nat:furniture_not_hit",
"/playsound dig.stone @a[r=16] ~ ~ ~ 0.75 1.45"
],
"transitions": [
{
"destroy": "query.is_shaking"
},
{
"not_hit": "1"
}
]
},
"destroy": {}
}
},
"controller.animation.silverlabs_nat.furniture_spawn": {
"states": {
"default": {
"transitions": [
{
"just_spawned": "query.property('silverlabs_nat:just_spawned')"
}
]
},
"just_spawned": {
"on_entry": [
"@s silverlabs_nat:finish_spawned",
"/playsound dig.stone @a[r=16] ~ ~ ~ 0.75 1.45"
]
}
}
},
"controller.animation.silverlabs_nat.firefly_jar.furniture_remove": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"egg_drop": "1"
}
]
},
"egg_drop": {
"on_entry": [
"/loot spawn ~0.5 ~0.5 ~0.5 loot \"sf/nba/items/firefly_jar.loot\""
],
"transitions": [
{
"dropped_egg": "1"
}
]
},
"dropped_egg": {
"on_entry": [
"@s silverlabs_nat:remove"
]
}
}
}
}
}

View File

@@ -0,0 +1,30 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.giraffe.head_collision": {
"initial_state": "head_normal",
"states": {
"head_normal": {
"on_entry": [
"@s silverlabs_nat:set_head_normal"
],
"transitions": [
{
"head_low": "q.has_rider && q.rider_head_x_rotation(0) >= 45"
}
]
},
"head_low": {
"on_entry": [
"@s silverlabs_nat:set_head_low"
],
"transitions": [
{
"head_normal": "!q.has_rider || q.rider_head_x_rotation(0) < 45"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,63 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.hamster.riding_check": {
"states": {
"default": {
"on_entry": ["@s silverlabs_nat:remove_move_away"],
"transitions": [
{ "riding": "q.is_riding" }
]
},
"riding": {
"transitions": [
{ "unriding": "!q.is_riding" }
],
"on_exit": ["@s silverlabs_nat:move_away"]
},
"unriding": {
"transitions": [
{ "default": "q.state_time >= 3.0" }
]
}
}
},
"controller.animation.silverlabs_nat.hamster.variant_fixer": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{ "variant_0": "q.had_component_group('silverlabs_nat:variant_0')" },
{ "variant_1": "q.had_component_group('silverlabs_nat:variant_1')" },
{ "variant_2": "q.had_component_group('silverlabs_nat:variant_2')" },
{ "variant_3": "q.had_component_group('silverlabs_nat:variant_3')" },
{ "variant_4": "q.had_component_group('silverlabs_nat:variant_4')" },
{ "variant_5": "q.had_component_group('silverlabs_nat:variant_5')" },
{ "variant_6": "q.had_component_group('silverlabs_nat:variant_6')" }
]
},
"variant_0": {
"on_entry": ["@s silverlabs_nat:set_variant_black"]
},
"variant_1": {
"on_entry": ["@s silverlabs_nat:set_variant_blackwhite"]
},
"variant_2": {
"on_entry": ["@s silverlabs_nat:set_variant_brown"]
},
"variant_3": {
"on_entry": ["@s silverlabs_nat:set_variant_grey"]
},
"variant_4": {
"on_entry": ["@s silverlabs_nat:set_variant_orange"]
},
"variant_5": {
"on_entry": ["@s silverlabs_nat:set_variant_peach"]
},
"variant_6": {
"on_entry": ["@s silverlabs_nat:set_variant_white"]
}
}
}
}
}

View File

@@ -0,0 +1,22 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.hamster_wheel.initialize": {
"states": {
"default": {
"transitions": [
{
"initialize": "!query.property('silverlabs_nat:initialized')"
}
]
},
"initialize": {
"on_entry": [
"/function sf/nba/cardinal_orientation",
"@s silverlabs_nat:initialized"
]
}
}
}
}
}

View File

@@ -0,0 +1,34 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.hedgehog.hit": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"hit": "query.property('silverlabs_nat:hit')"
}
]
},
"hit": {
"on_entry": [
"/scriptevent silverlabs_nat:hedgehog_hit",
"@s silverlabs_nat:remove_projectile"
],
"transitions": [
{
"fallback": "q.state_time > 3"
}
]
},
"fallback": {
"on_entry": [
"/scriptevent silverlabs_nat:hedgehog_hit",
"@s silverlabs_nat:remove_projectile"
]
}
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.block_animals.hippo.ram_watcher": {
"states": {
"default": {
"transitions": [
{ "ram_attack": "q.is_casting" }
]
},
"ram_attack": {
"on_entry": [
"/scriptevent silverlabs_nat:hippo_ram_attack",
"v.ram_attack_delay = query.life_time + 1.5;"
],
"transitions": [
{ "default": "query.life_time > (v.ram_attack_delay ?? 0)" }
]
}
}
}
}
}

View File

@@ -0,0 +1,47 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.info_book.orient": {
"initial_state": "not_oriented",
"states": {
"not_oriented": {
"on_entry": [
"/function sf/nba/cardinal_orientation"
],
"transitions": [
{
"oriented": "1"
}
]
},
"oriented": {
"on_entry": [
"@s silverlabs_nat:oriented"
]
}
}
},
"controller.animation.silverlabs_nat.info_book.hit": {
"initial_state": "not_hit",
"states": {
"not_hit": {
"transitions": [
{
"hit": "query.property('silverlabs_nat:hit')"
}
]
},
"hit": {
"on_entry": [
"@s silverlabs_nat:not_hit"
],
"transitions": [
{
"not_hit": "1"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,133 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.kiwi.digging_control": {
"states": {
"default": {
"transitions": [
{
"init": "!q.is_tamed"
}
]
},
"init": {
"on_entry": [
"/event entity @s silverlabs_nat:end_feeling_happy",
"/event entity @s silverlabs_nat:scenting"
],
"transitions": [
{
"test_digging_success": "query.property('silverlabs_nat:digging_states') == 'test_digging_success'"
}
]
},
"test_digging_success": {
"on_entry": [
"/function sf/nba/gameplay/digging/init_digging"
],
"on_exit": [
"v.stand_delay_trigger = query.life_time + 2;"
],
"transitions": [
{
"digging_successful": "query.property('silverlabs_nat:digging_states') == 'successful'"
},
{
"digging_unsuccessful": "query.property('silverlabs_nat:digging_states') == 'unsuccessful'"
}
]
},
"digging_successful": {
"on_entry": [
"/function sf/nba/gameplay/digging/digging_loot"
],
"transitions": [
{
"feeling_happy": "query.life_time >= v.stand_delay_trigger"
}
]
},
"digging_unsuccessful": {
"transitions": [
{
"default": "query.life_time >= v.stand_delay_trigger"
}
]
},
"feeling_happy": {
"on_entry": [
"/event entity @s silverlabs_nat:feeling_happy"
],
"transitions": [
{
"default": "1"
}
]
}
}
},
"controller.animation.silverlabs_nat.kiwi.sniffing_control": {
"states": {
"default": {
"transitions": [
{
"start_sniffing": "!q.is_tamed && (query.property('silverlabs_nat:digging_states') == 'trigger_digging')"
}
]
},
"start_sniffing": {
"on_entry": [
"/function sf/nba/gameplay/digging/init_sniffing"
],
"transitions": [
{
"default": "query.property('silverlabs_nat:digging_states') != 'trigger_digging'"
}
]
}
}
},
"controller.animation.silverlabs_nat.kiwi.pickup_control": {
"states": {
"default": {
"transitions": [
{
"start_sniffing": "q.is_tamed && !q.is_item_name_any('slot.weapon.mainhand', 'minecraft:wheat')"
}
]
},
"start_sniffing": {
"on_entry": [
"/replaceitem entity @s slot.weapon.mainhand 0 wheat"
],
"transitions": [
{
"start_sniffing": "!q.is_tamed || q.is_item_name_any('slot.weapon.mainhand', 'minecraft:wheat')"
}
]
}
}
},
"controller.animation.silverlabs_nat.kiwi.following_owner_check": {
"initial_state": "default",
"states": {
"default": {
"on_entry": [
"@s silverlabs_nat:not_following_owner"
],
"transitions": [
{ "following": "!q.is_sitting && q.is_tamed" }
]
},
"following": {
"on_entry": [
"@s silverlabs_nat:is_following_owner"
],
"transitions": [
{ "default": "q.is_sitting || !q.is_tamed" }
]
}
}
}
}
}

View File

@@ -0,0 +1,27 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.reptile_tail.flop": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"flop": "q.is_on_ground && !q.is_in_water"
}
]
},
"flop": {
"on_entry": [
"/scriptevent silverlabs_nat:reptile_tail_flop"
],
"transitions": [
{
"default": "!q.is_on_ground || q.is_in_water"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,40 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.mole.trail": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"state_check": "(math.abs(q.position_delta(0)) > 0.01|| math.abs(q.position_delta(2)) > 0.01) && query.property('silverlabs_nat:mole_state') != 'unrolled'"
},
{
"state_check_baby": "(math.abs(q.position_delta(0)) > 0.01|| math.abs(q.position_delta(2)) > 0.01) && query.property('silverlabs_nat:mole_state') != 'unrolled' && q.is_baby"
}
]
},
"state_check": {
"on_entry": [
"/execute positioned ~~~ unless entity @e[type=silverlabs_nat:dirt_trail,r=0.5] run summon silverlabs_nat:dirt_trail ~ ~ ~"
],
"transitions": [
{
"default": "(1.0)"
}
]
},
"state_check_baby": {
"on_entry": [
"/execute positioned ~~~ unless entity @e[type=silverlabs_nat:dirt_trail,r=0.5] run summon silverlabs_nat:dirt_trail ~ ~ ~ ~ ~ silverlabs_nat:baby"
],
"transitions": [
{
"default": "(1.0)"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,81 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.ostrich.egg_check": {
"initial_state": "default",
"states": {
"default": {
"on_entry": [
"v.cooldown_timer = 0;"
],
"transitions": [
{
"remove": "query.property('silverlabs_nat:egg_protector') && q.has_rider"
},
{
"cooldown": "query.property('silverlabs_nat:egg_protector') && !q.has_target"
}
]
},
"cooldown": {
"on_entry": [
"v.cooldown_timer = query.life_time;"
],
"transitions": [
{
"remove": "q.has_rider"
},
{
"default": "!query.property('silverlabs_nat:egg_protector') || q.has_target"
},
{
"egg_check": "query.life_time >= (v.cooldown_timer + 6.0)"
}
]
},
"egg_check": {
"on_entry": [
"/execute unless entity @e[type=silverlabs_nat:ostrich_egg,c=1,r=24] run event entity @s silverlabs_nat:remove_egg_protector"
],
"transitions": [
{
"default": "1"
}
]
},
"remove": {
"on_entry": [
"@s silverlabs_nat:remove_egg_protector"
],
"transitions": [
{
"default": "1"
}
]
}
}
},
"controller.animation.silverlabs_nat.ostrich.flap": {
"initial_state": "grounded",
"states": {
"grounded": {
"transitions": [
{
"flapping": "query.property('silverlabs_nat:has_rider') && !q.is_on_ground"
}
]
},
"flapping": {
"on_entry": [
"/effect @s slow_falling 2 0 true"
],
"transitions": [
{
"grounded": "q.is_on_ground || !query.property('silverlabs_nat:has_rider')"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,22 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.ostrich_egg.on_hatch": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"on_hatch": "q.is_transforming"
}
]
},
"on_hatch": {
"on_entry": [
"/event entity @e[c=1,type=silverlabs_nat:ostrich,r=12] silverlabs_nat:remove_egg_protector"
]
}
}
}
}
}

View File

@@ -0,0 +1,103 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.otter.eat": {
"initial_state": "default",
"states": {
"default": {
"on_entry": [
"v.eat_step = 0;",
"v.float_delay = query.life_time + 1;",
"@s silverlabs_nat:not_floating"
],
"transitions": [
{
"float": "(query.life_time > (v.float_delay ?? 0)) && q.is_item_equipped(0) && q.is_in_water && (math.random_integer(1,100) == 100)"
},
{
"give_to_player": "(query.life_time > (v.float_delay ?? 0)) && q.is_item_equipped(0) && (math.random_integer(1,100) == 100)"
}
]
},
"float": {
"on_entry": [
"@s silverlabs_nat:is_floating",
"v.eat_delay = query.life_time + math.random(2,5);"
],
"transitions": [
{
"default": "!q.is_item_equipped(0) || !q.is_in_water || (q.modified_move_speed >= 0.075)"
},
{
"eat": "(query.life_time > (v.eat_delay ?? 0))"
}
]
},
"eat": {
"on_entry": [
"v.eat_step = (v.eat_step ?? 0) + 1;",
"v.eat_delay = query.life_time + 0.15;"
],
"transitions": [
{
"munch": "((v.eat_step ?? 0) < 3) && (query.life_time > (v.eat_delay ?? 0))"
},
{
"digest": "(query.life_time > (v.eat_delay ?? 0))"
}
]
},
"munch": {
"on_entry": ["/playsound mob.fox.eat @a ~ ~ ~"],
"transitions": [
{
"eat": "1"
}
]
},
"digest": {
"on_entry": [
"/playsound mob.fox.eat @a ~ ~ ~ 1 1.2",
"/replaceitem entity @s slot.inventory 0 air",
"/replaceitem entity @s slot.weapon.mainhand 0 air",
"@s silverlabs_nat:otter_on_finish_eat",
"@s silverlabs_nat:not_floating"
],
"transitions": [
{
"default": "1"
}
]
},
"give_to_player": {
"on_entry": ["@s silverlabs_nat:give_item_to_player"],
"transitions": [
{
"default": "!q.is_item_equipped(0)"
}
]
}
}
},
"controller.animation.silverlabs_nat.otter.item_check": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"test": "q.is_item_equipped(0)"
}
]
},
"test": {
"on_entry": ["/scriptevent silverlabs_nat:otter_check"],
"transitions": [
{
"default": "!q.is_item_equipped(0)"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,43 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.piranha.attack": {
"initial_state": "default",
"states": {
"default": {
"on_entry": [
"v.attack_start = 0.0;"
],
"transitions": [
{ "attack": "q.is_delayed_attacking" }
]
},
"attack": {
"on_entry": [
"v.attack_start = q.life_time;"
],
"transitions": [
{ "apply_damage": "q.life_time >= v.attack_start + 0.3" }
]
},
"apply_damage": {
"on_entry": [
"/damage @e[family=!silverlabs_nat:piranha, r=2, c=1] 1 none",
"v.despawn_time = q.life_time;"
],
"transitions": [
{ "despawn": "q.life_time >= v.despawn_time + 0.25" }
]
},
"despawn": {
"on_entry": [
"@s silverlabs_nat:despawn"
],
"transitions": [
{ "default": "1" }
]
}
}
}
}
}

View File

@@ -0,0 +1,40 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.raccoon": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"is_searching_item": "query.property('silverlabs_nat:search_state') == 'searching_item'"
}
]
},
"is_searching_item": {
"on_entry": ["/scriptevent silverlabs_nat:raccoon_searching_item"],
"transitions": [
{
"cancel_searching_item": "query.property('silverlabs_nat:search_state') == 'cancel_searching_item'"
},
{
"default": "query.property('silverlabs_nat:search_state') != 'searching_item'"
}
]
},
"cancel_searching_item": {
"on_entry": ["/scriptevent silverlabs_nat:raccoon_cancel_searching_item"],
"transitions": [
{
"default": "query.property('silverlabs_nat:search_state') != 'cancel_searching_item'"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,37 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.ray.main": {
"initial_state": "default",
"states": {
"default": {
"on_entry": [
"@s silverlabs_nat:complete_attack"
],
"transitions": [
{ "escape": "!q.is_powered && q.is_avoiding_mobs" }
]
},
"escape": {
"on_entry": [
"v.escape_timer = query.life_time + 3;"
],
"transitions": [
{ "hide": "query.life_time > (v.escape_timer ?? 0)" }
]
},
"hide": {
"on_entry": [
"v.hide_timer = query.life_time + 3;",
"@s silverlabs_nat:start_hide"
],
"transitions": [
{
"default": "(query.life_time > (v.hide_timer ?? 0)) || !q.is_powered"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,105 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.red_panda.sleep_stand": {
"initial_state": "init",
"states": {
"init": {
"transitions": [
{
"wake_up": "query.property('silverlabs_nat:red_panda_energy') >= 10"
},
{
"fall_asleep": "query.property('silverlabs_nat:red_panda_energy') < 10 && !query.property('silverlabs_nat:red_panda_jolt_awake') && !q.is_moving && !q.is_in_water_or_rain"
}
]
},
"wake_up": {
"on_entry": [
"@s silverlabs_nat:awake"
],
"transitions": [
{
"awake": "1"
}
]
},
"awake": {
"animations": [
"duration"
],
"transitions": [
{
"fall_asleep": "query.property('silverlabs_nat:red_panda_energy') < 10 && !query.property('silverlabs_nat:red_panda_jolt_awake') && !q.is_moving && !q.is_in_water_or_rain"
},
{
"awake_2": "q.anim_time >= 1"
}
]
},
"awake_2": {
"on_entry": [
"@s silverlabs_nat:decrement_energy"
],
"transitions": [
{
"standing": "math.random_integer(0, 20) == 0"
},
{
"awake": "1"
}
]
},
"standing": {
"on_entry": [
"@s silverlabs_nat:start_standing"
],
"on_exit": [
"@s silverlabs_nat:stop_standing"
],
"animations": [
"duration"
],
"transitions": [
{
"awake": "q.anim_time >= math.die_roll(3, 0.5, 4) || q.is_moving"
}
]
},
"fall_asleep": {
"on_entry": [
"@s silverlabs_nat:sleeping"
],
"transitions": [
{
"sleeping": "1"
}
]
},
"sleeping": {
"animations": [
"duration"
],
"transitions": [
{
"wake_up": "query.property('silverlabs_nat:red_panda_energy') >= 960 || query.property('silverlabs_nat:red_panda_jolt_awake')"
},
{
"sleeping_2": "q.anim_time >= 1"
}
]
},
"sleeping_2": {
"on_entry": [
"@s silverlabs_nat:increment_energy"
],
"transitions": [
{
"sleeping": "1"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,57 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.block_animals.rhino.ram_watcher": {
"states": {
"default": {
"on_entry": [
"/tag @s remove ram_attack",
"@s silverlabs_nat:stop_ram"
],
"transitions": [
{ "start_ram_attack": "q.is_casting" }
]
},
"start_ram_attack": {
"on_entry": [
"v.ram_attack_delay = query.life_time + 2.2;"
],
"transitions": [
{ "default": "!q.is_casting" },
{
"using_ram_attack": "query.life_time > (v.ram_attack_delay ?? 0)"
}
]
},
"using_ram_attack": {
"on_entry": [
"/scriptevent silverlabs_nat:rhino_ram_attack",
"/tag @s add ram_attack",
"@s silverlabs_nat:start_ram",
"v.ram_attack_end_delay = query.life_time + 1.95;"
],
"transitions": [
{ "default": "query.life_time > (v.ram_attack_end_delay ?? 0)" }
]
}
}
},
"controller.animation.silverlabs_nat.block_animals.rhino.angry_watcher": {
"states": {
"default": {
"transitions": [
{ "scared": "q.has_target" }
]
},
"scared": {
"on_entry": [
"/scriptevent silverlabs_nat:rhino_angry"
],
"transitions": [
{ "default": "!q.has_target" }
]
}
}
}
}
}

View File

@@ -0,0 +1,48 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.skunk_spray": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"spraying": "query.property('silverlabs_nat:is_spraying') == true"
}
]
},
"spraying": {
"transitions": [
{
"default": "query.property('silverlabs_nat:is_spraying') == false"
}
],
"on_entry": [
"/scriptevent silverlabs_nat:skunk_spray"
]
}
}
},
"controller.animation.silverlabs_nat.skunk.breed_check": {
"initial_state": "default",
"states": {
"default": {
"on_entry": [
"@s silverlabs_nat:set_not_breeding"
],
"transitions": [
{ "breeding": "q.is_in_love" }
]
},
"breeding": {
"on_entry": [
"@s silverlabs_nat:set_is_breeding"
],
"transitions": [
{ "default": "!q.is_in_love" }
]
}
}
}
}
}

View File

@@ -0,0 +1,28 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.slug.bounce": {
"initial_state": "default",
"states": {
"default": {
"on_entry": ["@s silverlabs_nat:can_detect_bounce"],
"transitions": [
{ "bounce": "query.property('silverlabs_nat:bounce')" }
]
},
"bounce": {
"on_entry": [
"v.delay = 2;",
"v.current_delay = query.life_time;",
"/scriptevent silverlabs_nat:should_bounce_player @p"
],
"transitions": [
{ "default": "(query.life_time - v.current_delay >= v.delay)" }
]
}
}
}
}
}

View File

@@ -0,0 +1,64 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.snail.crush_check": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{ "test": "query.property('silverlabs_nat:was_stepped_on')" }
]
},
"test": {
"on_entry": [
"/scriptevent silverlabs_nat:snail_crush_check"
],
"transitions": [
{ "default": "!query.property('silverlabs_nat:was_stepped_on')" }
]
}
}
},
"controller.animation.silverlabs_nat.snail.catch_check": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{ "test": "query.property('silverlabs_nat:was_caught')" }
]
},
"test": {
"on_entry": [
"/scriptevent silverlabs_nat:snail_bucket"
],
"transitions": [
{ "default": "!query.property('silverlabs_nat:was_caught')" }
]
}
}
},
"controller.animation.silverlabs_nat.snail.lay_egg": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{ "ready": "q.is_pregnant" }
]
},
"ready": {
"transitions": [
{ "done": "!q.is_pregnant" }
]
},
"done": {
"on_entry": [
"/scriptevent silverlabs_nat:snailegg_formed"
],
"transitions": [
{ "default": "1" }
]
}
}
}
}
}

View File

@@ -0,0 +1,70 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.snake.digest": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{ "digest": "query.property('silverlabs_nat:digested_item')" }
]
},
"digest": {
"on_entry": [
"/replaceitem entity @s slot.inventory 0 air",
"/replaceitem entity @s slot.weapon.mainhand 0 air",
"@s silverlabs_nat:snake_on_finish_eat"
],
"transitions": [
{ "default": "1" }
]
}
}
},
"controller.animation.silverlabs_nat.snake.food_check": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{ "test": "q.is_item_equipped(0)" }
]
},
"test": {
"on_entry": [
"/scriptevent silverlabs_nat:snake_check"
],
"transitions": [
{ "default": "!q.is_item_equipped(0)" }
]
}
}
},
"controller.animation.silverlabs_nat.snake.wake_up_check": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{ "wake_up": "q.is_in_love" },
{ "can_sleep": "!q.is_in_love" }
]
},
"wake_up": {
"on_entry": [
"/tag @s add woken_up"
],
"transitions": [
{ "can_sleep": "!q.is_in_love" }
]
},
"can_sleep": {
"on_entry": [
"/tag @s remove woken_up"
],
"transitions": [
{ "wake_up": "q.is_in_love" }
]
}
}
}
}
}

View File

@@ -0,0 +1,23 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.termite.chew_watcher": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{ "chewing": "query.property('silverlabs_nat:is_chewing')" }
]
},
"chewing": {
"on_exit": [
"/scriptevent silverlabs_nat:termite_chew"
],
"transitions": [
{ "default": "!query.property('silverlabs_nat:is_chewing')" }
]
}
}
}
}
}

View File

@@ -0,0 +1,36 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.vulture.item_equipped": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"on_equip": "!query.property('silverlabs_nat:is_item_equipped') && q.is_item_equipped"
},
{
"on_unequip": "query.property('silverlabs_nat:is_item_equipped') && !q.is_item_equipped"
}
]
},
"on_equip": {
"on_entry": ["@s silverlabs_nat:set_item_equipped"],
"transitions": [
{
"default": "query.property('silverlabs_nat:is_item_equipped')"
}
]
},
"on_unequip": {
"on_entry": ["@s silverlabs_nat:set_item_equipped"],
"transitions": [
{
"default": "!query.property('silverlabs_nat:is_item_equipped')"
}
]
}
}
}
}
}

View File

@@ -0,0 +1,43 @@
{
"format_version": "1.10.0",
"animation_controllers": {
"controller.animation.silverlabs_nat.water_drinkable": {
"initial_state": "default",
"states": {
"default": {
"transitions": [
{
"can_use": "!q.is_baby"
}
]
},
"can_use": {
"transitions": [
{
"can_drink": "q.is_on_ground ? {t.x_offset = -math.sin(q.body_y_rotation) * 2.5; t.z_offset = math.cos(q.body_y_rotation) * 2.5; v.can_drink = q.relative_block_has_any_tag(t.x_offset, -1.0, t.z_offset, 'water');}: {v.can_drink = 0;}; return (v.can_drink ?? 0) && !query.property('silverlabs_nat:can_drink');"
},
{
"can_move_to_water": "query.property('silverlabs_nat:can_drink') && !(v.can_drink ?? 0)"
}
]
},
"can_drink": {
"on_entry": ["@s silverlabs_nat:can_drink"],
"transitions": [
{
"can_use": "query.property('silverlabs_nat:can_drink')"
}
]
},
"can_move_to_water": {
"on_entry": ["@s silverlabs_nat:can_move_to_water"],
"transitions": [
{
"can_use": "!query.property('silverlabs_nat:can_drink')"
}
]
}
}
}
}
}