Temperature has influence on the player as well as various blocks and mechanisms (e.g. plant growth, food preservation, ice).
Outdoors:
[ ] Any block that has an unhindered line to the sky is considered outdoors
[ ] Foliage (leaves, etc) blocks do not count as hindering the line to the sky
[ ] Temperature is scaled in layers and gets progressively cooler until negative degrees near the building border
[ ] Fires and other heat-producing-blocks should update their surrounding blocks heat-state each tick
[ ] outdoor-temp is based on a combination of layer-temp + seasonal temp + regional temp
[ ] seasonal-temp is based on the day of the year
[ ] regional-temp is based on the distance from the 'equator'
[ ] sunlight has no direct influence on outdoor temp, but the sunlight state may influence entities and blocks
Rooms:
[ ] rooms are per chunk; stored in a capability with a list of room-objects
[ ] rooms are any continuous spaces inside a chunk where no block is considered outdoors
[ ] a room stores its heat-potential, a combination of all heating & cooling sources inside that room (e.g. a fire, magma block, ice block, ...)
[ ] a room stores a size-modifier between 1 (for small rooms of up to 8 blocks), and 0.1 (for rooms of at least 4096 (16x16x16) blocks). This modifier is used for heat-sharing calculations
[ ] a room stores its connections to neighbouring rooms (cardinal-direction AND an index)
[ ] the temperature of a room is calcualted by adding together the heat-potential of the current room + the heat-potential of neighbouring rooms * sizemodifier, divided by the number of rooms (max 7; 1 for each direction and ourselves); this forms the homogenous temperature of the current room, thus temperature-changes are by chunk
[ ] for temperature calculations, any border to the outdoors will count the outdoors-neighbour as the outdoor-temp of that height. Thus drastically modifying the temperature of our room(s)
Water:
[ ] regular water blocks are considered 4 degrees celsius
[ ] the surface layer temperature is calculated: (4 degs celsius + outdoor-temp * 0.6) / 2
[ ] the surface layer may freeze, while lower layers will never freeze
[ ] hotspring-water blocks have a base temperature of 80 degrees celsius
[ ] the upper 4 layers will be 40 degrees
[ ] the 8 layers closest to the heat-source (magma block at bottom of spring) will be 100 degrees (??)
[ ] springwater in a bucket will turn into normal water when poured
Entities:
[ ] Entities poll their surroundings each tick (different radii for different heat/cold sources)
[ ] Their current temperature is a combination of:
temp of room they are in (or layer if outside)
polled heat/cold sources
clothes, fur, etc.
[ ] take damage/conditions if too hot/cold
[ ] get a heat modifier from being exposed to the sun / cold-modifier without sun
Plants:
[ ] plants have a temperature band with 3 ranges:
perfect: center of band, plant grows normal
acceptable: hotter/colder than perfect, plant doesn't grow
bad: hotter/colder than acceptable, plant withers and dies
Temperature has influence on the player as well as various blocks and mechanisms (e.g. plant growth, food preservation, ice).
Outdoors:
Rooms:
Water:
Entities:
Plants: