add item repository fixes from CJB Cheats Menu code

This commit is contained in:
Jesse Plamondon-Willard 2020-07-17 12:09:07 -04:00
parent 16a37fc89f
commit 4590b75bc3
No known key found for this signature in database
GPG Key ID: CF8B1456B3E29F49
2 changed files with 22 additions and 4 deletions

View File

@ -8,7 +8,13 @@
-->
## Upcoming release
* Fixed launcher's fallback logic on Linux when no compatible terminal was found (thanks to jlaw!).
* For players:
* Fixed launcher's fallback logic on Linux when no compatible terminal was found (thanks to jlaw!).
* For the Console Commands mod:
* Fixed error opening menu when some item data is invalid.
* Fixed spawned Floor TV not functional as a TV (thanks to Platonymous!).
* Fixed incorrect color for sturgeon roe.
## 3.6.1
Released 21 June 2020 for Stardew Valley 1.4.1 or later.

View File

@ -77,7 +77,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
// furniture
foreach (int id in this.TryLoad<int, string>("Data\\Furniture").Keys)
{
if (id == 1466 || id == 1468)
if (id == 1466 || id == 1468 || id == 1680)
yield return this.TryCreate(ItemType.Furniture, id, () => new TV(id, Vector2.Zero));
else
yield return this.TryCreate(ItemType.Furniture, id, () => new Furniture(id, Vector2.Zero));
@ -192,7 +192,7 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
SObject input = this.TryCreate(ItemType.Object, -1, () => new SObject(pair.Key, 1))?.Item as SObject;
if (input == null || input.Category != SObject.FishCategory)
continue;
Color color = TailoringMenu.GetDyeColor(input) ?? Color.Orange;
Color color = this.GetRoeColor(input);
// yield roe
SObject roe = null;
@ -259,12 +259,24 @@ namespace StardewModdingAPI.Mods.ConsoleCommands.Framework
{
try
{
return new SearchableItem(type, id, createItem());
var item = createItem();
item.getDescription(); // force-load item data, so it crashes here if it's invalid
return new SearchableItem(type, id, item);
}
catch
{
return null; // if some item data is invalid, just don't include it
}
}
/// <summary>Get the color to use a given fish's roe.</summary>
/// <param name="fish">The fish whose roe to color.</param>
/// <remarks>Derived from <see cref="StardewValley.Buildings.FishPond.GetFishProduce"/>.</remarks>
private Color GetRoeColor(SObject fish)
{
return fish.ParentSheetIndex == 698 // sturgeon
? new Color(61, 55, 42)
: (TailoringMenu.GetDyeColor(fish) ?? Color.Orange);
}
}
}