my suggestion is when a plant is farmed, automatically clone and replant the same plant.
here is a piece of code i was testing to do just that
After farming the plant change to gying state, This change it back to a previous state and update the genes like its a new plant
void OnGrowableGathered(GrowableEntity plant, Item item, BasePlayer player)
{
NextTick(() =>
{
if (plant.State == PlantProperties.State.Ripe) || (plant.State == PlantProperties.State.Mature)
{
plant.State = PlantProperties.State.Seedling;
plant.stageAge = 0f;
plant.Age = 0;
for (int i = 0; i < 6; i++)
{
plant.Genes.Genes[i].Set(plant.Genes.Genes[i].Type, true);
}
}
else
{
plant.State = PlantProperties.State.Dying;
plant.stageAge = 0f;
}
plant.SendNetworkUpdate();
});
return;
}