#making-mods-general
1 messages · Page 472 of 1
configs should not have the outer braces
says it unexpected symbol
When conditions are an AND operation, is "Set Override" also set to false as well?
yea
in the config (I'm assuming it's a config token) and not the when
they should be inside the quotes
Selph there should not be any braces
it works with the TileSheets/weapons file, the Tilesheets/tools, but not the Maps/springobjects, for soem reason
(I wasn't sure if |contains needed token style brackets, apologies)
(seems like it doesn't)
The problem is not with the asset you're targeting the problem is that it can't find the file you're telling it to use to patch
the error is complaining that none_tools.png doesn't exist as a file, meaning the token evaluates to none even though according to the When conditions it shouldn't apply if the config token is none
are you certain you've saved the file and reloaded/restarted and are editing the right file in your mod folder, not a copy somewhere else?
that's why I suspect the When condition is malformed
can you try removing the "Set Override" condition and testing again with just the iridium skin one?
and probably send your json as well
The whole thing
In the validator from the Governor command Selph summoned
hm oddness in the fishtank
the shadow is there
uhh
maybe its too big....
okay so if the tanks are bigger then 3 squares tall it gets weird
Yeah the bounding box maff become weird
itd be really cool if we could have like walk tanks
I made mmap fish tank bounds adjustment if u want it
wall*
Yep we can
wait how
so i have the sprite on a space that vanilla doesnt use on MY tools.png, and apply it to a completly different coordinate on the Maps/springobjects, coudl that be a problem?
Some tanks here are painting that were granted fish tank properties by mmap
oo i see i might do that
So they go on wall n take no floor space
though your tanks solve my issue
i might just use your mod and suggest it as a download
are you working with the alpha btw chu
Not beyond checking if my mods work rn
ooh well there is a error
MMAP has one broken feature in 1.6.16 yeah
ooo okay cool
It's for grass spreading so if you aren't using that it doesn't matter
I think it's probably cus of cp rewriters for furniture data
But yeah feel free to tell me things, i probably wont fix immediately but knowing is good
it shouldnt
as mentioned pls post your full code at smapi.io/json for context
*tell me about errors on 1.6.16 with me mods
So like what's the diff btwn localized text and i28n
well i18n is not part of the game
One of them is vanilla game system
localized text is
the game needs some way to store and show translations like mods do and that's localized text
I have some very arbitrary reasons to like those better so that's why i used it for tanks
So in terms of function, as in displaying text for different languages, they're the same? But the way they're done is different?
kinda sure
Only some places support localized text
It's a thing game has to resolve into the actual string
hell yes
there are differences between them in both functionality and use but ultimately they're both ways to display text where the user can see it
so, now it works, BUT my variable doesnt work, desüite there being 0 difference
if anybody could explain to me why "Set Override" work on ReplaceEdits 1-3 but not 5-8https://smapi.io/json/content-patcher/9ebc65de80c8496db56f7ba95859245a
otherwise this code works great in case someone wants to make its own iridium tools multi reskin mod
a complete set for each fruit, sounds like a fun idea
the code looks all correct to me but I'm on my phone at work so I can't check the coords and etc
patch summary is a helpful command to see why/whether your patches are being applied
The cp i18n token resolves with the value of the current language (and can fall back to english) but the game will only see that one value and if a patch export was done you wouldn't be able to tell the difference between i18n and it being hard coded.
LocalizedText is a vanilla system so it'll stay as-is if you did a patch export, and has benefits particularly in places where the game remembers the value and puts it in the save file.
Vanilla also heavily uses it in places because vanilla can't make runtime changes to the data (which mods can)
There's a performance tradeoff: i18n tokens get baked into the text once on asset load, whereas LocalizedText gets re-parsed and re-replaced every time that string is fetched. So if you have a string that's re-displayed on every update tick, it may be much more efficient to use an i18n token (unless the game caches the value, like item names).
Hello, I installed the A World of Dew mod and the recycling bins are automatically deleting waste. I've looked everywhere and I don't know how to disable it ?
For the quest of linus
!mh
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
Thanks
Does anyone know of a few smaller/compact mods (for easy readability at least) that add quests into stardew? like the ones displayed behind the menu in the "!" mark button on the top right
I'm attempting to learn more about quests, the wiki had good information, but I'm attempting to see how it's actually implemented
have you unpacked the game files and see how it does quests
that can help too
I said so since I dont have an answer on hand
I did not imagine that it would be containing the code, also that I am using Content Patcher + SMAPI, I'd prefer a mod over the game (since I heard some quests are very hard-coded)
tbh the important part is what you put in Entries anyway
most of them aren't hardcoded
there's this but be warned that it replaces a vanilla quest (if you want a new quest just pick a new ID with your mod ID in it followed by whatever)
https://www.nexusmods.com/stardewvalley/mods/33362
When you catch a specific fish (vanilla to make it easy for now), it starts a quest (no NPC attached)
oh yeah you were asking about special orders earlier
You need at least one mod for that then, to add the quest
most Quests are not hardcoded at all
usually whats more difficult is simply adding it
BETAS has a fish fished trigger?
but the actual Quest data is mostly done in the asset
BETAS does have a FishCaught trigger
you can do trigger on day start if you don't need it to be immediate
A library for this? Is this not vanilla?
Alternatively add it overnight with dayending
it doesnt matter can be next day sometimes
if its mail
but this isnt mail
you can do stuff on day start that isn't mail
Then yeah use day ending and the gsq that checks fish caught
Idrm the name but it's vanilla iirc, wiki should say
theres also a CT for catching a fish the first time you could use too
Wiki also got info on quest format
I dont really know how to make it sadly, I get pointed to the wiki, but I don't fully understand unless I see an example of it used in any mod (since I'm not a very experienced developer in this area)
I got a good idea of it, but not really the best
any mod making a quest is going to look exactly like the vanilla data
its the same format
Well the core intuition with content patcher is that you are using json files of specific schema to add new stuff to content
most of a content patcher mod is going to be "Action EditData, Target this asset that the game uses to read whatevs, and then <new data in the exact way as how the game does it>"
Hence why I am mainly saying "how to find out format of data" and not "how to add data" bc the second part is answered by cp docs
Remember that patch export is ur friend and good way to check that your data got added
mail.json:
Photo 1: Mail entry
Photo 2: TriggerActions entry
quests.json:
Photo 3: Quests entry
Oddly, nothing pops up (ID seems correct for the Sardine), as in no mail, does anyone possibly know what I may have done wrong? 😅
that's not how quest data is formatted
please reference this page as to how quest data is formatted currently: https://stardewvalleywiki.com/Modding:Quest_data
has that trigger id ran before on that save?
also you're missing the two terminating %% for your add quest command in the mail
Where is this on the wiki?
im going to look for a mod that does do this, as just saying its not formatted correctly will never get us anywhere
appreciate your help, however
and PLAYER_HAS_CAUGHT_FISH for 1.6 requires qualified ids afaik so would be (O)131
how it's formatted is explained on the page better than I ever could
but tl;dr it's a long string consisting of sections separated by slashes
"109": "ItemDelivery/Catch A Squid/Willy is challenging you to catch a squid. He says you can fish them from the ocean on winter nights./Bring Willy a squid./Willy (O)151/-1/800/-1/true/Hey, you did it! Not bad. Not bad at all. I'm impressed.#$b#Winter's a good time to break out the old fishing rod, isn't it?", for the vanilla squid quest for example
I see this, though my struggle isn't really this, it's how we translate this to SMAPI/Content Patcher, because those are two very different formats altogether. While it may have similar logic/identical logic, it's not just a one line and slap it in the .json, that is what I am struggling with mainly
you don't need to translate it; data/quests is a slash-delimited string and is formatted exactly like that
unfortunately not everything is a data model
no i totally understand im just very new here lol
like for instance
this is how youd be adding some of the letters without triggers
From looking, is this going to be "Target": "Data/ItemDelivery"? Or "Target": "Data/Quests", etc
a general rule of thumb is that your vanilla target is going to be whatever the JSON is called (Quests.json inside the Data folder, which is where you get Data/Quests from)
Like this, as an example?
Purely example of course
yeah that looks good as a start
next you edit each field in the long string; each of them is separated by the slash /
first field (index 0) is the type, second field (index 1) is the title, etc.
from the wiki yeah, i'll try to follow that
Now, how can you make it so when you read mail it triggers the quest?
ik how to make the mail popup, just the quest activation on read not yet
(from Modding:Mail_data)
Would this be considered correct?
As a mail entry?
"{{ModID}}_SardineQuest_Start": "Hello!^^I'd love to have 5 sardines! Can you go and catch some for me? Thanks!^^- Willy^^%item quest {{ModID}}_CatchMoreSardines %% [#]Request Letter"
looks right to me
"{{ModID}}_SardineQuestTrigger": {
"Id": "{{ModID}}_SardineQuestTrigger",
"Trigger": "DayStarted",
"Condition": "PLAYER_HAS_CAUGHT_FISH Current 131, !PLAYER_HAS_MAIL Current {{ModID}}_SardineQuest_Start",
"Actions": [
"AddMail Current {{ModID}}_SardineQuest_Start now"
]
}
And lastly, dis
just checking if there was like
some sort of thing i had to do extra or not
you probably don't need the !PLAYER_HAS_MAIL condition; triggers only fire once by default
and also remember this
nearly forgot, adding right now
also, when you go to test this, i recommend testing it on a new save because of aforementioned "triggers only fire once"
Hello, I’m modding for the first time and trying to mod in a fish, but I’ve run into a couple issues. Is it okay if I post my JSON file here so someone can proofread it? I’ve been following the tutorial on the modding wiki.
!json yes, you can share the link after uploading to this site
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.
This link I assume?
https://smapi.io/json/content-patcher/2200d5e0dbdb483fb6294127c33ef560
yep!
You can ignore all the crop stuff because that's working fine
what issues with the fish are you seeing? so i know where to look
Looks like they're using different IDs in data/locations than for the actual fish
Should they be the names of the actual textures instead? The aquarium sprite is named miketroutaquarium and the fish one is miketroutfish
This was the error I got when I opened SMAPI
Hello!
This does contain a few small issues with how fish are being added, so I'll recommend you check:
https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_New_Fish#Aquarium_Data
And if you want to see how fish are added, a live demonstration is here:
https://www.nexusmods.com/stardewvalley/mods/38752
I say this as there are multiple issues with this, however if you'd like me to explain it then I can, though I'd recommend re-attempting with this wiki, and especially this mod, since both show how to do it in a clean manner
Aquatic Sea Creatures expands Stardew Valley’s fishing experience with over 20 new fish found in the Ocean and Ginger Island. Each fish has its own time, season, and weather conditions, which makes
Last edited by AtlasVBot on 2025-09-13 18:56:18
Adding a new fish to the game has never been easier than in 1.6; nowadays, fish are a simple set of patches via Content Patcher. There are four required steps: you need to load sprite images, define the fish (as an item, and as a fish) and add it to locations. Optionally, you can add aquarium spri...
ah yeah this:
"{{ModID}}.fish.beach",
],```
needs to be the ID in Data/Fish
Ohhh I see
this type of error is a syntax error; the validator actually can point them out for you. you can see that on the site, it's pointing to line 217, because line 216 is missing an opening {
(usually errors like "unexpected character" are because something is missing in the line above)
Like this?
yep! each patch needs to open and close with a pair of {}
a patch is a block of code that has an action basically
Needs a comma on line 215
sorry if this is a dumb question but how do i get to data/fish and what ID is it? is it something I make or someting the game has
ohhh that got rid of the red line thank you
oh good catch aba lol
i'm referring to your patch that targets Data/Fish (line 140)
Data/Fish is a vanilla data model that you target to edit in order to add your fish
(this is what "EditData" and "Target" mean)
Ah ok
So here? Should it be {{ModID}}/fish instead of {{ModID}}.fish.beach?
it should be {{ModID}}.fish (i assume you just typoed that)
if you're going to add multiple fish btw, i recommend making the ID {{ModId}}_MikeTrout or something. but for now what you have is fine
I vouch this, helps to make this a whole lot cleaner and easy to manage
I'm going to replace each instance of .beach and see if that fixes it. Thank you so much!!
good luck!
Still unsure why it still doesnt trigger
even after catching, two save files now oddly
https://stardewvalleywiki.com/Modding:Console_commands you can use debug commands (specifically debug gq) to check if the conditions have been met
also i'm assuming you're catching the sardine and then sleeping?
debug gq "PLAYER_HAS_CAUGHT_FISH Current (O)131"
[game]
| Query | Result |
|---|---|
| PLAYER_HAS_CAUGHT_FISH Current (O)131 | true |
Overall result: true.
debug gq "PLAYER_HAS_MAIL Current {{ModID}}_SardineQuest_Start"
[game]
| Query | Result |
|---|---|
| PLAYER_HAS_MAIL Current {{ModID}}_SardineQuest_Start | false |
Overall result: false.
you will need to replace {{modid}} yourself for the debug gq command
also debug gq "PLAYER_HAS_RUN_TRIGGER_ACTION Current {{ModId}}_SardineQuestTrigger" (remember to swap out modid)
debug gq "PLAYER_HAS_MAIL Current ASF_SardineQuest_Start"
[game]
| Query | Result |
|---|---|
| PLAYER_HAS_MAIL Current ASF_SardineQuest_Start | false |
Overall result: false.
debug gq "PLAYER_HAS_RUN_TRIGGER_ACTION Current ASF_SardineQuestTrigger"
[game]
| Query | Result |
|---|---|
| PLAYER_HAS_RUN_TRIGGER_ACTION Current ASF_SardineQuestTrigger | false |
Overall result: false.
your mod id is just ASF?
(you can find your mod id in your manifest under UniqueId)
"UniqueId": "ASF",
That is correct, it is
okay cool, just checking
IT WORKS!
there's no sort of When condition or anything on your trigger action, is there?
in fact can you just share the whole patch
like the whole file/code?
like mod?
whatever file has the patch where you target Data/TriggerActions, yes
if it's 100000 lines i would appreciate the line number though lmao
Data/Mail: Line 26
Data/TriggerActions: 194
Thankfully my code is modular
!json can you please upload it here and share the link
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.
😅 my bad! oki
no worries, it's just easier for us to read on the site
all of these work except that one
and lastly
quests.json
hmm it all looks correct to me
ok it almost works
Aquarium Sprites are 24x24, and the row right under each 24x24 is not used, so you can skip that line
for this it would be likely an index of 0 if its the first fish
this is the aquarium fish data and this is the sprite
i have stupid questions: 1) are you sure you're editing the right file, and 2) have you patch reloaded, started a new save, caught the fish, slept, then checked your mail
are you making a Seaman
1: Yes, I am. I have also checked my content.json imports:
"FromFile": "code/fish.json, code/objects.json, code/behavior.json, code/locations.json, code/aquarium.json, code/pond.json, code/mail.json, code/quests.json"
Which include my newly added quests.json
2: Unusre as to what a patch reload is, but I made an entirely new save file, caught fish, slept, then checked the mail, I can try again I suppose
its a pun on mike ehrmantraut (the fish is a ehrman-trout)
a patch reload is the quicker alternative to closing the game and reopening. changes you make to your mod while the game is running aren't loaded unless you do either of those
!reload
- Content Patcher pack: enter
patch reload <your_mod_id>in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate theConfigSchemaorDynamicTokensections if you use them). - Translation files: enter
reload_i18nin the SMAPI console window. If it's for a Content Patcher pack, also runpatch reloadafterwards. - C#: see the Visual Studio hot reload or Rider hot reload feature.
I see. Just reminds me of this old game: https://static.wikia.nocookie.net/seaman/images/b/b9/Seaman.jpg/revision/latest?cb=20210128150640
HELP 💀
which was very strange
You talked to it through your microphone and it sorta understood you, but it was a long time ago so it didn't work great
Just redid all of this (not patch reloading just exited game, made new save, changed skills, set to Winter, caught Sardine, slept next day, no mail about it)
So unsure really, seems more like a code issue, the game reports its caught, but the trigger never occurs
So I'd assume it's how the trigger is setup
..hmm sure, im not that knowledgable on patching/checking, so I'll try it
patch export Data/TriggerActions and navigate to the folder it says
patch export Data/TriggerActions
[Content Patcher] Exported asset 'Data/TriggerActions' to 'C:\GOG Games\Stardew Valley\patch export\Data_TriggerActions.json'.
Interesting, no mention of Sardine in there at all
not even the word
i don't see your sardine quest trigger in there, so there's an issue with your patch being applied
i see the rest of them though
so i would really really double and triple check that you're editing the correct file inside of your mod folder, that you've closed the game completely and then reopened it, or patch reloaded
also check that you've saved the file
this is the same file, same area where every single other trigger I have listed is
I'll check its naming again
I got a really sneaky feeling on what it is
and if it is, im going to fight the air
let me try something
Hmm, odd, still nothing
I can confirm that the letter, no matter what it is, doesn't matter, it completely cannot trigger, I re-routed it to an older, already-tested letter, and it still wont fire
Maybe it's a bug, unsure, no errors while not being in the exported trigger actions is weird
well the trigger isn't firing because it doesn't exist in the game
it doesn't matter what letter you tell it to send
i'll take a closer look in the morning
the same patch adds all your triggers, so if the rest are in there and that one isn't, that means that the game is seeing a different version of that patch
wdym by dif version?
and yeah all the rest look identical
except this one wont work
well, what i would expect is that you have an outdated version of the file in your mod folder
i can't think of another reason why the rest would be added and that one wouldn't be
all of the mods are up to date
how so?
patch summary YourModId
ohh okay
but the patch is being applied, because the rest of the trigger actions are there and it's the same patch
i now know why this stupid seasonal edits im doing doesnt work
Ah right sorry missed that then yeah that won't help much
my fucking pngs get overwritten by the tbin files
Oh I'm sorry I didn't help more last night, I went to sleep in between your messages
(the bottom 3 triggers are missing, not just the sardine one, at a glance)
i dont mind 
i have to edit the damn content json of the actual mod
A tbin can't overwrite a png file
Do you maybe mean that the original mod has its tilesheets in the same folder as the map?
Because that would stop your edits from being applied
yes 
Ah then yeah unfortunately as you have discovered there's no way to edit it with another mod
unfortunately im very stubborn so i WILL make this work
Is this just for personal use?
yes
Then yeah you can edit the OG mod directly so it works the way you need it to
are there rules
ah..
(The problem is that a mod adds a new type of hay, and guess what happens if you have the Auto-Grabber in it..?)
or is that .. maybe a diferent mod. 🤔
Almost certainly a different mod tbh
apparently its pulling from a fish called 'bass' at least thats what the string at the end says ... from what i can see anyways
hard to read the text off the screen
hmmm, maybe i forgot to replace an instance of bass in the tutorial somewhere
is a map patch of a custom map OnTimeChanged still expensive, or is it only vanilla/heavily used maps that suffer?
editing a map is expensive in general. the more commonly used a map is, though, the worse it compounds
hmm, would editing the tilesheet on time change still be expensive?
actually idk if that would even work
@brittle pasture So the little dude is suppose to harvest crops and also collected clay what does this mean?
the clay is a drop i believe
does the harvest thing override the drops as well?
does it drop clay or dig them up
dig
then it's just an UI Info Suite 2 bug
it's hardcoded to not show the icon for truffles only
the icon means your animal can dig up clay when it's let outside
oooh let me check and see if the player with this issue has that mod
so if i change it to drop it will go away?
sure, but it's just a visual bug
right now its being reported to me so i wanna do something to make it go away so i dont get reports
in that case after fixing it and releasing the new version also tell them it will go away after they sleep again in case they send another report
but note that any animals that dig up will be affected if they don't dig up truffles
(I corrected my post a little)
~~well it's midnight here so I sure need to sleph as well
~~
who made unlockable bundles? are they in the server?
i know their nexus but idk if theyre here with a different name
Delixx and yep
How do I create a custom token mode that makes it false when I take off my shirt and true when I wear it? I try to do as many things as I can throughout the day, but I don't know...
I'm going to apply this token to body type mode. I have a bug with retail.
I feel like you might have to use C# for that?
I don't think there's any way to actually tell if a player is wearing a shirt or not with content patcher
🤔
I don't understand if it's because I've never used C#, even if I look at Wiki..
I've been stuck making mod files
CP tokens are reloaded at best once per time change
so even if you know C# it most likely won't do what you want
better to just have a config option for shirt/shirtless and tell your user to flip it (I assume they are unlikely to change shirt throughout the day)
Thank you. There's a reason to give up
I think it's better to buy it roughly lmao...
Furniture Framework also allows to mix and match Furniture features if you're interested, might be simpler to use to make wall tanks (and maybe fix the shadow issue? needs to be tested).
Guys, what's the right arguments for Game1.player.useTool()? I'm getting CS1501
!decompile recommend doing this to find the answer directly for any question you may have
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
to answer your question directly, it's a static function on Farmer that takes the farmer as an argument
Dude! Thanks, finally done it
I haven’t figured out how to fix these two bugs yet, I’ll ask my dad for help tomorrow. To think I’m starting this journey because I want to add a whole new area and two new NPCs 😅 it’s a little daunting of a task
The left one is because the aquarium sprite is a separate sprite that you need to set up yourself
Right one looks like you made a typo somewhere, although without your JSON it'll be hard to guess
I did make a custom aquarium sprite, but maybe the file name is typoed
Anyone know were i could find an image for the letters in stardew?
Bog interface dosent have a letter png and i wanna try to maybe make my own
!unpack
They’re… somewhere in there. LetterBG, I think the file’s called?
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
Yea letterpng is what i need
You wouldn't happen to have a version that works in alpha would you
Bog does have a letter background in the 2.0 version that's coming soon. There's a copy in her server if you're keen to get it early :)
But you're still welcome to make your own of course!
OH! I didnt know she had a discord server! Were can i find it?
She has a link in her Nexus profile and also the bottom of the Monster Mash mod page. Once you hop in, the UI download is in the announcements channel.
We will be releasing it to Nexus in the next few weeks too once I've had a chance to tidy it up.
hi everyone! I finally got around updating the assets names in my mod with the {{ModId}} token but now my {{Target}} and {{TargetWithoutPath}} tokens are broken. do I need to update every image name too or am I doing this wrong?
!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'll have to show what you're doing specifically for us to tell
i got advice here before that custom assets should have the modId prefix so i'm updating those from this https://smapi.io/json/none/abb00763f7b64ad59419e342150d8971 to this https://smapi.io/json/none/8fc531b8e18e4218b99470bc13c3984a
but now {{TargetWithoutPath}} has a different value and cp can't find the images. i was wondering if i need to change the image names too for all custom assets
I think the usual way to do this is to expose the asset you want to patch at Mods/{{ModID}}/my_asset_name so that the mod id doesn't appear in the target without path
I've never tried using a character sprite or portrait without Characters/ or Portraits/ in the asset name. It might work.
If it doesn't (it being what Leroy is suggesting) then yes you'd need to rename your files if you want to use the target without path token.
could you write a small example (or edit mine)? i don't quite understand what you're trying to do
where do you use Characters/{{ModID}}_Abigail_Spring etc?
I don't know much about character data
in the appearance list of the NPC, looks like this https://smapi.io/json/none/ae94a6b047ec405dabe251894cb3766f
and i think it should look like this https://smapi.io/json/none/28aa653dde864b97b7c12c13d9cabbdc so it is clear to other mod authors where the asset comes from
but thats just what i understood when i asked for best practices, i might be wrong
You need Portraits/ and Characters/ for some cases because some fields and actions (like the TextureName field and changePortrait in event entry) assume that your NPC asset starts with those.
Thanks, I thought so but I couldn't remember off the top of my head and couldn't check right now 
If you're writing them as Portraits/Poltergeister.SeasonalCuteCharacters_Abigail_Spring in the Data/Characters entry, you can't Load them as Portraits/{{ModId}}_Abigail_Spring because your mod ID isn't Poltergeister.SeasonalCuteCharacters. I'm also slightly confused why you're making a mod using SCC assets. Have I misunderstood what's happening?
the fish told me wise words:
"Strings......."
The most wisest words I have ever heard
@soft lance You leveled up to Farmer. You're now a prettier shade of blue. Thanks for sticking around!
sorry about the confusion in my example, its actually an update to the original mod thats why i used the same ModId
Heyyyyy are the items icons 16x16 or 24x24? And does that applies to all the items? (And abt my NPC, I was able to fix her YAAAAAAAY)
So you're releasing an updated version of SCC? Do you have permission from all the artists to distribute their assets?
It varies depending on what things are, you should use the unpacked game files to guide you. Objects are 16x16 but Big Craftables are 16x32, fish aquarium sprites are 24x24 etc
unfortunately no, when i spoke to the author they let me know it might not be feasible to contact every author as some have left the community
Items, like, fruits and vegetables are 16x16?
they gave me permission to update the original instead of making a different release
Yes those are objects.
Oooooh ty ty! :D
mainly bugfixes and the ability to enable portraits and sprites separately, i have a changelog with the details if you're interested
I think you don't have permission to release the update then
But it is perhaps feasible to release just the content json, in which case you really don't want to change the image file names
Wait, let me clarify something: are you making new assets or are you using already existing assets?
if by assets you mean images (portraits and sprites) then no, i'm not making new ones just editing the existing ones
In that case you shouldn't need to load new asset names. Just use what SCC already loads.
Basically you're mostly restructuring the Appearance data, yar?
Quick question, for TriggerActions, is it normal for them to still exist in a patch export Data/TriggerActions, even if they have been fully removed from the code entirely?
its a bit more than that... i also had to change the assets loaded, calendar edits, etc but yeah everything is centered around the changes in the Appearance data
Is this still the same session that you added the trigger action?
I left the game, removed it from the code, re-launched game
and did a patch reload for safety
before exporting the Data/TriggerActions to see non-existing code exist
Then no it shouldn't still exist. Did you definitely remember to save the file?
That's usually my problem
All files in VSC are saved yes
Like every few letters I save lol
Why do you need to change the assets loaded? /gen
new problem: smapi is trying to load a map from content/assets instead of <mod>/assets
https://smapi.io/log/0d37eb43a6964a7b837178b51f490dc8
Did you try a new save?
I left, I made sure to save, even though it shows I did, I am going to load in and try again
This save never had the trigger activated, but no
This is already a newer save
from yesterday
Your problem there is that the map needs a tilesheet called police_station_Fall.png but it can't find it.
its in the same folder tho 
original mod had an asset for each festival appearance, so 8 appearances that i needed to edit. i grouped them up into one festival appearance that is updated when the time comes
Can you show me a screenshot of the map folder?
Just loaded a new stardew save, the file is still here, meaning something is pretty wrong with how the mod is being loaded, I got no idea right now
Try editing one of the other trigger actions - just change its ID really briefly or something - and see if that updates.
mayb its bc when editing the map in tiled i replaced the tilesheet image for each season instead of placing tiles manually?
Okay, I'm sorry to question again but I'm don't mean to interrogate, I swear. I'm curious why do you need to group them?
Why do you have seasonal maps? That's very unusual
And that's not the folder the error is referring to. The error is referring to Cod Retired life/assets/Maps/GhostFarm.tmx which is not the folder or files you're showing me.
editing the tilesheet.png didnt work the first time, so i tried creating seasonal .tmx
As I expected, I changed both the Id name ,and just everything about it, and it still shows the old version, with no new version, as if it didnt save, however, I can close VSC, reopen, and see that my changes have been applied
oh shit u right
Stardew isnt taking in any new changes
There's not really any reason to do this imo
Seasonal maps is not the way to go. You make the tilesheet seasonal and the game will swap the tilesheets per season.
In that case my guess is that you're accidentally editing a different copy of the mod
I AM SO SO SO SO SO SO SO SO SO SO SO SO STUPID!!!!!!!!!!!!!!!
AAAAAAAAAAA
@boreal cliff would you like to send me the mod and your assets and tell me what you want to have it do and I will write that for you?
Lol happens to us all don't worry!
The performance cost here is check some relatively fast gsq or cause Data/Characters invalidation daily 
"D:\The Archive\Files\Coding\Aquatic Sea Fish\Versions\1.1[CP] Aquatic Sea Fish\code"
Yup! I forgot to migrate it into my game files 
tysm ur a live saver
Which one is "better" is mod list dependent but you should probably actually profile it
yes please 
Okay do you want to DM me?
its fine, so i came up with this idea as i was learning. if new festivals are added in the future i would need to update each json to load new assets, add them to the appearance entries and update the patches that disable portraits and sprites
instead i use a single appearance and edit the asset as needed with this localtoken
https://smapi.io/json/none/51d8681ddd7742c1b916e8408fd9b5b0
and the portraits code updates it accordingly
https://smapi.io/json/none/b49338d72ab046c8972258958a381eb0
if i want to add new festival assets to abigail i just need to add a value to the localtoken instead of doing everythin i mentioned above
sorry if i didn't explain it properly, there's a bit more code involved but wanted to keep it simple
could you elaborate a bit?
when CP parses the included json, the token "SupportedFestivals" will have the whole value
Hm actually what is this festivalid token, are you defining that elsewhere
it will not take each value one after the other
At a glance i thought you were using supportedfestivals in the edit itself which indeed wouldn't work
yeah chu is right
I think the point is still the same though
Is making content patcher do more work at day start actually worthwhile vs simply relying on game to check the Condition normally
its a different dynamic token https://smapi.io/json/none/06e25fc8a1e745a7845d0ad6f3a8439b
Again I don't have objective answer for this, but do you actually observe lag from existing approach?
you mean something like this:
{
"Action": "Include",
"FromFile": "assets/Code/Alex/Alex.json",
"LocalTokens": {
"SupportedFestivals": "festival_spring13, festival_spring24, festival_summer11, festival_summer28, festival_fall16, festival_fall27, festival_winter8, festival_winter25"
}
},
{
"Action": "Include",
"FromFile": "assets/Code/Caroline/Caroline.json",
"LocalTokens": {
"SupportedFestivals": "festival_spring24, festival_fall27"
},
},
SupportedFestivals will have "festival_spring13, festival_spring24, festival_summer11, festival_summer28, festival_fall16, festival_fall27, festival_winter8, festival_winter25" for everyone?
I'll just bring up that this would be very incompatible with other mods that change SCC portraits. But I suppose the point is moot if you're doing this for personal use.
no, as chu said, I thought you were using SupportedFestivals directly in the data as if CP was loading your included json once for each value
i haven't tested this part in particular but it seems to load on par with the current version with the profiler
Well do whatever that sparks joy I suppose 
One of the big advantages of using Appearance data for everything is to have easier compatibility with portrait mod authors.
fyi, you wrote weeding instead of wedding
(twice)
i have observed that most mods that do compatibility rn prefer to opt for just dragging and dropping their assets in the scc mod
Some of the things you want to do could probably be done as a separate content patcher mod that depending on SCA
still i'm aware this would break compatibility but thought it would be for the better
heh thanks! i'll fix the typo
better for what? that's what we're trying to figure out (or at least I am)
You use all the same loaded textures but manipulate the appearance entries
usually when people say "better" it's either better for performance or for compatibility
The ones that are difficult to deal with is any editimage sca is doing
Hey everyone! Very close to completing something, and thank you for pointing out that I was editing the wrong copy of my mod 😅
**
Thankfully, all my event logic and letters work!** Now, is it possible to add it to where once this quest finishes, a letter is sent the next day? Like as a thank you letter from Willy thanking you on giving him the sardines from yesterday?
i guess it would be code maintainability, since you only need to update the localtoken in the content.json and don't need to touch anything else in the specific npc json
Hm in the current version of game you can do $action in the item delivery accept dialogue
Next version adds tracking for completed quests
If you're going through with this, I ask you to at least give other Content-Patching mod authors the heads up beforehand. Because getting sudden error reports from user is no fun.
How would I get around doing this? Also just making sure that this is when you give him the sardines and the next day a letter is sent, not like when accepting the quest
Very nice to know
When you give willy the fish he has a quest completion dialogue yes?
mhm! its all on the same line
That one's parsed by normal dialogue logic which means the $action command is usable and you can call AddMail there
I would argue it isn't more maintainable since you're doing significantly more work and will also have to deal with compat issues, but that's up to you
it's okay to explore things like this and then decide the usual way is better though, I do it all the time
I released a mod exploring a new way of doing things and then it broke a bunch of things so I changed back to the usual way for the update and that broke a whole bunch of new things :D
speaking of, chu you've done map c#. my dynamically generated map is having the weirdest bug
Why are u
(It was very humiliating which is why I am bragging about it in public 😌 )
Is this the npc dimension
where the little swipe from swinging a tool doesn't disappear at the end of the swing
and just... stays
I know enough map C# to make a tmx for everything bigger than 3x3 
I'm not even sure why that would be affected. my map should be for all intents and purposes a normal map
Coding 101, when you release code, it breaks things, reverting also breaks things 😭 sadly
Oh and you don't have custom GameLocation class?
no, normal GameLocation
Wack
thank you for your expert opinion 
the swipey is temp anim sprite so it should complete and get pooled again
yes
but it remains
Not very temporary
and I think it may cause lag but that may just be my potato
iro, can you tell me about the npc dimension
"ASF_WillySardineQuest": "ItemDelivery/Catch More Sardines/Willy heard about your catch, he's asking for more sardines for his research./Bring Willy 5 sardines./Willy (O)131 5/-1/500/-1/true/Hey! You brought the sardines!#$b#Perfect, these will be great for my notes. Thanks!$h$action AddMail ASF_WillySardineThankYouLetter tomorrow"
hmmm haha
you put in a debug command and all the NPCs get yote into the NPC dimension
and their dialogue gets replaced with lorem ipsum showing every portrait they have
except for krobus who says his first line and THEN the lorem ipsum for some reason
ah yes, the classic hardcoded krobus introduction dialogue
yeah I figured that was it, I was too lazy to check lmao
it doesn't matter too much because he still says the lorem ipsum after
It has to go on a new line before the dialogue line iirc
the NPC dimension generates itself in the appropriate size for the number of NPCs
its only issue is the tool swing
Like this?
"ASF_WillySardineQuest": "ItemDelivery/Catch More Sardines/Willy heard about your catch — he's asking for more sardines for his research./Bring Willy 5 sardines./Willy (O)131 5/-1/500/-1/true/
$action AddMail ASF_SardineFollowup
Hey! You brought the sardines!#$b#Perfect, these will be great for my notes. Thanks!$h"
I briefly turned it into the Blair Witch dimension when I made everybody face back instead of front by accident
Maybe u should try monitoring the tas list to see what happens to it
For r&d
by the way, if you do more tool swings they do just build up
Have u tried bomb
THUMBS UP EMOJI (#6959359) (30m | <t:1763565851>)
Gonna be honest I'm half cat and half human, can you show me where? 😭
"ItemDelivery/Catch More Sardines/Willy heard about your catch, he's asking for more sardines for his research./Bring Willy 5 sardines./Willy (O)131 5/-1/500/-1/true/Hey! You brought the sardines!#$b#Perfect, these will be great for my notes. Thanks!$h$action AddMail ASF_WillySardineThankYouLetter now"
This content.json is nearly 9,000 lines even though I am using two layers of Includes for this mod 
I just looked over the upcoming changes for 1.7 and a lot of that stuff is very exciting, especially the monster changes
I don't know what chu was meaning by new line before the dialogue. I would try
"ItemDelivery/Catch More Sardines/Willy heard about your catch, he's asking for more sardines for his research./Bring Willy 5 sardines./Willy (O)131 5/-1/500/-1/true/Hey! You brought the sardines!#$b#Perfect, these will be great for my notes. Thanks!$h #$action AddMail ASF_WillySardineThankYouLetter now"
If those monster changes break this mod I will rampage forever
Have you looked over the changes, cause Monsters is where things will likely break. They reworked how monsters are coded
Yeah, I have. Chu's the one who's going to have to do a bunch of rework, poor thing. And for MHF...well...I am just hoping I will know enough C# to fix things myself by the time 1.7 rolls around. I was aware going into making these mods. But it won't stop me from rampaging!
[game] Failed to parse $action token for Willy: required index 1 (PlayerActionTarget playerTarget) has value 'ASF_WillySardineThankYouLetter', which can't be parsed as an enum of type 'StardewValley.Network.NetEvents.PlayerActionTarget' (should be one of Current, Host, All).
Ah, you're missing the player target after AddMail and before the mail ID
ahhh okay lemme fix that
I wonder if all the clothing changes will make FS obsolete
well I guess it is just hats and boots
Display Shops will make some cool mods possible
Not unless the changes will allow custom sizes and animation as well as many layers of clothing and accessories
yeah, I got ahead of myself while reading
Furniture looks like it will be way easier though
Not sure how it will affect Furniture Framework
I'm sure Leroy will be very on top of it
Yeah, definitly
This will be the first time that I will have to update mods because I have several that are going to break
Update due to a game version change, I mean
There's not much things to fix for me actually
So you have most of the work cus you gotta fix the vanilla monster edits

1.6.16 isn't changing the data model from what i know so this is problem for 1.7
Eh that's okay it's one tiny patch
I am having visions of tech support posts "my game is so laggy and I don't know why!". User has 1 million fish in a single pond.
You're not properly the active location I see
Alrighty, I opened the mail the next day, looks like it works, however the mail never pops up, both names "ASF_WillySardineThankYouLetter" match, and I copied a letter thats older that does work, and even then it didnt work, what do you think I messed up? lol
Patch export data/mail, make sure your letter made it in there
weird, I use the Game1 method to create warps 
Looks like it didn't oddly
Are you in game1.locations
Do you know what to check next?
Tbh iirc you can cheat by setting yourself as a temporary location but details will have to wait for me to get home
hold up ima try something
DID IT YYAYYYYY
TYSMM @vernal crest and @lucid iron
Yeah I forgot to add it into the Data/Mail entries, ik im so smart
i'm still working on it but of course, I'll give notice to other authors if there's compatibility issues
@uneven spindle You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
i agree the code is more complex than simply copy-pasting the same patches for each of the festivals. but once its in place you don't need to update that code plus it removes the code repetition. i'll have to rethink the compatibility side but this wouldn't as big of an issue if it was a new mod
you should be able to do the same patch multiple times without code repetition using includes no matter what you’re editing
afaik
@gentle rose: try that after lunch (30m ago)
Are you planning to update the mod with more festival costumes?
but I haven’t had lunch yet
remind me in 20 minutes again
Got it, irocendar (#6959401) (20m | <t:1763567084>)
i think i read something about this and localtokens enabling templates and so on, is that what you mean?
yup
heh no i'm not, can't draw anything but still i coded it for ease of use if they were added
@gentle rose: again (20m ago)
Then I honestly feel this is like... a far-reaching change for the sake of just slight convenience? Wouldn't you need to change your filenames too? And then expect other portrait replacer authors, or their users, to change their filenames?
i wouldn't put as "slight convenience", code repetition leads to bugs and a harder codebase to maintain. Not to mention the benefits of easier extendibility as you would just drop the new pngs and add a new festivalId to a list
compatibility is an issue and I am still working on it, changes can be made... but I feel like I'm getting judged for an update that I haven't done yet
we’re more trying to show you a more productive direction since we’re familiar with this community and also the results of various modding decisions and want to help you and the authors you impact get the best possible outcome. However, it seems that no matter what we say about the possible problems with this method and the other viable methods, you are set on doing things this way, so all I can do at this point is ask that you ask the original creator of SCC if they’re specifically okay with the update working the way you described.
what change?
rewriting scc so basically every festival asset is now loaded to a new place and changed in a different way to how scc currently does things in order to avoid either writing the same patch multiple times or using includes
and I appreciate the comments and take notes on the issues that would arise should I upload the mod as is.
At no time I decided this method is set in stone and would ship with the update (in fact I mentioned several times that its still WIP and i'm looking those templates you mentioned earlier), I was just arguing why I went with this approach. Yet I feel my reasoning were quickly discarded because of compatibility issues without regards for the pros.
As for the author, they are aware of this compatibility issue when I asked for permission, as my original intentions were to ship it as a separate mod
well tbh the rest of us have yet to really understand the pros, considering the code reuse thing can be prevented using includes without this whole change
code repetition in the context of Content Packs is a bit of a misnomer since we're actually only working with data, and repetition in data isn't as bad of an issue
I need a refresher, is OnAssetReady always called after OnAssetRequested? and both ignored if the asset being requested was previously cached?
and to be clear, there's really no judgement intended, this is just a place where we talk about how to do things. if this was judging I'm pretty sure chu and button are criminally bullying me every day 
i guess thats my programmer side to blame, for how it is drilled in your mind that repetition bad, code reuse good.
that mindset still stands, but Content Packs are more data than code
yeah that's uh.. a change I don't see the virtue in.
i think you have it right. for sure i can tell you that assetrequested fires when an asset needs to be loaded, so mods can do their edits before it gets to the game, and assetready fires when all mods have completed their edits
Yeah the requested ready stuff only happens when asset need a new copy (because of first load or invalidated)
but to be fair, I'm also not going to say much if you want to do it. A lot of people code in idiosyncretic ways. If it works and you're willing to maintain it, that's all that matters to a lot of people
You may need to watch for edge cases too if using ready
Like Game1.objectData being populated a tick late
I am a "do my data transform shit in a lazy loading prop" kinda person cus I don't want to think about this
So i almost never use asset ready
when I started with this project I would struggle to finish editing every character because I would find a better way to do things than before. for the next iteration i'll look into how it can be done with includes and compare the results
i also like lazy loading props but i'm fairly sure i have a few assetreadys out there still
what's that? In my case, I just want to validate the data in a dict asset before processing valid entries and caching that until the next update
not sure if that applies
oh yeah font smasher uses one since it needs to patch the fonts saved in Game1
Game has some cached versions of "Data/Objects" and such. As for what you wanna do it should be ok to do it in asset ready?
ahh okay
I personally would make a property backed by a nullable field and do the validation in the getter when the backing field is null
But that's at least partially cus i want to not write the long Load<type> call every time
ye I do something like that, but on the processed data
GetProcessedData()
if (!_data || _isDirty)
_data = ProcessTheData(Load...)
return _data
Heelloo!
I am making a NPC mod. In the mod there will be an return item quest. After the quest is finished i would like a mail being sent. Does anyone know how to to this?
I cant find any "quest" related stuff in Game_state_queries.
Thanks! :)))
I'd just do the validation in here then 
Did I make up that different vanilla farm maps have different starting seeds? if I didn't is there somewhere online like the wiki or something that lists the different starter seeds available? I couldn't find it on the farm wiki page or the farm types wiki page
Just parsnips? ace ty!
currently the game does not track completed quests (a future version will add this).
for now you can use $action to send a mail in the dialogue the NPC gives you when you deliver the item
okay thank you!! :-))
meadowlands gets haies instead, of course
Wow getting used to the file structure after so long is so confusing
Just like this then? 🙂
you want $action AddMail instead of $AddMail. looks good otherwise
oh haha okay :))
Guys, aside from BETAS, are there other mods that adds more actions,triggers, and game queries
MEEP? meep
Hi! I want to learn to edit some maps. I already read the modding page on the wiki for it and I got Tiled but I'm still confused. Would anyone be willing to help explain how to go about this or direct me to a better guide somewhere
what's the confusing aprt?
my advice is to open up vanilla maps in tiled and poke around. learn what sort of things go in what layer, what the different tools do, etc
lots of them
what do you want to know about them, or are you just looking for C# code examples
im failing at actually opening the maps in a way that looks like a map and im not sure what to do about it
have you unpacked the game?
I just want more actions, triggers and queries. I love conditional logics, that's why I studied basic c#, then found out that all the mods I made in c# can be done with CP and BETAS
... might have forgotten that part
!unpack here you go
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
thank you!
BETAS is probably the most comprehensive and general toolkit you could get, but there are a few mods on this page that adds a couple
(it technically does if you count the auto generated conversation topics, which can be used if you want to act on quest completion for quests that don't involve dialogue)
it goes in the same place SMAPI went right?
it should be in the same folder as stardewvalley.exe
I feel it is more important to think in terms of what feature you want
Sometimes there is conditional logic but it's not on a trigger action
When adding a new list entry in CP, this looks like the correct way according to the docs, but what does the key do (foo.bar in my example)? is it used at all or just in case the entry already exists?
{
"Changes": [
{
"Action": "EditData",
"Target": "Mangupix.DialogueDisplayFramework/Data",
"Fields": {
"foo.bar": {
"Id": "UniqueModId.UniquePatchId",
(some changes...)
}
}
}
]
}
where did you get foo.bar from
the key is how content patcher find what item in the list to edit, by looking for an item in the list with a matching Id field
oh for adding not editing
i dont remember which has precedent. probably the id field. best to make them the same just in case anyway though
gotcha
Hello, I am working on a mod that includes a custom location. The location was initially made with Content Patcher, but now I realize it requires more advanced functionality that can only be written in a C# location class. Is there a way to port these C# changes into the location created with Content Patcher?
if you really need a custom GameLocation subclass and cannot possibly do it with harmony or SMAPI events, you can change the CreateOnLoad map type for your location to your custom subclass. however, you cannot subclass it without requiring a SpaceCore dependency because you cannot save a custom subclass of anything to the save file. you will need spacecore's serializer functionality
i would highly recommend considering whether or not you can achieve what you need via other means than subclassing
What are the advanced features?
In many cases the custom feature is just "run some special setup C# when player go into map"
Those you can do with C# smapi on warped events
Or maybe it is "do something special when player interact with a tile"
Those are just tile action
I am hoping to reuse the Gem Bird Puzzle from Ginger Island where the player puts gems on pedestals and then gets an item, but modified to use different items. These pedestals are added to the IslandShrine location in its class, and the puzzle is also handled by that class. Would that be possible to create OnWarp?
Yeah sure just make them and add to the objects dict on the location to spawn them
You can track these in your own list, doesn't have to be on GameLocation
You will have to handle the puzzle logic yourself ofc
But you should be able to hook the netfield gor heldObject on the pedestal to detect player putting down item iirc
Ok thank you very much! That all sounds much simpler than what I was trying to do
(funnily enough the game just checks all the pedestals every tick instead of highly optimized netfield change detection)
ItemPedestal also has a match netbool that is set to true when the player puts the required item in
since you are able to tell it what the required item is in the ItemPedestal constructor
Just remember subclassing anything that is serialized to save file is very bad in sdv modding land
Hence the suggestions here are about observing the states of stuff and not implementing any method override
even if you wanted to override a method completely, you can use Harmony for that
Hey folks! Quick question about folder naming. I'm trying to make a backup of my installed Fashion Sense mods by creating a compressed folder, however, Windows won't allow you to zip a folder if there's foreign characters in the sub-folder names.
Does anybody know if making a .rar instead, will work the same way, or would it allow me to keep the file names as currently are, with Chinese characters?
are you using the built in windows archiver or winrar/7zip/etc
I heard it's only a problem with the former, and if you use any of the latter .zips are fine
Windows should only stop specific symbols being used (specifically * " / \ < > : | ?) and certain names (CON, PRN, AUX, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9) Chinese characters should be perfectly fine, I would hazard a guess one of the files has one of these restricted characters or strings, even using winrar 7zip etc wouldn't allow these to be made (and if it does it can lead to extreamly odd behaviour, shame on the program that lets you accidentally make these /lh)
Windows basic version. I can download 7-zip if needed though
I did a brief lookup and apparently windows' built in archiver indeed barfs if it sees unicode characters even if it's a valid path (since if it's invalid it wouldn't be a file in the first place)
I know that if I try to name any files with those symbols, it won't allow me to. But the only files that it's giving me an error of when trying to zip all of these is specifically the ones with Chinese characters. Those are the only ones getting flagged.
meanwhile on Linux anything goes but /
So 7zip should be fine, then?
That's so odd, shame on windows in that case XD
Even that's just a guideline as I experienced recently
Okay awesome, thank you so much!!
That saves me a lot of back and forth on googling translations 
I use arch, btw
i love memes
It's a scary experience to rm -rf ./~
Yeah, if anyone gives you advice and to use "rm" to "fix" your drivers, or practically anything, then just remember that rm stands for remove, and from that command, its going to likely wipe some very interesting parts of your system
It's a partial equivalent to removing system32 for more fps (this is an internet joke, never do this!!!)
Whaaat no I routinely clean up my computer with rm -fr / --no-preserve-root, it cleans up rootkits!
nahh that doesn't get rid of rootkits well! you need a big magnet to help with that! it's the only surefire way, it only works of HDD though, SSDs will be forever rotkitted!
hi there, i'm currently trying to do this code
foreach (var stones in Game1.player.currentLocation.objects.Values)
{
if (stones.IsBreakableStone())
{
{
this.Monitor.Log($"Found a stone at {stones.TileLocation}. Mine level {stones.Location}",
LogLevel.Info);
}
}
}
}```
however i changed machine and can no longer reference stones.Location or stones.isBreakable stones, is there a dependency i may be missing?
It sounds like your modbuildconfig setup is incorrect
These methods/fields are just in the vanilla game dll so if your project isn't referencing that successfully then it won't build
(also Game1.player.currentLocation can be null sometimes)
i don't think i've ever paid attention to this before--is it normal for night tiles not to update if you're inside the location, but if you leave and come back, they're correctly updated?
Hello! I wanted to make a personal retexture for all of the More New Fish sprites, though I was wondering how I would go about getting permission to post it publicly as well as turn it into a content patcher mod (as opposed to just replacing the image file with my version). I've never modded anything before, so I want to make sure not to do anything wrong permission-wise ^^
the first place to look is the more new fish nexus page. it should have a section for permission, whether that's not allowed, ask first, or open permission
Okay, thanks! I believe it's ask first, so I'll send the author a message
thank you!
like at what points for example
when a farmhand is warping to a new location, their currentLocation may be null
ahh, that's okay i was aware of that, this is just a prototype rn so I'll handle that case later :)
in case you're still stuck on this, it's to do with the location update method not being called for locations not marked active or temp
bombs, damage numbers, and other temp sprites won't update or animate correctly
dw, fixed it by renaming it from "DebugToolsTemp" to "TempDebugTools"
and now I'm fighting non temporary sprites
location.name.startswith(temp) my beloved
the answer was yes btw
ah stderr, the surefire way to print to the log
not sure anyone answered you, but yes, that's normal.
thanks! i guess i've just never been inside at 7pm before lmao
(the important part was the stack trace)
all this hard work but for a good reason 😌
actually i wonder if we should change the startswith(temp) behaviour for a future SDV update, since this might give some weird behaviour for someone with a modid starting with an authorname such as TemplarKnight or TemporalSkunk
Question, because my friend and I are about to go mental. Is there any easy way to solve the "Always Front" issue with a sprite?
For example: I want a sprite sitting at the table in the library. Problem is, there's this...very...unpleasant strip of about 4 or 5 pixels at the top of that table which cuts off anything on a 32x32 sprite set.
not too far removed from the mailreceived weirdness with mail.id.contains(cooking) for LoveOfCooking mail
I think that may break existing mods which is usually a no 
Why is the top of the table on AlwaysFront?
It's the vanilla table where Jaz, Vincent, and Penny sit during school hours. Literally coded into the game.
or ModIds starting with h in regards to next quest
Well, if you're editing the map anyway you can just change that. But otherwise you can add your sprite to AlwaysFront1 so it's on top of it
Wut
Anyone know what the flag is for having the hatmouse show up? The wiki says it is after the first achievment, but it doesn't say what the flag is.
I will mention it to him, thanks.
It's not on AlwaysFront I just checked
are you sure it's on alwaysfront? i see the library table like this:
mail ids containing the word cooking is never saved in mailreceived because the game assumes its the temp mail stuff for cooking recipes
Yup so you can just put yours on AlwaysFront or make a new layer Front1
Pathos plz data model data/mail
but this is part of the war against legacy assets and move more stuff to data model to have all of these explicit knobs instead of magic conventions
easy solution: just dont make cooking mods
stardew was not meant to handle cooking mods. blueberry has played us all for fools
How would this be handled in terms of a character going from standing to sitting down at the table?
surprisingly loc has never actually had an issue with this since it sets other flags/states as soon as the mail is removed from the mailbox, so ape's clever trick amounts to naught
The character should be north of the sprite the entire time, so they should stay behind it all the time regardless of whether it's Front1 or AlwaysFront
I am not the correct person to be asking this, lol.
Basically, this isn't a map. It's just that the character sprite that has 3 frames, each frame is 32x32. That orange strip cuts off a section of that 32x32.
I think I was more or less trying to figure out if there's anything we could do that didn't involve additional map edits.
(I am not trying to be a problem, I promise)
Sorry, I have misinterpreted your original question as meaning you wanted to put something ON the table.
Yes, I do.
You want an NPC on the table
Part of the animation in their schedule. and that you’re trying to get the character to interact with the table in the animation (having her lean over and write on papers on top of it)
Sorry, I have interpreted your original question correctly
Yes, mentioning that it was an NPC sprite and not an object you were placing on the map does change things
Didnt you start setting other flags because people had mail issues?
(just saw the reactions. the white square is grandpa)
no, loc has never had issues. version 1.0.0 btw
Your options are: change the map, change the NPC sprite, move the NPC, or ignore the clipping
Not on the table, they are sitting behind the table, but yes she is leaning over the table and writing with things scattered over the table.
where the hell is fizz
So basically do nothing
And by do nothing, I mean do something else entirely. Because it's not going to work.
not in data/characters, that's for sure 😌
Which was what we figured but I wanted to ask anyway just in case
(I think this would've been easier with screenshots lol)
where the hell is welwick
removed because he has neither sprite nor portrait and was making my code upset
same with ???
there are not 😌 don't be mean to gil and grandpa
(gil doesn't have a normal sprite, grandpa's sprite is for some reason a 1x1 png)
exists in Data/Characters though was my point
And Grandpa uses the sprite in TemporarySprites 😛
Gotcha, wasn't sure why it was an issue that they were in Data/Characters.
(for bullying iro purposes
)
LOL, I was just peeking in while I fight with this code to see if I can wrangle Hime and Wildflour's windows into cooperating with a night tile for the kitchen clutter / Grandma's Pantry pack xD
(for a personal edit at this point)
The furniture pack got released without night views of the windows, so they are lovely brown squares in the evening or rain by default.
this isn't the animation that Summer was talking about, but it's the same predicament. in case anyone was wondering what madness we were trying to work around lolol
death by counter beheading
the tile covering her face is on the Front layer
so it just overlaps everything that dares enter its space
something we unfortunately did not consider for a few different ideas we had 
But now we know. And G.I. Joe has a phrase just for that.
Anyone know what the flag is for having the hatmouse show up? The wiki says it is after the first achievment, but it doesn't say what the flag is.
Totally should have, it has been 9 months since I messed with anything, and it all hasn't come back to me yet
the shop doesnt actually check the flag itself though, only that you have any achievements, to be able to open it
(and show it on the map)
you just also happen to get mail to let you know
right, but I am making a bundle that I don't want to show up until the shop is available
so the mail flag should work
then yeah go with hatter
just wanted to make it clear that the flag itself does not control any functionality
Thanks for the info, big help
it's nearly 2am, I'm in the middle of a 24h ekg, and I have to make dinner
...I think it's time to stop modding for today 
mindset
Technically making dinner is modding the ingredients
The difference between 0200 and 2600 is just a matter of perspective
We don't recommend using generative AI (such as ChatGPT, Copilot, Claude, Grok, etc.) to write mods for Stardew Valley. There are a few reasons.
- AI-generated content is not allowed to be posted in the server. If you need help with your code, you won't be able to post it.
- Large Language Models aren't trained on enough Stardew-specific information to give reliable, accurate output. They also have no concept of what they don't know, and so cannot tell if they're incorrect. In short, they don't know if they're hallucinating a solution that simply feels like it makes sense or not.
This holds true for both SMAPI/C# mods, and mods for frameworks such as Content Patcher.
There's no shame in being new to Stardew modding, and you won't be talked down to for not knowing what you're doing. We strongly recommend consulting with other mod authors in the appropriate channels as a first step if you're completely stuck at step one.
no I deleted my own message lmao, it was an attempt at this command
🫂
chatgpt code aside, this isn't describing "you need to add menu in C#" it's describing "spacecore will open a menu if you do this and that"
you don't really need to know C# for most kinds of mods, content patcher is very powerful
we can use content patcher to add menus?
you can use content patcher to add that specific menu as described in the docs
what is the exact functionality you want
in this case spacecore has a custom asset that you can put entries in, to add stuff to the advanced npc interactions menu
so you want a list of all events in game and pick which one to view?
that sounds like a normal kind of event then
yeah, you don’t need a new menu for that, you can do that with question forks
I uh, need a tutorial to add new clothing with content patcher but I haven’t found one 🤔
so if u look at the rest of the docs there is a section about NPC Questions
I think I can just FEEL the number of users giving you tech support questions that amount to "how does this work?" that you'd get from arbitrarily doing it a different way from everything else
that is what you want to add if u wish to start an event
@lofty sparrow: you set this reminder 7 years ago (7y ago)
Oh wow, witnessing the unboxing of a time capsule
thanks
YEAH SURE NP, KISSASS
This is very impressive
lol
I actually have a reminder set for 1000 days
i forgot how to set a reminder, otherwise i'd set another one
you just say remind me in 5 seconds
Don't know how long that is though
just without the first filler text
hahahaha what? are you serious? I'm a bot not an alarm clock but okaaaaaay (#6960117) (10y | <t:2078965650>)
it's 1000 days
LMAO, I meant how many years that would be 🤣
..oh my god
1000 days is a little less than 3 years
i'm honestly surprised the reminder stuck around for 7y
or maybe more like 2 and a half
i'd have expected it to disappear at some point
it's a pretty stable bot tbf
Then it should pop up in 2026?
i feel like i witnessed some once-in-a-lifetime thing 😂
hold up i remember there being a command like this-
!2020
That was five years ago, mate.
🫠
i should go back and find when i made that reminder
oooh and reply to it pls i must know
usually it replies to you I think, this time it didnt
remind me in 5 seconds to melt
(not really the channel to be messing around with bot commands tho...)
aw :(
can’t spell out the number
it only likes numerals
oops sorry button
sup button, whatchu working on
why are you apologizing to me
oh shit sorry! got distracted lol
you're the only purple name. that means you must be important
i have things that need drawing to screen but i dont wanna do math im so lazy
You were the first to adult in the room
make the computer do the maths
the computer would be doing the math but i need to tell it what math to do
this. i was 0 years old when i made my first reminder 
and i dont wanna
anyway i should disappear again but this was fun
bye!
See you in 2035
see ya!
i hear people get unbanned in warframe in 2035 so it'll be an interesting year. cya
part of my blocker is that i dont wanna do the math til i have the class structure planned out but i dont wanna plan the class structure out when i dont know exactly what i wanna draw
hi pers
bye pers
why do you need maths to draw
surely that's art, and art doesn't have numbers
except painting by numbers, which is an outlier and should not be counted
calculating positions and sourcerects
its not difficult math im just exceptionally lazy tonight
ive had rider open for an hour and ive written one line bc id much rather be distracted by second monitor video, as practiced since time immemorial
this is why we keep our second monitors vertical 
except vertical videos, which are an affront to my senses and should not be counted
i have never used a vertical monitor but if i had a spare i might try it
seems nice for code
uhhh wanna double check something, do you put GSQs under the 'conditions' field for trigger actions, or CP token things?
can you reword the question
what do you mean "CP token things"
are you asking if you can also use tokens in Condition fields?
(didn't you just.. second monitor video..)
im not sure what your point is. do you think im using a vertical monitor for second monitor video
uh, like these guys?
i used to have 4 monitors
Wow! Posh
generally when a model has a Conditions field, it's expecting a GSQ
ive since had to downsize for various reasons
damn that's fancy
one monitor was a crappy old TV on my wall to be fair. cant use that bc the GPU i upgraded to did not have the ports for it
ooh okay good, I'm doing it right then LOL
im still not sure what you're asking. what about these guys? you can use these in Conditions too
however, since true and false are valid GSQ inputs, and since CP tokens can resolve to true and false, you can use the appropriate tokens directly as GSQ values
or indeed as inputs into other GSQ queries
gotchaaa okay!
e.g. Condition: PLAYER_HAS_MET Current {{ModId}}_NpcName or Condition: {{MyTrueFalseConfigValue}}
you could have vertical second monitor and no video ☀️
sounds awful
(though my second monitor mount is currently a blank vesa plate since my beloved 1440p vertical is now the main monitor for my second desk)
What if I want nine monitors bluebs
are you a spider
Have you tried using the wiki pages for each type of clothing and a copy of the vanilla asset to try to make some new clothing?
That does sound like a good idea, but i’m more confused on what code I have to put down to put it in the game. I assume i can look for mods that add new clothing and reference that?
Are ccbundles through Unlockable Bundles shared status in multiplayer?
An EditData patch that Targets whichever clothing asset you want to add (e.g., Data/Shirts if it's a shirt) and then inside the "Entries" field you put all the fields that go in Data/Shirts, which the wiki page explains. Add a Load patch too that loads the texture for the shirt to a Target that you can use in the Texture field for the Data/Shirts entry and you're done.
Yes, looking at mods that add new clothing via CP will help.
Thank you!
Yes, I'm only a bill, and I'm sittin here on Capital Hill
is that where atra is
Is there a mod that adds a trigger like "OnButtonPressed" or gsq like "HAS_CLICK" or similar. I made a basic mod that lets you open shops, but as of now, I'm using the trigger one second update ticked(EMP) and the gsq BETAS ITEM_HELD to open the shop.
if you want to open a shop when you use a specific item, spacecore has that
I mean instead of holding items to open the shop, a trigger like OnButtonPressed(if there is indeed one), and a gsq like HAS_CLICK would be a more logical way when opening menus/shops right?
what is your desired behavior? do you want the player to be able to open a shop anywhere just by clicking?
SpaceCore has a use item trigger, which you can set to open a shop, and you can specify that the item is not used up
Id map it to a keyboard key, then use a Virtual Keyboard mod to open that, just like how CJB mods work
so you can set an item to open a shop on use
that will almost definitely require C#
in fact the button press tutorial would get you halfway there
checking for a particular keypress and opening a menu in response is nearly the example SMAPI/C# tutorial mod on the wiki
Aight, thanks guys for the responses
Btw guys, this is the hyphotetical JSON snippet I have in my mind
https://smapi.io/json/content-patcher/f17b838c29a24a95b7cd0959c79055f8
yeah I'm not sure if anyone will add a "button pressed" trigger any time soon (performance issues being the main thing) but I'll defer to Button for whether she wants that
if you really need a content pack accessible way, I will continue to recommend SpaceCore's item used trigger
https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#Create_a_basic_mod (this is the C# tutorial, which looks scary if you don't know C# but is mostly what you need like we mentioned)
what if instead of trigger, special button pressed asset that runs actions only on specific keypress 
i think the ??? is just that you only got so many buttons so the things happening bc button is usually some special thing that ought to be accessible anywhere
i dont! far too easy for someone to make one trigger that ruins performance that way, and much potential for a whole modlist to have several such tractions. someone else is free to add it, but i do not want to, i think its much better served in a C# component
can you not use SawEvent as an event precondition to check if the player saw a certain fork/switchEvent? a full patch summary includes that i saw the parent event but none of the switchEvents. i can set a mail flag i suppose but i thought SawEvent would be convenient
I don't think it works. I tried to do something with that for the variant of the CC where Pierre punches Morris and it didn't seem to work
yeah, I don't think forks mark the sub-event ID as seen, they just load the value from that key
Which sucks, because that'd be handy, yeah
mannnn annoying that they’re not unique enough to be used as preconditions but still unique enough that i need to prefix with my mod ID lmao
thanks though, good to note
//RING { "Id": "{{ModId}}.Gem.Ring", "Triggers": [ { "Trigger": "ItemPlacedInMachine", "RequiredTags": [ "polished_gem" ], "RequiredCount": 1, } ], "OutputItem": [ { . . . "CustomData": { "selph.ExtraMachineConfig.RequirementId.1": "(O){{ModId}}.Ring.Base", "selph.ExtraMachineConfig.RequirementCount.1": "1", "selph.ExtraMachineConfig.RequirementInvalidMsg": "{{i18n: RAR.Base.missing }}", "selph.ExtraMachineConfig.CopyColor": "true", }, } ], }, //NECKLACE { "Id": "{{ModId}}.Gem.Necklace", "Triggers": [ { "Trigger": "ItemPlacedInMachine", "RequiredTags": [ "polished_gem" ], "RequiredCount": 1, } ], "OutputItem": [ { . . . "CustomData": { "selph.ExtraMachineConfig.RequirementId.1": "(O){{ModId}}.Necklace.Base", "selph.ExtraMachineConfig.RequirementCount.1": "1", "selph.ExtraMachineConfig.RequirementInvalidMsg": "{{i18n: RAR.Base.missing }}", "selph.ExtraMachineConfig.CopyColor": "true", }, } ], },
I'm trying to create machine output rule where the same input can lead to a different output depending on the "fuel" used. Im using @brittle pasture's Extra Machine Configs to achieve this but It's not working.
Somehow it only checks for the first one in the entry (Ring).
Even tho I have the correct item that will let me make a Necklace, it still says I'm missing the required item cause it only checks for Ring entry.
this is probably a really stupid question, but im just planning to make a seasonal portrait mod, and i figured itd just be easier to download some other mod and replace the actual drawings and stuff
and i regularly do that stuff in programming anyway but im just wondering if maybe it's not okay to do in the modding community? 😭
it's typically okay but it'll be hard to maintain and if you ever want to expand you'll have to rewrite/add stuff to it
ohhh thats a good point 🙂↕️ i'm probably better off doing it myself
Well there's not that many ways to write content patcher mods that does a portrait edit
You can definitely reference mods as long as you also look at cp docs at the same time to understand what's going on
In terms of whether it's "ok", take a look at the permissions tab on a mod
Code mods are more likely to have actual license so without that nexus perms next best thing
youre right i didnt even notice permissions are a thing lol
ill go do that 🫡
im new to all this sorry 😭 i just didnt want to accidentally offend other mod authors
Someone told me some of my cooked dishes dont count as fresh for qi's cuisine quest
First of all what even is that
the walnut room quest?
it’s the one where you have to cook a ton of food for qi gems
seems like that's the "Qi's Cuisine" special order, which works by setting an "orderData" field on any cooking recipe objects made while it's active
it should affect anything that's technically a normal cooking recipe
if (this.isCookingRecipe && item is Object obj && Game1.player.team.SpecialOrderRuleActive("QI_COOKING"))
{
obj.orderData.Value = "QI_COOKING";
obj.MarkContextTagsDirty(); //updates to add the context tag "quality_qi"
//this also filters the item's display name through Strings/StringsFromCSFiles:Fresh_Prefix
}```
stuff that bypasses the normal crafting system or isn't Object type (O/BC/F/etc) would dodge that, I guess, but I'm not sure if that's relevant
I'm sure its an interaction with spacecore recipe overrides and/or loc integration so i told them to just turn off the feature
makes sense, yeah
Spacecore "OnItemUsed" works perfectly
https://smapi.io/json/content-patcher/e6e96eb6399745d18e424bb61b9c55d3
@blissful panther I got this strange log from someone whose game is not picking up on the new MEEP closeup trigger action, despite meep being up to date and cornucopia cooking having the closeup reference in its manifest (ofc). Any idea what could be going on? https://smapi.io/log/9350128b50f24b8e97046e1d3ec1cf70
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 73 C# mods and 183 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Is there a good resource guide that tells you why things happen codewise in the game?
is would better if we made a console app exe auto submit the log file?
example, my SMAPI Launcher on android that it have a feature
"Share Log" just a click button on app launcher and then it will auto send & copy create text into clipboard
Are you after anything specific? Usually we just read the decompiled code to work out what's going on.
What causes the jojamart to become an abandoned jojamart after the community center, and the community center into a warehouse in the joja route
I'd say let's not fall into an XYZ problem, and instead would you tell us what you want to do?
Is it possible to create a machine output rule where the same input can lead to a different output depending on the "fuel" used?
