Skip to content

Configuration

Townstead splits configuration between server-side behaviour and client-side preferences. Server settings control villager AI, needs, work, storage, calendar behaviour, and integrations. Client settings control local settings: audio, catalog UI, and accessibility options.

Tables are grouped by configuration section, such as [needs.hunger], with the setting names shown as they appear inside that section.

[needs.hunger]
enableVillagerHunger = false
[storage]
respectProtectedStorage = true
protectedStorageBlocks = ["minecraft:barrel"]
protectedStorageTags = ["townstead:protected_food_storage"]
[calendar]
agingScale = 16.0

agingScale sets how many Minecraft days equal one year of villager age. Higher values make everyone age more slowly.

Server settings affect world behaviour. On a dedicated server, the server’s values decide how villagers behave.

[needs.hunger]

Hunger controls whether villagers get hungry, where they look for food, and what clean up they do after eating.

SettingDefaultValuesDescription
enableVillagerHungertruetrue, falseEnables villager hunger. When disabled, villagers skip hunger decay, eating behaviours, and hunger-driven mood drift.
enableSelfInventoryEatingtruetrue, falseAllows villagers to eat food from their own inventory.
enableGroundItemSourcingtruetrue, falseAllows villagers to collect food from ground items.
enableContainerSourcingtruetrue, falseAllows villagers to pull food from containers and item handlers.
enableCropSourcingfalsetrue, falseAllows villagers to harvest mature crops for food as an emergency fallback. Disabled by default to save crops and help with performance.
enableChorusFruitTeleporttruetrue, falseLets villagers teleport when they eat chorus fruit, just like players do.
enableEmptyContainerDropofftruetrue, falseLets villagers store empty bowls, bottles, and buckets in nearby storage after eating or drinking. Skipped while actively working so tools are not taken mid-task.

Thirst settings are only applied when a supported thirst mod is installed.

[needs.thirst]
SettingDefaultValuesDescription
enableVillagerThirsttruetrue, falseEnables villager thirst when a thirst backend mod (TWT, LSO) is installed.
enableSelfInventoryDrinkingtruetrue, falseAllows villagers to drink thirst-restoring items from their own inventory.
enableGroundItemThirstSourcingtruetrue, falseAllows villagers to collect thirst-restoring items from ground items.
enableContainerThirstSourcingtruetrue, falseAllows villagers to pull thirst-restoring items from containers and item handlers.
enableCropThirstSourcingfalsetrue, falseAllows villagers to harvest mature crops for thirst-restoring food or drink as an emergency fallback. Disabled by default to save crops and help with performance.
thirstLethalFallbackfalsetrue, falseAllows dehydration to kill villagers. (NOT CURRENTLY WORKING)
enableCookWaterPurificationtruetrue, falseAllows cook villagers to purify impure water bottles in available kitchen skillets.
preferKitchenStorageForEmptyBottlestruetrue, falseWhen villagers drink from bottles, prefers depositing empty bottles into kitchen storage.

Fatigue controls how villagers accumulate exhaustion during activity and recover through rest.

[needs.fatigue]
SettingDefaultValuesDescription
enableVillagerFatiguetruetrue, falseEnables villager fatigue.
enableFatigueAlertstruetrue, falseShows local chat alerts when villagers collapse from exhaustion or recover.
fatigueNocturnalMultiplier0.75NumberFatigue accumulation multiplier when working during aligned cycle hours.
fatigueMisalignedMultiplier1.25NumberFatigue accumulation multiplier when working during misaligned cycle hours.

Farming settings control farm radius, targeting cadence, water placement, grooming, and request messages.

[farming]
SettingDefaultValuesDescription
enableFarmAssisttruetrue, falseEnables lightweight farming assist: anti-trample and idle unstuck nudges for harvest chores.
farmerFarmRadius124 to 32Maximum horizontal farm radius around the anchor used by farmer AI.
farmerCellCooldownTicks1200 to 2400Minimum ticks before reworking the same soil cell.
farmerPathfailMaxRetries31 to 20How many times a target can fail pathing before it is temporarily blacklisted.
farmerIdleBackoffTicks600 to 1200Ticks to wait before reacquiring work after no valid target is found.
enableFarmerWaterPlacementtruetrue, falseAllows farmers to place water sources in cells painted Water in the plot planner.
farmerWaterSourceSearchRadius728 to 192Maximum horizontal distance farmers may travel to find water for bucket refills.
farmerWaterSourceVerticalRadius82 to 32Vertical search radius for nearby water sources when refilling buckets.
farmerGroomRadius10 to 4Radius around planned farm cells where farmers may clear removable weeds.
farmerGroomScanIntervalTicks6020 to 1200Ticks between farmer grooming target scans.
enableFarmerRequestChattruetrue, falseAllows farmers to announce missing supplies in local chat.
farmerRequestIntervalTicks3600200 to 24000Minimum ticks between farmer shortage request messages.
[fishing]
SettingDefaultValuesDescription
enableFishermanRequestChattruetrue, falseAllows fishermen to announce missing rods or water in local chat.
fishermanRequestIntervalTicks3600200 to 24000Minimum ticks between fisherman shortage request messages.
fishermanWaterSearchRadius164 to 48How many blocks away from the barrel to look for water when fishing.
fishermanInventoryFullThreshold161 to 64Number of items the fisherman carries before returning to deposit.

