You are calling interface functions directly again. Please refrain from doing that, you are crashing your game because of it. In AMainChar you need to invoke the interface command with execute.
Please install the debug symbols to get normal error messages and not shot’s in the dark with just line numbers.
void AMainChar::SpellCast() {
if (Magic == nullptr)return;
if (Magic->GetNeedCast()) {
UE_LOG(LogTemp, Display, TEXT("Need cast"));
// StartCasting(); <---- WRONG DO NOT CALL THE INTERFACE FUNCTION DIRECTLY!
if (GetClass()->ImplementsInterface(UINF_MainChar::StaticClass()))
{
IINF_MainChar::Execute_StartCasting(this);
}
}
}