Add central live map backend: chunk/player ingest, Vantage sidecar supervisor and proxy
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DjMbLQujBHunCCu5GpsHaT
This commit is contained in:
13 files changed
+1255
-7
No files matched your search
@@ -6,6 +6,7 @@ pub mod connections;
|
||||
pub mod economy;
|
||||
pub mod guilds;
|
||||
pub mod landing;
|
||||
pub mod livemap;
|
||||
pub mod leveling;
|
||||
pub mod meta;
|
||||
pub mod public;
|
||||
@@ -45,6 +46,7 @@ pub fn api(state: &AppState) -> Router<AppState> {
|
||||
.route("/avatar/{id}", get(account::avatar))
|
||||
.route("/servers/public", get(servers::public_servers))
|
||||
.route("/servers/{id}/leaderboard", get(servers::public_server_leaderboard))
|
||||
.route("/servers/{id}/livemap", get(livemap::viewer_info))
|
||||
.route("/leaderboard", get(servers::global_leaderboard))
|
||||
.route("/landing", get(landing::public_landing))
|
||||
.route("/launcher/authlib-injector.json", get(account::authlib_index))
|
||||
@@ -140,6 +142,7 @@ pub fn api(state: &AppState) -> Router<AppState> {
|
||||
.route("/servers", get(servers::list).post(servers::create))
|
||||
.route("/servers/{id}", get(servers::detail).put(servers::update).delete(servers::remove))
|
||||
.route("/servers/{id}/token", post(servers::regenerate_token))
|
||||
.route("/servers/{id}/livemap", get(livemap::admin_status).delete(livemap::admin_reset))
|
||||
.route("/users/{id}/activity", get(servers::user_activity))
|
||||
.route("/meta/minecraft", get(meta::minecraft))
|
||||
.route("/meta/loaders/{loader}", get(meta::loaders))
|
||||
@@ -183,9 +186,20 @@ pub fn api(state: &AppState) -> Router<AppState> {
|
||||
.route("/economy/market/buy", post(economy::server_market_buy))
|
||||
.layer(DefaultBodyLimit::max(2 * 1024 * 1024));
|
||||
|
||||
// Live map ingest: chunk batches are larger than the other game calls.
|
||||
let livemap_game = Router::new()
|
||||
.route("/livemap/config", get(livemap::game_config_route))
|
||||
.route("/livemap/manifest", get(livemap::game_manifest))
|
||||
.route("/livemap/chunks", post(livemap::game_chunks))
|
||||
.route("/livemap/level", post(livemap::game_level))
|
||||
.route("/livemap/players", post(livemap::game_players))
|
||||
.route("/livemap/ws", get(livemap::game_ws))
|
||||
.layer(DefaultBodyLimit::max(10 * 1024 * 1024));
|
||||
|
||||
Router::new()
|
||||
.route("/api/livemap/{id}/{dim}/{*path}", get(livemap::proxy))
|
||||
.nest("/api/v1", launcher)
|
||||
.nest("/api/server/v1", game)
|
||||
.nest("/api/server/v1", game.merge(livemap_game))
|
||||
.nest("/api/admin", admin)
|
||||
.merge(crate::yggdrasil::routes().layer(DefaultBodyLimit::max(4 * 1024 * 1024)))
|
||||
.layer(axum::middleware::from_fn_with_state(state.clone(), activity::audit))
|
||||
|
||||
Reference in new issue
Block a user