merge config files

This commit is contained in:
Jesse Plamondon-Willard 2017-02-23 22:58:23 -05:00
parent 96c7010c1b
commit 6a18dd6fad
8 changed files with 269 additions and 297 deletions

View File

@ -85,7 +85,6 @@ folder containing `src`).
StardewModdingAPI StardewModdingAPI
StardewModdingAPI.AssemblyRewriters.dll StardewModdingAPI.AssemblyRewriters.dll
StardewModdingAPI.config.json StardewModdingAPI.config.json
StardewModdingAPI.data.json
StardewModdingAPI.exe StardewModdingAPI.exe
StardewModdingAPI.exe.mdb StardewModdingAPI.exe.mdb
steam_appid.txt steam_appid.txt
@ -97,7 +96,6 @@ folder containing `src`).
Newtonsoft.Json.dll Newtonsoft.Json.dll
StardewModdingAPI.AssemblyRewriters.dll StardewModdingAPI.AssemblyRewriters.dll
StardewModdingAPI.config.json StardewModdingAPI.config.json
StardewModdingAPI.data.json
StardewModdingAPI.exe StardewModdingAPI.exe
StardewModdingAPI.pdb StardewModdingAPI.pdb
StardewModdingAPI.xml StardewModdingAPI.xml

View File

@ -62,9 +62,6 @@ namespace StardewModdingAPI
/// <summary>The file path for the SMAPI configuration file.</summary> /// <summary>The file path for the SMAPI configuration file.</summary>
internal static string ApiConfigPath => Path.Combine(Constants.ExecutionPath, $"{typeof(Program).Assembly.GetName().Name}.config.json"); internal static string ApiConfigPath => Path.Combine(Constants.ExecutionPath, $"{typeof(Program).Assembly.GetName().Name}.config.json");
/// <summary>The file path for the SMAPI data file containing metadata about known mods.</summary>
internal static string ApiModMetadataPath => Path.Combine(Constants.ExecutionPath, $"{typeof(Program).Assembly.GetName().Name}.data.json");
/// <summary>The file path to the log where the latest output should be saved.</summary> /// <summary>The file path to the log where the latest output should be saved.</summary>
internal static string LogPath => Path.Combine(Constants.LogDir, "SMAPI-latest.txt"); internal static string LogPath => Path.Combine(Constants.LogDir, "SMAPI-latest.txt");

View File

@ -1,15 +1,18 @@
namespace StardewModdingAPI.Framework.Models namespace StardewModdingAPI.Framework.Models
{ {
/// <summary>Contains user settings from SMAPI's JSON configuration file.</summary> /// <summary>The SMAPI configuration settings.</summary>
internal class UserSettings internal class SConfig
{ {
/********* /********
** Accessors ** Accessors
*********/ ********/
/// <summary>Whether to enable development features.</summary> /// <summary>Whether to enable development features.</summary>
public bool DeveloperMode { get; set; } public bool DeveloperMode { get; set; }
/// <summary>Whether to check if a newer version of SMAPI is available on startup.</summary> /// <summary>Whether to check if a newer version of SMAPI is available on startup.</summary>
public bool CheckForUpdates { get; set; } = true; public bool CheckForUpdates { get; set; } = true;
/// <summary>A list of mod versions which should be considered incompatible.</summary>
public IncompatibleMod[] IncompatibleMods { get; set; }
} }
} }

View File

