Hello!
Thanks for the interest!
Winter Is Coming keeps an internal snapshot of the "warm" terrain tiles, then replaces the visible tiles with winter variants while freezing is active. When the world thaws, it restores the terrain from that warm snapshot.
So for compatibility, the important part is that terrain-changing mods raise tile-change events when they modify terrain:
surface.set_tiles(..., raise_event = true)
That raise_event = true allows Winter Is Coming to detect the change and update its warm-tile snapshot. If the changed position is currently behind the snow front / in winter, WIC can then immediately redraw the visible tile using the winter version.
Winter tile selection works like this:
- explicit WIC mappings, for special cases like water -> ice and vanilla dirt/grass -> snow variants
frozen-<tile-name>, if such a tile prototype exists
- fallback to
snow-flat
So if another mod provides a tile called my-soil, and also provides frozen-my-soil, WIC should automatically use frozen-my-soil as the winter display tile. If no frozen variant exists, it falls back to snow.
For Treez specifically, if your tile upgrades are intended to change the underlying/base terrain, I think the best integration approach is to keep doing the upgrades, but call surface.set_tiles with raise_event = true. Then WIC can treat your change as the new warm terrain and handle the winter rendering itself.
I also think your idea of exposing seasonal state hooks makes sense, although perhaps for slightly different goals.
What do you think?