Farming & Foraging

Seasons & Weather

Access season details including festivals and calendar data, plus weather types with crop-watering and seasonal availability information.

Quick Start

import { seasons, weather, findFestival } from 'stardew-valley-data'

// All four seasons
const allSeasons = seasons().get()

// Seasons with festivals
const festivalSeasons = seasons().withFestivals().get()

// Find a festival by name
const luau = findFestival('Luau')

// Weather that waters crops
const rainyTypes = weather().watersCrops().get()

Seasons

Type Definition

interface SeasonData {
  id: 'spring' | 'summer' | 'fall' | 'winter'
  name: string
  totalDays: number
  image: string
  festivals: Festival[]
}

interface Festival {
  name: string
  startDay: number
  endDay: number
  image: string
  calendarIcon: string
}

SeasonData Fields

FieldTypeDescription
id'spring' | 'summer' | 'fall' | 'winter'Season identifier.
namestringDisplay name.
totalDaysnumberNumber of days in the season.
imagestringPath to season image asset.
festivalsFestival[]Festivals that occur during this season.

Festival Fields

FieldTypeDescription
namestringFestival name (e.g. "Egg Festival").
startDaynumberDay the festival begins.
endDaynumberDay the festival ends.
imagestringPath to festival image asset.
calendarIconstringPath to the calendar icon asset.

Season Query Methods

The seasons() function returns a SeasonQuery instance.

Inherited Methods

MethodReturnsDescription
.get()SeasonData[]Return all results as an array.
.first()SeasonData | undefinedReturn the first result.
.find(id)SeasonData | undefinedFind a season by exact ID.
.findByName(name)SeasonData | undefinedFind a season by name (case-insensitive).
.count()numberReturn the number of results.

Filter Methods

MethodSignatureDescription
withFestivalswithFestivals()Filter to seasons that have at least one festival.

findFestival Helper

function findFestival(
  name: string,
): { season: SeasonData; festival: Festival }[]

Search for a festival by name across all seasons. Uses a case-insensitive substring match. Returns an array of matches, each with the parent season and the festival object.

import { findFestival } from 'stardew-valley-data'

const results = findFestival('Dance')
results.forEach(({ season, festival }) => {
  console.log(`${festival.name} on ${season.name} ${festival.startDay}`)
})

Weather

Type Definition

interface Weather {
  id: string
  name: string
  description: string
  seasons: Season[]
  image: string
  watersCrops: boolean
  special: boolean
}

Field Reference

FieldTypeDescription
idstringUnique identifier.
namestringWeather name (e.g. "Rain", "Storm").
descriptionstringIn-game description of the weather.
seasonsSeason[]Seasons this weather can occur in.
imagestringPath to weather image asset.
watersCropsbooleanWhether this weather waters crops automatically.
specialbooleanWhether this is a special/rare weather type.

Weather Query Methods

The weather() function returns a WeatherQuery instance.

Inherited Methods

MethodReturnsDescription
.get()Weather[]Return all results as an array.
.first()Weather | undefinedReturn the first result.
.find(id)Weather | undefinedFind by exact ID.
.findByName(name)Weather | undefinedFind by name (case-insensitive).
.count()numberReturn the number of results.

Filter Methods

MethodSignatureDescription
bySeasonbySeason(season: Season)Filter to weather types that occur in the given season.
watersCropswatersCrops()Filter to weather types that water crops automatically.
specialspecial()Filter to special or rare weather types.

Examples

List all festivals with dates

import { seasons } from 'stardew-valley-data'

seasons()
  .get()
  .forEach((s) => {
    s.festivals.forEach((f) => {
      console.log(`${s.name} ${f.startDay}-${f.endDay}: ${f.name}`)
    })
  })

Weather that waters crops in spring

import { weather } from 'stardew-valley-data'

const springRain = weather().bySeason('spring').watersCrops().get()

springRain.forEach((w) => console.log(w.name))

Special weather types

const special = weather().special().get()
special.forEach((w) => console.log(`${w.name}: ${w.description}`))
Previous
Artisan goods
Next
Fish