This repository contains my SMAPI mods for Stardew Valley. See the individual mods for
documentation and release notes.

## Mods
Active mods:
* **Automate** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/509760) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/1063) | [source](Automate))</small>  
  _Place a chest next to a machine (like a furnace or crystalarium), and the machine will
  automatically pull raw items from the chest and push processed items into it. Connect multiple
  machines with a chest to create factories._

* **Central Station** <small>([Nexus](https://nexusmods.com/stardewvalley/mods/8000))</small>  
  _Travel to other mods' destinations by boat, bus, or train. You can also get a ticket to the
  Central Station to change line, visit the gift shop, and more._

* **Chests Anywhere** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/606600) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/518) | [source](ChestsAnywhere))</small>  
  _Access your chests from anywhere and organize them your way. Transfer items without having to
  run around, from the comfort of your bed to the deepest mine level._

* **Content Patcher** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/470174) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/1915) | [source](ContentPatcher))</small>  
  _Load content packs that change the game's images and data without replacing XNB files. Unlike
  XNB mods, these content packs get automatic update checks and compatibility checks, are easy to
  install and uninstall, and are less likely to break due to game updates._

* **Crops Anytime Anywhere** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/606647) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/3000) | [source](CropsAnytimeAnywhere))</small>  
  _Grow crops in any season and location, including on grass/dirt tiles you normally couldn't till._

* **Data Layers** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/606646) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/1691) | [source](DataLayers))</small>  
  _Overlays the world with visual data like accessibility, bee/Junimo/scarecrow/sprinkler coverage,
  etc. It automatically includes data from other mods if applicable._

* **Debug Mode** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/606608) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/679) | [source](DebugMode))</small>  
  _Press a button to view debug information and unlock the game's built-in debug commands
  (including teleportation and time manipulation)._

* **Fast Animations** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/606631) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/1089) | [source](FastAnimations))</small>  
  _Speed up many animations in the game (currently eating, drinking, milking, shearing, and
  breaking geodes). Optionally configure the speed for each animation._

* **Horse Flute Anywhere** <small>([Nexus](https://www.nexusmods.com/stardewvalley/mods/7500) | [source](HorseFluteAnywhere))</small>  
  _Use the [horse flute](https://stardewvalleywiki.com/Horse_Flute) to summon your horse anywhere,
  even indoors or in caves/dungeons._

* **Lookup Anything** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/606605) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/541) | [source](LookupAnything))</small>  
  _See live info about whatever's under your cursor when you press F1. Learn a villager's favorite
  gifts, when a crop will be ready to harvest, how long a fence will last, why your farm animals
  are unhappy, and more._

* **Noclip Mode** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/691002) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/3900) | [source](NoclipMode))</small>  
  _Toggle [noclip mode](https://en.wikipedia.org/wiki/Noclip_mode) at the press of a button,
  letting you walk through anything (even map boundaries)._

* **Skip Intro** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/606601) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/533) | [source](SkipIntro))</small>  
  _Skip straight to the title screen or load screen (configurable) when you start the game. It also
  skips the screen transitions, so starting the game is much faster._