@ -47,8 +47,8 @@ namespace StardewModdingAPI
/// <summary>The core logger for SMAPI.</summary> /// <summary>The core logger for SMAPI.</summary>
private readonly Monitor Monitor; private readonly Monitor Monitor;
/// <summary>The user settings for SMAPI.</summary> /// <summary>The SMAPI configuration settings.</summary>
private UserSettings Settings; private readonly SConfig Settings;
/// <summary>Tracks whether the game should exit immediately and any pending initialisation should be cancelled.</summary> /// <summary>Tracks whether the game should exit immediately and any pending initialisation should be cancelled.</summary>
private readonly CancellationTokenSource CancellationTokenSource = new CancellationTokenSource(); private readonly CancellationTokenSource CancellationTokenSource = new CancellationTokenSource();
@ -87,6 +87,10 @@ namespace StardewModdingAPI
/// <summary>Construct an instance.</summary> /// <summary>Construct an instance.</summary>
internal Program(bool writeToConsole) internal Program(bool writeToConsole)
{ {
// load settings
this.Settings = JsonConvert.DeserializeObject<SConfig>(File.ReadAllText(Constants.ApiConfigPath));
// initialise
this.Monitor = new Monitor("SMAPI", this.ConsoleManager, this.LogFile, this.ExitGameImmediately) { WriteToConsole = writeToConsole }; this.Monitor = new Monitor("SMAPI", this.ConsoleManager, this.LogFile, this.ExitGameImmediately) { WriteToConsole = writeToConsole };
this.DeprecationManager = new DeprecationManager(this.Monitor, this.ModRegistry); this.DeprecationManager = new DeprecationManager(this.Monitor, this.ModRegistry);
} }
@ -99,20 +103,6 @@ namespace StardewModdingAPI
this.Monitor.Log($"SMAPI {Constants.ApiVersion} with Stardew Valley {Game1.version} on {Environment.OSVersion}", LogLevel.Info); this.Monitor.Log($"SMAPI {Constants.ApiVersion} with Stardew Valley {Game1.version} on {Environment.OSVersion}", LogLevel.Info);
Console.Title = $"SMAPI {Constants.ApiVersion} - running Stardew Valley {Game1.version}"; Console.Title = $"SMAPI {Constants.ApiVersion} - running Stardew Valley {Game1.version}";
// read settings
{
string settingsPath = Constants.ApiConfigPath;
if (File.Exists(settingsPath))
{
string json = File.ReadAllText(settingsPath);
this.Settings = JsonConvert.DeserializeObject<UserSettings>(json);
}
else
this.Settings = new UserSettings();
File.WriteAllText(settingsPath, JsonConvert.SerializeObject(this.Settings, Formatting.Indented));
}
// inject compatibility shims // inject compatibility shims
#pragma warning disable 618 #pragma warning disable 618
Command.Shim(this.CommandManager, this.DeprecationManager, this.ModRegistry); Command.Shim(this.CommandManager, this.DeprecationManager, this.ModRegistry);
@ -341,20 +331,6 @@ namespace StardewModdingAPI
AssemblyLoader modAssemblyLoader = new AssemblyLoader(this.TargetPlatform, this.Monitor); AssemblyLoader modAssemblyLoader = new AssemblyLoader(this.TargetPlatform, this.Monitor);
AppDomain.CurrentDomain.AssemblyResolve += (sender, e) => modAssemblyLoader.ResolveAssembly(e.Name); AppDomain.CurrentDomain.AssemblyResolve += (sender, e) => modAssemblyLoader.ResolveAssembly(e.Name);
// get known incompatible mods
IDictionary<string, IncompatibleMod> incompatibleMods;
try
{
incompatibleMods = File.Exists(Constants.ApiModMetadataPath)
? JsonConvert.DeserializeObject<IncompatibleMod[]>(File.ReadAllText(Constants.ApiModMetadataPath)).ToDictionary(p => p.ID, p => p)
: new Dictionary<string, IncompatibleMod>(0);
}
catch (Exception ex)
{
incompatibleMods = new Dictionary<string, IncompatibleMod>();
this.Monitor.Log($"Couldn't read metadata file at {Constants.ApiModMetadataPath}. SMAPI will still run, but some features may be disabled.\n{ex}", LogLevel.Warn);
}
// load mod assemblies // load mod assemblies
int modsLoaded = 0; int modsLoaded = 0;
List<Action> deprecationWarnings = new List<Action>(); // queue up deprecation warnings to show after mod list List<Action> deprecationWarnings = new List<Action>(); // queue up deprecation warnings to show after mod list
@ -413,8 +389,10 @@ namespace StardewModdingAPI
} }
// validate known incompatible mods // validate known incompatible mods
IncompatibleMod compatibility; {
if (incompatibleMods.TryGetValue(!string.IsNullOrWhiteSpace(manifest.UniqueID) ? manifest.UniqueID : manifest.EntryDll, out compatibility)) string modKey = !string.IsNullOrWhiteSpace(manifest.UniqueID) ? manifest.UniqueID : manifest.EntryDll;
IncompatibleMod compatibility = this.Settings.IncompatibleMods.FirstOrDefault(p => p.ID == modKey);
if(compatibility != null)
{ {
if (!compatibility.IsCompatible(manifest.Version)) if (!compatibility.IsCompatible(manifest.Version))
{ {
@ -432,6 +410,7 @@ namespace StardewModdingAPI
continue; continue;
} }
} }
}
// validate SMAPI version // validate SMAPI version
if (!string.IsNullOrWhiteSpace(manifest.MinimumApiVersion)) if (!string.IsNullOrWhiteSpace(manifest.MinimumApiVersion))

