Shops

Carpenter

Access the complete stock list for Robin's Carpenter Shop with category filters, day-of-week rotation, and recipe filtering using the chainable CarpenterQuery API.

Quick Start

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

// Get all carpenter items
const all = carpenter().get()

// Get only recipes
const recipes = carpenter().recipes().get()

// Get items available on Monday, sorted by price
const monday = carpenter().byDay('Monday').sortByPrice().get()

Type Definition

Each item conforms to the CarpenterItem interface:

FieldTypeDescription
idstringUnique identifier.
namestringDisplay name of the item.
pricenumberPurchase price in gold.
descriptionstringIn-game description text.
imagestringPath to the item's image.
categoryCarpenterCategoryItem category.
dayCarpenterDay | undefinedDay of the week when available (undefined for permanent stock).
isRecipebooleanWhether this item is a crafting recipe.
availabilitystring | undefinedSpecial purchase condition, if any.

CarpenterCategory

type CarpenterCategory = 'material' | 'recipe' | 'furniture' | 'craftable'

CarpenterDay

type CarpenterDay =
  | 'Monday'
  | 'Tuesday'
  | 'Wednesday'
  | 'Thursday'
  | 'Friday'
  | 'Saturday'
  | 'Sunday'

Query Methods

CarpenterQuery extends QueryBase and inherits five terminal methods:

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

Filter Methods

MethodReturnsDescription
byCategory(category)CarpenterQueryFilter to items in the given category.
recipes()CarpenterQueryFilter to crafting recipe items only.
materials()CarpenterQueryFilter to materials (Wood and Stone).
byDay(day)CarpenterQueryFilter to items available on the given day. Permanent items are always included.
permanent()CarpenterQueryFilter to items always available (not day-specific).
alwaysAvailable()CarpenterQueryFilter to items with no special purchase condition.

Sort Methods

MethodReturnsDescription
sortByPrice(order?)CarpenterQuerySort by price. Pass 'asc' (default) or 'desc'.
sortByName(order?)CarpenterQuerySort alphabetically by name. Pass 'asc' (default) or 'desc'.

Examples

List all furniture sorted by price

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

const furniture = carpenter().byCategory('furniture').sortByPrice().get()

furniture.forEach((item) => {
  console.log(`${item.name} - ${item.price}g`)
})

Find day-specific items for each day

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

const days = [
  'Monday',
  'Tuesday',
  'Wednesday',
  'Thursday',
  'Friday',
  'Saturday',
  'Sunday',
]

days.forEach((day) => {
  const count = carpenter().byDay(day).count()
  console.log(`${day}: ${count} items available`)
})

Get all permanent recipes

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

const permanentRecipes = carpenter().permanent().recipes().sortByName().get()

permanentRecipes.forEach((r) => {
  console.log(`${r.name} - ${r.price}g`)
})
Previous
Bookseller
Next
Casino