#making-mods-general
1 messages · Page 442 of 1
Correct
And to add on, if you want to use seasonal portraits, you'll need something like portraiture plus
(it's an addon mod that allows more functionality for portraiture)
portraiture plus? :0 i've never heard of that
Thank you so much by the way you've been a big help 😭
i think the other mods that can do HD portraits don't need any addons though
and can do the seasonal/location stuff out the box
Sorry to interject, but you really don't need to use Portraiture if you prefer to make it conventient for users (e.g making it a config option).
could you please explain this to me if you don't mind?
with the amount of people who struggle getting portraiture to work yeah maybe using a different framework would be better
Basically what you want is to have an config option for users, right? So enable it if they want the HD version, disable it if not?
mm! exactly that
irocendar is making a mod that would make this much more convenient and robust (you may want to look into it whenever that releases). But currently, your option for what you want is between using Spacecore or ScaleUp 2, both with their own pros and cons.
ScaleUp 2 is a bit more taxing, but should be okay if you don't have that many portraits. And less people have it, so people would more likely to need to specifically install it to use your mod.
Spacecore is more popular, so people would more likely to already have it. The largest downside is it's a pain to set up if you portrait has many expressions.
you had several mistakes with this; i went through and fixed the formatting and added comments explaining what i did and what you should do. would you like me to send an edited version? also, if you haven't seen it, i highly recommend following tiakall's NPC tutorial
I think between those, I'd prefer spacecore?
Yes please 😭
Taking all the help and advice I can get
(Yar, we should tidy up the content.json first before we get into HD portrait shenanigans.)
sending it in here because the validator won't preserve in-line comments:
i make no claims as to whether this works or not; i just cleaned it up and fixed some things according to best practice
!npc and in case you haven't seen these
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
OH RIGHT the config schema at the top
I see I see
Thank you, I hadn't
the first link in particular is a godsend
also, what software do you use? i recommend notepad++ or VSC
it will do things like automatically indent and highlight bracket pairs
I think I'm just using notepad 
When you've managed to get your NPC appear in-game, portraits and all, feel free to ping if you'd still need help with HD portraits!
Thank you so much again, I'll see if I can get there : D
yeah notepad will definitely give you a headache haha
!software
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.
Sorry was making rice, I'm back now and I'll take a look
oh one last note i forgot to put in a comment: there were a few places i noticed you put your NPC internal name as just Testingplayer instead of {{ModId}}_Testingplayer. make sure it's consistent!
OHH should I do that for most places I mention the character name then? :0
yes, an NPC's internal name is how the game knows to associate code with a specific entity
this doesn't apply to things like the NPC's name being displayed in another character's dialogue though 
or a filename (like Testingplayer_sprite.png)
eek sorry to interrupt but
is there a way to get an npc to only like items that match specific context tags? not just like. general context tag stuff but lets say i had juice_drink and flavor_green, i want them to only like items with both tags, not just anything that falls under one or the other
hmm i wonder if you could do some sort of union. off to CP docs i go
afteri learned how to edit maps i made the debris way less traumatizing for me every farm i like
maybe you could set a dynamic token? like {{GreenJuice}} when item has context tag 1 AND context tag two
what am i doing with the dynamic token though
i always get so stress cleaning debris... making them lined up and dealing with remants of the game helps me a lot
wouldn't it resolve as every item that has both those tags? that doesn't feel right hmmm hang on
no, you cannot do that unless you assign each item that has both those tags a different third tag

okay wait i think i've got it. create a new context tag and assign it to every item that has both context tags, using a dynamic token i think
ah thank you button
a dynamic token wont do this for you
darn
if it were only one or two npcs i had to do this for it would be one thing, but with the entire vanilla town's worth of npcs i might crack 
in total i have 3 "base" context tags, and each of those 3 has 4+ options... which then i have to take into account every combination... i glossed over permutations in my math class 
Already noticing a difference after downloading it, gives me much less of a headache
thank you
Sounds like a C# job
😔
Mixed Tastes Framework time?
i have never C#'d in my life
it wouldnt be difficult C#, at least
I never looked at the part of the code that handle tasted, but I can take a look (and maybe make a prototype) tonight if you're interested
if you just want it for this one mod, all you'd need to do is iterate overy every object and check for both tags, then add a third
i feel like being able to mix context tags in gift tastes to filter out specific items would be really useful
A late edit in c# land would do it very easily
Yeah, of course, but that's very inefficient for many combinations
Most items innately have very few context tags and can short circuit if it's missing the first you cared about
I'm thinking of adding a "mixed taste" asset and check it every time a gift is given.
Could be very efficient with the right data struct
Doing the work every gift taste vs doing it once*
you'd need to do the same check during the gifting that you'd do during the iteration anyway
Also less composable and has increased chance of incompatibility with other mods harmony patching gift taste stuff
the only real benefit you'd get is supporting auto-generated context tags, but i dont think those are really first in mind when thinking about gift tag tastes regardless
I'm sure there is a better way than adding a bunch of context tags on the concerned items.
Context tags is the vanilla mechanism for describing attributes that systems like gift taste works
And stuff like lookup anything or any of the many other UI mods will just work automatically
YeahI know
As you aren't fighting against vanilla systems but working with them
I doubt everything checking context tags uses a general method that could be patched for everything?
there are many things that check item context tags, but not all of them have to do with gift tastes
Don't need to patch any methods, just populate the data model
there is one method that a lot of things use for it, but mods can ofc use different ways too
It just can't easily be done in cp as cp isn't allowed to know the before state.
But a c# mod editing data/objects can
Ok, now I'm thinking about if it's only usefull to do a logical AND or if other operations could be useful
For gift tastes, it's already doing an OR over all the tasted
well an OR is what we already can do so you can cross that one off
Yeah
i dont remember, do context tag gift tastes support !?
I'm always thinking about the worst case, like what if someone wants to do a AND (b OR c) ?
thats where prepopulating the model with context tags from an iteration would work
you would just do B or C first and then whatever context tag thats a result of would be put next to A
Yeah, I gave up on another system, because of compat and everything
im thinking in order to reduce creating the laggiest mod ever im going to split one of my mods up into a series
I'm thinking about a funny way to do combine conditions in json. Cuz a string parser would be too simple.
miainly because even though im making a mod for just the main characters of a special interest of mine thats still like 30ish characters and idk if thats be crazy laggy or not
Seems like it's mostly a lot of data
oh thats how many there are O_O
nvm i might be fine
.>
lemme count the characters i need to make actually
about 50ish main characters (i odo not plan on releasing this for awhile tbf)
its like a little passion project
(I think it's a good idea to split your mod anyway if you have a clear and convenient way to divide it, so you wouldn't get overwhelmed.)
true hmm
i know you were working on animals? (not sure if that's part of the mod or not) but you could split that from like, the npcs and stuff
🙂↕️
i have a few animals im working on
i like hopping around my projects so i dont get burnt out
Personally, I thrive on people's reactions to my mod, so my mod release strategy is usually to release the core of it (feature-complete things that I'm proud to show off) and then update it with more content over time.
if you’re doing a homestuck themed mod, i would keep it all as one mod to avoid accusations of DP farming
homestuck...
ok ill keep it all as one 🙂↕️
i actually just made a blog dedicated to it 😄
so i can keep track of things and share updates without spamming a bunch of hs in here
It can be one mod but with the characters still split up so its like ok this is the 1.0 with 4 characters. 2.0 will have 10. Etc etc etc
Like by updating with new content i mean
ic ic
things im considering besides just characters/locations
-
lusii farm animals
-
some clothes? like everyones sign, maybe some horns and dirk and daves shades
id do festivals but i heard u need c# for that or something and i dont wanna
maybe if i ever get help from someone who WANTS to do that but for now it will not be happeningwqflkdj or if i ever wanna try to learn but that sounds painful XD
wdym? adding characters to festivals doesn’t require C#, but creating events where you can walk around and interact (which is what festivals are under the hood) probably does
you can look at how RSV adds their custom festivals
which i believe are passive and don’t need C#
Hm passive?
like the night market
iirc you can make active festivals entirely in data, but I think lewis needs to be host
🤔 interesting
Omfg, I started reading it last week, it already cost me an all nighter...
Cursed mod idea: dynamic skin tanning based on time spent outdoors
Could call it farmer's tan
@slow basin if you need C# on this project at some point, I should be able to help.
i appreciate it! if i run into anything ill be sure to ask for your guidance !
Hello Guys !
Any idea where to find the Artifact Spot assets in the unpacked files ?
loosesprites cursors i thinn
Many Thanks 
Of course it's cursors
It usually is
Its always either cursors or springobjects
Hey everyone, sorry to interrupt, just have a question here. Looking at the Seasonal Outfits tutorial on https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Seasonal_Outfits_via_Appearances
This website here, but i'm just wondering, do i have to do this load command for every outfit? or is there a way to load multiple at one? Lets say there's NPCname_Spring_Indoor and NPCname_Spring_Outdoor. Will these need their own commands each like this
Last edited by AtlasVBot on 2025-09-13 18:56:09
If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference ...
or can you add multiple to that one?
You can load them in one patch using the TargetWithoutPath token, which takes the asset name given for the Target after any forward slashes. Name your files the same thing that you want their asset name to be. Here's an example.
My file names would be Abagaianye.HiriaNPC_Hiria.png, Abagaianye.HiriaNPC_Hiria_Beach.png, and Abagaianye.HiriaNPC_Hiria_Summer.png. Make sure you include your mod id as a prefix for the asset names and for your NPC's internal name so you can ensure they are unique.
{
"LogName": "Load textures",
"Action": "Load",
"Target": "Portraits/{{ModId}}_Hiria, Portraits/{{ModId}}_Hiria_Beach, Portraits/{{ModId}}_Hiria_Summer",
"FromFile": "assets/images/{{TargetWithoutPath}}.png"
},
i think i get it, thank you so much for showing me an example, so mine might be something similar like
{
"LogName": "Load Seasonal Textures",
"Action": "Load",
"Target": "Portraits/{{ModId}}_Vivellion, Portraits/{{ModId}}_Vivellion_Winter_Outdoor, Portraits/{{ModId}}_Vivellion_Winter_Indoor",
"FromFile": "assets/images/{{TargetWithoutPath}}.png"
},
As long as your portrait files were in assets/images, yup. If they're in a different folder you can just adjust the FromFile field.
OH right, so if i split portraits and sprites as subfolders in the images file it would be this for portraits
"FromFile": "Assets/images/portraits/{{targertWithoutPath}}.png"
And Sprites, assuming- do you use the same thing for sprites as well?
"FromFile": "Assets/images/sprites/{{targertWithoutPath}}.png"
Yup, you can do it for any images or map files that you load
Thank you so much for helping me
this server has been nothing but great to me for advice, i really appreciate it
You're welcome!
oh! one more question just to make sure as well
these bits of code, do they go in the content.json?
That's up to you. You can put every piece of json in your mod into your content.json if you want to, but if you find that gets too big and overwhelming you can split it up into different files using Include patches*. As far as Content Patcher is concerned they are the same thing - it will read the content of the additional files as though they were in the content.json.
* you can also, later, do some amount of templating with Includes and can do stuff like put all your compatibility patches for other mods inside an Include with a HasMod check for the relevant mod so the code inside won't try to run if the mod isn't installed, but that is all extra stuff that your mod does not need to function
I'll keep that in mind for sure :0 thank you again
Heyy I'm very new to stardew modding and I got a question, this is my first time writing a CP and I'm a bit confused by the wiki
I'm looking to create a new area in the game that is detatched from the main map in order to keep it compatable with mods that change the map shape by using Central Station as the way to get there, but what I'm stuck over atm is how to create my map. Looking at the wiki it says about unpacking the map's XNB to edit the map but I'm not editting it? Do I just use Tiled and load the tilesheet I want to use and then go crazy from there or what's the steps for this?
The most efficient way actually is just to grab a vanilla map file and make a copy of it, then turn it into your own map! You can even delete everything and make it your own
It just ensures that all the metadata and stuff is already set up to work for you
Make sure to unpack the entire game's files with the xnb unpacker so you have access to all the tilesheets!
The maps page of the wiki does have step by step instructions for how to get started (which is unusual for the official wiki) but yes, you do need to unpack the game first so you have access to the vanilla maps to copy
adding in a condition so if it detects 6480 is playing it changes the spawnrate to be 1000x
are those mushrooms?
yea
yeah but i never know what tags to add besides like. color or the "edible_mushroom" tag
for evil cooking purposes i am urging mod authors to use <name>_item tags like chanterelle_item, carrot_item, lettuce_item
but if theyre made up items its a little harder so its fine
do you have the color chart?
yes!! after i saw this for the first time i went back through and edited the color tags for all my items
Oh thank god that means people are actually seeing it without me having to be the one to post it
who knows maybe it was you who posted it then
probably
i will go through and add some <name>_item tags to the real-enough items in my mods. for you
and your evil cooking purposes
yesss
root_vegetable_item and leafy_green_item are two more general ones that might also be applicable
Sorry weird question, what if I want to use a tilesheet thats not the stardew regular one? What if im intending to use like Lumisteria's tilesheets etc
Like just same process and just upload a different tilesheet?
why must the english language be ambiguous in whether "pepper" means the spice or the type of fruit...
Use irocendar's tilesheet extension to select the tilesheet from inside the mod folder (so it stays in its correct folder but you don't get tilesheet climbing errors). But in terms of beginning, you'd still want to start with a vanilla map, yes. Just delete any tilesheets from it that you don't want to use.
Even better, peppercorns are also fruit!