View File

@ -1,4 +1,241 @@
{ /*
This file contains advanced configuration for SMAPI. You
generally shouldn't change this file unless necessary.
*/
{
"DeveloperMode": true, "DeveloperMode": true,
"CheckForUpdates": true "CheckForUpdates": true,
"IncompatibleMods": [
/* versions which crash the game */
{
"Name": "NPC Map Locations",
"ID": "NPCMapLocationsMod",
"LowerVersion": "1.42",
"UpperVersion": "1.43",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/239",
"ReasonPhrase": "this version has an update check error which crashes the game"
},
/* versions not compatible with Stardew Valley 1.1+ */
{
"Name": "Chest Label System",
"ID": "SPDChestLabel",
"UpperVersion": "1.5",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/242",
"UnofficialUpdateUrl": "http://community.playstarbound.com/threads/125031",
"ForceCompatibleVersion": "^1.5-EntoPatch"
},
/* versions not compatible with Stardew Valley 1.2+ */
{
"Name": "AccessChestAnywhere",
"ID": "AccessChestAnywhere",
"UpperVersion": "1.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/257",
"UnofficialUpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/518",
"Notes": "Crashes with 'Method not found: Void StardewValley.Item.set_Name(System.String)'."
},
{
"Name": "Almighty Tool",
"ID": "AlmightyTool.dll",
"UpperVersion": "1.1.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/439",
"Notes": "Uses obsolete StardewModdingAPI.Extensions."
},
{
"Name": "Better Sprinklers",
"ID": "SPDSprinklersMod",
"UpperVersion": "2.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/41",
"UnofficialUpdateUrl": "http://community.playstarbound.com/threads/125031",
"ForceCompatibleVersion": "^2.1-EntoPatch.7",
"Notes": "Uses obsolete StardewModdingAPI.Extensions."
},
{
"Name": "Casks Anywhere",
"ID": "CasksAnywhere",
"UpperVersion": "1.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/878",
"Notes": "Uses obsolete StardewModdingAPI.Inheritance.ItemStackChange."
},
{
"Name": "Chests Anywhere",
"ID": "ChestsAnywhere",
"UpperVersion": "1.8.2",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/518",
"Notes": "Crashes with 'Method not found: Void StardewValley.Menus.TextBox.set_Highlighted(Boolean)'."
},
{
"Name": "Chests Anywhere",
"ID": "Pathoschild.ChestsAnywhere",
"UpperVersion": "1.9-beta",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/518",
"Notes": "ID changed in 1.9. Crashes with InvalidOperationException: 'The menu doesn't seem to have a player inventory'."
},
{
"Name": "CJB Automation",
"ID": "CJBAutomation",
"UpperVersion": "1.4",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/211",
"Notes": "Crashes with 'Method not found: Void StardewValley.Item.set_Name(System.String)'."
},
{
"Name": "CJB Cheats Menu",
"ID": "CJBCheatsMenu",
"UpperVersion": "1.13",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/4",
"Notes": "Uses removed Game1.borderFont."
},
{
"Name": "CJB Item Spawner",
"ID": "CJBItemSpawner",
"UpperVersion": "1.6",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/93",
"Notes": "Uses removed Game1.borderFont."
},
{
"Name": "Cooking Skill",
"ID": "CookingSkill",
"UpperVersion": "1.0.3",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/522",
"Notes": "Crashes with 'Method not found: Void StardewValley.Buff..ctor(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, System.String)'."
},
{
"Name": "Enemy Health Bars",
"ID": "SPDHealthBar",
"UpperVersion": "1.7",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/193",
"Notes": "Uses obsolete GraphicsEvents.DrawTick."
},
{
"Name": "Entoarox Framework",
"ID": "eacdb74b-4080-4452-b16b-93773cda5cf9",
"UpperVersion": "1.6.5",
"UpdateUrl": "http://community.playstarbound.com/resources/4228",
"Notes": "Uses obsolete StardewModdingAPI.Inheritance.SObject until 1.6.1; then crashes until 1.6.4 ('Entoarox Framework requested an immediate game shutdown: Fatal error attempting to update player tick properties System.NullReferenceException: Object reference not set to an instance of an object. at Entoarox.Framework.PlayerHelper.Update(Object s, EventArgs e)')."
},
{
"Name": "Extended Fridge",
"ID": "Mystra007ExtendedFridge",
"UpperVersion": "1.0",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/485",
"Notes": "Actual upper version is 0.94, but mod incorrectly sets it to 1.0 in the manifest. Crashes with 'Field not found: StardewValley.Game1.mouseCursorTransparency'."
},
{
"Name": "Get Dressed",
"ID": "GetDressed.dll",
"UpperVersion": "3.2",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/331",
"Notes": "Crashes with NullReferenceException in GameEvents.UpdateTick."
},
{
"Name": "Lookup Anything",
"ID": "LookupAnything",
"UpperVersion": "1.10",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/541",
"Notes": "Crashes with FormatException when looking up NPCs."
},
{
"Name": "Lookup Anything",
"ID": "Pathoschild.LookupAnything",
"UpperVersion": "1.10.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/541",
"Notes": "ID changed in 1.10.1. Crashes with FormatException when looking up NPCs."
},
{
"Name": "Makeshift Multiplayer",
"ID": "StardewValleyMP",
"UpperVersion": "0.2.10",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/501",
"Notes": "Uses obsolete GraphicsEvents.OnPreRenderHudEventNoCheck."
},
{
"Name": "NoSoilDecay",
"ID": "289dee03-5f38-4d8e-8ffc-e440198e8610",
"UpperVersion": "0.5",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/237",
"Notes": "Uses Assembly.GetExecutingAssembly().Location."
},
{
"Name": "Point-and-Plant",
"ID": "PointAndPlant.dll",
"UpperVersion": "1.0.2",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/572",
"Notes": "Uses obsolete StardewModdingAPI.Extensions."
},
{
"Name": "Reusable Wallpapers",
"ID": "dae1b553-2e39-43e7-8400-c7c5c836134b",
"UpperVersion": "1.5",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/356",
"Notes": "Uses obsolete StardewModdingAPI.Inheritance.ItemStackChange."
},
{
"Name": "Save Anywhere",
"ID": "SaveAnywhere",
"UpperVersion": "2.0",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/444",
"Notes": "Depends on StarDustCore."
},
{
"Name": "StackSplitX",
"ID": "StackSplitX.dll",
"UpperVersion": "1.0",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/798",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "StarDustCore",
"ID": "StarDustCore",
"UpperVersion": "1.0",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/683",
"Notes": "Crashes with 'Method not found: Void StardewModdingAPI.Command.CallCommand(System.String)'."
},
{
"Name": "Teleporter",
"ID": "Teleporter",
"UpperVersion": "1.0.2",
"UpdateUrl": "http://community.playstarbound.com/resources/4374",
"Notes": "Crashes with 'InvalidOperationException: The StardewValley.Menus.MapPage object doesn't have a private 'points' instance field'."
},
{
"Name": "Zoryn's Better RNG",
"ID": "76b6d1e1-f7ba-4d72-8c32-5a1e6d2716f6",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "Zoryn's Calendar Anywhere",
"ID": "a41c01cd-0437-43eb-944f-78cb5a53002a",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "Zoryn's Health Bars",
"ID": "HealthBars.dll",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "Zoryn's Movement Mod",
"ID": "8a632929-8335-484f-87dd-c29d2ba3215d",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "Zoryn's Regen Mod",
"ID": "dfac4383-1b6b-4f33-ae4e-37fc23e5252e",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
}
]
} }