* **Small Beach Farm** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/606555) | [Nexus](https://www.nexusmods.com/stardewvalley/mods/3750) | [source](SmallBeachFarm))</small>  
  _Replaces the riverlands farm with a fertile pocket beach, suitable for slower or challenge runs._

* **Tractor Mod** <small>([ModDrop](https://www.moddrop.com/stardew-valley/mods/606639) [Nexus](https://www.nexusmods.com/stardewvalley/mods/1401) | [source](TractorMod))</small>  
  _Lets you buy a tractor to more efficiently till/fertilize/seed/water/harvest crops, clear rocks, etc._

Inactive mods:
* No Debug Mode  
  _(deleted) Disables SMAPI's F2 debug mode, which can cause unintended effects like skipping an
  entire season or teleporting into walls. No longer needed after SMAPI 1.0._

* The Long Night <small>(~~[Nexus](https://www.nexusmods.com/stardewvalley/mods/1369)~~ | [source](_archived/TheLongNight))</small>  
  _Disables collapsing. You just stay awake forever and the night never ends (until you go to bed).
  Broke permanently in Stardew Valley 1.3.20._

* Rotate Toolbar <small>(~~[Nexus](https://www.nexusmods.com/stardewvalley/mods/1100)~~ | [source](_archived/RotateToolbar))</small>  
  _Rotate the top inventory row for the toolbar by pressing Tab (configurable). Added to the game
  in Stardew Valley 1.4.0._

## Translating the mods
<!--

    This section is auto-generated using a script, there's no need to edit it manually.
    https://github.com/Pathoschild/StardewScripts/tree/main/create-translation-summary

-->
The mods can be translated into any language supported by the game, and SMAPI will automatically
use the right translations.

Contributions are welcome! See [Modding:Translations](https://stardewvalleywiki.com/Modding:Translations)
on the wiki for help contributing translations.

(❑ = untranslated, ↻ = partly translated, ✓ = fully translated)

&nbsp;       | Automate                   | Central Station                                            | Chests Anywhere                  | Crops Anytime Anywhere                 | Data Layers                  | Debug Mode                  | Fast Animations                  | Horse Flute Anywhere                 | Lookup Anything                  | Noclip Mode                  | Skip Intro                  | Small Beach Farm                 | Tractor Mod
:----------- | :------------------------- | :--------------------------------------------------------- | :------------------------------- | :------------------------------------- | :--------------------------- | :-------------------------- | :------------------------------- | :----------------------------------- | :------------------------------- | :--------------------------- | :-------------------------- | :------------------------------- | :---------------------------
Chinese      | [↻](Automate/i18n/zh.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/zh.json) | [✓](ChestsAnywhere/i18n/zh.json) | [✓](CropsAnytimeAnywhere/i18n/zh.json) | [↻](DataLayers/i18n/zh.json) | [✓](DebugMode/i18n/zh.json) | [✓](FastAnimations/i18n/zh.json) | [✓](HorseFluteAnywhere/i18n/zh.json) | [↻](LookupAnything/i18n/zh.json) | [✓](NoclipMode/i18n/zh.json) | [✓](SkipIntro/i18n/zh.json) | [✓](SmallBeachFarm/i18n/zh.json) | [↻](TractorMod/i18n/zh.json)
French       | [↻](Automate/i18n/fr.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/fr.json) | [↻](ChestsAnywhere/i18n/fr.json) | [❑](CropsAnytimeAnywhere/i18n)         | [↻](DataLayers/i18n/fr.json) | [↻](DebugMode/i18n/fr.json) | [↻](FastAnimations/i18n/fr.json) | [✓](HorseFluteAnywhere/i18n/fr.json) | [↻](LookupAnything/i18n/fr.json) | [✓](NoclipMode/i18n/fr.json) | [✓](SkipIntro/i18n/fr.json) | [✓](SmallBeachFarm/i18n/fr.json) | [↻](TractorMod/i18n/fr.json)
German       | [↻](Automate/i18n/de.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/de.json) | [↻](ChestsAnywhere/i18n/de.json) | [✓](CropsAnytimeAnywhere/i18n/de.json) | [↻](DataLayers/i18n/de.json) | [✓](DebugMode/i18n/de.json) | [✓](FastAnimations/i18n/de.json) | [✓](HorseFluteAnywhere/i18n/de.json) | [↻](LookupAnything/i18n/de.json) | [✓](NoclipMode/i18n/de.json) | [✓](SkipIntro/i18n/de.json) | [✓](SmallBeachFarm/i18n/de.json) | [↻](TractorMod/i18n/de.json)
Hungarian    | [↻](Automate/i18n/hu.json) | [❑](CentralStation/%5BCP%5D%20CentralStation/i18n)         | [↻](ChestsAnywhere/i18n/hu.json) | [❑](CropsAnytimeAnywhere/i18n)         | [↻](DataLayers/i18n/hu.json) | [↻](DebugMode/i18n/hu.json) | [↻](FastAnimations/i18n/hu.json) | [✓](HorseFluteAnywhere/i18n/hu.json) | [↻](LookupAnything/i18n/hu.json) | [✓](NoclipMode/i18n/hu.json) | [❑](SkipIntro/i18n)         | [↻](SmallBeachFarm/i18n/hu.json) | [↻](TractorMod/i18n/hu.json)
Italian      | [✓](Automate/i18n/it.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/it.json) | [✓](ChestsAnywhere/i18n/it.json) | [✓](CropsAnytimeAnywhere/i18n/it.json) | [✓](DataLayers/i18n/it.json) | [✓](DebugMode/i18n/it.json) | [✓](FastAnimations/i18n/it.json) | [✓](HorseFluteAnywhere/i18n/it.json) | [✓](LookupAnything/i18n/it.json) | [✓](NoclipMode/i18n/it.json) | [✓](SkipIntro/i18n/it.json) | [✓](SmallBeachFarm/i18n/it.json) | [✓](TractorMod/i18n/it.json)
Japanese     | [❑](Automate/i18n)         | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/ja.json) | [↻](ChestsAnywhere/i18n/ja.json) | [❑](CropsAnytimeAnywhere/i18n)         | [↻](DataLayers/i18n/ja.json) | [↻](DebugMode/i18n/ja.json) | [↻](FastAnimations/i18n/ja.json) | [↻](HorseFluteAnywhere/i18n/ja.json) | [↻](LookupAnything/i18n/ja.json) | [✓](NoclipMode/i18n/ja.json) | [✓](SkipIntro/i18n/ja.json) | [✓](SmallBeachFarm/i18n/ja.json) | [↻](TractorMod/i18n/ja.json)
Korean       | [↻](Automate/i18n/ko.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/ko.json) | [↻](ChestsAnywhere/i18n/ko.json) | [✓](CropsAnytimeAnywhere/i18n/ko.json) | [↻](DataLayers/i18n/ko.json) | [↻](DebugMode/i18n/ko.json) | [↻](FastAnimations/i18n/ko.json) | [✓](HorseFluteAnywhere/i18n/ko.json) | [↻](LookupAnything/i18n/ko.json) | [✓](NoclipMode/i18n/ko.json) | [✓](SkipIntro/i18n/ko.json) | [✓](SmallBeachFarm/i18n/ko.json) | [↻](TractorMod/i18n/ko.json)
[Polish]     | [↻](Automate/i18n/pl.json) | [❑](CentralStation/%5BCP%5D%20CentralStation/i18n)         | [↻](ChestsAnywhere/i18n/pl.json) | [❑](CropsAnytimeAnywhere/i18n)         | [↻](DataLayers/i18n/pl.json) | [↻](DebugMode/i18n/pl.json) | [❑](FastAnimations/i18n)         | [❑](HorseFluteAnywhere/i18n)         | [↻](LookupAnything/i18n/pl.json) | [↻](NoclipMode/i18n/pl.json) | [❑](SkipIntro/i18n)         | [❑](SmallBeachFarm/i18n)         | [↻](TractorMod/i18n/pl.json)
Portuguese   | [↻](Automate/i18n/pt.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/pt.json) | [↻](ChestsAnywhere/i18n/pt.json) | [✓](CropsAnytimeAnywhere/i18n/pt.json) | [↻](DataLayers/i18n/pt.json) | [↻](DebugMode/i18n/pt.json) | [↻](FastAnimations/i18n/pt.json) | [↻](HorseFluteAnywhere/i18n/pt.json) | [↻](LookupAnything/i18n/pt.json) | [✓](NoclipMode/i18n/pt.json) | [✓](SkipIntro/i18n/pt.json) | [✓](SmallBeachFarm/i18n/pt.json) | [✓](TractorMod/i18n/pt.json)
Russian      | [↻](Automate/i18n/ru.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/ru.json) | [↻](ChestsAnywhere/i18n/ru.json) | [✓](CropsAnytimeAnywhere/i18n/ru.json) | [↻](DataLayers/i18n/ru.json) | [↻](DebugMode/i18n/ru.json) | [↻](FastAnimations/i18n/ru.json) | [↻](HorseFluteAnywhere/i18n/ru.json) | [↻](LookupAnything/i18n/ru.json) | [✓](NoclipMode/i18n/ru.json) | [✓](SkipIntro/i18n/ru.json) | [↻](SmallBeachFarm/i18n/ru.json) | [↻](TractorMod/i18n/ru.json)
Spanish      | [↻](Automate/i18n/es.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/es.json) | [↻](ChestsAnywhere/i18n/es.json) | [↻](CropsAnytimeAnywhere/i18n/es.json) | [↻](DataLayers/i18n/es.json) | [↻](DebugMode/i18n/es.json) | [↻](FastAnimations/i18n/es.json) | [↻](HorseFluteAnywhere/i18n/es.json) | [↻](LookupAnything/i18n/es.json) | [✓](NoclipMode/i18n/es.json) | [✓](SkipIntro/i18n/es.json) | [✓](SmallBeachFarm/i18n/es.json) | [↻](TractorMod/i18n/es.json)
[Thai]       | [↻](Automate/i18n/th.json) | [❑](CentralStation/%5BCP%5D%20CentralStation/i18n)         | [↻](ChestsAnywhere/i18n/th.json) | [❑](CropsAnytimeAnywhere/i18n)         | [↻](DataLayers/i18n/th.json) | [↻](DebugMode/i18n/th.json) | [↻](FastAnimations/i18n/th.json) | [↻](HorseFluteAnywhere/i18n/th.json) | [↻](LookupAnything/i18n/th.json) | [✓](NoclipMode/i18n/th.json) | [✓](SkipIntro/i18n/th.json) | [↻](SmallBeachFarm/i18n/th.json) | [↻](TractorMod/i18n/th.json)
Turkish      | [↻](Automate/i18n/tr.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/tr.json) | [✓](ChestsAnywhere/i18n/tr.json) | [✓](CropsAnytimeAnywhere/i18n/tr.json) | [✓](DataLayers/i18n/tr.json) | [✓](DebugMode/i18n/tr.json) | [✓](FastAnimations/i18n/tr.json) | [✓](HorseFluteAnywhere/i18n/tr.json) | [↻](LookupAnything/i18n/tr.json) | [✓](NoclipMode/i18n/tr.json) | [✓](SkipIntro/i18n/tr.json) | [✓](SmallBeachFarm/i18n/tr.json) | [↻](TractorMod/i18n/tr.json)
[Ukrainian]  | [↻](Automate/i18n/uk.json) | [↻](CentralStation/%5BCP%5D%20CentralStation/i18n/uk.json) | [↻](ChestsAnywhere/i18n/uk.json) | [❑](CropsAnytimeAnywhere/i18n)         | [↻](DataLayers/i18n/uk.json) | [↻](DebugMode/i18n/uk.json) | [↻](FastAnimations/i18n/uk.json) | [↻](HorseFluteAnywhere/i18n/uk.json) | [↻](LookupAnything/i18n/uk.json) | [✓](NoclipMode/i18n/uk.json) | [✓](SkipIntro/i18n/uk.json) | [✓](SmallBeachFarm/i18n/uk.json) | [↻](TractorMod/i18n/uk.json)
[Vietnamese] | [↻](Automate/i18n/vi.json) | [❑](CentralStation/%5BCP%5D%20CentralStation/i18n)         | [❑](ChestsAnywhere/i18n)         | [❑](CropsAnytimeAnywhere/i18n)         | [❑](DataLayers/i18n)         | [❑](DebugMode/i18n)         | [❑](FastAnimations/i18n)         | [❑](HorseFluteAnywhere/i18n)         | [↻](LookupAnything/i18n/vi.json) | [✓](NoclipMode/i18n/vi.json) | [❑](SkipIntro/i18n)         | [❑](SmallBeachFarm/i18n)         | [↻](TractorMod/i18n/vi.json)

[Polish]: https://www.nexusmods.com/stardewvalley/mods/3616
[Thai]: https://www.nexusmods.com/stardewvalley/mods/7052
[Ukrainian]: https://www.nexusmods.com/stardewvalley/mods/8427
[Vietnamese]: https://www.nexusmods.com/stardewvalley/mods/24371

## Compiling the mods
Installing stable releases from Nexus Mods is recommended for most users. If you really want to
compile the mod yourself, read on.

These mods use the [crossplatform build config](https://www.nuget.org/packages/Pathoschild.Stardew.ModBuildConfig)
so they can be built on Linux, Mac, and Windows without changes. See [the build config documentation](https://www.nuget.org/packages/Pathoschild.Stardew.ModBuildConfig)
for troubleshooting.

### Compiling a mod for testing
To compile a mod and add it to your game's `Mods` directory:

1. Rebuild the project in [Visual Studio](https://www.visualstudio.com/vs/community/) or [MonoDevelop](https://www.monodevelop.com/).  
   <small>This will compile the code and package it into the mod directory.</small>
2. Launch the project with debugging.  
   <small>This will start the game through SMAPI and attach the Visual Studio debugger.</small>

### Compiling a mod for release
To package a mod for release:

1. Switch to `Release` build configuration.
2. Recompile the mod per the previous section.
3. Upload the generated `bin/Release/<mod name>-<version>.zip` file from the project folder.
