feat: add multi-world hub system with lobby portals and hub-return addon
Lobby addon detects players in portal zones at X: -15/0/15 and transfers them to Jamie/Lyla/Mya survival worlds. Hub-return addon gives players a recovery compass and chat commands (!hub, !lobby) to return to the lobby. Includes docker-compose.yml for 4 Bedrock servers (lobby + 3 child worlds), spark pet behavior/resource packs, and updated .gitignore. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"animation_controllers": {
|
||||
"controller.animation.dragon_egg": {
|
||||
"initial_state": "cold",
|
||||
"states": {
|
||||
"cold": {
|
||||
"animations": ["idle"],
|
||||
"transitions": [
|
||||
{ "warming": "query.property('silverlabs:egg_stage') == 1" }
|
||||
]
|
||||
},
|
||||
"warming": {
|
||||
"animations": ["wobble"],
|
||||
"particle_effects": [
|
||||
{ "effect": "smoke" }
|
||||
],
|
||||
"transitions": [
|
||||
{ "hot": "query.property('silverlabs:egg_stage') == 2" }
|
||||
]
|
||||
},
|
||||
"hot": {
|
||||
"animations": ["shake"],
|
||||
"particle_effects": [
|
||||
{ "effect": "flame" },
|
||||
{ "effect": "smoke" }
|
||||
],
|
||||
"transitions": [
|
||||
{ "hatching": "query.property('silverlabs:egg_stage') == 3" }
|
||||
]
|
||||
},
|
||||
"hatching": {
|
||||
"animations": ["shake"],
|
||||
"particle_effects": [
|
||||
{ "effect": "flame" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"animation_controllers": {
|
||||
"controller.animation.dragon_gravestone": {
|
||||
"initial_state": "active",
|
||||
"states": {
|
||||
"active": {
|
||||
"animations": ["idle"],
|
||||
"particle_effects": [
|
||||
{ "effect": "memorial_glow" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"controller.animation.dragon_gravestone.beacon": {
|
||||
"initial_state": "active",
|
||||
"states": {
|
||||
"active": {
|
||||
"particle_effects": [
|
||||
{ "effect": "beacon_beam" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
{
|
||||
"format_version": "1.10.0",
|
||||
"animation_controllers": {
|
||||
"controller.animation.spark_dragon.beacon": {
|
||||
"initial_state": "inactive",
|
||||
"states": {
|
||||
"inactive": {
|
||||
"transitions": [
|
||||
{ "active": "query.property('silverlabs:beacon_active')" }
|
||||
]
|
||||
},
|
||||
"active": {
|
||||
"particle_effects": [
|
||||
{ "effect": "beacon_beam" }
|
||||
],
|
||||
"transitions": [
|
||||
{ "inactive": "!query.property('silverlabs:beacon_active')" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"controller.animation.spark_dragon": {
|
||||
"initial_state": "idle",
|
||||
"states": {
|
||||
"idle": {
|
||||
"animations": ["idle"],
|
||||
"transitions": [
|
||||
{ "flying": "!query.is_on_ground && query.property('silverlabs:growth_stage') == 2" },
|
||||
{ "walking": "query.modified_move_speed > 0.1" },
|
||||
{ "sleeping": "query.is_sitting && (query.day_light_level < 4)" },
|
||||
{ "sitting": "query.is_sitting" }
|
||||
]
|
||||
},
|
||||
"walking": {
|
||||
"animations": ["walk"],
|
||||
"transitions": [
|
||||
{ "flying": "!query.is_on_ground && query.property('silverlabs:growth_stage') == 2" },
|
||||
{ "idle": "query.modified_move_speed <= 0.1" },
|
||||
{ "sitting": "query.is_sitting" }
|
||||
]
|
||||
},
|
||||
"sitting": {
|
||||
"animations": ["sit"],
|
||||
"transitions": [
|
||||
{ "idle": "!query.is_sitting" },
|
||||
{ "sleeping": "query.is_sitting && (query.day_light_level < 4)" }
|
||||
]
|
||||
},
|
||||
"sleeping": {
|
||||
"animations": ["sleep"],
|
||||
"transitions": [
|
||||
{ "idle": "!query.is_sitting" },
|
||||
{ "sitting": "query.is_sitting && (query.day_light_level >= 4)" }
|
||||
]
|
||||
},
|
||||
"flying": {
|
||||
"animations": ["fly"],
|
||||
"transitions": [
|
||||
{ "idle": "query.is_on_ground && query.modified_move_speed <= 0.1" },
|
||||
{ "walking": "query.is_on_ground && query.modified_move_speed > 0.1" }
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"controller.animation.spark_dragon.mood": {
|
||||
"initial_state": "content",
|
||||
"states": {
|
||||
"happy": {
|
||||
"particle_effects": [
|
||||
{ "effect": "mood_happy" }
|
||||
],
|
||||
"transitions": [
|
||||
{ "content": "query.property('silverlabs:mood') == 1" },
|
||||
{ "needy": "query.property('silverlabs:mood') == 0" }
|
||||
]
|
||||
},
|
||||
"content": {
|
||||
"transitions": [
|
||||
{ "happy": "query.property('silverlabs:mood') == 2" },
|
||||
{ "needy": "query.property('silverlabs:mood') == 0" }
|
||||
]
|
||||
},
|
||||
"needy": {
|
||||
"particle_effects": [
|
||||
{ "effect": "mood_needy" }
|
||||
],
|
||||
"transitions": [
|
||||
{ "happy": "query.property('silverlabs:mood') == 2" },
|
||||
{ "content": "query.property('silverlabs:mood') == 1" }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user