merge config files
This commit is contained in:
parent
96c7010c1b
commit
6a18dd6fad
|
@ -85,7 +85,6 @@ folder containing `src`).
|
|||
StardewModdingAPI
|
||||
StardewModdingAPI.AssemblyRewriters.dll
|
||||
StardewModdingAPI.config.json
|
||||
StardewModdingAPI.data.json
|
||||
StardewModdingAPI.exe
|
||||
StardewModdingAPI.exe.mdb
|
||||
steam_appid.txt
|
||||
|
@ -97,7 +96,6 @@ folder containing `src`).
|
|||
Newtonsoft.Json.dll
|
||||
StardewModdingAPI.AssemblyRewriters.dll
|
||||
StardewModdingAPI.config.json
|
||||
StardewModdingAPI.data.json
|
||||
StardewModdingAPI.exe
|
||||
StardewModdingAPI.pdb
|
||||
StardewModdingAPI.xml
|
||||
|
|
|
@ -62,9 +62,6 @@ namespace StardewModdingAPI
|
|||
/// <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");
|
||||
|
||||
/// <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>
|
||||
internal static string LogPath => Path.Combine(Constants.LogDir, "SMAPI-latest.txt");
|
||||
|
||||
|
|
|
@ -1,15 +1,18 @@
|
|||
namespace StardewModdingAPI.Framework.Models
|
||||
{
|
||||
/// <summary>Contains user settings from SMAPI's JSON configuration file.</summary>
|
||||
internal class UserSettings
|
||||
/// <summary>The SMAPI configuration settings.</summary>
|
||||
internal class SConfig
|
||||
{
|
||||
/*********
|
||||
/********
|
||||
** Accessors
|
||||
*********/
|
||||
********/
|
||||
/// <summary>Whether to enable development features.</summary>
|
||||
public bool DeveloperMode { get; set; }
|
||||
|
||||
/// <summary>Whether to check if a newer version of SMAPI is available on startup.</summary>
|
||||
public bool CheckForUpdates { get; set; } = true;
|
||||
|
||||
/// <summary>A list of mod versions which should be considered incompatible.</summary>
|
||||
public IncompatibleMod[] IncompatibleMods { get; set; }
|
||||
}
|
||||
}
|
|
@ -47,8 +47,8 @@ namespace StardewModdingAPI
|
|||
/// <summary>The core logger for SMAPI.</summary>
|
||||
private readonly Monitor Monitor;
|
||||
|
||||
/// <summary>The user settings for SMAPI.</summary>
|
||||
private UserSettings Settings;
|
||||
/// <summary>The SMAPI configuration settings.</summary>
|
||||
private readonly SConfig Settings;
|
||||
|
||||
/// <summary>Tracks whether the game should exit immediately and any pending initialisation should be cancelled.</summary>
|
||||
private readonly CancellationTokenSource CancellationTokenSource = new CancellationTokenSource();
|
||||
|
@ -87,6 +87,10 @@ namespace StardewModdingAPI
|
|||
/// <summary>Construct an instance.</summary>
|
||||
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.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);
|
||||
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
|
||||
#pragma warning disable 618
|
||||
Command.Shim(this.CommandManager, this.DeprecationManager, this.ModRegistry);
|
||||
|
@ -341,20 +331,6 @@ namespace StardewModdingAPI
|
|||
AssemblyLoader modAssemblyLoader = new AssemblyLoader(this.TargetPlatform, this.Monitor);
|
||||
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
|
||||
int modsLoaded = 0;
|
||||
List<Action> deprecationWarnings = new List<Action>(); // queue up deprecation warnings to show after mod list
|
||||
|
@ -413,23 +389,26 @@ namespace StardewModdingAPI
|
|||
}
|
||||
|
||||
// validate known incompatible mods
|
||||
IncompatibleMod compatibility;
|
||||
if (incompatibleMods.TryGetValue(!string.IsNullOrWhiteSpace(manifest.UniqueID) ? manifest.UniqueID : manifest.EntryDll, out compatibility))
|
||||
{
|
||||
if (!compatibility.IsCompatible(manifest.Version))
|
||||
string modKey = !string.IsNullOrWhiteSpace(manifest.UniqueID) ? manifest.UniqueID : manifest.EntryDll;
|
||||
IncompatibleMod compatibility = this.Settings.IncompatibleMods.FirstOrDefault(p => p.ID == modKey);
|
||||
if(compatibility != null)
|
||||
{
|
||||
bool hasOfficialUrl = !string.IsNullOrWhiteSpace(compatibility.UpdateUrl);
|
||||
bool hasUnofficialUrl = !string.IsNullOrWhiteSpace(compatibility.UnofficialUpdateUrl);
|
||||
if (!compatibility.IsCompatible(manifest.Version))
|
||||
{
|
||||
bool hasOfficialUrl = !string.IsNullOrWhiteSpace(compatibility.UpdateUrl);
|
||||
bool hasUnofficialUrl = !string.IsNullOrWhiteSpace(compatibility.UnofficialUpdateUrl);
|
||||
|
||||
string reasonPhrase = compatibility.ReasonPhrase ?? "it isn't compatible with the latest version of the game";
|
||||
string warning = $"Skipped {compatibility.Name} because {reasonPhrase}. Please check for a version newer than {compatibility.UpperVersion} here:";
|
||||
if (hasOfficialUrl)
|
||||
warning += !hasUnofficialUrl ? $" {compatibility.UpdateUrl}" : $"{Environment.NewLine}- official mod: {compatibility.UpdateUrl}";
|
||||
if (hasUnofficialUrl)
|
||||
warning += $"{Environment.NewLine}- unofficial update: {compatibility.UnofficialUpdateUrl}";
|
||||
string reasonPhrase = compatibility.ReasonPhrase ?? "it isn't compatible with the latest version of the game";
|
||||
string warning = $"Skipped {compatibility.Name} because {reasonPhrase}. Please check for a version newer than {compatibility.UpperVersion} here:";
|
||||
if (hasOfficialUrl)
|
||||
warning += !hasUnofficialUrl ? $" {compatibility.UpdateUrl}" : $"{Environment.NewLine}- official mod: {compatibility.UpdateUrl}";
|
||||
if (hasUnofficialUrl)
|
||||
warning += $"{Environment.NewLine}- unofficial update: {compatibility.UnofficialUpdateUrl}";
|
||||
|
||||
this.Monitor.Log(warning, LogLevel.Error);
|
||||
continue;
|
||||
this.Monitor.Log(warning, LogLevel.Error);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,241 @@
|
|||
{
|
||||
/*
|
||||
|
||||
|
||||
This file contains advanced configuration for SMAPI. You
|
||||
generally shouldn't change this file unless necessary.
|
||||
|
||||
|
||||
*/
|
||||
{
|
||||
"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."
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -150,6 +150,7 @@
|
|||
<Compile Include="Framework\Logging\ConsoleInterceptionManager.cs" />
|
||||
<Compile Include="Framework\Logging\InterceptingTextWriter.cs" />
|
||||
<Compile Include="Framework\CommandHelper.cs" />
|
||||
<Compile Include="Framework\Models\SConfig.cs" />
|
||||
<Compile Include="Framework\Reflection\PrivateProperty.cs" />
|
||||
<Compile Include="Framework\RequestExitDelegate.cs" />
|
||||
<Compile Include="Framework\Serialisation\JsonHelper.cs" />
|
||||
|
@ -182,7 +183,6 @@
|
|||
<Compile Include="Framework\ModRegistry.cs" />
|
||||
<Compile Include="Framework\UpdateHelper.cs" />
|
||||
<Compile Include="Framework\Models\GitRelease.cs" />
|
||||
<Compile Include="Framework\Models\UserSettings.cs" />
|
||||
<Compile Include="IMonitor.cs" />
|
||||
<Compile Include="Events\ChangeType.cs" />
|
||||
<Compile Include="Events\ItemStackChange.cs" />
|
||||
|
@ -209,9 +209,6 @@
|
|||
<Content Include="StardewModdingAPI.config.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="StardewModdingAPI.data.json">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<None Include="unix-launcher.sh">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</None>
|
||||
|
@ -255,7 +252,6 @@
|
|||
<Target Name="AfterBuild" Condition="$(Configuration) == 'Debug'">
|
||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).exe" 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)\$(TargetName).exe.mdb" DestinationFolder="$(GamePath)" Condition="$(OS) != 'Windows_NT'" />
|
||||
<Copy SourceFiles="$(TargetDir)\$(TargetName).pdb" DestinationFolder="$(GamePath)" Condition="$(OS) == 'Windows_NT'" />
|
||||
|
|
|
@ -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."
|
||||
}
|
||||
]
|
|
@ -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.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.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.Runtime.Caching.dll" DestinationFolder="$(PackageInternalPath)\Mono" />
|
||||
<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.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.data.json" 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)" />
|
||||
</Target>
|
||||
|
|
Loading…
Reference in New Issue