#making-mods-general
1 messages · Page 607 of 1
"Well you ate a ghostfish, name kinda warned you already"
Problematically I can see this being something that people don't like about the mod 
Just the whole debuff system as a whole I feel like, cuz some of them are pretty nasty and I believe Poison, Paralysis, and Burn all last until you sleep or cure them
I should just say what berries cure what in their descriptions for people not already familiar with Pokemon
Oh sweet Lum Berry's description already hints towards that
"Lum_description": "Lum Berries have a somewhat dry, spicy, sweet, and bitter flavor. They are very nutritious and seem to cure a lot of ailments. They are currently in high demand as they are being used for cancer research.", Me from 2 years ago was on something fr 
"Cheri_description": "Cheri Berries are somewhat spicy. The capsaicin makes these berries particularly oily, which Joja extracts to make industrial machine lubricants. Cures Paralysis Status.",
Crying
Yknow realistically any raw fish would have like A chance of poisoning you 🤔
I don't want to add that for all of them, though... 
that's a lot of work 
Also no Stonefish isn't edible oops 
Wdym I cant just roll up with a tuna yhat has been in my pocket for 4 years
Whattt it's nottt
D:
Did someone fr throw a brick with a painted on face in the sea
I'll keep the entry just in case lol
If i wanted to make a whole aquarium as a temporary location in an event, should i just make it all custom tiles or is there a way i can put Real Fish in the fish tank
Like, somehow spawn in some fish swimming
That's what I wanted too </3 but it seems to need c#
Wow.. aquarium buddies..
Well having to sprite all the fish isn't the worst option
YOU CANT EAT RAW SNAILS?! 
I resorted to hand animating a carp in my event
but help is sos
yeah anything is possible with enough applications of temporary sprites and spent sanity
i tried making a fish jump out of the water once and it went horribly i just gave up. My fish was moonwalking
Fellow fish strugglers
Tas scares me
We can eat sap tho
wait that's so real I should add a debuff to that
I don't wanna do map hell anymore I'm gonna try and give up staring at C#
Im literally nowhere near map hell bc i refuse to work on my sprites for the npc
I could add poison to eggs but I don't want to kill Alex :(
The bigger problem is that my layers are a mess and I'll have to sort through all of those
I mean, no need to do so
Maybe these eggs are like the eggs in japan that can be eaten raw safely
He's immune
reminds me of my old creation that I will never release ever
Already got every and all sickness possible from eating those raw eggs so no need to worry anymore 
Must've been one big snail
very nexus of them
I keep feeling like I'm just making the mod increase difficulty for no reason like I dont have intended ways of removing these debuffs
You could always make it a config if you want it to be optional
true.. very very true...
I guess this is already using a config system for it so.. yeah actually I think I should just go with that