Cooking settings appear when Farmer’s Delight is installed.

[cooking]
SettingDefaultValuesDescription
enableCookRequestChattruetrue, falseAllows cooks to announce missing kitchen supplies in local chat.
cookRequestIntervalTicks3600200 to 24000Minimum ticks between cook shortage request messages.
[cooking.barista]
SettingDefaultValuesDescription
enableBaristaRequestChattruetrue, falseAllows baristas to announce missing cafe supplies in local chat.
baristaRequestIntervalTicks3600200 to 24000Minimum ticks between barista shortage request messages.

Butchery settings appear when the Butchery mod is installed.

[butchery]
SettingDefaultValuesDescription
enableVillagerSlaughtertruetrue, falseAllows butchers to slaughter allowlisted livestock inside their shop bounds.
allowHumanoidSlaughterfalsetrue, falsePermits villager-driven slaughter of humanoid carcasses, including villagers, pillagers, and witches.
villagerSlaughterThrottleTicks2400200 to 24000Minimum ticks between kills for a single butcher villager.
includeExoticTradesfalsetrue, falseAdds a second Master-tier trade pool with exotic cuts.
hammerTrophyHeadsfalsetrue, falseAllows butchers to auto-hammer rare or display-worthy heads into breakdown drops. Off by default so those heads stay whole for trophies and armour.
[caregiving]
SettingDefaultValuesDescription
enableFeedingYoungtruetrue, falseAllows adults to feed hungry babies, toddlers, and children.
enableHydratingYoungtruetrue, falseAllows adults to bring drinks to thirsty babies, toddlers, and children. Only appears when thirst backend is active.
enableNonParentCaregiverstruetrue, falseAllows non-parent villagers to help feed children when parents are absent.

Storage settings decide whether villagers automate supply movement and which containers are off-limits.

[storage]
SettingDefaultValuesDescription
enableWorkSupplyAutomationfalsetrue, falseAllows chore supply restocking and output storage automation from nearby containers.
enableHarvestOutputStoragetruetrue, falseAllows harvesting villagers to store gathered output in nearby containers.
respectProtectedStoragetruetrue, falseWhen true, villagers will not take food from protected storage blocks or tags.
protectedStorageBlocks[]List of block IDsBlock IDs that villagers must not take food from.
protectedStorageTags["townstead:protected_food_storage"]List of block tag IDsBlock tags treated as protected storage.

Use full resource IDs for protected storage entries:

[storage]
protectedStorageBlocks = ["minecraft:barrel", "minecraft:chest"]
protectedStorageTags = ["townstead:protected_food_storage"]

Calendar settings control profile selection, offline time behaviour, aging, and new-world start dates.

[calendar]
SettingDefaultValuesDescription
profile"auto"auto or profile IDActive calendar profile. Use auto to detect seasonal mods, or pin a profile ID such as townstead_calendar:default, townstead_calendar:serene, townstead_calendar:tfc, or townstead_calendar:ecliptic.
realClockCalendarfalsetrue, falseWhen true, the calendar also advances by the real-world days that elapsed while the game was off. When false, it tracks Minecraft days only. Compatible with day-cycle mods either way.
agingScale8.00.01 to 100000.0Minecraft days per villager age year. Raise it to slow all aging; lower it to speed all aging.
disableVillagerAgingfalsetrue, falseWhen true, villagers hold their current life stage and apparent age, and away-time age catch-up is skipped. Animals still grow normally while loaded.
randomizeStarttruetrue, falseApplies only to new worlds. Rolls a random starting year and day-of-year when the world is freshly created.
startYearMin15000 to 100000Applies only to new worlds. Lower bound for the rolled starting display year.
startYearMax22000 to 100000Applies only to new worlds. Upper bound for the rolled starting display year. If this is less than or equal to the minimum, only the minimum is used.

When realClockCalendar is false, Townstead follows Minecraft’s day counter. Use this for vanilla pacing or with day-cycle mods that already control the length of a Minecraft day.

When realClockCalendar is true, Townstead also adds the real-world days that elapsed while the game was off when the world loads again. Use it for long-haul life-sim worlds where the calendar should keep moving while you are away.

This section appears when Chef’s Delight is installed.

[chefsdelight_compat]
SettingDefaultValuesDescription
enableTownsteadCooktruetrue, falseWhen enabled, Townstead handles cook AI and profession assignment. When disabled, Chef’s Delight handles cooking instead.

Debug settings are useful while testing behaviour, but are usually noisy in regular play.

