Those two functions, GetWeatherInterval() and SetWeatherInterval(), do they work on a single interval, or do they set the interval permanently? That is, once the interval is up and the weather changes, will the new interval be the old value or the newly set value? Is it possible to rename the functions to make this more apparent? Or add the counterparts?
I'd go with:
GetTicksUntilWeatherChange() - returns the number of game ticks until the current weather changes
SetTicksUntilWeatherChange(a_Ticks) - sets the number of game ticks until the current weather changes
GetWeatherInterval(a_Weather) - returns the number of ticks for which the specified weather stays (is a per-weather value)
SetWeatherInterval(a_Weather, a_Interval) - sets the number of ticks for which the specified weather stays (per-weather; regardless of what weather is now)
I don't think the level.dat change is necessary, that file is only written so that external tools, such as map viewers, work with the level. MCServer doesn't use it at all - it has its own world.ini that should store all the info.
I'd go with:
GetTicksUntilWeatherChange() - returns the number of game ticks until the current weather changes
SetTicksUntilWeatherChange(a_Ticks) - sets the number of game ticks until the current weather changes
GetWeatherInterval(a_Weather) - returns the number of ticks for which the specified weather stays (is a per-weather value)
SetWeatherInterval(a_Weather, a_Interval) - sets the number of ticks for which the specified weather stays (per-weather; regardless of what weather is now)
I don't think the level.dat change is necessary, that file is only written so that external tools, such as map viewers, work with the level. MCServer doesn't use it at all - it has its own world.ini that should store all the info.