turns out most of the page doesn't care about version length, but changelogs is big baby and needs 12 characters or shorter 
which is just long enough to write "unofficial", a space, and one digit
I think transfering what I already have over to this config system should be easy enough
Is this the case on the legacy version of the mod upload form too? (Can you even still switch back to that?)
If not it might be worth bringing up to Nexus as feedback about that disparity
Actually probably worth bringing up either way
I don't think you can switch back, unless that's a setting on another page
took me a good while just to figure out where the new changelogs are entered after a file is already added
You can go back to the old form by editing the url
-# i still haven't been able to get used to the new one 
what's the url for the old one?
I was not expecting the vanilla Squid Ink Ravioli to have absolutely 0 context tags
Alright I've got this implemented! Now, FINALLY, I think I can go back to adding regular buffs to the food items in my mod. And THEN I'll go through and add status condition chances
This was a crazy detour istg 
Oh I guess it might've only been 100 minutes
hey y'all I've got a NPC mod commission client asking me to add something I've never worked with before. They're asking me if I can make it so that when an NPC gets married, the other players in multiplayer will no longer be able to see any of their heart cutscenes at all.
Does anyone know approximately how difficult this would be and if it'd be worth it for me to learn this for the sake of the commission
🤔 mmm....so, to be clear, this person wants absolutely all of the NPCs heart events to not trigger once they're married?
The example they gave is that if they marry Leah, they want none of the other players that they are playing with in multiplayer to be able to get any Leah cutscenes anymore
even the normal ones like 2-heart ones
for one modded NPC, or any of them
this is for basegame NPCs, and only the ones that have been married
tbh this definitely justifies C#
hmmm
but even then there is no way to identify that a heart event "belongs" to an NPC
yeah that's what I was worried about too
you'll have to do it manually for all 200 of them (roughly counting)
Ouch..
Yikes
in that case, I'm turning that down lol
(also don't forget modded NPCs, so potentially thousands)
does anyone know of a mod that's out there that does that already? So I can recommend it to her instead
although I doubt it, that sounds horrible to make
I don't think anything like that exists?
Likely doesn't exist because of what selph says, anyone who has made one would need to do it manually and it'd have to have been receiving updates over the years, and I've not seen one like it in post 1.6 at the very least
I'm not gonna say "do this" but what if you patched the friendship event precondition?
(I realize it may cause massive issues otherwise. Lol)
That wouldn't help identify it at all
Who's to say an event that requires friendship with Leah is a Leah heart event of that same manner
and not just an event that wants you to be friends with Leah (maybe to control whether she shows up or not among others)
or like, an event that happens to take place in her house
So just !modideas at them thanks
(also: some CP mods might not use the precondition but instead use CP When conditions)
True but they shouldn't do that
But they do!
So I'm trying to follow this guide https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_Framework_Mods
On step 2, it states that you can read custom assets by calling:
var animalExtensionDataAsset = Game1.content.Load<Dictionary<string, AnimalExtensionData>>("selph.ExtraAnimalConfig/AnimalExtensionData");
I currently have the following:
var customModifierDataAsset = Game1.content.Load<Dictionary<string, CustomModifier>>($"{ModEntry.ModId}/CustomModifier");
And am getting the error
An error occurred in the game's draw loop: Microsoft.Xna.Framework.Content.ContentLoadException: The content file was not found.
---> FileNotFoundException: Content\Nullnnow.MS-Books/CustomModifier.xnb
I should. I have the following:
public override void Entry(IModHelper helper)
{
StaticMonitor = Monitor;
StaticHelper = helper;
ModManifest = base.ModManifest;
var harmony = new Harmony(ModManifest.UniqueID);
Patcher.ApplyPatches(harmony);
helper.Events.Content.AssetRequested += OnAssetRequested;
}
public void OnAssetRequested(object? sender, AssetRequestedEventArgs e)
{
if (e.NameWithoutLocale.IsEquivalentTo($"{ModId}/CustomModifiers"))
{
e.LoadFrom(() => new Dictionary<string, CustomModifier>(), AssetLoadPriority.Exclusive);
}
}
Wait a minute
Give me a sec
I think I may be an idiot
CustomModifier☆☆s☆☆
yeah
By the powers of Yoba I compel thee...
-# Please work this time
FINALLY
I'M AN IDIOT
spoke too soon
I tried saving, and got an error log that is OVER 4 MILLION LINES LONG
Can you even parse that?
Yes. Its a bunch of NREs
mods ready to eat
Can you rig up a small explosion with those too?
I guess kinda, but it's more of a code explosion
I tried saving, and got an error log that is OVER 4 MILLION LINES LONG
it sounds like they already did
Oh boy I sure do love adding botulism to my mod :)
I did some cursed C# just roughly testing if this would work and. apparently it did
and when I say cursed I mean smapi gave me a warning and had to assist loading it 
but hey!!! There's fish!!! they be movin!!! for trying to make my own C# code at midnight (2 am now) for the first time I can look past the jank, I'll fix it tomorrow hopefully
its more or less just seeing if i could, and now i can fix it up
why is there an if (true) /genq
Its debug code to try and figure out what is going on.
ahh
It also exits the function in question early to prevent the aforementioned 4 million line log file
I pretty much always surround temporary, test, and debug code with an if (true) statement if it's more than a line long. It makes it very easy to toggle testing and to track which code to remove and which code to keep once everything is working
ohhh okay I suddenly understand the difference between using "Entries" and "Fields" (unrelated to the current convo sorry)
Whatever method works for you! I do this system because of 2 reasons. A) I primarily work with Python which can't do that, and B) this gives me a means of tracking functional versus broken code.
Agh maybe it's time for me to look into C# to make my aquarium too
But the problem is sdv doesn't have sharks. Or whales
So I'd need to draw those
is this where i can find help on trying to make an npc mod bc i was directed here after i made a post about it in nexus 
i also have no idea how to do pixel art the way it looks in game
Where to Start With SDV-Style Pixel Art
If you've never done pixel art before, don't stress! It's easy to pick up the basics - the key is to start small, ask for feedback, and incorporate that into your work.
To start, you'll want an art program. See a list of recommended programs in the !software command.
Here's some good beginner tutorials!
http://pixeljoint.com/forum/forum_posts.asp?TID=11299&PID=139322
https://medium.com/pixel-grimoire/how-to-start-making-pixel-art-2d1e31a5ceab
To start off, try opening an existing portrait and changing the outfit. Start small: edit a shirt pattern, change a jacket collar, or remove a scarf and draw the clothes underneath. Ask for feedback too! The best way to improve is learning how to identify what's wrong and why, so then you can work out how to fix it.
Here's more good tips from the artist of "Celeste":
General pixel art 1: https://www.patreon.com/posts/pixel-art-1-6971422
General pixel art 2: https://www.patreon.com/posts/pixel-art-part-2-11225146
Outlines: https://www.patreon.com/posts/outlines-14106192
Shading: https://www.patreon.com/posts/shading-13869731
Portraits: https://www.patreon.com/posts/portraits-8693396
SDV has a few quirks to remember too:
- Colour limits: Limit the number of shades you use - stick to six including the outline.
- Hue shifts: Rather than making shadows and highlights lighter or darker versions of the base tone, SDV shifts the hue too. Eg. a base orange will have yellow highlights and red shadows. This goes for skintones too!
- Light source: SDV uses a top-right & slightly forward light source - check the vanilla art for reference.
Most importantly, don't hesitate to ask questions and get advice from people. Have fun!
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
tbh the reason the pixel art part scares me is because of how DETAILED the character design is curse you mihoyo and your detailed af designs
ahh
Good news: The framework mod is correctly applying the vanilla professions! Bad news: Still occasionally crashing
how hard do you think this would be 
There's also this cool tool made by husky to help with npc data stuff https://huskyn1nja.github.io/StardewEventBuilder/
I think I fixed the crashing issue
Bronya's portrait honestly seems simple enough, the hard part would be her clip, her sprite though...
Anyway this long message is about sdv style pixel art!
#making-mods-general message
Easiest way to do her sprite is probably hold your phone further away and squint to see whaf the most striking parts are without the detail
ahh
And then you got some stuff to focus on
yeah ;w;
Yall, LogOnce is a freaking godsend
Now comes the scary part
... Testing custom modifiers
terrifying
Also theres a guy who makes hsr pixel art you can check out (not in the sdv style) but his username is skipha on Pinterest, might help to look at other pixel arts
You can also check out some other hoyo/sdv mods like the argenti on
But hey, at least this framework meets the initial requirements of allowing you to define items that benefit from any number of arbitrary professions!
There's boothill too
Anything after that is just extra credit!
oooh, i didnt know that thank u
Yall think this format will be easy enough to use for people to define custom price multipliers (for example, how cooked fish benefit from both the fisher and artisan professions)?
{
"Action": "EditData",
"Target": "Nullnnow.CMF/CustomModifier",
"Entries": {
"MondayModifier": {
"Multiplier": 0.5,
"Conditions": ["DAY_OF_WEEK Mon"]
},
"WednesdayModifier": {
"Multiplier": 1.5,
"Conditions": ["DAY_OF_WEEK Wed"]
},
"ThursdayModifier": {
"Multiplier": 2,
"Conditions": ["DAY_OF_WEEK Thu"]
},
"FridayModifier": {
"Multiplier": 2.5,
"Conditions": ["DAY_OF_WEEK Fri"]
},
"ButcherBruteModifier": {
"Multiplier": 10,
"Conditions": ["PLAYER_HAS_PROFESSION Current 2", "PLAYER_HAS_PROFESSION Current 26"]
}
}
},
{
"Action": "EditData",
"Target": "Data/Objects",
"Fields": {
// Cave Carrot
"78": {
"CustomFields": {
"Nullnnow.CMF/CustomModifiers": "Rancher, Blacksmith"
}
},
// Diamond
"72": {
"CustomFields": {
"Nullnnow.CMF/CustomModifiers": "MondayModifier, WednesdayModifier, ThursdayModifier, FridayModifier"
}
},
// Bat Wing
"767": {
"CustomFields": {
"Nullnnow.CMF/CustomModifiers": "ButcherBruteModifier"
}
}
}
}
you should reuse the game's classes
What do you mean?
QuantityModifier
this is the same thing used in ShopData.PriceModifiers
so it'll be consistent
the other thing i'd do, since you already got a custom asset, is to have the custom asset take a context tag or GSQ that filters for which items this modifier applies to
if you force people to attach custom fields to each item then it'd be impossible to cover arbitrary mod added items
Okay. It should be noted that it turns out that the custom asset is currently completely broken 
oh yea another thing is that Condition is most commonly a string
because u can do AND with , and OR with ANY
if u make it a list people may be confused about whether it's gonna be an AND or an OR, and there r some implications re: json
What to do while waiting for flight….maps!
(I did end up making GSQs in FTM an "any" list, mostly so people didn't have to deal with escape quoting
not optimal for clarity & it was just a 1.6-alpha era whim, though)
yea i am always torn between obey vanilla and modder qol 
i do lean towards obey vanilla most of the time unless it's dire times over there
my 2.0 stuff just does "condition": "string" so far, but I might end up stapling on "ConditionList" too eventually
OMG I'M AN IDIOT, It'd help if I actually enabled the custom asset
added DMT/barrier to Dynamic Map Tiles https://www.nexusmods.com/stardewvalley/mods/33900
DMT/barrier
Prevent certain character types from entering this tile.
Accepted Value
A list of character types separated by pipes ('|'). Possibe character types include:
- Character
- FarmAnimal
- NPC
- Pet
- Child
- Horse
- Junimo
- JunimoHarvester
- TrashBear
- Raccoon
- Farmer
- Monster
and all specific monster types. Note that character types will also check subtypes, so Character will check every character type, NPC will check NPCs and any NPC subtypes (like Pet, Monster, etc).
Example
"DMT/barrier": "AngryRoger|Serpent|Farmer|Pet"
my hors is banned...
I think I'll take a break from the framework mod for now. Later I plan on resuming work on the rock refinement mod that caused this spiral in the first place 😅
fancy font letter blocks
popping in here just to say Tiled aint so bad :P
Tiled is great
Is this correct as a Condition if I am trying to trigger an action only if the Jonghyuk & Spanner mod (Arknir.Jonghyuk) is NOT installed, and a player has the special order active from that mod (jhLanternFestival)?
"Condition": "PLAYER_SPECIAL_ORDER_ACTIVE Any jhLanternFestival, !{{HasMod |contains=Arknir.Jonghyuk}}",
🤔 wait, but how will they have a special order active if they dont have the mod
This is for cleaning up my multiplayer save, since a player joined with the mod originally and apparently engaged with the NPC all the way up to triggering the special order, which alerted the rest of us to the fact that they were running with the extra NPC by themselves (and gave us gibberish since the strings were obviously missing for everyone else)
a
That looks correct to me I think
the debug command doesn't clear it from the journal, so I'm hoping this will do the trick instead.
i think it looks ok too
awesome, thanks
sigh i have to make maps
🤔 is there a way to have the unpacker not unpack the different language files
I just dragged them into a separate subfolder to make it easier to find the file I want
I guess you could- yeah
I usually keep one extra so I know which actually have multiple languages
That rarely matters at all, just a thing I did
I did send in a PR for the unpacker to add an option to not unpack the different language files actually, but it is not yet merged
But if you felt like building it yourself that is always an option if you were desparate enough
hm.. this tells me a lot about which of my scrapped npcs i took this character data from lol
squiggly red goes brrr
even while //? 😔
this might be a super dumb question but are there any (basic interactive) resources available with eg screenshots/images of maps & tile coordinates that can be used to assist with custom event creation? honestly was going to go down the path of building my own tool but wanted to double check that nothing similar already exists...
You can always just open a map in Tiled, use the debug mod to know the coordinate of a tile in-game…
Or use our national Husky's wonderful event tool he just finished this week: https://huskyn1nja.github.io/StardewEventBuilder/
(iirc he has an update in the work to be able to upload a map and see coordinate, it's just not out yet (next week iirc))
ohh love it. yeah effectively would be looking for basically that exact tool but with a game-aware GUI, ie drag wizard onto a specific tile on the map, draw paths for NPC movement etc
might keep my eye out for that upcoming release, good tip about Tiled too - thanks 😄
If you want to see what has been planned
But you can still make your own tool if you feel it can be useful, don't forget we all love two cakes ^^
that's awesome! really good, thanks for the heads-up
very possible that I will... just depends how far the current hyperfixation goes lmao
with events there are so many different ways someone could make an event builder that you make another one but focus on a different way of doing it, which other people may prefer/find easier.
Hm, is that generally possible to make a mod that makes two other mods compatible?
With hasmod and cp edits
Taken two other mods are by someone else
what are you trying to do specifically?
It is in some situations, yes. I have a mod that makes Tilly and Riley compatible with one another by moving Riley's house. However, you can't change the mods themselves, so you just have to tidy up after they've both applied their patches to the game - which doesn't always work.
Nothing specific just theory
Yet
Then the answer is "it depends".
loading... 😄 initially for my own terrible c# eventbuilder class but will figure out how to make it usable for other modders one day when it actually functions 😂`
I would like to use Content Patcher to edit the price od Dinosaur Eggs/Mayo specifically after reading the Treasure Appraisal Guide. Any ideas how I could do that? I have found that PLAYER_STAT Current Book_Artifact 1 is a Game state query, but not sure how I would apply it.
Just on your patch
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#edit-a-list example in that bloc I think
Sorry if I'm being dense, Object Data don't have a condition field? (besides in Geode Drops)
so is making ui for sdv mods still a nightmare or there are utility/tools to do it more easily/convert from unity UGI canvas or something ?
what does your patch looks like?
there is the Stardew UI framework
"Action": "EditData",
"Target": "Data/Objects",
"Fields": {
"107": { // Dinosaur Egg
"Price": "1250"
},
"807": { // Dinosaur Mayonnaise
"Price": "2550"
}
},
"When": {
"Sell Prices & Adjustments": true
}
},```
I tried messing around with the When condition but it wouldn't recognize PLAYER_STAT as a token
No I don't think When accepts a GSQ
That's fair, it didn't seem like it
I see the Condition field used here and ther throughout the CP documentation, but I don't see how exactly it works
maybe someone else would be able to help you further
Condition in cp is talking about When usually
When there's a field named Condition or similar then it's conventionally something that takes a string and will be checked as GSQ
Ah, I didn't know, thank you!
Object data does indeed lack any field name condition so pls elaborate on ur goal
Apply the above patch only after reading the book Treasure Appraisal Guide (/having the related Special Power)
Make a mail flag out of the stat and use when hasflag
But warning you wouldn't get retroactive price boost
Yeah, I'm used to this with CP object editing
Great idea, I haven't used mail flags myself but I've seen it in other mods, I'll give it a try! ^^
Sharing a little bit of a tease for what I'm working on
The christmas tree is interestingly cursed
at least your carpets and food aint the literal voidnever found out the issue lol
I feel like, of all people, you shouldn't be bothered with some void
A Southern Hemisphere Christmas
I don't know why I love it so much, but making flavored items of any variety is just such a fun little project. I just wish I could figure out how to make a custom cask that will let me improve the quality of weapons, tools, clothes, and all the other equippables though, because that's been too much for my pea brain to figure out lol
this might have been what you meant but I can't get the mailflag to apply on an existing save where the book was already read. Creating a new save and then reading the book (and sleeping) applies the patch perfectly, same with loading an older save where the book hadn't been read yet. But no matter what I do I can't get the patch to apply to a save where the book is already read. I've tried using debug commands to remove the book power and then read it again, as well as setting the mailflag to seen.
This is the flag:
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"SVBO.ArtifactBookDinosaurEgg": {
"Id": "SVBO.ArtifactBookDinosaurEgg",
"Trigger": "DayStarted",
"Condition": "PLAYER_STAT Current Book_Artifact 1",
"HostOnly": true,
"MarkActionApplied": false,
"Action": "AddMail Host SVBO.ArtifactBookDinosaurEgg received"
}
}
},```
Am I doing something wrong?
did you add MarkActionApplied recently?
I tried setting it to true as well, but tbh I do not know what it does 🤷
I referenced Cornucopia More Crops mail flags since I've used them for conditions myself
mark action applied just means the trigger action can happen again, otherwise, it just won't
if it was set to true and it ran, that's it. you can i think make it unapply with console cmds i think, but that'll be why it works for new saves but not old ones
I made backups and loaded that after reverting to false
I also tried before ever setting it to true
I'v ehad the book read for weeks and tried to apply this patch for the first time a few hours ago
You can use debug gq PLAYER_STAT Current Book_Artifact 1 in the console while in your already-read save to see if the player stat has actually been incremented.
I did, and it has
Have you been checking with a dinosaur egg you already owned or did you trash it and spawn a new one?
I spawned new ones
If you're using debug commands to set the mail flag on your already-read save and it's still not changing the price, the issue isn't with the trigger action, it's that the patch to change the price isn't applying. Have you done a patch summary to check it applied?
What does that entail exactly? Problem I'm having is it works just fine on any save that doesn't have the Book read
What does what entail?
Sorry: "Have you done a patch summary to check it applied?"
Patch export data/objects?
patch summary <mod id>
It will list all the patches in your mod and whether they have been applied
If the object price change patch hasn't been applied because the condition wasn't met, it will say that
(Also, I am keeping in mind that this is only happening on the already-read save. I haven't missed or forgotten that point ^_^)
Did the patch summary in my already read save and the patch to change the price does apply
And have you tried a patch export of data/objects to check the price?
God I know what the problem is...
I edit the price again bc of an SVE event after this patch, I am dense
Haha whoops
Thank you for your help, I think I should be able to solve my issue now (the patch export was very enlightening, should have done that hours ago) ♥
Well, at least you got a bit more knowledge for future for how to troubleshoot things like this! You're welcome :)
Yeah, I shouldn't be so scared to ask for help here. I just tell myself everyone will call me a fraud (or some other bs)
Asking for help proves you are not a fraud!
(also I want to get my level up so I can apply for mod author one day ^^)
I'm struggling to make an upgraded cask that can increase the quality of any item of any category. I don't know how the vanilla cask even works, because its output method doesn't make sense to me; "OutputMethod": "StardewValley.Objects.Cask, Stardew Valley: OutputCask". What does this reference? It sure doesn't reference the Objects.json, from what I can tell.
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
you can just modify the input trigger + the custom cask multiplier
all in CP
the output function just returns the input but with higher quality
That's the thing. I've copied from the vanilla cask, and this is where I am right now: https://smapi.io/json/none/e73409049c004f5aab16c9b6755fb080
Maybe I'm overlooking something obvious?
Extra Machine Config? I'm using that as a dependency already as I needed it for other machines
I just got stuck where I am because I wasn't able to figure out what I needed to change, aside from the output method for the obvious reason that it isn't the vanilla cask lol
I'm this much of a moron; I see I need to put the custom field in my machine's data, but where in my file SHOULD I put that custom field? This is what I'm currently working with; https://smapi.io/json/none/e74649995b184184933228a40211a47c
I tried adding "CustomFields": "selph.ExtraMachineConfig.IsCustomCask" to the end of the entry for the object, but that resulted in SMAPI showing me this error on startup (before even loading a save); https://smapi.io/log/09a8a22004e8469cbb505ce587de81c7
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 9 C# mods and 1 content packs.
wrong file i think
I don't know what the right file would be then, as the two jsons I've linked are the only jsons related to the custom cask.
well the one file you posted does not have machine data
Well I'm not sure what else is needed for it to count as machine data then. I haven't had any problems with other machines, as far as I am aware. What exactly constitutes as machine data?
the first file you posted before that post with the log
I need the version where you made the change that SMAPI is complaining about
https://smapi.io/json/none/354f3bb71787466daed47a0e8031bfc5 Here's the file that caused the smapi log
oh wait i see it now
lmao serves me right for using me phone
but yeah wrong place; you want to put it in where the Data/Machines entry is defined
and CustomFields is a dictionary of string to string
aka the file with cask data you posted before the log
So the one that has all the recipes?
actually the file you did post did not have the customfields
anyway yes
(for future reference, to avoid confusing your helpers when you post a file that's causing an error please post the state it's in that is causing said error, not the "before" correct state)
(I do not know if that makes sense)
I think I understand. The file I sent with the smapi log accidentally didn't have customfields, because at the time I undid it and forgot I probably needed it in there
yeah I was definitely lost lol
My bad lmao. Anyway, I just put the custom field in my machine's data file, before/after the OutputRules? Or inside each output rule?
before/after
https://smapi.io/json/none/5e85db7738934fcf9cd85f4943c2730b
https://smapi.io/log/61c44956dfa44a6f830a0b92fb4e5739
I appear to be having a similar issue with that change.
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 9 C# mods and 1 content packs.
CustomFields is a map of strings to strings
so you need "CustomFields":{ "blabla" : "true" }
Oh, the brackets.
I get a massive wall of text error now. Whole lot of red. (had to use a different save because I forgot to set that I don't need a cellar for testing, hence some of the errors)
https://smapi.io/json/none/c6de33a689b340b6bd0eb73baafadcd6
https://smapi.io/log/0a42b4a4879a4be19afc041342197d31
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 9 C# mods and 1 content packs.
Like, they're hardcoded to not have quality?
Because that was what I've been trying to do this whole time lmao
What would tool quality even mean
quality is part of the base Item class, but that field has no meaning on the Tool class (I don't believe it will even draw the star)
So I've been struggling in vain for nothing this whole time huh lmao
Like, just as a concept
What would a quality tool do?
Other than only make you cry once
Oh it wouldn't do anything. I just like making stupid content.
you have to sharpen your tool every time you use it to bring it to max quality
(monster hunter sharpness but for digging holes in the dirt)
Look i still think of the couch
I was mainly just trying to cover as many bases as I can, since I already got it to make milk, beer, etc out of tools. I just wanted to try to cask everything for the complete package
the couch?
I'm assuming the same limitations are on weapons, clothing, and all other forms of equipment?
the game derives several things from the Object class that don't really use all its fields, and quality is only used by certain categories of actual Object-type objects
any class that doesn't subclass Object is kill
yep, you can patch things into using them (or subclass but that's even more awkward), but most don't care about quality or draw the stars
||like increased buffs for rings? Not sure||
||damage on tools?||
Oh hey my coffee is ready back to work
Welp, time to cry in a corner for wasting all that time lmao. At least I can make Iron Hoe Roe and Iridium Axe Mayonnaise with my nonsense mod.
and machines specifically only support Object (and children); Tool is not one of them
Wait. How does iron hoe roe work
iron hoe roe... what do it taste like
the fact that you can put tools in a machine in the first place is an EMC invention
Selph, wasn't preserve index unqualified
it is; I think Campaigner is tricking the system by manually adding the qualifier? (and not using the inherit function)
For the record, this is what I was doing with roe, for example https://smapi.io/json/none/d8be7e94f48244afbfa295681910060a
Literally doing this for EVERY artisan good. Why? Because I can lmao
That's hilarious
It all started with milk (which I was not aware was a sensitive topic elsewhere), and my mind decided "DO IT ALL"
And now I'm demotivated because of no tool/weapon/clothing/etc quality. At least I know how to make a cask now lmao
dino pants flavored mayo pls
Dino pants becomes House Plant sadly. Qualified item IDs or whatever
ahh well
Would love a way to preserve the item NAME rather than the ID, but is there a way to do that?
Milk is a sensitive topic...?
Over in #modded-stardew yes. Pinned comment. Apparently, they took it a bit too far with milk jokes at some point in the past.
I mean, I'm covering every artisan good, so I've got that little bit of leeway. Hoe Roe is my favorite thing now, but still. I am a man on a mission to make Lucky Purple Shorts artisan goods, and by god I'm gonna do it.
I just have a few more machines left to make lol
lucky purple... juice?
like green eggs and ham and goose juice
be the Dr Seuss of Stardew
Well, I currently have Beer, Coffee, Juice, Mead, Wine, Milk (all four versions), Cheese (both versions), Mayonnaise (all four versions), Roe, and Aged Roe. All working just fine, aside from names being goofy due to IDs like the dino pants/house plant issue earlier. So, I'm on my way to being a unqualified doctor I guess lol
And yes, Lucky Purple Shorts Juice is a thing. It was part of my main mod that has jank code, so I figured that out early on lol
(tbh I know it's meant to be a cursed mod but it's probably not a good idea to have a machine that can swallow a user's 42k Iridium Hoe if they click it wrong)
hmm i mean they have the same item id number I think but they're different objects
is that fixable selph? can we get dino pants mayo
Try Return Scepter Coffee. I did that when testing by accident lol
(because gods know people can't read)
millions down the drain
-# it's fixable by not having the recipe in the first place
"your machine ate my 5 million dollar tool" skill issue /j
oh wait not the same thing being asked
I do need to make a config toggle (on by default) to disallow equippables and tools, but that's easy enough to do later.
flavoring an item with pants I something I didn't know I wanted to do until now but I can't live without it
Once I finish all the artisan goods I still have left, I'll upload the mod so you can have that horrendous content lol
If I wanted wild trees to naturally spawn, that would require FTM? However, if I just wanted players to buy saplings (or possibly obtain as loot), that would not require FTM? Right?
if those wild trees have predetermined spots you don't need FTM
u can add a tree without ftm yeah
(aka vanilla)
u can edit map them in
They would be a new type of wild tree.
(FTM also doesn't do trees currently) (planned for 2.0)
(also works)
Oh I must have misread. Sorry.
sapodilla trees on ginger island my beloved
shake the tree
Thanks y'all!
that’s a neat emoji -_- lol
Hi, kinda oddball question i know, but i was doing some googling and apparently SV mods do a lot with unpacking xnb files?
Trying to change a font for another game, in the process of workshopping a mod
!unpack
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
npcs sharing a birthday shoudlnt cause problems right..?
thanks, im kinda overthinking every aspect of making this custom npc
nw
only issue kinda would be it possibly not showing on the calendar right?
ohhh yeah uhh
there was a mod that solved this but it seems to be broken for 1.6
hmm
any npc modders know if there's like, a solution for that
for now im just gonna ignore i ever had this thought lol
I think UI Info Suite 2 or some other mod in my mod list makes them cycle
and/or show everyone
if i had a mod that adds an npc with a same bday i'd check but i don't, use custom npc mods
oh yeah ui info suite 2 has a birthday icon next to the daily luck n stuff
i think selph meant it cycles on the calendar?
ohh i havent checked
vanilla calendar only shows one npc portrait if multiple share a birthday. but i'm pretty sure it shows everyone's names on hover
there's at least one mod that addresses the only-one-portrait situation
The normal stardew unpacking tool won't work for other games, but you can use xnbnode
already done that actually
working with the discord on the other game to see what i can do about editing the orignal fonts
the guide was very useful
Are they angelcode fonts?
I don't know? XD
That's the most common format for bitmap fonts
if they don't use the same underlying font format as stardew then i'm not sure how much will transfer
if you're looking at stardew for pointers
Less stardew and more general unpacking
Nobody in the other game's modding scene has really messed with font changes much
everything in the png files looks solid for what its worth
i have nonzero familiarity with stardew's fonts so feel free to ask if you need anything
I guess at this point i should be able to open the .json files with notepad or another text editor?
those do look like they could be the same kind of spritefont
!json can you share one of the jsons with this link? (don't worry about the schema)
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
you can just pick "none" for the schema/format on the uploader
Here is FontConsole: https://smapi.io/json/none/532b08a0e7ea4f1bae94c1cfca8e5918
I thought these were QR codes at a glance 
and FontEditor: https://smapi.io/json/none/1f2de826c8324f39844840bd65d7a405
ok i don't think it's the same format as stardew but it looks more or less equivalent
Sounds like good news
the bad news is this data is extremely tedious to generate by hand, so ideally you will want to have a program or at least a script or something to build it
i would guess that these files were generated by using a particular tool that slurps up a .ttf or something and spits out a sprite atlas (the .png) and this format of json
this is probably the point where i should put in my glyphs together that i want to add in
TTF?
truetype font. it's a standard pc font file format
Oh right
yep thats the font type
I have an image here somewhere but i've closed the file smh
your best bet is to figure out what tool they used for this to make the game and use the same one yourself
is your goal to replace the fonts entirely, or just to add glyphs?
add glyphs
truthfully your best bet is probably to use the tool in either case though. adding could be very tricky
As of right now the engine reads something like goði as go (asterisk) i as it doesn't recognize the charachter.
The game's dev suggested that i check the workshop's localization mods to see if the fonts he used include the glyphs but it didn't seem like they did. When i asked about adding special runes, his response was: "To have the new special character show up properly, you would need to add a new font that includes it. The default font is pretty basic and (asterisk) is default for when a character can't be found."
Could i alternatively just create a new font file and go from there?
I'm not sure how easy it is to do that though
yeah, my suggestion to use the same tool would probably generate you a new font (like the original but with more glyphs) that you would load instead
Thank you!
I know its frustating on your end to not have all the peices, so i really appreciate it!
sure thing
(my nonzero experience with stardew's fonts is that i made a stardew mod to solve this exact problem)
Oh neat! Looks like i came in at the right place and time.
Thank you again for your help, i'll update later as i can
Someone who was translating the game into Welsh ended up using one of the other custom languages that had created a very large font with numerous characters on it. One of the other fonts files they needed required me to make an xnb containing the required font files which also required me to used a hex editor to do some manual editing as whatever encoding I tried it failed when saving, it was very tedious.
I have pretty much completely forgotten everything I learned from the brief history I had playing with the fonts
Once I got it working for them I didn't want to touch it ever again
I just need a second set of eyes since I've never really gotten my head fully around ChairTiles. Does this look right?
"Action": "EditData",
"Target": "Data/ChairTiles",
"Entries": {
"TestSheet/9/16": "1/1/down/bench/-1/-1/false/Tilesheets\\CustomSheet"
}
}```
{
"Action": "Load",
"Target": "Fonts/SpriteFont1, Fonts/tinyFont, Fonts/SmallFont",
"FromFile": "assets/{{TargetWithoutPath}}.cy-CY.xnb",
"When": {"Language": "cy"}
},
Looking it up
these are the xnb files I had to make/load into the game
im not 100%, but have this tutorial
https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Sitting_to_Custom_Map_Chairs
Last edited by AtlasVBot on 2025-09-13 18:56:10
[This tutorial is a WIP by Majickian and should not be considered a finished product at this time.]
This is a tutorial for adding the ability to sit on custom chair tiles place on a custom map.
I was using that tutorial. Neither that nor any of the examples in this chat when I searched ever call fields... So im confused
"Entries" just replaces all entries afaik
"To add an entry, just specify an entry that doesn't exist". yes
oh
that does not remove other entries
I know I have to do fields for trash cans. (I made that mistake once)
There we go LOL
yeah ur chairtiles look correct
thanks
hiya there guys, is there anyone who could help me troubleshoot my mod?
My garbage uses Entries, but it's under the TargetField of GarbageCans, also seems to work fine
still confused about when to use which so i guess i'll ask
provide more info, but sure
So I think that's saying if you want to CHANGE a few fields, as in alter
Then Fields is better, because you aren't replicating the whole file again
But adding, entries is fine
not sure. Maybe someone can clarify
well basically, i'm trying to make it so my custom house changes with each season. i have the tilesheets for each season i just dk how to code it because it's kind of a custom map
house interior or exterior?
exterior
just name your tilesheets <season>_<nameoftilesheet> and you're done
outside does it auto
show me the code?
this is curretly the names of the tilesheets, but i'm not sure what to do with them or how to code it or where so it changes
so instead of "OsmarHouse_Spring" it would be "Spring_OsmarHouse"
because it's an outdoors map and all the tilesheets have seasonal names (spring_, summer_ etc) the seasonal variants will change automatically.
so what would i use in tiled? the spring variant as default?
yep
Fair enough
@tiny zealot I got some advice from someone in the other discord who knew more about editing that json file.
Unsure how much of this you're aware of but i'll forward it here
helllooo if one were to do a basic seasonal portrait thing using {{season}} which of these would be correct? ignore the yellow squiggly line-
are those loads? it’s hard to tell without entire patches
uhmmm for both?
yeah
right hey iw as distracted by existing
well then it depends on what the Appearances are
oh wow you explain it all
oh, this isn't using the appearances system, I wanna make a more basic version first
claudeeee whyyyyy
seasonal portraits and sprites are usually handled best by appearence buttt
don’t build bad habits >:(
generally speaking you just ,,,, season token
appearances are hard and I wanna make something for absolute beginners 
theyre not that hard!
well, for absolute beginner
there’s a tutorial and example for them!
the fact it's all seperated but one block is throwing me off a bit

is this for a custom NPC?
nope, I wanna make a template for first-time modders to make something
kinda like Si's modder's pie
if this isn’t for custom NPCs then you have no choice but to work with the already existing Appearances
ohhh yeah- I'm adding a list of the vanilla ones at the end but idk how to properly explain how to find modded NPC's ones
vanilla doesn't use Appearances
it absolutely does for the winter outfits and other stuff
i think, only for winter
but that still means it uses it
ik I spelled that wrong but idc enough-
yes pls go ahead I am lost 
-# aaah why does it take me 35 years to learn ANYTHING
-# oh yeah cause I'm disabled
-# that makes sense
i’ll shut up after this but i beg you to reconsider teaching others things that aren’t best practice. having to unlearn them will be more work in the end
gotcha :/ I'll prolly shove this idea back into the wip folder for now-
i don’t think you have to give it up entirely!
ik! I do have an appearances version in said wip folder but like aaah it takes me an insane amount of time to do stuff and it's frustrating
i am, oh so very wordy
oh wait,,, season token for load isn't,, uh
fuck
[tries to share content.json]
[it deletes my comments]

gonna cry
i like explaining things, doesn't mean im any good
I see comments in that
omg ty 
yeah you have the put the comments before the {} otherwise the parser simply kills them
like editimage bit also had comments but they got yoinked
thank u for letting me write a novel about loading assets
oh, weird, might be worth reporting to pathos
is pathos the one that codes the site? i mean its pathos so i assume he does everything but
it's on the smapi domain, so he's at least involved in it
yeah, I mean plenty of pathos's stuff has community contributions (sometimes very large), but SMAPI stuff is gonna be managed by him on some level
either way he'll know where to send it if not
mm guess im gonna ping him
Ooh, it does! That's funky.
@ivory plume hey! hope you're well. 
im not sure how involved you are with the smapi.io site, but when uploading json files there the parser seemed to just delete any comment that is inside of brackets, don't know if that was intended or not.
sorry for pinging you so many times
It looks like:
- It kills the comments if they're following an opening object brace (
{), no matter if there are keys and values before it... - ...and if it's following an array closing brace:
] - ...but not if it's following a closing object brace:
}... - ...also not if it's following an array opening brace:
[
{
"Format": "2.9.0",
"$schema": "https://smapi.io/schemas/content-patcher.json",
"Changes": [
// Hello here!
{
// Hello!
"Action": "Load",
"Target": "{{ModID}}/Portraits/<NPCINTERANLID>_spring, {{ModID}}/Portraits/<NPCINTERANLID>_summer, {{ModID}}/Portraits/<NPCINTERANLID>_fall, {{ModID}}/Portraits/<NPCINTERANLID>_winter",
"FromFile": "Assets/Portraits/{{TargetWithoutPath}}.png"
},
{
"Action": "EditImage",
"Target": "Portraits/npcID",
"FromFile": "Assets/npcID_{{season}}.png"
}
]
// And here!
}
Oh, nope, it's a bit more complex than that.
If:
{
"Format": "2.9.0",
"$schema": "https://smapi.io/schemas/content-patcher.json",
"Changes": [
// Hello here!
{
// Hello!
"Action": "Load",
"Target": "{{ModID}}/Portraits/<NPCINTERANLID>_spring, {{ModID}}/Portraits/<NPCINTERANLID>_summer, {{ModID}}/Portraits/<NPCINTERANLID>_fall, {{ModID}}/Portraits/<NPCINTERANLID>_winter",
"FromFile": "Assets/Portraits/{{TargetWithoutPath}}.png"
},
{
"Action": "EditImage",
"Target": "Portraits/npcID",
"FromFile": "Assets/npcID_{{season}}.png"
}
// Hello again!
]
// And here!
}
In that instance, of the bottom two comments, only the one following the last closing object brace survives, and the one following the array closing brace that previously survived does not survive.
That's mainly a limitation of Json.NET, which I don't think we can do much about (besides submitting a PR for that repo). The validator needs to format the JSON using Json.NET so that the line numbers for any JSON schema validation errors match up, and Json.NET only partly supports outputting comments.
understood. i'll just, put the comments outside so it stops eating them. thank you
( gist.github.com )
Honestly, or even better, in a GitHub repo so you can see previous versions. It's linkable to people just the same.
Hello - I'm trying through Tiled and CP to make operational the fireplace in my custom interior. I've tried a TileData property on the Buildings layer of Action <every way in the world to do firePlace, fire_place>. When the map loads, the hand shows up when you hover over the fireplace, but no flames, no smoke. Is what I'm trying to do possible?
remind me in two days to add furniture re-layering for wall and floor furniture
is the bot dead?
I'll look to see if I can find the framework. If something exists, it might also let me make operational the kegs, casks, etc that I've got decorating the farm.
Ftm will do that
rip maru's robot
you have to do 2 not two
Unloveable is also TRUE
remind me in 2 days to add furniture re-layering for wall and floor furniture
... (#7181974) (2d | <t:1778960332>)
Thanks!
Oh god I think I might actually be done with the update for my mod... I've finished everything I had in my notes.
I should probably load the game and make sure there's no errors though
I'm sure I've still got a couple days of testing ahead of me but the actual bulk of adding content and stuff is done
on events
is there a way to make an animation permanent until a specific message has passed?
like i want Manny to stand up after another character says something
ohhh ok, so it loops until i tell it to stop
only loops if you tell it to loop
animate <actor> <flip> <loop> <frame duration> <frames...>
animate marnie false true 120 12 13 13 12
Silly question, but I'm still on my flavored item kick; is there a way to make the color applied to a flavored item NOT be as strong? I'm keeping my mod simple by reusing vanilla sprites (which also allows for modded sprites if someone uses a texture swap, big brain move here), but in my amusement, I found that if I apply the color of an input item to the output item (for example, amethyst to raisins), the output item has a 100% opacity color overlay. As amusing as that is, it's a bit too strong. Is there anything I can do to weaken this effect that doesn't involve changing to custom sprites?
man, going through and testing things actually sounds kinda awful (maybe that's just because I'm unmedicated today) so I might just like.. play stardew and make some adjustments from there. Things like forage spawns are something I've been wanting to see in action since I added them cuz I'm worried there's too much lol
My final testing pass was just playing a full, heavily modded game with my mod in it
and it found lots of stuff, would recommend
wait why do i need to add frame duration if im looping the animation?
it’s a required argument
It's great for stuff like your forage spawns, things that you sorta just need to see in action
anything in <> is required
i mean
do i put it at like
9999999?
or something
cause im gonna do stopanimation later
frame duration is for how long to spend on each frame of the animation, not how long the total animation takes
oh its just one frame
no
Bummer. Guess I should just add a toggle to have colors or not on the stuff that it blots out. Solid purple cheese is certainly funny, but not for everyone lol
That is tempting since each of my outputs "only" have 40 entries...
Would that set color be doable as just the alpha layer for how opaque the color is? Or is it the whole RGB as well?
Reason being is that my outputs rely on item categories, not direct items. Can't turn every gem purple, for example lol
just rgb, but turning the saturation down has almost the same effect
new EMC feature when
nou
nou, pronounced like now, aka you're working on it, good to know
Well, guess I'm just gonna stick with a toggle for "items have gaudy colors". I am not going through every single possible item manually for RGB values lmao
Fits well for emc
That looks like Crono to me!
don’t set it to 9999 or something because this can interact badly with stopAnimation
indeed! thanks
oh ok what do i set it as
120 is what schedule animations play at
this is an event tho
yeah i know
if you’re holding the last frame it doesn’t matter
its a one frame animation
okay uhhhh, now how do i get an NPC to open a door within an event?
interior door specifically
Hello everyone, i am completely new at the mod creation community, i really want to create a mod for fashion sense for a hair but i fail multiple times, and i was looking for help, i am familiar and done the pixel art for the hair styles but what i having trouble is the programing part
what specifically is the issue? is the pack loading?
Yes
I unfortunately lost the file but the trouble it that fashion sense doesn't pick it up
Like doesn't recognize the mod at all
I try to copy the base of other mods but it didn't work
if it's just 1 frame why not use
showFrame?
hm
can't really have an animation with 1 frame
cause all my animates are 1 frame with durations
??
ive literally used animate for 1 frames like multiple times
a frame is a single image,
if you just need a single frame you can use
showFrame <actor> <frame>
You don't really need an animation if you don't ... you know, animate
well that sucks, now i gotta change all the animate commands from the previous events 
other than for like a schedule animation, but those are specifically animations anyway. In an event though
or ill just start using showframe for now
isnt it easier to use animate since there is stopanimation
stopanimation is to stop the animation, if you're using showframe you can just change to anotherframe when done
usually the one where you're about to walk
or whatever is needed
eh ill keep it in mind, thanks
any idea about this?
doAction <x> <y>
!log
xd
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.
stopAnimation also stops showFrame
?
follow the instructions of what governor said
x y is the tile
i know
it doesn't matter who is there, you're just performing an action on a tile
it's up to how the event looks for what is happening to the viewer
no-one by the door and it opens... oOOoooooOOOh a ghost or the wind blew it
someone standing by it, can assume they opened it
pretty sure the dolphin is an Ecco the Dolphin reference.
oooh ok
😛
tyty
hmm...
now i gotta change maps inside an event
ChangeLocation should work
but is something like globalfade/ChangeLocation Forest/19 20?
my expression when I forgot to add a MinFishingLevel to my pearls 
How do you make events in the farmhouse not break with custom farmhouse mods?
my understanding is that you dont

Far too ambitious goals for tonight:
- Do my rock refinement mod
- Work on my book mod update
The only possible way I can think of would be an edit patch to change the coordinates for every potential farmhouse. Which is excessive
Also, you misspelled duck
should i 
I'd just have to wait for another magic number]
dont forget the edit patches to change things for every upgrade and room renovation for every potential farmhouse too 🙂↕️
Touché

but hey if you've got like, idk. a million years to spare
So all the kids mods that have events, those are all broken if you have a different farmhouse?
You just have to use vanilla to use them?
Event in the void 🙂↕️
Damn lol
does the SMAPI console show your content pack loading? if not, there's probably an issue with the file/folder setup
(also, I don't see "author" or "texture" as valid fields anywhere in Fashion Sense's examples)
hey? is this code correct for this mod?
im making portraits for the mod linked below but idk if it's made right??
https://www.nexusmods.com/stardewvalley/mods/46075
im sorry what
assuming your mod has an assets folder containing KB_Katsuki.png, that should be fine
The real Pierre is the friends you made along the way
no it's targeting the original assets
that's the name of the npc's portrait
you do still need that file to exist, but if you're just asking whether the target is correct, I'll check
okay so is his internal name not Pierre or something?
Speedy did you recently run a kill debug command or something
this is what happens when i takes a break ;w; forgo
okay, so that mod doesn't load anything to that target; you'll want to copy it from here in their content.json
{
"Action": "Load",
"Target": "Portraits/KB_Katsuki",
"FromFile": "assets/Portraits/KB_Katsuki.png"
},```
He’s Pierre
and this applies for targeting my portraits to replace theirs?
yes, if you want to overwrite their portrait, EditImage with the same target and your replacement file
(i.e. what you had already, just with the same target they use)
there is also a psuse 500 instead of pause 500
He’s hiding
i fixed that
Hi
I am new here
hi
Hi!
You misspelled duck btw
did he visibly spawn correctly in your event?
How are you doing?
nope
well someone else did and i changed my name afterwards, as a joke :P
then most of those are probably because he's not there
Tired, its been a long day at work 😅
i warped him
and put him as Pierre -1000 -1000 in the beginning
his portraits work
but his warp didnt
make sure there aren't any errors about him loading into the event, ig, because it's saying he isn't in the event; I don't know exactly what you mean by portraits, but they probably don't require him to be present, unlike NPC movements
i mean like i want his portrait in the original npc mod to be replaced with the ones i made
(alright yeah, checking the code, changePortrait doesn't care if the NPC is actually in the event, as long as they're are real NPC; movement commands need them present)
Does anyone know of good guides on creating items with changing colors (e.g., how wine changes color based on the input fruit)?
- your Load will throw an error if the other mod is installed; only one mod can Load the same Target (generally)
- Your EditImage is still pointing at a Target that doesn't exist, so it'll never do anything
you just need the EditImage with "Target": "Portraits/KB_Katsuki", that's it
so no need for the mod id?
no, that mod doesn't use it in its Target
if it said Mods/{{ModId}}/KB_Katsuki in the original mod, that'd be fine, but you need to use whatever they use
so more like this?
replace "Load" with "EditImage", but otherwise yeah
I'm almost done with my mod, and some idiot (me) forgot to put commas in a file so the entire mod crashed. Love when that happens.
kk! thank you!
It may just be bc I'm on my phone rn, but does the copy color tag also visually change the output item?
yes
hellooo is there any specific guide just for i18ns?
thank you!!
turns out all the fancy commands I put for dialog in my i18n wouldn't have worked 
its pretty straightforward but there are some fancy things you can do with it if so desired
what sort of commands?
stuff like stats, $actions, lots of queries
you can do $ stuff in i18n
also the config page has a section for translations as well
idk about the other stuff but you can definitely do expressions and such in an i18n file
you have to pass the value into the translation
ah, I mean more elaborate stuff like this:
it's older stuff that I will be editing anyways
"MV.Municipal.Dialogue.Daily.24": "[LocalizedText Strings/MV.Municipal:MarlonName]'s got so many stories, I don't think [LocalizedText Strings/MV.Municipal:MarlonGenderHe]'ll ever run out of 'em.$h",
Localized text strings work...
You might just not be formatting them right
oh yay! hmm are stats okay?
That one I don't know
but Localized Text strings do work, and they don't need passthrough tokens
the only thing that doesn't work is CP tokens
which you can make work by passing them in as arguments
everything else gets pasted in as is and interpreted by the game as usual
(such as the ModId token in those localizedtext strings, which is why they wouldnt be working if they were written like that inside your i18n file)
I'm free. I uploaded my mod, closed out everything related to it, and now I can breathe again. Time to NOT touch modding again until I get bored and decide to make something again lmao

true, ModID tokens do count as tokens
But you can just change them to your mod ID and don't exactly have to pass them in
Hi everyone! I really hope I'm in the right place for this. I'm trying (and failing miserably! 😭) to do something that I think should be really simple?
All I want to do is add an inspectable headstone into my game that displays a message when you click it, preferably just through ContentPatcher.
I've been throwing myself at this for two days, I asked Reddit already, I even tried going nuts and learning to use Tiled, I've cried more times than I want to admit, Google is absolutely no help at all...
This is possible, right?
I'd like to tell it where to appear via coordinates and have it display an "in loving memory" message when it's clicked.
Yes! This should be a fairly straightforward project. It will involve Tiled and Content Patcher.
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
If you haven't seen it yet, there is also a whole section on the wiki dedicated to modding [[Modding:Index]]
For the text part, you'll want Action Message specifically on the map page
The basic overview of what you'll need to do is this:
- create a content patcher mod
- unpack the game files so you can edit a copy of the town map
- create a bit of map with your new gravestone using Tiled
- add the Message Action to the gravestone using tiledata
- add an editmap patch to your cp mod which loads your map slice and edits it into the existing map
There's instructions for each of these steps on either the modding section of the wiki or the cp docs
If you're struggling with a specific step, feel free to ask questions hete and we can help out
Thank you guys! I'm glad to know it's possible, at least! ^^'
I've been around the wiki a bunch and I think I might just need to step away for a bit. XP All the instructions on there are starting to look like gibberish. Lol
If I ever figure this out, I'm planning on releasing it as a template on Nexus (with instructions!) for others to edit, if they need/want a custom grave for something. ❤️
How would one get how long it takes an object to duplicate itself while in a crystalarium?
if it's currently in process, you can probably check minutesUntilReady on the machine instance
but if you mean in advance, you'd probably need to mimic the Data/Machines check logic for this stuff
tysm!! 
that description is pretty accurate. it's essentially what my mod does for stardew, but you give it just your data and it figures out all the math and edits, and stitches the texture together (plus the data format is, i believe, slightly different but more or less isomorphic)
I must have missed it but I checked fundamentals and many other sections but I was looking for what to do when a class member you need is wrapped with a MultipleMutexRequest and that NetList/netRef multiplayer stuff ?
The first thing you do is make sure you actually need to do what you're attempting to do
and that there isnt an easier way
a lot of the game's code isn't directly documented anywhere, generally, and that's a very esoteric class
one that has less risk of breaking multiplayer stuff
but if you DO need to get inside that class, typically the underlying list/collection/whatever is just on like a property or w/e inside it
FINALLY a working env branching model, but my beta is snapshot based from more-stable alpha builds
cant do ci/cl pipeline until i tweak my app to understand what headless means
oop wrong channel
😭
I basically need to directly sets the Chest fridge thing / adding / removing to it and making sure its saved/broadcasted in multiplayer and also intercept the itemgrabevent if its out of the mini-fridge/fridge UI
the way I used to do this before the multiplayer thing a long time ago was to copy the whole itemgrab stuff and fridge menu UI nd make my own so that whenever you used the fridge it would uses my menu instead
use GameLocation.GetFridge() to get the Chest and then lock its mutex (found on the Chest) as needed
(and ofc dont forget to unlock it too)
Gotcha gotcha
I was able to get the charachters all in a row and o have a friend who is making sprites for me
Once those get done then its just json editing XD
Had an idea, yet I have no idea where to start, so I'm gonna ash the most basic question; are custom bombs doable with just content patcher? Or do I need to know C#? Because I can't find anything in the unpacked files (unless I'm just blind?).
You need c#
yep, fully hardcoded
aside from a bomb_item tag existing (unrelated to functionality)
Well bummer.
i've also heard horror stories about the bomb code tbh
No Lucky Purple Shorts Bomb for me then
iirc yeah, bomb code kinda consists of load-bearing animations
The bomb code has personally insulted my mother, ichor
and animations means weird net broadcast methods etc
what's this world coming to 😔
(iirc FTM places bombs wrong and I just don't think about it) (aside from the Item wrapper workaround)
yeah like ... still same problem as back then, checking the wiki about events, completely forgot how to intercept an itemgrab menu only 3 matches in the search channels thing on discord, one is mine saying that word a few minutes ago 🙁 specifically in itemgrabmenu.cs intercepting the constructors when an UI is made to reroute those:
public ItemGrabMenu.behaviorOnItemSelect behaviorFunction;
public ItemGrabMenu.behaviorOnItemSelect behaviorOnItemGrab; //after an event which I dont know yet trigger this method: if (itemgrabMenu.sourceItem == GameLocation.GetFridge()) and if so change the ItemGrabMenu two behaviours to point to my code instead... Im reading https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Events but dont know what event I could use like player.InventoryChanged dont seems to be it, Display.MenuChanged seems to be more helpful but it would gets triggered lot of time and Id have to check each time if we are in an ItemGrabMenu menu (ie: the iclickable e.NewMenu is ItemGrabMenu ) possibly wasting code time to check UIs im not interested in.
can u explain what u wanna do high level
Display.MenuChanged is actually the correct thing to use for this and a is ItemGrabMenu check is cheap enough to fall in the "who cares" category
however if you are specific about the goal mayb there r better approach
add more page to the fridge, Im exploring wheter the old approach would still work before I commit to porting that ...and if i works add more pages to the mini-fridges once I am done with the normal fridge , thats why I need the behaviour in case you are in a page thats not possible in vanilla so my mod has to custom handle it to eventually do: h.fridge.items = items; with items being a List<Item> with the list of items managed by the mod across all pages
in that case i'd harmony patch Chest.ShowMenu
after that Id have to figure out the new stuff like how the multiplayer and mutex code affect that assignment of items directly to the fridge, also make a panic button if there is a mod or built-in feature that provide a mod configuration menu so when the game is updated and the fridge dont display the additional pges as vanilla which is an old issue that made peoples panic between game updates - like the items were still in the fridge but undisplayable and you had to take the items out and place them in again, the panic button would make a copy of the stored items in a json as described in the dta storage section of the wiki to make sure the items are safe even if the UI part of the mod stopped working
as for keeping items safe i wouldnt worry too much 
that sounds good, Id have to learn IL thought, I used to do this, counting on the fridge location not moving between updates... but for mini-fridges Id have to use harmony because they could be anywhere...
IInventory is not actually capped, its the ui which stops you, so you'd be able to get everything out eventually
nah it's just a prefix no IL
!harmony
Harmony is a framework for patching .NET code, allowing you to take any portion of the game's logic and insert or substitute your own. This gives you more flexibility and control than SMAPI helpers and events, at the cost of being typically more complex and difficult to use safely and correctly, and more likely to break with a future update of the game and/or SMAPI.
If you are trying to do something that isn't possible or practical with SMAPI alone, then Harmony is usually the solution.
For more information, refer to the following:
- Harmony Modder Guide - Intro, Use Cases, Initial Setup
- Tutorial: Harmony Patching - Types of patches and code examples
- Decompiling Stardew Valley - For finding methods to patch
some chest mods i'd reference for this is unlimited storage and chests anywhere
yeah Im looking at them atm and my old code on essedari smapi-mod-dump on github cuz I lost my code, wanted to maybe explore the possibility of it being compatible with the remote fridge mod as well
like its the discussion about the ui framework and seeing examples that make me motivated to do this, it was the most annoying part of modding to me and thats why I eventually quit... with what I saw now there is the possibility to easily add filters instead of browsing X pages, adding "upgrades" like cloud storage (to access the fridges anywere), buy items in bulk (lowest quality) getting a bulk rebate, etc
tbh with vanilla menu i am very hesitent to change away from the vanilla class lol
its terrible to have to do a gorillion harmony patches but thats the path of greater compatibility
thats fine, my old mods didnt really follow great compatibility best practices mostly because the behaviour things I cited earlier were private back then in code, thats why I had to completely replace the native fridge menu. Id like to do better this time especially with tons of feedback on the nexus about it
also I think smapi is .net core now so I need to use a new sln and not reuses my old one that was sets on ..net 4.X ? but the rest should be pretty much the same... I thought there was a template but https://stardewvalleywiki.com/Modding:IDE_reference#create-project seems to go throught the process manually (I have vs 2022 and 2026 )
There isn't any kinda official template afaik
I do have my own thing just for myself tho
You need to target net framework 6 now
There is an example on one of the migrations
there're update steps for projects here, but the example csproj contents are in the 1.5.5 page linked in one of the steps
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#How_to_update_your_mod
somebody might have a template somewhere, but I'm only familiar with platonymous's, which are on Nexus but like 1.4 era
yeah Im fine with it now, just had to remember what to name the project so its an upgrade to the old thing. seems to be all set 🙂 thanks
If I wanted to make a custom chest, what's the best way to approach this? I could always default to Alternative Textures, but it'd be nice to learn how to make a proper chest and not a reskin for once.
Nevermind, found Expanded Storage. I knew there was a mod for that
in functionnality you will need the itemgrabmenu and the two delegates I keep mentionning . Its the bread of butter of making a chest do something custom, you might have to recreate an itemgrabmenu as well depending on how you use/update the items in it by code
To be honest I’m a little worried that testing my mod is gonna be the hardest part of the process cuz I no longer have that persistent drive that I’ve had every day for the last like 6 weeks. Like it’s a weird in between phase where I don’t have consistent work to do but I’m not actually done and can’t just go do other things yet
I’m hoping this is just an issue because of my ADHD today and tomorrow the solution will be a lot clearer. 
hopefully it's some useful advice but I find that writing down a sheet/doc of what I have to test keeps me motivated and avoid the omg Im overburdened and overwhelmed by all there is to test so I can do it little bite by little bite with long sessions of playing the game normally as well 🙂
this is probably a wholly unnecessary amount of effort for the config menu for this mod and yet im doing it anyway
finally, cpu fan curve controller in sdv
idk if this is an art question or a general question but when making portraits as a Content patcher mod? do i align it the same as the mod has it?
#making-mods-art message
This mod's portraits are aligned different than the template on the wiki
https://www.nexusmods.com/stardewvalley/mods/46075
in what way 'aligned different'?
like this
this is how the original pixel art is in the original mod
and here's the ones i made
it shouldn't make a difference; your current layout is standard, but if theirs works then you could use that layout too
it'd be an issue if they had, say, an EditImage patch on their portrait asset that targets specific coordinates, since yours obviously wouldn't align
Hi I’m not sure if anyone is still awake but I tried to revive a mod for a modder and almost got it working. Some context: I want to use one of my machines to process her milk. I completely rewrote her mod and it works the cows moo, the milk jars appear and the milkshakes also appear but I tried injecting the rules so that her milk can be used to make milkshakes in my machine and it doesn’t work
What’s strange is that I’ve added compatibility for other mods in a similar way before so I’m not sure what’s going on now If I share the code could someone help me
do you want this published?
It’s published
I don't know if someone ever noticed, but in the game code the detection of hardwood dropped by Trees is like this:
{
numHardwood += item.Stack;
addedAdditionalHardwood = true;
}```
And it should be like this?
```if (drop.ItemId == "(O)709")
{
numHardwood += item.Stack;
addedAdditionalHardwood = true;
}```
I spent a lot of time debugging something until I noticed it wasn't me, it was the game that was checking something else
When you change the HotKey it doesn't open the map
The ItemId is never going to be "(O)709" so that won't work at all. That's a qualified item ID, not an unqualified ID
drop.ItemId and drop.QualifiedItemId are two different things, the former being 709 and the latter being (O)709
So the first snippet is working fine
The item id in the vanilla game for mahogany and mystic trees is "(O)709" in the xnb data files
It is not. The ItemId for Hardwood is 709, as seen in Data/Objects
Again it's important to remember the difference between a qualified item ID and a non-qualified one
Check the drops in the wildtreedata
Them using qualified item IDs does not make checking drop.ItemId wrong.
The ItemId on an object is always going to be unqualified.
That part of the code checks for the wildtreedatadrop info in the wildtreedata xnb, and that info has the (O) in the item id field
That does not matter when checking drop.ItemId
drop.ItemId == "709" and drop.QualifiedItemId == "(O)709" are equivalent in this case
It might create the drop using the qualified item ID, but it will still have its ItemId field set to "709"
Because that's just how the Object class works
or Item class, whichever one it is thats the superclass
Both the qualified and unqualified forms are stored and accessible via their relevant properties on the Item class
No matter how the item is created
Through a transpiler I changed the code to
{
Console.WriteLine("Hello");
numHardwood += item.Stack;
addedAdditionalHardwood = true;
}```
Then destroyed a Mahogany tree -> Nothing happened, no Hello
I changed with the transpiler the code to
{
Console.WriteLine("Hello");
numHardwood += item.Stack;
addedAdditionalHardwood = true;
}```
Suddenly, Hello in the console
Can you post which function this is so I can take another look at it?
(like the name of the function I mean pls do not post the whole thing-)



