Blueprint node with networking code doesn't continue on client

I have a blueprint event that is trying to add an item to the characters inventory for a multiplayer game.

The Add Item node has some C++ networking code inside of it.

void UXLInventoryManager::AddItem(TSubclassOf<class AXLItem> item, AActor* owner)
{
	if (item && owner && Inventory.Num() < InventorySize)
	{
		if (GetOwnerRole() == ROLE_Authority)
		{
			FActorSpawnParameters SpawnInfo;
			SpawnInfo.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
			AXLWeapon* NewWeapon = GetWorld()->SpawnActor<AXLWeapon>(item, SpawnInfo);

			NewWeapon->SetOwner(owner);
			Inventory.Add(NewWeapon);
		}
		else
		{
			ServerAddItem(item, owner);
		}
	}
	else
	{
		UE_LOG(XLLog, Log, TEXT("Unable to equip item"));
	}
}

bool UXLInventoryManager::ServerAddItem_Validate(TSubclassOf<class AXLItem> item, AActor* owner)
{
	return true;
}
void UXLInventoryManager::ServerAddItem_Implementation(TSubclassOf<class AXLItem> item, AActor* owner)
{
	AddItem(item, owner);
}

On the server, it correctly adds the item and then continues on to call the Destroy event.

However on clients, it runs the Add Item node but doesn’t continue on to call the Destroy event.

Looks like that is because you only tell it to run on server in the blueprint.

I guess I am a little confused. I thought by setting Replicated to Run on Server that the client request that the function be run on the server and when a server destroys something it is automatically replicated to all clients.

Ah that’s true - youre right. I wasnt thinking clearly.
Have you confirmed that the client is firing the RPC and that the server is executing it? I usually just add on a PrintString node at each end to confirm.