#making-mods-general
1 messages · Page 575 of 1
I've never made an NPC so I'm not the authority on this lol
i did just get an idea for my own mod (tho i don't think it will cause issues)
I had the exact sqme issue fr
Man I need to eat something I've been misreading too many things
i mean neither of us are sure it will produce a small box
me nor kailey can remember how its displayed
xd
i wanna say it does but i rly cant remember
I feel like if its on its own it might misplay as small... cus i also swear i remember seeing it
so like no other dialogue just the message
isn't the small dialogue box only for events
that one can be achieved by message yes
The shane dialogue for joja is in his dialogue file and it is indeed with the message only and no additional dialogue
Guess it just kept the size of the text box after the dialogue gets displayed, so it ends up really big
interesting
huh wait
I just tested it and it seems the message is big even without any dialogue
hmm, might be hardcoded?
if its dialogue yeah
yooo i have a question about the $p dialogue command. when used in tandem with the question command, does the followup dialogue using $p activate right after the question is asked (similar to the $e command)? or would it only check what to respond with the next time the question is asked? i'm trying to implement a follow-up with two different responses depending on how the farmer answered but the text for it doesn't come up in any conversation right after the question is asked nor the next day. just making sure i didn't mess something up or misunderstand the wiki
https://smapi.io/json/content-patcher/10b9bc3e928644989e2ecfcb8b18d14e i just copied the question & answers instead of the whole json if having a visual helps
omg I tried using both before 😭 did not end well for me
I don't fully remember but I know the question would get asked at the most confusing times. like right after the first message and all that
Still im new to modding sdv so it might be a me issue, but I tried lots of combos and it got more and more confusing
the first dialogue (if p true) would play as if it was the question prompt, and then the questions would pop up... (questions were meant to appear if false)
code example please?
of adding a layer specification in the target or patchmode field
check sve's code
Have you checked the content patcher documentation yet? there's an example right under the patchmode section on the editmap page; just add a line with "patchmode": and your patching method to the example the same as the other lines in there
The layers are in tiled itself
You can remove any unused layers from your fromfile tmx map
That's - actually my problem. I can't tell what exactly the github documentation wants me to do. Am I supposed to create a second "Patchmode": line? Is it telling me to add something to the extant one? If so, what should that look like - how do I conjugate the two and what encapsulation method ("" {}) do I use?
(Everything has already been edited in Tiled, and is is a playable state. All that's left to do in tiled is interior redocorating and the removal of excess object layers, which I am saving for after the code works.)
Logging off for a bit, I have things to do.

@uncut viper: ask chu about adopt wild pet features (38d ago)
by which I mean places to go.
@lucid iron
Please I cant find the strays outside of work today plz put them in stardew
chat does anyone know if there's any kind of tile data thing you can use to simulate the edge of a map to keep the camera from traveling past until warped past? or
i dont know what that means
hey @lucid iron do you remember what these features even were bc i dont
i don't think there's a tile data version but you can use the viewport clamp
check out the bus stop
I was gonna spawn wild pets and let you do a little event with them to take them home
pretty sure the viewport clap makes the map beyond it not visible though
oh heck yeah
It's actually mostly working I am just procrastinating on mp testing
what do you mean Was
oh ok good its not shelved
I didn't realize atra had already pinged you by the way because your name is wumbus
But It was my reminder so I was obligated to ping you anyway
oh, fire thank you
I actually scope creeped to include farm animals too
Alright, so (you probably already know most of this, gonna include it anyway just in case):
The documentation gives you examples in this format (this example is from the Map Properties section further down the EditMap page):
{
"Format": "2.9.0",
"Changes": [
{
"Action": "EditMap",
"Target": "Maps/FarmCave",
"AddWarps": [
"10 10 Town 0 30"
]
},
]
}
What this example shows you is basically an entire content.json file. If you run that example unchanged in the game with a manifest file, it'll work.
The example has three things in it: the Format line, the Changes section, and the patch (which is an EditMap patch in this case, but other types of patches can be things like EditData, Load, Include etc), so it's helpful to separate them out to figure out what you need.
The Format line should only appear once, at the top of every content.json (but not other files).
Each content patcher file should have one Changes section. Within that section (enclosed by square brackets), you put all of your patches.
The tables in the content patcher docs tell you what kinds of lines fit into the patches. Each line has a key (the first item, before the colon) and a value (the second item, after the colon). All patches start with an Action line. That means the key is "Action" and the value is the type of action it is, such as "Load", "EditMap" and so on.
(continued below)
i need this owlboi asap
It's from axell's owl mod it's out 
I just used it for testing
Unfortunately no taking own home rn
i want to take the owlboi home though
You apply that same formatting for the other lines. The first column in the table tells you the key, and the second column tells you what possible values go into it. In the above example, "Target" and "AddWarps" are both keys, and "Maps/FarmCave" and ["10 10 Town 0 30"] are both values. Most values are just a string (a word or phrase between quotation marks), but if the key specifies it should be a list (like AddWarps) then it'll use square brackets. Keys with specific formats like that typically mention that they require a non-string format in the value explanation; if they don't, you can generally assume string and then look for examples or ask about it if they don't work :)
With the Overlay A Map section, patchmode is one of the available keys that can be in an editmap patch (since it's on the editmap page). So you'd make a patch with "action: editmap", and then on the next few lines you'd add the keys you need (like "patchmode" and "fromfile"), and then you'd give each of those keys a colon and then their respective value (like "replacebylayer" and "yourfilenamehere.tmx" respectively). You may not need all of the lines; the value explanation will tell you if it's optional, and what the default will be if you don't specify it.
The modding wiki follows similar formatting, in case you're having any trouble with interpreting that too :)
@next plaza: make a mod where weed debris near a bee house will make weeds honey (161d ago)
casey what crimes were you committing 161 days ago
@next plaza: what Selph said (161d ago)
That’s some good stuff, Si 
modder's pie got me practicing 
i used to make tutorials for my company's wiki, guess i got pretty good at it
Watermelon and opposite watermelon
is there any way to either have two or disable it in certain areas of the same map?
i don't think so, but maybe you could describe what you want to do and people may have other ideas?
Currently designing my first wallpaper mod but when I switch the wallpaper well the entire time only the bottom portion is visible idk why
I want to have two separate areas in the same map but preferably seperated by the movement of the camera instead of just a void or extended amount of tiles 🙂↕️ making an ACNL island for the farm and to get to marnies ranch you go down to a seperate map, but if i were to turn it into just a mod on its own, i currently have the forest edited in stardew expanded to warp you to the extra map rather than an extention of the farm 🙂↕️
CAT❗ ❗ ❗
Kitty
do you know of a list of the map custom properties?
only what's on [[Modding:Maps]]
if you want things added by frameworks, you'll have to look at their docs
oh sick thank you 🙂↕️
You want the camera to behave like in old Zelda?
Where it snaps into place when you enter a section of the map?
You could make map and add c# logic to it in data/locations
But there’s also a mod called mumps that may have had a feature like this
Not updated anymore
wait, would it work to set the "ForestEntry" to be "Name.Of.Other.Map X Y"??
Where would I start if I wanted to modify child sprites for a specific spouse?
I never have kids in my saves so I'm not familiar with any of the child mods
Look at Lumi's kids take after spouse mod
much obliged 🙏
answer for any wondering, no
mmm kinda, more like make two boxes the camera stays in when you're in em but switches when you warp, bc the bottom of this farm is ocean, doesnt make sense to take a boat to marnies, so i made an other side beach to a path, I want it to just be one map but i dont wanna make just giant chasm of water between em
Can't forget the Casey april fools mods of the year. One mod did not make it to publishing since it died during development because Harmony hates me specifically
https://www.nexusmods.com/stardewvalley/mods/44536
im honored to be responsible for 2/4 of them
i know its been a sec but if anyone got info about this lmk
do you know if there's a mod/framework that would add the ability to add "map.name" before the X Y for the ForestEntry property?
Hi. I am having issues implementing something into a mod I'm making for content patcher and was told on reddit to ask about it here. So I'll just copy what I wrote there:
I am trying to make it so the monster eradication goal for slimes is marked as complete if a slime hatch is built, even if the player has not killed any slimes.
Things I've tried that did not work:
Using "TriggerActions" to tell it to "AddMail Current Gil_Slimes received" if the condition are met.
Using a "When" condition to set the amount of Slimes needed to complete the goal to 0 if the condition is met via "Slimes": { "Count": "0"}. (It does set the count to 0, but the goal doesn't seem to actually complete and the perfection counter doesn't seem to count it).
Using "EditData" on "Data/MonsterSlayerQuests" with "Condtion": to set "Count" to 0 the same way.
Any ideas on how I could do this in content patcher? Or is it something that would require C#?
I think you'd need C# for this; I don't think the monster killed stat is exposed for content anywhere
though a trigger action action would be nice
new BETAS thing?
Dang. Is it possible to just exclude the monster slayer goal from perfection somehow then? Or would that also need C#?
I thought it's just a stat so u can incrementstat
No, it's one level deeper
it's its own super special stat dict
with that being said as mentioned exposing it as a new trigger action would be trivial Button pls
though I think you can also straight up delete the quest by nulling it out? not 100% sure that this won't have issues though
then it won't count for perfection, though you still need to find a way to give the player their slime charmer ring
Just mail them one lol
I should be able to do that by just sending them a letter I think, so that's fine
How would you null it though? I don't think it's in the quest file?
"key": null
tilesheets my worst enemy... i removed the tilesheets i copied from the unpacked files, as i was instructed to do long ago, since i'm now done making/editing the maps, and smapi is giving me all sorts of errors. before i would load in the rooms with the pngs still in the maps folder, but now that i've taken them out, it seems to have broken things. here's the smapi log: https://smapi.io/log/2ae8e654c2c54ed480b4af7548f78216 if anyone might know how to fix :')
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 17 C# mods and 5 content packs.
are you aware that BETAS already has a MonsterKilled trigger for you to make your own custom SlimesKilled stat
isnt the case here they want to increment the stat without killing monsters
they can just use their own stat for whatever they want to do instead
but monster slaying quests dont use regular stats
but it does use the mail flag to determine if you've already done it
Wait what key? Sorry, I'm very new to this.
would that help with perfection 
the key of the slime quest in data/monsterslayerquests
Ah, alright
it doesnt seem like perfection checking uses the flag (it calculates the count every time)
but it would then use the count in the data asset, no?
where else would it get the number to consider for completion?
I've tried using that flag and it doesn't seem to have a visible effect on perfection at least? It stays at 0/12.
Removing the quest does seem to work though, so I'll probably just try to use that. Maybe see if I can use When to only remove the quest if the hatch is built?
The bool that the game uses to determine if a farmer is a monster slayer hero is controlled by checkForMonsterSlayerAchievements which does use the count in the data asset
I mean the count for the actual slain monsters by the player (they want to boost that number by 1000 when a slime hutch is built)
right now there's no way to boost that stat without killing monsters
right but I'm saying you can just remove the need to boost that stat
yeah that's my null it out solution
I mean, reducing it to 0, so that 0 monsters are needed instead of 1000 would also work. I just needed a different "completion" condition, essentially.
you don't even need to null it out. the mail flag works for marking it completed on the board and setting the count to 0 makes it count for perfection
can anyone explain %fork? There's like... one sentence about it on the wiki, but doesn't really explain how it's used
Sure! Favor using quickquestion if you can
the modding community's official stance is that %fork should be burned at the stake
I figured out my own issue I had set a back 2 layer on top which was making back layer not noticable
nod nod
https://stardewmodding.wiki.gg/wiki/Events_for_Everyone#Questions this site has pretty good explanations of questions/forks in section 11
Last edited by AtlasVBot on 2025-09-13 18:45:43
This guide attempts to provide a more in-depth explanation to modding events as a reference for both beginners and experts.
Anyway I'm basically just looking for something that could fork the event depending on the player's combat level lol
I dont think you can currently without a dependency
The only thing I can find is just starting a whole new event yea
tyy ^_^ I'll figure something out (and open more tabs on sdv modding... I have like 13 but I closed a few I havent used in a while lol)
I use them so much haha, I spent a whole day learning them and I sure am gonna use it to its fullest
what I have created... a decoratable cave sort of
I never thought of that, but it looks really cool so far... Like a cave entrance :0
ThankyouThankyouThankyou!
This is precisely what I needed, and I have copied it into a text document so I can reference it whenever I get turned around by the community guides!
No problem! I covered some of that info in my modfest tutorial as well if you want another reference too
https://www.nexusmods.com/stardewvalley/mods/43811
New quote added by kaileystardew as #7823 (https://discordapp.com/channels/137344473976799233/156109690059751424/1489034271304978512)
wow 2 quotes in one hour I have truly made a difference in the world 
i just readded my tilesheets for the sake of continuing to test run but here's the updated smapi log when i put the pngs back in the map folder: https://smapi.io/log/8723f42fd6814324bb5174ba28efba26 if there's any experienced mod authors who wanna give input it would be so appreciated!!
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 17 C# mods and 5 content packs.
(its late and im tired but should the asset name have the .png bit in it?)
Only in the patch that loads the asset
After that you should reference the internal name you gave it when loading it (mods/{{modid}}/yourinternalassetnamehere generally)
okay took a peek at one of my mods for ref, I believe the filepath should be mods\{{ModID}}\yk the rest of the filepath but please double check this fellow mod ppl
so then replace 'SMAPI\starfyzz.ivaraswolfgang\assets\maps\summer_outdoorsTileSheet.png' with 'Mods\{{ModID}}\assets\maps\summer_outdoorsTileSheet.png'
hmm i guess i'm a wee bit confused, where would i check to make that change?
might also need clarification, are you trying to utilize the default games seasonal tilesheets, or your own versions that happen to be named the same thing?
could you upload your json pls?
i just borrowed a copied version of the tilesheets to make a custom room/spouse room/patio, so just utilizing!
yes one sec
Are your tilesheets in the same folder as your tmx?
they are yes
Asset names starting with SMAPI/<modId> indicate that SMAPI is trying to load an internal asset from your mod folder, in this case a tilesheet, which Im guessing means you have spring_outdoorsTileSheet.png in there
But no summer version, or winter or fall
Your tilesheets should be in a different folder from your .tmx unless you specifically want it to only ever use those exact .pngs (i.e. no recolour compatibility) and if thats the case, you must have all the seasonal variants included
(You in all likelihood do not belong or do not want to belong to the camp that needs the tilesheets in the same folder)
TY for the (inadvertant) reminder to do this!
Unrelated:
for patching layers of tiled maps, is "{{mod}}_examplemap.tmx#Base_2" the right way to direct CP to a layer named "Base 2" in a tiled map called "example map"?
What? Where did you get #Base_2 from? What do you mean patching layers
ahhh but shouldn't i remove the tilesheets anyway once i'm done using them so that it can draw from the game's folder? it's been a while since i worked on these maps, but from what i remember i thought it was that it would redirect
You should yes. Until you remove them tohugh, if they are in the same folder as the .tmx, they have priority over using the game's versions
Which for seasonal assets is a problem if the season changes but you do not have the seasonal variant in there too
Because it'll continue looking in the same folder as your .tmx
Core mod
8
12
3
Cats
okay i see! so i should make a new folder for tilesheets & move them there, re-path the tilesets in tiled to match those instead, then remove the tilesheets folder?
My "move them to a different folder" thing was because I got my wires a bit crossed and was thinking about custom sheets, but if you DO plan on removing these sheets entirely, you CAN keep them in the same folder for now for editing
As long as you include the seasonals
Alternatively, you can start using tilesheetinator which will make working with tilesheets a lot easier and remove the need for them to be in the folder at all, even when editing
If you did move the tilesheets and repathed them there for editing, you would break your map with tilesheet climbing.
(The suggestion to move them was bc of the aforementioned crossed wires where I was thinking of custom tilesheets that would then be Loaded)
!tilesheetinator
You can use the Tilesheetinator tiled extension to create Stardew Valley maps that work in-game without having to copy vanilla and modded tilesheets back-and-forth, rename files with a . in front of their name, edit maps only in the unpacked content folder or make symlink workarounds.
See the mod page for full installation and use instructions.
{
"Action": "EditMap",
"Target": "Maps/Greenhouse",
"FromFile": "assets/{{ModId}}Greenhouse_Background{{season}}.tmx", <<<<<<<<< Here
"FromArea": { "X": 0, "Y": 0, "Width": 35, "Height": 6 },
"ToArea": { "X": 0, "Y": 35, "Width": 35, "Height": 6 },
"PatchMode":"Replacebylayer", <<<<<<<<this needs specified layers, I think
},
I got "...map.tmx#Base_2" from - well, the way subsections are normal refernce on the web, and - why i actually used it - how tiled references tileshhets, as I figured that is more likely to be the actual method???
I'm still not sure where you got #Base_2 from or what you're asking, since it seems like from that snippet you already know how to do a map patch? ReplaceByLayer is the default.
Do you mean Back instead of Base?
#Back_2 would also be completely meaningless
ohh okay. i bookmarked that resource, so thank you for that! i am indeed done editing the maps though. i posted this a bit earlier but when i removed the tilesheets it gave me this smapi log: https://smapi.io/log/2ae8e654c2c54ed480b4af7548f78216
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 17 C# mods and 5 content packs.
You need to add ../ in front of the image source inside the .tmx if you want to use a tilesheet that is not from the Maps/ folder in the unpack. Or you can install tilesheetinator which will also handle this for you.
er, ../<The name of the folder its in> not just ../
I don't remember where furniture.png is from. TileSheets? It'd be ../TileSheets/furniture.png if it is
updated explanation; hit enter instead of shift+enter.
I'm not sure why you're making any assumptions based on the web or Tiled about how Content Patcher's EditMap works. It works exactly how it says on the page. If you only want to patch specific layers of a map, just only include those layers in the file you're patching with
If you only want to alter the Back2 layer then your FromFile .tmx should only include Back2
basically this
It isn't, I'm trying to stick a set of seasonal maps behind transparent greenhouse glass
What isn't what? ReplaceByLayer does not need to be told what layer to affect. You make a patch, you only use the layer you want to affect, and that's it.
Just make a patch that uses the back layer and has no other layers in it. It'll replace only the back layer when patched in
My wetware has several significant abnormalities, some of which means that it finds instructions and paperwork fields much less straightwords than most brains do.
Anyway, I now know that I need to make five-ish dummy layers under the "floor" of the greenhouse map and rename the layers of my backdrop map after them, Thanks!
That doesn't quite sound right
But I'm not sure what you're doing other than stuck things behind transparent glass. Why the five layers?
Okay, so I've got a bit of an odd circumstance here: My multiplayer group plays the game with the host player on the entire time, but the rest of the players drop in and out throughout the game session, which means they sometimes miss entire days. This means that some letters that are only sent on a specific day with questlines are not received.
We've previously used debug commands to directly give them the missing quests as needed (Robin's Lost Axe, Jody's Cauliflower request, Mayor's Lost Shorts, etc.) but now I'm looking at options to prevent it going forward by using trigger actions to resend the missing letters.
If I set an action to send mail that would normally provide a quest but they've already completed the quest, what happens?
(I'm hoping it doesn't duplicate the quest, but it's not the end of the world if it does)
It will duplicate the quest.
Okay, good to know.
We'd only get dupes of the axe and cauliflower so far since we haven't progressed far into summer, so that's not awful.
typically if you have events that affect all players you should be checking the host player in your conditions
Well these are vanilla things...
assuming this is your own mod sending the quests and mail
That's the number of layers the backdrop map currently has. Next on my agenda is an attempt to lower that number.
playing around with tilesheetinator and i got it all set up, i see there's an option for "fix stardew tilesheets" but when i click it nothing seems to change with the missing tilesheets. i added the spring outdoors tilesheet and tested it on the spouse patio for reference
this is fixing/working around a multiplayer issue in the vanilla game because we are not playing it in the way it's intended (with everyone on at the same time the entire time)
Tilesheetinator means you should no longer need/have the tilesheets in the same folder as your .tmx. Close Tiled, remove the tilesheets, reopen Tiled, Fix Stardew Tilesheets
(Beyond that, I'm not myself familiar enough with Tilesheetinator to do any troubleshooting of it)
Fiddly little question. Is there a way to scootch an object over by a few pixels in an event? I know there's positionOffset for actors, but what about objects?
yeee hehe i did remove them beforehand but still no luck. i exited out and came back in to retry it too. raghhhh i hate tilesheets
Oh I see, the other map! You could just name them all Back/Back2/Back3 in the backdrop map and they should order properly IIRC. You don't necessarily need those layers on the greenhouse map. It should add them if they are not present. (Someone correct me if I'm wrong on this)
That said they should still be getting the mail on their mailboz
If this happens on vanilla report it
I did some PatchByLayer stuff and that appeared to be how things worked
We're unfortunately running modded, but they definitely haven't gotten the letters at all when they joined several days after the letter's intended delivery date.
So far it only seems to be missing the letters that have a predetermined season_date_year ID
Could they use Back-1, Back-2 etc as well if they need to put something in below the Back layer? (asking incase they dont know about negative layers rendering below)
I don't know about negative layers either so good shout LOL
learn something new every day
i learn something new and an old thing falls out the other ear 
New quote added by atravita as #7824 (https://discordapp.com/channels/137344473976799233/156109690059751424/1489051776467468451)
You can in your trigger action also just check for the mail
atra, this is what I have written so far, if there is a better way, please save me. xD
https://smapi.io/json/content-patcher/0cad197f9fe94af78ff3281c21233e98
Well you can definitely save some space by removing all the optional fields if you wanted
I don't know if the SkipPermanentlyCondition is needed or not since it's partially the same as the Condition
It can help.
It's never needed but it does add it to the list of trigger actions already run if SkipPermanentlyCondition is true, which means none of the rest of the stuff is checked
So it's more an efficiency thing
ah, I see
But I meant HostOnly, Actions, CustomFields, and MarkActionApplied
Those can all be removed if you're using default values anyway
You could LocalToken these, though that's more a subjective thing about whether or not it makes it simpler to write all the dates down, since it wouldn't be for saving space (you'd need the same amount of patches anyway + an Include)
This would be way easier if those quests had their own flags, but sadly they do not.
So I have to check it this way.
I didnt mean using their flags for localtokens, you'd still be inputting the mail key and the date range, they'd just be one after the other in the localtokens list
Well, I've condensed it down a bit by removing the optional fields with default values per atra's suggestion
Since this is gonna be for our personal use, I can just comment out the trigger actions for the quests that are gonna be duplicated for now, probably.
As far as I can tell, not really. The best routes I can see are either to just add your own offset-looking copy of the object with a different ID, or set up temporaryAnimatedSprite with the source rectangle offset slightly (tilesheet layout permitting). And if it needs to move mid-event, use add/remove or the invisible commands to swap them out. 
You can also probably do a local token
Ah ok, thanks! I'll take a look at the tilesheet to see if that'll work
Behold my dummylayer-powered madness!
// seasonal greenhouse backdrops
{
"Action": "EditMap",
"Target": "Maps/Greenhouse",
"FromFile": "assets/{{ModId}}_Greenhouse_Backdrop_{{season}}.tmx",
"FromArea": { "X": 0, "Y": 0, "Width": 35, "Height": 8 },
"ToArea": { "X": 0, "Y": 1, "Width": 35, "Height": 8 },
"PatchMode":"ReplaceByLayer",
},
{
"Action": "EditMap",
"Target": "Maps/Greenhouse",
"FromFile": "assets/{{ModId}}_Greenhouse_Backdrop_{{season}}.tmx",
"FromArea": { "X": 0, "Y": 0, "Width": 35, "Height": 8 },
"ToArea": { "X": 0, "Y": 33, "Width": 35, "Height": 8 },
"PatchMode":"ReplaceByLayer",
},
uhh update, but i used tilesheetinator and got the missing tilesheets repaired finally. the tilesheets i was originally referencing have been removed from the folder that the map tmx files are in. but i am now getting this smapi log: https://smapi.io/log/e470c6421512477b99a0daab2f502fa8. i tried to decipher what was wrong with it and i'm pretty sure it's still the layers? not sure how to proceed
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 17 C# mods and 5 content packs.
....Why do both underscores and astrisks cause italics???
Discord markdown. Use the backticks ` to get around that, or use the JSON validator instead and share the URL for your code.
Three backticks around your code on either side will put it in a code block
That's, like, a seventh of the content json, I'm just happydancing because it is now in a state where it should do what I want it to
heard the slightest wurring noise in my room again, and just realized it’s my computer. I very likely never cut smapi when putting it to sleep 
Time to copy it into my mods folder and see if it does its job.
Oof.
oh… turns out I did. Must be my all my tabs and the fact that it was plugged in
I did it!
Kinda janky but it works
....So i'm making jsons with notepad regualar, and the validator keeps telling me that it's detecting {. when there's either a comma or nothing after the { ???
Is the "new aka/paragraph" symbol somehow doing this despite not showing up as anything in the box of evaluated text????
(yes, I checked for {, typos.)
New command added! You can use it like !npchelp.
woah, new command?
I use notepad too and its hard to tell the issue without seeing the code, but sometimes tab/spaces can bug out events and stuff. It's a pain to figure out when it does and doesnt though,
Here's a list of software for pixel art and JSON text editors we recommend: https://gist.github.com/ishanjalan/c8efb21afa21f74a052293176db107f7
For making SMAPI (C#) mods, see the Requirements section here for which IDE to install https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#Get_started.
It's become an unwitting habit...
i normally code in visual studio which is the funniest (worst?) part... alas.
once you go vscode you can never go back
the dark mode alone does it for me, the formatting stuff is just a bonus
I've been using vsc since before i started modding stardew, but I'm so used to notepad when it comes to stardew now that vsc feels wrong </3 its a curse
I do use it when troubleshooting festival stuff tho, that file is so long i need the option to collapse sections
i was told you can make movies to put in the movie theatre...
something to think about for ur npc :3
is there a really, REALLY simple guide to setting up a config for a mod? I think I'm too stupid to understand the one on the pathoschild github
I've been looking at examples but they do different things than what I'm trying to do, and when I try to modify it to do what I want, it doesn't work... I'm trying to make a config for my truffle mod that lets you set the min and max truffle spawns without having to edit the content json
like without the player having to edit the content json right?
idk how to do that but just clarifying
yeah
🤔 like the better shopping being able to change the price in game? Or.. bc I have no idea how any of it works but wouldn’t it be possibly easiest to set it to a variable that starts at a certain value then make a custom command for it? Or smthn with config if that’s ends up easier
Oh, you're adding new truffles to the game?
I honestly have no idea about any of that, my mod was barely cobbled together looking at a guide and examples and I'm surprised it works. And not new truffles, it just spawns truffles in the secret woods
I have values set that determine the amount spawned per day but right now that can only be changed by directly editing the content json
SMAPI is the mod loader for Stardew Valley. It loads mods into the game, provides APIs for mods to use, intercepts errors, and backs up your save files automatically.
See the player's guide to using mods for more info.
sure, do you want the one I tried to stick the config in that doesnt work or the one pre-config?
Uh, sure, share the config one I guess
I've done some config stuff, so I'll take a look
thanks for taking a gander it. I literally have no clue what I'm doing..
sure
Although, next time, you can just use https://smapi.io/json
I'll check this out
Oh I gotcha, sorry
Ok, so I don't really see what's even supposed to be the config here, so I'll send over an example of how a basic config can work
the Minimum and Maximum SpawnsPerDay are about midway down the json, that's what I'm trying to have a config for. but yes please, I'll look at any further examples
I think you'll wanna use {{MinimumSpawnsPerDay}} here then
"MinimumSpawnsPerDay": {{MinimumSpawnsPerDay}},
oo okay, instead of the value there I reckon
Ok, so I've simplified one of my mods configs for you to take a look at. How about you go through this, and then ask some more questions? https://smapi.io/json/content-patcher/ae368476311146d5ba9ce61edcaf6389
You're going to need a config schema field
and Dynamic tokens, I think
oh I don't know anything about dynamic tokens, or what that means 😫
Here, take a look at this https://github.com/Pathoschild/StardewMods/blob/stable/ContentPatcher/docs/author-guide/tokens.md#dynamic-tokens

Dynamic tokens are in the table of contents
My Dynamic token (or DT) here:```{
"Name": "Santa Red",
"Value": "{{ModID}}/SantaRed"
},
my config schema: "SantaRed": { "AllowValues": "true, false", "Default": "true", "Description": "" }, is what actually lets the player choose to allow that value or not
I think your"MaximumSpawnsPerDay": { "Default": "1", }, will have to be turned into a value
I don't know how to exactly format that off the top of my head
I did config pricing for my furniture shops
"SeedShopPrice": {
"Default": "500000"
},```
```"Entries": {
"Radium_SeedShop": {
"Id": "Radium_SeedShop",
"ItemId": "(F)Radium_SeedShop",
"Price": "{{SeedShopPrice}}",
"IgnoreShopPriceModifiers": true,
"AvailableStock": 1
}```
worked like this
sorry I'm trying really, really hard to understand.. I dont know how to translate these examples into a spawn amount ><
can...can you have a configuration for an FTM pack? is that a stupid question
It's ok. Plenty of things haven't clicked for me on the first or even second time either
your guess is as good as mine 😫
Ok, I could totally be wrong because I'm not very knowledgeable on DTs, but lemme see if I can cobble something together
So this might work as a DT"Name": "MaximumSpawnsPerDay1": "Value": { "Default": "1", },and maybe insert this new DT in here"UniqueAreaID": "WF Woods", "MapName": "Woods, Custom_ForestWest", "MinimumSpawnsPerDay": -1, "MaximumSpawnsPerDay": {{MaximumSpawnsPerDay1}},// right here "IncludeTerrainTypes": [ "Grass", "Diggable"and then this in the config schema "MaximumSpawnsPerDay1": { "AllowValues": "true, false", "Default": "true", "Description": "" },
and ...
wait
ok, I'm going to edit this again
alright, this is my shot at it
I don't know if it's correct
I will try to tape these bits in and see what happens
Oh, I think I sorta know the issue with this exmaple I gave. If it's false, I think it just breaks the spawing all together
hmm
did anything happen?
sorry I am still doing it, I am very inexperienced with this whole thing 😅
I need a more experienced modder in the room, honestly
I am still a semi-beginner
I think there may need to be a query in here...
I'll reference my snowman mod
"help i need an adult" XD
I was tempted to say I need a trusted adult, yeah 😄
Not for april fools he isn't!
Ok, so the example I gave is broken
I'm putting it in a json right now
I'n going to see if I can format it better
I'm beginning to wonder if its ok to just leave it as needing to edit the content json manually..
Hold on a sec
could always upload another version, with more spawns. people can pick which to download
Ok
I feel like I'm close-ish to something working https://smapi.io/json/none/72809822a6764d3882c6c1564626312f
is there an adult in the room that can help me help someone else figure out what's wrong here?😅
and this is an alternate approach that may be worse, but there'd need to be something in the query to potentially make it work... I think https://smapi.io/json/none/b80e838c6bd6495abe51eeba09d42d4b
these are NOT supposed to be functional content json by themselves btw
I will probably revisit this when I have some more experience.. I didn't even know how the brackets worked until like yesterday.. if that gives you an example of how unknowledgeable I am lol
(implying I know how they work now... only a little better than yesterday)
Yeah, nothing wrong with just updating the mod later when you know more
I'm not really experienced enough to help here either
I am curious how close I was to something functional though
I really appreciate your help and time though
It can be easy to get caught up in adding a lot of cool features at once. People don't need a config for the spawn rate to change to play with your idea though
for sure, and as long as it works its fine for now 😄 I made the mod mostly for me and I certainly dont need a config. I just thought it would be helpful to other people
yeah. I feel like testing whether the spawn rates would be hard, so I am not going to ask you try anymore of my cobbled code on it
I thing the configs would show
but would they work?
Probably not. I feel there's something wrong
I mean, it LOOKS good.. to my untrained eye
If anyone does want to correct what I was trying to do, @ me. I want to successfully finish this, even if I'm not the one technically solving it lol
I'm just skimming at the moment, but if I'm parsing all this correctly:
FTM packs are not CP packs, they don't support tokens except in a very specific field (CPConditions), and they don't have their own config.json files
there is a 2.0 beta that should be ready soon and controllable via CP, but currently it doesn't work that way
Hmm, ok
ah.....
[SMAPI] Skipped mods
[SMAPI] --------------------------------------------------
[SMAPI] These mods could not be added to your game.
[SMAPI] - Greenhouse with Orangery and Cellar for SDV 1.0.0 because its DLL 'ContentPatcher.dll' doesn't exist.
...This is a coding issue, isn't it.
if that mod is a content pack for CP, you probably need to edit the manifest from using "EntryDll" to "ContentPackFor"
see the first couple examples here https://www.stardewvalleywiki.com/Modding:Modder_Guide/APIs/Manifest
I'm sorry though, it would have been better if I didn't throw at best half-understood json in the mix, especially because of the time spent on this. I knew there was something wrong with the first code snippet that I tried adding some of your stuff in, but I wasn't sure how to fix it, so I shouldn't have shared it. Good luck with your mod. 😅
No no it's really alright! Thank you 😄
did it ever work out?
bc i have an idea depending on how you have the mod set up 🤔
My mod is an FTM pack which don't have config files 😅 I would prob need to convert it to a CP pack or something like that, and I dont have the brainpower for that atm
🤔 could you send me a zip of it so i can look into it then? i want this to work too 🫡
would you be ok with a link to the nexus page? wild truffles
yea 🙂↕️
thank you for taking a gander at it! I am prob done for the day though, my brain is burnt
🙂↕️ I'll lyk how it goes
okay, so sadly, this did not work.
I used a fresh save that hadn't experienced Robin's letter, slept to the day I got the letter as the host, slept a day, and then invited a friend to join, and even with this mod installed, the trigger action did not fire after sleeping and produce their missing letter.
Would having the trigger be DayEnding and the action just AddMail mean that they need TWO sleeps?
as opposed to AddMail Current <mailId> now
the default arrival time for the AddMail action is tomorrow, so firing at DayEnding means it should be in the mailbox in the morning (one sleep)
chat how does one reference a {{variable}} from another mod if its a custom value for the gmcm config?
well, then unfortunately I'm back to wondering why it doesn't work. 🙁
with this framework, I'm told https://www.nexusmods.com/stardewvalley/mods/28284
OH noo!
I just checked, and my snowman that you build in winter is counted as true on the intro quest
This is (mildly) terrible!
He's not even in the social tab
until you meet him!
Maybe I should get another small update out quicker than I was planning to
hm, now might be a good time to figure out how to make a wearable ring
Wait, no, sorry! I was actually looking at farmer guy's json, and mixed the two up because both are open. Crisis never existed apparently 🤦♀️
Idk if farmer guy should be in the intro quest either though 
either could work I guess
Hello everyone~
I was wondering if someone could help me with a quick question?
I am trying to make a mod for personal usage where I want to change some values of other mods to balance them according to my own taste.
I have some luck with some mods, but with others I cannot get it to work even if I use the exact same code.
For example I am trying to change the edibility of some fishes added by "Fish of Teyvat" (Wonderful mod btw, highly recommended). For this I am using this code:
"Changes": [
{
"Action": "EditData",
"Target": "Data/Objects",
"Priority": "Late + 1000",
"Fields": {
"otohime.teyvatfish_Sweet_Flower_Medaka": {"Edibility": "20"},
}
}
]
}
When in-game it doesn't change it and they maintain the same energy value when eaten
did you spawn new objects to test
yes 🙂
check your logs and verify that your changes are applied?
patch summary your_mod_id_here can also help
so, changing the location for an event does not register commands using OnLocationChange?
(Edibility is also a number so you want 20 and not "20", though I'm not 100% sure if CP will convert that anyway)
You want to use TargetField for that
Because I tried, and my map patch only applied after I left the custom map outside of my event 😔
the usage of Fields here is fine
I checked the logs and i didnt see anything saying it didn't work. I will check the patch thing 🙂
(cp will)
CP's location updates should correctly update after location changes (including temp maps) in events, at least judging by this test setup
"Action": "Load",
"Target": "Characters/Emily",
"FromFile": "assets/test.png",
"When": {
"LocationName": "HaleyHouse"
},
"Update": "OnLocationChange"```
Oh 
conditional map changes might have weirder caching logic, but afaik CP does force them to reload for any editmap or load stuff
hmm, ok, thanks. I guess I’ll have to test more and see if I can get it to work right after the event then
chat which of these is what im needing?
content patched editing a value tryna replace it with a variable value
if you are replacing the entire thing you don't need a text operation
what do i put it as then? 🤔
currently have
"Target": "Mods/FarmTypeManager/YourPackName/content.json",
"TextOperations": [
{
"Operation": "Replace",
"Target": ["WildResourceSpawnLogics", "0", "MaximumSpawnsPerDay"],
"Value": "{{TruffleNumber}}"
}
you would want to use a mix of TargetField and Entry/Fields to do that
:3
also FTM doesn't use any assets that CP can edit, so that won't do anything, unless there's an FTM-to-CP framework somewhere I've not aware of
it's to edit the content.json no?
"target" doesn't interact with SDV's folders like that, just specific addresses where images or text files are loaded
FTM doesn't load anything into that system
dang 🤔
e.g. there's a file called Stardew Valley\Content\Characters\Abigail.xnb with abigail's sprites in it, which the game later loads into the targetable asset "Characters/Abigail"
CP can target the loaded address, but not the actual file
mmmmm 🤔
i see
do you know of any way to make the max spawns per day for that to be editable in game some way rather than needing to go to the content.json?
unfortunately no, the packs' content jsons aren't loaded into the game anywhere, short of somebody making another mod for that
I'm working on a 2.0 update for FTM that can be controlled with CP packs (among other features), but it's ready for testing yet
no way in ftm either? :( heck
so there's no real token support in FTM packs for now, and no GMCM access to the settings
(historically because FTM wasn't a framework at first and content.json was a config for users to poke at)
(several years later, it's pretty complicated)
mmmmm, i see
ig there's a very roundabout way to make a CP pack control whether spawn areas are active, if it's necessary enough
have a CP pack that edits Data/TriggerActions and adds/removes a mail flag (or multiple) like "{{ModId}}_MoreForage"
then have the FTM pack use multiple forage areas that are only active when one of the mail flags is set
that said, I'd probably just tell users to tweak the content.json min/max numbers, and/or wait for the eventual update
🤔 so wait, then, if there were to be, 10 of the same thing, all depending on if a certain mail flag is set, and then have those all set to a config on a content patcher pack, would that techincally work? 🤓
🤓 but what about letting ppl be dum if they want to :3
setting flags directly from CP does involve making trigger actions do it, iirc, but yeah, FTM spawn areas can be on/off based on flags and such
trigger actions
https://stardewvalleywiki.com/Modding:Trigger_actions
Data/TriggerActions with the AddMail/RemoveMail commands
gmcm not up to the job? 🤔
GMCM lets you edit a lot of mods' config.json files, including CP, so it can let people edit your CP pack
but the pack itself needs to edit a mail flag, because FTM can't see local tokens
okay so ftm reading mail flags to see how many maximum spawn, content patcher pack is setting or removing the flags, since it's supposed to be first thing in the morning they spawn can the trigger be daystarted? or like, loading into the world?
and therefore effectively just being on load rather than actually an action
I'm not sure if FTM packs do their work before or after the DayStarted triggers, so it might be necessary to use DayEnding
here's a rough sketch of what the CP pack would need to do for one flag, though I can't test it atm
"Changes": [
{
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"{{ModId}}_MoreForageOn": {
"Id": "{{ModId}}_MoreForageOn",
"Trigger": "DayEnding",
"Condition": "{{Your config token here}}",
"Action": "AddMail Current {{ModId}}_MoreForage received",
"MarkActionApplied": false
},
"{{ModId}}_MoreForageOff": {
"Id": "{{ModId}}_MoreForageOff",
"Trigger": "DayEnding",
"Condition": "!{{Your config token here}}", /* note the "!" part */
"Action": "RemoveMail Current {{ModId}}_MoreForage received",
"MarkActionApplied": false
}
}
}
]```
DayEnding would have the issue of missing the first day they play with your mod, though
i.e. it'd just start off
what if i set the time to 6:10 so its okay if its after day started? 🤔 or
Was wondering why you know so much about FTM and then I’m like oh you are the author of the mod.
thank you for the work.
built-in trigger options are just DayStarted, DayEnding, and LocationChanged, so you'd need the warp check & then it might not happen consistently if they sleep multiple times
tbf it's not my mod but it takes place in secret woods, honestly shouldnt work day one, just easier for testing lowkey
nono bc, hold on
yeah, probably safe either way in that case (and most forage really)
FTM still sets up the day's forage at the start of each day no matter what, it just assigns random times based on those
so your flag would need to be set already in the morning for it to turn on/off a spawn area in there
mmmmm I see
okay questions to this, if i want it 1-10, do i need 10 of both of these, can i make custom mail for it, and the config token is a configschima true false I assume?
afaik there's no workaround to get actual numbers passed into FTM like that, unfortunately
it'd just be a way to toggle spawn areas on or off based on a CP config
but yeah, the token should either be "true" or "false" so the Condition field can use it
yea what im thinking is having ... uh.. 10 spawn areas of all the same thing just with more or less max spawns, with one true at a time
yeah, that'd be the way to do it for that many options
I'm not really familiar with the CP-GMCM config format, but you'll want the token in "Condition": "{{your token}}" to be the text "true" or "false", so dynamic tokens might help convert to that if needed
and on FTM's end, "CPConditions" takes CP tokens, or there's the "GameStateQueries" list for those, etc
so the mail flag itself would go in one of those
question, if i have two areas on the same section, will they both trigger? or will stardew explode and the world end?
FTM's "Areas" field is a list, so you can have multiple full areas inside each one, like
"Forage_Spawn_Settings": {
"Areas": [
{
"SpringItemIndex": ["daffodil"],
"SummerItemIndex": null,
//etc; this is area 1
},
{
"SpringItemIndex": //etc, area 2 stuff here
},
{ //area 3 here, and so on```
so one of those would be your lowest setting & require mail flag 1 to be on, etc etc
wrong areas sorry
if I have two ftm plots covering the same X Y space of the map, and they're both on placing stuff, will they both go or will it be broken
ah, yeah, that kind of overlap is completely fine
if the tiles are blocked by other forage, they'll just use other empty ones in the area, or in the worst case be unable to place anything else, but they won't error
okay sick, so i dont need to worry about it being exactly one on at a time 🙂↕️ and then, can i send the paste of a content.json and you tell me how much of it is what i need to copy paste for each of the ten? i dont remember what website it is ppl send me to to paste stuff
https://smapi.io/json will let you upload any json file, though it doesn't have an FTM toggle for validation stuff
outside of basic json syntax issues
oh yes it is this
for new areas, it might also help to use the Config Editor in FTM's optional downloads on Nexus, it's a graphical UI for editing those
ooohhh
(light mode warning because I use that & never thought to add a toggle
)
AAAAAAAAGHHHHHHHHHHH
🤣
So I discovered a fun change to how my Useable Community Center mod is operating in the latest version of the game and SMAPI-- suddenly the rooms that actually had patched tiles rather than just patched tile data seem to be working even when the full community center is not completed!
chat totally read that and didnt actually process it
Meaning that the rooms actually are usable as they get opened now, so long as I have also patched the tile layers
I changed nothing in the code, it just started working that way today xD
hmmmmm I feel like since i gotta add the flag check and the only actual change will be the number of spawns text editing would be easiest
so your first forage area is from lines 8 to 66 in that link:
"Areas": [
{
"SpringItemIndex": [
//...
"UniqueAreaID": "WF Woods",
//...
"DaysUntilSpawnsExpire": null
}
]```
you can copy-paste that entire {} part and separate them with commas, so it looks like
```json
"Areas": [
{
"SpringItemIndex": [
//...
"UniqueAreaID": "WF Woods - Forage spawn area 1",
//...
"DaysUntilSpawnsExpire": null
},
{
"SpringItemIndex": [
//...
"UniqueAreaID": "WF Woods - Forage spawn area 2",
//...
"DaysUntilSpawnsExpire": null
},
//etc as needed
]```
also you may want to make a backup of FTM packs' json files before testing changes like this
FTM auto-updates to deal with some old formatting issues, which might delete your work if it's in the wrong field in certain ways
e.g. it loads but something's in a misnamed field, so it re-saves it without the misplaced stuff
🙂↕️ there is dw
(most often it just deletes // and /**/ comments, since those aren't loaded into the game)
yeah, mail flags are basically just text that the game stores in a list, so you can make up your own; generally they should be formatted like "{{ModId}}_ThingYourFlagIsFor" so they don't bump into other mods
same as with most IDs
they also don't actually make any mail show up in the box if you set them to "received", or if they just don't have a letter in Data/Mail (iirc)
so in the content patcher i just add lets say "ModId_truffles10" to recieved mail and check for it in ftm?
even if its not anywhere in the files bc it was just sent to recieved?
with the trigger action thing here, yeah, it'll store whatever mail flag you tell it there in the player's data
then whenever FTM tries to spawn things, it can have something like "CPConditions": {"HasFlag": "YourFullModIDHere_truffles10"}
and should only spawn anything if that mail flag is on
literally writing {{ModId}} won't work in FTM since that's another CP token, but copy-pasting your CP mod's ID in place of it will work
yesyes, and the mail is added in the content patcher via the actions with the edit data thing you sent earlier, i see you did the ! to make it opposite for the remove thing, and the only thing i need to do is make it 10 of em, change "MoreForage" to trufffle1 - truffle10, and figure out how to make GMCM stop hating me and actually show my configs to have the yay or nays
Wow there is actually a new mod manager for Mac that is Moddew Valley. Looks very aesthetic. https://www.nexusmods.com/stardewvalley/mods/44500?tab=posts
https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Update_checks#Custom_update_manifest
hi, i am dead tired so apologies in advance for any wording slipups. am i correct in assuming that this manifest function would not work in the event that my site cannot host a naked, easily-retrievable .json?
Sorry for wrong chat apologies
yeah, the config setup might be a bit weird, someone else might know a decent way of setting it up and getting true/false out of different text
(I'd dig into it more but I should go soon)
but yeah, test an on/off trigger setup like that, then make a set for each spawn area, and it should be able to toggle each area in the FTM pack
okok, hopefully i can get this to testable within a reasonable time
(and all that said, in a few months FTM should start supporting junk like this directly in CP too)
{
"Action": "EditData",
"Target": "Mods/TestAsset",
"Entries": {
"ExampleActionGroup": {
"Trigger": "DayStarted",
/* other shared "action group" settings here */
"CustomActions": {
"ExampleAction_SpawnObject": {
"ActionType": "SpawnObject",
"Condition": "PLAYER_HAS_MAIL Current {{ModId}}_SpawnTestForage Received",
"Settings": {
"Location": "Farm, Woods",
"TileCondition": "AREA_CIRCLE 30 30 20", /* spawn inside a 20x20 circle around tile 30,30 */
"ItemList": [
{
"ItemId": "(O)93" /* item data fields, as seen in Data/Locations and such */
},
{
"ItemId": "(BC)143"
}
],
"ItemListMode": "Random",
"MinTimes": {{MinimumForageToken}},
"MaxTimes": {{MaximumForageToken}}
} /* etc */```
this doesnt working and all truffles are being spawnedd all the time 🤔 got it
successfully got then to stop all firing, incorrectly doing the mail
hm, i have a bit of an unusual question... how feasible would it be to make something that logged events, and you could choose to rewatch them?
like all events?
Mobile Phone has its reminisce feature (or whatever it's called) for heart events which might be worth looking at
You might have to strip out certain things from an event script to prevent some unwanted behavior
(like setting mail flags for choices or something)
reminds me of spineworld art 🫶
is this 火川神社
Yoooo sick roof work
looks beautiful, what is it for?
for me 🙂↕️
to be clear idk why my laptop is displaying it like this, every time i try and type the kanji it just changes it to that lol.
looks normal to me
Hm... my NPCs work now, but they just stand in their original positions for some reason...
what does it look like on your end?
unfortunately gramps is doing a properly bad job of fixing the small hole in the small hall roof, but he's probably about 500yo so it's to be expected
maybe you have a simplified chinese system language installed that's taking precedence over japanese/traditional
in truth im not sure if that's the mandarin style for those characters but if i were to guess that'd be it 
if i check settings it only says japanese and english are installed
other than that, odd font? the characters are still legible and the unicode is presumably the same
Discord does render symbols differently depending on the os
Even if you type something in the text box and then send it in chat
Unless it's something on your end that changes the symbols
i dunno, the font does get weird
this does all remind me this is now 1 year since my japan trip and i still haven't sorted out the thousands of photos. heaving sigh
trying to type 神様 displays like this on my end
That's a weird thing
it's not even on discord, just everywhere it does that
anyway this is all very far from making mods and even wumbus world
true
(small bump sorry)
well, not everywhere but in my browser and stuff
(not sure where i should redirect, it's going to drive me insane until i fix it)
When releasing mods, do you guys test on every platform and multiplayer before releasing? (Provided that the mod is intended to support the platform ofc)
turns out just changing discord's language to japanese fixes it, so this is okay in my book
no
i only really test on singleplayer pc
I feel so guilty when sth doesn't work for multiplayer/mobile cuz I never test for it 😭
android modding is cursed in ways i don't really want to touch; the things that dont work with it i dont think i can even fix anyways
most of my mods should work fine with android, so long as android smapi itself works fine + any framework mods the mod relies on
in the case of multiplayer i just go "oh well" 😭
and hope nobody runs into issues
Yeah I get you
if i were to state that "this works for x y z" id ofc test first for x y z. Otherwise id just say it works for singleplayer pc and the rest is up to Yoba and good luck to ya'll 
Oh yes I mentioned wanting to do that but never really looked it up!
Thank you so much :3c
Can I get a quick confirmation? Would this theoretically work for "the player has at least two children"? "When": { "HasValue:{{ChildNames |valueAt=1}}": true, }
yea should work
Thankee!
so someone is asking for compatibility between upgradeable sve buildings and building footprint swapper but I'm not exactly sure how to... do that
What's your mod doing and do you think it's really needed
I mean, mine just changes some of SVE's code to be able to buy the upgrade from deluxe barn buildings to premium barn buildings
I'm asking what seems to be the incompatibility, since they just asked for it but didn't tell me what the issue is 🫠
If its just one person then I'd just leave it as this
Ah the classic nexus "fix mod" without even describing the issue
do I have to redo the maps to make it compatible with sdve? there is a community garden where I put my building
Uhh 😬
Yeah
Like 9/10 you're going to have to edit your map patch in some way to be compatible with sve
Whether that is just moving it over slightly, or having to remodel it entirely
I HAVE TO REDO THE FUCKING BUILDING AGAIN
If im making a custom npc, would i make a subfolder inside of the mod folder with the assets and content.json for the content patcher things? idk what im doing and this is quite confusing
Im not quite sure what you mean
But the content and manifest.json have to be in the same level
sorry im bad at explaning, this is too confusing lol.
ooh that helps though thank you
you can look at other mods' file structure for reference
Generally people do something like this, just as the most basic
My mod
Assets
Portraits.png
Sprites.png
Content.json
Manifest.json
Geh that didn't embed right
I would show you my folder structure but i think you might be even more confused by that
ill copy that and see if it works, thank you
How do people make menus?
Call me spoiled, but drawing everything manually seems pretty tedious
Hello - i have question, how can i get role the "Mod Autor"?
using stardewui?
maybe
Is that a library?
Basically yeah
alr thnx i'll check it out
for making a custom npc, would the target for the edit data be the blank.json? I feel like what i have now is wrong.
You need to be level 25 farmer and have 1 or more mod posted
@main falcon Use my fork pls https://www.nexusmods.com/stardewvalley/mods/43861
tilesheets, particularly the one for the existing menu, are your best friend.
it's pretty tedious! sometimes you can reuse a vanilla component but not always. if you're not using a framework for it you just have to persevere
Making UI in vanilla is indeed mostly SpriteBatch.Draw by hand but you do have IClickableMenu which handles a bunch of stuff
Ooooh I didn't know you have forked it, I haven't been on Nexus in a hot minute, good to know!
In fact I would actually not recommend StardewUI if you aren't making an IClickableMenu
In particular, I would reccomened making a "default" button art art, copy-pasting and altering the copies as needed.
It's kinda specialized for that and a little overkill if you just want a hud message
In my opinion, don't do this unless you have no choice, rearrange vanilla sprites in ur C# so that you can be compatible with interface recolor
Point. I've never done that and am approaching it as an artist and not a coder.
it is, but a lot of people do it anyways. StardewUI makes things easier, but it doesn't run on android and it has some things it is missing or does weirdly
the approach I took for happy home designer was to break it up into multiple pieces by separating it into nested menus and custom widgets
Oh it does work on phone now
I did also go add ability to control scrolling so that I can paginate stuff easier
What's the latest format mobile smapi can run
But yeah I think it's specialized towards the particular kind of menu which takes over the active menu and not as good for arbitrary UI/HUD items
I wanna try and improve the second thing eventually but it's not really my usecase so far
it does have a mode for pasting something on screen i recall, though maybe it's only good when use with another menu
This is almost correct. If your dialogue is in a separate .json file, then your content.json will use "include" instead of "editdata", and you won't use the target field. in your actual dialogue json, you'll use EditData with no FromFile, just go straight to entries
im following that guide, and still struggling trying to get my npc to even show up lol. from what i can tell i have everything, but it still isnt there
do]\
ugh sorry. if you share your last smapi log from a test run I might be able to help
how would i do that? From what im seeing it says its loading my mod, but when i run to the location that i set as its home, it just isnt there. so my best guess is its a problem with the files/code in my mod
yes, my schedule is just them standing in the middle of the bus stop all day
im not sure if its implemented correctly though
the whole blank.json part is confusing
Is there anything in the console that would point to an error?
!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 upload individual jsons so people can take a look and see what’s wrong
no i dont think so, theres no red or yellow text or anything
https://smapi.io/json/content-patcher/b18ce1c1662b449d92665a3a36d49fdf pretty sure content patcher is the correct selection
it says the errors are the targets, but thats the part that i was kinda stumped on anyways
Ok, one thing you can fix is that when you're including a separate json, you don't set a target
so just delete the targets when using the include action?
Yup. You'll use "editdata" and set a target within the separate json file
Hallo. I'm dead set on the mod idea I have atm and I wanna share it. I noticed whenever I started playing a new save I'm always gathering resources and they would be used up quite quickly, especially wood. I want to make use of the wood pile that's on the farmhouse. Being able to store resources without using them so quickly would be so helpful.
How would someone change a building texture and it's Metadata when said structure is clicked?
I'm trying to make a building similar to the golden clock that, when active, enables the golden witch event before perfection.
I think you could use c# to add a custom tile action that changes the skin
Would probably be the simplest way
Is there documentation and/or tutorials for adding custom tile actions in c? This is my first time messing with tile actions 😅
You call GameLocation.RegisterTileAction and give it your handler method
internal static void RegisterAction()
{
GameLocation.RegisterTileAction("myModId_myAction", MyAction);
}
private static bool MyAction(GameLocation where, string[] args, Farmer who, Point tile)
{
var building = where.GetBuildingAt(tile);
if (building is null || building.buildingType.Value != "myModId_myBuilding")
return false;
//... do things with your building
return true;
}
written without an IDE so some things might be a bit off but this should give you a general idea of how to do it
Tysm!
Hello, I'm having an issue with my custom buildings and at, they add a previous stage to the vanilla buildings, and when i upgrade them, while the building is changed to the vanilla one, at doesn't recognize it and it says it's the previous step. Exiting the game or even removing the mod doesn't fix it, it's considered by at the previous step no matter what, I don't know if i can do something to fix this issue or what is causing it
I was gonna say "uh I think I've seen a mod like that recently" but it's an AI mod so… I don't think it would be useful to check its code 
is there any way to run an if check on something? like, for an edit data condition where it needs true false, am i in any way able to do something to the effect of "condition": "if(variable = number)" or smthn and have that return true or false?
conditions on content patcher's EditData (called When) are handled by content patcher itself using its own tokens and are not compatible with game state queries, the in-game version of putting conditions on certain things
game data fields that support such conditions are typically called Condition so i'm making sure to clear that up in case of confusion
🙂↕️ so then can i set up the if or else statments outside of the condition and have those true false sent to it?
To further illustrate Yelanir's question, this is what is happening:
This building started as a Broken Coop, was upgraded to a Coop, but is still registering as a Broken Coop to Alternative Textures. Does anyone know why this might be happening?
i'm not sure what you mean, but go read here https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md#conditions
you can put a When condition set on any content patcher patch
I want a drop down config file that has 10 different values that end up being true or false depending on what you select on the drop down and then have those t/f sent to a Condition thing i have that needs the t/f
i have mostly everything but the dropdown implemented bc i dont know if i can really do that
yeah you can drive any of your patches from config values. the config value will be made into a token and you can check its value in your When blocks (or anywhere else tokens are supported)
epic, and it looks like i can list multiple whens? and if none of them are true does would it default to false? or need I check for that?
bc the way i want it will be having em turn on and off
Each condition is true if any of its values match, and the patch is applied if all of its conditions match.
wait then couldnt i just replace condition with when at that point? and how would i check integer equivelency of a token 🤔
i tried to explain this before, but Condition (game state query, supported by the base game) and When (content-patcher-specific, not understood or even seen by the game) are not interchangeable
often you can accomplish the same goal using either one. see the CP docs for more, but choosing between them can be a tradeoff depending on your needs
in general i prefer using Condition/GSQ when possible
try using Lookup Anything on it with data mining fields enabled. possible this is just an AT problem
🤔 im just using condition to make sure "variableN" is true, so then if i can get true false from if "selection" is equal to any of some numbers then that's perfectly fine too
could i just do this? or
"Variable1": "1",
"Varoable1": "11",
..
}```
that's what lookup anything shows
yeah seems like that's an AT problem (look at modData)
dunno why it works like that though; to make sure skins from base buildings dont disappear when upgraded?
some mods don't have a cp version
That does make me wonder what exactly is logic when upgrading cp building skins tho (im guessing they match by ID)
What does lookup anything say?
CP (more accurately vanilla game) building skins is a way to make multiple textures apply to same building
Nvm
If you use this, AT tools can still be used to swap between them
Or you swap at robins
Vanilla use it for cabins and pet bowl
It seems like AT is just not updating the mod data properly when buildings are upgraded
I do need to get back to having AT fit it's data into this system tho
It's still using the BrokenCoop key in moddata
Also sidenote but @stuck marlin your custom buildings should be prefixed with your mod id for compatibility
when a building has skins, it recognizes them
i upgraded a broken pet bowl into a pet bowl, and the skins work
If we added skins to the Broken Coop, do you think it might work?
the broken pet bowl doesn't have skins, only the pet bowl tho
So, is this an AT issue? there is nothing I can do?
You can file a bug report on nexus or github
I just wanted to make sure it was an issue on the AT side, I'll do that, thanks!
why doesnt this work 🤔
Looks like HasValue can only return true or false to me. 
it does only need to return true false, but it's not correctly doing that 🤔
chat maybe nvm i think i had it auto turning itself off
@devout otter hey! was thinking of making an update for the Spicy Krobus mod with some of the stuff I was working on before I completely forgot, uhh wanted to ask your opinion on making fertilizer a loved gift?
if I make a content patcher mod do I need to prepend [CP] to the start of the mod name/folder?
or is that purely convention
okie dokie
not necessarily! it is considered good practice iirc though
it does literally nothing functionality wise so it's not good practice or bad practice it's literally just entirely up to you
aaah okay
(it CAN affect load order but you should not be relying on that whatsoever)
(so please just pretend it doesn't)
I should hope I don't need to worry about load order
you may
you should never be in a situation where you are concerned with the load order of the folders themselves
The optimal play is emojis trust
The order SMAPI organizes them yes, but not the way your OS orders the folders
oh yeah to be clear i did not mean the folders xd
ok I'm just gonna forget I asked and not put CP then I don't have to think about it haha
out of curiosity what are y'all opinions on putting that prefix based on the content pack type?
One of the reasons why [ABC] became a thing is because people needed multiple framework for most mods back then
aaah makes sense
So for example a pufferchick mod needed bfav for the animal, ja for the items, pfm for mayo, etc
I think if you have multiple packs for the same mod, it's helpful to prefix them. otherwise I don't care for it
gotchaaa okay, so it's largely a relic of when most mods came with multiple packs
Hey! Extremely new to making mods. I am using Dead Boys detective, SVE, and Sydney (a custom NPC). I want to make a compatability patch to fix an issue when the locations load between where Sydney’s house is, the lighthouse of dead boys detective, and the beach part of where Sophia’s house is. When you walk from Sophia’s to the lighthouse, and then to the beach, it skips Sydney’s. But when you walk to Sydney’s from the beach, and then to Sophia’s, it skips the lighthouse. I don’t know if this makes any sense but there’s an issue loading the maps in the correct order. I have a basic understanding of how to use content patcher but could use some guidance on where to find a guide to fix how the locations load? I know There’s a ton of information online but I don’t know what specifically I should be looking for.
you can edit the warps
i dont know if dbd has a compat patch for Sydney but if not then its normal for DBD to go straight to beach
if u want to make it all line up you'll have to edit the warps to make things line up
what is the correct order ur looking for?
does modData get saved, I need to attach values to the player that get reset every day.
ModData is saved
alright thanks.
i would consider using moddata anyway and simply clearing it in daystarted if you need it to reset
If you don't need mp sync, you could also use a ConditionalWeakTable
does anyone know why when i press ctrl+b in VS it doesnt include my content.json file at all? any changes is applied for every single other file, but not this one for some reason
content.json is for a content mod, not a C# mod
you can't have a mod be both
if you want to bundle a content mod with your C# mod ModBuildConfig has a field for that
im just trying to add a custom character
idk what im doing
you dont need a VS/a whole C# mod for a content pack
just a text editor to open your json files
wouldnt i need C# for events and things though?
what is c# for then?
stuff u cant do with existing frameworks
yea if you need to modify game logic in ways that isn't exposed by the game's content pipeline or via frameworks then you need C#
new characters, heart events, mails, locations, and more are all exposed
what about like a custom check to do something with the character after a specific flag
depends on what "do something" is, but if it's making changes to their base data that's also possible with just content
well im not sure what would make my mod a C# mod, because i dont think i have anything like that yet
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC im just trying to follow this
I recommend perusing the wiki reference and content patcher documentation and try to go as far as possible with your content pack
once you hit a wall, ask questions here
ive done everything i could think of and the npc still isnt appearing, idk
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.
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 15 C# mods and 2 content packs.
second would by my content.json, idk what else i would share
iirc npcs need gift tastes defined to work
ah, ill add that then
it looks like your mod is defined as a C# mod instead of a content pack for CP
hiii! Soo I'm trying to add an event and I got an error but I don't exactly know what's wrong, can someone take a look? ^^,
https://smapi.io/json/content-patcher/0a080db1c310405a97dc4e29513b3959
you want to change that and repackage your mod
do i do that in my manifest?
wahts the error
delete the DLL/C# code and fix your manifest
found the issue
idk what smapi error you got but there's a problem in the screenshot i sent
also here
and here
it looks like ur having trouble with the string format?
oh, maybe?- I followed the wiki but perhaps I understood something wrong
it should be for example
speak Columbina \"dialogue\"
ur backslash is on the other side
urs is speak Columbina \"dialogue"\
oooh
thank you so much, she finally showed up now lol
okay yeah that makes sense, I'll fix it up, thank you! ^^
If someone can manage to make a mod about "Reina" from "Fields of Mistra" I pay 50 bucks for that someone
i cant tell if ur srs but it would certainly cost more than 50 
100 bucks?
nope
Furniture Framework is awesome. I just made a content pack for it:
do mice come out
Fine... By the way I love the Tilly mod.
thank you!
i encourage u to make reina urself though 
Thanks! I’ll take a look at it when I get home.
I cant. Because im a big dumb idiot and I have no Idea how programming and design works
(Also I love Tilly!)
thank u!
That's a surprise, I'm afraid 🙂
👀
the design part is harder but the programming part isn't that bad! bit of a learning curve but it's not c# or python or java
hiiiiiiiiii
question
if a fish gets cooked in game, I assume I can detect it with PLAYER_HAS_ITEM ?
For instance, if a Sardine (131)
got cooked
how can I figure it out?
PLAYER_HAS_ITEM checks that the player's inventory has an item
if a sardine got cooked it likely is not going to be in the inventory anymore
what are you looking for?
I want to know when the player cooks a Sea Turtle, because the next day, Willy will send a letter advising the player not to next time cause its an endangered species
Just for fun
to add some sort of depth
Just I'd assume a basic trigger action set to "tomorrow" for the letter to arrive
But how to detect cooked fish, I dont know
if there is a dish that can only be made from sea turtles you can check for that item
you're out of luck if you made sashimi though
No sadly, it's just the "Cooked Sea Turtle" or "Smoked" sea turtle from that smoker
yk that smoker they have in game?
idk if its smoked or cooked
oh, good ol’ legendary sashimi 😄
dont think what you want is possible without c#
ooof ok tyty
How about this instead. Is it possible to see if a player eats a fish?
then send mail next day?
like PLAYER_ATE_ITEM, imaginary property for instance
spacecore has item eat trigger
you can set an action to send mail when that trigger is triggered with your item
tyy
okay, so I'm slightly confused how the move command works in events
so if for example my npc starts at 65 70 0, and I want them to move 10 tiles to the right, I would do /move NPC 10 0 0/ or do I write the coordinates like /move NPC 55 70 0/?
well, that would explain why my npc would walk off in a different direction now :'D
thank you! Events sure are complicated-
I was so confused by that at first lol
It's really important to read specifics T_T also theres like... one(?) command that uses "player" instead of "farmer" and it drove me nuts until I scrutinized that block of text and realized
!ask does anyone know if it's possible to create custom coop/barn buildings that are not affected by base game recolors/mods (I have the warm stalls and cozy boxes for example) - This would probably be done as a C# mod (maybe?) I just want to know if it's possible to do it as a smaller thing, like the SVE premium coop and barn but just that. A third type.
Ask your question or describe your issue here, and someone will help if they can!
(you dont need to add !ask to every question
)
my bad
and sure you'd add a custom animal building that can accept coop/barn animals with its own interior
but wont it be considered a regular coop?
if it's its own building type with a separate ID, no
you can set it to accept Coop animals
nope, plenty of standalone animal house content packs out there
the SVE premium barns/coops are good examples actually; they are completely standalone and not upgrades to existing coops/barns
just CP
[[Modding:Buildings]]
here's an example mod of a building that accepts both barn and coop animals
https://www.nexusmods.com/stardewvalley/mods/43543
oh i've see that one
cool
is there a way to make a building only be build over a water tile? probably, right?
unfortunately nope
oh shit rly?
like don't the water tiles have a specific custom property?
water: T
maybe I'm overcomplicating (I thought abt making the mod ask for that, ya know? is it a water tile?)
ur right
there's absolutely no need to make it like that :p
okay thank you so much 🙏
The issue is more that the placement logic is hardcoded deep inside a god method in the construction menu
I looked into modifying placement logic before but gave up bc the transpiler required would be extremely complicated
I think smart building let you do that right
Put stuff on the waters
It's a user facing mod tho
though i wouldnt be surprised if smart building just yote all the logic
That's the thing
Plonking down a building wherever is trivial in c#, and even modifying the on-placement checks isn't terrible, the hard part is editing the construction menu logic
Since that is entirely separate and self-contained inside the menu
CarpenterMenu.Draw is just too damn big
I'm assigning this jira to selph of CC (and BB) aka CB fame
CC. BB, CB?
Hey I want it myself for buildable bridges but even I'm not enough of a genius to be confident writing a patch for that
We rating bonds now?
Hmm for a bridge
Can u use the additional placement tiles
Like make the building itself 2x3
Add another dangling 2x3 additional placement
The actual building itself wasn't tricky, what I couldn't do is make it so that it had to be placed on a shoreline
Letting the player walk over that is exercise for the reader
The way I did it was just patching map collision checks
But yeah patching tile check seems very succ
I saw that one but it's not clear to me if the thing in game is truly map
Succ?
Honestly it's fine. A really simple postfix on the player and then just check the bounds of buildings
The CarpenterMenu is really the only problem that seemed too complicated to solve
just bring back Storm modloader maybe itd help here
(I did have ideas for a water fish pond, but my idea is even more ambitious and would involve the pond morphing its shape to fix the water body/shoreline)
okay I literally heard the rain start in a heavy wave the second you said that, why did you call forth the storm
be glad thats all i did
D:
re building patches, the thing I do in Build On Any Tile is just patch GameLocation.IsBuildable, which lets you pave over anything
but notably it doesn't know why it's being called, so you'd need to keep track of whether it's being called for a particular building somewhere
(static field, transpile calls, w/e)
Is it gonna be like civ 6 Netherlands
New quote added by atravita as #7828 (https://discordapp.com/channels/137344473976799233/156109690059751424/1489369429031518279)
inspect the stack trace

it's just one hex right; mine idea would be an always 25 tile pond that can morph to fit the shape of a narrow river (via flood filling)
thank you for the support chu
also if anyone does do that, be careful about letting anything place over terrain features, the build menu (or some method, idr) just deletes them underneath
Hi! Is it possible to make a completely new Shop UI with just CP?
Kind of
you can make themes
You are allowed to customize the theme extensively see qi shop
The inventory menu is not themeable tho
Ah wait, sorry. I meant, is it possible to make a new shop with just CP?
yep
Is it possible for that shop to be accessed via furniture or does it have to be an NPC, or even an NPC placeholder?
need SpaceCore/MMAP/Calcifer for putting shops on furniture (like the furniture catalogues)
if it's just a static map tile though you don't need an NPC
I see. Thanks!
Last thing
Is it possible to make it so that the cost to buy an item is coins + a weapon/ring/boots/trinket?
With just CP
Yeah trade items
Check wiki docs on shops
Am I doing something wrong? I'm trying to have a message print to the console when the witch event occurs.
Thank you so much! I'll start studying about that now.
Just needed to find out quick if it was possible. And now I know.
Thank you guys!
Esca plz let me rotate building
seems fine if you're not getting any harmony errors
it won't trigger if you're loading a save the morning after, but I assume you've tried watching the event play
sounds like a 1.7 thing, I don't want to make extension assets 
flip building is real
(remembered the reason I didn't devote my time to making this a few months back is because I realized this alone would not make me use the riverland farm)
(I'm still worried about just making a remove building action, it seems messy)
(nothing would)
I FIXED IT!
Just for fun, is it possible to rotate building sprites upside down? 
i mean u just do it in content patcher 
That would be so wonky
i like eating flowers
I accidentally misspelled something in the manifest 😅
Same!
Now its time to learn how to do tile actions!
Rotate
ro ta te
I have a general json question. I'm running the command '''temporaryAnimatedSprite TileSheets\animations 1920 256 64 200 100 4 30 15 15 false false 1 0 1 1 0 0\emote {{ModID}}.Boris 16\beginSimultaneousCommand''' in an event, but it's happening during a quick question where I'm using \ for all of the commands. And it isn't recognizing TileSheets\Animations as a location, it thinks I'm trying to do a new command. Does anyone know how I'm supposed to format this correctly?

Sorry, I don't know how to comment code in discord 🤡
All of the single slashes there are actually double slashes in my code
`single line` = single line
```json
multi-line with highlighting based on the thing above
```
multi-line with highlighting based on the thing above
Oh thank you! so it would be 'temporaryAnimatedSprite TileSheets\animations 1920 256 64 200 100 4 30 15 15 false false 1 0 1 1 0 0\emote {{ModID}}.Boris 16\beginSimultaneousCommand'

