Can't we get rid of the `IsBlockWater()` part of the condition, simply by telling the water block handler that grass cannot grow under it (in the `CanDirtGrowGrass` function)? That's what the function is for, anyway, isn't it?