View File

@ -150,6 +150,7 @@
<Compile Include="Framework\Logging\ConsoleInterceptionManager.cs" /> <Compile Include="Framework\Logging\ConsoleInterceptionManager.cs" />
<Compile Include="Framework\Logging\InterceptingTextWriter.cs" /> <Compile Include="Framework\Logging\InterceptingTextWriter.cs" />
<Compile Include="Framework\CommandHelper.cs" /> <Compile Include="Framework\CommandHelper.cs" />
<Compile Include="Framework\Models\SConfig.cs" />
<Compile Include="Framework\Reflection\PrivateProperty.cs" /> <Compile Include="Framework\Reflection\PrivateProperty.cs" />
<Compile Include="Framework\RequestExitDelegate.cs" /> <Compile Include="Framework\RequestExitDelegate.cs" />
<Compile Include="Framework\Serialisation\JsonHelper.cs" /> <Compile Include="Framework\Serialisation\JsonHelper.cs" />
@ -182,7 +183,6 @@
<Compile Include="Framework\ModRegistry.cs" /> <Compile Include="Framework\ModRegistry.cs" />
<Compile Include="Framework\UpdateHelper.cs" /> <Compile Include="Framework\UpdateHelper.cs" />
<Compile Include="Framework\Models\GitRelease.cs" /> <Compile Include="Framework\Models\GitRelease.cs" />
<Compile Include="Framework\Models\UserSettings.cs" />
<Compile Include="IMonitor.cs" /> <Compile Include="IMonitor.cs" />
<Compile Include="Events\ChangeType.cs" /> <Compile Include="Events\ChangeType.cs" />
<Compile Include="Events\ItemStackChange.cs" /> <Compile Include="Events\ItemStackChange.cs" />
@ -209,9 +209,6 @@
<Content Include="StardewModdingAPI.config.json"> <Content Include="StardewModdingAPI.config.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content> </Content>
<Content Include="StardewModdingAPI.data.json">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<None Include="unix-launcher.sh"> <None Include="unix-launcher.sh">
<CopyToOutputDirectory>Always</CopyToOutputDirectory> <CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None> </None>
@ -255,7 +252,6 @@
<Target Name="AfterBuild" Condition="$(Configuration) == 'Debug'"> <Target Name="AfterBuild" Condition="$(Configuration) == 'Debug'">
<Copy SourceFiles="$(TargetDir)\$(TargetName).exe" DestinationFolder="$(GamePath)" /> <Copy SourceFiles="$(TargetDir)\$(TargetName).exe" DestinationFolder="$(GamePath)" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).config.json" DestinationFolder="$(GamePath)" /> <Copy SourceFiles="$(TargetDir)\$(TargetName).config.json" DestinationFolder="$(GamePath)" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).data.json" DestinationFolder="$(GamePath)" />
<Copy SourceFiles="$(TargetDir)\StardewModdingAPI.AssemblyRewriters.dll" DestinationFolder="$(GamePath)" /> <Copy SourceFiles="$(TargetDir)\StardewModdingAPI.AssemblyRewriters.dll" DestinationFolder="$(GamePath)" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).exe.mdb" DestinationFolder="$(GamePath)" Condition="$(OS) != 'Windows_NT'" /> <Copy SourceFiles="$(TargetDir)\$(TargetName).exe.mdb" DestinationFolder="$(GamePath)" Condition="$(OS) != 'Windows_NT'" />
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)" Condition="$(OS) == 'Windows_NT'" /> <Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)" Condition="$(OS) == 'Windows_NT'" />

