#making-mods-general
1 messages Ā· Page 248 of 1
So adding more heath is another c# mod, I don't know how to make. š¢
Yeah, sorry
does anyone here know if it's possible to use the RSV minecarts before you've unlocked the boilerroom?
You mean use, right? š¤£
I feared that would be the response lmao
Yes, you can
okay....
hmmmmmmmmmmmm
I wanna have some opinions then.
for my minecart mod you have to find a cart before being able to use them. If you find one before you've unlocked minecarts you get a message saying you've added it to your list of mysterious minecarts, if you have unlocked them it says you've added it to your known destinations.
for RSV I wanted to do a 2nd type of message, where if you find them asfter unlocking minecarts but before unlocking the RSV carts, it says something like "you've added the cart to your list, but there seems to be something else wrong before you can use them"
should I keep it at that, or also add a message to the vanilla carts for when you've unlocked the RSV ones but not the boilerroom?
This. This is good :)
so keep the same one for the vanilla ones ,regardless of if they're still mysterious?
I think you should add a different message for the vanilla ones if the player has unlocked the RSV ones.
yeah I kinda think so too, but it's so much work :')
and so few people will see it probably
That's fair
Well, I don't think it's going to feel weirdly unfinished or anything if you don't do it. You just might have a few more confused people in your mod page comments than otherwise xD
yeah fair hahaha
You're doing this via CP, right? Not C#?
but my perfectionism tho
yeah
oh actually I might be able to set it up differently which would make it not that difficult and also add the ability to add more for other mods if necessary
I obviously don't know exactly how you have set the messages up, but I wonder if you could just use dynamic tokens to control what the message says. Then you could just have the value of the token change depending on what has happened with the carts. Providing there were CP tokens that do what you need...
Are you doing the ES minecarts too? They are a separate network too. Though those I don't remember if you need the CC or not
@reef kiln are you attached to your current frog? I have an old profile picture I no longer use that is very cute imo with a few frogs
already did ES, but they follow boiler room unlock
I guess it depends on the frog.
I'm using dynamic tokens hahaha
which are a fucking mess to reference in i18n wow
I'll send the line in a bit just because I enjoy how it looks haha
I imagine you are using them differently to how I am thinking then because the way I am thinking (if it worked) would not be "so much work" to change the vanilla message, it would be a very small change. But I haven't actually thought about what exactly would need to be checked so it's quite probably not feasible. How are you checking whether RSV's have been fixed? Mail flag?
@reef kiln
(I assume they set a mail flag for it)
mail flag yeah
"Action": "MessageOnce Polydot.PolyCarts.Unlock_Event.FarmCave {{i18n: {{F/U}}_L1}}^{{i18n: {{F/U}}_L2}}^{{i18n: {{F/U}}_L3}}^{{i18n: {{F/U}}_L4 |Unlocked_Location={{Farm Cave Name}}}}"```
Thats cute, but I will keep my current frog for now.
I like that the code is swearing at me. š¤£ š¤£ š š F/U
that's the dynamic token for Find/Unlock hahaha
Is that the gender switch character?
which one? and no
the ^, I think it is
Chevron and yes it is but presumably not in this context. What is it doing though?
what are you trying to achieve using those ^s?
in the MessageOnce it's a newline
(caret, technically
Iām pretty sure chevrons are technically a different one?)
technically generally you shouldnāt be doing things like referencing dynamic tokens (which are logic) in your i18n (which should just be content)
chevrons are mostly not a text character
but like it doesnāt matter TOO much
technically I would otherwise need a seperate i18n message for EVERY minecart
while this works
and is documented!
(very poorly though)
canāt you just split the i18n? though that may cause an issue with other languagesā grammar 
it's suprisingly hasn't yet, even in chinese
Look, back before I knew better I was in the air force cadets and so I learned that every pointy thing = chevron 
no I mean splitting the message instead of doing it your way
Chwvron is like
but yeah it could, except that I don't want to
anyway if it works it works 
also I think I tried that initially and there were issues,but I don't remember as it's been a looong time
A bunch of pointy things
And Me here, thinking Chevron was an oil company
Cgevron has a chevron in their logo
Why do you have four different i18n lines in there?
for 4 lines?
I couldn't get newlines to work in the actual i18n content so this worked
and it wouldn't make much sense to have the same line 4 times
you couldnāt make the exact same thing work in i18n? thatās strange 
afaik ^ as newlines arenāt a content patcher so itās not that load a blank json thing
Are you just very verbose in telling players "you have added this cart to your list" to need four lines? (Not intended as a criticism, just unsure what you're actually saying in 4 lines xD)
You found a broken Minecart.
After tinkering a bit, it looks like you fixed it, but it doesn't seem to do anything...
Maybe you can find out what the problem is and come back to it later?
You've added '{{Unlocked_Location}}' to your Mysterious Minecarts list!
You found a new Minecart!
After trying to get it to work for a bit it springs to life.
It should be fully functional tomorrow!
You've added '{{Unlocked_Location}}' to your known destinations.
a bit of flavour
Ah okay, nice ^_^
So the {{F/U}} token is what determines whether players get the "it's not unlocked" vs the "you can use it" lines?
So wouldn't adding the vanilla "ope RSV didn't unlock these!" lines be pretty easy?
but I'm gonna just add a bunch of them with different when conditions
What, why D:
lmao just use those words xD
Just keep using the dynamic token?
Oh wait you mean a bunch of new values to the token
Nvm I thought you meant a bunch of copies of the MessageOnce Action whoops
thanks for the worry, that was valid
On a completely separate off topic note, youtube has decided I want an very scary, AI powered robot dog that looks and acts like a real dog. I have ad for it every other ad. But it creeps me out how real it is. Please stop youtube.
get an adblocker
Ok my wife keeps saying "bed soon?" "maybe bed now" "what about now?". So I think it is time for bed.
sleep well!
I have thought about it, but I am afraid to anger "the Google". They probably know more about me then I do. 𤣠š
they will fight you, and anyone alive or dead, yes
but that's why you should fight back
get firefox or another non-chromium
and get adnauseum
fixed
You should try out Floorp because it's a fun name that starts with an F like @reef kiln.
Floorp is also fun to say
But what if Google decides to us my info for evil. I have a theory, that the reason no politicians challenge Google is because Google secretly lets them know "we have you entire internet history" do you really want to cross us?
not in a mean way but you don't matter to google whatsoever, they don't care
Just leak out all of your evil yourself, and then they'll have nothing on you
I know 𤣠i am happily insignificant. But that also means they could care less about crushing me. š š¤£
the reason no politicians challenge Google starts and ends with money lmao
as with everything else
I've spent that last few years de-googleifying myself. It's very liberating.
There really is not anything I can think of in truth. But for a company that should know everything about me. There ads sure have been off mark the last few months.
I never cared enough to de-googleify myself because I know enough of my data is already out there, but I do care about increasing the regulation on companies like google
Anyway privacy nowadays is mostly an illusion, unless you go completely off the grid.
Your smart devices collect data on you. Discord collects data on you. They all do.
(and if you donāt believe us, look up Facebookās Shadow Accounts)
(you literally cannot opt out of data collection at this point)
Heya, I don't understand this. how do you know how to search the letter id in this?
"Clint.Mines.1": "$1 <letter ID>#Did you know a rumor that there's a key in the mines? #$e# Have you confirm it?",
Is that from a mod or vanilla?
(you don't typically see $1 at the start of dialogue because portraits go at the end of the dialogue line, not the beginning, so that whole format seems wrong to me)
It's from the dialogue commands.
Creates a line of dialogue which the character will only see once (at most). <1st-time text> is shown only if <letter ID> has not been marked as sent yet (and this marks it as sent); otherwise, <nth-time text> is shown. <letter ID> should not correspond to an actual piece of mail (because it will not be sent), but it can be referenced by events or other dialogue lines.
That's not the portrait cue, it's the first-time thing.
I'm not sure what you mean by searching the letter ID though, what are you looking for?
Oh, the only reference I found in the wiki to letter ID looks like a passout mail thing
Yes, but it would be problematic if I need to send letters to create many of dialogue of this types. Is there a loophole to this?
You don't have to create an actual letter (in fact, it will not send an actual letter).
It's just creating a flag so it knows it's done the first time dialogue already. So what I would do is just make up an ID like mymodID.specificsituationcue
So, If I create it like this
"Clint.Mines.1": "$1 AleAle.ThisIsTheFirstMessage#Did you know a rumor that there's a key in the mines? #$e# Have you confirm it?",
Would it work?
Yes, Clint would say the first cue whenever that key came up, then the next time it was valid, he'd say the second part.
So, it's automatically tagged within the save?
Yep
Thank you so much, I'll go try to implement this now.
Minor grammar nitpick, "Have you confirm it" should probably be "Have you confirmed it" (figured I would mention in case it's a language thing)
Also I learned something new today about first time dialogue, so thanks!
yeah, I'll go fit it to how Clint would really say it later. just testing the grounds. š
Hi, guys, I'm new here. I was reading the how to get started, it says I need to install Visual Studio, but could I use Visual Studio Code instead? or is it too different?
Depends on what mods you'll do.
Some of it you can do in basic notepad if you really wanted
wouldn't RECOMMEND that, but
If your mod would use Content Patcher (.json files), I'd recommend Visual Studio Code.
If your mod would be in C# (.cs, etc files), then Visual Studio Community.
(made a CP mod in preinstalled notepad for like 6 months, it was the worst thing I could do; NOT RECOMMENDED)
Definitely would not recommend LOL at least something that'll give you some indication that you've closed your dang {}
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
I'd recommend at least one of those 3 programs. (using VS Code)
we all drop a bracket every now and then, it's really helpful to use something that'll point it out
For CP mods we also have https://smapi.io/json/content-patcher/, but it gets so boring to upload your file(s) every time they don't work...
it will be C#, so thank you!
for some reason, I don't like working on VS too much, I rather VS Code.
you can also include the schema in VScode if you want that live
(I set my C# part of my mod yesterday in VS and code it in VS Code, so you can use both of them)
btw, I see that mods compiles into dll to run in Mods. If I would like to see how a mod is coded, it wouldn't be easy, right?
True, but the manifest one is broken.
didn't know there was one hahaha
nope, but a lot of mods have their source code available in the compat list
Depends on the mod. Many of them are open source on GitHub, that is easy to see.
Yeah the manifest one has regex that doesn't work in vsc for some reason
funny
And for the ones that aren't, DotPeek will help.
Was already asking for it because it's broken #making-mods-general message
True, link in pins or here: https://github.com/Pathoschild/StardewScripts/tree/main/fetch-mod-code#readme
I don't recommend learning to code from a decompiled mod though
You gotta deal with decompile artifacts too
Learning from game is also a little jank for same reason
switch case mangling my beloathed
If you have some feature in mind you can ask here
quick question, is there a debug mode where I can see variables' value in-game?
By variables, you mean things like which mails the player already got?
SMAPI command patch summary for that and many more - https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/troubleshooting.md#summary
Mods for Stardew Valley using SMAPI. Contribute to Pathoschild/StardewMods development by creating an account on GitHub.
lookup anything's data mining fields allows you to see values of fields of the things you lookup
but otherwise your best bet is breakpoints in VS (not that I know how to set that up #justlinuxthings)
I see... I will take a looking into that. Thx!
Selph can't u break point in vim too
if I could that's news to me
Ah hm, i guess you don't have a debugger to attach do u 
Cus it is not like u r use gdb
Hi! I need a bit of help. I'm trying to make a mod and there is a custom location that i'm inserting into the vanilla map (in cindersap forest) and the game is not reading the paths for the trees that i'm putting in. First image is how the house looks in game and the trees that are overlaping, second image is the paths that are in that part of the map in the forest, third image is the part of the forest that is being replaced. The game isn't reading the paths that i'm putting in and instead is using the ones that the forest file has already there. Here's what i did with the code to put the house in the forest:{ "Action": "EditMap", "Target": "Maps/Forest", "FromFile": "assets/Maps/NPCHouse.tmx", "ToArea": { "X": 96, "Y": 74, "Width": 15, "Height": 15 }
english isn“t my first language and i've never modded before so apologies if i didn't express myself correctly
Breakpoints work in Rider. At least they do on Mac, so I assume they also do on Linux.
If this is an existing save, things like trees and bushes do not go away on map patch
Consider including this trigger in your mod
Maybe Reset Terrain Features would help?
!rtf
Reset Terrain Features (https://smapi.io/mods/#Reset_Terrain_Features) is a mod that lets you reset, clear, or generate everything that spawns on a map using an in-game menu. That's especially useful when changing maps mid-save, as the debris will otherwise use the old layout (causing things like trees in the water or bushes blocking exits).
RTF wouldn't do it automatically for the user (yes i have an agenda)
Seconding this i run the c# debugger with vsc
Setting it up is pain tho
That's true, though... I wonder how BETAS has many good features, and I use none of them... 
does this work for content patcher?
Yes, this is a trigger action
i'll try it out! thank you ā¤ļø
If you are just debugging you can run actions like this
debug action Spiderbuttons.BETAS_ClearTerrainFeatures [Location] [Type] [TopLeftX] [TopLeftY] [BottomRightX] [BottomRightY]
(with the right arguments of course)
to be honest i don't even know what debugging is 
Testing and seeing what breaks 
ooh, you put that in the smapi screen, right?
Yep it's a smapi console command
Really wish errors within xTile map drawing would somehow include the names of the mods responsible for patching the current map. I know that's not feasible, but I get to add +1 to the number of bug reports I've gotten that have nothing to do with my mods because I have a harmony patch earlier in the stack trace before a broken map. :>
but wouldn't that fix it temporarly?
if i close the game and open it again wouldn't the problem still be there?
the bushes are saved to the save, so if you yeet them and then go to sleep they remain gone
okok, got it!
Awww thanks for answering!!! Are you the one who made the NPC building spreadsheet?
but what if someone wants to plant a bush right where one used to be
as in it only fires the first time someone loads the mod?
Once in a save yeah
holy fuck why did it take a buttons.gay page to tell me this exists
That's button's (the mod author) personal site lol
With docs about her mods
But trigger actions is a vanilla thing
ooooh wait it's a mod
The suggestion was to
- Use trigger actions, the vanilla system
- To fire this custom trigger action, provided by a mod called BETAS
As an alternative to asking players do reset terrain features all the time
okay that takes a bit of work, but it seems like the right choice to make to use that instead of RTF
a lot of work actually
Not really it's one data edit
i suspect my sense of easy is skewed somewhat but hey if u have need we can help you
it's checking 109 map patches to find where there were originally bushes or smth and adding a data edit for each of them
You can template that
not the checking
As in
Organize 109 patch into 2 to 4 types of patch
Local token them
And have it do both trigger action and minecart add
wh- what?
The 3 includes all use the same json here
https://github.com/Mushymato/TrinketTinker/blob/main/[CP] Pack Possum and Critter Cages/data/box.json
Just with different local token values
These features are all pretty new and i imagine you didn't have em when working on your mod initially
possible
But they exist now 
I cannot wrap my head arond what any of this means though
It is templating
The box.json is all the data edits needed for a particular trinket
I just change the capacity and sprite index for each
To make 3 different trinkets of similar function
ah so I could make 1 json that says what type of terrain feature to remove where
Yeah, along with the map edit itself
and then quickly call that template with local tokens to not type too much
OH
Slice ur mod basically
I COULD REWRITE MY ENTIRE MOD
Yep
I hate that you put this in my mind
it's working fine like it is
I don't have to do this
NOBODY BUT ME WILL NOTICE
Yeah you don't
but yet
Although i have bumped into some limits with local tokens (can't use list yet)
list?
I am, I did notice that RandomItem isn't coded for the helper currently, so I will fix that at some point today
You cannot do a for i in [2, 4, 6]
There's talks about how that might happen but idk what the plan is so assume it doesn't exist
can I DM you to not spam this chat?
Also can't seem to inherit ticket yet
No you may not dm me this is very moddingā¢ļø
Could make a thread if you want tho
I have a question, does Content Patcher always iterate between all the patches to see which one it should apply?
I'm seeing the trace and there are assets that have 0 calls for OnTimeChange and they are still in the Trace Log as being checked
there's no threads in this channel
there are threads, but only orange names can start them
But idk im not rly trying to talk you into do anything i just want people to know about Features
Yeah i can thread if desired
O:
haha no worries
I fucking lvoe the concept
and it wouldf make future stuff so much easier
if I understand everything correctly
Best to just try it out
Not on ur existing mod just a test to see if you understood it and can achieve what you want
If something else invalidated an asset everyone editing that need to apply their changes again
So a single ontimechange patch on Data/Objects affect everyone adding objects
I can replace this:
//Minecart Farm Cave
{
"Action": "EditData",
"Target": "Data/Minecarts",
"LogName": "Farm Cave EditData",
"When": {
"Farm Cave": true,
"HasSeenEvent": "Polydot.PolyCarts.Unlock_Event.FarmCave"
},
"TargetField": ["Default", "Destinations"],
"Entries": {
"Farm Cave": {
"Id": "Polydot.PolyCarts_FarmCave",
"DisplayName": "{{Farm Cave Name}}",
"TargetLocation": "FarmCave",
"TargetTile": { "X": 2, "Y": 7 },
"TargetDirection": "right"
}
}
}
with smth like
{
"Action": "Include",
"FromFile": "assets/whatever.json",
"LocalTokens": {
"location name": "FarmCave",
"TargetTile": "x2y7",
"TargetDirection": "right"
}
}
Need to be TargetTileX and TargetTileY i think
And best to avoid spaces in token names
Yeah, tho ofc u need to write the template to be included as well
There is
- A part that says that 178 patches are being applied on OnTimeChange. This list an asset "A" to invalidate
- A part that indicates that a the asset "A" is being invalidated, but it list all the assets, some multiple times, even when they have 0 OnTimeChanges.
That's why I want to know if it still check all the other patches, or it have a list of "OnTimeChangePatchesToCheck" and the second part I'm seeing is only because of the trace
patches that aren't Loads are applied in order, not separately, and you cannot just edit a single thing inside an asset, you have to load and patch the entire asset from scratch again
so ofc one person making it so that the entire asset needs to be patched again means that everyone else must have their patches reapplied too
as an answer to your original question, no, content patcher is not only checking which patches should apply. Because it's applying all of them, because it has to
Again, the asset "String\HelloEveryone" is one that I just added to test, only has an "OnDayStarted" and it still appears in the "OnTimeChange". Nothing uses it, nothing changes it, nothing does nothing to it, and it still appears as being checked in the trace for an "OnTimeChange" update
wdym "again" that's the first time you've said that
do you only have your own mod installed
Just to specify when I said "I'm seeing the trace and there are assets that have 0 calls for OnTimeChange and they are still in the Trace Log as being checked"
So I did say it, just didn't say the name of the asset
You will have to share your log, I don't think i understand what you mean
Mail Framework Mod 1.19.0 released.
New features:
- New property to keep a mail valid once all conditions have been met for a day but the mail was not read on that day.
- New feature to handle Randoly Chosen Attachment
- New property to set how much items from the attachment list should be chosen to delivery.
- New property to set a "RandomGroup" to an Attachment, so its pick from that group instead of from the whole list.
- New property to set a "Weight" for a given attachment, when being picked randomly.
- New property to set how many items should be pick from a given group, instead of using the default value.
- New property to say if an item from a given group can chosen more than once.
- New set of property to set a MailReceived requirement for attachments and replies
- New property to set a MailReceived to be removed when a letter is read or when a reply option is chicked.
- New property to set a cost for a given reply option.
- New ItemType "None". It basically to be used when you want a random chance of not delivery an attachment.
Link: https://www.nexusmods.com/stardewvalley/mods/1536
To see a practical example of the new features, check the new Subscription Boxes Mod (https://www.nexusmods.com/stardewvalley/mods/32308)
This is the one I used yesterday to check, the new log is 400000 lines and I'm not going to parse it again
In 1), I see 178 patches, on some assets
In 2), I see all the assets being shown, even when most of them have 0 OnTimeChange updates (I checked mod by mod)
Are those assets/patches actually being checked everytime or it's just because I'm logging the trace
!log do u have parser link for this one
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.
Log Info: SMAPI with SDV on , with 0 C# mods and 0 content packs.
Only one asset is actually invalidated spacechase0.SpaceCore/ObjectExtensionData
That's not what I asked
How does content patcher know if something has ontimechange patch without checking it is my counter ask 
I don't know enough about cp internals to give you more detailed answer sadly but the source code is there if you want to find out
Thats why I asked, because if it reads everything, everytime it becames a resource hog and that clearly causes performance issues.
If it created a dict or something when SMAPI is starting with which patches it should apply at which moments it would be slow to start but faster at OnTimeChange
Even if rechecking the conditions for those patches
@uncut viper Hi, just a very minor thing: when you updated Special Power Utilities today you didn't increment the main version of SPU on Nexus, so the last updated date and version are displayed incorrectly. (I don't know if that would mess with mod update checks or not.)
For example:
"Oh, there is a OnTimeChange at 1240 in Maps/ASDF, Ill add it to the dict OnTimeChangeDict["1240"] = "All patches that apply to Maps/ASDF", so I don't recheck every patch again, even if it doesn't needs it"
(i've had nexus simply fail to update that number on me, checkbox be damned)
it probably does, but in this case i can 100% guarantee you that was Nexus' fault, because i am 100% sure i clicked the "this is the latest version of my mod" button when uploading the file
this is also not the only time its happened for me
Ah. I've never had that happen to me before. Sounds... fun.
another of nexus's incredible features
the best is that bc of how nexus is, you cant really tell its happened until like, 20min later at minimum
-# BetterNexusMods when
The thing that's being updated is token context rather than specific asset tho
clearly it TRIED to do it correctly, because it gave me the v2.3.3 in the changelog section, which was already filled out bc i filled it /shrug
but ive fixed it now anyway, thank you for bringing it up!
Yes, but the changes are to assets, so at least it would have reduced the token and other things checks only to the ones that MUST be checked at specific times
It would be neat if you have approach that's better, pathos is open to pull requests usually
also OnTimeChange isnt a thing that lets you specify times
I think this is where the code path starts
You can with the Time token no?
my understanding is pathos usually likes to discuss potential PRs in advance, so that if he expects to deny your change he can spare you the effort of creating it
yeah, but its not OnTimeChange itself that specifies what time it changes at
As for ontimechange but targeting a time, that is already a thing isn't it
OnTimeChange simply tells Content Patcher when to re-evaluate any tokens in the patch
This is why i get lag at 1900 in game
When all the aesthetic mods wants to go into nighttime mode
Actually applying the change is bigger than the act of checking if it should apply
so you cant simply check for what time any patch with OnTimeChange might change at, bc the conditions of the Time condition can also change, depending on time
or other factors
1900 sucks. So many changes at 1900. My computer is a monster and still has a lag spike at 1900
like, what if a condition is "Time": "{{Random: 0600, 0700, 0800}}"?
Not me realizing this and removing a handful of time sensitive aesthetic mods
In that case CP at everytime is trying to load all the patches and only the tokens are preventing it from happening?
This is why I don't do recolors or aesthetic mods
I feel like there is perhaps case for an OnTimeIs update rate 
Does content patcher just check recursively for changes?
Why not have the mods themselves issue the command to change
So it's not wasting time when there isn't anything to do
You can yea
i do think though it is important to stress that the UpdateRate things are not for when patches apply
With trigger action
they are like as chu said for updating the token context
which affects the whole patch, not just conditions
Someone correct me if I'm wrong but I'm pretty sure recolors don't affect performance
In theory they're just loading one sheet instead of the other both should be relatively static
everything affects performance in one way or another
Everything costs money, but some things are candy bars and some things are yachts 
there is overhead in managing patches, as Alan points out
You can make some awful performance "visual only" mods if you r doing strange things yep
the only thing that doesnt affect performance is running the vanilla game without SMAPI
xnb modding
chu can you please tell me what xnb mod can be applied while also being vanilla
True, won't effect proformance. Only argument I ever heard in favor of xnb modding.
it will affect performance
if you are adding more things to a file, it affects performance
someone help me choose, should i do try to do bellflowers next or lily of the valley hmm
(i am just joking about how you can apply xnb mods without using smapi, not that anyone should in 2025)
Not if you just replace the xnb with yours. You won't even need SMAPI.
checking the condition for 200 patches when only 20 might have been changed is not very efficient
(yes but that is why i specifically said "vanilla game" alongside "without SMAPI")
as far as i know, content patcher does not recheck conditions unless it needs to
Well do you have better approach to this while retaining feature parity?
also its possible to have a patch in your cp mod for furniture with a patch for crops right or will i need to make a mod within my folder for a secondary mod?
if there is no token context update, then the values have not changed, and if no values have changed, nothing is done
You can edit as many things as you want with CP in the same mod
You can toss as many different things in your CP mod as it supports.
aah ok ty
The stance here isn't really "checking patches is free" since it's not free, but rather "could there be better way to check patches and reduce the overhead"
You can do it as one mod
With the caveat that you cannot do something that will break existing content patcher packs

(I would not really recommend splitting your CP stuff into separate CP mods, because includes divide up your CP just fine without having to manage multiple manifests or update keys, etc)
phew ok, i was a lil worried about it lol
Ever since merging my stuff with includes I've had a way easier time, tiakall got on the head
CP mods also can't refer to things like dynamic tokens or configs in other CP mods, unless you use a framework mod like Cross-Mod Compatibility Tokens. 
as far as i can understand CP source code, this function seems to imply that nothing is updated unless Content Patcher does know its necessary to do so
You can technically have all your changes in a single contents.json though for ease of reading it is better to not.
So if your crop mod has a token or config, your artisan good mod would have no idea, for example.
Oooh never heard of that mod, have you used it tiakall?
oooh ok
You should use it if you need to know about another mod's tokens
That's amazing people are so talented
But if it's your own mod then just do 1 content patcher pack
Not much yet since most of the settings in other mods I've needed are C# mods, but I've mentioned it for Realistic Writer Elliott compat!
Don't split them up just so you can cmct yourself 
I wanna make an artn crafts looking table and some barrls with differemnt flowers/herbs in them and some different flower related crafts
I'll have to look at that mod too I've always wanted Elliott to be written more. Do you have mod recs at all? Id love to share 

in fact, it looks like all the console logging you're seeing Alan is not entirely because of Content Patcher at all
contentHelper.InvalidateCache(delegate(IAssetInfo asset)
{
bool flag = reloadAssetNames.Contains(asset.NameWithoutLocale);
if (verbose)
{
this.Monitor.Log($" [{(flag ? "X" : " ")}] reload {asset.Name}");
}
return flag;
});
(ignore the ugly formatting im lazy)
Furniture machines 
oh it looks better formatted than the preview ok
As in Elliott dialogue mods or mods that have RWE compat? Either way, Sweeter than Pomegranated 
Content Patcher tells SMAPI to invalidate assets based on a predicate rather than specifying specific asset names
and it just logs whether or not it was included in the list it calculated as needing an update, but SMAPI is the one iterating over everything
Ooo okay cool, how are you btw it's been a long time?
Not too bad, my Sunberry NPC releases in a little over a week

I'm so excited for sunberry
(CMCT works with C# mod configs)
I just know it's gonna be quality content. There's a lot of talented people involved in it
Do you know who all is making NPCs for it I've been so curious it's actually making me itchy haha
Are Jorts and Jean moving? Or do you have a new mod for Sunberry?
agreed i just can't wait to get to know all the characters and explore it and such, take a gander
Yeah, I would join the server but I am big anxious because there are ppl in there I admire a lot. Plus I've made a fool of myself a few times so imma hide in the darkness and play quietly with my blood pfff
Blor bos!!!
Not blood
Phone pls
i wonder if any npcs ill recognize will end up in sunberry, i forget where but i heard some people are moving their npcs around i/e some goind to ridgeside or sunberry
new tia npc!
they're called wren and I already love them
(i am excited to play sunberry in like 2 years when i eventually finish my own NPC
(not bc im putting them in sunberry or anything but bc i wanna finish them before doing another full playthru))
Cool. Thats exciting
(sometimes it's what you need to do to have motivation. "i'll play once i finish this")
hi!!
Button npc real 

(if only it worked!)
my NPC has been "real" since a year before 1.6
barely real, but real!
It's ok my npc is 8 anim frames rn
a start is a start
Ive not touched the birb since last year
I can't wait to see y'all's NPCs that's pretty exciting
Something i perhaps need to do is
Make npc like pathing on trinket companions
So that the bit where birb comes with you can be more polished
sounds like you're scope creeping and/or procrastinating your actual NPC
I am procrastinating so hard
Same though

Though the thing is i feel the birb is just a mascot for a mod whose real focus is a dungeon
Hello, is there any tool to generate the Sprite numbers of an animation, or if or if it has to be manually?
I respect people with the patience to do NPCs. My mods are all small because I lose interest in bigger mods and don't finish them.
The are all pretty simple.
And the fish statue needs to be updated for 1.6. But the others all work.
I thought I had no attention for big mods but here I amstill staying strong making a smol expansionish update for my npc mod :B
step by step is a big help in doing big mods
currently staring at all my location data to add forage and fishes
But, if the values change, do CP knows which patches are the only ones affected by those tokens so it only try to patch the assets that those patches are modifying?
In that case, adding maps or mods that have 0 OnTimeChange and 0 Tokens should not alter the performance of the OnTimeChange check?
yes, thats what happens in GetPatchesToUpdate, it keeps track of tokens that have changed and also tracks what tokens a patch relies on so it can only check the ones necessary
I also have about 40 mods (in my current build) that are just cross compatibility stuff, and small edits to other peoples mods. But I can't publish those.
(or well i mean, thats what GetPatchesToUpdate checks, the token tracking stuff happens elsewhere and for general purposes)
though more accurately to say, Content Patcher keeps track of what patches a token affects, not what tokens a patch relies on
hi, sorry if this sounds noobish, ive never modded before, but im trying to make seasonal Baechu and Romanceable Ras SVE compatible, and I want to know if this sounds like it would work:
My problem is that the seasonal baechu wizard portraits and sprites only have a 2 expression sheet, and I need at minimum 7 expression for RomRasSVE. Would all I need to do is create a 7 expression sheet and use it to replace the sheets in the Seasonal Baechu or would I need to put them elsewhere? I think it's also missing a hug and kiss sprite and i have no idea where those sprites would be put on a sheet so if anyone could point me to a sprite sheet breakdown that would be lovely
sorry for the long message, thank you
For example, I have a small cp mod that just makes your trees tappable. I wanted to be able to put tapper on them even if I only got sap. So I made it so I could. But I am not going to publish something like that.
is that something people would want? to be able to tap them?
So the more tokens, the less performance every OnTimeChange, even if its a token that might not change in the playtrough, since it has to check if it changed?
i know the reuu trees you can tap im pretty sure hm i could work something like that in
I don't know, I know I wanted it. Mostly because a tree a couldn't tap felt like a challenge. š
hmm ill consider that then
Is it possible to make walk underable arch furniture or would that require a framework
i think it would depend on priority (with romras and baechu both installed, which portraits do you see?) but generally you'd wanna replace one sheet or another. it would need a hugs and kisses sprite too but unfortunately i dont remember on hand where to find a sprite sheet reference, but if you unpack the files then its in the same location in the spritesheet for all female characters
if a token is actually immutable and cannot ever change, CP knows that and deals with that appropriately. otherwise, it cannot possibly know that something doesnt ever change in a playthrough, it only knows that it can change. so it does have to let each token run its "did I change?" check at the appropriate update rate interval
CP does do a lot of optimizations for its own tokens though where possible
But I mean, a token that is a "hasSeenEvent" from a Character, but I hate them so I never see that event
I have over 40 mods like that for tiny things to make the game feel a little more complete too me. Did the same thing to Dwarven expanded. Have one whole mod customizing it to my tastes. (Basically making the animals need the custom building only, rather the both the barn and custom) But agian, I would never publish it.
Is it possible to do the following with CP: Add a new building to build at Robin's that will only house my custom animal?
content patcher has no possible way of knowing you have not seen that event
unless it checks
Yes
I do it in my mod
Brilliant
So It will try to check the change every OnTimeChange if I put a patch with a Update of OnTimeChange that depends on that token then. I remember seeing one like that in the NPC June for example
the intricacies of how exactly content patcher decides in what order to check tokens and when is beyond me, i imagine there are some optimizations somewhere to check like "if no patch has this token ontimechange, we dont need to update it with the rest of the ontimechanged ones", but yes if you use a token in an ontimechange patch then it must be checked for an update at every time interval
but the actual check is likely to be very very minimal performance loss
Here's a standalone dino example
i mean, for hasseenevent, its just a dictionary lookup
@reef kiln hmmm tree sap š
actually scratch that, that might be a dictionary check entirely
I think VPP has a talent for that.
bc i believe that token actually just returns all your seen events
!vpp
Vanilla Plus Professions is a professions and talents mod by KediDili. It expands on the vanilla professions by adding new profession choices at levels 15 and 20 and adds a new talent tree for each skill where players can earn talent points to purchase perks that improve various gameplay aspects. It has been released on 25th of December.
It can be downloaded from Nexus: https://www.nexusmods.com/stardewvalley/mods/20054
Did you just do that in that short a time. Wow, I am impressed.
content patcher does have stuff that checks if a dictionary has changed from its previous value though and i imagine there are optimizations there. but if a list/dictionary has not changed since last time, it still had to check ofc, but it wont redo any patches if nothing has actually changed
Oh no i mean for my trees
but there's no way to know if a token has changed without, well, checking it ofc. unavoidable
You can also make custom shake item
(besides the aforementioned "if a token is known immutable" exception)
you can do that in vanilla too make shake items and tappable sap stuff
Tho normally the expectation is "shake down a seed for this tree"
(HasMod, for example, is immutable and wont be rechecked bc it cannot ever change during a play session)
(i meant in vanilla yea, not vpp specific)
And the random mystery box once they are unlocked. But not sure if CP can do that.
I thought that one's hardcoded
I'll try changing a few CP mods that I downloaded to see how performance behaves when changing tokens or Update rates then.
to be clear i dont wanna give off the impression that it doesnt matter at all either so i hope im not! OnTimeChange should still be avoided if possible
It might be, never check it actually. But seeds and boxes are my expected return for shaking a tree. So I added it.
the fewer updates you can get away with the better
My CP mods are not that many in comparison to what I've seen here
just that Pathos has worked very hard to make CP as optimized as possible
(not to say there is literally no room for more, just that its been a big priority)
ive never noticed lag with my mod but hmmm maybe i should ccheck
Y'all how the heck do you run unit tests for your mod? SMAPI isn't shared unless actively running due to the way the Nuget packages are set up, so if your unit tests require any aspect of Stardew code they completely break
The biggest lag in my game that I have found is at 1900, as that is a transition to night. And I think alot of NPCs also start pathing at that time.
i dont know anyone who runs unit tests
someone made a library for it
so theres one person i guess
i do not think i have many edits that happen at 1900
I can see why. The way the nuget stuff is set up, it gets pissy if the project is anything OTHER than exactly a Stardew mod
speak of the devil
Linkoid I've been trying to get a simple set of unit tests working for the past five hours
you havent been here for like a month, how did you notice this
How the hell
Use valley unit
: 3c
keyword alerts and/or ritualistic summons
my test is running a function from an OnButtonPressed event
SmiteUnit (almost) works just like you'd expect
you can get keyword alerts for discord?
Why SMAPI isn't directly able to be referenced I will never freaking understand
I do put some test console commands though
just gotta do the default json now
oh wait, i guess i did google for the library, you can get alerts for that cant you
I decided to poke my head in for a minute, and then you sent that message.
not using any regular means, hence the ritualistic summons
oh, so just extreme serendipity
It's fated
You act quickly. I love it.
i did see you had updated a repo like less than an hour ago after i sent it and did wonder if you were around
I do like using valley unit for testing split screen but i wish i had way to launch 2 smapi
That is the more relevant multiplayer test case imo
I gotta go fast or i will die
I'm currently modding R.E.P.O. lots to be done.
I need some help with Morris... I see you can use him out-of-the-box in events and he has a sprite/portraits, but he has an empty Appearance [] in data\Characters, and giving him a home and schedule doesn't seem to cause him to show up and follow it. What do I need to change about him to get him to follow a schedule? (I know his 'sprite' in JojaMart is just a couple of tiles and I know how to remove them)
anything messing with morris is inviting sve incompatibility afaik, just fyi
You can write regularly ol unit test as long as you aren't linking to game
I'll detect SVE and handle it separately
The stuff I need to test is largely to make sure I'm consistently pulling the correct game data, sooo
i will ask the question of "did you sleep a day or two first" re: morris
Stardewui has unittests on itself
beyond that i have no answers
And that's approximately how it goes there
Yeah, you'll need to use ValleyUnit for that.
if it involves game data
I slept a day I'll try to sleep a couple more and see if that changes anything
I'm working with a lot of gamedata and it needs to be sorted and set up correctly (p much EVERYTHING to do with fish)
The thing about game data is just "well people be modding in fish too"
What i did with machine mod is that i have my own variant of patch export
yeah you wont have all the data without letting content patcher run
or other c# mods
That's literally insane
That dumps the transformed models via a console command
what do you mean. how do you expect content patcher to add mod data without it running
or do you mean the patch export thing
slept a few and still get this, wondering what I need to change for the game to see him as a valid character
Sadly i did not catch many quirks and had to patch version 4 times on week 1 lol
Look at the marry Morris mod, or Morris redeemed. They both make him a full npc too
Oh I think you responded to smth other than me, I thought u were saying to access base game data that CP had to be running
i was aedding on to chu's comment
Fair enough, not insane
SVE has him named MorrisTodd
I think
his internal name is different
It doesš
Yeah my case was that my mod is designed for mod list with many artisan machines
but yeah admittedly i dont know much about unit testing libraries but idk how id expect one to access that data without being purpose built to access it for tests, which is.. what valleyunit is
It doesn't make sense to test without a good number of those mods
But the whole point of Unit Tests is to N OT have to repeatedly open and close the game over and over and over again
OK hmmm, I was hoping I wouldn't have to create a whole new 'character' but maybe I do
Well it's not a unittest lulu, it's an integration test
I
I did need it just for development reasons to figure stuff out
you do yeah, Morris is a hardcoded name in the game, theres no changing it to be a full npc. You can edit the map tile out and put him in as a different npc with the same display name
The valleyunit thing basically auto opens the game for you
OK, thanks everyone
So that you don't have to press the buttons to load save and stuff
I think we're having two separate conversations at this point so I'm just gonna say thanks for the ValleyUnit thing and poof
I'm guessing ValleyUnit similar to things like Selenium, Chai and iirc Gecko(? I may be completely making that one up) where it allows you to run tests using Stadrew as a frontend?
are those even the correct names, I can't remember any more lmao
all those names sound made up to me
Yeah it is kind of selenium like
actually Selenium doesnt i know that one admittedly
Selenium is definitely real, I'm 70% confident about Chai and like 5% confident about Gecko
I am certain there is a unit testing framework named after a drink, I'm just not sure it's called Chai 
Mocha iirc
"Chai is a BDD / TDD assertion library for node and the browser that can be delightfully paired with any javascript testing framework."
"delightfully"
i see several guides for using Chai and Mocha in tandem
Unittests r my least favorite part of job 
Chai is real too apparently! I did vaguely remember that there were two
I feel like they never catch anything useful since it's usually running in a vacuum
isnt that what unit tests are meant to do
This is ValleyUnit. I forgot to write a README but it does work as it is now.
See the tests folder for a functional example.
https://github.com/linkoid/Stardew.ValleyUnit/tree/main/ValleyUnit.Tests
I do have a proper README for SmiteUnit though which is what powers ValleyUnit.
https://github.com/linkoid/SmiteUnit#readme
And this is the package reference to add to the .csproj
<ItemGroup>
<PackageReference Include="Linkoid.Stardew.ValleyUnit.Sdk" Version="0.1.0-alpha" />
</ItemGroup>
Unit tests might be one of the most misused patterns in software engineering
Yeah that is indeed what they r meant to do
unit tests for in a vacuum, integration/end-to-end for real cases or smth? idk. im not a very good tester
I just feel very lost about it's purpose
logic vs flow i guess
having been to what was an attempt to teach unit testing in uni (after already having experience with them previously) I now have a bit of insight as to why they're so misunderstood
In modding land integration test is your mod hitting one of those 1k mod people and then they come back with a smapi log if you are lucky 
Unit tests are all about automated regression testing of very small units of work.
The bigger the unit the less useful it is, because when it fails it tells you less about what happened.
Also, unit tests only give information when they start failing, but if they can do that at random they lose all power (boy who cried wolf)
And if they can never fail, they can never provide value
I submitted my practical assignment late, and the TA checking it asked me if I already had it verified once. I said no. He said I was the first person who realised that when testing a calculator class, you cannot use the class' own subtraction function to test its addition function etc š honestly I don't think I was even taught that when I was doing automated testing before, I think it was just common sense?
Tbh the only times I will personally do a unit test, is it it's a sufficiently complex unit of work that is also kinda annoying to just manually run myself
but yeah, afaik nobody teaches it properly but we expect people to understand it, so I can't imagine we're going to see much improvement in software testing any time soon 
When you start adding mocking it can be easier to accidentally make an impossible to fail test, or a test that's only testing your mock
And adding code coverage metrics can add incentives to add bad tests
also it appears that gecko is indeed something I fabricated, whoops
but hey, 2/3, not so bad
For example smapi has unit tests for the mod rewriting functionality because that's a nightmare code.
But doesn't have unit tests for the prioritised event dispatcher
Like testing a custom multiplayer mod that requires launching two players every time for?
and then going to a specific place at a specific time
unit testing literally every method just leads to spending more time debugging bad unit tests than bad code imo
(in general, not just in modding)
arent all names made up? š¤
Gecko is the engine name of Firefox, so selenium and friends kinda use it for tests š
you just unit test the public ones, obviously.. ^^
(and see people change very internal methods to be public so they can unit test it easier)
so I was right all along and am never wrong and should never have doubted myself? /lh
!modideas
If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas
However, this does not mean anyone is guaranteed to work on your ideaāmodders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.
One of my biggest pet peeves about unit testing is people making worse production code in the name of making it testable
post that there, and probably start with the please part next time you ask someone to do something for you š
use sap to manufacture bubblegum in the valley
And while in the process making it harder to troubleshoot when it catches fire at 3am
^^
you can use fruits to add flavor to it
but hey, at least the fire alarm will be going off! sure, there will also be screaming from all the things it will inevitably affect, but now you got an extra warning, right...?
I will say though that regression tests should probably be used more often than they are
just regression test everything
Why wouldn't you extend friendship to your testing dll instead?
That doesn't expose private
@ornate locust How hard would it be for you to make a yellow version of the couch for your tilesheets? 
Not having true encapsulation does make bad unit tests more tempting
Not too hard. I can add it to my future list, when I'm not making good progress on my NPC mod
doing festival placements right now 
Yippie that would be amazing! I appreciate the thought
festival placements are... not fun
Good luck with your festival placements... figuring out where to put them is so hard
The amount of times I would be like 'yes this is perfect' and then realize someone else was already there is... a lot
Graph theory 
one day...
I have so many when conditions for different npc mods 
What if we just randomized who got to show up that year
that's horrifying Chu
I am 400 iq trust
I went through the spreadsheet, though I know it's not infallable and a few of the maps are a bit busted. Then I went through the years with a pile of NPC mods in, with and without SVE
Damn, the dedication
Hey I did cheat, I'm not crazy
If there's overlap can you talk to everyone on that tile
CJB to set the date to right before a festival, sleep, go to festival
I just don't care anymore. I have so many noc they are going to overlap. I have just accepted that some npcs are very close to each other š
I've talked to multiple NPCs on the same tile before
lmao I dont even set the day to right before I just do it the day of and change it to the time because it still triggers the festival
It still took a while, but it wasn't UNMANAGEABLE
They're just sharing secrets with eachother is all its finnneee
Yes, you talk to the in order as the text runs out. Unless the mod author set the text to repeat forever but I only had that happen once.
Why is Shane dead
I have all the spots I want marked down, just have to get the exact coordinates from Tiled and put them in the ol JSON
and do a small map patch because the year where there's trash all over the fair, Bill is going to be ticketing the litterer for being an asshole
(im not ... Totally sure the content in that video fits within server rules)
How does it not? He's not dead, he just has some eroded stomach lining! (and its just makeup) --- its film!
Hence the "not sure"
I mean you can see him in the audience...
Bold of you to assume I can see that well
i think you are taking my saying that as me saying "you're breaking the rules" when all I'm saying is I'm literally not sure. a horror movie IRL would show that too, but I don't think it'd be allowed in here either. I'm not a junimo though, I'm only saying this as a "I don't want you to get in trouble so be careful" thing not telling you what to do
welp time to try my hand at a custom item
This server is pg13 right
Again not saying sdvhead video is rule breaking but I am wonder about general content guidelines
Discord itself is 13+ only
i just know depictions or implications of violent acts towards NPCs aren't allowed, it's just. depiction within a depiction that gave me pause
Saw a post in modded farmers asking if there was a building version of a watering trough that's part of the base map, and since then I have been thinking about a framework mod that'd let buildings dynamically apply map overrides to areas. š¤
It honstly sounds like it wouldn't be hard... until you have to deal with moving or demolishing a building, lol. Then: terrible.
well there is a conveniently patchable function for "after building move"
An item sprite is 16x16 right?
that doesn't seem like it'd be that bad to me
Flash thought you could make the mod as a building from Robin. Does it need a framework? Or are you thinking of making it so it could be an item?
depends on what type of items. regular items yes, big craftables are 16x32, furniture can be whatever (but still composed of 16x16 squares)
You would need to reset the map and then apply every other map override again. I guess that... might not be too terrible. I'd have to test it.
ty!
I'm thinking of something completely different. You can make a water trough like the one that was requested using just an edit to Data/Buildings thanks to the tile property overrides.
"watering trough" building is already possible with pure vanilla
what khloe said
In fact the Well is already nothing but a data asset using tile property overrides.
Oh, so a framework that makes map patches buildable? Or do I not understand.
Yeah, that basically.
Let you place map overrides as buildings.
Like, say you want to build a pond on your farm map. You place a building that actually applies a map override.
And since it'd be a map override it would use the original tile sets and be compatible with recolors, and not just a big image of a pond that behaves weird.
buildable ponds...
(Granted, my original thought for buildable ponds was more the creation of a tool like the teraforming tools in AC:NH so you could just freely change your landscape and magic would happen. I should go back to that mod, actually...)
But the buildings thing could be neat, honestly.
(buildable waterfall please?)
dynamic festival npc positioning framework?
finally, Map Editor Extended Redux
This old idea of mine also included a procedurally generated farm map that would be fully customizable using the terraforming tool. That sounds a lot more annoying to make than just a building map overrides framework.
Yeah i wanted a mod like this too
Though initially i explored how it might have worked if it's all just paths that are "waterways"
bro why is making a book sprite so hard
bugger it, im stealing the one from the tilesheet
oh were you not around in this server when it was first discussed
Map tile approach has some limits like what do when water crosses tile/grass boarder
no, did I miss crime?
no nothing ever happened with it
The thread's still there but yeah nothing happened
just a handful of mod authors myself included who would like to do it
but none of us with the time committment to actually do it
Yeah, there would have to be some extra tile sheets used for a few different kind of connectors if someone actually did make such a mod.
Would the implementation of that be similar to how the tourists in Central Station work with rotating characters, but with main spots and an overflow area?
it wouldnt take any NPCs away, itd move them to a next available tile (or half tile)
ive made 15 plants so far idk how many would be good for a small mod ā ļø
The mixed bag tile sheets r very powerful for path
Yeah, I was thinking main spots rotate and anyone not there was in overflow/still present but elsewhere
Need something like that for water
I was looking at this one
the reason for graph theory is bc ideally it would place people as close as possible to their original location
or allow npc creators to specify alternates
It's got just grass
no need for time commitment, here's your pseudocode
if (length(npcs_in_this_festival) > unoccupied_tiles_on_map) return false;
foreach (npc in npcs_in_this_festival) {
x = random(0,width)
y = random(0,height)
while (tile(x,y) is occupied) {
x = random(0,width)
y = random(0,height)
}
npc.setposition(x,y)
}
for legal reasons this is a joke
bc e.g. if someones NPC talks about the punch bowl, it makes no sense to move them away from the punch bowl
luckily for me, i can still sue you despite your legal reasons and itll cost you money to get it dismissed /j
what if the punch bowl smells bad
Honestly i think randoming the npc that get to use the tile that year is fine kinda
i mean, theres plenty of ways you can get rid of collisions that would be easy
Just gotta play 10yrs to see all the guys
but theres no point in doing it if you arent gonna do it right
allow them to define a preferred area, go down the list from smallest area to largest. if their area is fully occupied, sucks to be you, go outside
nuh uh, I will get a lawyer who takes pay on win and countersue you /j
i mean technically all it takes is a matching algorithm really
its just implementing that is Sucks
not the most Sucks but Sucks when you have other things you wanna work on more 
also dont forget NPCs who move during the festival
put a little picket fence around their tile. easy
i think you may be misunderstanding how NPC event movement works
no, once the fence is there, just remove the movement
the fence is your visual explanation for the character being trapped
I'm reminded of the dating thing $university did
"just"
Is it called the marriage problem or the secretary problem?
edit their schedule data to have them not moving. ez
In mathematics, economics, and computer science, the stable marriage problem (also stable matching problem) is the problem of finding a stable matching between two equally sized sets of elements given an ordering of preferences for each element. A matching is a bijection from the elements of one set to the elements of the other set. A matching...
cmon iro keep up /lh
Has someone extended it to gays and lesbians yet
there are a lot of other problems in finding a group of mathematicians and computer scientists stable marriages
... days? matching lesbians with a day of the week?
i choose friday
top priority. ill accept no other matches
I am not a lesbian and therefore do not need to choose a least bad day of the week 
I am... I need that question mark as a pride flag
Do I have to load item textures into somewhere before assigning them to an item?
Internal asset key?
content patcher token
you have to, unless you are using an internalassetkey token
but also you should only use those in specific scenarios, where you don't want anyone else to be able to edit them for your mod etc
My mods are open source so I will go load it
idk what open source has to do with it but yeah, I'd say load it
Hello! Is there any precondition that requires the player to have completed a quest? I didnāt find one.
wherever you want. when Loading your own assets you make up the Target asset name
just make it unique
There is not
There are tricks around this if it is a quwst you wrote
Can't you use the has seen event. As most quests have an event with them. We'll special order quests anyway. Help wanted might be an issue.
It is. What should I do if I want the farmer to receive a letter after completing a quest? Should I create an event? Or is there an easier solution?
Use Data/TriggerActions and look for the autogenerated questComplete_questId conversation topic
So I could just do "Target": "QWEFQUQWEBNU" if I wanted?
you could use
yes*
you could yes. but dont. bc if someone else uses QWEFQUQWEBNU you're fucked
So when you talk to so and so to complete quest they send a mail
Alright, ty! I am new to making custom items so...
Should it be added directly to the quest dialogue?
Best to use my nexus ID and Mod id
Yeah
ok thx a lot!
That would be a huge coincidence, and very funny.
correct, you can use the {{ModId}} token there
also i have a quest related question: subclasses of quests need to be registered with spacecore too i imagine. does spacecore correctly save quest progress in that case. actually, come to think of it i dont know where normal quests save progress
do they just calculate it on the fly
wait does that mean it tracks whats LEFT or what you've already done?
It's got the actual who is left list there
huh
Even tho in game it shows 13/28
That's just how Socialize quest work tho
Help wanted saves a number i think?
For number of fish caught
oh yeah i guess that is what the DescriptionElement serializer is for i imagine
maybe
i dont like looking in quest code
Monsters has -2 reusable things for actual behaviors but u r right that it doesn't have to go into the save file
Does the target location i am putting it into have to exist?
Do quests have moddata
yes
I keep getting this error because of it [game] Failed loading texture NotAGardener.TT_32321/Book.png for item (O)NotAGardener.TT_WillowsBook: asset doesn't exist.
sounds like you havent replaced the texture in your item with the asset name you creayed
created
using your example from earlier, it would be "Texture": "QWEFQUQWEBNU"
what did you set as your load target?
https://smapi.io/json/content-patcher/dcc95b31221642a1905b030704bfe037 I am using a different one
ah, the classic "asset name vs sfolder vs file path" confusion
you're not making a folder
"{{ModId}}_32321" IS your book png
its the name you've given to that asset
it is one thing
"{{ModId}}_32321" is not a folder of things
Ohhhhhhh
your texture is simply "{{ModId}}_32321"
Yayyy it works! Thank you!
nothing inside a Target line is ever a folder. the only one that can be kind of thought of as a folder kinda but try not to is Maps/
but only bc people often say "load it into Maps" which isnt technically correct but people say it (including myself) bc its easier
you're not actually placing anything into anything else when setting a Target
also i dont think your gift taste is right
pretty sure it needs to be the item id
not the name
I get that wrong all the time. I just keep changing stuff till I get it right. I don't get get path, folder, asset. I need to figure it out at some point.
I was going to fix that later
do you wanna be a guinea pig for my tutorial about it
Who is that directed towards?
Frog, unless you're offering too
The item is for a quest, how can I make it so you can only gift it to 1 person?
i don't remember if you can
there is a reject dialogue but this would need to be set by npc
maybe there's a context tag or a specific type/category that would work
if its item type is set to Quest NPCs should reject it if its not relevant to them i believe
I am using robins axe quest as reference, I will try something
Ah, ty!
I can read it if you are asking, but I am afraid. Not sure why but help with a tutorial feels like a big deal.
i promise its super casual i just wrote it but i have no idea if it makes sense to anyone lol
no pressure if you dont, but if you do, its here. not mobile friendly though
or well. kinda mobile friendly ish
not mobile recommended
hi, does anyone know how multiple "homes" work with custom npcs?
the wiki says they use the "first matching one" but i can't seem to get it working even though smapi says the game state query is true. He just uses the default.
"Home":
[
{
"Id": "NSHDesertFestivalHome",
"Condition": "IS_PASSIVE_FESTIVAL_TODAY DesertFestival",
"Location": "Forest",
"Tile":
{
"X": 4,
"Y": 5
},
"Direction": "down"
},
{
"Id": "Default",
"Condition": null,
"Location": "Woods",
"Tile":
{
"X": 49,
"Y": 26
},
"Direction": "down"
}
],```
this is just a shot in the dark, but i think they may be teleported Home the night before? not 100% on that
yeah homes are working in a delayed way
as far as i remember
they change the map and the tile at a different rate
homes aren't worth using for temp/short change
Yup, does not work on my mobile. Sent it to myself as a link in an email. Will read it when at my computer. But probably won't be till tomorrow. Sorry. It is the kids bed time marathon here so no computer for a few hours
they are worth using for permanent/long term change
he can't path out of the woods sadly š
(ex : i tried using them for "npc visits on week-end" and it wasn't worth it, but leo on mainland is worth it because it's permanent)
it should work on mobile, just not the best read haha. like i said tho, no pressure at all 
then use 0 schedule, with the limitation of it having rare issues
is Woods even a location
yes it's secret woods
i love CA naming conventions
i'll try that, does it basically teleport?
@ivory plume I figured out what causes the glitch for the ticket machine to not appear in central station.
Whenever you do a patch reload on the mod that spawns it, the machine decides to vanish.
we have the woods which are actually Forest. the Backwoods which arent woods. and the Secret Woods which is Woods
no, it starts them on a map on the day they have the 0 schedule, it's a bit different than teleport
interesting
we have joshhouse which is alex, and willy is dick
those at least make sense to me bc they were prior names
The link worked, but could not see the other 1/2 of the screen could only read the explanation text. š I will read it though, I promise and will let you know what I think.
i cant imagine the Secret Woods were ever meant to be the Normal Woods
you should be able to if you drag from the very edges of the screen, but yeah.... i just assumed it didnt work either until someone else said it did. one oif these days ill get around to making it mobile friendly, maybe. its admittedly not a high priority since i figure most people are modding on PC anyway. the classic One Dayā¢
Is there a way to place usable kegs on a map?
FTM
It is almost like he named them before he finished the story...... which when I think about it, he probably did.
Fine... I will give in and use FTM...
basically he hides in the woods all year cause he's 100% not from around here XD
he sneaks in to spy on the town when he can šļø šļø
I wasn't aware there was any such issue. The ticket machine is added when you warp to the location, so I guess it happens if you patch reload while inside a location that gets reloaded and it had a ticket machine?
Correct
Hmm. I can add some logic to account for that, but at least it's not something that'll affect players normally.
Can vouch for that. Can confidently say I have never patch reloaded even when making mods...... mostly because I only learned about it like 3 days ago. But still never done it.
me whos been restarting the game every time i change something: Tell me about this.... "patch reload"
!reload
-You cannot reload tokens, that's a forced restart unfortunately
-If you've done any CHANGES, then type into SMAPI:
patch reload YourMod.UniqueID
-If you've done i18n DEFAULT.jSON changes, then type into SMAPI:
reload_i18n then
patch reload YourMod.UniqueID
-C# Visual Studio has a feature called Hot Reload
-C# Rider also has Hot Reload
-Generally working in C# it will be called "Hot Reload" (usage may vary)
neat!
im not sure what it means about not reloading tokens
(If you're working on a Content Patcher pack, the troubleshooting guide documents the various commands and tools available.)
patch reload has no effect on the ConfigSchema or DynamicTokens sections; if you want to change those, you'll need to relaunch the game.
I adapted the portrait sheet and it worked! it seems when there was no portrait from the baechu mod it was defaulting and finding a replacement whereever it found one. thank you for your help!
stares into the woods
thanks! What are the rare issues i should watch out for?
i knew that part, but to me it seems to imply tokens in general, not just those ones
Does anyone have an example of FTM being used to spawn big craftables?
(Well, it doesn't change any other tokens either.)
it happens that npcs with 0 schedule sometime duplicate, it is rare, elusive, reasons unknown
mysterioussss
i know it technically d oesnt i just think that for a new modder reading that might give them the wrong idea that they cannt edit their json to move tokens around at all or change what tokens theyre using, rather than just not being able to reload config and dynamics 
to me it reads as "if what you're editing uses tokens, it cant be reloaded. restart your game"
if you have a better wording i think commands can be edited but it's hard to find the right balance between keeping stuff short and clear and giving details
New command added! You can use it like !reload.
!reload
- Content Patcher pack: enter
patch reload YourMod.UniqueIdin the SMAPI console window. This will reload and reapply all your patches (but won't recalculate theConfigSchemaorDynamicTokensections if you use them). - Translation
default.jsonfile: enterreload_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.
chefs kiss
i just witnessed history
How is that (aside from the last bullet point's formatting which I just fixed)?
if i was gonna be really nitpicky, id say YourMod.UniqueId might imply i should write BETAS.Spiderbuttons.BETAS but thats very nitpicky. otherwise i think it looks grand
I could change it to patch reload <your mod id> if that's clearer?
i think it cant hurt
The C# bullet broke for me
oh yeah i was confused by that too for a split second
I understood it. I think either way works.
pathos fixed the bullet point
That kind of implies to me that reload_i18n only reloads default.json, and I don't think that's accurate?
New command added! You can use it like !reload.
(Fixed the mod ID format and removed the default.json bit.)
thanks š
!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's pretty rude of you
that is why i said "dislike" instead of "hate"
(The documentation is open-source! Feel free to submit improvements when you figure it out, since it's easier to know what's confusing when you're not already familiar with it.)
(i would still feel slighted if someone said that about one of my mods. the creator is still a person who hangs around here, yknow)
I have not used FTM documents, but looking at the code, it did not seem that confusing. But that is only for foragable stuff that I looked at.
I think it's fine to say "this documentation confuses me and i don't know how to do X"
Dislike is passing a judgement on the work put into it 
For example of ftm big craftable look at little free libraries
Anyone know why the bush directly on the tile where my door is would be there? I did a replace function and that is not in my tmx on any layer
bushes and other terrain features are generated once and stored there
Ah so this was an existing save
!rtf
Reset Terrain Features (https://smapi.io/mods/#Reset_Terrain_Features) is a mod that lets you reset, clear, or generate everything that spawns on a map using an in-game menu. That's especially useful when changing maps mid-save, as the debris will otherwise use the old layout (causing things like trees in the water or bushes blocking exits).
they arent regenerated every time the game loads
Did you add an existing map?
wdym
if that command is more so meant for players it wont be useful for them
Yeah
i did start working on an alternative RTF though
Although they could run via debug the avg player wouldn't know how
I mean the fact that its solveable is enough for me
theyd need to install BETAS just for that, though