i use the tag chili_item
but what about the soupish cooked dish also called chili
what then
(being pedantic for fun)
i mean it would be really funny if you could substitute that in a recipe
Here's the instructions for the tilesheet extension: #making-mods-general message
And the file to download: #1399862293331972246 message
dont tell anyone but jelly beans are a substitute for any bean
Hey, sorry to frequent here so often guys, i've finished with the content file but I'm getting these errors popping up in Smapi
https://smapi.io/json/none/cd099537455842ff88094bf1eecd17a5
Here is the link to the JSON, I'm honestly unsure where to begin and how to fix what's gone wrong, can i have some help if someone wouldn't mind at all? Sorry to interupt in here
You didn't finish your file properly. Looks like you're missing the closing square bracket for the Changes Block before the final closing curly bracket
You should make sure of N++'s json plugins to help you fix your indentation. That can make it easier to spot when you have bracket or nesting problems.
By the way, my responses earlier (#making-mods-general message, #making-mods-general message) were to you. I forgot to reply.
json plugins? :0
Yeah, go to the plugins menu and search for json. There's json viewer and json...tools, maybe?
I don't have any Json plugins showing, sorry 
You can't see them in my list because I already have them both installed but you should have them there.
So this first image is the start to the changes, and this is how it's ended but i'm still getting the error that says Invalid property identifier character: ]. Path 'Changes[8].Entries', line 192, position 1, you mentioned a curly bracket, is there another one i'm missing that should go after? :0
OH i pressed the wrong thing, that makes sense now
Oh, the indentation misled me as to which brackets were missing. I thought it was just the square bracket but yes, you are missing another curly bracket after the closing square bracket
i swear I'm just going in circles, thank you for being patient with me, now it looks like this, but i'm still getting that 😭
Line 192 is the ]
Looks like you were missing two curly brackets, one before and one after the square bracket
I should always just put the json into VSC and fix it myself with things like this before I reply. I can never find all the problems trying to look at the json validator.
The end should look like this
oh- do they have to be staggered like that? :0
Sorry for not just checking properly in the first place
Not for the computer's sake, no. But that proper indentation lets us humans read it properly
that's okay, this is all new to me i can't thank you enough
Hence why I was encouraging you to get the json plugin so it will fix yours and it will be easier to read
hi everyone! Im kind of new to stardew modding and I wanted to know if is possible to get NPCs responding to a player given gift... Like no just dialogue. You gift them something, and they fire an event, give you another item, open a new area, whatever 😅
It's much harder to tell that all your appearance patches are inside the Entries field, for example, when the brackets for them are on the same level as the EditData patch instead of indented
what options do you have enabled for your plugins that make it easier for you personally while looking at JSON files?
so, sort of move them further across?
Yup you can use the AcceptGift_<item id> dialogue key and then use dialogue commands like $action inside those to do things like that
I use the plugin called "throw Notepad++ away and use Visual Studio Code instead" lol
OHHAHA
Yes, and they should've been doing that automatically when you hit enter to go to the next line because N++ is supposed to have automatic line indenting. I recommend using the tab key. But if you either switch to VSC or install one of those plugins that I said, you can use the auto format function
I did notice your brackets come up in colour, do they indicate anything depending on the colour type?
thanks! Im trying to learn from the wiki
They're just paired by colour to help identify which brackets are for which block. The colours indicate what level the code is at. Level refers to how nested inside other code it is (technically json isn't code though it's a data format).
That's the right place to be. If my wiki page ever loads I can point you to the commands I was referring to.
I think I got them
This is the auto format option for json tools, by the way. It will move all your brackets and stuff to the right places. It will also tell you there were a bunch of errors but that's just because it doesn't like commas with nothing else after them (trailing commas) and it doesn't like comments. But we use a less strict form of JSON that does allow both of those things so we can ignore the errors.
(grousing) stardew's font handling is cursed, why did i try to do this 
oh wow this seems helpful
will it also correct how everything after entries on mine should be moved across or is that a manual thing i'll have to do?
u wanted to experiment
It fixes all of it
I prefer VSC and tend to recommend it over N++ or Sublime because I think it has more useful features for newbies and its auto indentation seems more robust to me. I also like having my rainbow indentation and coloured brackets. N++ doesn't seem to have any way to have coloured brackets (that change according to level, anyway)
I also always recommend that people get very familiar with their auto format keyboard shortcut and use it aggressively
(I may have a slight pet peeve about sloppy formatting lol)
New quote added by atravita as #6668 (https://discordapp.com/channels/137344473976799233/156109690059751424/1424745024402231450)
I say this about everything
atra how dare you make light of my foibles /lh
This is cursed, what am I doing, why am I doing this
New quote added by cosmicbea as #6669 (https://discordapp.com/channels/137344473976799233/156109690059751424/1424747328149127309)
that's alright, i'm just trying to find the one you've got? there's a lot when i look it up, but i have no idea which one
(aba asked for macrons, and i have difficulty solving a problem narrowly)
unfortunately, solving the problem broadly is getting fucky /lh
There are only two with json in their name. JSON Tools and JSON Viewer, like I said. I was showing you JSON Tools but JSON Viewer does basically the same thing.
I'm so high maintenance 
it's not you 
it's stardew. a cruel mistress
very much not needed
uninstalled. jsontools seems cool
That is not the right program Bea. It's also very odd because VSC very much has native json support. Is it really old or something?
it sure is, i should start reading things
Don't be tempted by json tools. You don't need to switch to a less useful program lol
looking at the extension page it isn't directly json support anyway, its sidebar stuff to navigate a json file
I tried to look at it but it's not in VSCodium's marketplace and I wasn't invested enough to google it lol
but yes, json is included in vscode out of the box.
it is internally an extension, but not shipped through the marketplace(s)
I know not of what you speak
vsocde is saying this
Mom: "so, atra, you ARE going to put the oven back together, yes?"
does what it says on the tin, opens up a firefox window and links the devtools instance to vscode so you can use vscode breakpoint debugging rather than doing it inside firefox devtools window directly
fancy
there is also one for chrome, edge and probably others
This is not related to your syntax, but I have just noticed that your NPC's internal name appears to be just Vivellion which means none of your patches with a Target of {{ModId}}_Vivellion will work. You will need to adjust the internal name in the Data/Characters patches to be {{ModId}}_Vivellion as well.
AHHHH WE DID IT!!!
I wonder why that keeps happening with people making new NPCs
ohhhhhhh
It's not Tia's fault, they've clearly got the mod it token for Wren's internal name in their tutorial 
Are you following a tutorial for the overall creation of your NPC?
common new modder mistake really
yeah 😭
The use of disposition definitely indicates a tutorial
What tutorial?
Yeah but it's the inconsistency that gets me. Using mod id token in some places but not the NPC internal name.
Okay, that's Tia's so it does have the mod id token. May I ask why you decided to remove it?
(I am asking to see if there's a way we can improve our resources, not for blame)
I'm going to scream seeing a tutorial still recommend calling a file dispos.json
Maybe you should ask Tia if you can change it lol
also under seasonal outfits is straight up invalid json with a missing quotation mark
In the tutorial or King's json?
Oh, tutorial
Yeah I'll fix that one. I obviously missed that last time I did a check for broken json there
I- actually you make a good point, I can't see why, it must have just been an honest mistake of mine? I went back and re-read it all and noticed that it does have {{ModId}} before it all, hoenstly i can only say maybe i skipped over it because when i read it i tend to skip through whats in the curly brackets mentally knowing what's in it?
Then when i go to type it out i must only remember 'NPCname' and put the name there😭
I find it really odd reredaing it now going 'where did i get it from' I can't honestly see it, it must have just been an honest slip up on my part :0
NPC internal name and NPC display name are two different things
That's fair enough, thank you for the detailed explanation. Lots of new modmakers do skip over tokens because they don't know what they are.
would you put the internal name even for things like
"LogName": "Vivellion Dialogue",
logname is just for you and isn't fed to the game
The old character data for NPCs. They were in a dispositions asset before 1.6.
oooh
No, log name is just so that it's easier to identify what each patch is doing when you're troubleshooting. It doesn't affect the game in any way. It's most useful to have a descriptive title in there that will help you know which part of your file to look for if you get an error in your log or are looking through your patch summary.
first one is internal name which is just the ID of the npc, really, need it to edit any of their fields. second one is how they're refered to in the game
internal name is just an ID no? am i mistaken? wahh
these days i like to think of logname as like the ctrl-f codes that people would put in their extremely long text file walkthroughs on gamefaqs
I mean I don't see what's wrong in putting your NPC data in a file called dispos.json. It's just personal organization, yar? I have mine in content.json in one mod. And separated into several character-named .json in another mod.
also under "changes from 1.5", it is content patcher keeping old content patcher packs working not smapi, and "the old 1.5 dispositions will still work" only if format version stays <2.0
and with the version of cp that actually shipped, I don't think it actually has the token constraint on birthday.
That constraint was true for my original prototypes, but the version pathos ended up using wouldn't
name of the json doesn't matter much, no
Yes it is an ID
figuring out one modding problem only to immeidately find another oh yeah baby thats what i do this for. im going to bed
have a good sleep! 
having the character file called "dispos.json" is a trap street so we know at a glance which tutorial a person followed 😌
New quote added by atravita as #6670 (https://discordapp.com/channels/137344473976799233/156109690059751424/1424752824469819392)
Brb, making a mod that uses the wrong file names for everything
atra nooooooo
All npcs are in "blank.json"
what are the blanks called
Enjoy utils.cs being the modentry
It's bad enough that people don't understand blanks and sometimes load them over vanilla assets
My genuine advise is everything stays in content.json unless you use local token includes
HAHSH it's me, i fell into the trap
Now that I have started using ASCII to give myself a way to find all the sections in my json I am preferring all in content.json. I'm sure giant ascii art in my files is a different sort of crime though lol
most content patcher mods aren't actually big enough to need to leave content.json but splitting the npc creation process across like 10 files as a "introduction to stardew modding" is a recipe for disaster
the crime is pretty
(My Mermaid mod has all its dialogue in default.json. >_> )
(that's where dialouge is tho)
I have not yet been converted to the idea of multiple i18n files
(The dialogue has no i18n key.)

I'm also team screw i18n, LocalizeText all the time so it also can be in content.json
You are very welcome to make your own NPC creation tutorial too! :)
i'll die on the i18n hill
I am investigating switching over from i18n to LocalizedText
I have to figure out how to do everything in it before I commit
see i find it's easier to learn new things when there's, a tutorial
not needing to deal with remembering to pass tokens into the parameters of i18n for staticy stuff when the strings edit can just use tokens directly is great
i want to understand that means, truly, i fear i cannot
I did have a weird situation with LocalizedText where my random dialogue wasn't updating properly, but then when I tried to check it again to verify it was mysteriously not happening
game trolling u 
Portraits for Extras uses LocalizedText with i18n keys.
...that sounds miserable
how is this sorcery achieved
why would you want the keys to change with language
bc, other languages exist? 😭
Yeah I know I lurked on you and chu doing it all haha. I also dipped my toes into chu's approach for that but decided I prefer SinZ's recommendation to avoid i18n entirely.
LocalizedText is fine and good but unless and until it catches on broadly i would include a note for potential translators so they know where to edit your strings
npc creation other stuff other stuff other stuff as an introduction to stardew modding is a recipe for disaster
pls do anything else first
it also likely isn't worth the effort to convert an old mod using i18n over to it unless you're already overhauling everything
Look, I dont think you understand fanfiction authors
Yeah I just want to make it still easy for translators.
i18n hasn't wronged me, i have wronged it
I once spent half a day researching computing in the 1970s for a Harry Potter fanfiction
i- have questions
LocalizedText is in many ways the most pure way, as its straight up following vanillas homework, and an unpack shows plenty of examples of how to use it
jokes on u i dislike how vanilla does things sometimes
The only harry potter fanfiction I know is hpmor and I plan on keeping it that way, though it does talk about computing in the 60's I think for artificial intelligence
Many people can't look at vanilla and understand what it's doing
if you cant understand vanilla, you are doomed as a modder anyway.
you need to know the asset you intend on editing
Although I am definitely on board with LocalizedText, I do intend to leave any potential translators very detailed notes and probably a template for how to do it
Tell that to all the mods out there made by people who had no idea what they were doing lol
im so confused by this entire conversation
im lost in the sauce
i understand how vanilla does things, i just don't do it the same. i dun wanna
may u have a swift workday atra
It will be a swift workday ||as in listening to Taylor Swift right?????||
i meant it goes by fast but that works too
-sigh- why is drawing so slow compared to writing json
What's a simplest way a translator can do to upload a translation mod for a pure LocalizedText mod?
writing json tends to be atleast a bit more straight forward
art is like, do i use this color? is this line okay? but what if-
and there's no correct answer, really
Download a template and edit only the values in the content.json and manifest.json that the mod author has indicated, I think
EditData on the various Strings asset(s) with late priority
It's the worst. I move a pixel to the right and to the left in my mods with every upload.
But if the mod author has not provided a template, they have to be able to look through the original mod and identify what to edit and how
and can never decided whenever it looks better on the left or right
which is an advantage over i18n which has to be internal to the mod, so translation mods tend to just ship a (usually outdated) copy of the original mod, while LocalizeText the translations are just an addon to the original mod
they don't do that anymore
We are really moving away from the copy of the mod thing
i18n files are also addons
Most of the translations I see now are i18n
if I have to manually move files between folders, its immediate disqualification for me anyway
i wish people would just use the same format so it's just drag and drop
I refuse to touch any mods that require portraiture for that reason.
if stardrop cant handle it end to end its not a real mod
but generally speaking u just put files into the i18n folder
i mean it's not that bad, i'd say
i think theres an issue in the small number of people in the middle of the venn diagram between "people who have the ability, time, and want to translate mods" and "people with the experience and knowledge to write basic cp mods"

so i see whats being said but theres an activation cost essentially
I imagine it would get messy when the pure LocalizedText mod gets a mod that changes its text. And then that other mod gets a translation mod.
shame project fluent https://www.nexusmods.com/stardewvalley/mods/12638 never fully took off
LIke I'm imagining something Romanceable Rasmodia on top of Romanceable Rasmodius on top of SVE on top of vanilla, but each has LocalizedText with no i18n and each with its own translations.
sounds great, when are you publishing that?
it's a big leap between "making a single json file" and "understanding how to use LocalizedText, making an entire mod"
feb 30th
I would like all the wizards to be stacked on each other's shoulders
wait that's the wrong month
the true wizard tower
no update tracking though as its not a mod
it's not a mod, it's a translation
Why would that be an issue? The latest one to edit the dialogue asset (for example) would be the one whose string asset was chosen, so the translation for that asset would be seen.
Still helpful to know if it's been updated though
one nice feature of using localizedtext is you get to skip running reload_i18n before patch reload /lh
unless you are pathos who populates the strings asset with i18n, so needs it anyway
ichor do u know how to use loalizedtext
What if you store all your localized text in a mod-specific file?
That is what I am doing
i do like crimes
problem with load over editdata, is 1) tokens no longer exist, and 2) no fallback on specific entry keys anymore
Determining load priority between mods with different authors is always an issue.
I don't see how using localized text would change that though. It's just changing where the translation is stored.
more or less, but i haven't done it much
Unless you are imagining that they are overwriting each other in a vanilla strings asset, I guess
the only real change with i18n vs localizetext in a modding capacity, is with i18n a separate mod can only replace where the i18n is used with something else.
localizetext they can either replace the usage, or edit the strings asset powering it.
Hmm I had forgotten I will still want CP tokens inside the translation text, I guess I will need to change to EditData
Wait. I am a forgetful genius! I already am doing EditData

