...
 
Commits (33)
Speeder's Configurable Improved Sprinklers
==========================================
This is a mod for the game [Stardew Valley](http://stardewvalley.net/), it improves the existing sprinklers and let you configure them to your liking, it also has highlight area for scarecrows and sprinklers.
**Better Sprinklers** by Maurício Gomes (Speeder) is a [Stardew Valley](http://stardewvalley.net/)
mod which lets you edit sprinkler coverage (while adjusting their crafting cost), and lets you view
a sprinkler's or scarecrow's coverage by pointing at it in `F3` mode.
![Game Screenshot](screenshot.png)
## Contents
* [Install](#install)
* [Use](#use)
* [Compatibility](#compatibility)
* [Versions](#versions)
* [See also](#see-also)
The config hotkey is "K", you can edit it in your config file. Sadly, there is no way to edit the hotkey in-game (yet).
## Install
1. [Install the latest version of SMAPI](https://github.com/Pathoschild/SMAPI/releases).
3. Unzip [the mod files](http://www.nexusmods.com/stardewvalley/mods/41) into your `Mods` folder.
4. Run the game using SMAPI.
As for how the mod works: It adds extra watering area to the existing sprinklers, it can't remove watering area from the existing sprinklers though.
## Use
### Editing sprinkler coverage
* Press `K` (editable in `config.json`) to show a sprinkler coverage editor and click the squares
to set the coverage. You can use any shape you want, though you can't remove the default squares.
Press "OK" when you're done, and the mod will automatically adjust the crafting and purchase cost
for balance.
The idea for this mod originally was only to improve the normal sprinkler, that is pretty terrible, and for optimal use requires a non-standard farm organization that cause collision issues with the main character.
> ![](docs/screenshot.png)
> ![](docs/circle.png)
> ![](docs/butterfly.png)
The 1.x version was rewritten entirely for this 2.0 release, to support future sprinkler mods, UI-based configuration, and other nice features, including autobalance.
* When placing a sprinkler or scarecrow, its coverage will be highlighted automatically. You can also
press `F3` and point at a sprinkler or scarecrow to highlight its coverage.
Features
--------
> ![](docs/scarecrowarea.png)
* Default sprinkler shapes allow more flexibility in farm layouts.
* You can use any shape you want, literally.
* Infinite sprinkler range (requires editing the config file manually though, not recommended).
* Automatic balancing, sprinkler monetary value, and crafting cost increase as you increase the sprinkler area, ensuring the game stay balanced.
* You CAN cheat though, in two different ways, but I won't explain how, this is for the more adventurous people to mess with.
* When placing sprinklers or scarecrows you can a highlight of the area they cover.
* After pressing a hotkey (default, F3) you can also see highlight of the areas when hovering the cursor over existing sprinklers and scarecrows.
* The sprinklers activate in the morning when the day starts.
Usage
-----
## Compatibility
Better Sprinklers is compatible with Stardew Valley 1.3+ on Linux/Mac/Windows, both single-player and multiplayer.
Press K, edit what you want, and click OK.
If two players have the mod installed in multiplayer, both ranges will apply.
Examples of what can be done:
Circle
![Game Screenshot](circle.png)
Butterfly Shape (like real world sprinklers)
![Game Screenshot](butterfly.png)
The sprinklers activate at night, like the normal game rules.
There is a feature that highlight scarecrow effect area, and sprinkler area, it is always on when you are going to place them, and can be turned on and off for ones that you are only hovering your cursor over them, the default button in the configuration is F3.
![Game Screenshot](scarecrowarea.png)
Visit the [Forum thread](http://community.playstarbound.com/threads/configurable-improved-sprinklers-scarecrow-and-sprinklers-area-highlights.112443/)
Changelog
---------
## Versions
### 2.4
- Updated for Stardew Valley 1.3 (including multiplayer support) and SMAPI 3.0.
- Added support for controller bindings.
- Added mod-provided API to let other mods access the custom sprinkler coverage.
- Added support for sprinklers inside custom buildings.
- Improved compatibility with other mods that change object/recipe data.
### 2.3
Corrected forum thread link, and default config minor error.
- Corrected forum thread link, and default config minor error.
### 2.2
Updated for Stardew Valley 1.1 and SMAPI 0.40.0 1.1.
- Updated for Stardew Valley 1.1 and SMAPI 0.40.0 1.1.
### 2.1
Added highlighting to the area of sprinklers and scarecrows.
Added grid rendering.
Added html readme.
Fixed a bug with the configuration key (it was always K even if you edited the config.json)
- Added highlighting to the area of sprinklers and scarecrows.
- Added grid rendering.
- Added html readme.
- Fixed config bug (it was always `K` even if you edited the config.json).
### 2.0.1
Fixed a mistake that made it incompatible with SMAPI 0.39.2
- Fixed compatibility with SMAPI 0.39.2.
### 2.0
Updated to SMAPI 0.39.2
Added a GUI to configure the sprinklers.
Sprinklers now work on all farmable areas, including greenhouses and anything added by mods.
Installing
----------
Just unpack the .zip file in the mods folder.
Uninstalling
------------
Just delete the mod files again.
Credits
-------
Author: Maurício Gomes (Speeder) [![Patreon](ipatreon.png)](https://patreon.com/user?u=3066937)
Special Thanks: Jesse and Pathoschild.
License
-------
The license of the project is [GPL3](https://gnu.org/licenses/gpl.html).
Source
------
Mod [source hosted on ![GitLab](igitlab.png)](https://gitlab.com/speeder1/SMAPISprinklerMod), special thanks to them! (that even provided free support when needed!)
[Installing a stable release from Nexus Mods](http://www.nexusmods.com/stardewvalley/mods/41/) is
recommended. If you really want to compile the mod yourself, just edit `SMAPISprinklerMod.csproj` and
set the `<GamePath>` setting to your Stardew Valley directory path. Launching the project in Visual
Studio will compile the code, package it into the mod directory, and start the game.
Binary Download Link
--------------------
You can download the compiled mod from [Nexus Mods](http://www.nexusmods.com/stardewvalley/mods/41/?).
\ No newline at end of file
- Updated to SMAPI 0.39.2.
- Added a GUI to configure the sprinklers.
- Sprinklers now work on all farmable areas, including greenhouses and anything added by mods.
## See also
* [![Patreon](docs/ipatreon.png)](https://patreon.com/user?u=3066937)
* [Nexus page](http://www.nexusmods.com/stardewvalley/mods/41)
* [Discussion thread](http://community.playstarbound.com/threads/configurable-improved-sprinklers-scarecrow-and-sprinklers-area-highlights.112443/)

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
# Visual Studio Version 16
VisualStudioVersion = 16.0.28714.193
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SMAPISprinklerMod", "SMAPISprinklerMod\SMAPISprinklerMod.csproj", "{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0BBF0C1A-9E74-44FF-9523-C4A295DA5DA9}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "root", "root", "{0BBF0C1A-9E74-44FF-9523-C4A295DA5DA9}"
ProjectSection(SolutionItems) = preProject
LICENSE.txt = LICENSE.txt
README.md = README.md
......@@ -13,16 +13,19 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
Debug|x86 = Debug|x86
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}.Release|Any CPU.Build.0 = Release|Any CPU
{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}.Debug|x86.ActiveCfg = Debug|x86
{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}.Debug|x86.Build.0 = Debug|x86
{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}.Release|x86.ActiveCfg = Release|x86
{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}.Release|x86.Build.0 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {EF07B9F8-1FB9-4CA4-AA19-8671F287F2FF}
EndGlobalSection
EndGlobal
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeThisQualifier/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantAnonymousTypePropertyName/@EntryIndexedValue">HINT</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/StaticQualifier/STATIC_MEMBERS_QUALIFY_MEMBERS/@EntryValue">Field, Property, Event, Method</s:String>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpCodeStyle/ThisQualifier/INSTANCE_MEMBERS_QUALIFY_MEMBERS/@EntryValue">Field, Property, Event, Method</s:String>
<s:String x:Key="/Default/CodeStyle/CSharpVarKeywordUsage/ForBuiltInTypes/@EntryValue">UseVarWhenEvident</s:String>
<s:String x:Key="/Default/CodeStyle/CSharpVarKeywordUsage/ForOtherTypes/@EntryValue">UseVarWhenEvident</s:String>
<s:String x:Key="/Default/CodeStyle/CSharpVarKeywordUsage/ForSimpleTypes/@EntryValue">UseVarWhenEvident</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ID/@EntryIndexedValue">ID</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb"&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb"&gt;&lt;ExtraRule Prefix="" Suffix="" Style="AaBb" /&gt;&lt;/Policy&gt;</s:String>
</wpf:ResourceDictionary>
\ No newline at end of file
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
namespace BetterSprinklers.Framework
{
/// <summary>The API which provides access to Better Sprinklers for other mods.</summary>
public class BetterSprinklersApi : IBetterSprinklersApi
{
/*********
** Fields
*********/
/// <summary>The mod configuration.</summary>
private readonly SprinklerModConfig Config;
/// <summary>The maximum sprinkler coverage supported by this mod (in tiles wide or high).</summary>
private readonly int MaxGridSize;
/*********
** Public methods
*********/
/// <summary>Construct an instance.</summary>
/// <param name="config">The mod configuration.</param>
/// <param name="maxGridSize">The maximum sprinkler coverage supported by this mod (in tiles wide or high).</param>
internal BetterSprinklersApi(SprinklerModConfig config, int maxGridSize)
{
this.Config = config;
this.MaxGridSize = maxGridSize;
}
/// <summary>Get the maximum sprinkler coverage supported by this mod (in tiles wide or high).</summary>
public int GetMaxGridSize()
{
return this.MaxGridSize;
}
/// <summary>Get the relative tile coverage by supported sprinkler ID.</summary>
public IDictionary<int, Vector2[]> GetSprinklerCoverage()
{
// build tile grids
IDictionary<int, Vector2[]> coverage = new Dictionary<int, Vector2[]>();
foreach (KeyValuePair<int, int[,]> shape in this.Config.SprinklerShapes)
coverage[shape.Key] = GridHelper.GetCoveredTiles(Vector2.Zero, shape.Value).ToArray();
return coverage;
}
}
}
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
namespace BetterSprinklers.Framework
{
/// <summary>Provides methods for working with sprinkler grids.</summary>
internal static class GridHelper
{
/*********
** Public methods
*********/
/// <summary>Get a grid of covered tiles centered on a sprinkler.</summary>
/// <param name="center">The sprinkler's tile position.</param>
/// <param name="grid">The grid to convert.</param>
public static IEnumerable<Vector2> GetCoveredTiles(Vector2 center, int[,] grid)
{
int arrayHalfSizeX = grid.GetLength(0) / 2;
int arrayHalfSizeY = grid.GetLength(1) / 2;
int minX = (int)center.X - arrayHalfSizeX;
int minY = (int)center.Y - arrayHalfSizeY;
int maxX = (int)center.X + arrayHalfSizeX;
int maxY = (int)center.Y + arrayHalfSizeY;
for (int gridX = 0, x = minX; x <= maxX; x++, gridX++)
{
for (int gridY = 0, y = minY; y <= maxY; y++, gridY++)
{
if (grid[gridX, gridY] > 0)
yield return new Vector2(x, y);
}
}
}
/// <summary>Get a tile grid centered on the given tile position.</summary>
/// <param name="centerTile">The center tile position.</param>
/// <param name="grid">The grid to get.</param>
/// <param name="perform">The action to perform for each tile, given the tile position.</param>
public static void ForCoveredTiles(Vector2 centerTile, int[,] grid, Action<Vector2> perform)
{
foreach (Vector2 tile in GridHelper.GetCoveredTiles(centerTile, grid))
{
perform(tile);
}
}
}
}
This diff is collapsed.
using System.Collections.Generic;
using Microsoft.Xna.Framework;
namespace BetterSprinklers
{
/// <summary>The API which provides access to Better Sprinklers for other mods.</summary>
public interface IBetterSprinklersApi
{
/// <summary>Get the maximum sprinkler coverage supported by this mod (in tiles wide or high).</summary>
int GetMaxGridSize();
/// <summary>Get the relative tile coverage by supported sprinkler ID.</summary>
IDictionary<int, Vector2[]> GetSprinklerCoverage();
}
}
\ No newline at end of file
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using StardewModdingAPI;
namespace SMAPISprinklerMod
namespace BetterSprinklers
{
public class SprinklerModConfig
{
/*********
** Accessors
*********/
public Keys ConfigKey { get; set; } = Keys.K;
public Keys HighlightKey { get; set; } = Keys.F3;
public SButton ConfigKey { get; set; } = SButton.K;
public SButton HighlightKey { get; set; } = SButton.F3;
public Color GridColour { get; set; } = Color.PowderBlue;
public Dictionary<int, int[,]> SprinklerShapes { get; set; } = new Dictionary<int, int[,]>
{
[599] = new int[7, 7]
[599] = new[,]
{
{ 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 1, 0, 0, 0 },
......@@ -24,7 +24,7 @@ namespace SMAPISprinklerMod
{ 0, 0, 0, 1, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0 }
},
[621] = new int[11, 11]
[621] = new[,]
{
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
......@@ -38,7 +38,7 @@ namespace SMAPISprinklerMod
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
},
[645] = new int[15, 15]
[645] = new[,]
{
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 },
......
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SMAPISprinklerMod")]
[assembly: AssemblyTitle("BetterSprinklers")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SMAPISprinklerMod")]
[assembly: AssemblyCopyright("Copyright © 2016")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("0473de39-c05c-4d22-8497-b06eae6cdac0")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.2.0.0")]
[assembly: AssemblyFileVersion("2.2.0.0")]
[assembly: AssemblyVersion("2.4.0")]
[assembly: AssemblyFileVersion("2.4.0")]
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProjectGuid>{0473DE39-C05C-4D22-8497-B06EAE6CDAC0}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SMAPISprinklerMod</RootNamespace>
<RootNamespace>BetterSprinklers</RootNamespace>
<AssemblyName>SMAPISprinklerMod</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
......@@ -21,51 +21,32 @@
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\SMAPISprinklerMod\</OutputPath>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Pathoschild.Stardew.ModBuildConfig" Version="2.2.0" />
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Framework\BetterSprinklersApi.cs" />
<Compile Include="Framework\GridHelper.cs" />
<Compile Include="IBetterSprinklersApi.cs" />
<Compile Include="ModConfig.cs" />
<Compile Include="SprinklerMod.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SprinklerShapeEditMenu.cs" />
<Compile Include="Framework\SprinklerShapeEditMenu.cs" />
</ItemGroup>
<ItemGroup>
<None Include="manifest.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
<None Include="manifest.json" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Pathoschild.Stardew.ModBuildConfig.1.5.0\build\Pathoschild.Stardew.ModBuildConfig.targets" Condition="Exists('..\packages\Pathoschild.Stardew.ModBuildConfig.1.5.0\build\Pathoschild.Stardew.ModBuildConfig.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Pathoschild.Stardew.ModBuildConfig.1.5.0\build\Pathoschild.Stardew.ModBuildConfig.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Pathoschild.Stardew.ModBuildConfig.1.5.0\build\Pathoschild.Stardew.ModBuildConfig.targets'))" />
</Target>
<Target Name="AfterBuild">
<PropertyGroup>
<ModPath>$(GamePath)\Mods\SMAPISprinklerMod</ModPath>
</PropertyGroup>
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll" DestinationFolder="$(ModPath)" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(ModPath)" Condition="Exists('$(TargetDir)\$(TargetName).pdb')" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).dll.mdb" DestinationFolder="$(ModPath)" Condition="Exists('$(TargetDir)\$(TargetName).dll.mdb')" />
<Copy SourceFiles="$(ProjectDir)\manifest.json" DestinationFolder="$(ModPath)" />
<Copy SourceFiles="$(SolutionDir)\butterfly.png" DestinationFolder="$(ModPath)" />
<Copy SourceFiles="$(SolutionDir)\circle.png" DestinationFolder="$(ModPath)" />
<Copy SourceFiles="$(SolutionDir)\ipatreon.png" DestinationFolder="$(ModPath)" />
<Copy SourceFiles="$(SolutionDir)\scarecrowarea.png" DestinationFolder="$(ModPath)" />
<Copy SourceFiles="$(SolutionDir)\screenshot.png" DestinationFolder="$(ModPath)" />
<Exec Command="&quot;$(SolutionDir)\multimarkdown.exe&quot; &quot;$(SolutionDir)\README.md&quot; &gt; &quot;$(ModPath)\readme.html&quot;" />
</Target>
</Project>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
{
"Name": "Better Sprinklers",
"Author": "Maurício Gomes (Speeder)",
"Version": {
"MajorVersion": 2,
"MinorVersion": 3,
"PatchVersion": 0,
"Build": null
},
"MinimumApiVersion": "1.8",
"Version": "2.4.0",
"Description": "Lets you customise the sprinkler coverage.",
"UniqueID": "Speeder.BetterSprinklers",
"Description": "Make the Sprinklers work better.",
"EntryDll": "SMAPISprinklerMod.dll"
"EntryDll": "SMAPISprinklerMod.dll",
"MinimumApiVersion": "2.10.1",
"UpdateKeys": [ "Nexus:41" ]
}
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Pathoschild.Stardew.ModBuildConfig" version="1.5.0" targetFramework="net452" />
</packages>
\ No newline at end of file