Fresh / Perishable products v1.1.0.0

DESCRIPTION

Fresh adds shelf life to your products - crops age over time and will spoil if not sold or used!

V1.1.0.0
Fresh now checks for roofs too. Bales, pallets, and big bags set down under a shed, carport, or barn roof age as Sheltered, and so do trailers parked under one. A covered trailer load ages as Sheltered while its tarp is closed. Expiry times in the menus and info boxes now follow the batch that runs out first and respect your aging settings.

Changes:
- Added roof detection for loose bales, pallets and big bags - one set down under a shed, carport or barn roof now ages as Sheltered instead of Exposed
- Added covered vehicle loads - a compartment with a load heap ages as Sheltered while the tarp or cover over it is closed and Exposed while it is open, including compartments that share one tarp with the covered ones
- Added roof detection for parked vehicles - a trailer parked under a shed roof, with nobody in it or its tractor, ages as Sheltered
- Changed the Loose Items storage setting to a minimum class - a bale or pallet under a roof stays Sheltered even when the setting is Exposed
- Removed the admin console commands that edit stock, ages, expiry and storage classes from release builds - set storage classes in the Fresh settings menu instead
- Fixed pallets and big bags on multiplayer clients showing a storage class that ignored the Loose Items setting (aging on the server was already correct)
- Fixed tankers, sprayers, and closed hoppers aging as Exposed - a load with no open heap now ages as Sheltered
- Fixed the Overview's Next Expiry showing the oldest batch's time when a newer batch in faster-spoiling storage runs out first
- Fixed the Product Details and Storage Details tabs showing a vehicle's oldest batch time instead of the batch that runs out first
- Fixed expiry times ignoring the Storage aging setting when it is off, and the Expires in lines and age bars still showing when expiration is off
- Updated the storage classes guide and FAQ to explain which buildings count as a roof

Your harvested crops, processed goods, and baled forage now have realistic shelf lives - leafy vegetables spoil quickly, while grains and canned products last much longer. Leave produce sitting too long and it will expire and be lost! Customize shelf lives via the Fresh Menu.

Usage
=====
Install the mod and play normally. Open Fresh Menu with Right Shift+F to view inventory, stats, and settings. Check expiry by looking at any vehicle, bale, or storage. Customize shelf lives in Settings if defaults don't suit your playstyle.

User guide: https://rittermod.github.io/FS25_Fresh/
Found a bug? Open an issue at https://github.com/RitterMod/FS25_Fresh/issues


Fresh Menu (Right Shift+F)
==========================
- Inventory Overview: see all perishables at a glance with their oldest ages
- Product Details: per-storage age breakdown with freshness buckets
- Storage Details: per-product breakdown with age distribution and category filter
- Loss Statistics: track what you've lost and when
- Shelf Life: effective shelf life per storage class
- Settings: customize shelf lives and storage class benefits

Storage Classes
===============
- Storages auto-classified: Exposed, Sheltered, Indoor, Cooled, Frozen, Disabled
- Each class applies an aging speed multiplier - better storage means slower spoilage
- Bales, pallets, big bags, and parked vehicles under a building roof age as Sheltered
- Vehicle loads follow their cover: Sheltered while the tarp is closed, Exposed while it is open; tankers and closed hoppers age as Sheltered
- Override storage class per-storage via Settings; the Loose Items setting sets the minimum class for bales and pallets outside a storage
- Set per-product max benefit class to cap how much a storage class can help

Visual Feedback
===============
- Age distribution bars when near placeables, vehicles, and bales (color-coded freshness)
- Storage class icons in HUD, expiring soon table, and loss log
- Expiry countdown on vehicles and bales
- Expiring amount and time remaining per fill type on placeables and husbandries
- Warning highlight when products near expiration (configurable threshold)
- Notification when products expire and are removed

Perishable Products
===================
- 100+ products with realistic shelf lives (perishable produce spoils in days, grains last months, canned products up to 3 years)
- 130+ non-expiring products pre-configured
- 4 bale types: Fresh Grass (days), Hay (18 months), Straw (24 months), Silage (12 months)
- Wrapped grass bales begin aging after fermentation completes

Settings & Customization
========================
- Difficulty presets (Very Easy/Easy/Normal/Hard) or Custom for individual control
- Configure shelf life for any product (basegame, DLCs, maps/mods)
- Enable/disable expiration globally or per-product
- Configurable warning threshold (6h/12h/24h/48h/72h)
- Reset all settings to defaults with one click
- Optional external config file (customDefaults.xml) to add or override shelf life, storage class, and aging for any crop - including custom map/mod crops - without editing the mod (update-safe, server-side in multiplayer)
- Per-savegame settings
- Multiplayer: host/admin controls settings for all players

Loss Tracking
=============
- All expirations recorded in loss log
- Daily notifications summarizing your farm's losses
- View loss history in menu

Tracking Locations
==================
- Vehicles: trailers, tankers, combine tanks, etc.
- Bales and pallets: on the ground and in storage buildings
- Placeables: silos, productions, husbandries, object storage

How It Works
============
- Each harvest or production run is tracked as a separate batch with its own age
- Oldest items retrieved first from storage (FIFO)
- Expired products automatically removed
- Batch ages preserved during transfers between containers
- Multiplayer support (server-authoritative)
- Ages saved with your game

Limitations & Known Issues
==========================
- No loose item tracking (loose grass, grains, etc. on the ground)
- Silo extensions are tracked separately rather than as a shared pool

Fresh: Because hoarding should have consequences.

User guide: https://rittermod.github.io/FS25_Fresh/
Source code and issue tracker: https://github.com/rittermod/FS25_Fresh

CREDITS

rittermod

COMMENTS

There are no any comments

Write a comment