#making-mods-general
1 messages · Page 445 of 1
found it, yeah you where right, had CP wrote in at "ContentPackfor" . Thx
if you're making a mod for content patcher, it needs to have CP's id in the ContentPackFor section
I feel like I am seeing this misunderstanding more often, but I am not sure what about the language is making people think that they need to include a copy of the Content Patcher mod itself in their new mod's folder, rather than simply having Content Patcher installed normally to run their contentpack mod.
At this point I feel like it has to be something that could be phrased better somehow
🤔 huh... I've never seen that happen?
I have seen it at least three times now from new modders who think they need to include the Content Patcher folder inside their mod
It's usually the ones who have never done anything at all with modding which makes me think something somewhere is being worded confusingly
the CP doc is very clear about it, even has a picture of the file structure for a basic content pack
@quartz vale you might want to (re)read the CP doc carefully, especially the introduction to make sure everything is clear for you, the better you understand how it works, the easier it'll be to do what you want and fix issues https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md
I say this with a mod old enough to drink legally in the states: You cannot document people out of making a mistake they're really determined to mistake
it will drive you crazy
if you get enough users, you will get a lot of people making the same mistake, and at a point, you just can't document your way out of that hole
i still twitch when I hear the phrase "cross eye bug"
you could probably even say "dont make a copy of content patcher in your own mod" and people will still do that
I had variations of "other mods that change races are not compatible, this includes mods that add eye colors, hair colors, and hair styles" in more than one place, in bold, one was in red...
users always decided whatever hair or eye mod they had was some secret exception
Or they just flat didn't read it
(the number that did read it, mentioned they read it, demonstrated they knew what it said, and then said "So anyway I only use this other hair mod-" was painfully high)
you're right it's not even my mod and it's driving me crazy
Teenage me was not prepared for a mod to go really big and get that kind of user interaction LOL
but I learned that while clarifying documentation is nice if people say it is unclear, having very clear documentation will still get a ton of people not understanding it if you have a big userbase. Trying to clarify your way out of it is a trap
Is it possible to set a map property so that any plants planted on that map would always be watered?
Fair enough, I was just wondering if there was something we could clarify further somewhere, especially with the efforts to try to get more foreign language modmakers to swap to CP over XNB mods
I tend to assume that it's not willful obstinance that causes new mod makers to disregard instructions
how would I go about checking to see if a tile is pure black/out of bounds like the space around interiors?
I don't think it's why any of my users did either. It's a failure of reading comprehension, not reading thoroughly/skimming, or just innocently missing the instruction.
But none of those is really a problem that can be fixed on your end without seeing someone making the mistake and pointing it out
Non-english modmakers would probably best be helped by instructions in their own language, but that's also a hard thing to do
language barrier clarity is a real pain. shakes fist at the tower of Babel
I genuinely think showing the intended file structure is as clear as you can get.
the simplest way is to just check if the background tile there is null, though that may not be 100% reliable
I think you can only say with 100% confidence when the position on screen is truly not within the map tmx
Quick issue. SMAPI log says it can't read my NPCs dialogue file, even though the layout is identical with one where it works, I hope you guys can help me find the error 🥺
Log: https://smapi.io/log/431d85da651349eea3271b8778c514c8
content.json: https://smapi.io/json/none/fb60620091264be1a6f5e0c34a9dda1a
dialogue-nau.json: https://smapi.io/json/none/af3363a8894a4aab93875c6b8adc0357
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 4 C# mods and 1 content packs.
that error looks like it means you have closing brackets }} without a corresponding pair of opening brackets but i can't tell where
Line 38 of the dialogue-nau
good eye
Line 38 is empty
In the validator link
also in general having portrait commands at the beginning of lines can cause errors. are you using miss coriel's NPC creator?
which does not have comments or unnecessary newlines
A portrait command can go anywhere in the dialogue iirc
No, I've done them myself so far and it hasn't thrown any issues yet
You just can't have two commands without #$b# or #$e# inbetween
You were right though, I must have forgotten to delete it when I swapped from a randomized dialogue. Thank you so much 😭
why do you need two portrait commands without a break or end in between?
I don't need it, but it could make a dialogue feel more alive. I only had an idea for it once, but since it didn't work I just dropped the idea
yeah as far as i know the game can't parse having more than one expression at a time. that's why dialogue is frequently broken up using $b or $e, to allow for changing expressions like that
as well as just timing in general
i think irocendar's portrait mod thing theyre working on will help with that in the future
i think. dont quote me on that, i might be misremembering its intention
the animation one? i could see that yeah
Oh, either way it could be really cool to follow
Thanks tough you lovely ppl! Now I can get back to work ❤️
the railroad is a strange place
trains keep moving and tossing items while menus are up, but not while tabbed-out. and trains can just run right through events? not sure if it's just debug ebi shenanigans
the trains are invisible but the steam puffs aren't
huh that is weird
German engineering
Isn't gonna let a pause menu make them late
train has unique rendering (or at least update) code but the steam is just TAS generation, and events pretty much treat those normally
and yeah, train updates just happen in updateEvenIfFarmerIsntHere & don't seem to care about pausing, just the game's time counter
wonder if invisible trains tooting and steaming through events is a known vanilla issue 
not that there's very many vanilla events on the railroad
The stuff with unlocking the witch hut happens there I guess?
yea, also high up enough that u won't be bothered by train
well it'll be visible from wherever you are, you just won't get run over by an invisible train
or rather everything but the train will be visible
if nothing else, there's code to make it not hit the player during events 
but yeah, for w/e reason Railroad.draw just says "if event then no train"
everything else pretty much keeps happening
well i'm happy that it doesn't draw the train in events but the fact you still get the whistle and steam is amusing
and coal, wood, etc
for what reason does the temporaryAnimatedSprite event command only take an int for scale when the actual scale field is a float
all of tilesheets/animations is unusable since they're drawn at 4x scale in both the spritesheet and again in the temp sprite
i'm going to speak to the authorities about this
as usual, i expect the reason is "do whatever is pragmatic in the moment, it's good enough to ship, never revisit the decision" which honestly i respect /lh
i understand it but i do not respect it 🙂↕️
hellooo anyone know where the relationship label term things are stored? I wanna change 'roommate' to 'companion' bc it's cuter lol
most are in StringsFromCSFiles, specifically with the keys SocialPage_Relationship_
it's easy enough with a search-in-files in your text editor of choice, they all have it. use Ctrl+Shift+F
grep my beloved
surprisingly you won't get any results for roommate, but housemate appears instead if you search for the key above
hm, in my files the key is just "Housemate"
did it change in one of the small updates?
oh, okay! sorry i missed your response at first lol, my volume was off
..wait what's grep??
im curious now-
it's a tool that allows you to search through an entire directory for a specific text string or regex match
oooooh
my decompile is definitely from 1.6 but might be one of the slightly older 1.6 versions
general-purpose command-line searching program, yeah. best feature is identical to "find in files" but it's its own thing and doesn't have to be built in to your text editor
tysm 
StringsFromCSFiles is like the cursors of game text
oh yeah, I tried looking for 'roommate' in there earlier but couldn't find it lol
i was like 'wait where else would it be..??'
TIL the ProfileMenu (detailed view of single character) loads the relationship status string (e.g. (Wife)) and just strips off the parentheses lol
there are, on the big list
i mean in the menu lol
hi again lol, uhh are there any model events you'd recommend looking at to understand how to use question forks? tried using the one with penny in forest with the kids where you talk about farming, but it looks to complex-
question forks are unfortunately a bit complex
i hear many people favor quickQuestion
you could try looking for an event using that
quickQuestion can't do everything tho, so it does depend on your use case
Yes my advice is to pretend question forks don't exist and use quickQuestion instead
gotcha, i just want it to be a question on whether or not to trigger the event
in general i also recommend quickQuestion/switchEvent over question fork
Anything question fork can do quickQuestion can do better 🎶
oh lacey has this, let me pull it up
i love that-
what about the things that Elizabeth implied it can't do
She didn't technically say that question fork could do them either /lh
it's supposed to be an engagement event for krobus that triggers when you enter the sewers with a void pendant (and other prerequisites too lol)
https://github.com/ichortower/HatMouseLacey/blob/main/CP/data/heart-events.json#L651 lacey's 14-heart event has a little intro where she asks whether you want to do the event (time passes if you do it, so there's an out if you're not ready). there's some mail flag stuff and a second version of the intro for if you retrigger it
Serious answer is that the only thing that I know of that question fork can do that QQ can't is set the special event variable but I don't know if there's any actual use for the variable that you cannot achieve via other methods using QQ
i love how the official position is seemingly that question fork (usually) ✨ doesn't exist✨
tyy :))
I make use of switchEvent inside QQ routes so I can fork to whatever I please
oooh i'll do that then!
don't look too closely, but this advice is to become obsolete when goto/choose become available, the mythical 14th standard that will handle everyone's use cases /lh
warning about QQ/switch event that i ran into last night: dialogue immediately after the switch event gets caught in a loop, so you probably need a pause 1 as the first command if dialogue is the first thing
i’ve never run into that with fork
gotcha.. unsure of what that means rn bc i'm too tired to code properly but I'll screenshot that and it'll prob make sense tomorrow! tyyy 
just cursed Event Loop Things™
if you wanted to switch event and then have the command after switching be speak: Don’t
alr ty :))
there’s a note in QQ documentation on the wiki about dialogue looping but it doesn’t mention this (niche) edge case, just using it at the start of an event
i thought about adding a warning but figured it was too niche
¯_(ツ)_/¯ i also usually ask in here before adding things to the wiki because i still feel unqualified lol
you don't need to be 'good enough' to edit the wiki, but your information has to be 
so long as it's factual, relevant, concise, and useful then it's fair
now if only someone were relevant & factual enough to create a Modding:Hairstyles page with the migration page information
yeah, like i don’t know why it happens or if it happens every time even, so not much information to offer
(edits to pages in the Modding: namespace are much less subject to reversal than vanilla pages, since the wiki vandalism problem is much, much smaller there)
we're like the hidden basement of the wiki
aah why does that work here
at least delete my shame 
Does anyone know of a mod that allows 'giving gifts' during festivals?
you'd probably have better luck asking in #modded-stardew
Yeah I ran into that too when I was testing QQ. I'd want to add the warning to the switchEvent command rather than QQ but first I need to test if it happens if you use switchEvent without a QQ.
i'm eventing right now, i could play with it
MAYBE progress
I think I made the object AT LEAST and it has no errors
now I need the manifest and everything but at least the object is there
welp
opens up the mod, starts rewriting it, angrish
pro tip: remember to update the mail to point to the new objects
ts is way too hard bro
I give up
do you have questions? maybe we can help
I'm not built for ts twin
I have to make like a content.json thing I don't even know what to do tbh
and since the wiki doesn't really have a specific "making new object" page idk what to do
i don't know what ts twin is but there are templates and guides for making content.json
content.json just refers to a file in your mod folder that will contain all of your patches (the code in between brackets that you write to do stuff)
there may be a tutorial for adding an object on the modding wiki, let me see
I saw people using json assets or something like that to make objects but idk if I also need to make a content.json for that
you don't need to use json assets, as its functionality has been replaced by content patcher
i couldn't find a tutorial, but i can walk you through it. it should be easy
first, i recommend downloading notepad++, which is a program to edit files in which works much better than regular notepad
I'm using that if I wasn't using notepad++ I'd be more cooked than I am rn
haha good, just wanted to make sure!
oh no!
I'm wrapping it up
once you recover or redo your changes, you can just copy paste all of those patches into your content.json
that's it?
a mod technically only needs two files: manifest.json and content.json. the choice to split your patches into multiple files and use Include is a personal one that many people do for organization, but if you're just adding one object it's probably not necessary at the moment
(a Content Patcher mod* specifically)
yes thank you
I am tempted to write notes somewhere that say "remember that conditional patches need to be in the upper level of the action, and not in the text operations section"
I'm never doing this again but I'm making this only dumb object to prove I can do ts
I find it most useful tto do content patcher mod stuff so you can fix older mods or stuff yourself. >_>
(that's why I'm doing it.)
(or I could learn how to sprite, but I prefer goals that won't swallow up very limited modding time.)
!json it's absolutely normal to get errors when making a mod for the first time. it will help us point them out if you share your code using the link governor sent
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.
just content.json, we don't need your manifest
I wonder if I should consider merging the mfm stuff into the content patcher 🤔
a lot of mods still appear to use Mail Framework Mod though.. or do they. 🤔
MFM isnt deprecated
if you dont need its extra features then it doesnt matter but it doesnt hurt to leave them as it still gets support
yeah, this is more if I want more experience working with Content Patcher
some do, but i'd likely just use CP with the new base game features for handling mail.
of course if you've already got a working solution, no sense in breaking it
I actually just searched my browsers history search and I found my old thing without errors
I was using that json validating stuff
Well, the thing is, I'm not sure it's working :S
great!
part of why I'm updating this to latest CP is so I can be sure the IDs and all match.
(the other part is also just, I need schema experience.)
using CP for mail is also a good introduction to triggers and trigger-actions if you haven't already worked with them
it didn't work obviously
unfortunately a good portion of modding is fixing tiny errors until things work the way you want them to
😭💔
don't get discouraged, it happens to literally all of us
part of the process 
can't parse semantic version from invalid value "2..0" should be formatted like 1.2 1.2.20, or 1.2.20-beta
WHAT does ts mean
you have an extra .
but in the text it's 2.8.0
idk why it doesn't show the 8
can we see your json
you are likely confusing the Format field in the content.json with your UniqueID in your manifest
the latter being what its complaining about
and by uniqueID i mean version
mind you my object does NOTHING yet
it's just there
Fuck it I'll play normally until I sleep and wake up again it's 3 am anyways
i once wrote json so bad that people in here thought it was AI slop
anyway, don't feel embarrassed, you're learning
Ok twin

YOU KNOW WHAT
something easier
how can I change a sprite
I change the ring that glows and irradiates light
with a lantern
boom easy
you're going to want to write a patch that uses the action EditImage
there's an example at the bottom of that page
finally an example 😭😭😭
many wiki pages have examples, but you can also find mods (that have been updated for 1.6) that do something similar to whatever you're doing and copy how they do it
"RayAmier.MyOldFriends.LimeMacaron.name": "Lime Macaron",
"RayAmier.MyOldFriends.LimeMacaron.desc": "诺亚制作的青柠味马卡龙。口感轻盈细腻,味道刚好。",
sometimes i18n is weird
i don't know enough chinese to guess what that translation should be
Are you trying to translate to English?
no
there's an EN and ZN translation
i'm collating it into one i18n
(well, two i18n, but you know what i mean)
i don't know why since I can't really upload this to Nexus but
i feel I should do it properly. c.c
The translation doesn’t look too weird to me, but I’m not familiar with all the Chinese words
It says something like “special product of (bakery name?), lime (I presume) flavored macarons (macaron is a loan word transliterated). Something about how the mouthfeel and flavor are great (using adjectives I’m not super familiar with).”
That makes sense, since this is the EN translation:
"RayAmier.MyOldFriends.LimeMacaron.name": "Lime Macaron",
"RayAmier.MyOldFriends.LimeMacaron.desc": "Lime-flavored macarons made by Noah. Light and delicate in texture, with a perfect taste.",
Yes, I would have guessed “delicate texture with a perfectly balanced taste”, so that makes sense to me too
yeah
I guess in CN you're just likely to see english writing there or something
because everything else in the ZH version is what I'd expect
noah's pretty darn proud of these macarons huh
He best be: "Date": "26 winter Y2"
and I did figure out why it broke
I forgot to update the MFM file with new mod ids
{
"Type": "Object",
"Name": "LimeMacaron",
"Stack": 2,
"Quality": 3
}
this would never work lol
ah yes the mysterious quality between gold and iridium
..
hah I never noticed that
adds it to the to-fix list
i had to fix a few other issues with it, aleady
unless MFM uses 3 to mean iridium, then the joke's on me
"Quality": 2, // The quality value of the item to be delivered. Used only for Objects. 0 = none, 1 = silver, 2 = gold, 4 = iridium. Default is 0;it does not
is there a way to retroactively create a branch in github? aka i should have done it months ago so i could keep bugfixes separate from new content but didn't. i want to download my most recent mod version from nexus, then compare it to my current files and choose what to merge
i never bother to remember the cli commands since i'm glued to the clients usually
i mostly do it on the web or in github desktop anyway
i'd expect you can just git checkout with the commit hash and then git branch a new one
Remember that time when I thought about that thing, but totally didn’t do it?Me too!
ooh
wait hold on i'm crossing wires here
i assume this is "I have made like twenty-five commits since the Nexus version, and want to create a new branch at that version and then look at the commits since then."
it is, but i don't have a commit on the date i uploaded 1.2.3. i've been working on 1.3.0 for two months since then, and never merged the changes from 1.2.4 and 1.2.5 with the changes i've made for 1.3.0
i do have a zip file of each though
uh.
if you want to regress your main branch and keep your current progress as a new branch, git branch a new branch first, ensure you're checked into your main branch, then git reset back to your milestone
that's.. a lot harder.
i guess you could find a commit before 1.2.3
put your files on the branch
then comp- hm
🤔
that might cause some .. fun bits
can you share what your commit history/tree looks like in github desktop?
if it's linear it might not be an issue
like this?
yeah i've literally only ever used main
i tried a branch once when i first started and didn't see the point, then 1.3.0 turned enormous and i went ah i should have used a branch
the changes i made for 1.2.4 and 1.2.5 never made it onto this machine because they were quick fixes done with my laptop
however i don't remember what they were and don't want to re-break things
more like this (using Fork, not Github Desktop)
my experience with asking "can i do [x] with git?" is usually "technically yes, but without pain, no" so i just stick to the very basics and ignore anything else
Ah, I didn’t realize that was the mistake.
青柠=lime, 味=flavor, 马卡龙=macaron, so depending on the format of the other flavors, 青柠马卡龙 or 青柠味马卡龙
if i wanted to rollback my feature/improvements branch and keep the changes on a separate branch, i'd just make a new branch at my current working head (i'm checked into feature/improvements already), check back into feature/improvements if i'd checked into the new branch at all, and then git reset to an earlier commit
it's very simple when it's linear
https://github.com/nbeymer99/DeadBoyDetectives/network i think this is it? when you over the dots they say the name of the commit (i named them by date. not. super helpful.)
if there were another software that could do side by side comparison/selective merging for this i would also accept that
i've never seen this page before in my life. very impressive
i had to google how to view history tree
Hey there, a user/tester of FF is having issues with their Chinese localization: the characters show up as *** in the game, and when I open the file they sent me, I get a jumbled mess of special chars instead of Chinese, I'm guessing it is an encoding issue, how does one fix this?
well it would still be doing it with git, but i dont use any GUI-based git stuff besides the stuff embedded in my IDE, so.... 
(aka big shrug noises. there might be. if there is i dont know it)
no worries
that is almost certainly an encoding issue. How are you handling the localization?
i'm gonna try making a branch where i am now, then going back to pre-1.2.3 and dropping 1.2.4 files in to overwrite
IContentPack.Translation.Get(translation_key)
hm. So, i18n jsons, right?
incidentally you'd want to lookup the manual for git reset before using it since it has several highly destructive options
Can you do me a favor, and make sure the file is in utf-8?
chiming in here: it can rewrite the commit author
so maybe this isn't something to do at 3am then you're saying
3am is the exact wrong time of day for git
(I think that was git. It's one of the g it tools, lol. It was in the LKML.)
yeah, don't approach git tired
when you've created a new branch at the current working head your changes will be preserved on that branch, and you won't be resetting your remote changes either until/unless you force-push them, but you can absolutely irreversibly destroy your local changes with git reset
and by local changes i mean the entire change history, not just uncommitted changes
everything
no matter what i'm zipping the file as is right now
just put that zip somewhere outside of the git directory lol
it would still suck to lose past versions though
(make sure you put the zip in a different cooker)
yep lmao
I meant folder but auto correct saw blueberry here
annoyingly enough the way i have it set up right now is my git folder is INSIDE my mod folder so i always have to remember to remove it when zipping to upload
git can and will consider your backup file to be a local change and delete that as well if it's in the repo folder
yeah no worries all my zips are one level up in [CP] DBDA
huh... I somehow can't figure out how to do that? Everything that's supposed to give me the encoding tells me "yup, it's json". let me send the file
surprisingly Notepad will tell you readily what the encoding is
...yeah something's not right
I have ANSI encoding
have them resave as UTF-8 (or you, whoever's doing it)
finally, a use for it
i use notepad a lot actually now it has markdown and tabs
linux
godspeed
file -i /path/to/file.txt is what you want
without syntax highlighting and autoformatting notepad is useless to me
for coding I use notepad++ XD
even now i'd rather use sublime for notepad tasks. it's a little overkill, but not enough to care
what text editor do you have?
(iso-8859-1 is truly ancient)
I'm guessing I'd have to save with utf-8 from an editor that shows the chinese characters, right?
gedit
try save-as, and setting character coding to Unicode(UTF-8)
hold on, I think I can do it with vscode, it has an "open with encoding" option
(it should have autodetected that.)
what the hell?! This is not even correct, it still shows incorrect characters when using it to open the file with VSCode...

the person having this issue is using VS, is there an encoding option in VS so I can tell them to change it?
i'm just glad we found something more frustrating than git to look at
found the correct encoding: GBK
.. uh
???
(even mini jukebox is confused)
(GB abbreviates Guójiā Biāozhǔn, which means national standard in Chinese, while K stands for Extension (扩展 kuòzhǎn). GBK not only extended the old standard GB 2312 with Traditional Chinese characters, but also with Chinese characters that were simplified after the establishment of GB 2312 in 1981. With the arrival of GBK, certain names with characters formerly unrepresentable, like the 镕 (róng) character in former Chinese Premier Zhu Rongji's name, are now representable.[2] ) from wiki
but the thing is, it's not 1:1 to UTF-8
(we're connected from brain<->laptop via a very very very long ethernet cable for debugging reasons)
.. That said, I guess it's fine if the person on the other end expects GBK.
but I'd generally recommend sticking to UTF-8 unless you really need to change it
damn, gedit can't even display the UTF-8 encoded file properly...
that is.. weird.
UTF-16 is fine though
Oh.
You might be stuck with BGK or UTF-16 then.
... is there a way to load a lot of files fast in Content Patcher?
I seem to remember {{TargetWithoutPath}} but
I found it — it was an editor setting issue. The file was being saved as UTF-8 with signature, and unchecking that option fixed it.
They fixed it themselves, so all is good
also the game was able to read the file re-encoded in utf-8 so no big deal either way
ah
I did a lot with {{TargetWithoutPath}} and {{TargetPathOnly}}
or {{target}} if you have your files formatted the exact same as vanilla
So this Should work?
{
"LogName": "Adding Mail Backgrounds",
"Action": "Load",
"Target": "Mods/{{ModId}}/{TargetWithoutPath}}",
"FromFile": "assets/{{TargetWithoutPath}}.png"
},
Uh no you need a target
You can set multiple targets though
You you do need a target
was so afraid of that
why did I you twice
starts to copy paste it >_>
"LogName": "Bill Portraits and Characters",
"Action": "Load",
"Target": "Portraits/{{ModID}}_SheriffBill,Characters/{{ModID}}_SheriffBill,Portraits/{{ModID}}_SheriffBill_Winter,Characters/{{ModID}}_SheriffBill_Winter,Portraits/{{ModID}}_SheriffBill_Beach,Characters/{{ModID}}_SheriffBill_Beach,Portraits/{{ModID}}_SheriffBill_SpiritsEve,Characters/{{ModID}}_SheriffBill_SpiritsEve,Portraits/{{ModID}}_SheriffBill_Pride,Characters/{{ModID}}_SheriffBill_Pride",
"FromFile": "Assets/NPCs/{{TargetPathOnly}}/{{TargetWithoutPath}}.png"
},```
this is how I used TargetPathOnly and TargetWithoutPath
but you do have to file in all those targets
Makes half of it faster anyway
also possible to use local tokens now, it makes it a tiny bit less repetitive
Ah-ha, so.:
{
"LogName": "Adding Mail Backgrounds",
"Action": "Load",
"Target": "Mods/{{ModId}}/backgroundA,Mods/{{ModId}}/backgroundB, Mods/{{ModId}}/backgroundE, Mods/{{ModId}}/backgroundF, Mods/{{ModId}}/backgroundH, Mods/{{ModId}}/backgroundL, Mods/{{ModId}}/backgroundM, Mods/{{ModId}}/backgroundN, Mods/{{ModId}}/backgroundS, Mods/{{ModId}}/backgroundY, Mods/{{ModId}}/backgroundZ",
"FromFile": "assets/{{TargetWithoutPath}}.png"
},
(i applaud the original author for every person having their own mail, but..)
Yuh
Local tokens are a thing I have not touched
Im using localtokens for my machines
wew, making mail i18n compatible is fun
nose in Local Token documentation ...huh. those coulda made stamp-making faster if I knew what they were at the time
it looks like you just put the mail string in there complete with formatting notes
Yeah basically
incidentally, if nothing else:
"@!^^Hey! How do you feel about your first day in Pelican Town? Did you miss me? Haha, don't worry, I will write to you from time to time and won't let you 'isolate from the world'.^The air in the countryside should be very fresh, but don't forget that your body is the capital of revolution. Don't be busy farming all day, eat when you need to, and rest when you need to!^Come on, stay energetic! Remember to write me back!^^Ethan",
I don't know how to make this flow better, and think it's perfect as it is, lol
yeah, LocalTokens would simplify this a lot by only having to specify the list of letters that would go at the end of the target
.. the tutorial and example do not make that immediately clear but I could see how that'd be useful
I'm still working on writing GSQ's anyway, lol
For example, you can have a template.json file with:
{
"Changes":[
{
"LogName": "Adding Mail Backgrounds",
"Action": "Load",
"Target": "Mods/{{ModId}}/background{{my_local_token}}",
"FromFile": "assets/{{TargetWithoutPath}}.png"
},
]
}
And in your content.json have this in the Changes:
{
"Action": "Include",
"FromFile": "template.json",
"LocalTokens": {"my_local_token":"A"}
},
{
"Action": "Include",
"FromFile": "template.json",
"LocalTokens": {"my_local_token":"B"}
},
{
"Action": "Include",
"FromFile": "template.json",
"LocalTokens": {"my_local_token":"E"}
},
{
"Action": "Include",
"FromFile": "template.json",
"LocalTokens": {"my_local_token":"F"}
},
// etc...
ofc, this would only be usefull if you have other stuff to put in template.json
i stand by the opinion it would be elegant and beloved if we could provide a list for localtokens
absolutely
Anyway, today, in cursed? things:
"Trigger": "DayStarted",
"Condition": "SEASON Spring, DAY_OF_MONTH 1 YEAR 1",
look. a point up emoji. it's unanimous
i don't think thisis going to work the way I ant, and I'm debating just going by
DAYS_PLAYED 1
Do you even have to have a condition for a mail you get on day 1?
oh hell i figured out why this dang CT was triggering early
I had it triggered by the MINE landslide being cleared not the RAILROAD one
Joja: Don't Cause Landslides challenge, 0%
@ivory plume hey, any chance this could be merged? people are complaining about Stardrop complaining that it's incompatible https://github.com/Pathoschild/SmapiCompatibilityList/pull/77
i can't even begin to understand how events work
Well
just wanted a little peep at those new 1.6.16 event changes, and now ruin
so on trigger actions - on DayEnding, when does the GSQ run?
when the day's ticked over, or before?
that is:
"{{ModId}}.MyoldfriendsE4": {
"Id": "{{ModId}}.MyoldfriendsE4",
"Trigger": "DayEnding",
"Condition": "SEASON Fall, DAY_OF_MONTH 3 YEAR 1",
"Actions": [
"AddMail Current {{ModId}}.MyoldfriendsE4",
]
}
if I want it to be added on 4 Fall Y1, this should work, right?
is it possible to force weather on a temporary map during an event
doesn't seem to respect the data/locationcontexts entry (unless)
edit: location was not outdoors. i lose my ambientlight, but i gain my snow
edit: ambientlight event command exists. i gain.
hmm, i know spacecore has commands for weather, no idea if temp maps are special on that regard
it has setRaining, but i was rather hoping for snow
the content modders yearn for the lists and foreaches
😔
quick question, i came back after a long while to my map i want to do a map patch on once a season for some merchants. was replacing a part of the map or the whole map more taxing or doesnt it really matter?
been so long i dont remember ...
i mean if your map patch is only on part of the map then you dont need to replace the whole thing
yeah im just wondering if there was a difference in how taxing it is since map patches cause hiccups, dont they
just wanna know whats the smarter move
personally i also dont think theres a reason to worry about any relative time needed when the benefit of patching a limited area for a limited map patch would be greatly more relevant (if you or anyone else ever need to do other map patches there later)
I dont think map patches individually cause hiccups, a larger amount of them might, but at that point if you're doing enough yourself to cause hiccups I'd reevaluate your plans entirely
If I remember correctly, SinZ said to patch the smallest amount possible. If you are patching small parts of the map all over the place to the point where most of the map has been changed in lots of little patches, switch to doing one patch of the entire map instead.
I’d imagine that technically replacing the entire map is less taxing because the new composite map doesn’t need to be calculated (which is why sinz would recommend making patches as small as possible), but for the reasons everyone said you should do a map patch
Hm, I see. I havent really done much of em(mostly just did my own maps) but i do remember someone telling me for my FoodGal mod where i replace a tiny area for a closed shop sprite it would cause a big lag at that time so I was like 
it might have been because you were editing it presumably ontimechange?
hmmm, I mightve....I am not really that knowledgeable in what right way to use em
just try to make it so the edit doesn’t apply unnecessarily, so basically make sure to use the lowest possible update rate for what you need and have a suitable condition. it’s more relevant if you’re editing something like pointers tbh
just popping in to ask: portraiture can't handle shop merchant portraits can it. can spacecore/scale up 2 handle it?
It also matters which map you're editing. If you're editing a map that lots of other mods will edit (like Forest), every time one patch runs it makes all the other mods' patches run too. So if you were patching a popular map during the day (as opposed to overnight) then your patch would've been also re-running all the others that any user might have.
portraiture doesn’t, but something else might soon 👀
👀 wow i wonder what can
oh yeah that makes sense. Maybe whenever I get back to that I will just get rid of the closed sprite all-together. I just wish I could figure out how closed messages in shops work cuz to this day I just cant get them to work(when i tried with my mermaid shops i jsut killed the entire shop instead lol)
They are very confusing but a few of us know how to use them so you can always get help if you need to :)
I just need to finish my menu and do my basic optimisation… and then there will be an alpha release…
yeah i might try again after i figure out this map patch
Is there a way to expand the sprite sheet to the right using "EditImage"? I'm trying to overlay a pan animation with level 5, but the game is coded so that the pan animation with level 5 should move to the right of the iridium, but since there's nothing there, a red rectangle appears (the nearest pixels of the hand). I can use "Load", but that might conflict with other mods that edit character structure.
(X:0, Y:0, Width:336, Height:672) extends past the right edge of the image (Width:288), which isn't allowed. Patches can only extend the tilesheet downwards.
the error message tells you exactly: you can't extend the tilesheet to the side
i dont know if there's a way around that, tbh
maybe it's possible with C#?
Maybe, but I make CP mods
it's a game limit, so idk if you can really do it with just CP. trying to extend an image to the sides will ruin all the sprite indexes
But if I use Load, everything works as intended.
if you use Load, yeah it will conflict with other mods that edit the character, but if those mods get loaded after yours, nothing should break
(but those other mods hopefully use editimage so that there arent conflicts with two mods trying to load the same asset)
Is there a way to attach a condition to EditImage? For example, "Condition": "PLAYER_HAS_ITEM Current TEST_ITEM",
If you hold the pan in your hand, you would apply a patch
You won't be able to do that, no
Even if there was a token for it, the performance cost for checking it so frequently would be high
the best we have is just checking if the player has an item in their inventory
(like jodi's floor bass heart event)
yeah, highest update rate is ontimechange which would still not be enough for that
so i'm doing a sequence jump/speed/advancedmove/showframe, and about 50% of the time the showframe applies to the actor while they're moving, and 50% of the time they use their default moving sprite. any suggestions for a guaranteed showframe 📝
nondeterministic events 
surprise replayability value 🥳
Not sure if this is the right place to ask this, but I was curious to know if any mod makers prior to making mods had any artistic abilities? I want to delve into the world of mod making, but I’m not an artist at all.. I’ve recoloured a few pieces from other mods for my personal use but nothing that was super detailed. Any advice would be appreciated! 😊
there’s no way to become good at something without doing it while you’re still bad at it
i cant really give much advice without knowing what the mod is for 🤔 or what you want it to look like
i'd spent quite a lot of time doodling and drawing really bad pixel pictures as a kid years before picking up sdv and actually working to improve my sprites, but i wasn't an artist and i'm still not
give it a try and have fun with it, and for goodness' sake turn off the pixel grid and use a nice clear colourful canvas
I’m just wanting to make craftables/recolours of other mods! Nothing world changing or from scratch. 😅
Such great advice! Thank you! 😊
I refuse to do pixel art without the pixel grid 
you are an artiste, not a structural engineer. we turn off the grid 🤝
nu
😔 you can pry the grid from my cold dead hands
wow, the one thing i dont know how to do.... (im kidding, there's way more i dont know how to do lol)
You’re not alone there! Lol.
i support learning via doing 👍 and if you get confused or stuck along the way we're all here to help
hm, why my map patch aint patching....
I possibly did the When wrong, I believe, can someone check if I did thinks right cuz idk waht I am doing
{
"Action": "EditMap",
"Target": "Maps/{{ModID}}_LostIsland_PointMelodia",
"FromFile": "assets/Maps/{{ModID}}_LostIsland_PointMelodia.tmx",
"FromArea": { "X": 18, "Y": 34, "Width": 31, "Height": 15 },
"ToArea": { "X": 18, "Y": 34, "Width": 31, "Height": 15 },
"When": {
"Day": "10"
}
},```
🤔 day: 10
yeah idk i tried looking for some explanation and just had stuff like time and year to go off
I jsut want em to appear once a season
cuz all is said was "The day of month. Possible values: any integer from 1 through 28."
is it working without the when?
oops-
the very first line in tryToAddCritters() is if (Game1.currentEvent != null) return
and yet here he is
the log aint saying shit either
only unrelated things because i took out some mods and stuff
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 61 C# mods and 20 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
wait a moment...i mightve found the issue, gonna check real quick
ok so i guess i have several issues lol the first one was me using the from FromFile but now I got the issue that it tells me
[Content Patcher] Can't apply map patch "(CP) The Fishmonger - Whispers of the Ocean's Heart > Includes (from Data/Locations.json) > EditMap Maps/{{ModID}}_LostIsland_PointMelodia" to Maps/VoidWitchCult.CP.TheFishmongerNPC_LostIsland_PointMelodia: map patch couldn't be applied: source area (X:18, Y:35, Width:30, Height:15) extends past the edges of the source map, which isn't allowed.
i think I spontaneously lost the ability to count
is that your source map or your target map?
thats the one i wanna patch over the original(i only have it uncut in the image to make sure i really picked the right X and Y)
oh my lord
i got it to work
yet again I was stupid, sigh
a win is a win!
I'm having some issues with Furniture placed on the map with an older version of FF not having modData that was added in a newer version, and I can't figure out if there's a way to initialize this old Furniture with the new modData fields correctly,
I'm adding these fields in a Furniture.GetFurnitureInstance postfix, but it seems that even this isn't called on Furniture that's already placed.
I feel like I always follow the same path in modding rinse and repeat:
- Feel smart because things somehow work
- Things don't work and end up being something silly
- Feel completely stupid
- ????
- Continue on.
maybe there's a way to go through all placed Furniture in all maps in the save on save loaded?
it would be pretty bad to have to do it on location change
ok, that's pretty funny: somehow, Furniture.draw is called once before my Furniture.GetFurnitureInstance postfix finishes setting the modData when the save loads, so there's stuff missing.
You can try doing stuff in a specific load stage
Though honestly I would just tell ppl to spawn a new furniture lol
Done! (I update that repo at the end of each month, but feel free to ping me for any other PRs that you need merged sooner.)
Hello!
I have an problem with event modding. The problem is that the camera does not stop moving when i change scenes.
Is this command correct? /globalFadeToClear/viewport 24 17 true|clamp true|/pause 2/
:))
Hello! Can I have a pufferfish hug? (saw the emoji), love the work you do!!
can i ask what the working patch ended up looking like?
you mean the code?
viewport 24 17 true|clamp true|
'm not sure you should literally have the true|clamp true| part, it may be something like true true?
{
"Action": "EditMap",
"Target": "Maps/{{ModID}}_LostIsland_PointMelodia",
"FromFile": "assets/Maps/{{ModID}}_LostIsland_PointMelodia_MerchantDay.tmx",
"FromArea": { "X": 0, "Y": 0, "Width": 32, "Height": 15 },
"ToArea": { "X": 18, "Y": 35, "Width": 32, "Height": 15 },
"When": {
"Day": "10"
}
},```
i'm not sure it's related, i also don't know if pause 2 would be valid (i thought it would need to be a min of 100)
i forgot i had to put 0,0 for the FromArea since I cut it down to size lol
after also using the wrong file name
thank you! trying to figure out map patching myself, so every example helps.
yippie, i also found out how to do a closed shop message
Thanks! Best I can do is a pufferchick hug. 
Nope. It's a bit confusing, but [clamp [true|unfreeze]] is a syntax which represents the possible arguments. In this case it means "optional argument with the text clamp, followed by an optional argument which can be true or unfreeze.
So the correct syntax would be something like viewport 24 17 clamp true, depending on what specifically you want the command to do.
So, I had a question from last night: if I want a piece of mail to send immediately, do I just add a trigger action for it with no conditions?
The addmail trigger action has argument that control how sending works
yes, no condition, and if you want it received same day there's argument for that
But yes if u want ppl to just get mail on mod install, Data/TriggerAction entry no Condition
well, i think it'd be better than a condition for "is it 1 Spring Y1" >_>
i think there's a days played thing?
I wanted to make it generally compatible with variable start date, but I gave up on that after seeing how it works lol
pauses can be (at least) as small as 1! i’m not sure if pause 0 or pause negative number would throw an error (i suspect probably lol) but i know 1 works
thanks!
Is there a way to expose i18n from CP to C#? I might just be missing it. It kinda seems like I need an i18n folder for both locations.
they are two separate mods as far as SMAPI is concerned, so you can either load your i18n on the CP side into an asset the C# side can read or you can use reflection
(reflection meaning, reflect into SMAPIs internals to be able to access the TranslationHelper of your CP component)
Just took a look at the game code for the pause command to see what would happen for values <= 0, and the answer is: nothing
quite literally, the pause command itself does not advance the event to the next command nor does it do a sanity check on the pause time to check if it's > 0, it's updating the "pauseTime" that advances the event command, but all checks that call for updating the pause time check for a value > 0, meaning the pause time will never update and the event won't tick over to the next command
quick and easy way to break your event then lmao
send your players straight to the endless void with this one cheap trick
😔 surely just setting pause 1/ is the simpler option... it's measured in milliseconds too, who would even notice
yeah that's why pause 1 is sometimes used at the start of events, it's unnoticeable but makes it so that you don't get caught in a loop
oh yeah speaking of events
if my event starts out dark for some reason then brightens once i click past a dialogue option
is it because i didnt buffer it with a pause command
most likely yeah
i usually pause for 1000 or 2000 before any commands i want the player to see
i always have to tweak my pause commands because i always undershoot how long the pause needs to be inbetween sounds and stuff
cuz otherwise i get extremely fast clanking noises
yeah it took me a bit to understand that the rate at which the game executes the commands is unbelievably fast (discounting ones like move, speak, faceDirection)
lmao i tried to use splash a bunch of times in a row while a character stirred something but it just ended up BLOOPBLOOPBLOOP
😭
yeah once i forgot to put a pause between running and jumping and the sprite just went BOIIIIINGGGGG across the screen-
i unironically love events they're so silly and fascinating
hmm who was it again with the funny sam skateboard shenanigans....
it's fun when they turn out good but omggg the debugging-
that was quite amusing
lol i almost find it meditative to play the event over and over again fixing one thing at a time. however when i can't figure something out it IS infuriating so win-lose
it's like pissy-yet-meditative trance or something
Hi, can I ask about a mod here? I have a problem with the "Instant Buildings" mod (https://www.nexusmods.com/stardewvalley/mods/2070). When I start the game, the mod doesn’t work properly. I checked the files inside the mod folder, and there’s no config.json file (I already launched the game). Can someone guide me on how to make this mod work? Also, if I just copy the "Config.json" file and put it in the Instant Buildings mod folder, will it work? Thanks a lot! 😄
were you sent here from tech support? if not, i would open a thread in #1272025932932055121
FOUND IT!
SPROING
now i wanna make somehting like that just for fun
just make npcs go BOIIIINGGG all the way across the screen
i did a combo of jump+faceDirection no pause for an event unintentionally but actually loved how it turned out
oooh that sounds like it would look cool
I asked in #modded-stardew and someone there suggested I ask the author, but I don't know how to do that, so that's why I'm here.
hm, maybe make a comment on the mod's post?
you can try leaving a comment on the nexus page, or if the author is in here, you can try pinging them. you may get faster results from tech support if people know the issue
aite. Thanks for help 😄
ofc :))
gl!
if you get to the point of figuring out what's wrong and wanting to fix it yourself, that's when this channel will be a good resource
aaa I think I'm done with my event :)))
was editing the BG sewer fight
now to try and record it-
aaa here it isss! I'm using parcy's krobus portraits and the more lively sewer overhaul, the dwarf portraits are mine, but I used LavenderSkelly's portraits as a base for them (w/ permission ofc!)
anyways lmk what you all think :)
and i will fix the flashing scene thing lol
just to satisfy the curiosity of this current brain tickle of mine, is it possible (probably) to make garden pots go on tables... while still having them function as the pot? why do I feel like its a c# thing, everything that pops in my brain is c#
definitely c#
i think the best option there is to make 1x1 decor fake bonsai trees
then they can just go on table 
Chocolatte already put those out but I want muh real trees
i think the problem is just that "place on table" is largely a visual only thing in vanilla
the mod authors are reinventing spenny
What's old is new again
a brief distraction 🍦
your farmer is gonna catch a cold
easier than catching bugs, and i don't have to make furniture for it
Replace everything would work, but short of that, you want the region to be as small as possible, and the source map to only contain what you intend on actually copying over with only tilesheets that get used by the patch
"Green Tea Version of Hailey" oh no..
So I’ve googled it and got a lot of conflicting info. How do a I set a custom location to be excluded from pathfinding?
set the field in data/locations
Easy enough. Thanks
I sure hope you didn't mean Google AI because goodness that answer is the most loaded crock of shite I've seen lmao
(it told me to open the map and block off tiles, which, pls, Google, that's not how it works)
There is also an npc pathfindijg baned tile property
Usefulness corralling farm animals tbh
makes perfect sense in this case. minimise the computation that needs to be done
Howdy folks, I was wondering if anyone knows off the top of their head which sprite sheet tool hit marker comes from?
Nvm looks like Cursors
if it's not in LooseSprites/Cursors then also check Maps/menuTiles
i should really patch out its sprite since there's no option to turn it off
if only there were a mysterious third option, one other than 'show always' and 'show when you don't want it to'
also its fun as it also blocks monsters on farm, so can kite mobs into hitting the invisible fences
also without speedy solutions, a large percentage of the time is the tilesheet copying
actually I might be thinking of the smapi PR that merged into smapi 4.3.1
Hm i always kept all vanilla tilesheets cus i thought i needed them
it knows to skip tilesheets that already exist and have the identical ImageSource
Otoh if cp editmap can add tilesheet and add animated tile
Then I will never use patch tmx again
no and no I think
Yeah ik it's very sad
adding animated tile wouldn't be that hard I think
PR when I got spoons for this perhaps
the SMAPI api already supports it, just requires CP to make an AnimatedTile instead of StaticTile
oh CP doesn't use the smapi api for CreateTile anyway
yea and come up with sensible syntax for the editmap action
relevant logic is https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/Framework/Patches/EditMapPatch.cs#L295-L314
and a case of how to make the data model https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/Framework/Patches/EditMapPatchTile.cs#L9 store it in a way that is still backwards compatible
actually thats the internal data model, the actual content pack facing one is https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/Framework/ConfigModels/PatchMapTileConfig.cs#L7
might be easier to just do AnimatedMapTiles, as an AnimatedTile is an array of static tiles with a frame interval
hmmm would it be possible to add new emotes for NPCs to do during events?
would it need C#...
you can do it but it's somewhat fraught
oh?
yeah if you extend the emote spritesheet downwards you can put new stuff on there and just call emote with a higher index
huh, okay!
the fraught part is it's a shared global resource so if other mods have the same idea you can easily collide
you could also EditImage an existing one just temporarily for the event with a very late priority
none of them can be considered "unused" when any mod can use them
or any you don't use in that particular event
there's also a mod for just this purpose
https://www.nexusmods.com/stardewvalley/mods/10861
unsure if it's supported but no bug reports 
(ichor stole my second sentence)
these guys lol
the same thing applies. the game doesnt use them. other mods might
ty!! i'll check it out :))
so dont just edit them permanently if you can avoid it
I mean, there's
Configurable Cute Tool Hit Marker at Stardew Valley Nexus - Mods and community https://share.google/uGRrQ53S4l9c3Q5F2
Which is what I'm trying to figure out. I think my UI is overwriting it like it was the torches. 😩
but i don't want an extensive selection of cuter pastel options with configurable shading and some alternative shapes
i want nothing
overwriting it like it was the torches
sounds like some things live on Cursors and somebody is Loading it /lh
Yeah I'm using the Halloween Vibes UI and it has all the loose sprites 😩 it's okay now that I know what mod it is I can add the false dependency.
I figured if anybody knew where it was, it would be y'all. Lol
.q 6218
(Lol i accident post in the wrong channell :'), still heres the mod message) Can someone help with my shop mod, IDK what is going on, i used the JSON validator everything is fine, i cant get clints shop to open. https://smapi.io/log/ec1a387771db4f0ca6645cdd32a5b208 https://smapi.io/json/content-patcher/e93a16af460f4563a15b2b430d68c4ba
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 41 C# mods and 6 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
tbh why not just put everything in cursors
you could batch everything into a single draw call
Gold Scythe is (W)53 not (T)53
oof
that could be it
YAY it worked
LETS GO
consider this a preview of a major update for my shop mod lol 😉 (help me it took me 3 weeks to finish code everything 🥲 ) thank you, @brittle pasture
@loud ice You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
For some reason I can't get my artifact spot retexture to work :/
"Action": "EditImage",
"PatchMode": "Replace",
"Target": "LooseSprites/Cursors",
"FromFile": "Assets/LooseSprites/Artifact_Spot.png",
"Priority": "Early",
"ToArea": { "X": 368, "Y": 32, "Width": 64, "Height": 16 },
"When": {
"= Enable Mod": "true",
"Digspot Recolor": "true"
}
},
{
"Action": "EditImage",
"PatchMode": "Replace",
"Target": "LooseSprites/Cursors",
"FromFile": "Assets/LooseSprites/Artifact_Spot_1_6.png",
"Priority": "Early",
"ToArea": { "X": 160, "Y": 0, "Width": 64, "Height": 16 },
"When": {
"= Enable Mod": "true",
"Digspot Recolor": "true"
}```
i like triple checked the coordinates
you sure your token name is = Enable Mod?
(also I believe you meant to target LooseSprites/Cursors_1_6 for your second patch)
That was the issue
Sometimes I swear I'm blind
anyone know what this is used for?
in LooseSprites/Cursors.png
I believe that's the rockslide blocking the mines
it be
nope, overlays for loaded train boxcars
oh interesting
no idea what the green one is. bean hotpot, probably
Fiber instead of hay?
so the bottom one is spring and the top is summer right?
That's the sludge
these are used for the blockage to the train platform
looks like it. not sure where the other seasons are, though. i don't remember doing this quest
im pretty sure it has to end by summer
Not a quest, just a thing that ends
-- life, a poem
oh i see, i thought this was the witch's den entry. must be the fourth time this has come up and i've forgotten it again
is that the summit rock?
Hmm not able to find it :/
Is it the rock that blocks you from the mines?
I don't think that'd be on cursors 2, I'm just trying to think of limited use rocks
And Summit rock is round
ish
[game] DebugOutput: Tried to change friendship for a friend that wasn't there.
interesting that multiline event scripts fail to parse quickquestion switchevent and end commands followed by a newline.
[17:39:55 ERROR game] Event 'house' has command 'switchEvent myevent
' which couldn't be parsed: can't load new event from asset 'Data\Events\Custom_Hikawa_Shrine' because it doesn't contain the required 'myevent
' key.
likewise you can't newline between (break) and the following command
on 1.6.15 specifically anyway
that's annoying
in practice it just means you need to use \\end\\end instead of \\end, but weird to run into
Its not much but I made a little .ps1 script to automate launching different shortcutted smapi executables so you can have seperate mod folders without needing to add seperate games on steam
That's very handy!
here they are if anyone wants to use em, just set ur launch options like this:
"D:\Game Libraries\Steam Library\steamapps\common\Stardew Valley\SDV-Launcher.bat" %command%
Your game path is certainly different, just need to point to the .bat file, you can edit the .ps1 file to change the amount of options, what they launch and are named etc
making the smapi shortcuts is easy, just make seperate folders named whatever you want, then make a shortcut of StardewModdingAPI.exe and change the properties like this
Example target: "D:\Game Libraries\Steam Library\steamapps\common\Stardew Valley\StardewModdingAPI.exe" --mods-path "Mods Testing Full"
Takes a little bit to setup, but its pretty much the cleanest setup for multi mod profile installs that allows for seperate mod folders
is it possible to unlock the viewport in an event script without repositioning it 
wow that's super similar to one I made on linux a couple years ago! great minds and all that
I just play with all my mods
and if I really want barebones just add a . to my Stardrop installed mods folder, and then only the root level mods which are smapi defaults and stuff I've compiled or authored will be remaining
afaict, viewport is the only command that unlocks it, though it looks like there's a viewport <actor> [true [unfreeze]|clamp [true|unfreeze]] mode that isn't documented on the main wiki, if that helps 
what if I harness some hyperfocus and try to document the various undocumented stuff
that stuff tends to be kinda spaghetti-looking, though they mostly have variable names now thanks to the arg utility
I can't remember what version the arg utility is getting introduced in (or is it already in the game)
it's in, iirc as of 1.6.0 instead of just directly parsing string[] everywhere
but like, even with that, Event.Viewport arg parsing looks like this 
if (!int.TryParse(args[1], out var _) && ArgUtility.TryGet(args, 1, out var NPCTarget, out var error2, allowBlank: true, "string NPCTarget"))
{
position = ((!(NPCTarget == "player")) ? @event.getActorByName(NPCTarget).TilePoint : Game1.MasterPlayer.TilePoint);
if (!ArgUtility.TryGetOptional(args, 2, out action, out error2, null, allowBlank: true, "action") || !ArgUtility.TryGetOptionalBool(args, (action == "clamp") ? 3 : 2, out shouldFade, out error2, defaultValue: false, "shouldFade") || !ArgUtility.TryGetOptional(args, (action == "clamp") ? 4 : 2, out option, out error2, null, allowBlank: true, "option"))
{
context.LogErrorAndSkip(error2);
}
}
else if (!ArgUtility.TryGetPoint(args, 1, out position, out error3, "position") || !ArgUtility.TryGetOptional(args, 3, out action, out error3, null, allowBlank: true, "action") || !ArgUtility.TryGetOptionalBool(args, (action == "clamp") ? 4 : 3, out shouldFade, out error3, defaultValue: false, "shouldFade") || !ArgUtility.TryGetOptional(args, (action == "clamp") ? 5 : 4, out option, out error3, null, allowBlank: true, "option"))
{
context.LogErrorAndSkip(error3);
return;
}```
get <x> <y> or <actor>, then get whatever args, which might be in 2 or 3 different indices
Hey everyone, I was told to ask in here instead! I’m wanting to move my chickens into a barn but be able to put them in BOTH barns and coops. I’ve got smapi installed and a few other mods, and I’ve previously adjusted specific mod json files but haven’t managed to find a file that allows me to change the code for chickens. Does anyone know where to find this, if I’m able to at all, and how I’d go about it? I’d figured I’d adjust to something like “coop; barn” or something once found. I’m assuming we can’t do this at all, but just thought I’d ask. The ‘content’ folder in the game files looks like it’d be the place but they’re xnb files, which I guess can’t be adjusted!
Thank you for your help 
!unpack first of all :)
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!
Oh, I did come across that before, but I wasn’t 100% sure

Then, I know it's possible to just change where to place each animals, but I don't think I've seen anyone make a mod where you had the choice of building... (Except SVE with their deluxe building, but I don't think it's an easy one to explore ^^)
Thank you, Mr. Duck

Someone else here probably have more useful answers, but for now I can just advise to look around a bit ^^
How does one change the name of a villager?
I think someone made a mod that did that, maybe you could look how they did ? 🤔
see the issue here is that i've set it with clamp to stop the viewport from going out of the bottomright corner of the event, but i can't clamp and unfreeze at the same time
someone else could correct me but I feel like this would require c#
and I’m saying it out loud so that if I’m wrong whichever ones of you are lurking here and do happen to know will feel compelled to answer
Hi everyone, does anyone know if it's possible to make a hat-pan through CP? Well, when you put a unique item on your head, it turns into a hat, and when you take it off, it turns back into an item. I can't figure out where this property is written.
Iirc that's a feature of extra animal configs
Otoh if it's just personal use then change the barn and coop to accept like Barn_And_Coop in addition to existing stuff and change chickens to be able to live in Baen_And_Coop
The pan has some special logic here
I don't think it's a generally available feature
Agh, this is very upsetting.
Thank you! I’ll have a look when I can. I appreciate you replying 
What do you want to do exactly
I need make a hat-pan, I need to know how to set the property of turning an item into a hat and vice versa, I have already made a unique hat. Trimmed Lucky Purple Shorts have the same property.
that's 2 items in the game, that's hardcoded af
So, you can't do without C#?
oh, you're using C#, then it's possible, no idea how though... Have you looked at the tool class?
No, I want to make a mod for CP, that's the problem.
@next plaza casey, do spacecore spawned setpiece forage type items count in any way towards the vanilla weekly forage cap?
Oh, that should be possible, from what I can tell: viewport <x> <y> clamp false unfreeze
The true option in those (which sets bool shouldFade internally) is false by default. If you set that explicitly, it should accept unfreeze as a separate argument afterward.
(haven't tested it in the event parser, but I copy-pasted the argument stuff into a console command)
hm, viewport 64 64 clamp false unfreeze/viewport move 0 -2 5000 still doesn't seem to work
maybe 64 is just too far out that the camera's still trying to work its way back into the map border
actually that's most likely the issue, surprised i thought of that at 1am
though this does render viewport clamp quite pointless since i'm trying to make the viewport focus on a corner and then pan up some as an outro (de-establishing shot?)
anyway all that aside the real issue is that resizing the game window irreversibly misaligns the viewport and man do i not want to look into that
yeah, kind of in the game and/or user's jurisdiction at that point
a pause might help with that move setup, but idk much about what the game does in events once it gets the arguments
i think its possible to make a custom pan item by editing Data/Tools
The way I have a mod done but I’m waiting to publish it until I have more stuff done 💔
however the conversions between hat and pan are hardcoded so new pan wouldnt have hatness
a hat is already an item tho, hence my confusion
Happy Canadian Thanksgiving!
oh yeah! 
No clue! I'm not actually sure if regular SpaceCore spawnable forage ones count, much less ones from set pieces.
oh good, my players can figure it out then
Remind me in 8 hours to look into spacecore spawnable forage (normal and setpiece) counting towards weekly spawn limit for vanilla. (And also pending PRs)
Ask me one more time and I'm going to jam a paperclip into my reset button. (#6905865) (8h | <t:1760398365>)
I misspoke anyways, I just was talking about the normal oness
I am very curious though - I don't think anyone has used set pieces yet 👀
Oh
Yes please the children yearn for localizedtext context tag recipes
Are you using set pieces at all?
Err
(are you the children)
It's not a problem if not, I was just curious
I havent come up with a reason to use it yet
I feel like it has a lot of potential but nobody has used it yet as far as I know
That's fair
I'll think about it
Since I do item expansion mods I'm very wary about dipping toes into map edits at all and having to contend with the map real estate thing
I actually bet @devout otter would find it interesting for having mice in random locations around the forest
Setpiece? I need to look at the documentation again, I see.
It’s like the volcano set pieces (with extra features), if you’ve looked at those before
Basically a set piece is a random slice of a map file that will be placed persistently in a spot you specify (including a random place within a rectangle)
And the “extra features” is that those set pieces can have tile data which trigger other spawnables (forage, monsters, other set pieces, etc.)
The map changes stay there until you use a trigger action to clear them
So you could have something show up in the forest and stay for a random amount of time if you wanted (for example)
Oh, hmm. I actually could have some use of that. I'll tinket with it, thanks!
@ivory plume hey, would you mind reinviting me to the StardewModders org?
Hadn't realized the decompile repo had been migrated until today so my invite's already expired
Done!
Ty 
are there any possible workarounds for spouses/roommates not being able to have zero schedules? perhaps setting them invisible (if youre just planning to have them disappear for the entire day)?
Is there a way to offset NPCs with walking? Trying to get two characters to stand very close on the same tile during an event. (I know I'll probably have to shift them to separate tiles to get it to work, or forget about walking to offset)
Try advanceMove
Lmk if I’m not allowed to ask, but which game file folder would food items and animal drop items be in?
the sprites or the data?
(also have you unpacked the game?)
sprites are Maps/springobjects, data is Data/Objects, Data/Crops, and i think Data/FarmAnimals
Yep
Tyyyy
Is there a size limit to spritesheets? I'm trying to convert my mod from individual 16x16 object sprites to pulling from a spritesheet.
Would a 160x256 spritesheet load without issue?
maps/springobjects is several times that size, you're good
I think the limit is something like 4096x4096 (which is gargantuan, fits 65k items)
Thank you!
https://smapi.io/log/9abf6599a4304285826b7106696baef3 does anyone know what crashed the game? was it a mod? i don't THINK it could possibly be my content pack causing draw errors but it got reported to me
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 9 C# mods and 7 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Who did they talk to right before it crashes
That is an issue with dialogue or dialogue parsinf
i'll ask
"Clint I believe, I opened 3 geodes, went mining then saw that I still had the dbd quest then immediately ran back to save and the moment I went to bed the game crashed"
which is weird because the crash is coming from the dialogue box?
maybe there's some kind of event that tried to trigger? idk
"I had interacted with shane(a mod for him) and my kid (another 2 mods) but that was at the start of the day and they seemed fine, I didn't interact with any other npcs cause I kinda speed run my days XD I was aiming to get a mushroom from the caves so I pretty much ignored everyone"
weird... tbh there isn't that one you can do other than telling them you don't think it's from your mod
the reason this even came up is because they reported an issue with my mod where "Like the game says niko is there, she appears in the relationships menu but she's just not physically in my game as far as I can see" and i asked for a log, and then when they tried to save before giving me a log it crashed
oh 
Tell them to ask this discord thh
which is a problem i can diagnose but definitely can't with this log
I could probably go look at what line of code it refers to but it's in game1._draw...
atra you do it
I'm at work you fools

Why is game1._draw scary
let me put it this way
it says the error is on line 17,015
i invited them to the server so we may have more info shortly
Tbh I have very little patience for debugging mods not my own anymore
And I get to have that
deserved tbh
Basically finished my biggest retexture project so far
(Retexturing the joja furniture.)
anyway i opened a thread for them in tech support
Cuz the theme of the set pmo
I love it when I make my, like idk, 6th shop by now and yet again ) have the question "why isnt my shop opening" when i literally copy-pasted from my other shops
a true classic
you know the game? the one you can see? game1._draw
😔 actually sorry i can't see the game i play stardew blindfolded
Hello everyonee
like that "make stardew invisible" mod that just came out
I usually don’t post this kind of thing here, but I know some people might be a little concerned especially today with Windows 10 officially losing support starting tomorrow morning.
If you’re feeling unsure about whether to stick with Windows 10 or make a change, I’m happy to help! We can go over a few options:
1: Windows 10 with ESU (Extended Security Updates): Good for 3 more years (I’m using this myself)
2: Upgrading to a different edition of Windows 10 for longer support
3: Switching to Linux if you’re up for a change
I’ve got plenty of experience in this area, so if you want to chat about what’s best for you, I’d be more than happy to guide you through it
This is if you refuse to upgrade to Windows 11! Which I've seen a large amount refuse to, so, if anyone wants to make a change, lemme know
Anyone know if you can randomize shop portraits with each shop opening
Oh god is this tomorrow lol
Welp
I knoe what I'm doing this weekend
what u doing? 👀 😭
Sadly!!
(Wiping Windows off the laptop.)
We are going with arch
LOL
not bad
dont do pure arch, I am going to seriously say this
Do arch based, such as Endeavour OS, Cachy OS
Pure arch you will regret it, as a developer for both windows, and linux apps
driver requires (x) package and u literally cannot find anywhere, its very manual, I use Endeavour OS on my laptop, but arch-based distros are a very good option, Ubuntu based are good, too! Just not my preference
reject modernity. install windows 7 lts 👏
I had Ubuntu tbh
I'm going to just buy myself a new HD and keep thr current one as a backup
Lol WIndows 7 was a favorite, though 10 actually had a lot of advancements...windows 11...has the same APIs, super close codebase...building an app on windows 11 90% of the time works on windows 10 pcs, its identical
HDD? I'd recommend an SSD! 40 dollars for 512gb or even less! usually 5x faster and safer
i'd say this is more relevant in #programmers-off-topic but also there's only 10 entire people there and they're probably aware already lol
And I'm 8 of the people
yeah lol a little dead there so thats why i posted here, again tho, this is once in a life time thing so i wanted ppl to know :3
i would say its only relevant not just more relevant
mmm, windows 11 is just a repainted 10. some of the paint is great and i love it, some is made of lead, a lot is on the floor and furniture, they missed 5 rooms and my control panel is just full of paint now
😭
very optimistic of you thinking that windows 11 isn't going to be eol in another 3 years when they decide they want an even more ambient & evolutionary operating systéme experience
I'm a very broken person and got peer pressured into using linux in college tbh
And until Ubuntu did something silly earlier this year I was primary Ubuntu
So arch. We can do arch
Its funny cause the Windows 11 Enterprise LTSC IoT has no date to no longer get support yet, sometimes that happens, but its strange, so there isnt a posted date yet
For the 10 version its 2032, if u wanna go that ham
WRONG REPLY MY BAD
yeah, i dont know, i can say no new OS is releasing this year, next year is possible, but its guarrentied to be out by late 2027, they arent pushing. They had a quota and if u check statistics, windows 10 just months ago still beat windows 11 users, then they did forced upgrades, now windows 11 beats it, so they finally hit that "mark" so they can start working on the new OS
Cool thing about me not being a real programmer - i don't have to deal with windows lol
programmers dont have to deal with windows thankfully
though if ur building apps for it...yeah
We use red hat at work
ahh red hat with glibc 2.15 i bet u money, e nterprise edition
nice, I wish I had the energy to move my pc to arch rn to match my laptops
I personally like KDE Plasma 6.3.5 with any kind of arch based distro
LITERALLY me rn 😭
unfortunately i think the only method of doing this on each interaction would be to define multiple Owners entries with a Condition using RANDOM, though i've not tried myself
I thought you said you don’t use arch haha
i do!
endeavour OS
its arch based, literally just made easier
pretty installar and thats kinda it
hmm, I will try that out
my laptop and other pcs use it, though i am comfortable with windows 10 on my main pc with ESU for 3 years until I feel like i wan na change it
Bluebs I have a stupid question
I’ve never had driver problems with arch ngl and if there are package problems, I’m confused about how derivative distros would help since they tend to use the arch repos and aur for the most part too
Do shop portraits support appearance
do i use arch? no
i use arch, btw
templeos
Bluebs you're a real person
I'm not.
I'm a half alive fool who works too many hours a week
legendary knowledge
anyway the answer is yes-and-no; shop data entries don't use Appearances or any of the corresponding data types, but Owners is already a rough equivalent given it has Id, Condition, and Portrait, but it's missing Priority to resolve equivalent conditions
Can’t you just use ordering in lieu of priority?
since it's a list, yes, but that's not quite as granular as a number value
Smh
though that said i don't know whether it just iterates over the list in order and checks the conditions of each, or if it chooses an owner some other way
ah yes partial owner
so how many shares does the mouse have
giving me ptsd flashbacks seeing partial in codeblocks
im either really unlucky, i did it wrong or it isnt working ( bet on i did it wrong)
I made a krobus mod and it seemed fine until this event. Idk what's wrong or how to fix it. Would you guys know?
correct me if i am wrong(which i probably am but I jsut tried it like this with the condition
{
"Condition": "TIME 0800 2400 RANDOM 0.5",
"Portrait": "Portraits/{{ModID}}_LostIslandTheMerchant_Portrait",
"Dialogues": [
{
"Id": "VoidWitchCult.LostIsland_LostIslandTheMerchant-OpenOwnerDialogue",
"Dialogue": "{{i18n:TheMerchant.ShopDialogue.{{Random: 1, 2, 3, 4}}}}"
}
],
"Id": "VoidWitchCult.LostIsland_LostIslandTheMerchant-OpenOwner",
"Name": "AnyOrNone"
},
{
"Condition": "TIME 0800 2400 RANDOM 0.5",
"Portrait": "Portraits/{{ModID}}_LostIslandTheMerchant_Portrait2",
"Dialogues": [
{
"Id": "VoidWitchCult.LostIsland_LostIslandTheMerchant-OpenOwnerDialogue",
"Dialogue": "{{i18n:TheMerchant.ShopDialogue.{{Random: 1, 2, 3, 4}}}}"
}
],
"Id": "VoidWitchCult.LostIsland_LostIslandTheMerchant2-OpenOwner",
"Name": "AnyOrNone"
},```
you could do it that way, but it's worth noting that both of the random conditions can fail, leaving you with no owner
it's better to have the first TIME 0800 2400 RANDOM 0.5, and the last TIME 0800 2400 if you want to avoid that
of course if you already have a default owner below then disregard since you've got basically the same effect
@next plaza: look into spacecore spawnable forage (normal and setpiece) counting towards weekly spawn limit for vanilla. (And also pending PRs) (8h ago)
ah, the comma...my mortal enemy
surprisingly not a load-bearing json comma
yippie it works! thanks for the help :D
is this a modded event? i can't find anything of the sort in the base game events.
thats the magnifying glass retrieval
it's not listed in events/town and i didn't get any results for 'shadow guy' 
it isnt a real event
you follow the footsteps in winter and then you click on the bush and theres like 7 different functions in Town.cs or somethin that handles it all
figures i should've looked outside of events
ah yeah you're pretty stuffed
temporarySprites.Add(new TemporaryAnimatedSprite("Characters\\Krobus", new Microsoft.Xna.Framework.Rectangle(0, 0, 16, 24), mg.position, flipped: false, 0f, Color.White) etc etc
given that that shadow person isnt actually krobus and simply reuses krobus's sprite I think the best bet is probably to just undo your patches for that day only while the player is in Town
i actually dont know how other krobus mods handle that
i suppose they're fine so long as they don't change his sprite size
you could also edit krobus's character entry to use a different texture and leave Characters/Krobus as-is
is having () around the choices in a quick question going to break the (break) commands that come after? like:
(Leave.)
(Wake him up.)
it'll be fine so long as you don't use (break) itself
cool thanks
would this be the correct way to format it after removing the spawn conditions
Looks ok to me
@brittle pasture all I did was remove the conditions that were needed before they would start spawning
can you post SVE's edited LocationsData.json file at smapi.io/json?
tsx files are beasts of their own
interesting that your maps can completely explode if not re-saved when a new tsx is introduced and not added, but not to the point where the map actually fails to load
Regarding the Krobus sprite being cut in half... How do I code a fix?... I'm sorry, coding is one of my weak points
I encountered it again. This time, it's when we meet him in SVE ||when the player goes back to the sewer after Marlon introduces us||
My poor boy has no legs...
sorry for the delay but was testing a fix
didnt work, tried changing the condition to robin's tour of the house but that didnt do it
Can you upload it here and send a link, please? That's what Selph meant


