Why shouldn't chickens eat oats if you want them to? Or make grass more effective for cows? This mod gives you control over food effectiveness, crop assignments, mixed feed recipes, TMR compositions, serial/parallel consumption, and food consumption speed.
Adjust Animal Food allows you to customize the animal feeding system in Farming Simulator 2025 through an XML configuration file. Control food group effectiveness (productionWeight), consumption preferences (eatWeight), feeding mode (consumptionType), and consumption speed with a configurable multiplier (0.01x to 100x) - all without modifying map files.
Supports multiplayer.
XML Editing Required: There is no in-game UI. Configuration is done by editing an XML file that's automatically generated in your savegame folder. If you're not comfortable editing XML files, this mod may not be for you.
You can:
- Add custom food groups to animals and custom ingredients to mixtures/recipes
- Disable unwanted food groups or ingredients (except Grass)
- Adjust food effectiveness and feeding behavior (productionWeight, eatWeight, consumptionType)
- Change which crops belong to each food group (fillTypes)
- Modify mixed feed recipes and ingredient proportions
- Customize TMR/forage recipe compositions and ranges
- Control serial/parallel consumption and consumption speed (0.01x to 100x)
You cannot:
- Add or delete animal types (only modify existing: COW, PIG, CHICKEN, SHEEP, HORSE)
- Add or delete mixtures/recipes (only modify existing: PIGFOOD, FORAGE)
- Disable the Grass food group (causes game hang - you can change its weights)
Documentation, source code and issue tracker at https://github.com/rittermod/FS25_AdjustAnimalFood
- Add Custom Content: Add custom food groups to animals, extra ingredients to mixtures, and additional ingredients to TMR recipes
- Disable Food Groups & Ingredients: Remove unwanted food groups, mixture ingredients, or recipe ingredients from the game (except Grass)
- Adjust Food Effectiveness: Modify productionWeight, eatWeight, and consumptionType for all animal types
- Custom Crop Assignments: Add or remove crops from any food group (e.g., add oat to chicken feed)
- Mixed Feed Customization: Adjust ingredient proportions and crop types for mixed feeds like pig food
- Recipe Control: Customize TMR/forage recipes with precise min/max percentage ranges
- Serial & Parallel Consumption: Choose whether animals eat food groups one at a time (SERIAL) or all at once (PARALLEL)
- Consumption Speed Control: Adjust how fast animals consume food with a configurable multiplier (0.01x to 100x)
- Per-Savegame Configuration: Each savegame gets its own XML file for independent customization
- Automatic Updates: Configuration file is automatically updated with any new content on each load
- Automatic Normalization: Remaining ingredients automatically adjust when you disable or modify items
- Schema-Validated Configuration: Uses the game's built-in AnimalFoodSystem schema for robust, error-checked XML handling
- Intelligent Merging: Your XML overrides customizations while automatically adding new content from mods or game updates
- Download the latest release zip file
- Move or copy the zip file into your Farming Simulator 2025 mods folder, typically located at:
- Windows:
Documents/My Games/FarmingSimulator2025/mods - macOS:
~/Library/Application Support/FarmingSimulator2025/mods
- Windows:
- Make sure you don't have any older versions of the mod installed in the mods folder
The mod works through XML configuration files that are automatically created for each savegame:
- Start your game with the mod installed and load your savegame
- Save and exit the game - the mod will create
aaf_AnimalFood.xmlin your savegame folder - Locate the XML file in your savegame directory:
- Windows:
Documents/My Games/FarmingSimulator2025/savegameX/aaf_AnimalFood.xml - macOS:
~/Library/Application Support/FarmingSimulator2025/savegameX/aaf_AnimalFood.xml
- Windows:
- Edit the XML with any text editor to customize your animal food system
- Load your savegame - changes take effect immediately
- The XML file contains all current game defaults when first created
- The file includes documentation and examples showing how to use features like disabling items
- Edit any values you want to change (see Configuration Reference below)
- Values you don't change remain at game defaults
- Changes are applied every time you load the savegame
- The file is automatically updated if new content is added (mods, game updates)
- 5-Entry Limit: Keep total active (non-disabled) food groups/ingredients to 5 or fewer per animal/mixture/recipe. The game may not display or handle more than 5 correctly. If you want to add custom entries, consider disabling existing ones first.
- CRITICAL - Never Disable Grass: Do NOT disable the Grass food group for any animal. The game's Meadow system has an internal dependency on Grass configuration and disabling it will cause the game to hang. Other food groups may have similar hidden dependencies - disable with caution.
- Language-Specific: The generated XML uses your game's language (e.g., "Hay" in English, "Heu" in German)
- Backup First: Always back up your XML before making major changes
- Order Matters: Keep the order of food groups and ingredients in the order they should appear in the UI display
- Invalid Values: Unknown crop names or invalid values will be logged but won't crash the game
The XML file has three main sections: animals, mixtures, and recipes.
Controls food group effectiveness and crop assignments for each animal type.
<animal animalType="COW" consumptionType="SERIAL">
<foodGroup
title="Hay"
productionWeight="0.80"
eatWeight="1.00"
fillTypes="DRYGRASS_WINDROW"/>
</animal>What You Can Change:
productionWeight: Food effectiveness (0.0-1.0) - higher means better productivityeatWeight: Consumption preference (0.0-1.0) - affects PARALLEL consumption animals onlyfillTypes: Space-separated crop names that belong to this food group. Most animal pens will only accept bulk or bale fillTypes and not pallets. (If you want your animals to eat cake the pen must have a pallet trigger. Not tested.)consumptionType: Set to"SERIAL"(eat one food at a time) or"PARALLEL"(eat all foods simultaneously) - changes how animals consume multiple food typesdisabled: Set to"true"to remove this food group from the game (animals won't accept this food type)
What You Cannot Change:
animalType: Used for matching only - can't add new animal typestitle: Used for matching only - must match game's food group name
Controls mixed feed recipes and ingredient proportions.
<mixture fillType="PIGFOOD" animalType="PIG">
<ingredient weight="0.50" fillTypes="MAIZE TRITICALE"/>
<ingredient weight="0.25" fillTypes="WHEAT BARLEY"/>
<ingredient weight="0.20" fillTypes="SOYBEAN CANOLA"/>
<ingredient weight="0.05" fillTypes="POTATO SUGARBEET_CUT"/>
</mixture>What You Can Change:
weight: Ingredient proportion (any positive number - automatically normalized to 1.0)fillTypes: Space-separated crop names for this ingredient slotdisabled(on ingredient): Set to"true"to remove this ingredient from the mixture
Notes:
- Weights are automatically normalized (if you use 50, 25, 20, 5 they become 0.5, 0.25, 0.2, 0.05)
- When you disable an ingredient, remaining ingredients are automatically renormalized
- Ingredient order must match the game's order (usually matches the order in the XML)
- You cannot disable entire mixtures, only individual ingredients
Controls TMR/Forage recipes for mixing wagons.
<recipe fillType="FORAGE">
<ingredient
name="silage"
title="Silage"
minPercentage="0"
maxPercentage="75"
fillTypes="SILAGE ALFALFA_FERMENTED"/>
<ingredient
name="straw"
title="Straw"
minPercentage="10"
maxPercentage="30"
fillTypes="STRAW"/>
</recipe>What You Can Change:
minPercentage: Minimum percentage (0-100) for this ingredientmaxPercentage: Maximum percentage (0-100) for this ingredientfillTypes: Space-separated crop names for this ingredientdisabled(on ingredient): Set to"true"to remove this ingredient from the recipe
What You Cannot Change:
name: Internal identifier - must match gametitle: Display name - modification has no effect
Notes:
- Percentages define the valid range for the mixing wagon UI
- Ratios are automatically normalized based on your min/max ranges
- When you disable an ingredient, it's completely removed from the TMR mixer UI
- You cannot disable entire recipes, only individual ingredients
Control how fast animals consume their food supply. This feature is disabled by default (opt-in).
<consumptionMultiplier>
<global multiplier="1.0" disabled="true"/>
</consumptionMultiplier>What You Can Change:
multiplier: Food consumption speed (0.01-100)0.5= Animals eat half as fast (food lasts longer)1.0= Normal speed (default)2.0= Animals eat twice as fast (food depletes faster)
disabled: Set to"false"to enable this feature
Notes:
- This feature only affects consumption rate, not food effectiveness (use
productionWeightfor that) - Automatically disabled if incompatible mods are detected (e.g., FS25_RealisticLivestock)
- Server-authoritative in multiplayer: multiplier is applied on server, clients see the results
The most common use case is adjusting how effective different foods are. Values range from 0.0 to 1.0.
Make hay more effective for cows (increase from 0.8 to 1.0):
<foodGroup title="Hay" productionWeight="1.0" eatWeight="1.00" fillTypes="DRYGRASS_WINDROW"/>Make straw less effective (decrease from 0.2 to 0.1):
<foodGroup title="Straw" productionWeight="0.1" eatWeight="1.00" fillTypes="STRAW"/>Values between 0.0 and 1.0 where higher = more effective for animal productivity.
Find the grain food group for chickens and add OAT to fillTypes:
<foodGroup title="Grain" productionWeight="1.00" eatWeight="1.00" fillTypes="WHEAT BARLEY SORGHUM OAT"/>Chickens can now eat oat along with other grains.
Modify the PIGFOOD mixture to use more grain:
<mixture fillType="PIGFOOD" animalType="PIG">
<ingredient weight="0.60" fillTypes="MAIZE TRITICALE"/> <!-- More grain -->
<ingredient weight="0.30" fillTypes="SOYBEAN CANOLA"/> <!-- More protein -->
<ingredient weight="0.10" fillTypes="POTATO"/> <!-- Less roots -->
</mixture>The weights will be automatically normalized to 100%.
Adjust the FORAGE recipe to allow up to 80% silage:
<ingredient name="silage" title="Silage" minPercentage="0" maxPercentage="80" fillTypes="SILAGE"/>Your TMR mixer will now accept up to 80% silage instead of the default 75%.
If there are custom filltypes from maps and mods they can be added. ALFALFA_FERMENTED to the silage ingredient if the map has alfalfa silage:
<ingredient name="silage" title="Silage" minPercentage="0" maxPercentage="75" fillTypes="SILAGE ALFALFA_FERMENTED"/>You can now use either grass silage or alfalfa silage in your TMR.
Don't want cows to eat hay? Add disabled="true" to the hay food group:
<foodGroup title="Hay" productionWeight="0.80" eatWeight="1.00" fillTypes="DRYGRASS_WINDROW" disabled="true"/>Cows will no longer accept hay. The food group is completely removed from the game but stays in your XML file.
Want to exclude wheat and barley from your pig feed mix? Disable the grain ingredient:
<mixture fillType="PIGFOOD" animalType="PIG">
<ingredient weight="0.50" fillTypes="MAIZE TRITICALE"/>
<ingredient weight="0.25" fillTypes="WHEAT BARLEY" disabled="true"/> <!-- Grain excluded -->
<ingredient weight="0.20" fillTypes="SOYBEAN CANOLA"/>
<ingredient weight="0.05" fillTypes="POTATO SUGARBEET_CUT"/>
</mixture>The remaining ingredients automatically adjust: Base 66.6%, Protein 26.6%, Roots 6.6%.
Don't want straw in your TMR? Disable the straw ingredient:
<recipe fillType="FORAGE">
<ingredient name="silage" title="Silage" minPercentage="0" maxPercentage="75" fillTypes="SILAGE"/>
<ingredient name="straw" title="Straw" minPercentage="10" maxPercentage="30" fillTypes="STRAW" disabled="true"/>
<ingredient name="dryGrass" title="Hay" minPercentage="20" maxPercentage="50" fillTypes="DRYGRASS_WINDROW"/>
<ingredient name="mineralFeed" title="Mineral Feed" minPercentage="0" maxPercentage="10" fillTypes="MINERAL_FEED"/>
</recipe>Your TMR mixer will only show 3 ingredient slots instead of 4.
By default, cows eat foods one at a time in priority order (SERIAL mode). Change to PARALLEL mode to simulate a realistic mixed ration where cows consume multiple food types simultaneously:
<animal animalType="COW" consumptionType="PARALLEL">
<foodGroup title="Hay" productionWeight="0.8" eatWeight="0.3" fillTypes="DRYGRASS_WINDROW"/>
<foodGroup title="Silage" productionWeight="1.0" eatWeight="0.5" fillTypes="SILAGE"/>
<foodGroup title="Grass" productionWeight="0.7" eatWeight="0.2" fillTypes="GRASS_WINDROW"/>
</animal>In PARALLEL mode, eatWeight controls consumption proportions (50% silage, 30% hay, 20% grass based on the weights above). In the default SERIAL mode, cows would eat one food type completely before moving to the next.
By default, pigs eat all foods simultaneously (PARALLEL mode). Change to SERIAL mode to force pigs to eat one food type at a time in priority order:
<animal animalType="PIG" consumptionType="SERIAL">
<foodGroup title="Mixed Feed" productionWeight="1.0" eatWeight="1.0" fillTypes="PIGFOOD"/>
<foodGroup title="Grain" productionWeight="0.8" eatWeight="1.0" fillTypes="WHEAT BARLEY"/>
<foodGroup title="Roots" productionWeight="0.6" eatWeight="1.0" fillTypes="POTATO SUGARBEET"/>
</animal>In SERIAL mode, pigs eat Mixed Feed first, then Grain when depleted, then Roots. The eatWeight values are ignored in SERIAL mode - only productionWeight affects productivity.
Want to add a custom food group? Remember the 5-entry limit! COW has 4 vanilla food groups, so you can safely add 1 custom food OR disable one vanilla and add a custom replacement.
Option 1: Add custom when under 5 (COW has 4, adding 1 = 5 total):
<animal animalType="COW" consumptionType="SERIAL">
<!-- 4 existing vanilla food groups -->
<foodGroup title="Total Mixed Ration" productionWeight="1.0" eatWeight="1.0" fillTypes="FORAGE"/>
<foodGroup title="Hay" productionWeight="0.8" eatWeight="1.0" fillTypes="DRYGRASS_WINDROW"/>
<foodGroup title="Silage" productionWeight="0.8" eatWeight="1.0" fillTypes="SILAGE"/>
<foodGroup title="Grass" productionWeight="0.4" eatWeight="1.0" fillTypes="GRASS_WINDROW"/>
<!-- Add custom 5th food group -->
<foodGroup title="Oat" productionWeight="1.0" eatWeight="1.0" fillTypes="OAT"/>
</animal>Option 2: Disable one + add custom (stay at 4 active):
<animal animalType="COW" consumptionType="SERIAL">
<foodGroup title="Total Mixed Ration" productionWeight="1.0" eatWeight="1.0" fillTypes="FORAGE"/>
<foodGroup title="Hay" productionWeight="0.8" eatWeight="1.0" fillTypes="DRYGRASS_WINDROW"/>
<foodGroup title="Silage" productionWeight="0.8" eatWeight="1.0" fillTypes="SILAGE"/>
<foodGroup title="Grass" productionWeight="0.4" eatWeight="1.0" fillTypes="GRASS_WINDROW" disabled="true"/> <!-- Disable -->
<foodGroup title="Oat" productionWeight="1.0" eatWeight="1.0" fillTypes="OAT"/> <!-- Add custom -->
</animal><!-- BAD: 4 vanilla + 2 custom = 6 active entries -->
<foodGroup title="Oat" productionWeight="1.0" eatWeight="1.0" fillTypes="OAT"/>
<foodGroup title="Barley" productionWeight="1.0" eatWeight="1.0" fillTypes="BARLEY"/>Same principle applies to mixtures and recipes - keep active entries ≤ 5.
Enable the consumption multiplier to make animals eat faster:
<consumptionMultiplier>
<global multiplier="2.0" disabled="false"/>
</consumptionMultiplier>Animals now consume food twice as fast. Useful for testing animal systems or speeding up gameplay.
Reduce consumption rate to make food last longer:
<consumptionMultiplier>
<global multiplier="0.5" disabled="false"/>
</consumptionMultiplier>Animals eat half as fast. Food supplies last twice as long.
The mod integrates with Farming Simulator's animal food system through several mechanisms:
- Schema Validation: Uses
AnimalFoodSystem.xmlSchemato load and validate XML configuration files with the game's built-in schema - Lifecycle Hooks: Hooks into
BaseMission.loadMapFinishedto initialize after the game loads map data - Auto-Save Integration: Hooks into
FSBaseMission.saveSavegameto update the XML file when you save your game - Merging: When loading, the mod:
- Reads the game's current animal food system defaults
- Loads your XML customizations
- Merges them (XML values override, but new game content is added)
- Applies the merged configuration to the game
- Saves the merged result back to XML for next time
- Direct System Modification: Updates
g_currentMission.animalFoodSystemdata structures that the game reads for animal behavior - Automatic Normalization: Mixture weights and recipe ratios are automatically normalized to prevent invalid configurations
- Make sure you saved the XML file after editing
- Verify the XML file is in the correct savegame folder
- Check the game log for warnings about unknown fillTypes or invalid values
Unknown fillType 'XXX': You used a crop name that doesn't exist - check spelling or remove itFailed to load XML: XML syntax error - check for missing quotes, unclosed tags, or special charactersAnimalFoodSystem not available: The mod loaded too early - this is usually harmless and will self-correct
- Delete the
aaf_AnimalFood.xmlfile from your savegame folder - Load your savegame
- A fresh XML with current game defaults will be created
The merging system should handle most conflicts automatically. If you have issues:
- The last-loaded mod's XML values will take precedence
- Check if other mods modify the same animal food values
- Try loading this mod last (rename to start with "zzz" if needed)
- Make sure
disabled="false"is set (the feature is disabled by default) - Check the game log for "Incompatible mod detected" warning - the multiplier is automatically disabled when conflicting mods like FS25_RealisticLivestock are active
- Verify the multiplier value is between 0.01 and 100
- In multiplayer, the multiplier only applies on the server - clients see the results but don't apply the hook themselves