diff --git a/src/simulator/api-gdext/src/lib.rs b/src/simulator/api-gdext/src/lib.rs index a1134f7c..60e351a5 100644 --- a/src/simulator/api-gdext/src/lib.rs +++ b/src/simulator/api-gdext/src/lib.rs @@ -3776,6 +3776,23 @@ impl GdGameState { true } + /// List every registered AI controller id (sorted, ascending). + /// Bridges `mc_player_api::registered_ids` to GDScript so the + /// game-setup screen (Stage 8) can populate its per-slot + /// "AI Controller" dropdowns without hardcoding the id list. + /// + /// At engine boot the registry contains `"scripted:default"`; + /// `ModLoader` (Stage 5) registers additional ids before this + /// is read. + #[func] + fn registered_controller_ids() -> PackedStringArray { + let mut out = PackedStringArray::new(); + for id in mc_player_api::registered_ids() { + out.push(&GString::from(id)); + } + out + } + /// Current turn number. #[func] fn turn(&self) -> i64 {