Buildings & Locations

Maps

Access the complete dataset of Stardew Valley farm maps with typed skill, feature, and tile information using the chainable FarmMapQuery API.

Quick Start

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

// Get all farm maps
const all = maps().get()

// Find a specific map by name
const standard = maps().findByName('Standard Farm')

// Get maps associated with a skill
const fishingMaps = maps().bySkill('fishing').get()

// Count available farm types
const total = maps().count()

Type Definition

Each farm map record conforms to the FarmMap interface:

FieldTypeDescription
idstringUnique identifier for the farm map.
namestringDisplay name of the farm type.
descriptionstringIn-game description of the farm map.
skillsstring[]Skills associated with this farm type.
tillableTilesnumberNumber of tiles available for planting crops.
featuresstring[]Notable features of this map layout.
startingItemsstring[]Items available on the map from the start of the game.
imagestringPath to the farm map image.
iconstringPath to the farm map icon.

Query Methods

FarmMapQuery extends QueryBase and inherits five terminal methods shared by all query builders:

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

Filter Methods

MethodReturnsDescription
bySkill(skill)FarmMapQueryFilter to maps associated with the given skill (case-insensitive).

Examples

Compare tillable tile counts

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

const allMaps = maps().get()

allMaps.forEach((m) => {
  console.log(`${m.name}: ${m.tillableTiles} tillable tiles`)
})

Find maps by skill

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

const miningMaps = maps().bySkill('mining').get()

miningMaps.forEach((m) => {
  console.log(`${m.name} — Features: ${m.features.join(', ')}`)
})

View starting items for a map

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

const riverland = maps().findByName('Riverland Farm')

if (riverland) {
  console.log(`Starting items: ${riverland.startingItems.join(', ')}`)
  console.log(`Features: ${riverland.features.join(', ')}`)
}

Wrap a pre-filtered array

You can pass an existing FarmMap[] array into the maps() function to create a new query from it:

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

const myList = maps().bySkill('foraging').get()
const reWrapped = maps(myList).get()
Previous
Locations