Corosauce / weather2

Minecraft Forge Mod - Localized Weather - A rewrite of weather & tornados with a focus on localized storm systems
Other
140 stars 78 forks source link

Weather forecast block redesign idea #498

Open Pikamochzo opened 1 year ago

Pikamochzo commented 1 year ago

So, as I understand, weather forecast block will be added to 1.18.2 version of the mod. However I started wandering, if the block will work the same way as in 1.12.2. Then I imagined how it could be made different from 1.12.2 while still making it useful - instead of giving storm location and stage on a silver platter (that is, directly saying where and how strong), the block would display a 3x3 blocks map (one pixel being equal to one block) with three modes - wind, cloud coverage/precipitation and temperature/evaporation. To cycle through modes, player would have to right-click the block.

When in wind mode, the map would display wind speed as colours (0 on Beaufort scale being blue and 12 being red) and its direction as small arrows or particles. In my opinion, if cyclones are going to be back, it would be really cool if inside them there actually was a calm eye visible on the map.

In cloud coverage/precipitation mode, cloud coverage would be displayed as intensity of white (clear sky being transparent, while heavy clouds being completely white) and precipitation as vertical lines, with their height indicating strenght of precipitation, and their colour indicating type of precipitation (red being hail, blue being rain and light blue being snow.

Finally. the temperature/evaporation would simply display temperature with blue meaning cold and red meaning hot, while evaporation rate would be displayed as white vertical lines working similarly to precipitation - it would tell player how likely are storms to form; this feature would work the best with mods like Serene Seasons.

I really hope this wouldn't be too hard to add

You are doing great job!

Pikamochzo commented 1 year ago

The way I think evaporation rate could work is really interesting. It could be presented mathematically as following equation:

((F/a)+(P/r))×T

F meaning the sum of foliage transpiration - grass, flowers, saplings and leaves will contribute to humidity via transpiration; leaves block contributes 1, sapling contribute 0,75, flowers , tall grass and crops contribute 0,5, grass blocks, moss and vines contribute 0,25 and mossy variants contribute 0,125; only foliage on surface can contribute

a meaning aridity - foliage is less likely to let water evaporate in arid biomes - jungle would have aridity of 0,25, while desert and badlands of 8

P meaning permeability - certain blocks can "contain" more water than other; water blocks would have permeability of 10, sand of 9, gravel of 8, dirt, grass blocks and clay of 7, teracotta and sandstone of 3, calcite of 2 and other blocks of 0

r meaning radius from nearest water source in blocks - if the block is a water source it counts as 1 (as you can't divide by 0)

T meaning temperature, as both evaporation and transpiration requires high temperature to happen

Using this system, the biomes with highest evaporation rate would be jungles and warm and lukewarm oceans just like in real life

Water evaporation could be assigned to whole chunk instead of separate blocks to increase performance (I guess)

Pikamochzo commented 1 year ago

Dynamic temperature would be extremely painfull to add, but possible to do so. The equation I came up with is as follows

C-cos(d-1)(1-((F/a)+(P/r))/150)

C is a "temperature constant" in °c

d is time of the day

F, a, P and r are what they are for evaporation equation

This equation consists of three parts stating different things

C states that average daily temperature in a biome is invariant (unless mods like Serene Seasons are present)

+cos(d-1) states that current temperature is related to the the position of the sun with a slight phase shift

(1-((F/a)+(P/r))/150) states that water and foliage can buffer the temperature variation

temperature could be assigned to whole chunk instead of every block separately

Pikamochzo commented 1 year ago

To make it less performance hungry, this could be calculated for whole chunks instead of separate blocks

Pinecone6442 commented 1 year ago

stop ur giving corosus a headache \

Pikamochzo commented 1 year ago

stop ur giving corosus a headache \

If I could program, I would love to help to add this, but I can't