use crate::{ecs::{CraftPartRequest, Part}, prelude::*, server::part::{SpawnPartBundle, SpawnPartRequest}}; pub fn craft_plugin(app: &mut App) { app.add_systems(Update, receive_crafting_request); } fn receive_crafting_request( mut craft_part_request: MessageReader>, mut part_query: Query<(&Transform, &Part)>, mut commands: Commands, asset_server: Res, ) { for request in craft_part_request.read() { let Ok((transform, part)) = part_query.get(request.crafting_part) else { warn!("When receiving a crafting request, the crafting part didn't exist."); continue; }; commands.spawn(SpawnPartBundle { req: SpawnPartRequest(asset_server.load( format!("config/parts/{}.part.toml", request.crafted_part.to_lowercase()))), transform: transform.with_translation(transform.translation + vec3(50.0, 0.0, 0.0)), }); } }