Server Spawns actors on client with wrong parameters

I find out I can use a function in C++ which spawn an actor and let you change your desired parameters and run ConstructionScript after all. So I created two C++ class one named TerrainBuilder and one as my module parent, named ModuleParameters. I created ModuleWidth variable in C++ parent and I created a blueprintcallable function in TerrainBuilder to SpawnDeferred. After spawning I changed ModuleWidth and finished spawn. But Still the same result.
This making me crazy, can anyone help please?

AModuleParameters* ATerrainBuilder::SpawnDeferred(TSubclassOf<AModuleParameters> ToSpawn, FTransform SpawnTransform)
{
	auto MyDeferredActor = Cast<AModuleParameters>(UGameplayStatics::BeginDeferredActorSpawnFromClass(this, ToSpawn, SpawnTransform));
	if (MyDeferredActor != nullptr)
	{
		MyDeferredActor->SetModuleWidth(2);
		UGameplayStatics::FinishSpawningActor(MyDeferredActor, SpawnTransform);
	}
	return MyDeferredActor;
}