# Temperature System

The Temperature System in AdvancedSeasons is a sophisticated feature that adds a layer of realism and challenge to the Minecraft environment. This system calculates a player's temperature based on several factors, including the base environment temperature, biome-specific temperatures, seasonal variations, light levels at the player's location, and the number of armor items a player is wearing. All these elements are fully configurable, allowing for a tailored gameplay experience.

### Configuration&#x20;

{% code title="temperature.yml" lineNumbers="true" fullWidth="true" %}

```yaml
# Temperature configuration, in Celsius
# Player's temperature depends on base environment temperature, biome temperature, season, light level at location and
# number of armor items player is wearing. All of this is fully configurable below.

# Per-biome temperature is configurable in `biomeConfiguration` folder files
base: 18

# Temperature Formula
# %base% = base temperature (see setting above)
# %biome% = relative biome temperature based
# %seasonTemp% = season temperature (see settings below)
# %lightLevel% = light level at that location (can be increased by e.g. torches, lava etc), range: 0-15
# %armorItemsCount% = how many armor items player has equipped
# %conditionalTemp% = based on conditions (e.g. player is in shade; night; raining; in water etc.)
temperatureFormula: "%base% + %biome% + %seasonTemp% + (%lightLevel%) + (%armorItemsCount% *2) + %conditionalTemp%"

# Relative to base, higher or lower +/- celcius
temperature:
  SPRING: 2
  SUMMER: 7
  FALL: -2
  WINTER: -25

# Custom biomes without winter
# These biomes will calculate "winter" season temperature with formula: (fall+spring)/2
noWinterBiomes:
  - 'badlands_deserts'
  - 'savannas_hills'
  - 'jungles'

# Are temperature events enabled?
temperatureEventsEnabled: true

# Configurable temperature events
# Effects are based on Abilities - https://wiki.advancedplugins.net/abilities/introduction
# You can pretty much use any combination of effects from here https://wiki.advancedplugins.net/abilities/effects
# Temperature events are handled and added every 20 ticks (1 second)
temperatureEvents:
  freeze:
    temperature: -30
    effects:
      - 'SCREEN_FREEZE:200'
      - 'PLAY_SOUND:BLOCK_SNOW_PLACE:1:0.2'
  ice_forming:
    temperature: -25
    effects:
      - 'SCREEN_FREEZE:40'
      - 'PARTICLE:SNOW_SHOVEL:4:0.5 @EyeHeight'
      - 'PLAY_SOUND:BLOCK_POWDER_SNOW_FALL:1:0.2'
  shivering:
    temperature: -15
    effects:
      - 'POTION:SLOW:0:1'
      - 'SCREEN_FREEZE:15'
      - 'PLAY_SOUND:ENTITY_STRAY_AMBIENT:1:0.2'
  breath_visibility:
    temperature: -4
    effects:
      - 'PARTICLE:SNOWFLAKE:5:0 @EyeHeight'
  warmth:
    temperature: 20
    effects:
      - 'POTION:REGENERATION:4:10'
  sweating:
    temperature: 35
    effects:
      - 'POTION:CONFUSION:0:75'
      - 'PARTICLE:WATER_SPLASH:20:0.2 @EyeHeight'
      - 'PLAY_SOUND:BLOCK_FURNACE_FIRE_CRACKLE:1:0.2'
  heatstroke:
    temperature: 45
    effects:
      - 'BURN:2'
      - 'POTION:CONFUSION:0:200'
      - 'ENTITY_EFFECT:HURT_BERRY_BUSH'
      - 'PARTICLE:SMALL_FLAME:20:0.2 @EyeHeight'
      - 'PLAY_SOUND:BLOCK_FIRE_AMBIENT:1:0.5'
```

{% endcode %}

### Explanation

#### Base Temperature Configuration

* `base: 18`: This setting establishes the baseline temperature in Celsius for the game environment.

#### Temperature Formula

* The formula `temperatureFormula: "%base% + %biome% + %seasonTemp% + (%lightLevel%) + (%armorItemsCount% * 2) + %conditionalTemp%"` is used to calculate the player's current temperature.
  * `%base%` represents the base temperature.
  * `%biome%` adjusts for the temperature relative to the specific biome.
  * `%seasonTemp%` accounts for seasonal temperature changes.
  * `%lightLevel%` factors in the light level at the player's location, which can be influenced by sources like torches or lava.
  * `%armorItemsCount%` modifies the temperature based on the number of armor pieces worn.
  * `%conditionalTemp%` includes adjustments for various conditions like shade, time of day, rain, or being in water.

#### Seasonal Temperature Variations

* The `temperature` section specifies the temperature adjustments for each season relative to the base temperature.
  * `SPRING: 2`
  * `SUMMER: 7`
  * `FALL: -2`
  * `WINTER: -25`

#### Biomes Without Winter

* `noWinterBiomes`: Lists biomes that do not experience winter. In these biomes, winter temperatures are calculated as the average of fall and spring temperatures.

#### Temperature Events

Temperature event effects use our **Abilities Engine** to provide unprecedented customisability with over 100+ effects available to create temperature effects beyond dreams or imagination.&#x20;

You can read more about the **Abilities Engine** here: <https://wiki.advancedplugins.net/abilities/introduction>

* The `temperatureEvents` section defines specific temperatures at which certain events occur.
  * `freeze: -30` triggers freezing effects.
  * `ice_forming: -25` begins to show ice formation.
  * `shivering: -15` initiates shivering animations.
  * `breath_visibility: -4` makes the player's breath visible.
  * `warmth: 20` provides benefits like faster health regeneration.
  * `sweating: 35` shows visual sweating effects.
  * `heatstroke: 45` triggers heatstroke effects.

Event effects are pre-configured to be very straight-forward. To edit them, you can explore our effect list: <https://wiki.advancedplugins.net/abilities/effects>

This system not only enhances the realism of the game but also introduces strategic elements where players must adapt to survive and thrive in varying temperatures.
