#making-mods-general
1 messages · Page 540 of 1
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.
!log
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.
are the proper ways to share files for help
https://smapi.io/json/content-patcher/ca8c54000e064705b94c22c560d44a0b
https://smapi.io/log/48d0f1a62efd495e9ed1ee4ab39bd835
Im using an older patch of both smapi and content patcher so admittedly that may be part of my problem
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on macOS Unix 13.4.0, with 47 C# mods and 115 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it
so
you have :
"Target": "maps/VaelExterior",
i think it expects the name to be VaelExteriorTilesheet
lumi's got you, but in general we recommend testing your own mods on a minimal loadout--only your mod and its dependencies, plus any debug/testing mods you want
Ah okay! I can try that
And yeah, I was earlier -- but I particularly wanted to test it with some of my recolor mods, and SVE, so I threw my actual playing mods back in
I'll probably rework it though to be more barebones soon here, loading everything over and over is certainly a little bit of a pain when a lot of it is just fashion sense mods haha
ill do that after this test actually, may as well
IT WORKS!!!! Ty all so much oh my goodness
The grass successfully recolors and everything!!!!
yayy congrats!! 
Cody I keep thinking you're me because of the witchhat + your pfp looks ever so slightly like my pfp in another server... Witch hat gang XD
oh good we need a new iro/ichor duo after iro became junimo
juniro
Well there's always tia and I
true!
Me and Elizabeth
I can differentiate the two of you by aura
Most of the time

