Skip to content

Climate Settings

Townstead reads its climate numbers from data/townstead/need/temperature.json. To change them, put a file at the same path in your pack. Townstead uses the shipped value for any field that your file does not set.

This page lists the climate fields. The same file also holds room heat and body temperature settings. See Temperature.

FieldDefaultDescription
biome_anchorssee belowPairs of vanilla biome temperature and yearly mean in °C. Townstead draws straight lines between the pairs and extends the end lines past them.
biome_mean_coceans, river, stony shore, mushroom fields, windswept biomes, stony peaks, cherry groveYearly means for single biomes by id, or for tags written as #namespace:path. Townstead checks ids first, then tags in file order.
altitude_blocks_per_degree15Above sea level, the air is 1 °C colder for each 15 blocks. For a biome with a profile, the height is counted from its typical_y, in both directions.
nether_celsius45The temperature of an ultrawarm dimension without a dimension file.
end_celsius5The temperature of an unnatural dimension without a dimension file.

The shipped anchors:

Vanilla temperatureYearly meanExample biome
−0.5−12 °Csnowy taiga
0.15−3 °C
0.813 °Cplains
0.9524 °Cjungle
2.026 °Cdesert, savanna

Many vanilla biomes share one temperature. For example, every ocean has 0.5. Use biome_mean_c to set them apart:

{
"biome_mean_c": {
"minecraft:warm_ocean": 25.0,
"#examplepack:volcanic": 30.0
}
}

The zone’s mean_offset_c adds to the mean from either source. See Climate Zones.

FieldDefaultDescription
no_season_swing_fraction0.65With no season mod, every day adds this share of the zone’s swing above the yearly mean. A zone file can set its own value.
FieldDefaultDescription
rain_wet_bulb_fraction_day0.4At midday, falling rain cools the air this share of the way to its wet-bulb temperature. See Rain and Humidity.
rain_wet_bulb_fraction_night0.2The same share at night.
rain_offset0An extra flat amount added under open sky while it rains or snows.
cloud_diurnal_factor0.4While it rains, the day and night range is this fraction of its usual size.
snowfall_c-3While snow falls on a position, the air is this temperature or colder.
snow_day_max_c1With snow on the ground, daytime air is this temperature or colder. The snow uses the heat of the sun to melt.
snow_night_cooling_c-5With snow on the ground, clear nights are this much colder.

Each place has a relative humidity from 0 to 1. It comes from the biome profile’s humidity, else the zone’s, as a typical daytime value. It is higher at dawn and lower in the afternoon. While it rains, it is 1.

Falling rain cools the air by evaporation. The air can only cool as far as its wet-bulb temperature, the temperature a wet surface reaches in that air. Warm dry air has a low wet bulb, so rain in a desert cools the air a lot. Humid or cold air has a wet bulb near the air temperature, so rain cools it very little. Rain cools about half as much at night as at midday. Clouds also make the day and night range smaller, so a rainy night is milder than a clear one.

RainCooling
Plains, 20 °C, noonAbout 2 °C
Desert, 35 °C, noonAbout 6 °C
Jungle, 30 °C, noonLess than 1 °C

Snow on the ground means a snow layer, snow block or powder snow at or under the position. With Ecliptic Seasons, it also means Ecliptic’s own snow cover, which has no blocks.

FieldDefaultDescription
surface_layer_blocks3Cover at which the air reaches the ground temperature.
ground_damping_depth_blocks3Depth at which the seasonal swing is about one third of the surface swing.
geothermal_start_y48Rock below this height gets warmer with depth.
geothermal_c_per_block0.15Heat for each block below geothermal_start_y.
geothermal_deepslate_y0Below this height, the steeper rate applies.
geothermal_deepslate_c_per_block0.2Heat for each block below geothermal_deepslate_y.
lava_rock_radius12Lava within this distance warms the rock. Maximum 24.
lava_rock_c1.5Heat from one lava block at a distance of one block. Each block adds this value divided by its distance.
lava_rock_max_c25The most heat that lava can add.

See Underground.

FieldDefaultDescription
comfort_range_c[15, 27]The feels-like range where a body is comfortable, when the temperature mod gives none.
acclimation.cold_shift_c[-4, -2]How far full cold adaptation moves the low and high ends of the range.
acclimation.hot_shift_c[2, 4]How far full heat adaptation moves them.
acclimation.full_minutes60Real minutes for a full change.

A root can change these per body with comfort_offset_c and acclimation on pheno:thermal_tolerance.

A heat or cooling source does two things:

  • Room heat: while it is active, it puts its power into the room it stands in. The room warms over minutes.
  • Radiant heat: a body that can see the source feels warmer (or colder) at once. Radiant heat is strong at one block, about a quarter of that at three blocks, and stops behind solid blocks. It warms bodies, not the air.

Each source is an entry in thermal_appliances, by block id:

"thermal_appliances": {
"examplepack:clay_oven": {
"power_w": 2500,
"surface_c": 200,
"size": 1,
"draft": true
}
}
FieldDefaultDescription
power_wHeat put into the room while the source is active, in watts. Negative for cooling. room_power_w is the older name.
surface_cTemperature of the hot or cold face. With size, sets the radiant heat.
cold_surface_cFor a reversible source, the face temperature on its cooling side.
size1Radiating area, in block faces.
radiant_degreesSets the radiant heat directly, in place of surface_c.
drafttrueThe source burns room air, so it also pulls outside air through the room.
reversiblefalseThe source heats or cools as its temperature mod reports.
native_reference_degrees0The temperature mod’s value at full output, to scale partial output.

A block with no entry uses its temperature mod’s block value, then the #townstead:thermal/heat_sources and #townstead:thermal/cooling_sources tags.

FieldDefaultDescription
thermal_radiant_per_surface_degree0.0667Radiant heat at the face for each degree the face is above the air, per block face.
source_radius10How far to look for sources, in blocks.
heat_source_offset12Radiant heat of a tagged heat source.
cooling_source_offset-8Radiant chill of a tagged cooling source in 30 °C air. The chill gets smaller as the air gets colder, and is 0 at 0 °C and below.
thermal_radiant_max_c40Radiant heat from several sources together stops rising here.
FieldDefaultDescription
crop_climatefive classesA range for each crop climate class, with min_c and max_c. An open end has no limit.
crop_default_class"temperate"The class of a crop that has none.
{
"crop_climate": {
"warm_season": { "min_c": 10.0 },
"alpine_herb": { "min_c": -2.0, "max_c": 18.0 }
}
}

A new class needs its tag, here #townstead:crops/climate/alpine_herb. See Crops.

season_offsets and night_offset come from before the climate zones. Townstead still adds them on top of the model. Both default to 0.