summaryrefslogtreecommitdiff
path: root/src/SMAPI.Web/wwwroot
diff options
context:
space:
mode:
Diffstat (limited to 'src/SMAPI.Web/wwwroot')
-rw-r--r--src/SMAPI.Web/wwwroot/Content/css/index.css59
-rw-r--r--src/SMAPI.Web/wwwroot/Content/css/log-parser.css121
-rw-r--r--src/SMAPI.Web/wwwroot/Content/css/main.css38
-rw-r--r--src/SMAPI.Web/wwwroot/Content/images/direct-download-icon.pngbin0 -> 250 bytes
-rw-r--r--src/SMAPI.Web/wwwroot/Content/images/nexus-icon.pngbin0 -> 927 bytes
-rw-r--r--src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.pngbin0 -> 1099 bytes
-rw-r--r--src/SMAPI.Web/wwwroot/Content/images/pufferchick.pngbin0 -> 831 bytes
-rw-r--r--src/SMAPI.Web/wwwroot/Content/js/index.js34
-rw-r--r--src/SMAPI.Web/wwwroot/Content/js/log-parser.js136
-rw-r--r--src/SMAPI.Web/wwwroot/StardewModdingAPI.metadata.json1676
10 files changed, 1885 insertions, 179 deletions
diff --git a/src/SMAPI.Web/wwwroot/Content/css/index.css b/src/SMAPI.Web/wwwroot/Content/css/index.css
index 06cd6fb4..514e1a5c 100644
--- a/src/SMAPI.Web/wwwroot/Content/css/index.css
+++ b/src/SMAPI.Web/wwwroot/Content/css/index.css
@@ -18,7 +18,8 @@ h1 {
text-align: center;
}
-#call-to-action a {
+#call-to-action a.main-cta,
+#call-to-action a.secondary-cta {
box-shadow: #caefab 0 1px 0 0 inset;
background: linear-gradient(#77d42a 5%, #5cb811 100%) #77d42a;
border-radius: 6px;
@@ -40,6 +41,58 @@ h1 {
text-shadow: #2b665e 0 1px 0;
}
+.cta-dropdown {
+ position: relative;
+ display: inline-block;
+ margin-bottom: 1em;
+}
+
+.cta-dropdown a.download {
+ margin-bottom: 0 !important;
+}
+
+.cta-dropdown .dropdown-content {
+ display: none;
+ position: absolute;
+ text-align: left;
+ box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2);
+ border: 1px solid #566963;
+ background: #5cb811;
+ border-top: 0;
+ border-radius: 0 0 6px 6px;
+ margin-top: -6px;
+ z-index: 1;
+}
+
+.cta-dropdown .dropdown-content a:hover {
+ background-color: #ddd;
+}
+
+.cta-dropdown .dropdown-content img {
+ width: 0.85em;
+ height: 0.85em;
+}
+
+.cta-dropdown.secondary-cta-dropdown .dropdown-content a:hover {
+ background-color: #566963;
+}
+
+.cta-dropdown.secondary-cta-dropdown .dropdown-content {
+ background-color: #768d87;
+ border-color: #566963;
+}
+
+.cta-dropdown.secondary-cta-dropdown .dropdown-content a {
+ color: #fff;
+ text-shadow: #2b665e 0 1px 0;
+}
+
+.cta-dropdown .dropdown-content a {
+ padding: 0.75em 1em;
+ text-decoration: none;
+ display: block;
+}
+
/*********
** Subsections
*********/
@@ -48,10 +101,6 @@ h1 {
padding-left: 1em;
}
-.github-description .noinclude {
- display: none;
-}
-
#support-links li small {
display: block;
width: 50em;
diff --git a/src/SMAPI.Web/wwwroot/Content/css/log-parser.css b/src/SMAPI.Web/wwwroot/Content/css/log-parser.css
index 789274e2..1fcd1bff 100644
--- a/src/SMAPI.Web/wwwroot/Content/css/log-parser.css
+++ b/src/SMAPI.Web/wwwroot/Content/css/log-parser.css
@@ -1,12 +1,8 @@
/*********
** Main layout
*********/
-input[type="button"] {
- font-size: 20px;
- border-radius: 5px;
- outline: none;
- box-shadow: inset 0 0 1px 1px rgba(0, 0, 0, .2);
- cursor: pointer;
+#content {
+ max-width: 100%;
}
caption {
@@ -20,15 +16,6 @@ caption {
font-family: monospace;
}
-input#upload-button {
- background: #ccf;
- border: 1px solid #000088;
-}
-
-input#upload-button {
- background: #eef;
-}
-
table caption {
font-weight: bold;
}
@@ -39,6 +26,7 @@ table caption {
.banner {
border: 2px solid gray;
border-radius: 5px;
+ margin-top: 1em;
padding: 1em;
}
@@ -91,6 +79,10 @@ table#metadata, table#mods {
cursor: pointer;
}
+#mods.filters-disabled tr {
+ cursor: default;
+}
+
#metadata tr,
#mods tr {
background: #eee
@@ -200,6 +192,12 @@ table#metadata, table#mods {
color: #f00;
}
+#log .critical {
+ background-color: #c00;
+ color: #fff;
+ font-weight: bold;
+}
+
#log {
border-spacing: 0;
}
@@ -256,88 +254,19 @@ table#metadata, table#mods {
/*********
-** Upload popup
+** Upload form
*********/
-#upload-area .popup,
-#upload-area #uploader {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background-color: rgba(0, 0, 0, .33);
- z-index: 2;
- display: none;
- padding: 5px;
-}
-
-#upload-area #uploader:after {
- content: attr(data-text);
- display: block;
- width: 100px;
- height: 24px;
- line-height: 25px;
- border: 1px solid #000;
- background: #fff;
- position: absolute;
- top: 50%;
- left: 50%;
- margin: -12px -50px 0 0;
- font-size: 18px;
- font-weight: bold;
- text-align: center;
- border-radius: 5px;
-}
-
-#upload-area .popup h1 {
- position: absolute;
- top: 10%;
- left: 50%;
- margin-left: -150px;
- text-align: center;
- width: 300px;
- border: 1px solid #008;
- border-radius: 5px;
- background: #fff;
- font-family: sans-serif;
- font-size: 40px;
- margin-top: -25px;
- z-index: 10;
- border-bottom: 0;
+#os-list {
+ list-style: none;
}
-#upload-area .frame {
- margin: auto;
- margin-top: 25px;
- padding: 2em;
- position: absolute;
- top: 10%;
- left: 10%;
- right: 10%;
- bottom: 10%;
- padding-bottom: 30px;
- background: #FFF;
- border-radius: 5px;
- border: 1px solid #008;
-}
-
-#upload-area #cancel {
- border: 1px solid #880000;
- background-color: #fcc;
-}
-
-#upload-area #submit {
- border: 1px solid #008800;
- background-color: #cfc;
-}
-
-#upload-area #submit:hover {
- background-color: #efe;
+div[data-os] {
+ display: none;
}
-#upload-area #input {
+#input {
width: 100%;
- height: 30em;
+ height: 20em;
max-height: 70%;
margin: auto;
box-sizing: border-box;
@@ -346,3 +275,13 @@ table#metadata, table#mods {
outline: none;
box-shadow: inset 0px 0px 1px 1px rgba(0, 0, 192, .2);
}
+
+#submit {
+ font-size: 1.5em;
+ border-radius: 5px;
+ outline: none;
+ box-shadow: inset 0 0 1px 1px rgba(0, 0, 0, .2);
+ cursor: pointer;
+ border: 1px solid #008800;
+ background-color: #cfc;
+}
diff --git a/src/SMAPI.Web/wwwroot/Content/css/main.css b/src/SMAPI.Web/wwwroot/Content/css/main.css
index d1fa49e0..57eeee88 100644
--- a/src/SMAPI.Web/wwwroot/Content/css/main.css
+++ b/src/SMAPI.Web/wwwroot/Content/css/main.css
@@ -28,7 +28,8 @@ h2 {
h3 {
font-size: 1.2em;
border-bottom: 1px solid #AAA;
- width: 50%;
+ width: 55em;
+ max-width: 100%;
}
a {
@@ -44,6 +45,8 @@ a {
#content {
min-height: 140px;
+ width: calc(100% - 2em);
+ max-width: 60em;
padding: 0 1em 1em 1em;
border-left: 1px solid #CCC;
background: #FFF;
@@ -51,7 +54,7 @@ a {
}
#content p {
- max-width: 55em;
+ max-width: 100%;
}
.section {
@@ -105,3 +108,34 @@ a {
#footer a {
color: #669;
}
+
+/* mobile fixes */
+@media (min-width: 1020px) and (max-width: 1199px) {
+ #sidebar {
+ width: 7em;
+ background: none;
+ }
+
+ #content-column {
+ left: 7em;
+ }
+}
+
+@media (max-width: 1019px) {
+ h1 {
+ margin-top: 0;
+ }
+
+ #sidebar {
+ margin-top: 0;
+ width: auto;
+ min-height: 0;
+ background: none;
+ }
+
+ #content-column {
+ position: inherit;
+ top: inherit;
+ left: inherit;
+ }
+}
diff --git a/src/SMAPI.Web/wwwroot/Content/images/direct-download-icon.png b/src/SMAPI.Web/wwwroot/Content/images/direct-download-icon.png
new file mode 100644
index 00000000..6c30ca36
--- /dev/null
+++ b/src/SMAPI.Web/wwwroot/Content/images/direct-download-icon.png
Binary files differ
diff --git a/src/SMAPI.Web/wwwroot/Content/images/nexus-icon.png b/src/SMAPI.Web/wwwroot/Content/images/nexus-icon.png
new file mode 100644
index 00000000..10c66712
--- /dev/null
+++ b/src/SMAPI.Web/wwwroot/Content/images/nexus-icon.png
Binary files differ
diff --git a/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.png b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.png
new file mode 100644
index 00000000..f359146c
--- /dev/null
+++ b/src/SMAPI.Web/wwwroot/Content/images/pufferchick-cool.png
Binary files differ
diff --git a/src/SMAPI.Web/wwwroot/Content/images/pufferchick.png b/src/SMAPI.Web/wwwroot/Content/images/pufferchick.png
new file mode 100644
index 00000000..1de9cf47
--- /dev/null
+++ b/src/SMAPI.Web/wwwroot/Content/images/pufferchick.png
Binary files differ
diff --git a/src/SMAPI.Web/wwwroot/Content/js/index.js b/src/SMAPI.Web/wwwroot/Content/js/index.js
new file mode 100644
index 00000000..d0734b02
--- /dev/null
+++ b/src/SMAPI.Web/wwwroot/Content/js/index.js
@@ -0,0 +1,34 @@
+$(document).ready(function () {
+ /* enable pufferchick */
+ var pufferchick = $("#pufferchick");
+ $(".cta-dropdown").hover(
+ function () {
+ pufferchick.attr("src", "Content/images/pufferchick-cool.png");
+ },
+ function () {
+ pufferchick.attr("src", "Content/images/pufferchick.png");
+ }
+ );
+
+ /* enable download dropdowns */
+ $(".cta-dropdown a.download").each(function(i, button) {
+ button = $(button);
+ var wrapper = button.parent(".cta-dropdown");
+ var button = wrapper.find(".download");
+ var dropdownContent = wrapper.find(".dropdown-content");
+
+ $(window).on("click", function(e) {
+ var target = $(e.target);
+
+ // toggle dropdown on button click
+ if (target.is(button) || $.contains(button.get(0), target.get(0))) {
+ e.preventDefault();
+ dropdownContent.toggle();
+ }
+
+ // else hide dropdown
+ else
+ dropdownContent.hide();
+ });
+ });
+});
diff --git a/src/SMAPI.Web/wwwroot/Content/js/log-parser.js b/src/SMAPI.Web/wwwroot/Content/js/log-parser.js
index c4a35e96..0c654205 100644
--- a/src/SMAPI.Web/wwwroot/Content/js/log-parser.js
+++ b/src/SMAPI.Web/wwwroot/Content/js/log-parser.js
@@ -39,11 +39,17 @@ smapi.logParser = function (data, sectionUrl) {
}
},
methods: {
- toggleLevel: function(id) {
+ toggleLevel: function (id) {
+ if (!data.enableFilters)
+ return;
+
this.showLevels[id] = !this.showLevels[id];
},
toggleMod: function (id) {
+ if (!data.enableFilters)
+ return;
+
var curShown = this.showMods[id];
// first filter: only show this by default
@@ -64,6 +70,9 @@ smapi.logParser = function (data, sectionUrl) {
},
showAllMods: function () {
+ if (!data.enableFilters)
+ return;
+
for (var key in this.showMods) {
if (this.showMods.hasOwnProperty(key)) {
this.showMods[key] = true;
@@ -73,6 +82,9 @@ smapi.logParser = function (data, sectionUrl) {
},
hideAllMods: function () {
+ if (!data.enableFilters)
+ return;
+
for (var key in this.showMods) {
if (this.showMods.hasOwnProperty(key)) {
this.showMods[key] = false;
@@ -90,88 +102,50 @@ smapi.logParser = function (data, sectionUrl) {
/**********
** Upload form
*********/
- var error = $("#error");
-
- $("#upload-button").on("click", function(e) {
- e.preventDefault();
-
- $("#input").val("");
- $("#popup-upload").fadeIn();
- });
-
- var closeUploadPopUp = function() {
- $("#popup-upload").fadeOut(400);
- };
-
- $("#popup-upload").on({
- 'dragover dragenter': function(e) {
- e.preventDefault();
- e.stopPropagation();
- },
- 'drop': function(e) {
- $("#uploader").attr("data-text", "Reading...");
- $("#uploader").show();
- var dataTransfer = e.originalEvent.dataTransfer;
- if (dataTransfer && dataTransfer.files.length) {
- e.preventDefault();
- e.stopPropagation();
- var file = dataTransfer.files[0];
- var reader = new FileReader();
- reader.onload = $.proxy(function(file, $input, event) {
- $input.val(event.target.result);
- $("#uploader").fadeOut();
- $("#submit").click();
- }, this, file, $("#input"));
- reader.readAsText(file);
- }
- },
- 'click': function(e) {
- if (e.target.id === "popup-upload")
- closeUploadPopUp();
+ var input = $("#input");
+ if (input.length) {
+ // get elements
+ var systemOptions = $("input[name='os']");
+ var systemInstructions = $("div[data-os]");
+ var submit = $("#submit");
+
+ // instruction OS chooser
+ var chooseSystem = function() {
+ systemInstructions.hide();
+ systemInstructions.filter("[data-os='" + $("input[name='os']:checked").val() + "']").show();
}
- });
-
- $("#submit").on("click", function() {
- $("#popup-upload").fadeOut();
- var paste = $("#input").val();
- if (paste) {
- //memory = "";
- $("#uploader").attr("data-text", "Saving...");
- $("#uploader").fadeIn();
- $
- .ajax({
- type: "POST",
- url: sectionUrl + "/save",
- data: JSON.stringify(paste),
- contentType: "application/json" // sent to API
- })
- .fail(function(xhr, textStatus) {
- $("#uploader").fadeOut();
- error.html('<h1>Parsing failed!</h1>Parsing of the log failed, details follow.<br />&nbsp;<p>Stage: Upload</p>Error: ' + textStatus + ': ' + xhr.responseText + "<hr /><pre>" + $("#input").val() + "</pre>");
- })
- .then(function(data) {
- $("#uploader").fadeOut();
- if (!data.success)
- error.html('<h1>Parsing failed!</h1>Parsing of the log failed, details follow.<br />&nbsp;<p>Stage: Upload</p>Error: ' + data.error + "<hr /><pre>" + $("#input").val() + "</pre>");
- else
- location.href = (sectionUrl.replace(/\/$/, "") + "/" + data.id);
- });
- } else {
- alert("Unable to parse log, the input is empty!");
- $("#uploader").fadeOut();
+ systemOptions.on("click", chooseSystem);
+ chooseSystem();
+
+ // disable submit if it's empty
+ var toggleSubmit = function()
+ {
+ var hasText = !!input.val().trim();
+ submit.prop("disabled", !hasText);
}
- });
+ input.on("input", toggleSubmit);
+ toggleSubmit();
- $(document).on("keydown", function(e) {
- if (e.which === 27) {
- if ($("#popup-upload").css("display") !== "none" && $("#popup-upload").css("opacity") === 1) {
- closeUploadPopUp();
+ // drag & drop file
+ input.on({
+ 'dragover dragenter': function(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ },
+ 'drop': function(e) {
+ var dataTransfer = e.originalEvent.dataTransfer;
+ if (dataTransfer && dataTransfer.files.length) {
+ e.preventDefault();
+ e.stopPropagation();
+ var file = dataTransfer.files[0];
+ var reader = new FileReader();
+ reader.onload = $.proxy(function(file, $input, event) {
+ $input.val(event.target.result);
+ toggleSubmit();
+ }, this, file, $("#input"));
+ reader.readAsText(file);
+ }
}
- }
- });
- $("#cancel").on("click", closeUploadPopUp);
-
- if (data.showPopup)
- $("#popup-upload").fadeIn();
-
+ });
+ }
};
diff --git a/src/SMAPI.Web/wwwroot/StardewModdingAPI.metadata.json b/src/SMAPI.Web/wwwroot/StardewModdingAPI.metadata.json
new file mode 100644
index 00000000..e72efb39
--- /dev/null
+++ b/src/SMAPI.Web/wwwroot/StardewModdingAPI.metadata.json
@@ -0,0 +1,1676 @@
+{
+ /**
+ * Metadata about some SMAPI mods used in compatibility, update, and dependency checks. This
+ * field shouldn't be edited by players in most cases.
+ *
+ * Standard fields
+ * ===============
+ * The predefined fields are documented below (only 'ID' is required). Each entry's key is the
+ * default display name for the mod if one isn't available (e.g. in dependency checks).
+ *
+ * - ID: the mod's latest unique ID (if any).
+ *
+ * - FormerIDs: uniquely identifies the mod across multiple versions, and supports matching
+ * other fields if no ID was specified. This doesn't include the latest ID, if any. Multiple
+ * variants can be separated with '|'.
+ *
+ * - MapLocalVersions and MapRemoteVersions correct local manifest versions and remote versions
+ * during update checks. For example, if the API returns version '1.1-1078' where '1078' is
+ * intended to be a build number, MapRemoteVersions can map it to '1.1' when comparing to the
+ * mod's current version. This is only meant to support legacy mods with injected update keys.
+ *
+ * Versioned metadata
+ * ==================
+ * Each record can also specify extra metadata using the field keys below.
+ *
+ * Each key consists of a field name prefixed with any combination of version range and 'Default',
+ * separated by pipes (whitespace trimmed). For example, 'UpdateKey' will always override,
+ * 'Default | UpdateKey' will only override if the mod has no update keys, and
+ * '~1.1 | Default | Name' will do the same up to version 1.1.
+ *
+ * The version format is 'min~max' (where either side can be blank for unbounded), or a single
+ * version number.
+ *
+ * These are the valid field names:
+ *
+ * - UpdateKey: the update key to set in the mod's manifest. This is used to enable update
+ * checks for older mods that haven't been updated to use it yet.
+ *
+ * - Status: overrides compatibility checks. The possible values are Obsolete (SMAPI won't load
+ * it because the mod should no longer be used), AssumeBroken (SMAPI won't load it because
+ * the specified version isn't compatible), or AssumeCompatible (SMAPI will try to load it
+ * even if it detects incompatible code).
+ *
+ * Note that this shouldn't be set to 'AssumeBroken' if SMAPI can detect the incompatibility
+ * automatically, since that hides the details from trace logs.
+ *
+ * - StatusReasonPhrase: a message to show to the player explaining why the mod can't be loaded
+ * (if applicable). If blank, will default to a generic not-compatible message.
+ *
+ * - AlternativeUrl: a URL where the player can find an unofficial update or alternative if the
+ * mod is no longer compatible.
+ */
+ "ModData": {
+ "AccessChestAnywhere": {
+ "ID": "AccessChestAnywhere",
+ "MapLocalVersions": { "1.1-1078": "1.1" },
+ "Default | UpdateKey": "Nexus:257",
+ "~1.1 | Status": "AssumeBroken"
+ },
+
+ "Adjust Artisan Prices": {
+ "ID": "ThatNorthernMonkey.AdjustArtisanPrices",
+ "FormerIDs": "1e36d4ca-c7ef-4dfb-9927-d27a6c3c8bdc", // changed in 0.0.2-pathoschild-update
+ "MapRemoteVersions": { "0.01": "0.0.1" },
+ "Default | UpdateKey": "Chucklefish:3532"
+ },
+
+ "Adjust Monster": {
+ "ID": "mmanlapat.AdjustMonster",
+ "Default | UpdateKey": "Nexus:1161"
+ },
+
+ "Advanced Location Loader": {
+ "ID": "Entoarox.AdvancedLocationLoader",
+ "~1.3.7 | UpdateKey": "Chucklefish:3619" // only enable update checks up to 1.3.7 by request (has its own update-check feature)
+ },
+
+ "Adventure Shop Inventory": {
+ "ID": "HammurabiAdventureShopInventory",
+ "Default | UpdateKey": "Chucklefish:4608"
+ },
+
+ "AgingMod": {
+ "ID": "skn.AgingMod",
+ "Default | UpdateKey": "Nexus:1129",
+ "~1.0 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "All Crops All Seasons": {
+ "ID": "cantorsdust.AllCropsAllSeasons",
+ "FormerIDs": "29ee8246-d67b-4242-a340-35a9ae0d5dd7 | community.AllCropsAllSeasons", // changed in 1.3 and 1.5
+ "Default | UpdateKey": "Nexus:170"
+ },
+
+ "All Professions": {
+ "ID": "cantorsdust.AllProfessions",
+ "FormerIDs": "8c37b1a7-4bfb-4916-9d8a-9533e6363ea3 | community.AllProfessions", // changed in 1.2 and 1.3.1
+ "Default | UpdateKey": "Nexus:174"
+ },
+
+ "Almighty Farming Tool": {
+ "ID": "439",
+ "MapRemoteVersions": {
+ "1.21": "1.2.1",
+ "1.22-unofficial.3.mizzion": "1.2.2-unofficial.3.mizzion"
+ },
+ "Default | UpdateKey": "Nexus:439"
+ },
+
+ "Animal Husbandry": {
+ "ID": "DIGUS.ANIMALHUSBANDRYMOD",
+ "FormerIDs": "DIGUS.BUTCHER", // changed in 2.0.1
+ "Default | UpdateKey": "Nexus:1538"
+ },
+
+ "Animal Mood Fix": {
+ "ID": "GPeters-AnimalMoodFix",
+ "~ | Status": "Obsolete",
+ "~ | StatusReasonPhrase": "the animal mood bugs were fixed in Stardew Valley 1.2."
+ },
+
+ "Animal Sitter": {
+ "ID": "jwdred.AnimalSitter",
+ "Default | UpdateKey": "Nexus:581",
+ "~1.0.8 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Arcade Pong": {
+ "ID": "Platonymous.ArcadePong",
+ "~1.0.2 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.16 due to reflection into SMAPI internals
+ },
+
+ "A Tapper's Dream": {
+ "ID": "ddde5195-8f85-4061-90cc-0d4fd5459358",
+ "Default | UpdateKey": "Nexus:260"
+ },
+
+ "Auto Animal Doors": {
+ "ID": "AaronTaggart.AutoAnimalDoors",
+ "Default | UpdateKey": "Nexus:1019"
+ },
+
+ "Auto-Eat": {
+ "ID": "Permamiss.AutoEat",
+ "FormerIDs": "BALANCEMOD_AutoEat", // changed in 1.1.1
+ "Default | UpdateKey": "Nexus:643"
+ },
+
+ "AutoFish": {
+ "ID": "WhiteMind.AF",
+ "Default | UpdateKey": "Nexus:1895"
+ },
+
+ "AutoGate": {
+ "ID": "AutoGate",
+ "Default | UpdateKey": "Nexus:820"
+ },
+
+ "Automate": {
+ "ID": "Pathoschild.Automate",
+ "Default | UpdateKey": "Nexus:1063",
+ "~1.10-beta.7 | Status": "AssumeBroken" // broke in SDV 1.3.20
+ },
+
+ "Automated Doors": {
+ "ID": "azah.automated-doors",
+ "FormerIDs": "1abcfa07-2cf4-4dc3-a6e9-6068b642112b", // changed in 1.4.1
+ "Default | UpdateKey": "GitHub:azah/AutomatedDoors" // added in 1.4.2
+ },
+
+ "AutoSpeed": {
+ "ID": "Omegasis.AutoSpeed",
+ "Default | UpdateKey": "Nexus:443" // added in 1.4.1
+ },
+
+ "Basic Sprinklers Improved": {
+ "ID": "lrsk_sdvm_bsi.0117171308",
+ "MapRemoteVersions": { "1.0.2": "1.0.1-release" }, // manifest not updated
+ "Default | UpdateKey": "Nexus:833"
+ },
+
+ "Better Hay": {
+ "ID": "cat.betterhay",
+ "Default | UpdateKey": "Nexus:1430"
+ },
+
+ "Better Quality More Seasons": {
+ "ID": "SB_BQMS",
+ "Default | UpdateKey": "Nexus:935"
+ },
+
+ "Better Quarry": {
+ "ID": "BetterQuarry",
+ "Default | UpdateKey": "Nexus:771"
+ },
+
+ "Better Ranching": {
+ "ID": "BetterRanching",
+ "Default | UpdateKey": "Nexus:859"
+ },
+
+ "Better Shipping Box": {
+ "ID": "Kithio:BetterShippingBox",
+ "MapLocalVersions": { "1.0.1": "1.0.2" },
+ "Default | UpdateKey": "Chucklefish:4302"
+ },
+
+ "Better Sprinklers": {
+ "ID": "Speeder.BetterSprinklers",
+ "FormerIDs": "SPDSprinklersMod", // changed in 2.3
+ "Default | UpdateKey": "Nexus:41"
+ },
+
+ "Billboard Anywhere": {
+ "ID": "Omegasis.BillboardAnywhere",
+ "Default | UpdateKey": "Nexus:492" // added in 1.4.1
+ },
+
+ "Birthday Mail": {
+ "ID": "KathrynHazuka.BirthdayMail",
+ "FormerIDs": "005e02dc-d900-425c-9c68-1ff55c5a295d", // changed in 1.2.3-pathoschild-update
+ "Default | UpdateKey": "Nexus:276",
+ "MapRemoteVersions": { "1.3.1": "1.3" } // manifest not updated
+ },
+
+ "Breed Like Rabbits": {
+ "ID": "dycedarger.breedlikerabbits",
+ "Default | UpdateKey": "Nexus:948"
+ },
+
+ "Build Endurance": {
+ "ID": "Omegasis.BuildEndurance",
+ "Default | UpdateKey": "Nexus:445" // added in 1.4.1
+ },
+
+ "Build Health": {
+ "ID": "Omegasis.BuildHealth",
+ "Default | UpdateKey": "Nexus:446" // added in 1.4.1
+ },
+
+ "Buy Cooking Recipes": {
+ "ID": "Denifia.BuyRecipes",
+ "Default | UpdateKey": "Nexus:1126" // added in 1.0.1 (2017-10-04)
+ },
+
+ "Buy Back Collectables": {
+ "ID": "Omegasis.BuyBackCollectables",
+ "FormerIDs": "BuyBackCollectables", // changed in 1.4
+ "Default | UpdateKey": "Nexus:507" // added in 1.4.1
+ },
+
+ "Carry Chest": {
+ "ID": "spacechase0.CarryChest",
+ "Default | UpdateKey": "Nexus:1333"
+ },
+
+ "Casks Anywhere": {
+ "ID": "CasksAnywhere",
+ "MapLocalVersions": { "1.1-alpha": "1.1" },
+ "Default | UpdateKey": "Nexus:878"
+ },
+
+ "Categorize Chests": {
+ "ID": "CategorizeChests",
+ "Default | UpdateKey": "Nexus:1300",
+ "~1.4.3-unofficial.2.mizzion | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.18 (in-game errors)
+ },
+
+ "Chefs Closet": {
+ "ID": "Duder.ChefsCloset",
+ "MapLocalVersions": { "1.3-1": "1.3" },
+ "Default | UpdateKey": "Nexus:1030"
+ },
+
+ "Chest Label System": {
+ "ID": "Speeder.ChestLabel",
+ "FormerIDs": "SPDChestLabel", // changed in 1.5.1-pathoschild-update
+ "Default | UpdateKey": "Nexus:242"
+ },
+
+ "Chest Pooling": {
+ "ID": "mralbobo.ChestPooling",
+ "Default | UpdateKey": "GitHub:mralbobo/stardew-chest-pooling"
+ },
+
+ "Chests Anywhere": {
+ "ID": "Pathoschild.ChestsAnywhere",
+ "FormerIDs": "ChestsAnywhere", // changed in 1.9
+ "Default | UpdateKey": "Nexus:518",
+ "~1.12.4 | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "CJB Automation": {
+ "ID": "CJBAutomation",
+ "Default | UpdateKey": "Nexus:211",
+ "~1.4 | Status": "AssumeBroken", // broke in SDV 1.2
+ "~1.4 | AlternativeUrl": "http://www.nexusmods.com/stardewvalley/mods/1063"
+ },
+
+ "CJB Cheats Menu": {
+ "ID": "CJBok.CheatsMenu",
+ "FormerIDs": "CJBCheatsMenu", // changed in 1.14
+ "Default | UpdateKey": "Nexus:4",
+ "~1.18-beta | Status": "AssumeBroken" // broke in SDV 1.3, first beta causes significant friendship bugs
+ },
+
+ "CJB Item Spawner": {
+ "ID": "CJBok.ItemSpawner",
+ "FormerIDs": "CJBItemSpawner", // changed in 1.7
+ "Default | UpdateKey": "Nexus:93",
+ "~1.10 | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "CJB Show Item Sell Price": {
+ "ID": "CJBok.ShowItemSellPrice",
+ "FormerIDs": "CJBShowItemSellPrice", // changed in 1.7
+ "Default | UpdateKey": "Nexus:5",
+ "~1.8 | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "Clean Farm": {
+ "ID": "tstaples.CleanFarm",
+ "Default | UpdateKey": "Nexus:794"
+ },
+
+ "Climates of Ferngill": {
+ "ID": "KoihimeNakamura.ClimatesOfFerngill",
+ "Default | UpdateKey": "Nexus:604"
+ },
+
+ "Coal Regen": {
+ "ID": "Blucifer.CoalRegen",
+ "Default | UpdateKey": "Nexus:1664"
+ },
+
+ "Cobalt": {
+ "ID": "spacechase0.Cobalt",
+ "MapRemoteVersions": { "1.1.3": "1.1.2" } // not updated in manifest
+ },
+
+ "Cold Weather Haley": {
+ "ID": "LordXamon.ColdWeatherHaleyPRO",
+ "Default | UpdateKey": "Nexus:1169",
+ "~1.0 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Colored Chests": {
+ "ID": "4befde5c-731c-4853-8e4b-c5cdf946805f",
+ "~ | Status": "Obsolete",
+ "~ | StatusReasonPhrase": "colored chests were added in Stardew Valley 1.1."
+ },
+
+ "Combat with Farm Implements": {
+ "ID": "SPDFarmingImplementsInCombat",
+ "Default | UpdateKey": "Nexus:313"
+ },
+
+ "Community Bundle Item Tooltip": {
+ "ID": "musbah.bundleTooltip",
+ "Default | UpdateKey": "Nexus:1329"
+ },
+
+ "Concentration on Farming": {
+ "ID": "punyo.ConcentrationOnFarming",
+ "Default | UpdateKey": "Nexus:1445"
+ },
+
+ "Configurable Machines": {
+ "ID": "21da6619-dc03-4660-9794-8e5b498f5b97",
+ "MapLocalVersions": { "1.2-beta": "1.2" },
+ "Default | UpdateKey": "Nexus:280"
+ },
+
+ "Configurable Shipping Dates": {
+ "ID": "ConfigurableShippingDates",
+ "Default | UpdateKey": "Nexus:675",
+ "~1.1.1 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Content Patcher": {
+ "ID": "Pathoschild.ContentPatcher",
+ "Default | UpdateKey": "Nexus:1915",
+ "~1.4-beta.5 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.18 (in-game errors)
+ },
+
+ "Cooking Skill": {
+ "ID": "spacechase0.CookingSkill",
+ "FormerIDs": "CookingSkill", // changed in 1.0.4–6
+ "Default | UpdateKey": "Nexus:522"
+ },
+
+ "CrabNet": {
+ "ID": "jwdred.CrabNet",
+ "Default | UpdateKey": "Nexus:584"
+ },
+
+ "Crafting Counter": {
+ "ID": "lolpcgaming.CraftingCounter",
+ "Default | UpdateKey": "Nexus:1585",
+ "MapRemoteVersions": { "1.1": "1.0" } // not updated in manifest
+ },
+
+ "Current Location": {
+ "ID": "CurrentLocation102120161203",
+ "Default | UpdateKey": "Nexus:638"
+ },
+
+ "Custom Asset Modifier": {
+ "ID": "Omegasis.CustomAssetModifier",
+ "Default | UpdateKey": "1836"
+ },
+
+ "Custom Critters": {
+ "ID": "spacechase0.CustomCritters",
+ "Default | UpdateKey": "Nexus:1255"
+ },
+
+ "Custom Crops": {
+ "ID": "spacechase0.CustomCrops",
+ "Default | UpdateKey": "Nexus:1592"
+ },
+
+ "Custom Element Handler": {
+ "ID": "Platonymous.CustomElementHandler",
+ "Default | UpdateKey": "Nexus:1068" // added in 1.3.1
+ },
+
+ "Custom Farming Redux": {
+ "ID": "Platonymous.CustomFarming",
+ "Default | UpdateKey": "Nexus:991" // added in 0.6.1
+ },
+
+ "Custom Farming Automate Bridge": {
+ "ID": "Platonymous.CFAutomate",
+ "~1.0.1 | Status": "AssumeBroken", // no longer compatible with Automate
+ "~1.0.1 | AlternativeUrl": "https://www.nexusmods.com/stardewvalley/mods/991"
+ },
+
+ "Custom Farm Types": {
+ "ID": "spacechase0.CustomFarmTypes",
+ "Default | UpdateKey": "Nexus:1140"
+ },
+
+ "Custom Furniture": {
+ "ID": "Platonymous.CustomFurniture",
+ "Default | UpdateKey": "Nexus:1254" // added in 0.4.1
+ },
+
+ "Customize Exterior": {
+ "ID": "spacechase0.CustomizeExterior",
+ "FormerIDs": "CustomizeExterior", // changed in 1.0.3
+ "Default | UpdateKey": "Nexus:1099",
+ "~1.0.2 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Customizable Cart Redux": {
+ "ID": "KoihimeNakamura.CCR",
+ "MapLocalVersions": { "1.1-20170917": "1.1" },
+ "Default | UpdateKey": "Nexus:1402"
+ },
+
+ "Customizable Traveling Cart Days": {
+ "ID": "TravelingCartYyeahdude",
+ "Default | UpdateKey": "Nexus:567"
+ },
+
+ "Custom Linens": {
+ "ID": "Mevima.CustomLinens",
+ "MapRemoteVersions": { "1.1": "1.0" }, // manifest not updated
+ "Default | UpdateKey": "Nexus:1027"
+ },
+
+ "Custom NPC": {
+ "ID": "Platonymous.CustomNPC",
+ "Default | UpdateKey": "Nexus:1607"
+ },
+
+ "Custom Shops Redux": {
+ "ID": "Omegasis.CustomShopReduxGui",
+ "Default | UpdateKey": "Nexus:1378" // added in 1.4.1
+ },
+
+ "Custom TV": {
+ "ID": "Platonymous.CustomTV",
+ "Default | UpdateKey": "Nexus:1139" // added in 1.0.6
+ },
+
+ "Daily Luck Message": {
+ "ID": "Schematix.DailyLuckMessage",
+ "Default | UpdateKey": "Nexus:1327"
+ },
+
+ "Daily News": {
+ "ID": "bashNinja.DailyNews",
+ "Default | UpdateKey": "Nexus:1141",
+ "~1.2 | Status": "AssumeBroken" // broke in Stardew Valley 1.3 (or depends on CustomTV which broke)
+ },
+
+ "Daily Quest Anywhere": {
+ "ID": "Omegasis.DailyQuestAnywhere",
+ "FormerIDs": "DailyQuest", // changed in 1.4
+ "Default | UpdateKey": "Nexus:513" // added in 1.4.1
+ },
+
+ "Data Maps": {
+ "ID": "Pathoschild.DataMaps",
+ "Default | UpdateKey": "Nexus:1691",
+ "~1.4 | Status": "AssumeBroken" // replaced by Data Layers
+ },
+
+ "Debug Mode": {
+ "ID": "Pathoschild.DebugMode",
+ "FormerIDs": "Pathoschild.Stardew.DebugMode", // changed in 1.4
+ "Default | UpdateKey": "Nexus:679",
+ "~1.8 | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "Did You Water Your Crops?": {
+ "ID": "Nishtra.DidYouWaterYourCrops",
+ "Default | UpdateKey": "Nexus:1583"
+ },
+
+ "Dynamic Checklist": {
+ "ID": "gunnargolf.DynamicChecklist",
+ "Default | UpdateKey": "Nexus:1145" // added in 1.0.1-pathoschild-update
+ },
+
+ "Dynamic Horses": {
+ "ID": "Bpendragon-DynamicHorses",
+ "MapRemoteVersions": { "1.2": "1.1-release" }, // manifest not updated
+ "Default | UpdateKey": "Nexus:874"
+ },
+
+ "Dynamic Machines": {
+ "ID": "DynamicMachines",
+ "MapLocalVersions": { "1.1": "1.1.1" },
+ "Default | UpdateKey": "Nexus:374",
+ "~1.1.1 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Dynamic NPC Sprites": {
+ "ID": "BashNinja.DynamicNPCSprites",
+ "Default | UpdateKey": "Nexus:1183"
+ },
+
+ "Easier Farming": {
+ "ID": "cautiouswafffle.EasierFarming",
+ "Default | UpdateKey": "Nexus:1426"
+ },
+
+ "Empty Hands": {
+ "ID": "QuicksilverFox.EmptyHands",
+ "Default | UpdateKey": "Nexus:1176" // added in 1.0.1-pathoschild-update
+ },
+
+ "Enemy Health Bars": {
+ "ID": "Speeder.HealthBars",
+ "FormerIDs": "SPDHealthBar", // changed in 1.7.1-pathoschild-update
+ "Default | UpdateKey": "Nexus:193"
+ },
+
+ "Entoarox Framework": {
+ "ID": "Entoarox.EntoaroxFramework",
+ "FormerIDs": "eacdb74b-4080-4452-b16b-93773cda5cf9", // changed in ???
+ "~2.0.6 | UpdateKey": "Chucklefish:4228", // only enable update checks up to 2.0.6 by request (has its own update-check feature)
+ "~2.0.6 | Status": "AssumeBroken" // broke in SMAPI 2.5 (error reflecting into SMAPI internals)
+ },
+
+ "Expanded Fridge": {
+ "ID": "Uwazouri.ExpandedFridge",
+ "Default | UpdateKey": "Nexus:1191"
+ },
+
+ "Experience Bars": {
+ "ID": "spacechase0.ExperienceBars",
+ "FormerIDs": "ExperienceBars", // changed in 1.0.2
+ "Default | UpdateKey": "Nexus:509"
+ },
+
+ "Extended Bus System": {
+ "ID": "ExtendedBusSystem",
+ "Default | UpdateKey": "Chucklefish:4373"
+ },
+
+ "Extended Fridge": {
+ "ID": "Crystalmir.ExtendedFridge",
+ "FormerIDs": "Mystra007ExtendedFridge", // changed in 1.0.1
+ "Default | UpdateKey": "Nexus:485"
+ },
+
+ "Extended Greenhouse": {
+ "ID": "ExtendedGreenhouse",
+ "Default | UpdateKey": "Chucklefish:4303",
+ "~1.0.2 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Extended Minecart": {
+ "ID": "Entoarox.ExtendedMinecart",
+ "~1.7.1 | UpdateKey": "Chucklefish:4359" // only enable update checks up to 1.7.1 by request (has its own update-check feature)
+ },
+
+ "Extended Reach": {
+ "ID": "spacechase0.ExtendedReach",
+ "Default | UpdateKey": "Nexus:1493"
+ },
+
+ "Fall 28 Snow Day": {
+ "ID": "Omegasis.Fall28SnowDay",
+ "Default | UpdateKey": "Nexus:486", // added in 1.4.1
+ "~1.4.1 | Status": "AssumeBroken" // broke in SMAPI 2.0, and update for SMAPI 2.0 doesn't do anything
+ },
+
+ "Farm Automation Unofficial: Item Collector": {
+ "ID": "Maddy99.FarmAutomation.ItemCollector",
+ "~0.5 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Farm Expansion": {
+ "ID": "Advize.FarmExpansion",
+ "FormerIDs": "3888bdfd-73f6-4776-8bb7-8ad45aea1915 | AdvizeFarmExpansionMod-2-0 | AdvizeFarmExpansionMod-2-0-5", // changed in 2.0, 2.0.5, and 3.0
+ "Default | UpdateKey": "Nexus:130"
+ },
+
+ "Fast Animations": {
+ "ID": "Pathoschild.FastAnimations",
+ "Default | UpdateKey": "Nexus:1089",
+ "~1.5 | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "Faster Grass": {
+ "ID": "IceGladiador.FasterGrass",
+ "Default | UpdateKey": "Nexus:1772"
+ },
+
+ "Faster Paths": {
+ "ID": "Entoarox.FasterPaths",
+ "FormerIDs": "615f85f8-5c89-44ee-aecc-c328f172e413", // changed in 1.3
+ "~1.3.3 | UpdateKey": "Chucklefish:3641" // only enable update checks up to 1.3.3 by request (has its own update-check feature)
+ },
+
+ "Fishing Adjust": {
+ "ID": "shuaiz.FishingAdjustMod",
+ "Default | UpdateKey": "Nexus:1350",
+ "~2.0.1 | Status": "AssumeBroken" // Method not found: 'Void Harmony.HarmonyInstance.Patch(System.Reflection.MethodBase, Harmony.HarmonyMethod, Harmony.HarmonyMethod, Harmony.HarmonyMethod)'
+ },
+
+ "Fishing Tuner Redux": {
+ "ID": "HammurabiFishingTunerRedux",
+ "Default | UpdateKey": "Chucklefish:4578"
+ },
+
+ "Fixed Secret Woods Debris": {
+ "ID": "f4iTh.WoodsDebrisFix",
+ "Default | UpdateKey": "Nexus:1941"
+ },
+
+ "Fix Scythe Exp": {
+ "ID": "bcmpinc.FixScytheExp",
+ "~0.2 | Status": "AssumeBroken" // Exception from HarmonyInstance "bcmpinc.FixScytheExp" [...] Bad label content in ILGenerator.
+ },
+
+ "Flower Color Picker": {
+ "ID": "spacechase0.FlowerColorPicker",
+ "Default | UpdateKey": "Nexus:1229"
+ },
+
+ "Forage at the Farm": {
+ "ID": "Nishtra.ForageAtTheFarm",
+ "FormerIDs": "ForageAtTheFarm", // changed in <=1.6
+ "Default | UpdateKey": "Nexus:673"
+ },
+
+ "Furniture Anywhere": {
+ "ID": "Entoarox.FurnitureAnywhere",
+ "~1.1.5 | UpdateKey": "Chucklefish:4324" // only enable update checks up to 1.1.5 by request (has its own update-check feature)
+ },
+
+ "Game Reminder": {
+ "ID": "mmanlapat.GameReminder",
+ "Default | UpdateKey": "Nexus:1153"
+ },
+
+ "Gate Opener": {
+ "ID": "mralbobo.GateOpener",
+ "Default | UpdateKey": "GitHub:mralbobo/stardew-gate-opener"
+ },
+
+ "GenericShopExtender": {
+ "ID": "GenericShopExtender",
+ "Default | UpdateKey": "Nexus:814" // added in 0.1.3
+ },
+
+ "Geode Info Menu": {
+ "ID": "cat.geodeinfomenu",
+ "Default | UpdateKey": "Nexus:1448"
+ },
+
+ "Get Dressed": {
+ "ID": "Advize.GetDressed",
+ "Default | UpdateKey": "Nexus:331"
+ },
+
+ "Giant Crop Ring": {
+ "ID": "cat.giantcropring",
+ "Default | UpdateKey": "Nexus:1182"
+ },
+
+ "Gift Taste Helper": {
+ "ID": "tstaples.GiftTasteHelper",
+ "FormerIDs": "8008db57-fa67-4730-978e-34b37ef191d6", // changed in 2.5
+ "Default | UpdateKey": "Nexus:229"
+ },
+
+ "Grandfather's Gift": {
+ "ID": "ShadowDragon.GrandfathersGift",
+ "Default | UpdateKey": "Nexus:985"
+ },
+
+ "Happy Animals": {
+ "ID": "HappyAnimals",
+ "~1.0.3 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Happy Birthday (Omegasis)": {
+ "ID": "Omegasis.HappyBirthday",
+ "Default | UpdateKey": "Nexus:520" // added in 1.4.1
+ },
+
+ "Hardcore Mines": {
+ "ID": "kibbe.hardcore_mines",
+ "Default | UpdateKey": "Nexus:1674"
+ },
+
+ "Harp of Yoba Redux": {
+ "ID": "Platonymous.HarpOfYobaRedux",
+ "Default | UpdateKey": "Nexus:914" // added in 2.0.3
+ },
+
+ "Harvest Moon Witch Princess": {
+ "ID": "Sasara.WitchPrincess",
+ "Default | UpdateKey": "Nexus:1157"
+ },
+
+ "Harvest With Scythe": {
+ "ID": "965169fd-e1ed-47d0-9f12-b104535fb4bc",
+ "Default | UpdateKey": "Nexus:236"
+ },
+
+ "Horse Whistle (icepuente)": {
+ "ID": "icepuente.HorseWhistle",
+ "Default | UpdateKey": "Nexus:1131",
+ "~1.1.2-unofficial.1-pathoschild | Status": "AssumeBroken" // causes significant lag, fixed in unofficial.2
+ },
+
+ "Hunger (Yyeadude)": {
+ "ID": "HungerYyeadude",
+ "Default | UpdateKey": "Nexus:613"
+ },
+
+ "Hunger for Food (Tigerle)": {
+ "ID": "HungerForFoodByTigerle",
+ "Default | UpdateKey": "Nexus:810",
+ "~0.1.2 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Hunger Mod (skn)": {
+ "ID": "skn.HungerMod",
+ "MapRemoteVersions": { "1.2.1": "1.0" }, // manifest not updated
+ "Default | UpdateKey": "Nexus:1127"
+ },
+
+ "Idle Pause": {
+ "ID": "Veleek.IdlePause",
+ "MapRemoteVersions": { "1.2": "1.1" }, // manifest not updated
+ "Default | UpdateKey": "Nexus:1092"
+ },
+
+ "Improved Quality of Life": {
+ "ID": "Demiacle.ImprovedQualityOfLife",
+ "Default | UpdateKey": "Nexus:1025",
+ "~1.1 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Instant Geode": {
+ "ID": "InstantGeode",
+ "~1.12 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Instant Grow Trees": {
+ "ID": "cantorsdust.InstantGrowTrees",
+ "FormerIDs": "dc50c58b-c7d8-4e60-86cc-e27b5d95ee59 | community.InstantGrowTrees", // changed in 1.2 and 1.3.1
+ "Default | UpdateKey": "Nexus:173"
+ },
+
+ "Interaction Helper": {
+ "ID": "HammurabiInteractionHelper",
+ "Default | UpdateKey": "Chucklefish:4640" // added in 1.0.4-pathoschild-update
+ },
+
+ "Item Auto Stacker": {
+ "ID": "cat.autostacker",
+ "MapRemoteVersions": { "1.0.1": "1.0" }, // manifest not updated
+ "Default | UpdateKey": "Nexus:1184"
+ },
+
+ "Json Assets": {
+ "ID": "spacechase0.JsonAssets",
+ "Default | UpdateKey": "Nexus:1720"
+ },
+
+ "Junimo Farm": {
+ "ID": "Platonymous.JunimoFarm",
+ "MapRemoteVersions": { "1.1.2": "1.1.1" }, // manifest not updated
+ "Default | UpdateKey": "Nexus:984" // added in 1.1.3
+ },
+
+ "Less Strict Over-Exertion (AntiExhaustion)": {
+ "ID": "BALANCEMOD_AntiExhaustion",
+ "MapLocalVersions": { "0.0": "1.1" },
+ "Default | UpdateKey": "Nexus:637",
+ "~1.1 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Level Extender": {
+ "ID": "DevinLematty.LevelExtender",
+ "FormerIDs": "Devin Lematty.Level Extender", // changed in 1.3
+ "Default | UpdateKey": "Nexus:1471"
+ },
+
+ "Level Up Notifications": {
+ "ID": "Level Up Notifications",
+ "MapRemoteVersions": { "0.0.1a": "0.0.1" },
+ "Default | UpdateKey": "Nexus:855"
+ },
+
+ "Location and Music Logging": {
+ "ID": "Brandy Lover.LMlog",
+ "Default | UpdateKey": "Nexus:1366"
+ },
+
+ "Longevity": {
+ "ID": "RTGOAT.Longevity",
+ "MapRemoteVersions": { "1.6.8h": "1.6.8" },
+ "Default | UpdateKey": "Nexus:649"
+ },
+
+ "Lookup Anything": {
+ "ID": "Pathoschild.LookupAnything",
+ "FormerIDs": "LookupAnything", // changed in 1.10.1
+ "Default | UpdateKey": "Nexus:541",
+ "~1.18.1 | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "Love Bubbles": {
+ "ID": "LoveBubbles",
+ "Default | UpdateKey": "Nexus:1318"
+ },
+
+ "Loved Labels": {
+ "ID": "Advize.LovedLabels",
+ "Default | UpdateKey": "Nexus:279"
+ },
+
+ "Luck Skill": {
+ "ID": "spacechase0.LuckSkill",
+ "FormerIDs": "LuckSkill", // changed in 0.1.4
+ "Default | UpdateKey": "Nexus:521"
+ },
+
+ "Magic": {
+ "ID": "spacechase0.Magic",
+ "MapRemoteVersions": { "0.1.2": "0.1.1" } // not updated in manifest
+ },
+
+ "Mail Framework": {
+ "ID": "DIGUS.MailFrameworkMod",
+ "Default | UpdateKey": "Nexus:1536"
+ },
+
+ "MailOrderPigs": {
+ "ID": "jwdred.MailOrderPigs",
+ "Default | UpdateKey": "Nexus:632"
+ },
+
+ "Makeshift Multiplayer": {
+ "ID": "spacechase0.StardewValleyMP",
+ "FormerIDs": "StardewValleyMP", // changed in 0.3
+ "Default | UpdateKey": "Nexus:501"
+ },
+
+ "Map Image Exporter": {
+ "ID": "spacechase0.MapImageExporter",
+ "FormerIDs": "MapImageExporter", // changed in 1.0.2
+ "Default | UpdateKey": "Nexus:1073"
+ },
+
+ "Message Box [API]? (ChatMod)": {
+ "ID": "Kithio:ChatMod",
+ "Default | UpdateKey": "Chucklefish:4296",
+ "~1.0 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Mining at the Farm": {
+ "ID": "Nishtra.MiningAtTheFarm",
+ "FormerIDs": "MiningAtTheFarm", // changed in <=1.7
+ "Default | UpdateKey": "Nexus:674"
+ },
+
+ "Mining With Explosives": {
+ "ID": "Nishtra.MiningWithExplosives",
+ "FormerIDs": "MiningWithExplosives", // changed in 1.1
+ "Default | UpdateKey": "Nexus:770"
+ },
+
+ "Modder Serialization Utility": {
+ "ID": "SerializerUtils-0-1",
+ "~ | Status": "Obsolete",
+ "~ | StatusReasonPhrase": "it's no longer maintained or used."
+ },
+
+ "Monster Level Tip": {
+ "ID": "WhiteMind.MonsterLT",
+ "Default | UpdateKey": "Nexus:1896"
+ },
+
+ "More Animals": {
+ "ID": "Entoarox.MoreAnimals",
+ "FormerIDs": "821ce8f6-e629-41ad-9fde-03b54f68b0b6MOREPETS | Entoarox.MorePets", // changed in 1.3 and 2.0
+ "~2.0.2 | UpdateKey": "Chucklefish:4288" // only enable update checks up to 2.0.2 by request (has its own update-check feature)
+ },
+
+ "More Artifact Spots": {
+ "ID": "451",
+ "Default | UpdateKey": "Nexus:451"
+ },
+
+ "More Map Layers": {
+ "ID": "Platonymous.MoreMapLayers",
+ "Default | UpdateKey": "Nexus:1134" // added in 1.1.1
+ },
+
+ "More Rain": {
+ "ID": "Omegasis.MoreRain",
+ "Default | UpdateKey": "Nexus:441", // added in 1.5.1
+ "~1.4 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "More Weapons": {
+ "ID": "Joco80.MoreWeapons",
+ "Default | UpdateKey": "Nexus:1168"
+ },
+
+ "Move Faster": {
+ "ID": "shuaiz.MoveFasterMod",
+ "Default | UpdateKey": "Nexus:1351",
+ "1.0.1 | Status": "AssumeBroken" // doesn't do anything as of SDV 1.2.33 (bad Harmony patch?)
+ },
+
+ "Multiple Sprites and Portraits On Rotation (File Loading)": {
+ "ID": "FileLoading",
+ "MapLocalVersions": { "1.1": "1.12" },
+ "Default | UpdateKey": "Nexus:1094",
+ "~1.12 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Museum Rearranger": {
+ "ID": "Omegasis.MuseumRearranger",
+ "Default | UpdateKey": "Nexus:428" // added in 1.4.1
+ },
+
+ "Mushroom Level Tip": {
+ "ID": "WhiteMind.MLT",
+ "Default | UpdateKey": "Nexus:1894"
+ },
+
+ "New Machines": {
+ "ID": "F70D4FAB-0AB2-4B78-9F1B-AF2CA2236A59",
+ "Default | UpdateKey": "Chucklefish:3683",
+ "~4.2.1343 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Night Owl": {
+ "ID": "Omegasis.NightOwl",
+ "MapLocalVersions": { "2.1": "1.3" }, // 1.3 had wrong version in manifest
+ "Default | UpdateKey": "Nexus:433" // added in 1.4.1
+ },
+
+ "No Crows": {
+ "ID": "cat.nocrows",
+ "Default | UpdateKey": "Nexus:1682"
+ },
+
+ "No Kids Ever": {
+ "ID": "Hangy.NoKidsEver",
+ "Default | UpdateKey": "Nexus:1464"
+ },
+
+ "No Debug Mode": {
+ "ID": "NoDebugMode",
+ "~ | Status": "Obsolete",
+ "~ | StatusReasonPhrase": "debug mode was removed in SMAPI 1.0."
+ },
+
+ "No Fence Decay": {
+ "ID": "cat.nofencedecay",
+ "Default | UpdateKey": "Nexus:1180"
+ },
+
+ "No More Pets": {
+ "ID": "Omegasis.NoMorePets",
+ "FormerIDs": "NoMorePets", // changed in 1.4
+ "Default | UpdateKey": "Nexus:506" // added in 1.4.1
+ },
+
+ "No Rumble Horse": {
+ "ID": "Xangria.NoRumbleHorse",
+ "Default | UpdateKey": "Nexus:1779"
+ },
+
+ "No Soil Decay": {
+ "ID": "289dee03-5f38-4d8e-8ffc-e440198e8610",
+ "Default | UpdateKey": "Nexus:237",
+ "~0.5 | Status": "AssumeBroken" // broke in SDV 1.2 and uses Assembly.GetExecutingAssembly().Location
+ },
+
+ "No Soil Decay Redux": {
+ "ID": "Platonymous.NoSoilDecayRedux",
+ "Default | UpdateKey": "Nexus:1084" // added in 1.1.9
+ },
+
+ "NPC Map Locations": {
+ "ID": "Bouhm.NPCMapLocations",
+ "FormerIDs": "NPCMapLocationsMod", // changed in 2.0
+ "Default | UpdateKey": "Nexus:239"
+ },
+
+ "Object Time Left": {
+ "ID": "spacechase0.ObjectTimeLeft",
+ "Default | UpdateKey": "Nexus:1315"
+ },
+
+ "OmniFarm": {
+ "ID": "PhthaloBlue.OmniFarm",
+ "FormerIDs": "BlueMod_OmniFarm", // changed in 2.0.2-pathoschild-update
+ "Default | UpdateKey": "GitHub:lambui/StardewValleyMod_OmniFarm"
+ },
+
+ "One Click Shed": {
+ "ID": "BitwiseJonMods.OneClickShedReloader",
+ "Default | UpdateKey": "Nexus:2052"
+ },
+
+ "Out of Season Bonuses (Seasonal Items)": {
+ "ID": "midoriarmstrong.seasonalitems",
+ "Default | UpdateKey": "Nexus:1452"
+ },
+
+ "Part of the Community": {
+ "ID": "SB_PotC",
+ "Default | UpdateKey": "Nexus:923"
+ },
+
+ "PelicanFiber": {
+ "ID": "jwdred.PelicanFiber",
+ "Default | UpdateKey": "Nexus:631"
+ },
+
+ "PelicanTTS": {
+ "ID": "Platonymous.PelicanTTS",
+ "Default | UpdateKey": "Nexus:1079" // added in 1.6.1
+ },
+
+ "Persia the Mermaid - Standalone Custom NPC": {
+ "ID": "63b9f419-7449-42db-ab2e-440b4d05c073",
+ "Default | UpdateKey": "Nexus:1419"
+ },
+
+ "Persistent Game Options": {
+ "ID": "Xangria.PersistentGameOptions",
+ "Default | UpdateKey": "Nexus:1778"
+ },
+
+ "Plant on Grass": {
+ "ID": "Demiacle.PlantOnGrass",
+ "Default | UpdateKey": "Nexus:1026"
+ },
+
+ "PyTK - Platonymous Toolkit": {
+ "ID": "Platonymous.Toolkit",
+ "Default | UpdateKey": "Nexus:1726"
+ },
+
+ "Point-and-Plant": {
+ "ID": "jwdred.PointAndPlant",
+ "Default | UpdateKey": "Nexus:572",
+ "MapRemoteVersions": { "1.0.3": "1.0.2" } // manifest not updated
+ },
+
+ "Pony Weight Loss Program": {
+ "ID": "BadNetCode.PonyWeightLossProgram",
+ "Default | UpdateKey": "Nexus:1232"
+ },
+
+ "Portraiture": {
+ "ID": "Platonymous.Portraiture",
+ "Default | UpdateKey": "Nexus:999" // added in 1.3.1
+ },
+
+ "Prairie King Made Easy": {
+ "ID": "Mucchan.PrairieKingMadeEasy",
+ "Default | UpdateKey": "Chucklefish:3594",
+ "~1.0 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Purchasable Recipes": {
+ "ID": "Paracosm.PurchasableRecipes",
+ "Default | UpdateKey": "Nexus:1722"
+ },
+
+ "Quest Delay": {
+ "ID": "BadNetCode.QuestDelay",
+ "Default | UpdateKey": "Nexus:1239"
+ },
+
+ "Recatch Legendary Fish": {
+ "ID": "cantorsdust.RecatchLegendaryFish",
+ "FormerIDs": "b3af8c31-48f0-43cf-8343-3eb08bcfa1f9 | community.RecatchLegendaryFish", // changed in 1.3 and 1.5.1
+ "Default | UpdateKey": "Nexus:172"
+ },
+
+ "Regeneration": {
+ "ID": "HammurabiRegeneration",
+ "Default | UpdateKey": "Chucklefish:4584"
+ },
+
+ "Relationship Bar UI": {
+ "ID": "RelationshipBar",
+ "Default | UpdateKey": "Nexus:1009"
+ },
+
+ "RelationshipsEnhanced": {
+ "ID": "relationshipsenhanced",
+ "Default | UpdateKey": "Chucklefish:4435",
+ "~1.0 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Relationship Status": {
+ "ID": "relationshipstatus",
+ "MapRemoteVersions": { "1.0.5": "1.0.4" }, // not updated in manifest
+ "Default | UpdateKey": "Nexus:751",
+ "~1.0.5 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Rented Tools": {
+ "ID": "JarvieK.RentedTools",
+ "Default | UpdateKey": "Nexus:1307"
+ },
+
+ "Replanter": {
+ "ID": "jwdred.Replanter",
+ "Default | UpdateKey": "Nexus:589"
+ },
+
+ "ReRegeneration": {
+ "ID": "lrsk_sdvm_rerg.0925160827",
+ "MapLocalVersions": { "1.1.2-release": "1.1.2" },
+ "Default | UpdateKey": "Chucklefish:4465"
+ },
+
+ "Reseed": {
+ "ID": "Roc.Reseed",
+ "Default | UpdateKey": "Nexus:887"
+ },
+
+ "Reusable Wallpapers and Floors (Wallpaper Retain)": {
+ "ID": "dae1b553-2e39-43e7-8400-c7c5c836134b",
+ "Default | UpdateKey": "Nexus:356",
+ "~1.5 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Ring of Fire": {
+ "ID": "Platonymous.RingOfFire",
+ "Default | UpdateKey": "Nexus:1166" // added in 1.0.1
+ },
+
+ "Rope Bridge": {
+ "ID": "RopeBridge",
+ "Default | UpdateKey": "Nexus:824"
+ },
+
+ "Rotate Toolbar": {
+ "ID": "Pathoschild.RotateToolbar",
+ "Default | UpdateKey": "Nexus:1100",
+ "~1.2.1 | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "Rush Orders": {
+ "ID": "spacechase0.RushOrders",
+ "FormerIDs": "RushOrders", // changed in 1.1
+ "Default | UpdateKey": "Nexus:605"
+ },
+
+ "Save Anywhere": {
+ "ID": "Omegasis.SaveAnywhere",
+ "Default | UpdateKey": "Nexus:444", // added in 2.6.1
+ "MapRemoteVersions": { "2.6.2": "2.6.1" } // not updated in manifest
+ },
+
+ "Save Backup": {
+ "ID": "Omegasis.SaveBackup",
+ "Default | UpdateKey": "Nexus:435", // added in 1.3.1
+ "~1.2 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Scroll to Blank": {
+ "ID": "caraxian.scroll.to.blank",
+ "Default | UpdateKey": "Chucklefish:4405"
+ },
+
+ "Scythe Harvesting": {
+ "ID": "mmanlapat.ScytheHarvesting",
+ "FormerIDs": "ScytheHarvesting", // changed in 1.6
+ "Default | UpdateKey": "Nexus:1106"
+ },
+
+ "SDV Twitch": {
+ "ID": "MTD.SDVTwitch",
+ "Default | UpdateKey": "Nexus:1760"
+ },
+
+ "Seasonal Immersion": {
+ "ID": "Entoarox.SeasonalImmersion",
+ "FormerIDs": "EntoaroxSeasonalHouse | EntoaroxSeasonalBuildings | EntoaroxSeasonalImmersion", // changed in 1.1, 1.6 or earlier, and 1.7
+ "~1.11 | UpdateKey": "Chucklefish:4262" // only enable update checks up to 1.11 by request (has its own update-check feature)
+ },
+
+ "Seed Bag": {
+ "ID": "Platonymous.SeedBag",
+ "Default | UpdateKey": "Nexus:1133" // added in 1.1.2
+ },
+
+ "Seed Catalogue": {
+ "ID": "spacechase0.SeedCatalogue",
+ "Default | UpdateKey": "Nexus:1640"
+ },
+
+ "Self Service": {
+ "ID": "JarvieK.SelfService",
+ "MapRemoteVersions": { "0.2.1": "0.2" }, // manifest not updated
+ "Default | UpdateKey": "Nexus:1304"
+ },
+
+ "Send Items": {
+ "ID": "Denifia.SendItems",
+ "Default | UpdateKey": "Nexus:1087" // added in 1.0.3 (2017-10-04)
+ },
+
+ "Shed Notifications (BuildingsNotifications)": {
+ "ID": "TheCroak.BuildingsNotifications",
+ "Default | UpdateKey": "Nexus:620",
+ "~0.4.1 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Shenandoah Project": {
+ "ID": "Nishtra.ShenandoahProject",
+ "FormerIDs": "Shenandoah Project", // changed in 1.2
+ "MapRemoteVersions": { "1.1.1": "1.1" }, // not updated in manifest
+ "Default | UpdateKey": "Nexus:756"
+ },
+
+ "Ship Anywhere": {
+ "ID": "spacechase0.ShipAnywhere",
+ "Default | UpdateKey": "Nexus:1379"
+ },
+
+ "Shipment Tracker": {
+ "ID": "7e474181-e1a0-40f9-9c11-d08a3dcefaf3",
+ "Default | UpdateKey": "Nexus:321"
+ },
+
+ "Shop Expander": {
+ "ID": "Entoarox.ShopExpander",
+ "FormerIDs": "EntoaroxShopExpander", // changed in 1.5 and 1.5.2; disambiguate from Faster Paths
+ "MapRemoteVersions": { "1.6.0b": "1.6.0" },
+ "~1.6 | UpdateKey": "Chucklefish:4381" // only enable update checks up to 1.6 by request (has its own update-check feature)
+ },
+
+ "Showcase Mod": {
+ "ID": "Igorious.Showcase",
+ "MapLocalVersions": { "0.9-500": "0.9" },
+ "Default | UpdateKey": "Chucklefish:4487",
+ "~0.9 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Shroom Spotter": {
+ "ID": "TehPers.ShroomSpotter",
+ "Default | UpdateKey": "Nexus:908"
+ },
+
+ "Simple Crop Label": {
+ "ID": "SimpleCropLabel",
+ "Default | UpdateKey": "Nexus:314"
+ },
+
+ "Simple Sound Manager": {
+ "ID": "Omegasis.SimpleSoundManager",
+ "Default | UpdateKey": "Nexus:1410" // added in 1.0.1
+ },
+
+ "Simple Sprinklers": {
+ "ID": "tZed.SimpleSprinkler",
+ "Default | UpdateKey": "Nexus:76"
+ },
+
+ "Siv's Marriage Mod": {
+ "ID": "6266959802", // official version
+ "FormerIDs": "Siv.MarriageMod | medoli900.Siv's Marriage Mod", // 1.2.3-unofficial versions
+ "MapLocalVersions": { "0.0": "1.4" },
+ "Default | UpdateKey": "Nexus:366"
+ },
+
+ "Skill Prestige": {
+ "ID": "alphablackwolf.skillPrestige",
+ "FormerIDs": "6b843e60-c8fc-4a25-a67b-4a38ac8dcf9b", // changed circa 1.2.3
+ "Default | UpdateKey": "Nexus:569"
+ },
+
+ "Skill Prestige: Cooking Adapter": {
+ "ID": "Alphablackwolf.CookingSkillPrestigeAdapter",
+ "FormerIDs": "20d6b8a3-b6e7-460b-a6e4-07c2b0cb6c63", // changed circa 1.1
+ "MapRemoteVersions": { "1.2.3": "1.1" }, // manifest not updated
+ "Default | UpdateKey": "Nexus:569"
+ },
+
+ "Skip Intro": {
+ "ID": "Pathoschild.SkipIntro",
+ "FormerIDs": "SkipIntro", // changed in 1.4
+ "Default | UpdateKey": "Nexus:533",
+ "~1.7.2 | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "Skull Cavern Elevator": {
+ "ID": "SkullCavernElevator",
+ "Default | UpdateKey": "Nexus:963"
+ },
+
+ "Skull Cave Saver": {
+ "ID": "cantorsdust.SkullCaveSaver",
+ "FormerIDs": "8ac06349-26f7-4394-806c-95d48fd35774 | community.SkullCaveSaver", // changed in 1.1 and 1.2.2
+ "Default | UpdateKey": "Nexus:175",
+ "1.3-beta | Status": "AssumeBroken" // doesn't work in multiplayer, no longer maintained
+ },
+
+ "Sleepy Eye": {
+ "ID": "spacechase0.SleepyEye",
+ "Default | UpdateKey": "Nexus:1152"
+ },
+
+ "Slower Fence Decay": {
+ "ID": "Speeder.SlowerFenceDecay",
+ "FormerIDs": "SPDSlowFenceDecay", // changed in 0.5.2-pathoschild-update
+ "Default | UpdateKey": "Nexus:252",
+ "~0.5.1 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Smart Mod": {
+ "ID": "KuroBear.SmartMod",
+ "~2.2 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Solar Eclipse Event": {
+ "ID": "KoihimeNakamura.SolarEclipseEvent",
+ "Default | UpdateKey": "Nexus:897",
+ "MapLocalVersions": { "1.3.1-20180131": "1.3.1" }
+ },
+
+ "SpaceCore": {
+ "ID": "spacechase0.SpaceCore",
+ "Default | UpdateKey": "Nexus:1348"
+ },
+
+ "Speedster": {
+ "ID": "Platonymous.Speedster",
+ "Default | UpdateKey": "Nexus:1102" // added in 1.3.1
+ },
+
+ "Split Screen": {
+ "ID": "Ilyaki.SplitScreen",
+ "~3.0.1 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.16 due to reflection into SMAPI internals
+ },
+
+ "Sprinkler Range": {
+ "ID": "cat.sprinklerrange",
+ "Default | UpdateKey": "Nexus:1179"
+ },
+
+ "Sprinkles": {
+ "ID": "Platonymous.Sprinkles",
+ "Default | UpdateKey": "Chucklefish:4592"
+ },
+
+ "Sprint and Dash": {
+ "ID": "SPDSprintAndDash",
+ "Default | UpdateKey": "Nexus:235",
+ "~1.0 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Sprint and Dash Redux": {
+ "ID": "littleraskol.SprintAndDashRedux",
+ "FormerIDs": "lrsk_sdvm_sndr.0921161059", // changed in 1.3
+ "Default | UpdateKey": "Chucklefish:4201"
+ },
+
+ "StackSplitX": {
+ "ID": "tstaples.StackSplitX",
+ "Default | UpdateKey": "Nexus:798"
+ },
+
+ "Stardew Config Menu": {
+ "ID": "Juice805.StardewConfigMenu",
+ "Default | UpdateKey": "Nexus:1312"
+ },
+
+ "Stardew Content Compatibility Layer (SCCL)": {
+ "ID": "SCCL",
+ "Default | UpdateKey": "Nexus:889",
+ "~0.1 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Stardew Editor Game Integration": {
+ "ID": "spacechase0.StardewEditor.GameIntegration",
+ "Default | UpdateKey": "Nexus:1298"
+ },
+
+ "Stardew Notification": {
+ "ID": "stardewnotification",
+ "Default | UpdateKey": "GitHub:monopandora/StardewNotification"
+ },
+
+ "Stardew Symphony": {
+ "ID": "Omegasis.StardewSymphony",
+ "Default | UpdateKey": "Nexus:425" // added in 1.4.1
+ },
+
+ "StarDustCore": {
+ "ID": "StarDustCore",
+ "~ | Status": "Obsolete",
+ "~ | StatusReasonPhrase": "it was only used by earlier versions of Save Anywhere, and is no longer used or maintained."
+ },
+
+ "Starting Money": {
+ "ID": "mmanlapat.StartingMoney",
+ "FormerIDs": "StartingMoney", // changed in 1.1
+ "Default | UpdateKey": "Nexus:1138"
+ },
+
+ "StashItemsToChest": {
+ "ID": "BlueMod_StashItemsToChest",
+ "Default | UpdateKey": "GitHub:lambui/StardewValleyMod_StashItemsToChest",
+ "~1.0.1 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Stephan's Lots of Crops": {
+ "ID": "stephansstardewcrops",
+ "MapRemoteVersions": { "1.41": "1.1" }, // manifest not updated
+ "Default | UpdateKey": "Chucklefish:4314"
+ },
+
+ "Stumps to Hardwood Stumps": {
+ "ID": "StumpsToHardwoodStumps",
+ "Default | UpdateKey": "Nexus:691"
+ },
+
+ "Summit Reborn": {
+ "ID": "KoihimeNakamura.summitreborn",
+ "FormerIDs": "emissaryofinfinity.summitreborn", // changed in 1.0.2
+ "~1.0.2 | Status": "AssumeBroken" // broke in SDV 1.3 (runtime errors)
+ },
+
+ "Super Greenhouse Warp Modifier": {
+ "ID": "SuperGreenhouse",
+ "Default | UpdateKey": "Chucklefish:4334",
+ "~1.0 | Status": "AssumeBroken" // broke in SMAPI 2.0
+ },
+
+ "Swim Almost Anywhere / Swim Suit": {
+ "ID": "Platonymous.SwimSuit",
+ "Default | UpdateKey": "Nexus:1215" // added in 0.5.1
+ },
+
+ "Tapper Ready": {
+ "ID": "skunkkk.TapperReady",
+ "Default | UpdateKey": "Nexus:1219"
+ },
+
+ "Teh's Fishing Overhaul": {
+ "ID": "TehPers.FishingOverhaul",
+ "Default | UpdateKey": "Nexus:866"
+ },
+
+ "Teleporter": {
+ "ID": "Teleporter",
+ "Default | UpdateKey": "Chucklefish:4374",
+ "~1.0.2 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "The Long Night": {
+ "ID": "Pathoschild.TheLongNight",
+ "Default | UpdateKey": "Nexus:1369",
+ "~1.1.1 | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "Three-heart Dance Partner": {
+ "ID": "ThreeHeartDancePartner",
+ "Default | UpdateKey": "Nexus:500"
+ },
+
+ "TimeFreeze": {
+ "ID": "Omegasis.TimeFreeze",
+ "FormerIDs": "4108e859-333c-4fec-a1a7-d2e18c1019fe", // changed in 1.2
+ "Default | UpdateKey": "Nexus:973" // added in 1.2.1
+ },
+
+ "Time Reminder": {
+ "ID": "KoihimeNakamura.TimeReminder",
+ "MapLocalVersions": { "1.0-20170314": "1.0.2" },
+ "Default | UpdateKey": "Nexus:1000"
+ },
+
+ "TimeSpeed": {
+ "ID": "cantorsdust.TimeSpeed",
+ "FormerIDs": "community.TimeSpeed", // changed in 2.3.3
+ "Default | UpdateKey": "Nexus:169"
+ },
+
+ "To Do List": {
+ "ID": "eleanor.todolist",
+ "Default | UpdateKey": "Nexus:1630"
+ },
+
+ "Tool Charging": {
+ "ID": "mralbobo.ToolCharging",
+ "Default | UpdateKey": "GitHub:mralbobo/stardew-tool-charging"
+ },
+
+ "TractorMod": {
+ "ID": "Pathoschild.TractorMod",
+ "FormerIDs": "BlueMod_TractorMod | PhthaloBlue.TractorMod | community.TractorMod", // changed in 3.2, 4.0 beta, and 4.0
+ "Default | UpdateKey": "Nexus:1401",
+ "~4.5-beta | Status": "AssumeBroken" // broke in SDV 1.3
+ },
+
+ "TrainerMod": {
+ "ID": "SMAPI.TrainerMod",
+ "~ | Status": "Obsolete",
+ "~ | StatusReasonPhrase": "replaced by ConsoleCommands, which is added by the SMAPI installer."
+ },
+
+ "Tree Transplant": {
+ "ID": "TreeTransplant",
+ "Default | UpdateKey": "Nexus:1342"
+ },
+
+ "UI Info Suite": {
+ "ID": "Cdaragorn.UiInfoSuite",
+ "Default | UpdateKey": "Nexus:1150"
+ },
+
+ "UiModSuite": {
+ "ID": "Demiacle.UiModSuite",
+ "MapLocalVersions": { "0.5": "1.0" }, // not updated in manifest
+ "Default | UpdateKey": "Nexus:1023",
+ "~1.0 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Variable Grass": {
+ "ID": "dantheman999.VariableGrass",
+ "Default | UpdateKey": "GitHub:dantheman999301/StardewMods"
+ },
+
+ "Vertical Toolbar": {
+ "ID": "SB_VerticalToolMenu",
+ "Default | UpdateKey": "Nexus:943"
+ },
+
+ "WarpAnimals": {
+ "ID": "Symen.WarpAnimals",
+ "Default | UpdateKey": "Nexus:1400"
+ },
+
+ "What Farm Cave / WhatAMush": {
+ "ID": "WhatAMush",
+ "Default | UpdateKey": "Nexus:1097"
+ },
+
+ "WHats Up": {
+ "ID": "wHatsUp",
+ "Default | UpdateKey": "Nexus:1082"
+ },
+
+ "Winter Grass": {
+ "ID": "cat.wintergrass",
+ "Default | UpdateKey": "Nexus:1601"
+ },
+
+ "Xnb Loader": {
+ "ID": "Entoarox.XnbLoader",
+ "~1.1.10 | UpdateKey": "Chucklefish:4506" // only enable update checks up to 1.1.10 by request (has its own update-check feature)
+ },
+
+ "zDailyIncrease": {
+ "ID": "zdailyincrease",
+ "MapRemoteVersions": { "1.3.5": "1.3.4" }, // not updated in manifest
+ "Default | UpdateKey": "Chucklefish:4247"
+ },
+
+ "Zoom Out Extreme": {
+ "ID": "RockinMods.ZoomMod",
+ "FormerIDs": "ZoomMod", // changed circa 1.2.1
+ "Default | UpdateKey": "Nexus:1326",
+ "~0.1 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Zoryn's Better RNG": {
+ "ID": "Zoryn.BetterRNG",
+ "FormerIDs": "76b6d1e1-f7ba-4d72-8c32-5a1e6d2716f6", // changed in 1.6
+ "Default | UpdateKey": "GitHub:Zoryn4163/SMAPI-Mods",
+ "~1.6 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Zoryn's Calendar Anywhere": {
+ "ID": "Zoryn.CalendarAnywhere",
+ "FormerIDs": "a41c01cd-0437-43eb-944f-78cb5a53002a", // changed in 1.6
+ "Default | UpdateKey": "GitHub:Zoryn4163/SMAPI-Mods",
+ "~1.6 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Zoryn's Durable Fences": {
+ "ID": "Zoryn.DurableFences",
+ "FormerIDs": "56d3439c-7b9b-497e-9496-0c4890e8a00e", // changed in 1.6
+ "Default | UpdateKey": "GitHub:Zoryn4163/SMAPI-Mods"
+ },
+
+ "Zoryn's Health Bars": {
+ "ID": "Zoryn.HealthBars",
+ "Default | UpdateKey": "GitHub:Zoryn4163/SMAPI-Mods",
+ "~1.6 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Zoryn's Fishing Mod": {
+ "ID": "Zoryn.FishingMod",
+ "FormerIDs": "fa277b1f-265e-47c3-a84f-cd320cc74949", // changed in 1.6
+ "Default | UpdateKey": "GitHub:Zoryn4163/SMAPI-Mods"
+ },
+
+ "Zoryn's Junimo Deposit Anywhere": {
+ "ID": "Zoryn.JunimoDepositAnywhere",
+ "FormerIDs": "f93a4fe8-cade-4146-9335-b5f82fbbf7bc", // changed in 1.6
+ "Default | UpdateKey": "GitHub:Zoryn4163/SMAPI-Mods",
+ "~1.7 | Status": "AssumeBroken" // broke in SDV 1.2
+ },
+
+ "Zoryn's Movement Mod": {
+ "ID": "Zoryn.MovementModifier",
+ "FormerIDs": "8a632929-8335-484f-87dd-c29d2ba3215d", // changed in 1.6
+ "Default | UpdateKey": "GitHub:Zoryn4163/SMAPI-Mods"
+ },
+
+ "Zoryn's Regen Mod": {
+ "ID": "Zoryn.RegenMod",
+ "FormerIDs": "dfac4383-1b6b-4f33-ae4e-37fc23e5252e", // changed in 1.6
+ "Default | UpdateKey": "GitHub:Zoryn4163/SMAPI-Mods",
+ "~1.6 | Status": "AssumeBroken" // broke in SDV 1.2
+ }
+ }
+}