Stardew Valley
0 of 0

File information

Last updated

Original upload

Created by

Leroymilo

Uploaded by

Leroymilo

Virus scan

Safe to use

89 comments

  1. pinzol
    pinzol
    • premium
    • 54 kudos
    Hello! I wanted to ask smth: how do you think, is it possible to somehow add a turn on/turn off sound feature to the objects that we can toggle?

    Right now we can add a sound to such objects and it's great! But if we add not just a sound but a music track, you can't stop it then. Being able to turn off the track would've given an opportunity to create music boxes :') 

    If it's too complicated then just let's forget it, because it's a small thing not worth wasting too much time on it 
    1. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      That's an interesting idea, I took a look at the code and it seems to be possible, but it looks like it would be a lot of work to remember which Furniture is playing what sound/music so that it can be stopped, and I don't think I'll be able to make it work in multiplayer...
      I'm adding it to the todo list but I don't think I'll do it myself, maybe someone else will have the courage to implement it one day.
  2. Starwishgirl
    Starwishgirl
    • member
    • 2 kudos
    Man, I hope someone figures out how to make a standalone kitchen counter with this so I can add back my missing counter after the dining room upgrade! ToT So many beautiful counters... Just gone! (Also, awesome framework. Thank you so much for your work!)
    1. Ashrayne
      Ashrayne
      • member
      • 16 kudos
      Which mod were you using? Happy to go ask the modder if they are interested, or if not, will let me port it. I need a cute kitchen counter too now you mention it~
    2. Starwishgirl
      Starwishgirl
      • member
      • 2 kudos
      I personally use Cozy Farmhouse Kitchen for my kitchen! That would be awesome if you could! I'm sure I'm not the only one who misses my long counter after adding the dining room upgrade. <3
  3. spacesheepcaptain
    spacesheepcaptain
    • premium
    • 87 kudos
    thank you SO much! i had a mod which depended on CF so i had to find another way to make it work again. your instructions were very clear and easy to follow even for someone like me, who's not very smart with codes lol~
  4. tikamin557
    tikamin557
    • member
    • 201 kudos
    Thanks for adding the custom fish tank!
    This opens up another possibility for me!

    I have a few things to discuss with you...
    Is it possible to specify the path of the image that can be used in “Source Image”, such as “\Stardew Valley\Content\TileSheets”?
    //ContentPatcher content.json
            {
         "Action": "Load",
      "Target": "TileSheets/Test",
      "FromFile": "assets/Test.png"
    },
    (For example, I want to use a tile sheet added by CP like this.)
    I would like to be able to use a content patcher or ModConfig to allow the user to change the textures of the furniture added by this mod at will.
    //FurnitureFramework content.json
         "Source Image": "TileSheets/Test.png",

    One more thing, is it possible to remove the light function by default in the fish tank?
    The fish tank emits light at night.


    Another thing is that I can't seem to get rid of the furniture I added as “FishTank” because I can't throw it away or put it in a shipping box.
    Is there any way to make it possible to dispose of this?


    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    I use translation tools to read and write English. I apologize if the meaning is not understood or if there are strange expressions.
    1. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      To allow the player to choose between 2 textures, you can make 2 fish-tanks (with texture variants) and let the player choose which one to use. It is also possible to use the new Includes feature:

      in your content.json file you can write:

      {
      "Included": {
      "Fish Tank 1": {
      "Path": "fish_tank_1.json",
      "Enabled": true
      },

      "Fish Tank 2": {
      "Path": "fish_tank_2.json",
      "Enabled": false
      }
      }
      }

      And then have 2 files named "fish_tank_1.json" and "fish_tank_2.json", each one with the proper file path:

      {
      "Furniture": {
      "{{modID}}.my_fish_tank": {
      "Source Image": "fish_tank_1.png"// change to fish_tank_2 in fish_tank_2.json
      ... // other furniture properties
      }
      }
      }

      It is not possible (for now) to access the game's base sprite-sheets, I don't really know how to do it without breaking the "Source Image" field.

      About the light: I didn't notice it was doing this, I'll take care of it when I'll work on light-sources.

      I don't know why you can't throw your furniture in the trash, I just tried it with my example Fish Tank and it worked. Are you using the trash-can in the inventory menu?
    2. tikamin557
      tikamin557
      • member
      • 201 kudos
      I was wrong about not being able to get rid of the fish tank, sorry about that!
      (It was a fish tank with fish in it, so he could not throw it away.

      As for the lights, thank you in advance! Looking forward to your updates!

      I tried “Included” and got an error.
      I don't know what is wrong!  Please help!
      // [FF] content.json
      {
          "Format": 2,
              "Included": {
                  "Fish Tank 1": {
                      "Path": "fish_tank_1.json",
                      "Enabled": true
                  },
                  "Fish Tank 2": {
                      "Path: "fish_tank_2.json",
                      "Enabled": false
                  }
              }
      }
      Below are the details of the error. (It is long, so I will fold it up.)
      Spoiler:  
      Show

      [Furniture Framework] Could not load content.json for Tikamin557.FF.RecessedFishTank_NEW:
      StardewModdingAPI.Framework.Exceptions.SContentLoadException: Failed loading asset 'content.json' from SMAPI\tikamin557.ff.recessedfishtank_new: an unexpected error occurred.
       ---> Newtonsoft.Json.JsonReaderException: Can't parse JSON file at C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Mods\[BBB] Editing MOD\Recessed Fish Tank (SDV1.6)\[FF] Recessed Fish Tank\content.json. This doesn't seem to be valid JSON.
      Technical details: Invalid property identifier character: . Path 'Included', line 5, position 0.
      at StardewModdingAPI.Toolkit.Serialization.JsonHelper.ReadJsonFileIfExists[TModel](String fullPath, TModel& result) in E:\source\_Stardew\SMAPI\src\SMAPI.Toolkit\Serialization\JsonHelper.cs:line 86
      at StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadDataFile[T](IAssetName assetName, FileInfo file) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 180
      at StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadExact[T](IAssetName assetName, Boolean useCache) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 120
      --- End of inner exception stack trace ---
      at StardewModdingAPI.Framework.ContentManagers.ModContentManager.ThrowLoadError(IAssetName assetName, ContentLoadErrorType errorType, String reasonPhrase, Exception exception) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 319
      at StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadExact[T](IAssetName assetName, Boolean useCache) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 132
      at StardewModdingAPI.Framework.ModHelpers.ModContentHelper.Load[T](String relativePath) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ModHelpers\ModContentHelper.cs:line 57
      at FurnitureFramework.FurniturePack.load(String path) in /mnt/data/Code/SV Mods/Furniture Framework/FurnitureFramework/FurniturePack.cs:line 175
      I tried to remove the (“Format”: 2,) part and followed what you pasted as code and got a similar error.
      Spoiler:  
      Show

      // [FF] content.json
      {
        "Included": {
        "Fish Tank 1": {
      "Path": "fish_tank_1.json",
      "Enabled": true
        },
       "Fish Tank 2": {
      "Path: "fish_tank_2.json",
      "Enabled": false
        }
      }
      }
      [Furniture Framework] Could not load content.json for Tikamin557.FF.RecessedFishTank_NEW:
      StardewModdingAPI.Framework.Exceptions.SContentLoadException: Failed loading asset 'content.json' from SMAPI\tikamin557.ff.recessedfishtank_new: an unexpected error occurred.
       ---> Newtonsoft.Json.JsonReaderException: Can't parse JSON file at C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Mods\[BBB] Editing MOD\Recessed Fish Tank (SDV1.6)\[FF] Recessed Fish Tank\content.json. This doesn't seem to be valid JSON.
      Technical details: Invalid property identifier character: . Path 'Included', line 3, position 0.
      at StardewModdingAPI.Toolkit.Serialization.JsonHelper.ReadJsonFileIfExists[TModel](String fullPath, TModel& result) in E:\source\_Stardew\SMAPI\src\SMAPI.Toolkit\Serialization\JsonHelper.cs:line 86
      at StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadDataFile[T](IAssetName assetName, FileInfo file) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 180
      at StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadExact[T](IAssetName assetName, Boolean useCache) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 120
      --- End of inner exception stack trace ---
      at StardewModdingAPI.Framework.ContentManagers.ModContentManager.ThrowLoadError(IAssetName assetName, ContentLoadErrorType errorType, String reasonPhrase, Exception exception) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 319
      at StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadExact[T](IAssetName assetName, Boolean useCache) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 132
      at StardewModdingAPI.Framework.ModHelpers.ModContentHelper.Load[T](String relativePath) in E:\source\_Stardew\SMAPI\src\SMAPI\Framework\ModHelpers\ModContentHelper.cs:line 57
      at FurnitureFramework.FurniturePack.load(String path) in /mnt/data/Code/SV Mods/Furniture Framework/FurnitureFramework/FurniturePack.cs:line 175
    3. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      There was a missing quotation mark " ("Path: instead of "Path": ), I just fixed it in my original answer. I recommend using this validator to check if a json file is correct, it will tell you which lines have mistakes.
    4. tikamin557
      tikamin557
      • member
      • 201 kudos
      Oh! Sorry, I checked the whole thing and didn't notice that part...
      “validator”! This is incredibly useful! I didn't know such a tool existed...thanks for telling us about it!
      It helped me a lot!
    5. tikamin557
      tikamin557
      • member
      • 201 kudos
      There seems to be another problem,
      Why doesn't an item appear in the Generic Mod Config Menu even if I set “Enabled” in the “Included” section?
      I used the above code for “Included” as it is, but the json loading is working correctly according to “Enabled” true/false, but the item is not displayed in the Generic Mod Config Menu.
    6. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      I think I understand the issue, you need to add an empty "Furniture" dictionary in the content.json, like this:
      {
      "Format": 2,
      "Furniture: {},
      "Includes": {
      ...// keep what was already here
      }
      }

      That's on me, I forgot to remove the requirement for Furniture definitions.
    7. tikamin557
      tikamin557
      • member
      • 201 kudos
      Thank you! So “Included” itself will work, but it does not show up in the Generic Mod Config Menu even if I set it to “Enabled”.Can you help me with this problem?
    8. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      Setting "Enabled" will only change the default state of the config option, can you share your log through this site so I can help? A screenshot of the config menu will help too.
    9. tikamin557
      tikamin557
      • member
      • 201 kudos
      It is displayed in the following tabs!
      Spoiler:  
      Show

      [SMAPI log parser
      // [My Mod] content.json
      {
      "Format": 2,
      "Furniture": {
        "TsRFT_B00_Vanilla_01": {
      "Display Name": "LongPillar",
      "Rotations": 1,
      "Collisions": { "Width": 1, "Height": 1 },
      "Placement Restriction": 2,
      "Source Image": "assets/LongPillar(Spacer).png",
      "Source Rect": { "X": 0, "Y": 0, "Width": 16, "Height": 64 }
        }
      },
      "Included": {
        "FishTank1": {
      "Path": "fish_tank_1.json",
      "Enabled": true
        },
        "FishTank2": {
      "Path": "fish_tank_2.json",
      "Enabled": false
        }
      }
      }
      // [My Mod] config.json
      {}


      Shouldn't the [My Mod] settings appear in ModConfig?

      In the meantime, I will also share the status of the "FurnitureFramework" setup.
        "slot_place_key": "MouseRight",
        "slot_take_key": "MouseRight",
        "disable_AT_warning": false,
        "enable_slot_debug": false,
        "slot_debug_alpha": 0.5,
        "slot_debug_default_color": {
      "B": 147,
      "G": 20,
      "R": 255,
      "A": 255
    10. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      I have no idea why it doesn't work...
      Your mod's name should appear in the config menu but it's not.
      Can you try deleting the "config.json" file of your mod and restart the game?
      If it still doesn't work, I think I will only be able to help if you send me your Furniture Pack so I can try to figure our what's wrong.
    11. tikamin557
      tikamin557
      • member
      • 201 kudos
      I deleted “config.json” and restarted.
      The new “config.json” shows the text representing the item, but the item still does not appear in ModConfig.
      {
        ".FishTank1": true,
        ".FishTank2": false
      }
      I share the file for this mod that I am creating!
      [Mod file. Google Drive link]
    12. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      Ok, so there were multiple issues:
      - your Furniture in the included files should have the same ID (the key in the "Furniture" dictionary) so that the game knows that they are the same but with different definitions
      - I made a mistake in my code causing an issue when a Furniture pack defines the same Furniture multiple times (even with included files)

      I'll fix the code and upload the new version shortly. I'll also send you a correction of your pack so you don't have to worry about it.
    13. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      I just uploaded the fix, here's a "fixed" version of the pack you sent me, please note that the IDs need to be the same over every definition of your Furniture so that the game knows it's the same Furniture with a different definition: https://drive.google.com/file/d/1vMVypTbAxzeavNaqVY9UivUMuLgf3a1d/view?usp=sharing
    14. tikamin557
      tikamin557
      • member
      • 201 kudos
      Oh! I see, that's how you used “Included”.
      (I thought it was used to turn on/off furniture to be added...)
      Thank you for the correction of the file and also the new version!

      However, I am sorry to keep repeating this, but that setting still does not appear on the ModConfig screen, and I cannot toggle true/false in ModConfig.(´;ω;`)
      (If you open “config.json” and rewrite true/false directly, the change itself will be applied.)
      [SMAPI log parser]
      (We are using the latest version of the Furniture Framework and the mod files that you modified for us.)
      Spoiler:  
      Show

      // config.json
      {
        ".Black Variant": false,
        ".Blue Variant": false
      }


      I would like to confirm that I may have misunderstood the fundamental point,
      If I use the “Enabled” property of “Included”, the user can freely change its true/false value in the “Generic Mod Config Menu”, right?

      --------------------------------------------------------------------------------------------------------------------------------------------
      I use translation tools to read and write English. I apologize if the meaning is not understood or if there are strange expressions.
    15. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      The "Enabled" value in the Furniture Pack only sets the default value for the config option, it should appear anyway, it works fine for me. I have no idea why it won't appear in your game, the only thing I can imagine is the game's language but I don't understand why it would break the config menu.
      Anyway, it's always possible to change the config by editing the mod's config.json.
    16. tikamin557
      tikamin557
      • member
      • 201 kudos
      I see, so if everything is normal, the item should appear in ModConfig just by using “Included” …
      If we learn anything, we will let you know!
      I understand it for now! Thank you for the lengthy discussion!
  5. dvd0801
    dvd0801
    • member
    • 0 kudos
    How can the table in picture 4 put two items?
    1. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      It's a feature of the mod, check the documentation here.
    2. dvd0801
      dvd0801
      • member
      • 0 kudos
      I don’t know English, so I use a translator. Is there any simple and direct teaching method?
    3. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      You can use the Example Pack as a reference but I can only help in English or French.
    4. dvd0801
      dvd0801
      • member
      • 0 kudos
      I don't see what downloading Furniture Framework can do at all. I just want a MOD that can be used as soon as I download it. This is very difficult for a novice who can't read English.
    5. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      This mod is a Framework, it is made so that mod authors can create their own Furniture more easily and with more freedom. If you are not planning on making a mod with this Framework, I can't help you much.
    6. dvd0801
      dvd0801
      • member
      • 0 kudos
      I understand, thank you, because I only know how to use it, but I don’t know how to make it.
    7. Ashrayne
      Ashrayne
      • member
      • 16 kudos
      If you're looking for some lovely living room furniture, check out Lynn's Livingroom. If you just want an extendable table that works great with Market Town, try (CP) Combination Table
  6. pinzol
    pinzol
    • premium
    • 54 kudos
    Hello! I've been wandering around pitifully, trying to figure out how to add custom furniture to the game, the easy way. And your mod was like a sudden blessing. Very excited to use it. It's so easy to understand and your template file is just a chef's kiss. Absolutely amazing work.
  7. valerinpandora
    valerinpandora
    • member
    • 0 kudos
    Is it possible to have the Display Names for items (and possibly descriptions if they exist) make use of the i18n translations?

    And also would it be possible for the player to set what stores they would like the items to show up in and/or custom prices?
    1. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      About i18n translations for Display Names, I don't know how i18n works for now, but I will add this to the todo list. In the game, Furniture descriptions are hard-coded and only depend on the placement rules (inside/outside), but I think that I wouldn't be too hard to change this.

      About stores, it is already possible to set stores in which each Furniture will show up, see this part of the documentation. The price you give for a Furniture will be the same in all shops.
      If you want more control over how your Furniture shows up in shops, you have to make a Content Patcher (CP) Pack, see this part of the documentation to learn how to make a "mixed content pack". If you do this, you'll be able to define a "ConfigSchema" in the CP Pack, which will create config options for the Generic Mod Config Menu and allow players to configure your shops.
    2. valerinpandora
      valerinpandora
      • member
      • 0 kudos
      I actually never noticed it was hard coded descriptions for furniture. O_o; The game itself should take care of translations for that part then. (For the translation stuff from the wiki: Translations API)

      re: User Configuration
      Aha so that's how you do that! I've done just Content Patcher stuff before but never a mixed content pack. Excited to dive into this part now that I've got my custom furniture working.

      Thank you so much for your hard work on the resource.
    3. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      I added custom descriptions to the Framework (as expected, it wasn't really hard).

      I'm still planning on adding support for i18n translations later, I'll let you know when it'll be implemented.
    4. valerinpandora
      valerinpandora
      • member
      • 0 kudos
      Awesome! Thank you so much!
  8. tikamin557
    tikamin557
    • member
    • 201 kudos
    Hello!
    I just found out about this mod today and I want to thank you so much for creating this wonderful mod!
    There were many restrictions on furniture added using CP in SDV1.6, and I was frustrated that I could not create the furniture I wanted, but thanks to this mod, I will be able to create what I want to create!
    I've only looked through a few of them, but I was even impressed with the github guide, which is very detailed and easy to understand!
    Again, thank you so much!!!!!
    A new wind blew in the mod creation process, which had been a bit stuck in a rut!
    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    I use translation tools to read and write English. I apologize if the meaning is not understood or if there are strange expressions.
    1. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      Thanks for your support, it means a lot! I'm glad what I made is being useful to creators!
  9. demoniccpeach
    demoniccpeach
    • member
    • 0 kudos
    i saw your comment under custom furniture mod and i was wondering if i could use this mod instead of that one?
    1. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      If you're making a mod, absolutely! Everything you'll need is in the documentation.
      If you have a mod that requires Custom Furniture, no. The author of the mod would have to port their mod for the Furniture Framework.
  10. Ashrayne
    Ashrayne
    • member
    • 16 kudos
    Following the development of this mod with interest! I recently ported StarAmy's bakery furniture mod. It uses a 1.6 update of Aedenthorn's FDF that's frankly on life support it's bugged so bad. What I WANT is a set of shop display furniture that I can functionally use to create an actual storefront via HaPyke's Market Town. This is an incredibly talented and collaborative community so I have faith that we can make this happen eventually! :)
    1. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      Hi, thank you for your interest. From what I know about the game's code, having multiple slots per Furniture to store objects is a challenging feature because it requires storing these new slots in the game's save data (it only has a single slot per Furniture hardcoded into it). Also I don't really know how to make such a feature compatible with HaPyke's Market Town, but I'll take a look.
      Long story short, this is something I thought about adding to this Framework, but it's not a priority because of the complexity of the task, I've contacted the author of the updated FDF mod to learn how they did it, hoping that I could learn how to do it from them.
    2. Ashrayne
      Ashrayne
      • member
      • 16 kudos
      Thanks for being willing to look into it! Re interacting with Market Town, the fastest way is likely to ask HaPyke. I'm a total novice but even I can tell that guy has got to be an absolute coding titan to make a mod that does everything his does.
    3. Ashrayne
      Ashrayne
      • member
      • 16 kudos
      I see that slot functionality has now been included. I'll be attempting conversion to your mod this afternoon. My compliments, your modder instructions on Github are extremely well written so that even a novice like myself can follow along. :) 
    4. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      Thanks for your compliments, it means a lot! I'm currently working on a 2.0 version that will change some stuff in the format, so you might have to convert your mods again when it releases...
      I'm also in contact with HaPyke to plan out how to make this mod compatible with Market Town, I'm confident that we can work it out!
    5. Ashrayne
      Ashrayne
      • member
      • 16 kudos
      I'm so delighted to hear this! I'm running through your example pack, and I don't see an analogous option for a wall shelf. The way my mod is doing it currently is load the wall shelf sprite as a painting-type object with CP, and then install slots on it to place objects via FDF. This sounds potentially doable with your framework as well? I suspect you've already done the hard part with the slot functionality.
    6. Leroymilo
      Leroymilo
      • premium
      • 24 kudos
      I did not implement wall mounted Furniture yet (mostly because nobody asked), but you can try to make it wall mounted by setting the "Force Type" field to "painting", I have not tested it but it might work on a stroke of luck.
      I'm adding proper implementation of wall-furniture to the todo list anyway, but it might take a while until I get to implement it.
    7. Ashrayne
      Ashrayne
      • member
      • 16 kudos
      Interesting! I will try that out. If it doesn't work, no worries. This mod has increased so much in such a short span of time, and I wouldn't want you to feel obligated to add anything