I'm not trying to mod anything related to tree growth, exactly. I'm just trying to find out where is laid out in the game code so that I can see exactly how it is calculated. I've been poking around XNBs to no avail. Help? Also, I'm talking maple/pine/oak, not the fruit trees.
Non-fruit tree growth is handled in the game code, specifically Tree::dayUpdate. (Fruit trees are separate.) Here's the relevant part: Code: public override void dayUpdate(GameLocation environment, Vector2 tileLocation) { [...] if (!Game1.currentSeason.Equals("winter") || this.treeType == Tree.palmTree || environment.Name.ToLower().Contains("greenhouse")) { [...] if (this.growthStage == Tree.treeStage - 1) { foreach (var terrainFeature in environment.terrainFeatures) { if (terrainFeature.Value is Tree tree && tree != this && tree.growthStage >= 5 && tree.getBoundingBox(terrainFeature.Key).Intersects(rectangle)) return; } } else if (this.growthStage == Tree.seedStage && environment.objects.ContainsKey(tileLocation)) return; if (Game1.random.NextDouble() < 0.2) this.growthStage = this.growthStage + 1; } [...] } Which essentially means a tree grows if... it's not winter, or the tree is in the greenhouse; the tree's tile is clear (if seed stage); the surrounding tiles are clear (if almost-fully-grown stage); a 20% random check passes.
It's in Stardew Valley.exe. You can decompile it to see an approximation of the original code; once you do, it'll be in TerrainFeatures\Tree.cs.