there is no atra only descending into insanity
Atra has never had Atra in their display name in the time I've known them lol
It was atraknits for a year
Hmm actually that does ring a bell
You've changed username so many times I cannot keep up lol
I've changed mine twice in the entire time I've been in the community
The period time when we were Quautum and Classical Mathperson was hilarious
I'm still fairly new but I've always been some variation of 'Claude' LOL
oh I love that-
I wasn't intending to actually be part of the community so when I first joined I was using my old username. And then when I decided to stay I picked a Stardew specific one and changed my discord to that.
oh also, how do you pronounce your user? sorry if I already asked and forgot-
Ah-bah-guy-uhn-yuh!
got it!
It's from oblivion so if you ever want to hear how it's pronounced you can google it and find videos!
aaah okay
Hey y'all! I am so lost on how to make the player recieve mail... I've looked at the Wiki, other peoples mods and everything, and I am so lost as to what I'm doing wrong DX
like so many tutourials are out of date too cause of 1.6. 🙁
and they say it's easy but like... it's been two days DX
A trigger action is the most common way to send mail, probably
have you unpacked the game yet? helps to look at the vanilla mail setups
which are indeed trigger actions
yeah tractions
theres examples of how to add triggeractions if u scroll on that page
so weird that no one mentions trigger actions DX They're like "download the Mail Framework Mod!" and then it just automatically works??? 😭 Thank you!! And I know AddMail but like, where do I put the actual mailID so the game knows what i'm talking about? Seperate json i'm assuming? I'm likely overthinking everything but I always get confused with where i put "include" vs "editdata" and so on DX
You need to patch in the mail data. You don't need to put it on a separate json if you don't want to.
I did do that part with the format and everything! I just didn't know where to put it
(People use separate json mostly for self organization, not necessity.)
You can put everything in content.json if you want.
do I patch it with a the whole "target" and everything? I wasn't sure how to format the actual putting it into the game and when I tried SMAPI told me no lol
If you are altering an asset already in the game. (in this case Data/Mail), you'd need a Target field, yeah.
Include is used if you want to extend your json into another json (for organizational purpose). If we are using this mail data as an example...
You can either do an EditData action on Data/Mail right in the content.json.
Or you can put that in a separate json named Mail.json (for example), and do an Include action for Mail.json in your content.json.
Thank you so much 🙂
does anyone have the unpacked content files just into one place, me editing them one by one then making content.json finding every dialogue is a hassale and i need it for a mod im working to make and i kept getting errors upon errors in the loading of the content pack, so i'd appreciate it if somebody already have them grouped in one i18 or something if that was possible
could you clarify?
If you mean some online resource for the unpack, uploading the entire unpack publicly somewhere would be redistributing the games assets and would not be allowed at that scale. That's why we make everyone unpack it themselves, as they must own the game to do so.
so the way i mod. .. actually lemme show, basically this is my method of modding and it feels like a cave man
i meant the unpacked thing but just grouped into one place so i can just search for the stuff i wanna edit withing one place instead of jumping fron file to file, and targeting it via content
i was trying to do that but i think its not possible because some of the dialogue check was by condition
you uhh. .. can but you will get a ton of errors
so i was wondering if anyone has the vanilla content grouped in an i18 or something
are you working in Visual Studio 2026? if so, it should behave just the same as Notepad++, Sublime Text, Visual Studio Code, etc where you can press Ctrl+Shift+F to find-in-files
intelij
incredible. vs26 really is just a jetbrains clone
i thought that was a paid version though?
anyway the point still stands, you can open your unpacked game content folder in a capable text editor of your choice and find-in-files to search for a pattern in many files rather than one-by-one
which is to say no, i don't believe there's a massive single collated conpacked content file with all human-readable data
oh idk how to do that, i was using this command patch export Characters/Dialogue/Abigail but its not showing all abigail related dialogue like from event
which would also be abysmal since it'd make it unclear which asset you're targeting to edit that data
nope, you won't find event dialogue in a character's dialogue folder, it's in the Data/Events assets instead
this is how i do it
"LogName": "Sewer Key Event",
"Action": "EditData",
"Target": "Data/Events/Town",
"Entries": {
"295672/f Gunther 2500": "none/-1000-etc
patch export is only interested in an asset, not the context, not any related data
yeah
thats why i asked for the compiled one but thanks anyway
Okay I'm at a loss DX What am i doing wrong that mail isn't arriving? https://smapi.io/json/content-patcher/eb1121e9cf064d9b9566a3a15078353f
(sorry this is my entire content json! DX
where did you read about that format for Data/mail entries?
someone said here not long ago in the chat but also i was referred https://stardewvalleywiki.com/Modding:Trigger_actions
https://stardewvalleywiki.com/Modding:Mail_data
your Data/mail patch doesn't match the format given on that wiki page at all hahah
You're using MFM syntax and not vanilla syntax
whats MFM
Mail (Framework Mod)
oh right
i am so confused DX I feel like I did have it that way but it didn't work since the wiki doesnt say what the game is supposed to do with the info
iirc u store/write the mail content, then code something to trigger that mail being sent and thats about
currently you have:
"Entries": {
"Id": "stardewaly.rosalie_RosalieMail_Id",
"GroupId": "stardewaly.rosalie.MAILTEST",
"Title": "Rosalie's Test Letter",
"Text": "Hey there @!^I had some extra moolah lying around... I thought maybe you could use it. Take care! ^ -Rosalie %action AddMoney 5000g %%[#]A Gift From Rosalie"
}
instead, this should be correct:
"Entries": {
"stardewaly.rosalie_RosalieMail_Id": "Hey there @!^I had some extra moolah lying around... I thought maybe you could use it. Take care! ^ -Rosalie %action AddMoney 5000g %%[#]A Gift From Rosalie"
}
when do you want the mail to send?
i believe their Data/TriggerActions patch handles sending the mail
Yeah, you put the ID as the mail key, and put the title in the entry itself. The wiki says nothing about Id, GroupId or Title in separate fields.
I'm just testing to make sure it works first so I had the farmer getting up at spring 3 but then i made it 4 so they could sleep and so on
i'll eventually have to do a mail flag too but Mail itself isalready a headache 😢
so how were you triggering the mail to send
any mail is a mail flag, including stardewaly.rosalie_RosalieMail_Id
nvm i see it
it's just that by adding an entry to Data/mail you're saying you want that mail flag to also have some readable mail in your mailbox
so you already know how it works and how to use them 🙂↕️
seems fine yeah the mail text wasn't formatted right but the triggeraction looks alr
I'll give it a shot 🙂
sorry to interrupt but i wonder if its possible to apply this logic in content.json
A = true, false
B = "",1,2,3
c = 1,2,3
if A true, B "", C 1 -> result use C 1
if A true, B 3, C 1 -> result use B 3
if A true, B 1, C 3 -> result use B 1
if A false, B any, C any -> result false (use vanilla)```
so its kind check A true or false -> check B empty or not, if empty check C, else use B
It didn't work DX
and do I not need MFM at all or is it like a must have if you do mail for a custom NPC mod?
You don't need MFM at all. For this, at least.
can you use "Target": "Data/mail" instead of "Target": "Data/Mail"?
Sure, patches that cause C1, B3 and B1 would have those cconditions in their when block, and the false flow is the absense of ppatches running
To clarify, you want to get the mail after you sleep on Spring 8, yes?
yes
I'm just testing so I keep changing the date based on my farmer and they keep sleeping and waking up to no mail lol
Make sure to test with a new save.
i decided to compile them all myself to make modding easier for anyone. . . wish me luck there is like 20k+ lines to compile T^T
do i need sepparate entries then since i need to use that B & C value?
any tips for coding in a lot of gift taste reactions? I read the wiki page, and I feel like I'm only going to be able to figure anything out by using actual references, as usual 😅
hmm i feel like learning where things are will make it easier to mod
cause u have to edit files and whatnot
pathing
my tip is to use actual references xd
most mods nowdays use the i18 method imo its easier to just have a vanilla i18 and do it that way
that's currently my only option lol
by "a lot" of gift taste reactions do u mean like coding a bunch in at once?
or like
just the reactions in general
and doing them
Uh, more so just understanding what I'm encountering when I look at the different references I have, I guess.
oh yeah if ur just doing i18n stuff then that makes sense
I used it on a new save and it seemed to work (Thank you @uncut viper) and tried "mail" instead of "Mail" (thank you @brave fable) but the action didn't go through in the letter
Smapi says :
[game] Letter 'stardewaly.rosalie_RosalieMail_Id' has invalid action command ' AddMoney 5000g ': required index 1 (int amount) has value '5000g', which can't be parsed as an integer
5000g is not a number, but 5000 is
I think I can copy the code structure alright, but I do not understand as much as I'd like with what's going on
what specifically is confusing
omg the wiki literally said xD I'll try again! Thank you!!
(Also, the reason you needed a new save is because by default, a trigger action will only happen once per save file. So your trigger action already happened and no edits after that were going to change that.)
I'll grab an example
yeah the mod im working in make you chose a to be part of a family of the families in town with acess to their room, and basically childhood friends with everyone else, so most of it i just need to change dialogues, reactions quest desc, basically every damn string imaginable
The wiki does not say to add a g
good luck soldier
yeah i just read it wrong cause it said "%action AddMoney 500%% to add 500g to the current player. " and iw as like "huh... ok so add 500g" xD
still in abigail but uh thanks 😭
imma share that i18 when i finish it
n
fine i18n
Yoba is good it worked 🙂 ❤️ thank yall!!
so, each reference I have which is a little more on the complex side has really different stuff going on. One of them uses AcceptGift_(O)233 for every gift that has a unique response, and I don't get what it's for, or how disliked/hated/ and neutral gifts are differentiated with this method.
Maybe I just need more references 🤷♀️
ohh
i can't remember if gift taste dialogue is layered or not like
accept gift dialogue should take precedent over the default dialogue
they are all pretty different in their approaches
i would imagine anyway
let me check wiki and maybe my own files
yeah i think if you have the item set to dislike/hated/like/neutral that will handle the loss/addition of friendship
plus default dialogue
but u can also give them unique dialogue
using acceptgift specifically
as a separate dialogue entry
thats in here
as opposed to the gift tastes section
oh, that's interesting!
AcceptGift: "Shown when receiving a non-birthday gift from the player. If omitted, defaults to the dialogue in Data/NPCGiftTastes."
and if u dont set a gift taste, it'll default to neutral
with some exceptions i think but yeah
tldr its just default vs unique
so, it says you can (match?) by gift taste (one of Loved, Liked, Neutral, Disliked, Hated, Positive (neutral/liked/loved), or Negative (disliked/hated));
is that set through the default way of handling tastes, like this example:"LogName": "SVTNiki Gift Taste Data - After 14 heart event", "Action": "EditData", "When": {"HasSeenEvent": "SVTNiki14Caffeine"}, "Target": "Data/NPCGiftTastes", "Entries": // Likes TripleShotEssprosso, Neutral Coffee { "SVTNiki": "{{i18n:SVTNiki.Gift.Love}}/264 609 230 Book_Horse/{{i18n:SVTNiki.Gift.Like}}/772 917 book_item 253/{{i18n:SVTNiki.Gift.Dislike}}/814 -5/{{i18n:SVTNiki.Gift.Hate}}//{{i18n:SVTNiki.Gift.Neutral}}/433 604 618 649 651 731 216 241 178 152 153 349 351 245 157 395/", }and then by using "accept gift" just makes the dialogue unique?
yes
by the logic yes
ive not edited gift tastes after a specific event so i dont know about that
nw xd
i mean theoretically
you could give really positive dialogue to a hated item
cause the gift taste and unique dialogue have no impact on each other
its just the default dialogue
right, ok. both could also be loaded in the same json doc to, right?
im not sure what that means
like if you had a specific giftresponses json
uhh yes you can do that you just target the dialogue stardew json
np!
I guess the biggest thing confusing me now is where one of my reference mods is hiding the actual gift taste code. I probably need more references, like I said!
possibly content.json
I'll check there again
or if its for a specific npc maybe theres a file for them although every modder does it differently xd
yeah, I've seen some interesting approaches
Do a find in files search for npxgifttastes rather than manually searching files
For someone new to modding what would be the best kinda project to start with?
thanks
maybe making a sprite/portrait replacer
Depends on what your end goal is though
you could start with a lot of basic stuff
that's just one of them
okay finally the settings works
but i keep getting this warning message on console when EnableCustom = true
[Content Patcher] Can't apply data patch "Portrait Settings (Vanilla) > EditData Mods/JP98_HDPortraits #3 > entry #1" to Mods/JP98_HDPortraits: failed converting entry to the expected type 'ShinHDPortraits.Models.MetadataModel': Error converting value {null} to type 'System.Int32'. Path 'Size'..
https://smapi.io/json/content-patcher/35253723f1024dd9a0a4db7cca3cd92d
anything and everything really, am a programming student so i thought starting to learn on my own and practice with modding games would help
i like replacing assets as a starting point, because if you like art, it's really fun to see your own stuff in the game!
there's some c# tutorials on the wiki
maybe you could learn the basics of that language and then try making some basic c# mods
npx detected
a node user has escaped #programmers-off-topic
"HasValue:Alex" is checking if the literal string Alex has any value in it, which it does. You want "HasValue:{{Alex}}"
(Likewise with the Abigail one in the above patch)
i've learned c++ and most of java but yea I'll take another peek at c#, would working with/ updating old mods for personal use also help in your poinion
ah i see, imma try it
god my spelling when i try to type fast TwT
if you're comfortable with java you'll be comfortable with c#
ok cool i figured between the two the syntax should be graspable
I don't code, so definitely ask the programmers in the thread where blueberry linked!
already tested , it ignore the custom settings and use global
o oki sorry if i was in the wrong spot, ty for your help!
Regardless of what you tested, "HasValue:Abigail" is not checking if your {{Abigail}} token has a value.
this isn't the wrong place, it's just that there's probably a better one! Good luck. Coding's a great skill to hone
yeah, but weird by doing that the result is exactly what i want
but the console just keep get warning message
is there a way to make custom tv channels?
There is the "Custom TV Channel" framework. I believe Astraios was also working on a TV channel framework, though I don't know the progress on it.
thanks for your respond before now i find the solution
instead making EnableCustom as general i need to specify one by one for each villagers
The UI will so long but at least its work now, no warning
edit: nvm still got warning
i figure dout how to add to the alredy there channel think ill do that
If you're talking about Queen of Sauce, it has hardcoded elements that mean you can't just add to it.
And with a quick check, so does the Tip Channel.
ahh dang it
is there a not very time consuming way to make it so your npcs don't automatically like all the universal loves/likes?
are they not from this universe
EZ peasy
you can add items found in universal tastes to their individual fields, such as adding glazed yams to dislike (defaults to universal like from cooking category)
but no, you can't omit all universal tastes from a character
they are, after all, universal
i do wish they were called default tastes and not universal
I was using look up anything, and I feel like these two statuses are in a bit of conflict...
the presence of exceptions makes them not universal, imo
technically roommates are married to you, just with an additional IsRoommateMarriage flag
no escaping holy matrimony
friendship: married
can romance: no, you're housemates!
a loveless marriage...
Seeing the two statuses was kind of funny. At least it differentiates hugs from kisses
maybe it's because hugs have a little smiley face?
there's a lot of unviersal likes though, and if you're trying to account for SVE, eastscarp and ridgeside compat, it's a billion times worse 
maybe making a slightly more difficult npc to befriend isn't worth it
i wouldn't worry about it except for items where it's important for characterization
yeah, I guess so
i wonder how many players even discover unique gift tastes for things as mundane as liked items
i did accidentally run into one of evelyn's unique gift tastes recently
got a good laugh out of that
oh?
i suspect most modded players either use LA on your NPC or read whatever documentation you provide and jump straight to loved gifts
that's pure vibe speculation but i don't hear a lot of appetite for discovering things like that organically in the stardew modding scene
she has a unique response if you give her ||broken glasses||
i just happened to have picked one up and didn't mean to gift it
Probably… but if loved gifts are hard, maybe they’ll try out some likes.
what am I even saying
I am most players
i doubt most people cheat gift tastes
I cheat gift tastes
the best part is she reuses it every time, so you can repeat it over and over. ||girl how many pairs did you lose?||
I don’t try that hard for variety 😅
Discovering things organically in Stardew is guessing and mashing items against NPCs. Sometimes you get em with dialog, but it doesn't really spark joy to mash items
at least for me
you can get pretty far with character cues and dialogue
The number of times I had gone "Oh they'll love this" and they hated it is not small
in any case, there's no rule that you MUST give liked and loved gifts to all the npcs. just talking to them gives some, and there's enough universal likes you'll get by without the specifics anyway
or just didn't care for it
I don’t want to "cheat" a whole lot tho, so it’s why I think that mod is nice middle ground
then again, I haven’t bothered to use lookup anything in a regular save yet, so I won’t say I can’t be turned
https://stardewmodding.wiki.gg/wiki/Video_Tutorials I got inspired to revive this, everything but the map tutorials should be up to date
stacking up glasses on Evelyn's face
she has a strong prescription
I really tried but it is very difficult in some cases to guess (sometimes dialogue hints but maybe I don’t see them or maybe I don’t understand them), so I do peek at the jsons
I just can’t stand not giving an NPC a loved gift sometimes, like on their birthday or for Mr. Qi
Wait, is cheating gift tastes just using look up anything?
I just absolutely always end up giving someone a gift that they deeply hate
(Or the wiki)
Generally when I'm going with things most people seem to like
I mean looking it up in the mod json is definitely peeking under the hood
If I strike out after the 4th or 5th time giving an NPC a gift I think they'll like and they don't - I peek at liked gifts first and then try to guess what a loved gift might be from there
I am amazing at giving a NPC the exception to a "people generally like this" gift
like 'oh, I think they'll love/like this'
them: absolutely disgusted
Its "cheating"
"I have some spare sashimi and Kent's here, I've barely met him, here, have some lunch"
WAR FLASHBACKS
"utilizing available tools to assist when struggling" is what I say
I made that same mistake with Kent TT I felt so bad
I gave Haley a prismatic shard for her birthday - rookie mistake
You can do that with FF, and also make stuff of any size placeable on a table "slot" *nudge nudge wink wink*
Someone likes flowers, I will find the one they hate
whyyyy
definitely some tastes are way out there like cactus fruit for sam. and i figured dumb kids would just love snails and mud and beach things, but alas
I have hit Haley with a prismatic shard, yes
I was young and naive and didn't know better XD boy howdy was she steamed at me lmao
Even in vanilla it says Holly is popular but I think everyone hates or dislikes it
Actively misleading!!
ah yes. the coconut has many culinary uses
You guys are bothering to waste shards on npcs at all??
those things are expensive!
I'm not saying I CURRENTLY DO THIS
I'm saying I have done this before I just went "fuck it" and got a mod that told me what people like
I think I made every mistake possible with gifts
yeah, the slot feature of FF is perfect for that, my opinion is unbiaised
It was a rare moment when I had one to spare and I was like "oh beautiful gorgeous Haley how you'll love this pretty thing" haha but I've learned since then and do my best to just try and pay attention to dialogue or other potential cues and then just throw things at people
anyway my point was not that looking up gift tastes for an NPC is bad or cheating (it's fine, please enjoy yourselves everyone), only that i suspect the vast majority of the modded player base does it
if FF allows arbitrary pixel positioning for item slots my download is yours
I think the Haley incident was why I ended up getting a mod to tell me what people liked
I gave 2 custom npcs a strawberry and they told me "is this a joke, how could you do this" 😭
you absolute fool. thought you could get away with giving away strawberries in this town
I think having specific hates is better if the npc has a personalized response
in hindsight the game does subtly hint at you that haley will throw a prismatic shard in the trash because her sister is a crystal nut
I never thought of it that way
she likes SHOES
And clothes, and she won't throw out a diamond
She likes fancy rocks that aren't prismatic!
someone needs to mod in haley having a specific hatred for the mine's boots
she likes fashion. prismatic shards are not fashion!
You're telling me you can't make a rainbow rock into fashion? PFf
but diamonds are a girls best friend
theres plenty of rocks in real life of various and/or all shades of the rainbow that are not used for fashion nearly as much as a classic diamond
Also, at least for me, part of the process and fun is getting to see the dislike/hate dialogue that people write for their NPCs, especially if they have custom responses for specific items :3
That stuff's fun, but also... I'm gonna be annoyed if it was something expensive and they hate it
theres a mod that makes npc's not like always being given the same thing
Back when I still planned on making my NPC, I exported a list of every vanilla item and wrote custom responses for like half of them, so...
unless it was REALLY obvious
what if they only are neutral to it?
Haley not liking the prismatic shard basically made me quit out of the game
and then she gets no birthday gift
oh, you know what? maybe if an npclike haley, hates something insane like a million dollar stone, they could just reject it. much nicer than just losing your item
I know people having gifted her that stone on accident too, so it would be a nice safety precaution
I need to get back to thinking about my own npcs gift tastes now though lol
Wouldnt be too hard for her to just throw it back at you
That's a good point about it being something expensive. I hadn't thought about that. Iggy's hated gifts are: all mushrooms, fried mushrooms, escargot, caviar, rabbits foot (she's a jackalope human anthro so, I think it makes sense for her to hate it) survival burger and roots platter
I wonder... does anyone here watch Hermitcraft? I'm planning a mod where I make a town based on Hermitcraft, and I could use some help with the gifting guides
Oh God Oh Frick Nexus is having a Modfest for Stardew
Moreover, I have, like, a 0% chance of winning anything....
Hi all! I have a question about Content Patcher edits.
If I need to use the token "HasMod" in an edit, does the resulting content pack require that mod to be listed as a pre-requisite? Please keep in mind that the mod I'm asking about that I'm making is a private thing, and will very likely not be published.
the two grand prizes are a bit weird. most endorsed and most downloaded are very heavily favored towards people that already have a mod ready to upload @.@
if you upload last day of competition you basically cant win grand prize
imo it'd be nicer if we had eg. a 3 month headsup period and the first month aftet release endorsements/downloads would be counted
generally no, you'd use HasMod instead of requiring the mod; if you require it already, you could just assume that mod exists and never use HasMod
or if you specifically want to use custom CP tokens added by another mod, you need to use one or the other, but you don't need both
Thank you, Esca!
https://www.nexusmods.com/stardew-modfest
feb 26 to mach 26, has some categories/themes and some prizes, announced yesterday I think
So that's why people wanted to make a mod that disabled itself after an hour if you haven't endorsed it
To cheese the modfest most endorsed category.
Endorse it or else
wait thats hilarious
~~Slightly confused about configs in CP;
"ConfigSchema": {
"Material": {
"AllowValues": "Wood, Metal",
"Default": "Wood"
}
},
in this case Material is both my CP token AND the display text in GCMC? theres no way to change/translate the display text?~~
nvm found it
i'm not sure this would be tolerated by smapi, this should quite abusive of the modding spirit
Hello again, everyone! This time I bring a question about quantifiers (right word?) in the When field of a CP action.
I'm saving some trouble for myself (or so I hope) by using includes for my upcoming mod (donno if it'll be private or not tho, please don't ask). But two of those includes need to check for the presence of another mod, and also that a value is not the default.
For transparency, this is something like what I'll be planning:
"Action": "Include",
"FromFile": "assets/list of overwrites",
"When": {
"ConfigItem": "not the default",
"HasMod": "someone else's mod"
}
My question becomes, how do I tell the config item field to only apply when the default option isn't chosen by the player in GMCM, and the not-mine mod is present in the player's mod folder?
Also, I did read up on tokens and conditions, and I'm still at best very vague on this part.
You'll want to read the "contains" section under Global Input Arguments here. It explains how to set true or false values for conditions (which if I'm understanding correctly, you're looking to set "default config" to false as a condition?)
And both the default config and hasmod conditions would apply at the same time
I think I'm halfway to understanding. I just need one more bit of clarification.
I'll post what I have in a moment, so you can see more accurately what I mean.
{
"Action": "Include",
"FromFile": "assets/daggers.json"
"When": {
"Dagger Overlay |contains=Meowmere": "false",
"HasMod": "MissAnaira.MeowmereWeapons"
}
},
I'm assuming this would load the daggers.json only if the ConfigSchema value of Dagger Overlay isn't Meowmere and the mod in question is present?
Correct
Cool beans. Thank you for your help!
Np! 🙂
Oh! One last thing. How do I specify two mods being present? I forgot this is a mix of C# and CP I'm referencing.
If you want to check for the presence of more than one mod you use the contains as well, but use true instead of false.
Okay! Thank you, too! ^^
So it should look like this, right?
{
"Action": "Include",
"FromFile": "assets/daggers.json"
"When": {
"Dagger Overlay |contains=Meowmere": "false",
"HasMod |contains=MissAnaira.MeowmereWeapons": "true",
"HasMod |Contains=MissAnaira.MeowmereWeaponsCP": "true",
}
}
@vernal crestSorry, forgot to @ you.
Yes, though you don't really need to check for both in this instance if they're a pair of mods that users are only ever going to have together anyway. Up to you though.
Thank you ever so much. <3
I am close to finishing a character mod, I just need to do the seasonal outfits now. But I can't find where two sprites that look like the flower dance is from.
Well if it looks like the flower dance, wouldn't that be where they're used? 🤔
I've been looking through multiple videos and these two do not look like it appear on the dance at all.
it looks like a walk to me
My speculation is that the girls are supposed to step backwards when the boys step forward or vice versa. And then CA decided it looked too awkward.
random question but is there any existing core/framework mod that would make it possible to have something like the key to town for ones own area? or could it be done some other way
just had the spontaneous idea for my island houses to maybe let the player have that after having a certain friendship lvl threshold reached or w/e and if thats even worth it trying to figure out yall already know im not good in understanding new stuff lol
i feel like i remember them moving forward to meet at the middle the first time i played the game back in the day
isn't there a conditional locked door? you may be able to combine it with a mail flag?
but you'd have to manually add all the "normal" conditions yourself
hmm
could CP patch the open hours of the doors etc with a friendship condition?
but yeah theres no framework that outright does that I think
hm, i do not use tiledata for warps tho, i do it in a json
is that json not still updating the tiledata?
oop, yeah, been a hot minute since I looked at my warps 
so when i have "Action": "LockedDoorWarp 2 23 {{ModID}}_LostIsland_MermaidHome 830 2200" as my standard id then just do the conditional one with a "When" yaddayadda and w/e i decide either mailflag or straight-up friendship points?
oh wait nevermind i did not read that example at the end :B
but yeah ok i see where this is going now, im gonna wwrite it down before i forget once im ready to tackle that sdasa
hm...I think i gonna go with a mailflag so i can make it that everyones doors are unlocked at the same time or something 
Oh no. I'm back with another CP question. HEAD FOR THE HILLS EVERYONE.
How do I target an image asset for another CP mod?
use the same Target value they do, replacing any {{tokens}} with their final values 
you'll also want to include the other mod either as a manifest dependency or as a content patcher When condition
Dependency already handled, I just need to figure out how they did it because it's part C# code and part CP pack, and it uses SpaceCore functionality to add its custom items, as opposed to JA or DGA.
You can't add custom items with SpaceCore, I don't think?
what a strange mod
which one is it perchance
Meowmere Weapons by MissAnaira. It adds Meowmere sparkle functionality to clubs and daggers, whereas vanilla SDV only allows swords to be reskinned at the forge with Meowmere for its sparkle death effect.
oh so not one of mine
I'm trying to expand the thing so that the Meowmere itself can look like any weapon.
in any case JA/DGA aren't used these days in favour of CP so that's not an oddity
I know. My own private suite of items uses CP entirely.
For a target from her mod, you will be looking for a Load patch where the target isn't vanilla
it should be trivial to use the same targets then, provided they're not loading the textures via C# instead, which can circumvent the content pipeline used by CP entirely
Okay. I'll take a few more minutes to poke around in the content. I don't think she's loading textures via C#.
...oof. There's only one image file, sprites indexed. How do I handle this conundrum?
I think I'd do it like Mods/MeowmereWeapons:0?
By using the ToArea field in your patch
...give me a sec to look up Pathos' docs again. Sorry about being so much trouble.
It's not being trouble to ask for help in the "ask for help here" channel ^_^
luckily this is also the trouble channel 🙂↕️
...I think dawning realisation hit me square on the temples and I think I actually know what to do here now. That, or the dawning sun hit me because it's morning where I am. :P
If I have further issues, I'll definitely ask for help. Thank you both again. ^^
Does anyone happen to know which Method is being used when harvesting Wild Seed crops with an Iridium Scythe? Doesn't seem to be Crop.harvest() or GameLocation.checkAction()
All my dreams have come true
hello, do anyone know how long quarantine usually does when uploading a mod on nexus?
quarantine meaning "you failed the virus scan"?
its been 4 hours i think, i use rar
- don't use rar
virus scan found nothing sus
- there isn't really a 2. rar has no meaningful benefits over zip and only downsides
(one of which is nexus quarantines your files sometimes)
ah okay i will try
if you get the "some suspicious files" marker and you didn't put anything virus-y in your file, typically you have to email nexus to ask them to unflag it and wait a day or two for a person to do it
yea i already contact them via email, but its been 4 hours and nothing happend so i wonder if it will taking time
i upload 2 settings, both was basicly same the different only one for vanilla and one for expanded
the vanilla one success uploaded but the expanded one keep getting flag
at first i thougt my manifest.json having inappropriate word (expose wich short term of expanded portrat settings) but after i upload new one it still get quarantine
okay thanks this working now
finally i can publish it again
FF can be hard to get into, especially if you don't have much experience, so don't hesitate to ping me if you have any question, I'll answer when I come back online.
seems like it's HoeDirt.performToolAction, which also handles objects placed on the same tile (which only happens for forage crops)
I'll give it a try, thanks
Got a curious question about the formatting of CP content JSONs. If using Include to include a content JSON, does the included file need to have its Format specified explictly, or can it be omitted still?
no, format is only needed in content.json
Thank you!
Tried a prefix patch on performToolAction but crop is always null if it was a wild seed crop. Regular crops aren't null. That's weird.
how wild seed crops work is that on day's end the crop is yeeted and an object gets put in its place
because wild seed crops turn into forage objects when fully grown, and delete the actual crop
no way to get around that I'm afraid
forage seeds are hardcoded enough you can probably just bake in direct checks
I see. So how do I get the forage object in that case?
check the location's objects dict at the hoedirt's tile location
Oh, I did the same in GameLocation.checkAction
Didn't think about using that again. Thanks
Looks good, thanks again :)
I don't know how hard something like this would be to implement as a mod and if it was official in game would be awesome unfortunately it is not. Anywho, I think there should be a questline implemented with Mayor Lewis after a Joja run to be able to able to repurchase the community center back effectively reverting the community center back to the version where bundles need completed to restore it and somehow that trick the games achievement system where you could get both the Joja Warehouse and Community Center achievements on one single farm.
someone here was/is working on that
it is fairly difficult, not the least of which is the CC/Joja division being very hardcoded
and there's the question of where the movie theatre will go
I figured it would be hard and if was something my inexperienced self could do I would. I would say once rebuying the CC back Joja would still leave the Valley so that the movie theater is still doable.
I went out of my way to make the suggestion on X to ConcernedApe knowing it will probably never be seen lol.
Where would I find a guide that shows what other non-map non-tilesheet files I need in a map edit and what patches to use?
I'm looking at the modding:maps wiki page and don't see anything about it
Like what the CP side of a map edit is
Your best bet is probably checking the Edit Map portion of the CP docs.
Hey mod wizards, I'm trying to get a single image, personal mod into my game (a banner my kid made) and I'm having issues with the way it's displaying in game - it looks like a "smear" of unrelated pixels.
Do I necessarily need to specify a texture for an image being added?
It's the only image in /assets, it's 16x48 pixels, it's in position 0 on the tilesheet (assuming the image in /assets is the tile sheet)...
What am I missing here?
are you using content patcher?
Yep
you will need to tell content patcher which asset to put your texture on, and which file to use to provide the texture
generally speaking, you tell it which asset using Target, and which file with FromFile
what in particular are you trying to edit?
Not editing anything, adding a custom banner.
Does it need to Target an existing in-game asset? Or is the asset the file in my /asset folder?
So so so co fused
well, in what context does it appear? in fact maybe you had better just show us your json
!json
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.
Target is for specifying a game asset (often looks like a file path and mimics file path structure but is not a file) and FromFile is for specifying an actual file on disk in your mod folder
it is convention to keep your files in a subfolder called "assets", but this is not mandatory and often contributes to the confusion over these things for beginners
here's my content.json
"Format": "2.9.0",
"Changes": [
{
"Action": "Load",
"Target": "Mods/JMak.FeeBanner/FeeBanner",
"FromFile": "assets/Felix_banner.png"
},
{
"Action": "EditData",
"Target": "Data/Furniture",
"Entries": {
"JMak.FeeBanner_FelixBanner": "Felix Banner/painting/1 3/1 3/1/0/-1/Felix Banner/A banner made by Felix.//Mods/JMak.FeeBanner/FeeBanner/true"
}
}
]
}```
That string is killing me to no end.
looks mostly correct but try this
in the furniture data, replace Mods/JMak.FeeBanner/FeeBanner with Mods\\JMak.FeeBanner\\FeeBanner
i.e. change those two / to \\
ahh?
just in that one string. your Load patch is fine as is
"JMak.FeeBanner_FelixBanner": "Felix Banner/painting/1 3/1 3/1/0/-1/Felix Banner/A banner made by Felix.//Mods\\JMak.FeeBanner\\FeeBanner/true"
Got it
i am guessing the issue is you've left the unguarded slashes in the asset path, but the data string is slash-delimited, so the fields are off
My issue is that i understand the individual words in that sentence, but not the gestalt of the sentence. :P
Pixel smear again..
make sure you did a patch reload <your mod id> and/or restarted your game, and spawned a new item
Game started from 0 (it hasn't been running between tests)
well, hopefully someone else will be along to finish helping. i'm sorry to say i have to go
Thank you for your help so far!
Can we see a screenshot of what this means please?
Roughly something like this:
Desired: (magnification 1500%, in GIMP)
I got it to work!!!!!
In case this helps anyone else:
I changed the string to
"JMak.FeeBanner_FelixBanner": "Felix Banner/painting/1 3/1 3/1/0/-1/Felix Banner/0/Mods\\JMak.FeeBanner\\FeeBanner"
without specifying the "true" at the end and including the '0' for tilesheet index.
What does menutilesuncolored do? Where does it show up in game?
Qi shop
tailoring menu and forge as well via Game1.DrawBox including a color argument
how do i check which event is currently being played?
i think the mod im making is interfering with some event so when i make a playerchoice it never advance
smapi doesnt show me anny errors either which is confusing
so what is the command in smapi to see the event im currently in?
I know this is a feature of the Event Repeater mod. There may also be a SMAPI command, but I'm not certain.
oh yeah i have event repeater installed
thing is whenever i click something it just showed me
im confused beyond confusion
im not sure if its my mod causing this or event repeater i dont see my mod in the errors so yeah
!log
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.
I need your opinion pls. I’m working on a majoras mask mod. One mask makes that you can get double the loot from slaying enemies. The chance is 40%. Currently you get a notification when you get double the loot. Should I remove the notification? Is it to annoying?
Any "double loot" roll in vanilla is silent, so it feels like a nice bonus whenever you notice it
I'm for removing the notification
I want a bit of gimmick so that the player can see that the boost was applied. Any ideas then ? But thanks for your feedback.
Maybe a sound effect? Or a visual effect like some sparkles or something like that? It feels more discreet that a straight-up notification
Thanks
The Dohle loot mechanic works thanks to harmony. But I’m sure it works without. Any ideas ?
idea of what?
If doubling the loot from slayen enemies musst be done with harmony
Trying to make a farmhouse edit where the attic renovation adds an extra wall, but it's not appearing in-game. Pls save me 
https://smapi.io/log/7a050171fab245139d0cc93fad15dc32
Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 7 C# mods and 2 content packs.
no idea then!
I tried it with and without SVE installed. The map seems ok when I open it in tiled but who knows. I do actally suspect it's something with my CP patch load but idk what
Idea is to make them op but they still have a drawback. I will likely add that with a 5% Chance everytime you buy something the npcs feels something is off and you get negative friendship for the npc. Or you get negative luck while the mask is on. What should be added. 1 2 or both
I think 1 is a more logical consequence for that particular mask power 
if the drawback and bonus happen in different situations people will switch maskes or find the situation tedious (or both)
if a bonus is from loot then drawback could be damage related, like a small increase in damage taken
We would need to see how its being loaded in with CP. The log has no errors.
are hats and shirts/other clothing items able to be specified as gifts? because they seem to have H or S before the item ID's. I tried one out using the number ID, and it didn't show

Just realized you can't gift hats and stuff ingame, so I'm guessing you can't specify any clothing stuff as gift tastes either 😅
This is what I have in content.json
"Format": "2.9.0",
"Changes": [
{
"Action": "Load",
"Target": "maps/FarmHouse_FarUpperRoom_Add.tmx",
"FromFile": "assets/FarmHouse_FarUpperRoom_Add.tmx"
},
]
}
Ohhh. Good idea
Thanks
Hmm. I’m not seeing anything. Have you closed and relaunched the game to see?
I have a question!
I want to make my npc change their schedule after the player sees an event. Specifically, they will start going to the Secret Woods after, idk, 6 hearts. What would that look like in content patcher?
I'd also like to change their portraits after said event but thats a bridge I'll cross later
it'd be the same for both, look at condition
then just do something like hasseenevent: event id
I have yes, 5 times and on 2 different new saves
I don't think your target should have a file extension
Remove the .tmx on target
That was it, thank you both!!! 
Scheduling has gone wrong gang -- no errors, LookupAnything shows the right schedule, but they... arent doing it? they're just sort of stuck on a bush by the wizards house
https://smapi.io/json/content-patcher/ef4462dbbd5b48ad887f64ff712d3ec6
I thought I set their spawn inside their house too
aint that what this does?
they're not supposed to until later in the day
but they're currently in the forest and I do not know why
they walk over the exit warp in the house accidentally
when walking to their first schedule spot, probably
can you show us a screenshot of the house map and the spawn and 1st schedule point marked?
(or sleep and debug wtc YourName.VaelDeityOfThePack_VaelDeity and see what they do)
Does anyone here watch Hermitcraft? I need some help figuring out the gifting guide for the Hermits in my Hermitcraft mod
Should be this?
And I just did, theyre all the way out here for some reason
Sorry for crappy phone picture
They're just sort of stuck there
i dabble
try the stalking then ig 🤔
doesnt look like they should walk over the warp
They initially spawn in next to the wizards garden, they walk over to bush at 6:10am
Even past 7pm (when they are supposed to be walking to the forest, by the lake) they just... still stand there, at the bush
Oh! Their spawn location does give me a small clue?
They're spawning at the right coordinates, 6 22, but on the wrong map (should be in their house)
So its reading this and spawning them in the forest
That gives me... er... a starting point?
your locationname is probably wrong
tho idk why that makes that spawn them in forest 🤔
telling them to spawn again in their schedule seems to have fixed it ("Mon": "0 VaelHouse 24 18 1/...")
So I can just do that for every day I suppose
Still dont know whats causing them to warp to the forest so i'll keep an eye on them to see if it happens again
Do they have alternative schedules or home locations
I sent my schedule json up here, and the screenshot from their disposition is the only home I've set for them that I can think of
im sure i typed something wrong somewhere or something silly but I cant for the life of me find where
Did you previously have them spawn in the Forest
Yeah, before I saved my new schedule
Had them spawn there before I made their house
Oooooo I see!! Thats good to know
Had you just slept and moved on one day the issue would likely have resolved too
That makes sense! Ty for helping
Hiya
hii
oh hey dreamy, long time no see
It would be cool if we could gift npcs hats and clothes
added support for Rose's Cruelty Free Meat and Trent's New Animals https://www.nexusmods.com/stardewvalley/mods/23772
Apologies if this is a silly question, but when working with AT texture packs, does capitalization of file names matter? Like if you have "chair.png" but the json refers to "Chair.png" would that cause issues?
Yes, but only on Linux
okay amazing. Thank you!
When using Unlockable Bundles to add a custom Ginger Island 'parrot perch', is there any way to change the default text? I can't seem to figure out how to change it from 'Awk... (item)! Awk... Give?'
so my machine rules work with "RequiredItemId": "(O)639", if i want it to be an option can i just do "RequiredItemId": "(O)639" OR "(O)whatever".?
or is that a comma separated thing
like either item would work
add a new trigger to the triggers list
ahh
"Triggers": [
{
"Id": "ItemPlacedInMachine",
"Trigger": "ItemPlacedInMachine",
"RequiredItemId": "(O)639",
"RequiredTags": null,
"RequiredCount": 3,
"Condition": null
},
{
"Id": "ItemPlacedInMachine",
"Trigger": "ItemPlacedInMachine",
"RequiredItemId": "Roseloves109_Beef",
"RequiredTags": null,
"RequiredCount": 3,
"Condition": null
}
],```
like that?
it shouldn't have any problems if that mod isn't there either right? like it just won't do anything
oops forgot the (O)
Question , how do yall go about testing npc dialogue?
especially for specific days? sleeping all that time just to test seems like a pain
debug loaddialogue <NpcInternalName> Characters/Dialogue/<NpcInternalName>:<key>
It depends.....but
Much easier if it isn't randomized anyway
Before I scrapped mine, I used cjb cheats!
Yep, this too.
check_dialogue
ty for all the answers!!
"When": {
"HasMod|contains=Mizu.TurkeyForAnimalHusbandry": "true"
can i have multiple mods here?
like, either or
Yes, add a comma after the first one and then add the second one
Yes
nice, that worked
thank you
can i make it require two ?
like AND or something
or wait that's just another line right
Yep it's another line
cool
reworked dependacies to be more flexible and added support for rose's cruelty free meat https://www.nexusmods.com/stardewvalley/mods/39239
I think I've asked this before, but does someone have any insight on how the game picks an npc to put on the front of the calender when multiple npcs share a birthday??
offhand i would guess it does like Utility.ForEachCharacter and stops as soon as someone's birthday matches
which is to say you get whoever comes first in the collection's iteration order, which may or may not be knowable
Hmmm
It would probably always be in the same order for every player if they have the same npc mods, right?
Not necessarily
oh...
That's interesting
think that could be tested just by starting different saves?
Nope. Not that alone.
(Sorry, was going to type something else but gonna take a sec just to verify if it does actually just iterate over every character or not first)
Okay, it does just do Utility.ForEachCharacter, which itself just looks at every location in order and checks every character in that location, in order.
So it not only would depend on the order that locations were added in (via Content Patcher or C# or whatever) but also the order NPCs have entered or exited the same location as the NPC with the birthday in question
You can't control the order locations are added in and you can't really control which NPC goes where at any given time
And it gets even murkier when you think about the multiplayer shadow realm
wow
So, it sounds like it could dynamically change even in the same save? Am I getting that right?
It could change within a 10 minute timespan
that's really weird! Cool to know though
thanks for looking into it!
I wonder how many people with mega modded saves have even noticed it changing at all 😅
Question : I'm working on my first event, and I added in my new npc, but their portrait doesnt appear and their sprite is just a big 🚫 sign
Smapi isnt showing an error
event is at bottom, not sure if I should keep events in a separate include or something but for now its there
Is your NPC's internal name just Vael?
(Also, I really recommend that you add your mod ID as a prefix to Vael's house map and location - every ID should be unique.)
It looks like it should be {{ModId}}_VaelDeity actually
ah right, i had removed it earlier for testing purposes but ty for reminding me!!
do i use the full modid every time they talk in the event?
Yes, the only time you ever use their display name is when the name is in you're writing text that the player will see.
So for example if Abigail were to say something to them you'd write speak Abigail \"Hey Vael!\"
Yes, the fact that the vanilla NPCs have the same internal name as their display name does make it harder to understand that in this instance custom NPCs need to be different.
Thanks so much as always, Aba!
Aba needs an award honestly for being so helpful with this stuff
Everybody in this channel is so helpful! I just can't work so I have a lot of time on my hands to lurk on discord 
I am working on a retexture of the SVE premium buildings and noticed that the buildings have remained paintable and the original SVE paint masks visibly overlap the retexture. I don't see anything about paint masks in other building retextures like this but I must be missing something. Any advice?
i know it's a fool's errand, but is it possible to request my mod-provided tokens be refreshed with CP? i've registered a token that parses the player's DialogueQuestionsAnswered set and returns the split of a string with a matching pattern, which is meant to affect the next wedding event.
Through intended means or backdoor means?
issue is that if the dialogue answer is added on the day before the wedding, the wedding event is apparently played before the token is refreshed, and the patch is only correctly applied if i return to title menu and load the save
intended, preferably, but this is already now using the assetrequested event and string replace instead of CP in some places
I don't believe there is an intended way then
something something foreach
is there some equivalent workaround for this use case that you know of
Definitely not from CP at least, and the only way I know of from the C# side of things is to manually invoke CP's UpdateContext via reflection
You might also try purposely not caching your value in your GetValues() function but I'm only half sure that even matters and isn't just a "cache things just in case" thing, I don't think Content Patcher actually calls GetValues() every single time... or maybe it does, Iunno
not caching it might also break other things so shrugs your mileage may vary there
ah well i'm using a simple token instead of advanced
well. it may be worth trying an advanced token then
Manually invoking CP's UpdateContext isn't difficult but it does involve updating every token and patch, so it's not cheap
You could make the relevant patches change on TimeChanged and that would most likely make the wedding patch update before the player actually sleeps
Unless they answer it and immediately sleep, or answer it at 2am
it does seem oddly possible (and realistic) to have someone turn up at a wedding provider at 2am for some last minute changes before passing out and having the whole thing be a shambles
Is this for the main event script of a wedding in Data/Weddings?
yep precisely
i have no idea how to approach the non-default events either
data/weddings gives me brain pain
If you have a C# portion already it might be easiest to just use a custom Tokenizable String
normal events are run through TokenParser.ParseText() so I assume weddings are too
yeah they are
it's simply setup like this currently```json
{
"Action": "EditData",
"Target": "Data/Weddings",
"TargetField": [ "EventScript" ],
"Entries": {
"default": "..."
}
},
{
"Action": "EditData",
"Target": "Data/Weddings",
"TargetField": [ "EventScript" ],
"Entries": {
"default": "..."
},
"When": {
"bb/WeddingLocation |contains={{SHRINE}}": true
}
},
{
"Action": "EditData",
"Target": "Data/Weddings",
"TargetField": [ "EventScript" ],
"Entries": {
"default": "..."
},
"When": {
"bb/WeddingLocation |contains={{ISLAND}}": true
}
},
where `bb/WeddingLocation` is the c# component's simple token parsing `DialogueQuestionsAnswered` and returning the location name, matching one of the valid locations
but then there's also an (AssetEditPriority)int.MaxValue - 1 asset edit applied for all the backhanded clandestine string replacements and dictionary clears
Does it just change what goes inside a changeLocation command
Or does it change the whole script
no, unfortunately you need to recreate all the temporaryAnimatedSprite coordinates
although i might just also run through that with some kind of horrible iterator instead of having three duplicate events
then if I were in your shoes I'd personally either just make the whole script one big tokenizable string, or just do this particular asset edit in C# and invalidate it myself as necessary
rather than dealing with duplicating the dict of attendees i'm just keeping a dict of offsets per location and applying it to all the existing attendees (or those added to the cleared attendees dict with town-ish coordinates)
which could work for temporarysprites since they have a predictable set of params
that sounds both very efficient and very annoying to maintain
Yes Absolutely
im surprised you're constraining yourself to CP here
in a perfect world i wouldn't even need the assetrequested event handler doing rotten backsliding into string replacements
well you still don't if you just wanna do all the movements and location changes manually in C# when the event starts 🙂↕️
or just construct the event with a stringbuilder like the perfection cutscene
in a perfect world this would be editable by normal human beings with content patcher
it is! with on time change
annnnng
i understand
doesn't content patcher do some special handling for schedules or dialogue or whatever since theyre needed pretty early too
it is with a heavy heart that i continue to edit weddings because i must and it is essential and vital
i might be making that up but if not it could probably do it for weddings too
clearly it doesnt care so much about weddings
content patcher has no reason to marry
this is already somewhere between unmaintainable and psychotic
another option: harmony patch Event.getAvailableWeddingEvent() 😌
given this is already going to nuke any unique spouse weddings i may as well destroy literally everything right
i dont see why not
since i've not actually elaborated on the concept, the shrine shop gets a 'weddings' dialogue option (shop/weddings/souvenirs similar to clint's shop/geodes/upgrades), which then goes through some cascading set of question dialogues for location > officiant > attendees > decorations, and the dialogue answers are simply used as CP tokens used as conditions/substitutions for the wedding event
obviously this needs to replace the wedding event script wholesale to apply the different options
that sounds like exactly the kind of thing i would just do entirely C#
so naturally if you choose to customise your wedding you're going to lose any other custom event fluff you've installed. but i suppose that's not unexpected
it seemed so achievable with just cp
it is achievable just not painlessly 😌
you can just install this cool mod BETAS ive heard about too to make it easier
you can even string together a little sequence of dialogue entries on the shopkeeper that seamlessly handles all the options. just takes a little c# cp token to get an iterator on the data model for available locations/officiants/attendees
does betas conditionally fuck with weddings
just as the cheetos yearn for the foreach, the sharpies yearn for more ways to influence a content patcher patch
no but BETAS can let you store things in mod data and then retrieve it in a tokenizable string
which bypasses the need for a custom tokenizable string
being a cheeto does not necessarily mean not a sharpie, and sharpie does not necessarily mean not a cheeto (except us of course 🙂↕️ )
we lack a word for content-only
i nominate Jason
i use the term content modder to describe people who actually make Things
and not Tech to Make Things
where did sharpie come from
the same place tractions came from
button probably
i got tired of writing "person who can write C#" and "C#er" looks ugly as sin
i use it because it sounds like an insult in mandarin
don't ask what's with the mandarin all of a sudden. my life moves in mysterious ways
i wasnt gonna question it, i was just gonna wait to see how much mandarin was present in your next mod release
probably none. this is japan mod of course
speaking of releases i would give someone at least one (1) endorsement and download if they made a mod that skip prefixed every annoying-to-patch function with their own version with their own mod hooks and events in it and convinced every other sharpie out there to add support for it
this message brought to you by: i hate Crop.harvest
why convince anyone, just unpatch their harmony patches and apply them to yours
couldn't be easier
the classic conundrum: if they were so easily rewireable like that, the function in question would probably be easy/modular enough that i wouldnt be annoyed by it
I think a literal miracle would warrant more than one endorsement tyvm
but no, instead we all have to transpile these things like peons
you've heard of Better Game Menu. now it's time for Better Game
mod title: Integrate With My Hooks Or I'll Brick Your Mod
im sure people would love drawTooltip to be less of a fight too
New quote added by bblueberry as #7390 (https://discordapp.com/channels/137344473976799233/156109690059751424/1474679232842960967)
on the plus side, drawtooltip lets me easily add features by overriding the object class
thats only a plus side if you're drawing plusses
i was gonna say tryParseDialogueString would be another candidate too but I don't know if anyone actually patches that one or just looks at it in horror for what it is
editing tooltip behaviours is not only simple but legible and enjoyable
https://github.com/b-b-blueberry/CooksAssistant/blob/master/LoveOfCooking/Harmony/HarmonyPatches.cs#L135-L179
(which is to say if you or a loved one patch that method please let me know, im curious)
this seems to rely on the buffsToDisplay array though. what if i am not buffs
if not buffs i not care
understandable. bricked mod 🙂↕️
fair trade. pleasure doing business with you
New quote added by irocendar as #7391 (https://discordapp.com/channels/137344473976799233/156109690059751424/1474679147266838639)
im glad i can rely on blueberry to understand my emojis
does chu patch it for p4a?
portraits for all
the one in which they made the cursed decision to use a unicode emoji as a delimiter
I don't see a patch for it in the code
the dialoguebox constructor is patched instead
that is an easy one to construct tbf
I honestly can't really think of a reason why someone would want to transpile into tryParseDialogueString if not to add their own dialogue command syntax, but also, why would someone need to do that
I did make a test version once that patches the string asset manager instead just for the fun of it, but that's kind of jumping one level over that method 
you need to change the BundleDescription for that
Currently working on a majoras mask mod. On mask gives you 30% of the time one extra loot from slayen enemies. Currently thinking about to change This so the player gets a random amount of gold instead of extra loot. What do you think
you may want to try stuff and see what you prefer
what would you find more fun when you play? and such, rather than "what should i do"
Personally I feel the money idea more. But I like the getting extra loot aspect also. So I’m unsere.
for what it's worth, neither is particularly complex with c#. play around with it and see what you like
stupid question but is there a way to update smapi mod configs while stardew is running or do i need to close and reopen every time
Have you got Generic Mod Config Menu? That lets you edit config files for most mods while in game.
i do
Then that is how you do it. Not all SMAPI mods set up their config to use GMCM however, so for those you will still need to edit the config.json manually and then restart the game.
(I say that, but I have never had to actually do it because so few mods are like that.)
im using music replacement framework and making my own custom replacement mod
You should not need any framework other than Content Patcher for music replacement
i dont know how to do content patcher
What mod is it specifically that you're using?
Ah, no wonder I couldn't find it. I have this person ignored because they use gen AI.
i see, well youll have to forgive me this is literally the first time ive done a mod
They do list GMCM as an optional requirement though so they must have some sort of GMCM integration
currently im trying to completely replace the sve soundtrack (or at least as much as would make sense) with HM DS songs
but im not sure how id do that with content patcher
With CP you edit the AudioChanges asset and use the ID of the track you want to replace as your key and ID for the track. If you don't intend to use shuffle, it may be easier this way - not least because everyone in here is very familiar with CP and can therefore provide more support. https://stardewvalleywiki.com/Modding:Audio
i havent used CP so i dont really know how to format files for it
Well, you haven't used Music Replacement Framework until just now and that didn't stop you from starting that! So I have faith that you will be able to use CP if you decide it might be preferable.
(I am not trying to push you away from using MRF if you want to, just encourage you that if you do want to try CP it will be possible.)
well i have the actual soundtrack converted to wav so that should work yeah?
!startmodding Ignore the C# links below. The rest are related to json modding so they are applicable to you.
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.
Ideally for larger sounds like music you'd use .ogg because it's a much smaller file size, but .wav does work and some people choose to use it anyway because they don't like how .ogg sounds. And if this is for your personal use, file size might not even be a consideration.
its primarily for personal use but i might upload it one day
so i have a manifest file, i dont know what to do next
a content.json file?
Yup, that's right. And you can actually copy the example on the audio wiki page for the json to go inside your content.json
Though you can delete this part because it's for adding your music to be played in a location and since you're replacing existing tracks, it's unnecessary for you.
so i put the name of the track into filepath?
and then next line and put in the next track and location?
You do put the name of the track into the filepath
To do a second one, it will look like this (but without discord's wacky indentation):
"SVE_SONG_ONE": { // You need to make sure you find the exact name of the SVE track in the data which is not necessarily the same as the file name - if the SVE music replaces vanilla music, you need to find the vanilla ID instead
"ID": "SVE_SONG_ONE",
"Category": "Music",
"FilePaths": [ "{{AbsoluteFilePath: assets/1_Opening.wav}}" ],
"StreamedVorbis": false,
"Looped": true
},
"SVE_SONG_TWO": {
"ID": "SVE_SONG_TWO",
"Category": "Music",
"FilePaths": [ "{{AbsoluteFilePath: assets/2_Spring.wav}}" ],
"StreamedVorbis": false,
"Looped": true
},
And then so on and so forth for the rest. Replace SVE_SONG_ONE etc with the actual ID of the track you are replacing.
i replace this with the track ID in SVE?
Yes, but also the key as I said before.
the key is the one line above?
Yup that's right
You can delete it. Those are example IDs and keys for when you want to add new music with unique IDs instead of replacing existing tracks.
so like this?
You need to change StreamedVorbis to false because that can only be true for .ogg files but otherwise yes that looks pretty good.
And with CP you can make changes to the file with the game open. Once you've saved your file, you can type patch reload <mod id> into the SMAPI window (replace <mod id> with the unique ID from your manifest) and it will update with your latest changes.
gotcha
the mod isnt showing up in stardrop, do i need to upload it to nexus to get it to load into stardrop?
Nope
If your mod is in the Mods folder, you just need to go Tools -> Refresh Mod List
it isnt appearing
I don't think so? I think it's that you can't remove your edits using patch reload because edits are applied permanently for the session. But I may have misunderstood the whole conversation.
Can you take a screenshot of the inside of your mod folder, showing your manifest and content files?
Your "Changes" array isn't closed, you're missing a "]" after your second-to-last "}"
fixed it
That shouldn't prevent it from showing up in Stardrop though. Try restarting Stardrop.
OH
You have no unique ID
That will stop it from showing up in Stardrop because that is a mandatory field
The usual convention is AuthorName.ModName, with the mod name often being a shortened version of what is in the Name field. But yes you can make it anything you want as long as it is not the same as any other mod's unique ID (hence why including your author name is recommended).
You probably also can't use slurs or things like that. I imagine those are blacklisted.
Yup that looks good
https://stardewvalleywiki.com/Modding:Audio#Track_list this contains all the track IDs right?
Should do, yes
gotcha
so i just repeat what ive already done for the main theme but for all the songs i wanna replace
Yes, but don't do that until after you have confirmed that it works for the main theme.
You don't want to get it all done and only then find out that you have a typo that we all missed seeing or that it's not actually doing what you thought it would do.
yeah it works
You have made a CP mod, congrats!
nice, though these music descriptions are kind of brief, is that a way i can find them in game easily
You can download the Soundboard mod: https://www.nexusmods.com/stardewvalley/mods/34968
It lets you find the name in its menu and click on it to play it. The spreadsheet linked on the wiki page also has more in depth descriptions for some things and sometimes YT links.
anyway i fucked off the duplicated event scripts and instead added a TokenParser lambda to match the default behaviour and nailed it to the assetrequested event. pity there's no reasonable way for handling nested tokens (e.g. offset tile coordinates token within decorations event script token), but i have no shame in just calling the parser again rather than making a wrapper token at midnight.
i'll probably keep the cp tokens just to construct question dialogues though since that works well enough, other than still needing to wait to the next day before new options appear (e.g. player visited custom island location)
You sure are, Grandpa
his sprite is probably 5 years old by now. very old man
(You missed a bit of censoring up top there. Might want to delete and and re-do!)
pain
Your error message just means that you've got some syntax wrong somewhere. Might be a missing comma or maybe a colon.
Basically it's just a typo
yeah i caught a few
ok fixed it
holy jumpscare
i notice when i do a config for sounds and turn them off it only takes effect when i restart the game! Ö-Ö is there a raeson for that ?
im using generic config mod for that test by the way!
If you're turning an edit to a sound off and on rather than changing between different options, edits to AudioChanges persist for a session
So once the edit is there, it can't be removed, only changed (iirc)
oh ok... so might be better just put the vanilla fishbite sound in my mod ... so you can toggle between my option and the normal one Ö_Ö...and well the rest i just gonna put an info in the mod page for sound options ÖvÖ thank you
Unlike every other Data Asset, AudioChanges is simply read and used to then do mutations to the soundbank, it isn't itself the source of truth of audio
is there a way to split music prompts? i wanna have specific music for 0-4 hearts, 4-8 and 10
You can use the When field to set conditions that will decide which patch will be applied. So you'd have each of your different heart level groups in a different patch and then use the Hearts token to make CP pick which patch to apply. https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md#conditions
I am giving this information without really understanding what you mean about the heart levels - who with? In what situation would this music be playing? So I'm sorry if I've not understood the question properly.
so in HM, theres only 3 tracks for heart events for all characters and i wanted to emulate that
The very first field of an event is always the music, so the simplest way is to just patch that for every heart event.
You'll have to edit a lot of events though and any mods that add events or characters won't have the music you set
yeah thats another thing i gotta get around to, SVE compatibility
and i dont know SVE music IDs
is there a way to have CP universally change every 1 heart event music?
Nope
Presumably you wouldn't need to know those music ID because you'd be changing them to your music anyway.
ugh
not even for SVE?
If you're talking about replacing the music tracks like you were doing with vanilla before you started the events thing, yes you will need the IDs for any SVE music that doesn't just replace vanilla.
If you are changing the first field of all event to your music anyway, the original music that was there is irrelevant, yar?
Dolphin is, I think, going to reply based on just the events music
well i can probably put the 0-4 heart music fine but im not sure about 5-8 hearts because the game uses the same music across them yeah?
i think soundboard can do it but ill have to look
Every event has its own music
You can change the field to refer to another music.
Uh, I don't mean that the music is made custom for the events. I mean that like Dolphin is saying, the first field in an event script controls the music and that is set individually for every event.
I don’t think there’s a way to patch music for events that isn’t going through the individual events 
Basically the game doesn't have "event music" that plays during events. Any piece of music in the entire database can be used in an event.
Wouldn’t the event script override anything set to a general blanket anyway
There is no general blanket to set
Yeah
so theres not really an option then?
There is
It just involves editing every single event in the game one by one
And, if you want to also edit mod-added events, manually editing all of them too
This an example of an event script
The movieTheatre field is the music set for the event
You can change that field, every event has it
But you can’t change all of them in one patch
i dont think i know enough to do that yet
I think it'd be possible to edit all the events in one location in a single patch though
It's definitely not the thing I'd reach for on my first day of modding
authenticity tho 🗿
Nothing to stop you from trying, of course. Make a backup of what you've got so far and jump in.
Sounds like head hurty but I think you’ll learn a lot 
is overwriting the music counting or not cus you can replace tracks
yeah im trying to replace the soundtrack with HM DS soundtrack
You'll want to learn how to edit a dictionary using Fields (you don't need TargetField, just Fields should be enough): https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#edit-a-dictionary
And because events are slash-delimited strings, the field you need to edit for each event will be "1": "INSERT_DESIRED_MUSIC_ID_HERE
Nope, we have moved beyond that
They want to set every single heart event at a certain heart level to the same music track
ohh yeah oof
it'd just be easier to replace the music instead of making every event the same theme
Except then you're making every single track in the game identical
They want diff music for different heart levels
replacing the music would also solve the problem of other mods potentially using vanilla music
But they also want other music to play in other situations
Hey, sorry to interrupt but I'm looking into making my own NPC, with no mod making experience whatsoever because I never make things easy for myself, lol. Would anyone be able to help point me in the right direction?
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!
Also, if you haven’t unpacked ur files, do that first
theres a video tutorial in the bottom of tia's tutorial btw
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!
(Unpack first!)
you'd basically be copying the entire events.json except adding it to edit/data and then replacing the theme index with your desired theme
There is no events.json soupy friend
Well Aba did say u could edit the fields
And also yeah no events json
There are many a location
In an events folder iirc
And there absolutely should not be any inclusion of any part of the event that is not just the very first field
(I have already given instructions to vantage for how to achieve this, just in case you missed that and thought we were still in the brainstorming stage ^_^)
oh okay sounds good
I'll have a look into all of this, thank you!
Yes we circled back to the nuclear bomb of it all 
What I would do is just blast my own music during the events and not code anything 
I wonder how you specifically target the first field in the edit changes though
Be like iro and play the game on mute
Here is how: #making-mods-general message
I only play with sound, no music
I’m always watching something else
i didnt play with music either
I don’t know if I have ADHD but there is a non zero chance
I, on the other hand, have a book ready so I can read during load screens
Strong ADHD trait
I am hyper sound sensitive and have auditory processing disorder so while I need to always have several things on the go, they just aren't sound
Ahh that makes sense I’m very sound forward