private void QueueAssemblyLine(InventoryComponent targetInventory, InventoryComponent actualInventory, IEnumerable <IMyAssembler> assemblers) { if (assemblers == null || assemblers.Count() == 0) { return; } IMyAssembler assembler = FindMasterAssembler(assemblers); if (assembler == null) { assembler = FindRandomAssembler(assemblers); } IEnumerable <ComponentType> componentTypes = actualInventory.GetKeys(); foreach (ComponentType componentType in componentTypes) { var difference = targetInventory.GetValue(componentType) - actualInventory.GetValue(componentType); if (difference > 0) { assembler.AddQueueItem(MyDefinitionId.Parse("MyObjectBuilder_BlueprintDefinition/" + componentType.ToString()), difference); } } }