#making-mods-general
1 messages · Page 518 of 1
like there's no difference between a quest that tells you to fish 20 tilapias and a special order that tells you to fish 20 tilapias, aside from the latter having a nicer format to work with
but the way i have my quest written its not possible...
i have my quest written in a way that randomizes things sort of infinitely
with CP tokens? you can do that with SOs too

is randomly chooses a person, objects, reward etc
But.... like... they all have that comma? Why just line 30?
tbh when SOs became a thing, I figured they'd convert quests to it later 
Quest Framework was available back then too, but hard to maintain with all the changes iirc
(also I may have misread your post a bit, just got back)
SOs even have native randomization built in so you can use 0 tokens if you want
but I see why you would not want to convert that again
it was hellish creating yeah
if i knew csharp id just code it in but oof
You're nominated, DH
Might be worth a mention in the thread!
I expect to see it on my desk on Wednesday
I will make QF Redux within five years unless a replacement happens, guaranteed!
i mean i guess i could rewrite my code...
I guess i did not specify which Wednesday
is there a mod example esca for your frame work for the board i learn better with examples
There are lots of Wednesdays. 
hmm isnt there like a framework for interactable images (i might be hallucinating)
I feel like a quest modder should be the one to suggest it, I just have a framework that opens a menu 
(and no idea how much work conversions would be)
My favorite is the one for the TV show
Lumina actually commissioned the feature from me, back when I was temporarily taking those
I think she has a couple that use it, one sec
mount vapius has its own board as an example
like so?
On Buildings, you want an Action with the value Esca.EMP/CustomBoard your_OrderType_here
so if my order type is Esca.EMP/{{ModID}}/RepeatableQuest
its that or the RepeatableQuest part?
if your SOs have "OrderType": "Esca.EMP/{{ModID}}/RepeatableQuest"
then the action should be Esca.EMP/CustomBoard Esca.EMP/Fellowclown.YV/RepeatableQuest
or w/e the actual mod ID since, since the token won't work directly in a map
(oh, and yeah, true at the end for the ! part)
(I forgot it's not a separate tile property
)
and for comparison, VMV has "OrderType": "Esca.EMP/MtVapiusBoard", in its orders, with Action | CustomBoard MtVapiusBoard true in the tile property
(you can omit the first "Esca.EMP" parts in the action, but I recommend leaving it so it can't conflict w/ mods)
Farmhouse building logic tends to be weird/unique, and Lookup Anything seems to show a blank indoors value. You could try something like this instead:
if (__instance.indoors.Value is Cabin cabin)
{ /* check cabins here first */ }
else if (__instance.buildingType.Value == "Farmhouse")
{ /* check farmhouse here */ }
or if that field doesn't work, __instance.nonInstancedIndoorsName.Value seems like it should be "FarmHouse"
the fact that the speical orders require context tags only and i cant use item ids is a sin
send a log?
it doesn't matter which one you put in the query, either one should be fine but the CP one is correct
You can always use id_o_itemid
they what
what what is that what do you mean im dying scoob
im gonna eat my hands thank you
U can check what tags r on item in game with lookup anything
sooooo say for example
id_o_Fellowclown.TAE_SweetJoluuSwirl
you just saved me so much extra work thank you
let me copy that code real quick...
testing the board now
Hello! I'm new to stardew modding and before I dive in I just wanted to check that this info is still up to date? Any new guides specifically for custom NPC/schedules & map modding?
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.
!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!
Thank you!
in general I think the pins are still accurate, but yeah, the modding wiki with guides is new & some of that's more specific to new modders
It even looked like the stardew wiki might be out of date so I wasnt sure
(Worth noting that all those links are in the pinned message, except for the NPC-specific links. I can add the tutorial wiki to the pinned message too though.)
there's a no-longer-used copy of the wiki at a different url, but that aside, all the main wiki's modding stuff should be up to date (or say it's not)
https://stardewvalleywiki.com/Category:Modding
(or the more specific landing page here https://stardewvalleywiki.com/Modding:Index)
Possible draft for the pinned message, which tries to briefly summarize the difference between the two wikis:
- Official guides and documentation (always kept up-to-date)
- Unofficial tutorial wiki (provides specific guides from community members, which may vary in quality or up-to-dateness)
hm, maybe specify tone and formality as well?
that edit looks fine to me
For the purposes of the pinned message, I think the important bit is "why would I click this link?". The tone is more of a style guide question when editing the wiki, it's not really relevant when a new mod author is just looking for info.
typing it out I noticed the mistake...
it's either "HasMod |contains=grapeponta.VibrantPastoralRecolor": true or "HasMod": "grapeponta.VibrantPastoralRecolor"
Which is it supposed to be?
Ive never tried conditions before. this is all new to me
my speical order board works!!!
for a true statement you can use either of them, if you ask for a false statement you can only use the first one
like for the block that doesn't patch vpr-colours you should put "HasMod |contains=grapeponta.VibrantPastoralRecolor": false as to not patch the same file twice
swapped the ModID for the CP one 'cause I have plans ||for easter eggs|| that involve the C# ID independently
works fine now
oh... there's two rows of pixels missing right beneath the hut that I somehow didn't catch yesterday it's a feature
that would work
Ahhh, Hasmod is sperate from the ID
???
ah
Let me see if I can edit it on my end
Does the default map edits really need a false-positive for your mod? What if other people are using mods from others?
?
it's not a false positive
Sorry, I probably used the wrong term
it will apply those edits for all cases except for when vpr is detected
exactly
Uhh, will it not switch to the vpr version without that? Even if it sees the mod?
it would otherwise do both
lol
part of today's modding progress (mainly the sprite. portrait is older, was refreshed a bit inspired by airyn's salt and pepper art i saw at some point)
Did I mention I hate code?
and a flower dance outfit (now if i can find a flower i want to add, that would be cool)
gorgeous
for special orders, is there a way to put a custom currency as the reward
yes if it's an item
in which case you add it like you would for normal items, there's a field for that that i don't remember off hand, but both my order mod and VMV use it
i learned it from desty
It's the same as the qi gems iirc
yes it is ok, it's why i mention it
Hey I know this is a very simple question but I genuinely can't figure it out. In the event I'm making I'm trying to make the player sit at the saloon while facing the counter. what is the specific code i could use to achieve this?
yeah sitting is annoying because you'll need to find the proper frame
wiki lists some
that's vanilla done anyway for ramp 1 (Fair1 is identical to the location normally, so that saved a bit)
do you know which wiki page? is it the event data because I couldnt find it on there but I might just be dumb and missing it
I wonder if there is a debug mode thing for it
so it is listed in event data info when you look at the animate command, but it is a bit hidden
thank youu
heyo, I'm working on a mod that sends out a regular series of letters and I'm sending each letter with its own trigger action - is there a better way of accomplishing this besides copypasting this block over and over again? 
Do the letters need to be on specific days or are you having the letters sent out regularly starting when the person loads the mod (which may not be at the start of a save)?
also, do the letters need to be unlocked in order?
they don't need to be on specific days, it's meant to mimic a magazine with an issue coming in every week or so
I did not think about the fact that someone may add this mod later in a save, so it probably shouldn't have these hard dates in that context
they do not have to be in a specific order - I've numbered the issues but there's no through-line story or anything
my personal choice would be to do this with a conversation topic timer
have one trigger action at the very top set a CT (conversation topic) for 7 days. every other trigger action below that sends a letter
each letter trigger action checks for not having the CT active. this will only be true after it expires after 7 days. if the CT is not active, then do two things: send the letter, and start the CT again
(you can alternatively omit the first trigger action that just starts the timer, the intent was to make the first magazine appear 7 days after installing the mod)
in VMV i used synced random, which was simple but not perfect
(but if you want them to get the first one immediately you can remove it, or change it to 4 days ,etc. each letter can use its own timing)
each letter can even use a {{Random}} token to decide how long to set the next cooldown for if you want
this method does however assume that you dont want to resend the same letter ever
Definitely wouldn't want to repeat the letters!
makes it plenty easier then
I'll start digging into CTs and the token and see if I can rewrite this to with all this in mind, thank you!! 
at first i got my special orer board working and now it just....stoppped out of nowhere
like its just blank now its so weird
you may not have enough orders repeatable that can be offered
here's a shot in the dark but you used item_o_itemID or w/e? I found for myself that SOs with that didnt work and I had to go with item_itemID instead(without the middle)
interesting it was working before but ill try it
just a random thought since it was what was the problem for me so i thought id mention it
i know im pretty furstrated with it right now it was working perfectly before and then it just stopped
no errors either
ye i get that, was in my case too, i was so close throwing the whole code out ngl
yeah no still blank quest on the board
nicee!
for anyone here, got a quick question: https://smapi.io/json/none/4700cdaf20e64a26b24f74f63d1159c3
I'm trying to add support for a custom map, I wanted to add one of my modded fish into their ocean/water when detected, however, it seems like it does nothing, I got the right ID i used the whereis (or similar name), and checked in the code
Do you think I'm using the HasMod condition improperly? I'd love to know
ohh nice, what was the issue? O:
the way i was randomizing the quest id
ohhh
Im makign infintely generationing special orders
if you want the code set up im happy to share
sounds neat, i am always intimidated by complicated things like that fdsfsd
there we go fully functional
I've like 2 SOs right now i should probs think of more at some point, hm
I always thought if theres the hasmod with the true theres gotta be an entry for false but i might be wrong...what I did was just
"When": {
"HasMod": "modID",
}
there does not have to be an opposite entry
yeah.. i htink so
ima try
this rq
ima see if it works
inch resting
then again someone told me long ago which was like 1.5 so we dont talk about it
it's never been the case
yeah i know i mean whoever told me was probs wrong
your original condition had an errant ":" though
just mentioned 1.5 to imply how long ago it was
"HasMod:" is wrong, "HasMod" is right
so it was plausibly trying to use your contains as an input argument which HasMod doesn't look at
(it also might not have been doing that, im not 100% sure how the parsing shakes out with an empty input argument, but either way the colon was wrong and could have been messing it up)
🤔
yeah i missed that,
I fixed it, oddly still doesnt do nothing
no error, no logging, bizzare
try a patch export
alr
im not familiar with fish data myself so I'm not much more help here
ahh gotcha, its more about trying to gget the mod to bbe detected, the fish spawns work in my mod, but im adding support to others mods so their water also got fishies
some user requested
but yeah i'll do a patch export to look into it
i had a mod idea before i went to sleep and i forgot to write it down now i can’t remember it
ooo i got another one
it happens, sometimes it will return once you encounter something related to it
note this idea now however
already done lol
if (__instance.indoors.Value is Cabin cabin && __instance.buildingType.Value=="Cabin")
else if (__instance.buildingType.Value == "Farmhouse")
return true;
It worked, thank you very much for the tip.
me : "i should add an event to character A, B or C instead of character G."
me : "let's add this event for character G!!!"
The C# mod build workflow is now in preview!
This lets you add automated builds to your mod repo, just by adding a little YAML file to it.
See also:
- Announcement post with more info.
- README for how to use it.
- An example mod build.
- An example attestation.
Feel free to try it out and give feedback. Note that it can still change at this point, so I suggest waiting if you don't want to update your workflow later.
hm can i use modmanifestbuilder for gh workflow u think
For ModManifestBuilder, I think you put your mod info in the .csproj and it creates the manifest.json for you? As long as it uses the standard <Version> field and runs on a standard dotnet build, that should work fine with this.
SVE versions done, don't need Joja ones for this particular ramp... but I will for ramp 2, that one's going last
ah the workflow doesn't handle submodules
The default one doesn't (since the vast majority of mod authors won't use them), but it's just adding a standard extra step to the list.
yar i gotta find the magic words
Hmm, with the reference assemblies do they also have internal methods in them?
As my monorepo has a few mods that depends on compile time access to smapi internals (and some hardlinked to cp and one hardlinked to automate)
Yep, the reference assemblies are built with non-public methods too (here are the commands used to generate them).
Sweet, so just a case of adding some logic to download the other mods somehow
Are they in submodules, or something custom?
Looks like you just need to add submodules: true:
- name: Fetch code
uses: actions/checkout@v4
with:
fetch-tags: false
submodules: true
They just rely on hint paths into a mod folder
<Reference Include="Automate">
<HintPath>$(GamePath)\Mods\Automate\Automate.dll</HintPath>
<Private>False</Private>
</Reference>
hm idk why but the Directory.Builds.props didnt work (even locally)
i can make it work by putting the thing in csproj tho
My newer mods use the manifestbuilder which adds some syntactic sugar around it but automatechests is ancient
Make sure it's Build (singular)? I'll fix that typo in the instructions.
I thought I read something on the action steps that it's doing direct XML parsing of the csproj not running the full tooling to find the version
i prefer to have it just in csproj anyways (single mod repo)
hrm it build debug
how do i make it pass -c Release
hey! making custom price modifiers, wanna check, do the modified prices to buy something include edits to profit made by professions?
(lemme know if i put that right-)
ah i just put it in the yml ok 
i wonder if i can make it do it only when i make a tag (probably?)
mod CI/CD era 
Is there a benefit to releasing debug builds? I was just about to add --configuration Release to the default workflow.
Tag runs of actions will have a different ref pattern you can check for
on a semi related note, is there a way for the monthly mod stats to track how many c# mods are not using ModBuildConfig? we've been noticing a rise recently (mostly from AI mods) so it would be interesting to keep an eye on
well i was excited and copied the instruction sample yml without looking 
i do not release debug builds
some ppl do just cus they didnt bother with having separate
I think building Release in the workflow by default makes sense, and might improve performance. The author can always just tweak the workflow if they don't want that.
dont debug builds show line numbers in exceptions whereas release builds dont, or am i misremembering
that's unrelated
I think the default .NET build configuration might (at least in old .NET versions). The mod build package configures PDB symbols for all builds though.
oh yea what is the path in the exception
atm i do this to hide my file system path in release
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<PathMap>$([System.IO.Path]::GetFullPath('$(MSBuildProjectDirectory)/..'))=mushymato/</PathMap>
</PropertyGroup>
that's a thing? :O
Oh, I didn't know that was an option. Could be useful to add that to the mod build package; we don't care where the build was on the original author's filesystem, so starting at <ModName>/ would be fine.
yay
the only downside is that u cant use debugger on a build that did this lol, hence release only
oh
yessss Ramp 1 complete, Ridgeside festival maps basically just change the area I fixed to look like the original for vanilla and SVE
556 lines of content patcher to replace one staircase with a ramp, ~that's compatibility~
-# @ivory plume bumping this because I forgot to ping 
I'd check myself but I can't actually download the mod dump repo because I don't have anything with remotely enough free storage space 😭
it would be so weird for AI to recommend manual setup
Are the ai mods even open source to know if they used modbuildconfig or not
ModBuildConfig has been a thing for... pretty much forever, from the perspective of AI
helloo replying to make sure this can be found lol
Iirc modifiers on sell price don't affect buy price
Not trivially; I think there'd be a lot of edge cases in trying to match mods to the mod build config package. It's also not really a good indication of AI code (e.g. the author may well create the tutorial mod or use a template, then add AI-generated code to it). The dump is public if anyone wants to try it out, but it's probably not useful or reliable enough to add it the main stats unfortunately.
gotchaaa okay
wanna add discounts to dwarf's shop when the player's roommated, but I don't want ppl to turn a profit on stuffs
well... alright the other ramps went really fast, guess it's just 2 now.
puts on hard hat
On the bright side, the only festival changes that touch it in vanilla are Christmas 1 and both egg festivals
and Halloween 2
where it gets spoodered
oh I didn’t mean it as an indicator of AI use, I was just curious about how many mods do it (I assume there were also a lot more mods that didn’t use it earlier on but adoption increased). AI use was just the context in which I first saw them (plus, I’m interested to know if AI is doing this on the basis of real mods or if it’s just the result of most c# code it’s trained on obviously not being for stardew). Interesting about the edge cases though, I kind of assumed without verifying that it would be a simple check but it sounds like it isn’t. Ty for replying though! If I ever am able to dig into the mod dump myself I’ll see if I can have a look
So.. A cookie dispenser.
Basically, a recoloured Statue of Perfection, but it gives cookies instead.
I reckon I can just take the code from the statue and adjust the output ID and amount?
But how do I actually add the machine? I'm looking at the wiki but don't really get any smarter (nonzero chance I'm looking at the wrong place)
Ideally, the unlocking of the recipe would require having the regular cookie recipe from Evelyn. Also, for the scope creep, how would I change the output amount based on the day? E.g. more on Winter Star, or on the kids' birthdays.
machine requires both a bigcraftable, and machines rules
you can have a stack modifier which can use whatever condition you want, on machine side
and can either multiply, add, set or whatever the amount
Hey guys can someone help me? For some reason, my npcs are not loading where I coded them to load, they are loading in the middle of the town at the same spot and are not following their schedule. Is this a compatibility issue or something related to the coding? Has anyone else faced the same problem? There are no red texts on smapi
did you give them a Home
yes
town is the standard fallback i think when your chosen one isnt working. best to provide log and json for people to take a look at(even if log says nothing much)
How can I do that?
!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.
!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.
Use those links for smapi.io/log and smapi.io/json to upload your console log and JSON files, and share the links to them here.
(we use those sites to make it easier to read and not have giant blocks of code in the chat)
https://smapi.io/log/c1c50ec5c3274916a7079e0a8c781ac8
Here. My mod is called Tales of the harpy town
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 47 C# mods and 70 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Failed loading asset 'assets/Characters/Anahi/Dialogue/MarriageDialogue.json' from SMAPI\cheshiresatelier.thtexpansion: the JSON file is invalid.
Can you share the link to the JSON for the MarriageDialogue patch?
A lot of your JSON files are throwing errors in the log for your mod, so if you can share your content.json (and any Included JSON files), that would help
You CAN if it's your mod, but you are more likely to get faster help if you just share the JSON file links rather than the entire mod
Currently it's your dialogue, marriage dialogue, Items.json and maps.json that seem to have immediate errors
maps.json will likely be why your NPC schedule isn't working, as the error seems to be that it can't add a warp, so you might not be adding an NPC-compatible warp (which is a Warp or NPCWarp map property, not the same thing as an Action Warp tile property) correctly.
does anyone know if it's possible to add animated texture to loosesprits? i want to add an animated texture to the parrot platform
Hey weird question, but is there a way for one of my custom farms to forcibly change where Stardew Valley Expanded's nexus portal is placed?
How can I fix the warp error?

you can animate any texture sections with SpaceCore
look into its documentation
sure, it'd be a bunch of map patches conditioned on "player has this farm type"
what's your goal
some of my mods move the warp totem location
though isnt the nexus' entrance in the backwoods
Id like to think I could add a line like, "if havemod sve, place warp nexus at xy instead"
You unlock a fast portal to your nexus on the farm
and its set to be where the farm totem puts you
oh yeah i forgot about that
you can just follow what SVE's custom farms does probably
Oh? One of their custom farms have a unique spot?
I havent tried any of them since they're all replacers, and I use my own T.T
all of vanilla + SVE's farms put the nexus warp point near the vanilla totem, while if you're playing another custom farm it puts the warp on the grandpa's shed map
SVE does have a config option that allows the user to specify a custom on-farm warp point
can anyone help me with why I'm not able to animate the parrot platform with spacecore?
i'm unsure what i'm doing wrong
(this is an included file in the content.json)
https://smapi.io/json/content-patcher/1687eb09fe0241019321bff502e7cc01
so how SpaceCore's feature works is that you have to specify the exact area that the game uses (ie. you can't animate the entire texture)
so if the image has 4 segments that are used separately you need entries for each of them
ohhhh makes sense, thank you
in this case for the main platform there are 2 rectangles: (0, 0 ,48, 68) and (48, 0, 48, 68)
(x, y, width, height)
the shadow is (48, 73, 48, 32)
the debris in the bottom left doesnt look like it's used
thank you so much!! 
you have no idea how many hours i spent trying to make this work 😭 this helps a lot, truly
Is this an ok channel to share mod ideas?
For a mod you're planning to make?
hi @lucid iron something is exploding with HMK and Mirren (it was a phone call), I reported it there and they said it's on your end: https://smapi.io/log/9665e67c588548808847305af6bc72db
game didn't crash, just much red and I closed out and stopped answering the phone after restarting. (just like irl)
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 191 C# mods and 373 content packs.
Then yes :)
i dunno, I found sprites in tilesheet
oh you mean the colour over the screen when it rains I thought you meant the rain was the rectangle drawn over and over again for some reason, sorry for the random ping
don't worry about it. the particle effects when farmer eats/drinks something are drawn using a particular white pixel in the moon on cursors.png
null awareness 
so fast
and now log menu is mad about the phone call instead but I assume that's on their end? either way ty 
Thanks. I think I'll come back to asking what this means exactly tomorrow. I'm too tired for making mods now.
Anyone know if it’s possible to give x object the ability to keep soil around it watered like a river would?
I know there was an old Wetlands mod on a Korean site for 1.5 but I don’t know if that’s still a thing
a building yes
MMAP has a "treat furniture has having tile property" feature
so you can make furniture that has a 'Water'
a hint for tomorrow, the 'bigcraftable' is the object you hold, and the 'machine' is the rules for what the object creates, which are separate assets and edits 
Mhmm. I figured. I was more planning on asking how it all works :)
(For anyone interested in the automated mod builds, here's the announcement post with more info:
hmm, I wonder if you can put this under an existing item or put a usually non-water thing over the tile
well it's a path so it does what paths do
Hmm, interesting
The reason I’m asking is because the first original mod I have planned is a tree that usually lives partially in water on coastlines
So I’m trying to brainstorm ways to have it be in water (if that’s possible)
I mean, I might just have to put some on the coast of the beach and say good enough lol
😭 woww
that's really surprising
how are bridges coded? Since they're buildings on the map
no particular code, just very particular tiles used in very particular places with the appropriate Passable and Water tile properties
in some places, some invisible Buildings tiles bordering as well
HECK
FOUR, George goes up FOUR staircases to get to the festivals in Ridgeside
I forgot the bus access was a staircase 
(George doesn't forget arm day.)
(also as a disabled person I love that you're making the valley accessible
)
I mean in vanilla george would need to solve staircases in some capacity to get to the commmunity centre
I'm putting ramps there too
so Alex doesn't have to lift his whole grandpa and wheelchair over his head to get him up there
which is what I imagine
what I'm hearing is a C# pathfinding mod that makes it so george can't path on staircase tiles and routes via ramps instead
teleporting is more fun 
I just like the image of Alex with his grandpa held over his head, nyooming around like he's playing Sandrock or something where you can hold a whole building over your head
Extra points for doing the grumpy emotes, wizard teleporting in, then teleporting them both to the other side of the staircase and wizard teleporting out
heh an event where that happens would be fun
though lore wise I feel like george wouldn't appreciate it based on the letter event with penny
yeah that's why he teleports himself
This is making me want to make a mod where George and my farmer commiserate over the difficulties of accessibility in the valley
he's got one of those staff thingies 
Alex: Grandpa, it's doing me a favor, I gotta practice lifting! PUPPY EYES
the urge to add every rep i can to sdv-
have a special order with Maru to upgrade georges wheelchair to have hover/jet propulsion for staircases
YES
I like to ask of y’all infinite wisdom of code: how can I bypass the tutorial fishing mini game (not catching any fish) in the current version? 
THIS IS PERFECTION
Like Professor Xavier's from the X-Men cartoon!
best idea- ever
newwho dalek elevate
hm, could you clarify? there are easy fishing mods that bypass the minigame if that's what you mean
omg one se
sec*
No, I want to bypass the tutorial catch (first fish) mini game by somehow not catching a fish
if you don't catch any fish then you don't see the tutorial
Right, thing is, I want to catch a void mayo (which I tried), but it seems like I’m unable get one unless I pass that tutorial catch first. Unless I’m wrong on this (wiki have no info on this unless I’m blind)
are you asking for a mod you are trying to make?
but in terms of actual code to ensure the tutorial never happens, just have the player.fishCaught net collection has something in it
No, is for a challenge 
Then you are in the wrong channel :)
Okay, what count as a fish but not a fish 
YESS
I wish another channel can have an answer 
This channel is for making mods. If you want info that is not related to mods, head to #stardew-valley. If you want mod info, head to #modded-stardew.
Is there a mail token for the railroad being accessible or something? I swore I got a mail about it, but I'm blanking on that, and I want to make the ramp there only show up when the rock's gone
or was that a different rock problem caused by Joja that had the mail
(heh please put this in your nexus media for your mod
/lh)
hm, earthquake for that one i think...
Yeah the railroad is the earthquake in the night I think. The mines access has the mail.
Last edited by Abagaianye on 2025-09-13 06:31:55
This is a list of all vanilla mail flags in the game that can be found by searching the game code.
You can make it date related so it doesn't apply until the day after the earthquake
Ok I must leave now, my beat sabers need me
godspeed Aba 🫡
ah, that makes sense
I thought there was technically a flag, but the mountain itself basically just looks at Game1.stats.DaysPlayed >= 31 
is it okay to have two files editing an NPCs beach outfit? I have a beach and snorkeling outfit for a character and trying to set up as can have A, B, or A/B (random chance which one is used on a given day). Slowly getting back to understanding how to do basic appearance modding as I make the Mk II version of a seasonal mod
https://smapi.io/json/none/b944b34186294e91aae4c3962f7a0759
so if I did a "DaysPlayed = 31" for a map patch condition, would it remain after that, or an I over thinking this
so....I personally think you're overthinking all of it, as boulder will be over ramp anyways
sounds like that would only effect the exact day and then be undone next time the map loads
but yeah, might not be necessary if it's under the boulder
BUT if you were to want that, I recommend instead doing smth like
- Make trigger action look at LocationIsAcessible
you know, you're right, I should just try to stick it in there and see how it looks
(or whatever the fuck it's called.)
I'm not familiar with the exact conditions/etc personally, but yes, you can use EditImage multiple times on the same target in a CP file
(sorry, I am tired and yelling at the gods in the sky the people who have not, as of the 18th of Jan, provided me my new health insurance cards)
oh man big mood
Been fighting with insurance over the whole holiday season
Just imagine that scene in your head of Mr Incredible throwing his boss at the insurance company through a wall
well, like three walls
Okay thank you. I wasn't sure quite how to do it as beach was seperate from regular appearance stuff
🤝 I was on the phone for several hours last month because someone mistook nexus's company for an unreported job of mine
rather, the paypal payments for me working there (in england ig)
Or, actually, I guess the better question is does editing the beach outfit need to be done via editimage or would it work without issue using appearance modding. When referencing Seasonal Cute Characters, they have it as an editimage and then an outfit marked as island attire. Checking the "Tutorial: Adding Seasonal Outfits via Appearances" did not provide much illumination on this particular instance
if you mean the ginger island spritesheets, those don't use appearances and have some hardcoded behaviours
you'd likely need to use editimage on the Beach assets
(they can use appearances)
I think in 1.6+ you can add an appearance entry with IsIslandAttire?
https://stardewvalleywiki.com/Modding:NPC_data#Appearance_.26_sprite
is that so
oui
it is so.
blueberry how's the healthcare situation in Austalia
getting more expensive every year
Hello! Is there anyway to tweak this mod to have the noises it adds apply to dogs instead of cats?
https://www.nexusmods.com/stardewvalley/mods/17815?tab=description
Just to double check, beach sprites are only used on ginger island, so I just need to mark them as island attire? Haven't actually played a save in so long I don't remember where all sprites get used
open up content.json, change the mention of Cat to Dog
Huh. Thank you! :DD
it's cool when it's that easy
It really is! \o/
Randomly spotted this but speaker is null as to not reveal the name or portrait, its been working fine for other players ^^"
hey guys im working on adding compat for GNMT (using this guide https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Gender_Neutrality_Mod_Tokens_(GNMT)_Compatibility ) and I figured out the normal dialogue part fine but i was wondering if its possible to switch out single lines of dialogue in events using tokens, as opposed to duplicating events just to edit a few lines
Last edited by AtlasVBot on 2025-09-13 18:56:02
This tutorial is aimed at mod authors who would like to add compatibility with Gender Neutrality and Gender Neutrality Mod Tokens to their mod or adapt another mod so that it offers gender neutral or nonbinary dialogue.
Hello! Which event do you want to edit?
Events for adventurer's guild expanded
Oh. So you already have the standard event in your mod, and then you want to patch in the GNMT version, with a When GNMT is installed conditional?
one way you can swap out a single line is by using a config setting token or a dynamic token as part of the key in your use of the i18n token
so if your event calls for e.g. {{i18n:myevent.line4.{{GenderMode}}}} and then you have defined GenderMode based on something involving GNMT
Ah I see
yeah I'm gonna need a condition on that one
in the i18n you would want to define lines for all the values that token can have (or use defaultkey)
this one's working though
Okay I got it! sorry it's been a while since I've dealt with code in general. Thank you both 
oh wow i just realised it's literally in the guide at the very end 
how would i go about patching a sprite mod myself? i want to make portrait accurate sprites compatable with befriend marlon and gunter
the sprite mod's sheets obviously don't account for the way befriend m&g allow them to move around so their walk cycles just default to showing this white part
should i edit the modded sprites from the sprite mod, or try and edit the sprites the NPC mod uses to match the sprite mod?
and then how would i make something that overrides my sprite mod with my edits
obviously all this uses CP
Befriend Marlon and Gunther has already patches over the vanilla sprite. So assuming your mod would not work without Befriend Marlon and Gunther, what your mod needs to do is patch over that mod's version of the sprite.
Is this from your sprite mod for vanilla Marlon? What's your patch code for that?
i have no idea what that means, im totally new to this sorry. im editing* befriend gunther & marlon* 's sprites as we speak
i guess im just asking how to make a patch that does the "Target replace" thing
to override both mods
so that my patch out-prioritizes them both
Aa, so the portrait accurate Marlon is another mod?
yes, i have a sprite mod and the mod that changes the mechanics
im editing the NPC mod sprites that add extra animatins ect to match my sprite mod
Basically you just do the same patch the portrait accurate mod does, and then in the manifest.json of your own mod you put a false the dependency for both it and Befriend Marlon and Gunther. That should ensure your mod is prioritized over them.
Can you link to the sprite mod?
not even sure how i'd write that. can you reccomend any youtube tutorials?
So try opening the content.json of that mod.
done
Search for "Marlon". You should see a group of 3 lines.
the action load ones?
Yep.
That's the patch that edits Marlon's sprite. That's basically all you need for your own mod's content.json. Just change Load to EditImage.
so if i make a seperate folder with its own manifest and content with just the two replacement sprites and just the two commands that "edit image" it will override the load command?
Yes. An EditImage would always applies over a Load.
Just make sure to have a dependency of BM&G on your manifest.
im totally new to all forms of programmin ect this is so fun to learn
ill also look this up
“assets/sprite.png”
after double-checking that the asset is really at this path, can you share your log saying that the asset doesn't exist?
Hello all! I am trying my hand at making a mod to actually upload and running into a small issue. I've tried googling it but haven't had any luck. Hoping to someone here can help me. I've been making personal mods for yeras now but mostly just making my own retextures and replacing the png files in mods I already downloaded. I am trying to load my own mod to test but keep getting the error that content.json can't be found but it exists in the folder. I've tried rewriting it multiple times to the same error. I am just trying to create a retexture mod for SVE premium barn and coop.
verify it's indeed a json in term of extension
windows usually hides the extension format and you end with a content.json.txt
I cant seem to find the bool field or property to use as condition here, i want to check if Robin is busy, can anyone help
public void CarpenterMenu()
{
if (//here)
{
Game1.drawObjectDialogue("Robin is busy.");
return;
}
Game1.currentLocation.ShowConstructOptions("Robin");
}
Yeah, I am using text edit on Mac and make sure the file is plain text and saved as .json. Even in my finder it shows up as Kind>JSON.
Game1.netWorldState.Value.builders.Contains("Robin")?
!json Can you share your content.json and also a screenshot of the file sitting in the mod folder?
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.
ideally showing all columns in the file explorer, particularly Type
or whatever the equivalent is on mac
Mac doesn't usually hide file extensions, does it?
thanks! the process of finding what's wrong is a bit tedious so details are really helpful
we'll need a log too next
!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.
It's generated a config file, so at some point it's been able to read the content.json
Here is the content file. It's my first try and I tried following the wiki. I am started this test mod just changing the barn first. I am attempting to make a seasonal mod.
Please use the json website in future :) I linked it above
Oh sorry, didn;t see the link.
You have accidentally closed your content.json way too early. That closing curly bracket above the changes line should not be there.
Nope, ignore me
Ok the curly bracket should be there, but there needs to be a comma after it
I recommend getting Notepad++, Sublime Text, or Visual Studio Code (NOT Visual Studio Community) so your text editor will actually warn you of this stuff
The last closing one?
I will download one of those now and try to rewrite teh content file again. Thanks.
The one above the Changes line
I added the comma after that bracket just to test it. Still getting the same error though. I was initially trying to close the the opening bracket from the third line.
I will try to rewrite it all in Visual Code to see if there's any other errors.
Just copy and paste it in
It has no errors other than that one, so if you're getting an error that there's no content.json, I think you have another issue, like that you have forgotten to save the file or are editing the wrong one.
I left the comma you recommended and it looks correct but got an error for the comma after the bracket directly above it.
Like Lumi said, it would help a lot if we could actually see your log
Because seeing the exact error message and the context from the rest of the log makes a big difference
Oh I will use the link provided now!
You put the comma on line 8?
Okay, and your log?
Well the file after adding the comma you suggested.
I copy and pasted it into Visual Code and it looks to have adde an comma after the bracket in line 7.
Oh, I am just now parsing what you said here. A warning about trailing commas? Ignore that - we can use trailing commas in Stardew so they're not errors.
Are you missing a word here?
Sorry, I think I am bit tired and typing a bit too last fast and lazily. Can you clarify your question? MIssing a word where?
Oh, no, you aren't missing a word. I thought "Well the file after adding the comma you suggested." was a reply to my request for a log, but it's meant as an addition to your "that is the original file, unchanged." sentence.
Yes, Sorry. I am pressing enter to fast. Need to slow down and reread my messages and add what is needed before posting.
You should be able to check the file in game again now.
It's technically invalid, but it won't cause any problems for CP.
I already responded to that, you must have missed it.
A warning about trailing commas? Ignore that - we can use trailing commas in Stardew so they're not errors.
I used to get rid of my trailing commas but my number one error ended up being that I'd forgotten to add the comma when I put a new item in, so now I embrace the trailing comma lol
!jsonc
Darn it what's the jsonc command
!vscjsonc
!vscjsonc You can follow these instructions to make it stop complaining about the comments (though there's a different trick to deal with the trailing commas)
In Visual Studio Code, go to File -> Preferences -> Settings, then search for "associations", and in the "Associations" setting, click the Add Item button to add an item with key *.json and value jsonc (see image).
If you are making a content pack for Content Patcher, you should consider using its json schema so that VSCode can tell you if your patches are valid, you simply have to add
"$schema": "https://smapi.io/schemas/content-patcher.json"
at the start of your content.json file.
I tried running Stardew. Still getting the error.
I really appreciate you taking the time to help me figure this out. https://smapi.io/log/02e2f293a06149ea943fb3d4e50d07a3
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on macOS Unix 26.1.0, with 8 C# mods and 11 content packs.
According to your screenshot of VSC, your content.json is not in /Volumes/Crucial P310 4T/SteamLibrary/steamapps/common/Stardew Valley/Contents/MacOS/Mods/<mod folder>, it's in /Volumes/Crucial P310 4T/My_Mods/Visual Code. Did you make sure to save it into the mod folder?
Oh I didn't save the VC file to the mods folder becuase I didn't make any changes since you said the trailing comma was okay. I can move it to that folder now but it's the same file as above.
Can you take a screenshot of the mod folder again, but show the entire filepath in the screenshot?
I moved the content.json file created in VC to the mods folder and overwrite what was there.
Hmmm I was helping someone the other day with a mystery missing i18n folder and the issue was that Mac doesn't strip out trailing spaces. Can you make sure your file is definitely called content.json with no spaces anywhere at all in the file name? It doesn't look like that'd be the issue but we might as well make sure.
Yes, I've had that issue before but no blank spaces here.
Can you show a screenshot of inside the manifest?
I...do not know what is going on
Can you put a period in front of your content.json file and copy another mod's content.json in to the folder? Doesn't matter which mod, I just want to see if it's going to recognise it
Okay so I copy and pasted the content.json file for the Alternative Bus Stop into my mod's folder and tried launching the game and got the exact same error that the content file could not be found.
So does that mean that the problem is with the folder itself somehow?
you tried again at this point and it still wasn’t working, right?
Yes, still no dice.
I am baffled, because it just shouldn't recognise the mod at all if it's the folder, but it's clearly reading the manifest.
Try going the other way - copy your content.json file into another mod's folder and check if that works
Actually, I might have it...
Okay, nope, but I am heavily invested in this now...
did you share a log file at all with the error?
And we've got screenshots showing the right filepath, showing the file type, showing the content of the content.json. I'm not sure what I'm missing
Maybe this is a weird Mac permissions thing?
Ok, I hid my mod folder and hif the content folder in Alternative Bust Stop folder then copy and pasted my content file to that folder.
I think I saw someone comment on a Nexus mod saying that one file in a mod they downloaded was not appearing because of perms issues, plus Audri often comes across it in tech support
I now get this error.
one last request if it isn’t figured out: unhide the mod folder, make sure the content file is the latest version, and restart your computer. then try starting stardew again (just in case there’s any weirdness there)
Ok that's a good sign, because it means the config.json that was generated from the original content.json for Alternative Bus Stop is not finding matching fields in the content.json - but it's not saying the content.json doesn't exist at all
I can definitely try that. It will take me a few minutes.
(if it still doesn’t work, a new log would be good just in case)
Okay! Restarted my Mac, relaunched Steam, and restarted Stardew and still getting the same error. For whatever reason, it just doesn't see that file when added to my mod folder.
New log from after restart https://smapi.io/log/cca8f6eefc2c4d40874e01897f480bc9
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on macOS Unix 26.1.0, with 8 C# mods and 11 content packs.
dare i ask what if you just make a new folder and a new content.json and copy the contents of the file over
Just checking back here when you copied the file from ABS into your mod folder. Did you copy the json inside the content.json across to your content.json, or did you copy the file itself over into your mod folder?
Just the file itself.
I’m with blueberry on the new folder thing
Okay, good, thanks. I recommend following blueberry's suggestion of making a brand new folder with a new content.json and then copy the json inside your content.json across.
I tried this like 6 times before finding this discord. That is a path I have exhausted. Trust me.
Did you definitely make a completely new content.json file?
You did not move the file?
With a completely different folder name?
(Sorry to be so pedantic about it, but this is a seriously puzzling problem.)
I will try again. I am not against anything at this point. I even tried just opening another mod's else's already created content file (thinking it was a permissions) and erasing everything there and copay pasting my own code into it. Still got the same error. Even though the mod works with it's own code with no issues.
Can you zip up the mod folder and send it to me, please? Feel free to DM it if you want to keep it private. (Also if you're not comfortable doing so, you can of course say no)
I want to try it in my game
Okay, nuclear option time. This will print out a list of all JSON files in the directory of any pack that fails to load, and the contents of said files.
okay, nuclear option time. delet the folder
[11:45:13 ERROR Content Patcher] Could not load content pack '(NPC) TEST MOD': content pack has no content.json file.
[11:45:13 INFO Content Patcher] Files in this content pack:
[11:45:13 INFO Content Patcher] File: /home/alan/.local/share/Steam/steamapps/common/Stardew Valley 1.6.15/Mods/[CP] Test/manifest.json
[11:45:13 INFO Content Patcher] Contents:
[11:45:13 INFO Content Patcher] {
[11:45:13 INFO Content Patcher] "Name": "[NPC] TEST MOD",
[11:45:13 INFO Content Patcher] "Author": "DecidedlyHuman",
[11:45:13 INFO Content Patcher] "Description": "TEST MOD.",
[11:45:13 INFO Content Patcher] "Version": "3.2.3",
[11:45:13 INFO Content Patcher] "UniqueID": "DH.WeirdBug.TestMod",
[11:45:13 INFO Content Patcher] "ContentPackFor": {
[11:45:13 INFO Content Patcher] "UniqueID": "Pathoschild.ContentPatcher"
[11:45:13 INFO Content Patcher] },
[11:45:13 INFO Content Patcher] "UpdateKeys": [
[11:45:13 INFO Content Patcher] "Nexus:00000"
[11:45:13 INFO Content Patcher] ],
[11:45:13 INFO Content Patcher] }
[11:45:13 INFO Content Patcher] File: /home/alan/.local/share/Steam/steamapps/common/Stardew Valley 1.6.15/Mods/[CP] Test/dffdscontent.json
[11:45:13 INFO Content Patcher] Contents:
[11:45:13 INFO Content Patcher] {
[11:45:13 INFO Content Patcher] "Format": "2.0.0",
[11:45:13 INFO Content Patcher] /*
...
Just like this.
This should at least give us a definitive answer for what's actually in the folder it's trying to load.
Do I just add that unzipped folder to my mod folder and replace the Content Patcher that is already there?
Well, I just ran the file that you sent right at the start and it's working fine
Just replace the existing Content Patcher with this for now.
It's like going to the doctor and not being able to reproduce the issue that brought you there.
What could I possibly be doing wrong?
It's a real mystery! Just install that custom version of Content Patcher, run the game, and upload the log so something is hopefully uncovered.
Your mistake is in owning a Mac
Okay here is the new log with the new content patcher provided. https://smapi.io/log/9fc23ccd62e54ed3993711f177630a0b
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on macOS Unix 26.1.0, with 8 C# mods and 11 content packs.
I don't have SVE for your premium barn texture to apply to, so I switched the first patch to a Load and you've got the FromFile fields incorrect - the underscore is in the wrong place
(╯°□°)╯︵ ┻━┻
Does the fact that the mod folder has an unnecessary space at the end of it matter?
Oooh
I wouldn't have thought so...
It's SMAPI reading the manifest but CP reading the content.json
So they might have different parsing rules
A space at the end of an i18n folder made CP think the folder didn't exist
At this point, it's worth trying anything.
Just realized I added the wrong assets to the zip I gave you but wouldn't the error then be that it could not find the png not that it couldn't find the whole content.json?
Yeah, my comment was so that when we do finally get this working you know what's up with the error it'll give you lol
Try removing that trailing space from the end of your folder name
I need to step away for a good few hours now, but please ping me if anything happens! 
OMFG!! All that just becuase of a freaking trailing space in the *folder name? I am no longer getting the error. The mod isn't working but no error in terminal at least. Good lord!
I AM A GOD!
I'm sorry I put ya'll through all this for a freaking trailing space. Most anti-climatic resolve ever.
We are extremely lucky that I encountered this problem just a couple of days ago
macos 
Do not stress, stuff like this happens! I am sorry that your first attempt at making a mod of your own was so frustrating!
we all bow down 
And that DH wrote that helpful Content Patcher addition! Without it, I wouldn't have noticed the trailing space.
Still have to figure out getting it to actually work now that it loads. Lol. So first attempt still not complete.
the special build of content patcher has me thinking, a debug tool for things like this would be nice
Hopefully that is less frustrating.
It was the trailing space! Thank you so much for your custom CP build 
You guys are awesome! This is the most help I've gotten with anything since I decided to make the mod. Other forums are really dry. Glad I found this discord.
if there's a mac troubleshooting page for authors this should be in bold haha
I got it working! Mod is showing up correctly. I used console commands to skip through the seasons and it's all working. Woohoo. Now just gotta refine it a bit and then upload to Nexus mods. Thanks again everyone.
Found the "bug" in SMAPI at least, potentially. I had five minutes to come back and couldn't help myself.
Not sure why this would only apply on MacOS, though...
At least this might be the problem. Not guaranteed.
No, this shouldn't be it... I'm going to dig more later!
SMAPI was reading it, it was CP that wasn't
Because SMAPI could see the manifest
I don't know about Linux, but windows trims trailing spaces so you can't have them.
Yeah, but CP reads it through SMAPI, which is why it gets fun.
If nobody has by time I get back, I want to do a deep dive on this, because it's weird. 
ContentPack.ReadJsonFile<T>(string path) uses PathUtilities.NormalizePath, but the manifest scanning logic as part of SMAPI.Toolkit only attempts to use PathUtilities.NormalizePath after it tries directly first when its recursively scanning folders to find mods.
so My Awesome Folder /manifest.json would work but I think My Awesome Folder /ManIFeST.jSon would fail as it'll trigger the case insensitive logic to trigger containing the trim
on windows trailing spaces aren't a thing (or the underlying windows apis are willing to silently correct for it and do a similar trimming operation), though Linux allows it perfectly fine (and presumably macos too, as its at least closer to unix filesystem despite being case insenstive)
It's because ending a path with a space isnt valid on windows
And is valid on mac
I was pretty mad when I found out aboit this (2yrs ago?)
the trim has been in smapi since sept 2020 https://github.com/Pathoschild/SMAPI/commit/7580f87029ac9f778ec632c7ccaed489d7ca1364
the trim feels like it should only be a thing on windows and just.. don't on other platforms
I don't think I'm following, because why would smapi need to trim whitespace out of windows filepaths when windows itself already does so?
though it is possible to cause folders to exist in windows with trailing spaces, but you can't actually cd into them via command line
it’s possible the issue pops up when copying files from linux to windows? otherwise I’m also confused about why santisation is even necessary
explorer can handle it fine, but could just be on the long list of ancient forbidden things like 8.3 filenames or stuff like COM
I just tried making a folder with a trailing space on windows and it immediately trimmed it
I made the folder while in wsl
Yeah I just did it through explorer
I did earlier tests with windows mkdir and it also trimmed
but it trimmed in the same way cd is trying to trim
So it's possible to have trailing spaces on windows but you have basically got to be really trying lol
though I'm also giving it an extra test because my F drive is ReFS instead of NTFS
though same thing happens on ntfs
Here's a mod I came up with a few days ago and started to create: It allows your kids to grow up into adults/late teens. Maybe they could be friendable NPCs with heart events. You could watch them grow up, go to school with Jas and Vincent, maybe date a romanceable NPC for a few seasons. Maybe if you have 2 kids, one can go off to Zuzu city for work (Possibly come back to Pelican Town on weekends so that you can still increase friendship with them). The other could stay in Pelican Town and possibly find a job in town or be a farmhand on your farm.
I spent last night creating a few different sprites, but I have absolutely no idea how to code. Does anyone know any Youtube tutorials or anything to help me learn?
!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.
Sounds like you want the NPC section, though I suggest looking into existing child frameworks that let them grow up as well
For growing up into adults, I think that'd be either HMK or custom C#?
But maybe something like LittleNPCs does allow kids to grow fully into adults, I don't know
I always quit before my kids are old enough to leave toddlerhood anyway
Hey I modded my npc to be marriageable, but she doesn't appear as single, what should I do? (About the schedule thing, I was able to come up with a solution so I'll ignore this for a while)
share your CP content.json file with the link from https://smapi.io/json for reference
(or the relevant one if you're using Include, etc)
hello! been a long time since i chatted here
i was told to come here as i am looking to make my actual first mod
currently reading the documentation to see if it would be even possible to do with the CP framework as i do not know coding
Is there such thing as a mix of both or do those have to be separate mods?
Well if you want to use some kind of framework (littlenpc or have more kids) you'd be making a content patcher mod
If you have some additional feature that the frameworks don't cover then you can make your own C# component yeah
I can send the dispositions file if you need
that'll help, the dispositions file would be the one that decides whether they're dateable
Please give your NPCs unique names
For "growing up into adult and move out" part, I assume HMK can emulate that with some conditional and moving the Home away from Farm adjacent?
They should have your mod id as a prefix for their internal name
Oh ok got it
Bebel is set to "can be romanced": false
Yeah it's possible to just make the Child always in NPC mode after some point
So she is not marriagable
And move their Home to somewhere else
This one lets u define how long it takes for that to happen
It's from before the farmer has seen an event
After the event, she's marriageable
Anahi also has that
But she works fine after
where is your patch that edits Anahi to make her marriagable after an event?
Unlock conditions are not the same as being romanceable
that isn't how that works, you'd need "when" conditions specifically
That's whether the NPC is around at all
Ooooooooh
Anahi is still not romanceable
you've got two "Bebel" entries being added, but one just overwrites the other or gets ignored
You can use a GSQ in romanceable
Can't you? It's just a bool field
Oh I see I missed that Anahi's just always romanceable as soon as she is unlocked
you can use CP tokens in bools (iirc), but no, GSQs would only work in specific string fields like UnlockConditions
but that field decides whether an NPC spawns at all, romance is just on/off unless you use When conditions to edit it
So, step by step towards what you want. For the basics, I suggest reading up on this about Content Patcher, and this about the json format.
That's a bit rude that can socialise is a GSQ but can be romanced isn't
being romanceable affects max hearts and such, so it's a bit more awkward to implement, I imagine
But being able to use tokens means you could use HasSeenEvent instead of needing a when condition
And as you basically is creating new NPC (the children), you'd want to learn on how to create a basic NPC first: https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC
(not any weirder than turning it on/off as it is, but yeah)
So, should I use "When"?
Then, you can look into using a framework like Have More Kids to do the "children grow up" part.
yeah, you'll want one default entry for your NPC, and then you could use "Fields" to change their romance field to "true" after the event
I'm a bit lost aaaaaaaa
Oh oki oki
e.g. keep the first entry with romance = false, and remove the unlock condition
then have a second edit with CP's When condition for events and romance = true
hi, i have a question; i never did this before and don't know coding so please bear with me!
i've spent a while reading the CP documentation and tokens, and have a rough outline of what i "should" do to get the effect i want. if i want to append text to an item's description, i should do the following:
- i use an EditData action?
- in it, i create a "When" token
- "When" the player is hovering over the item, i input text i want into its description
is this correct? or even possible? thanks in advance
okay I solved the little issue I had with the new "Patchmode": "Mask" . I simply forgot that if the texture you want to replace has a black background in the original tilesheet, it has to be kept in the replacement file (as shown in the image) even with the new mode. Now I can finally start rearranging my files to update my mods.
Content Patcher doesn't update fast enough so no that's not what you want to do
Easier to just change description in general
1 and 2 are correct, 3 is a bit off. Content Patcher edits some text files that always exist in the game, and Data/Objects is one of them. It has names, descriptions, etc for all the basic items. You can edit the description field there without any "When" and it'll always display your new text, for example.
there is a HasCraftingRecipe token - i want to use it as a condition
CP's "When" conditions update each in-game day by default, with the other options being "when the player moves between locations" and "when the in-game clock changes", so nothing particularly fast
if the player does have a recipe, input the text, if not, say static text
That page lists all the Content Patcher tokens available
that should be fine, though whether it's necessary depends on your exact goal
no worries
And I was surprised you got the wording perfect xD
my line of thinking (again, i'm no coder, so please excuse me) to achieve my effect was:
check if player is hovering over item i define -> check again if recipe is discovered -> if recipe discovered, say text i define -> if recipe not discovered, say other text
i don't know if any of this is feasible or correct to do
(with CP)
You can't check if a player is hovering with CP
we also generally advise not to increase the update rate too much unless you really need it, because if any other mods are editing the same asset, every single time your patch updates all of their patches have to rerun too which can cause pretty severe lag to build up
so i can abandon the hover thing and just directly edit description i imagine
You can check if they have the recipe when the day starts, when they change location, and on time change (but don't)
A day started check would be fine for this I think
a basic example would be something like this (though I'm not sure what IDs in the crafting recipe token should be)
{
"Format": "2.9.0",
"Changes": [
{
"Action": "EditData",
"Target": "Data/Objects",
"Fields": {
"Pizza": {
"Description": "Hi! You have the recipe!",
}
}
"When": {
"HasCraftingRecipe": "Recipe ID here"
}
}
]
}```
if your mod looks like this, CP will check each morning whether to override pizza's description with the new text, and update it if so
but then, say you learn a new recipe from the TV - this would invalidate the item description
i don't know if i can NOT use a timed thing
Unless you think that them missing it would ruin everything, in which case location changed would be maybe possible
Why would learning a new recipe invalidate the item description?
short of constantly checking with C#, some things just need to be on a delay
because i want the item description to mention it is in a recipe - and if the player just learned the recipe, they'd have to wait until, say, the next day for the description to also update
isn't that unintuitive?
Yes, but not game breaking, unlike everybody using OnTimeChange in all their patches which is game breaking
the game doesn't specifically expect item descriptions to change much, if at all, so there's no quick update process built in
sure, ideally if i knew C# i'd do it with that haha
It can be but that's where u may wanna ditch content patcher and do it in C# yeah 
i don't know what a correct "delay" would be, maybe every minute?
unfortunately i don't know any, hell you can see i struggle with just json lol
basically content patcher doesn’t update descriptions when they’re viewed, it updates when you update them. that means that you have to constantly be checking and re-updating the description just in case it will be seen, which you don’t want to do because it will mean constantly recalculating everything in Data/Objects, which you are very much not the only one changing
that is neither an option nor a good idea
I mentioned earlier that with CP, your options "start of day", "player changed maps", and "every 10 minutes in-game"
And we are all saying "please do not use every ten minutes"
but yeah, editing Data/Objects for that would cause some lag just for the sake of updating a description
is "player changed maps" taxing?
What you can do in C# is
- Still just do a description edit no problem with that, do so OnAssetRequested
- Invalidate the description asset when player obtains a recipe
Even location changed is overkill, imo
it is less noticeable because there's the slower fade-out as they switch locations
leaving it as a next-day change is the easiest to mask because the game does a lot there anyway
(i.e. players won't notice if it takes 0.5% longer)
or skip the asset entirely and directly change the text being shown ig
the "best" method is to straight up harmony patch the description getter/function
yeah, C# is optimal if you really need live updates & the game doesn't already do them
(if you also know how to code it well
)
Nobody is expecting an item description to change after getting a recipe because the game doesn't do it, so it not happening until the next day is not going to feel weird to most people imo
In fact, if I were playing I wouldn't ever notice it had changed lol
i could use next day i suppose
if you're saying this is the best practice and won't hurt performance (much)
i wouldn't want to meddle with other stuff
A little message popping up the next day trying to prompt the player to look at their items to see that something's changed might be optimal. Otherwise like Aba says, a lot of people might not even notice.
(“there’s no hook for this, you have to poll instead” continues to be the bane of my existence in all programming matters
/lh)
that's actually a cool idea
Hm is the recipe known collection a net collection
ooo interesting point
Then you can just have it update on day start along with that message. There's probably something in BETAS or something to display the message, so then it would be all CP.
surely it has to be, right? for mp
does the action EditData actually append my text to the existing description or would i have to copy the native description of the item into it?
look into content patcher text operations
netstringdict, which I imagine has w/e events needed
You want the text operations page, right above it in the files list
(I've never actually tried using net field hooks yet
)
I need to warn you that NetList is weird
i found it, thanks
sorry if my questions are stupid
good thing this is a netstringdict, completely different /lh
They aren't, don't worry. You can't know what you don't know yet.
i am looking at Delimiter, under text operations - it doesn't seem like i can edit a linebreak between the original description and my new text?
am i supposed to insert an "\n" or something?
It actually is lolllll
support for formatting like that isn't guaranteed, and might look odd in some menus, but I think I remember it working in object text
yeah i'm referring to the item description
i don't understand why this example has "Fields" and then lists an item, as opposed to the wiki example of "Entries"
"Entries" adds or replaces an entire entry; if you used it in that example, it'd reset every other field for the pizza item to the default (no name, etc)
"Fields" just edits the specific fields you list there
there's some more info about that in one of the sections here
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md
is "recipe ID" just the full item ID of the resulting item?
like would i put the ID for Fried Calamari here for instance
no, it's the key of the entry in Data/CookingRecipes (or CraftingRecipes)
(referring to this message)
you can refer the unpacked files
unpacking the game now
thought i wouldn't need to do this
goddamn that is a long ass ID
"Fried Calamari": "151 1 246 1 247 1/3 3/202/f Jodi 3/",
does this look correct?
like is the ID actually the entire thing in the second quotation signs?
the ID is the first one (the key)
the second string (the value) is the content of the recipe
in "HasCraftingRecipe" i just need to put the item name (the first field)?
i have absolutely NO idea if this is correct 🥶
in theory this is supposed to add the text above to the Diamond item if i have the Tortilla cooking recipe unlocked
i suppose i should create my manifest.json and test this out lol
Your format is wrong
The version number that goes there is content patcher's version
Also When needs to be on same level as Action
there's an example of the TextOperations format here, it's different from normal edits
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md#text-operations
oh i'm a dumbass i thought it said SMAPI
is this more correct?
I think you are missing a closing ] for text operations
is the bracket before last not that
sorry idk what the etiquette of this format is
i copied Esca's example and modified it
Every [ needs a ]
yeah there's one of those before the last squiggly bracket
do i need an extra one?
You have 2 [
oh
One for Changes one for TextOperations
you're absolutely right, i see now
!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.
You can use validator for this or find some json plugin for ur text editor to use
i recall using one of those years ago yeah
holy shit i think i did it
the validator says it's correct
it only took like 10 minutes to figure out wtf i was doing wrong
this looks unholy
i'm sure i broke every convention of formatting here
i made a manifest.json in hopes of the mod being loaded and seeing if this works
🕊️ ✌️
i can see Diamond in Data/Objects, not entirely sure what i did wrong
72
i can see that it's 72; would i need to do this for every item?
what are some common causes for an overlay to not work? Just about finished with getting a seasonal outfit mod to work and for her regular outfits, all overlays apply without issue, but for festivals eye color overlays work but not the hair color ones. I'm unsure what could cause that error as Json validator gives no errors nor did the Smapi log.
https://smapi.io/log/b0bf92fafbe24e7dbd70ef9b7360e06d
https://smapi.io/json/content-patcher/c68dfc2fed5c482f8fb2d8851146884e
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 40 C# mods and 50 content packs.
this is after changing Diamond to 72, not sure if the error is the same
it says it's valid (i just used the first one i found on google)
what do you mean by "share through"; just post my JSON here?
I believe they are talking about this json validator to make sure things are written properly for SMAPI
link to validator: https://smapi.io/json
if i want a character to have a specific animation during festival, is it more work than the classic appending?
@calm nebula: look. (6d ago)
okay, i don't know what's wrong with this but i learned a bunch today and been at it for a couple hours so i'll call it quits here
i can always resume tomorrow
i'm not entirely sure why i get that error when every validator says it's fine
I don't think the 2.8.1 bit is a problem for running so once u r resume check if you are actually copying your content.json to mod folder?
i am directly editing it and saving my changes in the mod folder
but i'll test again tomorrow
been a real physical day and i'm barely keeping my eyes open haha
unless i misunderstood what you meant; my mod folder just has a content.json and manifest.json, nothing else
random thought, how would I go about making a mod that can change the prices of items
I'm wondering what variable to change
sell price, pierre price, joja price, travelling cart price, or something else?
I am bad at math
Remind me in 5 days to look
all right atravita but next time you better bring me 20 nirnroot or i ain't doin it (#7037032) (5d | <t:1769280982>)
We love you
You've got Portraits/Festvials/ as part of your path for the portrait overlays, is this a misspelling?
A large portion of your overlays have Festvials instead of Festivals, which may be an issue if you are attempting to change a Portraits/Festival target instead.
Thank you. That would almost certainly be my issue. I didn't even notice. I think in my head I autocorrected to Festivals instead of noticing the error
Sometimes you just need fresh eyes to see mistakes that your brain wants to autocorrect
yep. Thank you for being that set of fresh eyes
sorry to get back to you so late school and work have been overwhelming, here is the latest log with your download
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 88 C# mods and 81 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
I've done it
all is ramped.
and I at least loaded it up to see nothing exploded or was in weird spots, thank god for my SVE Joja save, cheated though it may be
festival testing uuuugh i don't wanna
If Im making a custom room in Tiled, do I have to run exclusively off vanilla tile sheets? Can I use custom furniture mods or will png files not work
with the latest SMAPI you can use any tilesheets as long as they're loaded, so your custom room can add those mod as a dependency (since you obviously don't want to redistribute those files in your own mod)
other modders have also made tilesheet mods for use in maps
note: i don't know what the etiquette is in term of using someone else's graphics in your mod (even if it's via a dependency and not redistribution), do reach out to them just in case (unless it's a tilesheet mod whose perms is explicit)
tl;dr yes, but make sure to delete the pngs once you're done and only pack the tmx
You can also use tilesheets like hxw which just has their furniture
i.e. using extra tilesheets not on the original farmhouse is fine
Anyone have insight on this error? Says index out of range for this line, but that doesn't make any sense since it's an array constructor and string.Length is always zero or greater.
https://smapi.io/log/d9ab7150499d455db44bab5aa24caa55
https://github.com/tlitookilakin/HappyHomeDesigner/blob/246ad04cd4aff0ecfb69f7f14e88dc3547dc0d25/Framework/Glyph.cs#L18
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 88 C# mods and 233 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
I have a slight suspicion that this person is using a pirated copy of my mod, but I can't prove it
yeah I still feel its right to ask even if you use it as a dependency and credit them
such a weird thing to pirate when you can just dl from the og source
i think its more likely that whatever translation theyre using to translate even the manifest probably left a completely blank translation key, so instead of getting "no translation" its getting ""
that kind of makes sense, but a zero-length array is still valid
I don't think array constructors can throw index out of bounds 
yeah that's the thing that's confusing me
the error looks like array indexing but the line number is just an array constructor
Since they are in chinese though, do u think it's a problem with each character taking up more than 1 char
well I think it's usually not intentional piracy. Typically what happens is some jackass decides to reupload it somewhere without asking, and then people download it because the uploader pretends it's legit
I don't think they are doing that actually
If u look at what they renamed it's stuff that has gmcm
A sadly common practice to do that cus can't localize mod title there
maybe? but char in c# is not the same as byte and can hold multibyte characters. For chinese I did copy the game's method for handling it, ie. using regex to find whitespace and ignoring everything else
most of the code in that class is a modified version of the logic from SpriteText, so if iterating chars was broken it would be broken in the base game too
Yeah honestly idk since i never had problems with hhd in chinese
yeah, I figured if it was a language issue someone else would have probably reported it
What about line 42
My experience is that in release mode line numbers are not necessarily reliable
hmmmm
i was told like, yesterday that it was unrelated to the release vs debug mode
That said 18 to 42 is a lot
that could fail if a string contains zero whitespace
the other line numbers are also incorrect, though. BluePrintMenu line 347 doesnt call .Layout or ShowOverlayText
I'm not sure if that's the error but it would be good to fix
yeah only one of the line numbers in the log makes actual sense
which is part of why I'm wondering if it's a modified binary
i was gonna ask why ShowOverlayText didnt show either but maybe in release it got inlined more or sometihn idk (i barely know how inlining works)
yeah I'm sure that got inlined since it's so small
release builds do tend to do that
so yes even though the line numbers are off, it's likely a chinese language key with a blank value which is causing that trailing text detection to fail
That can happen in Chinese yeah
(It is and isnt)
Release mode inserts less instrumentation and has more optimized code, both of which can throw off the line number
working on my thumbnail
the ramps are loose
that doesnt sound safe
aaand there's my compatibility update for it. Tadaa
omg you actually- it's perfect
Okay the log errors make both more sense and even less sense now. (It's nothing about you its just these messages should be impossible) But I have another rough idea on what may be happening
I can test anything you need, i tested 1.1.1 to see if possibly something changed but its the same issue
I'm writing up a fix rn
@umbral edge This should help
(This one only contains the .dll, don't delete the CP part)
I'll see whatever you find in the morning, since its past 1 am rn
can i use a record across pintail
yeah
do i gotta make the record inherit from interface or can i just put the record 
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 92 C# mods and 90 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
ah ok
this is at least going off other mods I've seen using records in their apis
hmm
i have some new locations added in VMV next update including some players may overlook since they "know" the area
is a small quest (kinda like mine exploring) overkill for introducing those?
i think it's fun 
that's pretty standard for new areas in commercial games, at least, usually unlocked after interacting with the base game somewhat
which in this case would mean giving them the quest when they've visited a VMV area, or if they've made some progress there, etc
whatever feels right, really
(contrast with Elder Scrolls games that tend to just give you DLC pop-up windows midway through the tutorial
)
i feel it removes a bit of exploration but also yeah, people will likely not reexplore stuff just because maybe something was added there!
the way i introduced my location i added later was an event where the townspeople go "oh did you hear the old docks east of the beach opened back up? what's with the mysterious guy who lives there?" and then just a Location quest to visit the docks (edit: not sure where half my message went)
adding a visible change to draw their attention from existing areas could also work, but might be hard to get right
Yeah, people who know the area would be likely to walk right past it
my words bad today, too many ramp
part of my difficulty is that i like immersive paths which sometimes means a bit of dirt in grass to lead to somewhere so ... 😄
you could always wait an in game week or month or something to send the quest/letter
i think maybe adding mail might work too, something relatively simple to get the player's attention
and not send it at all if they've visited before then
hmm
maybe i can add a timer like having visited the location at least once using the ct location stuff
and preventing it if they indeed visited the other locations
hi, does anyone have experience working with the mod Scale Up 2 by Platonymous? I'm hitting a roadblock 😅
there's just a PLAYER_VISITED_LOCATION gsq
using the location visit CT would be more complicated