View File

@ -1,236 +0,0 @@
/*
This file contains advanced metadata for SMAPI. You shouldn't change this file.
*/
[
/* versions which crash the game */
{
"Name": "NPC Map Locations",
"ID": "NPCMapLocationsMod",
"LowerVersion": "1.42",
"UpperVersion": "1.43",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/239",
"ReasonPhrase": "this version has an update check error which crashes the game"
},
/* versions not compatible with Stardew Valley 1.1+ */
{
"Name": "Chest Label System",
"ID": "SPDChestLabel",
"UpperVersion": "1.5",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/242",
"UnofficialUpdateUrl": "http://community.playstarbound.com/threads/125031",
"ForceCompatibleVersion": "^1.5-EntoPatch"
},
/* versions not compatible with Stardew Valley 1.2+ */
{
"Name": "AccessChestAnywhere",
"ID": "AccessChestAnywhere",
"UpperVersion": "1.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/257",
"UnofficialUpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/518",
"Notes": "Crashes with 'Method not found: Void StardewValley.Item.set_Name(System.String)'."
},
{
"Name": "Almighty Tool",
"ID": "AlmightyTool.dll",
"UpperVersion": "1.1.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/439",
"Notes": "Uses obsolete StardewModdingAPI.Extensions."
},
{
"Name": "Better Sprinklers",
"ID": "SPDSprinklersMod",
"UpperVersion": "2.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/41",
"UnofficialUpdateUrl": "http://community.playstarbound.com/threads/125031",
"ForceCompatibleVersion": "^2.1-EntoPatch.7",
"Notes": "Uses obsolete StardewModdingAPI.Extensions."
},
{
"Name": "Casks Anywhere",
"ID": "CasksAnywhere",
"UpperVersion": "1.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/878",
"Notes": "Uses obsolete StardewModdingAPI.Inheritance.ItemStackChange."
},
{
"Name": "Chests Anywhere",
"ID": "ChestsAnywhere",
"UpperVersion": "1.8.2",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/518",
"Notes": "Crashes with 'Method not found: Void StardewValley.Menus.TextBox.set_Highlighted(Boolean)'."
},
{
"Name": "Chests Anywhere",
"ID": "Pathoschild.ChestsAnywhere",
"UpperVersion": "1.9-beta",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/518",
"Notes": "ID changed in 1.9. Crashes with InvalidOperationException: 'The menu doesn't seem to have a player inventory'."
},
{
"Name": "CJB Automation",
"ID": "CJBAutomation",
"UpperVersion": "1.4",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/211",
"Notes": "Crashes with 'Method not found: Void StardewValley.Item.set_Name(System.String)'."
},
{
"Name": "CJB Cheats Menu",
"ID": "CJBCheatsMenu",
"UpperVersion": "1.13",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/4",
"Notes": "Uses removed Game1.borderFont."
},
{
"Name": "CJB Item Spawner",
"ID": "CJBItemSpawner",
"UpperVersion": "1.6",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/93",
"Notes": "Uses removed Game1.borderFont."
},
{
"Name": "Cooking Skill",
"ID": "CookingSkill",
"UpperVersion": "1.0.3",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/522",
"Notes": "Crashes with 'Method not found: Void StardewValley.Buff..ctor(Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, Int32, System.String)'."
},
{
"Name": "Enemy Health Bars",
"ID": "SPDHealthBar",
"UpperVersion": "1.7",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/193",
"Notes": "Uses obsolete GraphicsEvents.DrawTick."
},
{
"Name": "Entoarox Framework",
"ID": "eacdb74b-4080-4452-b16b-93773cda5cf9",
"UpperVersion": "1.6.5",
"UpdateUrl": "http://community.playstarbound.com/resources/4228",
"Notes": "Uses obsolete StardewModdingAPI.Inheritance.SObject until 1.6.1; then crashes until 1.6.4 ('Entoarox Framework requested an immediate game shutdown: Fatal error attempting to update player tick properties System.NullReferenceException: Object reference not set to an instance of an object. at Entoarox.Framework.PlayerHelper.Update(Object s, EventArgs e)')."
},
{
"Name": "Extended Fridge",
"ID": "Mystra007ExtendedFridge",
"UpperVersion": "1.0",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/485",
"Notes": "Actual upper version is 0.94, but mod incorrectly sets it to 1.0 in the manifest. Crashes with 'Field not found: StardewValley.Game1.mouseCursorTransparency'."
},
{
"Name": "Get Dressed",
"ID": "GetDressed.dll",
"UpperVersion": "3.2",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/331",
"Notes": "Crashes with NullReferenceException in GameEvents.UpdateTick."
},
{
"Name": "Lookup Anything",
"ID": "LookupAnything",
"UpperVersion": "1.10",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/541",
"Notes": "Crashes with FormatException when looking up NPCs."
},
{
"Name": "Lookup Anything",
"ID": "Pathoschild.LookupAnything",
"UpperVersion": "1.10.1",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/541",
"Notes": "ID changed in 1.10.1. Crashes with FormatException when looking up NPCs."
},
{
"Name": "Makeshift Multiplayer",
"ID": "StardewValleyMP",
"UpperVersion": "0.2.10",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/501",
"Notes": "Uses obsolete GraphicsEvents.OnPreRenderHudEventNoCheck."
},
{
"Name": "NoSoilDecay",
"ID": "289dee03-5f38-4d8e-8ffc-e440198e8610",
"UpperVersion": "0.5",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/237",
"Notes": "Uses Assembly.GetExecutingAssembly().Location."
},
{
"Name": "Point-and-Plant",
"ID": "PointAndPlant.dll",
"UpperVersion": "1.0.2",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/572",
"Notes": "Uses obsolete StardewModdingAPI.Extensions."
},
{
"Name": "Reusable Wallpapers",
"ID": "dae1b553-2e39-43e7-8400-c7c5c836134b",
"UpperVersion": "1.5",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/356",
"Notes": "Uses obsolete StardewModdingAPI.Inheritance.ItemStackChange."
},
{
"Name": "Save Anywhere",
"ID": "SaveAnywhere",
"UpperVersion": "2.0",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/444",
"Notes": "Depends on StarDustCore."
},
{
"Name": "StackSplitX",
"ID": "StackSplitX.dll",
"UpperVersion": "1.0",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/798",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "StarDustCore",
"ID": "StarDustCore",
"UpperVersion": "1.0",
"UpdateUrl": "http://www.nexusmods.com/stardewvalley/mods/683",
"Notes": "Crashes with 'Method not found: Void StardewModdingAPI.Command.CallCommand(System.String)'."
},
{
"Name": "Teleporter",
"ID": "Teleporter",
"UpperVersion": "1.0.2",
"UpdateUrl": "http://community.playstarbound.com/resources/4374",
"Notes": "Crashes with 'InvalidOperationException: The StardewValley.Menus.MapPage object doesn't have a private 'points' instance field'."
},
{
"Name": "Zoryn's Better RNG",
"ID": "76b6d1e1-f7ba-4d72-8c32-5a1e6d2716f6",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "Zoryn's Calendar Anywhere",
"ID": "a41c01cd-0437-43eb-944f-78cb5a53002a",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "Zoryn's Health Bars",
"ID": "HealthBars.dll",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "Zoryn's Movement Mod",
"ID": "8a632929-8335-484f-87dd-c29d2ba3215d",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
},
{
"Name": "Zoryn's Regen Mod",
"ID": "dfac4383-1b6b-4f33-ae4e-37fc23e5252e",
"UpperVersion": "1.5",
"UpdateUrl": "http://community.playstarbound.com/threads/108756",
"Notes": "Uses SMAPI's internal SGame class."
}
]

