| Description |
Description:
Crop Control Override is a per-save crop policy manager for Farming Simulator 25. It lets players control which crops are permitted for the player, which crops NPC farmers may plant, and whether NPC crop planting should be limited by field size.
The mod includes an editable FS25-style GUI, per-save XML rule files, NPC field validation, blocked NPC field reporting, and a guarded Apply / Force Apply workflow to prevent accidental invalid save states.
Main GUI features:
- ALL RULES: view and edit crop policy rules.
- DISABLED: view globally disabled crops.
- SIZE LIMITED: view crops with NPC field-size limits.
- NPC DISABLED: view crops NPCs should not plant.
- VALIDATION: view existing NPC fields that violate the active policy and use the guarded dry-run / confirm reset workflow.
- SUMMARY: view active config, rule counts, and validation state.
- HELP: view in-game guidance.
Configuration:
- APPLY / FORCE APPLY writes staged crop-rule changes to the active per-save XML.
- DISCARD resets staged values.
- SAVE DEFAULTS TO CONFIG.XML backs up the existing template config and writes the current full active rule set to config.xml.
- Existing per-save XML files are not overwritten by Save Defaults.
- RESET BLOCKED DRY-RUN does not change the save state. CONFIRM RESET performs the actual blocked-field reset after review.
- VALIDATION includes RESET MODE: CULTIVATED or RESEED SEASONAL.
- RESEED SEASONAL uses the current seasonal planting window and CCO policy rules to choose a replacement crop for blocked NPC fields.
- Each crop has an individual reseed weight from 0 to 5, editable in the GUI and stored as reseedWeight on its fruit rule.
- A crop weight of 0 excludes that crop from NPC-field reseeding without disabling it for the player.
- The global leaveCultivated weight remains available, allowing weighted resets to leave some fields cultivated instead of reseeding them.
Changelog 2.1.1.0:
- Fixed a bug where a sowing machine's selected seed could be silently reset to the first slot in its seed list (often Wheat) whenever CCO rules were reapplied, including the settings resync that fires when another player finishes joining a session, even if the active crop rules had not actually changed.
- Seed selection now only snaps to a fallback slot when the previously selected crop is genuinely no longer permitted, and this is now logged.
Changelog 2.1.0.0 Alpha 10.3:
- Prevents NPC crop-planning hooks from returning an invalid fruit index when a replacement cannot be selected.
- Delays contract rebuilding until asynchronous blocked-field cleanup has settled and refreshes the affected field states first.
- Safely removes legacy sow contracts that already contain an invalid fruit reference instead of allowing repeated SowMission update errors.
Changelog 2.1.0.0 Alpha 10.2:
- Synchronises server-authoritative validation totals and blocked NPC field details to dedicated-server clients.
- Routes validation dry-runs and confirmed blocked-field cleanup through the server.
- Fixes the missing apply-blocked localization reference and refreshes validation after asynchronous cleanup.
Changelog 2.1.0.0 Alpha 10.1:
- Fixed dedicated-server rule rejections appearing as an unexplained settings resync.
- Remote admins now keep staged values and receive FORCE APPLY when server validation finds existing non-compliant NPC fields.
- Renamed Reset NPC Fields to Existing Field Cleanup and clarified its grandfathering behaviour.
Changelog 2.1.0.0 Alpha 10:
- Added preview and confirmation controls for full NPC map regeneration to the Validation tab.
- Added permission-aware UI gating and concise regeneration plan summaries.
- Kept console commands and DEBUG mission auditing available.
Changelog 2.1.0.0 Alpha 9.6:
- Cleans the validated Alpha 9.5 build into a quieter test baseline.
- Keeps the mission audit summary at INFO level and moves detailed mission, field and crop audit lines to DEBUG.
- No intended regeneration or contract-generation behaviour changes.
Changelog 2.1.0.0 Alpha 9.5:
- Corrects mission-field resolution in the post-refill audit across numeric, nested, object and getter-based mission layouts.
- Logs each mission class, crop, resolved field ID, resolution source and discovered field-related members.
- Diagnostic only; regeneration and contract generation are unchanged.
Changelog 2.1.0.0 Alpha 9.4:
- Adds a post-refill audit matching regenerated harvest-ready fields to generated contracts.
- Reports field, crop, state source, mission presence, mission type and mission crop.
- Adds per-crop and overall ready-field versus contract totals without changing generation behaviour.
Changelog 2.1.0.0 Alpha 9.2:
- Preserves valid multi-period harvest outcomes when the final state remains in the current harvest range.
- Prevents peas, spinach and similar crops from unnecessarily using the harvest-window fallback.
Changelog 2.1.0.0 Alpha 9.1:
- Preserves valid natural seasonal growth-mapping outcomes before using the harvest-window fallback.
- Adds origin diagnostics and a better-mixed deterministic field picker.
Changelog 2.1.0.0 Alpha 9:
- Adds an authoritative harvest-window fallback when seasonal mapping replay cannot reproduce a valid harvest-ready standing crop.
- The fallback requires an active harvest period and a valid harvesting-state range.
Changelog 2.1.0.0 Alpha 8.2:
- Cleaned and consolidated the validated Alpha 8.1 NPC map regeneration implementation.
- No intended regeneration behaviour change from Alpha 8.1.
Changelog 2.1.0.0 Alpha 8.1:
- Applies the planting period's own seasonal growth mapping before replaying later periods.
- Fixes year-crossing crops remaining stuck in their initial growth state.
Changelog 2.1.0.0 Alpha 8:
- Requires harvest-period regeneration outcomes to be inside each crop's authoritative harvesting state range.
- Rejects expired planting origins that have already passed harvest readiness or wrapped back to early growth states.
- Excludes crops with no plausible standing state for the current calendar period.
Changelog 2.1.0.0 Alpha 7:
- Replaced inferred growth stages with authoritative seasonal growthMapping replay.
- Uses isHarvestable and each crop's actual harvesting-state range.
- Evaluates all valid planting origins and prefers harvest-ready outcomes during harvest periods.
- Rejects withered or out-of-season harvest states and retains the confirmation safety gate.
Changelog 2.1.0.0 Alpha 6:
- Converted full-map regeneration into a guarded diagnostic build while seasonal harvest data is investigated.
- Expanded ccoGrowthProbe to dump harvesting metadata, growth-state names, and all 12 raw seasonal period entries for a selected crop.
- Dry-run entries now identify whether each selected growth state is authoritative or unverified.
- Confirmation is blocked whenever any planned crop uses an inferred or fallback growth state.
- Regrowing crops such as grass are resolved before ordinary planting-window logic, preventing plantingAllowed from forcing newly seeded state 1.
Changelog 2.1.0.0 Alpha 5:
- Reworked full-map crop growth-state selection around each fruit type's authoritative harvesting-state range.
- Crops in their current harvest period now use minHarvestingGrowthState so harvest missions and equipment recognise them correctly.
- Intermediate calendar periods remain below the harvesting range instead of advancing by one raw foliage state per period.
- Regrowing crops now use an established usable state rather than newly seeded state 1.
- Refreshes every regenerated field's cached FieldState after density-map tasks settle and before contract generation begins.
- Retains stale-contract removal and the staged native contract-board refill.
Changelog 2.1.0.0 Alpha 3:
- Fixed the delayed regeneration state machine not receiving update ticks.
- Mission generation now starts reliably after the field-update settling delay.
Changelog 2.1.0.0 Alpha 2:
- Full-map regeneration is now refused while any accepted or active contract exists.
- Available contracts are deleted before NPC fields are changed, preventing stale mission records from being saved.
- Automatic mission generation is suspended while asynchronous field updates are applied.
- Fresh mission generation starts after a five-second field-update settling period.
- Added staged contract-removal and mission-regeneration logging.
Changelog 2.1.0.0 Alpha 1:
- Added an experimental console-first workflow to regenerate every NPC-owned field, not only fields blocked by active CCO rules.
- Added ccoRegenerateNpcFields dryrun, confirm, and clear commands.
- Full-map regeneration uses enabled NPC crops, field-size restrictions, per-crop reseed weights, and the leaveCultivated weight.
- Added deterministic weighted selection so the dry-run and confirmed operation use the same field plan.
- Added calendar-derived growth-state selection using runtime seasonal data where available, with a conservative planting-window progression fallback.
- Crops without a plausible current growth state are excluded rather than being planted at an arbitrary stage.
- Regeneration plans expire when the seasonal period or year changes.
- Crop ground type is now resolved from the selected fruit growth state where supported by the engine.
- This alpha keeps the existing blocked-field reset workflow unchanged.
Changelog 2.0.3.5:
- Replaced the seasonalMission and seasonalLifecycle category weights with an individual 0-5 reseed weight for every crop.
- Added GUI controls for editing the reseed weight of the selected crop.
- A crop weight of 0 now excludes that crop from NPC-field reseeding while leaving the crop otherwise enabled.
- Retained the global leaveCultivated weighting.
- Added automatic migration of existing per-save XML files, assigning the default weight of 5 where reseedWeight is missing and removing obsolete category weights when files are normalised.
- Added multiplayer synchronisation for per-crop reseed weights.
Changelog 2.0.3.4:
- Disabled player crops are now removed immediately from the selectable seed list of loaded, newly purchased, and newly loaded sowing machines.
- Re-enabling a crop restores it to compatible seeders without requiring a savegame reload.
- Added server-authoritative sowing and direct-sowing safeguards so stale selections, helpers, multiplayer clients, and compatible third-party worker systems cannot plant prohibited crops.
- Active AI fieldwork is stopped when a disabled crop is selected, the sowing implement is switched off, and a centre-screen Crop Control Override warning explains why seeding is not permitted.
- Improved multiplayer crop-rule delivery with a server push after client loading, client retry handling, and deferred client-side policy application until the authoritative server snapshot arrives.
- Added and completed French localisation support.
Changelog 2.0.1.9:
- Expanded external l10n support so GUI and gameplay text can be translated through language files.
- Added German and French language-file support and prepared the mod for community-contributed translations.
Changelog 2.0.1.8:
- Rebuilt cached sowing-machine seed lists whenever crop rules change, so disabled crops disappear from seed selectors immediately.
- Added a live sowing guard and filtering for newly loaded or purchased seeders.
- Improved dedicated-server rule synchronisation with a server-side push and client retry process.
- Prevented remote clients from applying temporary all-enabled placeholder rules while waiting for the server snapshot.
- Reset multiplayer and original fruit-state data fully when leaving a mission.
- Fixed config normalisation and template-backup handling for custom reseed settings.
Changelog 2.0.1.7:
- Fixed the permission-hook installer load order so the admin-permission build loads cleanly before installing Farm Management admin listeners.
Changelog 2.0.1.6:
- Remote dedicated-server clients that elevate to game admin/master user through the Farm Management admin console can now unlock CCO editing for that session.
- Added a permission refresh handshake so admin status changes are sent to the server and the CCO GUI refreshes without using local client XML files.
- Server-side validation still protects rule changes; normal remote clients remain read-only.
Changelog 2.0.1.5:
- Added dedicated-server admin/master-user edit permissions using the EasyDevControls-style authority model.
- Remote server admins can edit CCO rules through server-validated multiplayer events while normal remote clients remain read-only.
- Dedicated-server clients still do not read, create, or write local CCO XML files.
Changelog 2.0.1.4:
- Fixed the custom CCO GUI opening path by removing the unstable paging selector that could trigger a TextElement stack overflow in some FS25 builds.
- Remote multiplayer clients now show a waiting/sync state instead of rendering local default rules before the server snapshot arrives.
Changelog 2.0.1.3:
- Fixed remote multiplayer client sync requests firing before the server connection is ready.
Changelog 2.0.1.2:
- Dedicated/cloud multiplayer clients now ignore local CCO XML files and use an in-memory ruleset synced from the server.
- Remote multiplayer clients are read-only by default, preventing local savegame XML creation or accidental rule writes.
- Single-player, local-host multiplayer, and server-side file behaviour remain unchanged.
Changelog 2.0.1.1:
- Fixed dedicated/cloud multiplayer client GUI refresh after server-side rule changes; the originating client now receives the server-authoritative update and refreshes an open CCO GUI.
Changelog 2.0.1.0:
- Added multiplayer event handling so GUI changes and server-side reset/apply actions are sent to the server on dedicated multiplayer games.
- Updated NPC crop planning to use FieldManager.generatePlannedFruitForField instead of the old mission-generation flag mutation.
- Added defensive error handling around NPC crop replacement during planned fruit generation.
- Moved localisation to external l10n files so additional languages can be added more easily.
Hotkeys:
ALT+C opens the Crop Control Override GUI. This keybind can be changed in the in-game controls menu.
Mouse: use the GUI tabs, table rows, and buttons.
Keyboard: use the displayed FS25 footer actions for tab navigation, Load Defaults, and back.
Useful console commands:
ccoGui, ccoStatus, ccoWhichConfig, ccoReload, ccoValidateSave, ccoScanBlocked, ccoResetBlocked dryrun, ccoResetBlocked, ccoListNpcCandidates, ccoSeasonProbe, ccoGrowthProbe, ccoHelp
GitHub link:
https://github.com/SimGamerJen/FS25_CropControlOverride
|