so like, does the translator just need a mod with editdata to add translations
Yep
I mean, without clear priority, the Polish translation for SVE may show instead of Romanceable Rasmodia's, right?
Only if they were going to regardless of LocalizedText, because if Rasmodia was correctly loading after SVE it would replace the SVE lines with its own lines and they would point at the Rasmodia strings asset just like it would point at the Rasmodia i18n asset.
Totally made up example:
// Vanilla Characters/Dialogue/Wizard line
"Mon": "I'm such a grumpy old wizard."
// SVE edit to that in Characters/Dialogue/Wizard
"Mon": "[LocalizedText SVE.Strings:WizardyMon]"
// Rasmodia edit on top of that again in Characters/Dialogue/Wizard
"Mon": "[LocalizedText Rasmodia.Strings:SexyWizardyMon]"
If i have an event that takes place when the farmer walks outside the farmhouse, how do i know where the farmhouse is if the farmhouse’s location varies?
SexyWizardlyMon 
from memory farm events are magic and offsets the coordinates or something, but would need to look at vanilla farm events to confirm
farm events do their own thing
which i know nothing about
see Events/Farm to maybe help ya. most of them are just next to the farmhouse
Hmm so if i already have an event that i have coded place the farmer just outside of the farmhouse’s door, i should expect it to still work even if the farmhouse moved?
I'm thinking more of a case like this. ```// Vanilla Characters/Dialogue/Wizard line
"Mon": "I'm such a grumpy old wizard."
// SVE edit to that in Characters/Dialogue/Wizard
"Mon": "[LocalizedText SVE.Strings:WizardyMon]"
// German translation to SVE.Strings
"WizardyMon": "Ich bin so ein mürrischer alter Zauberer namens Magnus."
// Rasmodia version of SVE.Strings
"WizardyMon": "I'm such a sexy witch."```
keys would need to be different no?
I mean, one of great advantage of using LocalizedText is that you don't have to search for the asset the text is located and can just target the same key.
looks like event initialization when its a farm, as long as the magic 4th initialization isn't "ignoreEventTileOffset" or magic eventid -2 then the following happens:
camera position gets moved to the front door position as long as it wasn't x < -1000
non-farmer characters get set to frontdoor position X, and Y+2, and facing direction of 0
farmer as long as the x isn't -1 get set to frontdoor position X and Y+1 and has facing direction of 2
so where the farmhouse is doesn't really matter
correct
though Im guessing the only event that might dare use ignoreEventTileOffset is the intro, which is before the player had a chance to move the house anyway
Hmm, in the context of something like dialogue this wouldn't make sense to me because I don't know why you'd target the translation key instead of the dialogue key, but for an event it does make more sense. In that case, I guess it would be important for the Rasmodia translations to run later than the SVE one. But I don't see that that is necessarily more of a hassle than the approach with i18n where one has to edit the event itself to change the translation key to something else. I do see that the hybrid LocalizedText/i18n approach might be most useful in this situation though 
This has been a handy conversation for helping me try to predict the possible issues with switch to LocalizedText, thanks 
hellooo uhh is this written correctly?
"Mon": "{{i18n: i18n_Dialog.Krobus.Generic_Sewer.0h.{{Random:{{Range: 1, 15}}}}",
the sheer amount of curly brackets-
looks like you might be missing another set of brackets on the end
6 opening brackets, 4 closing brackets.
two closing brackets at the end
every opening bracket needs to have a closed bracket counterpart
alr, so {{i18n: i18n_Dialog.Krobus.Generic_Sewer.0h.{{Random:{{Range: 1, 15}}}}}}
yes
is it not possible to conditionally hide an NPC from NPC Map Locations? i tried doing it but that just made the NPC invisible all the time
I've tried to do the same but unfortunately it seems the change would not apply until you restart the game.
pathos pls fix
It works if you actually make the npc invisible and from what I remember from the code it runs the checks at the same time so I would've thought they would change the next day
I might just be misremembering though because it's been a...year...since I looked at it and I was only investigating invisible NPCs
hm... where should i look for more info about invisible NPCs?
Trigger actions!
It leaves them there but makes them invisible and non-interactable. If you know where they are you can still Lookup Anything them though 
Elliott uses it when he goes off on his book tour
He's actually still lurking in the farmhouse the whole time
Like Bruno
ah... can you not do it so that theyre invisible for an indefinite amount of time? like, until you watch a certain event
Yeah you'd just set the days really high
And then set them visible again with another trigger action
Here's a set of trigger actions I have for Hiria so she "goes" to the dentist. I might switch it to a warp room later but I had fun experimenting with the different BETAS and Spacecore features lol
In Hiria's case I just set her invisible for 1 day because I was bringing her back after a couple of hours on the same day anyway
But I have tested and you can do like 9999
yeah my tent map already acts as a warp room (because the map patch that leads to the tent will disappear sometimes) so id rather not make a whole other room if i can
However, NPC map locations only updates overnight so she's still visible on the map for her dentist visit I'm pretty sure
But if you need an NPC to be gone for entire days it works fine
It was my first ever PR!
yeah Honeyfuggle is going to be gone for entire weeks so hopefully this works for my purposes
(Pathos had to make it better of course but it was still a big step for me to identify and fix an issue in a C# mod hehehe)
(And work up the courage to ask Pathos about it lol)
I hope so too! Otherwise we're back to poking Pathos with a big stick
Fyi, Rasmodia would rather die than say that
/lh
!PLAYER_HAS_SEEN_EVENT Any {{ModId}}_Introduction
does this query mean the action will still apply if at least one person has not seen the event? or that it will no longer apply as soon as one person sees the event?
As long as one person hasn't seen the event yet it will still apply Edit: all the smarter people say otherwise
! negates the whole query, so this is "not any person has seen the event"
now i'm second-guessing but i was fairly sure ! just flips the result
i think if you want it to stop applying as soon as someone sees the event, keep as-is
Pretty easy to test with a quicker GSQ like PLAYER_VISITED_LOCATION imo
But I will not be doing that due to the current proximity to 2am
Any = A OR B, so Not Any = Not (A OR B) = Not A AND Not B
so it will be true if player A has not seen it AND player B has not seen it
Couldn't you also do NOT A, NOT B
De Morgan's strikes again
IIRC commas work as ands in gsqs
yes but this is the player value Any and not actually multiple queries
Yup I am too tired to follow how Not (A OR B) equals Not A AND Not B, time for bed!
Ah sorry I misunderstood, I thought you meant using the ANY query
I guess switching from Any to All will give the desired effects?
i think vin wants not any
I thought Vin already had the desired effect
As soon as one person sees the event it becomes false
lemme go test it lol
glad to be of help (sowing widespread confusion) /lh
I think they were in agreement about what it will do, just not in agreement in their understanding about what you wanted it to do lol
(They being Selph, ichor, atra)
Thank you for the link I will peruse it at not-2am!
how could de morgan do this to me 
New quote added by atravita as #6671 (https://discordapp.com/channels/137344473976799233/156109690059751424/1424788243811143826)
Heyyy! I'm going through and painstakingly typing out my mods events and while my custom NPC acts as he should, the farmer is simply just... not appearing? I've looked at canon events to format the same and like i said, ironically my custom dude is working and doing his moves but since the farmer never appears it just freezes while waiting for the farmer to finish moving.
this is the set up for the BusStop map
"none/-1000 -1000/farmer 8 23 1 Mirren 39 23 3 pet 8 24 1/
This is where it gets stuck
/emote Mirren 28/move Mirren 0 4 2 true/move farmer 7 0 1/
Can you upload the whole event to smapi.io/json so we can take a look at the whole thing in context?
NEVERMIND?? I moved where the farmer starts and it seems to have fixed it
I will keep in mind an do so if i run into another problem!
I don't think so? I started the farmer on the leftmost mailbox thingy, and it didnt work. Moving it to the right one made it work
is there a way to hide the ability to go to a certain map after specific event happens with content patcher? I kinda wanna lock my expansion until halfway through or one year later since itll add so many npcs and i want people to be able to chilllaxingly enjoy their game without having to worry about over 50 npcs kfldlfdf i was thinking if it was possible making a meteor landing sound effect and then the next day recieving a mail being like "A strange meteor has fallen near the outskirts of Stardew Valley, apparently the traveling merchant that comes by spotted people that looked a bit odd coming out of the meteor and building homes, see if you can create a trade route with them for us will you, farmer?" - Lewis or something to that effect
at the risk of adding to your modmaking cognitive load, the best time to start prefixing your NPC's internal name with {{ModId}} is when you start the mod, and the second best time is now
You can use CP to play with the map's warp points and stuff
update, after having to jump through several hoops to get my multiplayer game working: !PLAYER_HAS_SEEN_EVENT Any Vinilla.Honeyfuggle_Introduction returns false after having one player (out of two) watch the event so. i think that means its working as intended
i could make a small entry map you can go to but cant access any further until you unlock the area maybe?
i plan on utlizing the central station mod 🙂↕️
You can also use CP to overwrite that part of the map with different tiles to show that it is physically closed off until later
OOO
Do you need the CP EditMap documentation?
wfkjwd * !
i need to make tilesheets after i make a few walking around sprites so i can make the area heehee
tyyyy
Ah! I'll make sure to do that :P this is my first mod and i've jumped in the deep end lolol so im learning as I go. Just to double check since im really not a programmer so a lot of terms go over my head. But you mean everytime i reference the NPC in the code, it should have the prefix? That includes sprites and such? ^^
Maps are fun, but definitely tricky. Don't hesitate to come back and ask for help if you need it 🙂
will do ty sm!
I have planned main maps not including the interriors but i dont wanna make the area tooo gigantic so i gotta watch it
XD
I just got my maps working and it's incredibly satisfying when you see your work come to life BUT OMG was it a fight
I'm also trying to use the pet dog/cat in an event and i haven't seen anything about using them so i am really just waving the code around, hoping something will stick
random question someone may know. Did something change in the way farms apply their map patches and such now? In the past, I never had to specifiy to only load a map on a certain farm because it would do it only on that farm map. But now im finding things like my bundles, custom locations, etc are applying to all farm maps. I dont mind adding the "When":{"FarmType":"<farm>"}, tag...but that's new (to me)
I have not done custom NPCs, but I think so. You also use {{ModId}} on Events and other stuff to avoid accidentally naming something the same as another mod (causing conflicts)
That way, if your NPC is named Jared (for example), he won't conflict with any current or future Jared NPCs out there
And if you name your event {{ModId}}_FunTime, it won't conflict with any "FunTime" event in any other mod.
I've dutifully used {{ModId}} on my events! I really do want to be polite and make sure i follow the general guidelines so everything works smoothly for everyone but i don't always know what can conflict. But I got the event under my mod id!
Custom locations should always exist, so if a farmer changes farm maps they don't lose anything
Map edits are asset based so if you're only editing the farm map it shouldn't need to be conditional?
UB Bundles I think don't know about maps, so those probably do need to be conditional
You can always grab a custom NPC that behaves well (like Hat Mouse Lacey) and use them as an example. Just do a search for where/how they are using {{ModId}} in their NPC data
Meant that for you, sorry
yush, i'll probs have a peek and see how it works ^^
lacey uses a dynamic token to make it slightly easier:
"DynamicTokens": [
{
"Name": "Lacey",
"Value": "{{ModId}}_Lacey"
},```
then for event scripts or nearly anything else that needs her id i just use `{{Lacey}}`
honeyfuggle does it too because im very original
"Id": "{{ModId}}_OnCatchTadpole",
"Trigger": "LocationChanged",
"Condition": "ANY \"PLAYER_HAS_ITEM Current {{WhichTadpole}}, SYNCED_RANDOM day camiska.CPFrogTank_tadpolecheck 0.08\" \"PLAYER_HAS_CAUGHT_FISH Current {{WhichTadpole}}, SYNCED_RANDOM day camiska.CPFrogTank_tadpolecheck 0.08\"",
"Actions": [ "AddConversationTopic camiska.CPFrogTank_Tadpole_Inv 1" ]
},```
shouldn't something like this only add the conversation topic at a 8% chance? it feels like a 100% chance (but that might be RNG)
another update, everything with the invisible NPC stuff appears to be working so i dont have to poke pathos with a stick! 
can someone help im tryna make / edit farm
"Changes": [
{
"Action": "Load",
"Target": "Maps/Farm",
"FromFile": "assets/farm.tmx"
}
]
}```
are you trying to replace a farm or create a farm with a custom icon and have its own space?
Keep in mind that if you are looking to create a new farm instead of replacing a default (creating a new farm is the better practice for compatibility), you should use this page as a guide: https://stardewvalleywiki.com/Modding:Farm_data
Currently this code would replace the entire map for the default / Standard Farm, if you want to make a new farm, it'd be better to use the method described in the link above to add it to Data/AdditionalFarms as a separate farm map.
If anyone was wondering, in Advanced Melee Framework, you are able to use a vanilla enchantment called magic. It causes your left-click [Normal Attack] to fire a ball of light magic. I'm guessing we were meant to get functioning wands at some point?
vanilla data also has weapon projectiles (not tied to an enchantment). it probably got removed in favor of that?
Would just moving the TileData of the town/forest entrance to somewhere i want work? Or do i need to do something special?
Didn't see anything in the wiki/pins specifically, but is there a plan to update SDV/SMAPI to .NET 8 (or alternatively 10 when it comes out in a month or 2), given 6 is end of life/support and not getting any security updates?
are you trying to move the forest entrance to add your area
No I'm editing a farm map
and you want to move the entrance to the forest on your farm?
Yes
in that case go wild
I'd be interested to know what OS versions would have their compatibility dropped... AFAIK the only OS level compatibility change is for end of support Linux distros (Ubuntu 20.04 for example).. shrugs
the major compatibility issue is 32 vs 64 bit, which was something that happened last major update (32 bit now has to use the compat branch). i think the 32 bit change is circa 2013 or so, so the affected OS versions would presumably be ones shortly thereafter, which are 64 bit but so old that .NET doesn't believe in them anymore
I suppose - On Windows the supported OS's were all of the same aged vintage (Win 10 1607 was oldest for both 6 and 8)
i think there were also issues with .NET having stupidly short end of life dates
such that if stardew tried to go with a not-about-to-be-EOL .NET, it would cut out a lot
If there was a very serious CVE on .NET 6 jn the future, then maybe game will updoot
I don't think this scenario has occurred yet
.NET LTS releases are 3 year lifecycles
Another possibility is SMAPI runs a higher .NET version, but yeah don't expect that any time soon either
i found a github argument about this lol https://github.com/dotnet/core/issues/9038
Pathos already said that SMAPI requires/uses the base game's .NET build so that's out
i think the point is there's fewer hurdles to SMAPI doing whatever it wants—Pathos probably isn't excited to mess with it now, but there could come a day where it's motivated
It would be a new SMAPI feature sort of deal, not currently implemented in any form
Short answer is pls build your mods against 6
also Stardew went to .NET6 kinda against its will iirc, was mandatory to be on microsoft store (and in turn for gamepass)
but .NET 6 was also the last that supported win7, going any higher loses official win7 support
how many people still play on win7, though..?
in the end, though, I don't think it's unreasonable to stick with .NET6 for now
CA cares about keeping OS support forever
and is seems to be actively annoyed he was forced to abandon ps vita
ugh formatting questions is EXHAUSTING
Sinz net 10 experiment when
its on the todo list
back then the only thing that didn't appear to work was audio, everything else seemed fine
will take a bit to cleanup this attempt due to the fact this stashed commit also contains a bunch of other experiments as well, and that the smapi codebase has changed a bit since then, in particular the namespace declaration change
Net 10 when?
I mean, I suppose GOG exists, because: https://www.reddit.com/r/Games/comments/1nk715n/as_of_january_1_2026_steam_will_stop_supporting/
It's a CA decision
The person you would want to convince is him
Trying to convince Sinz does nothing
(Meanwhile I'm trying to encourage more net 10 experiments :P)
I recommend not knowing anything about .net version differences 
i dont even understand what tangible benefit itd bring i thought a lot of it was like syntactic sugar that is otherwisde achievable
i dont pay attention to these things unless i must 
I vaguely recall some (likely) performance improvements, and maybe some language bits that can't work without it? but yeah, idk
despite being here for 5->6
Regex
performance improvements i do recall actually though its not like theyd really change my code much if at all
(not knowing regex is also nice 😇)
.NET regular expression source generators - .NET | Microsoft Learn https://share.google/ef9PdwsvKb8zE5g0j
Smh esca
youre not allowed to shake your head when you use google share links
listen, my IT department was exploding when I was learning all this, it's scattershot /lh
i want the field implicit backing field
oh that is actually one i forgot i wanted
that one would be nice
required too but not as much
still seems sugary to me though when both can just be achieved by writing other code
(practically speaking)
the regex source-gen stuff does seem handy if it's doing string/span magic automatically
oh esca!! thank you for your help yesterday, i got my mines spawns to work
no problem, good to hear 
i did also. set it to only the first 30 floors. so it wont explode peoples computers too badly
it should be fine for small numbers of items, generally, but FTM does some work for each location at start of day
Smh I'm too busy hitting up every convenience store trying to get the free prime energy drink samples
To fix the Google share links
Anyways
You think I'm joking but thjs is the second quiktrip I've checked and neither one wants to give me free energy drinks even though there IS a coupon in the app
High performance code crimes in .NET 8+ are great
https://medium.com/@malarsharmila/introduction-to-the-unsafeaccessorattribute-class-in-net-8-0-d3a55ec15762
compile time reflection to generate valid IL to directly access private stuff with no runtime overhead
Yeah, it'll release onto GOG
Also, keep in mind, after January 1st, 2026, Steam will STILL work!!!!
It'll likely work for 3-4 years before it starts having issues
That just means patches and updates, the shop, the games, it'll all still fully work, you got like 3 years before you start having trouble with it
Unless someone forks the client, your fine for some years

Do people even still use 32bit systems..?
yeah, was thinking same thing, shockingly yes! apparently steam had it showing 0.01% of all steam users
so they were prob waiting for it to hit that number before discontinuing
32-bit CPU's stopped being produced in the early-mid 2000s?
Though for game controllers, routers, etc, they were still partially being used until some years later
I'd say 32-bit was already low around 2015, and by 2019, it was pretty rare
By 2025, it's nearly dead, though, it's still important to have 32-bit support for apps and games, so many still revolve around it (shockingly!)
I don't think 32bit steam is long for the world.
Supporting 32bit is also making Steam itself a 32bit application and they don't ship two different windows applications.
Officially dropping 32bit would let steam start being a 64bit application
it helps Steams case that Windows 11 never shipped a 32bit os afaik, and win10 is entering EOL
Win 10 nearing eol sounds wild to me tbh... I honestly forget win11 even exists 😅
I'm actually not trying to convince SinZ, just discuss it, lol.
It came up becuase steam still being 32bit is a blocker for some linux distros dropping 32bit support lol
(not kernals, which IIRC still have some 16bit support, dropping this or next year, IIRC)
yeah lol
i dont use 11 personally, seems cool, but not my thing, though if you wanna stick to windows 10, look into ESU updates, I got mine for 3 years 
I spent pretty much all my time on windows insider builds so was effectively on win11 for a good 6 months to a year before it's ga release anyway, and never fully got the allergic reaction people had to it
Win11 was mainly a new coat of paint and an excuse to help their partners sell new laptops
personally just was a little unpolished, mainly transparency across the system (that glossy glass) was unfihsed, where if I right clicked it'd take like 0.2 seconds, some other parts of the system not fully consistant
For me it was just like consistancy, and some minor polishing needed, but its generally not bad
Also sorry I gotta post a question rq:
Hello peoples
Issue I got, how can I make it so a fish comes out multiple parts of the day
"{{ModId}}_HammerheadShark"
Can I duplicate the entry of the fish and set the times differently? I want morning, and another for night to 2 am, nothing in between
Can switch it from using regular time system to use gsq conditions instead for controlling time
how can this be done? Im very (very) new to this..
Halibut has this I thought
Maybe also albacore?
There’s a few vanilla fish that are morning and evening iirc so hopefully one of them is a good model to go off
In the data/locations entry for the fish there is a Condition field which you can have something like ANY "TIME 0600 1200" "TIME 1900 2600" I think
I'm rusty with the actual content side of it
But if the og time system supports multiple ranges do that instead
(Or do "!TIME 1200 1900")
Ok i cant do any truly productive troubleshooting right now because im out of the house. But does the answer immediately jump to mind for anyone why a crafting recipe received as a museum reward wouldnt be showing up in the crafting menu? It works fine if i set the unlock condition to a skill instead, and the recipe reward appears correct in gunther's little menu. So im a bit lost
If the answer is "its a mystery" ill just wait and poke it more when i get home
your internal item ID and the recipe ID probably doesn't match up
post your code when you can
Wouldnt it not show up with the right icon when you redeem the reward then? Or am i misunderstanding which two IDs you mean
If it is just a typo im gonna throw the most relieved fit though
the item may have the correct ID, but when picking what recipe to unlock (in general), the game uses the item query's ObjectInternalName field, or the target item's internal Name field
since museum rewards don't use item queries it's just the item's internal Name
I see...
So it works for a skill unlock because recipe name and item name dont have to match there, but it doesnt work for museum because the museum wants them to match? Do i have that right?
It's only ever been shops that the item and recipe name have been needed for in my experience but the museum reward menu might work in the same way, maybe
it works for skill unlocks because it's part of the recipe directly
for museum data it uses how the rest of the game chooses a recipe to unlock with an item query
Ok. This seems like a good angle to tackle it from once im home. Thank you
i don't really know anything about recipes, since i am not working on an expansion, but whenever i see stuff about them on here i do
and figure they must be cursed
I wouldve waited until i was actually there but it was just bugging me in the back of my mind
yumm recipes
It makes me sad to have to name my recipe the same thing as its output but it is at least an easy fix
Recipe names only show up internally anyways dont they? Because it usually just gives the display name of the end item
The transmute recipes are an exception
when I say name I meant the internal name, not the display name of the recipe (which is settable, and will show up)
Yea
Yeah, I am just fussy lol
Do you remember the recipe name hack
only vaguely
Basically, the game would add "Recipe" to the internal name of Recipe objects
(Not sure why, suspicion is on stacking)
But when it went to grant the recipe it would simply remoce the word "Recipe" from anywhere in the internal name and check for a recipe by that name
So if you had "Recipe" jn your unique id and you used your unique id in your recipe keys, your recipes would all break if granted from a shop
stardew truly is a land of contrasts
Game works 100% all the time
I think this time i just got caught by using vanilla as my onlg example. Vanilla doesnt have to follow the same name conventions and rules as mods
I love this game. Never change, CA....but I'm glad that issue isnt issue as of 1.6.9
i mean the game does pretty much always tbf
with the reasonable amount of bugs any game can expect
Frankly I think the game could do with more bugs
And a minigame to catch them
And a museum to display them
isn't nature in the valley 3/3 for that
well it's a tool to catch them, not a whole minigame
That sounds like a great mod but sadly it came out after I stopped playing the game
Too busy putting together virtual rooms for virtual cats
you do mention a lot how you dont play anymore
Sorry I can leave
i wanna catch bugs like forage
it could also be really cute if they spawn like forage but their item sprite is animated, so they arent just lying on the ground
I do have forageable bugs in my next mod but they're only static images
I thought about NITV compat but... it didnt seem worth it for 4 bugs
Heyy, does anyone have any tips to get into coding to mod SDV? I know nothing but there is a particular mod that I really want to make but I don't know where to start.
!startmodding what's your mod idea? that will affect whether you can make a content pack or whether you'll need to use C#
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
please this is all i have left
can't you do that with spacecore animations?
Maybe I'll make some little buggy friends in my mod
Hello! Does anyone know why the farmer doesn't warp to the new map from this location when I add the "When" token? It used to work without it, but now it doesn't (even during the range of time that it's supposed to) - The screenshot is the content.json file
i expect it's the update rate
(side note but you shouldn't be using CustomLocations and format 1.23.0; instead you should migrate to format 2.8.0 and add new locations with Data/Locations)
you can change the UpdateRate of the patch to be time changed instead but be aware of the performance cost
the game itself tends to lock things like this via LockedDoorWarps iirc
(such as how you can't go inside pierre's when it's too late at night)
of course, that's for buildings
so you'd have to think about how you'd want to implement it
thank y'all, I'll try that out. Also is there an easier way of realtime editing of the mod instead of constantly opening and closing the game? (sorry for intro level questions I'm really new to this 😭 )
!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.
(That said, I would step off a map before reloading it)
tyty!
will deleting non-english tilesheets from my unpacked folder have consequences? i'm sick of scrolling for miles
your unpacked folder has absolutely no bearing on anything whatsoever
okay! i was worried maybe they were baked into the maps somehow
wouldn't want to copy a borked one
thanks
i think the game swaps them out in the background for you
you could keep them somewhere else if you're a digital hoarder like me
but it won't hurt the maps either way
I made a second copy of my unpacked contents to be english only, just in case I need to go examining other language stuff sometimes
my current unpacked contents has other languages, but was run in clean mode so I don't have default values
Just wondering, when creating an NPC with Seasonal outfits, is it okay if this string of code here comes before the second image of code?
These have different targets and one is a load while the other is an edit so it shouldnt matter at all which comes first in your json (people who know more than me can correct me if im wrong)
Thank you 
horrifying thing vscode does when i use dyamic tokens for my npc and then hit "format document"
As far as i know. Content patcher will do 1 load for each thing in the game first, defaulting to vanilla assets if there arent any loads overriding them, then it applys any edits on top of the loaded assets. So order only matters if theres two things editing the same thing
Hey i dont wanna be dramatic but i hate this
lol
Is there already a mod that changes wake up time based on when you sleep
I don't remember seeing something like that 🤔
I think there is something that allows you to "oversleep", but I don't think it's an auto process based on sleeping hour
Oh wait it does actually (very old, outdated, yada yada)
https://www.nexusmods.com/stardewvalley/mods/2195
I think I have a new contender for worst "bug report"
😭 all the chinese text say is just "mod couldn't be loaded" ... no details, no nothing
yup
first time this sticker has actually been relevant
Hey everyone. So, my NPC is showing up in the game, i can give them gifts but they aren't moving and i'm thinking it has to do with the Schedule JSON? https://smapi.io/json/none/6fc1a39f38d042ecb5cc57fb1d44e4a4
As seen here, i was trying to keep it simple beccause it was just to test it all to see if it would work, but it doesn't - am i missing something in here at all? I can send other JSONS like the content one if need be
Please @ me so i can come back to this : D
did you sleep a day to see if they would move?
I have! Mhm 
!log plz
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.
Have you loaded a blank json for the schedule?
as in, in content? :0 i have this here?
{
//Schedule
"LogName": "Vivellion Schedule",
"Action": "Include",
"FromFile": "assets/data/schedule.json"
},
thats not loading a blank

a blank load is when you load an empty json file (save for a set of brackets) to various targets
You need to search the NPC tutorial for "blank" and it will show you what to do
OH
Right now your schedule EditData patch is trying to edit an asset that does not exist
oh wait yeah okay, sorry the first fwe times i've read the tutorial i thought it was just a blank as in 'use this and copy to create another json file' instead of having to continiously use more, i didn't realise it was integral code
It's a strange concept to understand at first, definitely. A lot of people do it without understanding why they're doing it too.
Here's an explanation I've written before about what blank loads are for and what they do for us (ignore the bit about Sprinton and Axell).
Thank you
just testing it now to see
aba, what is the bare minimum an NPC needs in order to work?
What counts as working? Spawning? Moving and talking?
To spawn, they need portraits, sprites, and a Data/Characters entry with a Home spawn point specified.
To move and talk, they also require a schedule and dialogue.
For CTs and location dialogue to work, they need gift tastes.
They need their own asset created for their schedule and dialogue. Character data and gift tastes require an edit to the existing vanilla assets.
😔 whew... i finished my event, time to test it... i can i18n it later once i know it works
thank you for this i read the explanation and it makes sense to me more now! It was exactly what i needed, my NPC is now moving, thank you again
🤔 huh. well thats new
win 11?
it’s almost definitely caused by the same thing, the executable not being signed
the question is how much of a headache this is going to be
No that's pretty normal, just hit run
I've had it do that to code i literally just wrote myself and compiled
Liken I'll be running benchmarks and every third run my antivirus goes "nope"
windows defender lets you just. run stuff anyways so i dont see it being a particular issue
also NOOOO dont tell me i never fixed this 😭
🤔 wait what
why is it transparent...
nvm i know why
wrong map file LOL
i fixed it but still had the old version
event dont work. it wont even trigger gahhh
ffs i forgot to actually include my event json
ok im problems georg apparently
🤔 you're supposed to be able to write events in multiple lines now, right? why the hell won't mine work
yes, you can put line breaks in your event string to make it easier to read and edit (for you and for your source control)
the json wont even validate
uhh is it ok to just send my event.json in this case
bc i cant validate it
it refuses to read my event data
yeah if the validator won't parse it you can paste one here (maybe start with one)
here's my event data json with line breaks for reference https://github.com/ichortower/HatMouseLacey/blob/main/CP/data/heart-events.json
i only have one event so far (hopefully i removed my lore paragraphs)
looks okay at a glance. are there events in Blacksmith in vanilla?
if not, you'll need to blank load that asset first or the editdata will never occur
for the record i did do that and i even patch exported it and my event is there
and yet it refuses to work
in-game error
my log is a mess rn but i can reload and get a fresh one
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 28 C# mods and 7 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it
oh i see
you've used a viewport command for the second init command instead of raw coordinates
if you need a behavior of the viewport command specifically and the init field doesn't support it, you can start the camera off in the void at -1000 -1000 or something and use viewport to move it after the event starts
😔 now i forgot to get the farmer out the void
but, progress!
i suppose?
im confusedc tho
i have a command that warps the farmer
but they dont show up...
the event works. i guess. shocking
fairly sure warp <actor> x y does not support a third integer argument and you may be getting parse errors about it
you may be correct.
🤔 why am i even making these mistakes
i had an event open for reference that 100% works and i made it myself
(not about you) i do wish people would stop putting the third integer into the warp command /lh
A lot of people thought it did
A lot
Morning ichor!
hello
in their defense, it did silently proceed without erroring (but also without setting the character's facing) in every SDV version before 1.6
although frankly the fact that warp supports a continue argument at all when it consumes no time is baffling to me
is there a better way to make blank question boxes?
like i want it to just be "click this"
no .
try quickQuestion #1#2#3
i think you get a blank line but that's better than punctuation i would think
...and i just watched my npc moonwalk into the waall before the event ended 😭
actually it's more like crabwalked
she went sideways.
i wish i had caught it because it made me do a double take 😭
it would be fun to make a little supercut video of silly mishaps and bloopers from event coding and do like a "welcome to stardew modding, enjoy your stay" /lh
[game] Event 'Forsy.NPCSelena_Selena2Hearts' has command 'Oh, just putting away some ores, and finishing some practice engraving...#$b#It's nothing much, really.' which couldn't be parsed: unknown command 'Oh, just putting away some ores, and finishing some practice engraving...#$b#It's nothing much, really.'. and i have a fun little error where it says i cannot parse this for... whatever reason. which is fun.
it's part of my quickQuestion
and i thought i had been following the wiki properlu
"it's cursed here and we all love it and will never leave"
but it just failed to question
the stuff in your quickQuestion segments must be event scripts. so you need the speak {{Selena}} etc.
New quote added by atravita as #6672 (https://discordapp.com/channels/137344473976799233/156109690059751424/1425118302383902751)
😔 now farmer wants to leave..
Hotel California
caught my npc walking into the wall again just to get to her schedule spot
Meirl
nice! now my event loops whenever i get to my question.
take 900 of me trying to fix this event and my npc does nothing but moonwalk
🤔 why is the i18nifier making every space in my event an i18n key
hellooo I'm making a krobus mod, and I want to set it up so that most dialog doesn't show up on fridays, but it seems like a pretty difficult thing to do when it comes to conversation topics.
I was thinking maybe all the i18n dialog things could have the DAY_OF_WEEK GSQ with the alternative leading to a randomized friday general dialog, but it seems pretty long, hmm would it be possible to make a custom token with the DAY_OF_WEEK query and put that in front of dialog instead? idk what i'm doing lol
maybe you can use nested i18n tokens, like have an i18n key like this
"Krobus.silentIfFriday": "$query DAY_OF_WEEK Friday#...|{{actualDialogue}}"
then in all your dialogue keys do
{{i18n: Krobus.silentIfFriday |actualDialogue={{i18n:ActualI18nKey}}}}
is it possible to expand the map of the flower festival to the side going this way <-
ik a lot of expansions have expanded up and to this side ->
but i was wondering if theres any particular reason why no ones expanded it on the other side? (im thinking of adding on to the map in that direction for my mod maybe)
Because maps coordinates start from the top left, so extending a map up or to the left means you would need to change all NPC's position for them to be in their right place, and you'd be incompatible with literally every mod
darn
ok ig my npcs wont need dance sprites for the flower festival then XD
well actually i wonder if i can make a map extension to go outwards from where elliot and leah stand usually and make an area over the water? 🤔
wait would expanding down have the same problem?
You definitely can! The rest of the coordinate won't change, it's only up or leftward ^^
ok cool!
yippeee
cause i think itd be cute to be able to dance with some or all of my npcs 👼
🤔 when it comes to reducing load time and stuff, does having like 50+ separate action blocks just editing a different image matter compared to one big one that edits different images
like editimaging every vanilla npc sprite
okayyy this is what I got:
"i18n_Code.Krobus_SilentIfFriday": "$query DAY_OF_WEEK Friday#{{i18n: i18n_Dialog.Krobus.Generic_Roommate.Friday.{{Random:{{Range: 1, 15}}}}}}|{{i18n_Code.Non_Friday}}" {{i18n: i18n_Code.Krobus_SilentIfFriday|i18n_Code.Non_Friday={{i18n:___enter_key_here___}}}}
what should I do for lines that already have queries in them?
$query splits the entire dialogue string so you can't nest them afaik
you can't nest queries unfortunately 
you'll have to figure out an alternate solution
need to fallback to When blocks then
Just double checking, so no queries in i18ns if the OG line already had a query?
reminding myself once again to ask for a GSQ switch block when 1.7 reopens
nope
dammit okay
thanks for telling me, you just saved me hours of future debugging LOL

does anyone know if any mods touch this specific tile area im thinking of adding a bridge going straight down and to another little island for my npcs
its the flower festival map area
i'm not aware of any
nice!
hellooo uh is there a way to stop a specificTemporarySprite thing in an event? tryna edit the sewer fight event to add a more clear end
specificTemporarySprite is a hook for vanilla events to run (effectively) hardcoded C# stuff, so... not that i know of
you don't really have control over them at all once they start
aw okay
Not sure what I am doing wrong here. Making a content pack for Advanced Melee Framework. https://smapi.io/json/none/b55f6f91b52e476689fb3e55d38404fa
Trying to make a Dash Attack. Nothing happens during testing.
in case you weren’t aware: https://festivals.pillow.rocks/
Is there anything special that needs to be done for custom animals to show up in SVE's premium barns? Or if the requirement is Deluxe barn it'll show up automatically? 
if their house is Barn then it should work
IIRC SVE does some C# magic that chu had to begrudgingly deal with for Livestock Bazaar to make a premium barn count as having built a deluxe barn
aka just follow what the pig does
Nice, thanks


I need aid with my question to modding Stardew (or maybe it already exists.)
I've completed CC, HOWEVER, I like goals. I like the bundles. I want to do more bundles.
The "Challenging Community Center Bundles" is fantastic for what I want.
Is it possible, to create new junimo notes in a shed or possibly back in the CC, to re-complete with no world effect? Such as the bridge repair. I would want the item reward.
I could very well just make a checker on second monitor and fabricate bundles in a shed and call it my DIY community center. I am aware of this.
I just like the in-game effect of the CC icon expanding and shrinking when hovering over an item.
if you want to add custom bundles with whatever effects you desire look into Unlockable Bundles
many mods use it to add their own goals and progression
(it will not have the icon part but will have a different way to show items needed for UB bundles)
hi! was thinking about how to continue the event even tho specific temp sprites are hardcoded, would it be possible to trigger another event right after that one finishes to work around it?
I just tried to use the debug completecc command to test events that occur after the community center is completed and now the game crashes when I enter the bus stop. I didn't go to sleep and save after using the command, either. this is the log: https://smapi.io/log/480fcd07b52a4cd0b25bfc4af9c30065
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Unix 6.16.4.114, with 5 C# mods and 3 content packs.
is there a specific way you're supposed to use the command to not mess up the game?
can you send your json for the bus stop event you're trying to add?
I think the switchEvent command is what you're looking for
Alr ty :))
Oh, I wasn't adding/testing an event in the bus stop, just walking through
the error is indicating an issue with a gender switch block in a bus stop event
I'm trying to add compatibility with Morris Redeemed and I think that adds a couple bus stop events but the one I added already occurred in that file a day before I tried the command
So the error is likely unrelated to the debug command then?
that would be my assumption
especially seeing as you didnt save. the command wont persist across launches if you never saved
Okay that's good to know. I'll see what happens if I remove Morris Redeemed and go from there
so no errors when it's just morris redeemed, and no errors when it's just across the aisle so I'm guessing it's one of the edits I did to a morris redeemed event, I just have to figure out which one 😅
thank you for the help narrowing it down!
according to the log, Morris Redeemed hasn't even touched Data/Events/BusStop
just Across the Aisle
that's what I was trying to do with the debug command, because morris redeemed doesn't add any until the cc is complete. the odd thing is across the aisle loaded on its own doesn't throw up the error
well without sending any jsons you're on your own here, cuz i assume you're working with a version of Across the Aisle that is not yet on nexus
good point, sorry I'll send it over
https://smapi.io/json/none/2fb1647a442448f3a73fff2a8dda51f4
all the compatibility edits start on line 1066
but none of the lines I'm trying to edit are included until the CC is completed
hass your i18n changed at all/can you send the i18n too?
as an aside, ReplaceDelimited doesnt work like that
yeah I'll send that over
and I figured I may have been using it incorrectly, that's what I was trying to start testing
both ReplaceDelimited and RemoveDelimited will take the delimiter and split whatever string you're editing based on that delimiter. and then it will search the resulting set of values for your search query
so its splitting up the event every space and then searching each section. but if you're splitting it by spaces, you're ofc never going to find "Please help me! [...]" because it'll be split into "Please", "help", and "me!"
https://smapi.io/json/none/13a5f32936034ee9b8d0e0ccb581cfcb
that's the i18n
oh I see
I misunderstood that, I thought that was used to split the value added
Took a 2 day break and I'm ready to get back to it 
i dont see any invalid gender switch blocks which means i think the only other way that error can happen is if somehow the event script is null and being parsed anyway? idk try a patch export on Data/Events/BusStop if you want before fixing the edits you're doing to not use ReplaceDelimited (you'll want to use TargetField or just Fields to edit the specific field within the event)
I just added the entirety of the event preconditions to the end of the event name in the target of the text operations command and now the error isn't occurring
or just fix the compat patches and see if it goes away. shrugs
oh, wait, hindsight 20/20, duh
I'm assuming that was also done incorrectly and trying to maybe load two of the same events?
there is no "26220101" entry in Data/Events/BusStop, you do need those preconditioons bc those are part of the key
so i think by doing a text operation on just "26220101" you were just adding a new entry in Data/Events/BusStop with just that as a key
and then it was getting no value
aka null value
oh, that makes sense
then the game was trying to parse a null event
thank you for your help figuring this out!!
that feels like a very strange thing for Content Patcher to do but i guess thats consistent with its behaviour elsewhere..
the "adding if it doesnt exist" part anyway
it should probably not add it if the resulting value is null though
since thats generally supposed to mean you're removing something with Content Patcher