View File

@ -28,7 +28,6 @@
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.exe.mdb" DestinationFolder="$(PackageInternalPath)\Mono" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.exe.mdb" DestinationFolder="$(PackageInternalPath)\Mono" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.AssemblyRewriters.dll" DestinationFolder="$(PackageInternalPath)\Mono" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.AssemblyRewriters.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.config.json" DestinationFolder="$(PackageInternalPath)\Mono" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.config.json" DestinationFolder="$(PackageInternalPath)\Mono" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.data.json" DestinationFolder="$(PackageInternalPath)\Mono" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Numerics.dll" DestinationFolder="$(PackageInternalPath)\Mono" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Numerics.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Runtime.Caching.dll" DestinationFolder="$(PackageInternalPath)\Mono" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\System.Runtime.Caching.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
<Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\unix-launcher.sh" DestinationFiles="$(PackageInternalPath)\Mono\StardewModdingAPI" /> <Copy Condition="$(OS) != 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\unix-launcher.sh" DestinationFiles="$(PackageInternalPath)\Mono\StardewModdingAPI" />
@ -43,7 +42,6 @@
<Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.xml" DestinationFolder="$(PackageInternalPath)\Windows" /> <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.xml" DestinationFolder="$(PackageInternalPath)\Windows" />
<Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.AssemblyRewriters.dll" DestinationFolder="$(PackageInternalPath)\Windows" /> <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.AssemblyRewriters.dll" DestinationFolder="$(PackageInternalPath)\Windows" />
<Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.config.json" DestinationFolder="$(PackageInternalPath)\Windows" /> <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.config.json" DestinationFolder="$(PackageInternalPath)\Windows" />
<Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\StardewModdingAPI.data.json" DestinationFolder="$(PackageInternalPath)\Windows" />
<Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\steam_appid.txt" DestinationFolder="$(PackageInternalPath)\Windows" /> <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="$(CompiledSmapiPath)\steam_appid.txt" DestinationFolder="$(PackageInternalPath)\Windows" />
<Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="@(CompiledMods)" DestinationFolder="$(PackageInternalPath)\Windows\Mods\%(RecursiveDir)" /> <Copy Condition="$(OS) == 'Windows_NT'" SourceFiles="@(CompiledMods)" DestinationFolder="$(PackageInternalPath)\Windows\Mods\%(RecursiveDir)" />
</Target> </Target>