[debug]
SettingDefaultValuesDescription
debugVillagerAIfalsetrue, falseEnables debug chat messages for villager AI, including farmer and cook behaviour.
debugVillagerSleepfalsetrue, falseEnables sleep and rest debug logs and villager debug state updates.

Client settings affect only the local player’s presentation and UI.

[mood_audio]
SettingDefaultValuesDescription
muteMoodVocalizationstruetrue, falseMutes villager mood vocalizations tied to laughter, celebration, and crying.
[catalog]
SettingDefaultValuesDescription
useTownsteadCatalogtruetrue, falseUses the Townstead extended catalog with kitchen building tiers. Disable to use MCA’s original catalog.
[accessibility]
SettingDefaultValuesDescription
reduceMotionfalsetrue, falseReduces non-essential motion across Townstead UI, including dialogue text effects, the calendar stamp drawer slide, and similar effects. Emotion colours still apply.
disableParticlesfalsetrue, falseDisables screen-space and world-space particles during dialogue.
disableCameraMovementfalsetrue, falsePrevents the camera from rotating to face the villager during dialogue.
spiritColorblindPatternsfalsetrue, falseAdds distinct hatching patterns to Spirit page bars so they can be told apart without colour.
spiritNarrationfalsetrue, falseAnnounces the hovered spirit row through the narrator.
spiritLargerHitTargetsfalsetrue, falseGrows Spirit page row heights and bar thickness for easier clicking on touch or low-precision setups.
spiritHighContrastfalsetrue, falseUses stronger borders and pure black/white text on the Spirit page.
spiritFontScale1.01.0 to 2.0Text scale multiplier for the Spirit page. Respects Minecraft’s overall GUI scale.

Use this list when you already know the setting name and just need to find its section.

SettingConfig Category
enableVillagerHunger[needs.hunger]
enableSelfInventoryEating[needs.hunger]
enableGroundItemSourcing[needs.hunger]
enableContainerSourcing[needs.hunger]
enableCropSourcing[needs.hunger]
enableChorusFruitTeleport[needs.hunger]
enableEmptyContainerDropoff[needs.hunger]
enableVillagerThirst[needs.thirst]
enableSelfInventoryDrinking[needs.thirst]
enableGroundItemThirstSourcing[needs.thirst]
enableContainerThirstSourcing[needs.thirst]
enableCropThirstSourcing[needs.thirst]
thirstLethalFallback[needs.thirst]
enableCookWaterPurification[needs.thirst]
preferKitchenStorageForEmptyBottles[needs.thirst]
enableVillagerFatigue[needs.fatigue]
enableFatigueAlerts[needs.fatigue]
fatigueNocturnalMultiplier[needs.fatigue]
fatigueMisalignedMultiplier[needs.fatigue]
enableFarmAssist[farming]
farmerFarmRadius[farming]
farmerCellCooldownTicks[farming]
farmerPathfailMaxRetries[farming]
farmerIdleBackoffTicks[farming]
enableFarmerWaterPlacement[farming]
farmerWaterSourceSearchRadius[farming]
farmerWaterSourceVerticalRadius[farming]
farmerGroomRadius[farming]
farmerGroomScanIntervalTicks[farming]
enableFarmerRequestChat[farming]
farmerRequestIntervalTicks[farming]
enableFishermanRequestChat[fishing]
fishermanRequestIntervalTicks[fishing]
fishermanWaterSearchRadius[fishing]
fishermanInventoryFullThreshold[fishing]
enableCookRequestChat[cooking]
cookRequestIntervalTicks[cooking]
enableBaristaRequestChat[cooking.barista]
baristaRequestIntervalTicks[cooking.barista]
enableVillagerSlaughter[butchery]
allowHumanoidSlaughter[butchery]
villagerSlaughterThrottleTicks[butchery]
includeExoticTrades[butchery]
hammerTrophyHeads[butchery]
enableFeedingYoung[caregiving]
enableHydratingYoung[caregiving]
enableNonParentCaregivers[caregiving]
enableWorkSupplyAutomation[storage]
enableHarvestOutputStorage[storage]
respectProtectedStorage[storage]
protectedStorageBlocks[storage]
protectedStorageTags[storage]
profile[calendar]
realClockCalendar[calendar]
agingScale[calendar]
disableVillagerAging[calendar]
randomizeStart[calendar]
startYearMin[calendar]
startYearMax[calendar]
enableTownsteadCook[chefsdelight_compat]
debugVillagerAI[debug]
debugVillagerSleep[debug]
muteMoodVocalizations[mood_audio]
useTownsteadCatalog[catalog]
reduceMotion[accessibility]
disableParticles[accessibility]
disableCameraMovement[accessibility]
spiritColorblindPatterns[accessibility]
spiritNarration[accessibility]
spiritLargerHitTargets[accessibility]
spiritHighContrast[accessibility]
spiritFontScale[accessibility]