#making-mods-general
1 messages · Page 477 of 1
Can u just call whatever skip event button calls on click
my context is just my memory from previous days, so not your fault
It sounded like a modded gameplay question out of context, LOL.
I suppose u could sorta click a menu if u call receiveLeftClick too but idk which one's event lol
Ah I see what you're trying to do. It seems like the second entry is overriding the first. For example:
If BathroomExpansion is listed last, then in that area the final tiles are always either:
-> Fireredlily_FarmHouse2_BathroomExpanded
-> Fireredlily_Farmhouse2_Bathroom
If you put BathroomRenovation last, then the expansion tiles get overwritten as well I think..
Right, no matter what order I use, one of the states get overwritten when I don't want it to.
Thank you! I will take a look at this receiveLeftClick.
Well Event.cs is probably better bet here start with that
Sadly it does seem like you can't get a clean 3 stage sequence on the same exact tiles using two AdditionalRenovations entries
If you can avoid simulating input you should
Im thinking of dismissing a Dialogue box, but I haven't found the exact method from SMAPI.
Right, I might have to just settle for making the users choose from the small or expanded bathroom via config and not through the renovation, and let the renovation just be the existence of a bathroom at all.
is Data/HomeRenovations an option? it seems to have direct support for multiple flags, but idk why the wiki doesn't talk about it other than the migration pages 
Esca, I'm having to use both in combination already as it is.
If I don't use the map property in addition, then the map simply doesn't update to include the renovation map.
Data/HomeRenovations is what is making it show up in Robin's list.
sorry, no idea how the system works re: that asset
It's a weird system to be sure
yeah the map property directly uses the farmhouse map overrides and skips the robin middlewoman
I tried excluding the map property and that just meant the map never changed.
the wiki doesn't talk about it because no one cares enough about it 
Lily has used home renovations more than any other modders I've seen combined in like the last year
the price you pay to be a pioneer...
Well, at least I have confirmation that it is indeed a limitation on the map property only checking for one mailflag. Thanks for looking into that, Button.
It's late and brain fog is hitting me hard, so I'll see if I can't figure out a workaround or an alternative to do what I want later ❤️
https://smapi.io/json/content-patcher/cff5e92bfb52420ea9c02463b7d0ffff
This is kind of messy though, could test it? I dunno otherwise
Yeah, I was trying to move away from doing EditMap directly to the farmhouse, because the behavior is kind of cursed, but I may have to go back to it.
Yeah it is scary for sure lol
Alternatively, I can just do it to the loaded Bathroom texture maybe.
it seems like a dynamic token in the expanded entry for the inactive map (if open flag, use open, otherwise use empty) or a conditional edit to the empty map patch would do it
but yeah, probably several routes with CP features, it's just binary in the data itself
(I'd been misreading earlier and looking at trigger actions
)
If I went back to config-based, then I would just be changing the Maps/Fireredlily_Bathroom entry based on if they wanted the small or large bathroom.
Fireredlily if everything else fails you can maybe use the mmap map overrides thing i made
It can apply after vanilla map overrides for sure
I feel a little silly to suggest this when it's kind of based on farmhouse renovations tho
Honestly, this would be less of an issue if I had the bathroom somewhere else, because then I wouldn't be creating the open space on the right side and shifting the contents left into the blank space.
The bathtub/changing area and mirror are the pieces that kind of block traffic and make it hard to add the empty space after them.
Anyone got any tips on how to read a dll file? I have the app to open and edit it, but I can't understand it at all
Tag me if so please
You will need to de-compile the file to read its content, or find the source code of it on github.
I did the find the source code, but it's like reading a different language
It's batform I'm reading
I wanna make something similar just for my game that turns the farmer into a wolf
I also just been learning C# for like 2 days, it will be a learning curve at first for sure.
It kinda is a different language, C#
You get used to it, just keep at it. Persistence in tears was it for me lol
I just did a quick scan over the Bat Form, it seems like you will need to update the AnimalSprite, and the time of day when you can transform.
Other than that, the code should stay the same.
If u know java or some other oop before then not as bad
The problem with this is that farmer renderer sucks
And the farmer has 3many animations tbh
Is there some way for me to fix this?
A lot of harmony
By sucks i just mean "difficult to work with"
Not that it's impossible to do what you want because you can do basically anything with C#
Any tips for learning C#? I've done a bit of research but haven't really gotten anywhere
C# specifically for Stardew
honestly given there's a (massive) Fashion Sense content pack out there that does full-body farmer sprite replacements with pokemon sprites, i'd say it's entirely possible to change the farmer into a wolf with FS only
@lucid iron I got it, after reading so much, it was Game1.exitActiveMenu();, much better than clicking around randomly.
Where to get free to use .tbin file for stardew?
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!
I'm throwing in the towel, I'm on my 15th attempt and I don't know why my mod won't show up in game D; SMAPI gives zero errors but they aren't showing up in Marnie's shop.
Please help someone ;.;
can we see an smapi log please?
!log
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 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 88 C# mods and 503 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Is this kind of thing using mods? Or just for PC? I don't know I'm new to the game XD
Your tanuki are showing up in game for me. Looks like you have some sort of mod conflict. I recommend removing all your mods and trying with just this one.
Oh my, why are they all showing up individually now? D;
(Isn't that livestock bazaar? Could that do skins individually?)
(methinks so) (in regards to the ui layout thing)
My foxes are grouped under 1 fox D:
Because you wrote them that way? Why wouldn't they? They're not skins.
I wrote them just like my foxes but my foxes aren't doing this
I think you should double check that you did actually write them exactly like your foxes
This is what I get trying to copy and paste
I can't find anything different that I did ;.;
!json may help
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.
of the animal data
Did I not save the content file as a json? Did I save it in the wrong language?
The tanuki wouldn't be in the game at all if the problem was the file itself
it is just to see if we can see why they are showing individually
I just published my first mod and am happy.
Congrats! What mod is it?
Basically an add-on for the "Inches to Metric System" mod I made in correspondence with the author. The mod works by converting the minimum and maximum fish sizes into metric (though I suggested a change to that workflow) and that will permanently alter the recorded sizes of caught fish, making them three times bigger than they should be (not an issue when always using that mod and English).
I made a converter so that old save files will be re-converted back to inches in case you switch to a different language or stop using the mod.
I just realized that my code is a bit dirty, but it works.
That sounds so complicated hahaha
Great work!
Thank you.
changing the data value directly to change the unit sounds like a bad idea™, but I guess it's fine for a mod
the "proper" way to do that is to just change the code that displays the number. Probably how the game does it btw, it could have saved you some time to use the built-in system?
I wasn't the person who made the original mod. But yeah, I agree, changing the data isn't good. Which is why I made my mod to "fix" old saves where the data has already been changed by applying the formula they used in reverse. Due to rounding it isn't exact, but it works well enough on already corrupted saves.
The new method I suggested is to simply add a new language, because the game will only use inches for vanilla English, not for a modded language that uses English text.
changing this for the entire game can cause issues with i18n I think
tbh I would just patch the methods that display sizes rather than changing anything underlying
As I said, the new method I suggested simply adds a new language in the language menu which uses English texts but isn't considered "English" by the game, so the game will enforce metric itself. I agree that the old method was rather troublesome. But the new one should be easily togglable by switching between vanilla and modded English, while not changing anything for other languages.
no I mean your new language method - most mods have i18n files that load text only for specific languages, meaning that none of their text will be loaded for your new custom language
The custom language has the same language code "en", which is what the game uses to load text. Shouldn't that work?
does the game not use the full language and region code? (genuinely asking)
english is en-EN (or default for mod i18ns) but other languages have things like pt-BR which I would hope is handled differently to pt-PT
(or whatever the portugal region code is)
I've been using 24H Clock Language, which uses the same method, for quite a while and didn't encounter any issues. But maybe I haven't used any mods that could cause issues.
{
"Action": "EditData",
"Target": "Data/AdditionalLanguages",
"Entries": {
"English24": {
"ID": "MetricEnglish",
"LanguageCode": "en",
"ButtonTexture": "LooseSprites/LanguageButtons.xnb",
"UseLatinFont": "true",
"TimeFormat": "[HOURS_12]:[MINUTES] [AM_PM]",
"ClockTimeFormat": "[HOURS_12]:[MINUTES] [AM_PM]",
"ClockDateFormat": "[DAY_OF_WEEK] [DAY_OF_MONTH]",
"UseGenderedCharacterTranslations": "false"
}
}
}
As far as I know, the game doesn't check "ID", which is why it automatically loads English text simply based on the language code.
When you request a translation, it will automatically handle locale fallback (e.g., if a translation isn't available in
pt-BR.json, SMAPI will checkpt.jsonanddefault.json)
That sounds good enough to me. But I will read up on that. Thank you for the consideration.
fair enough! interesting that other mods use that. it may turn out that I was just having a kneejerk reaction and it’s a perfectly stable method for sdv
is there a way to detect long press on an android touchscreen?
you might have better luck asking in the android SMAPI (thai SDV) server, i've not noticed anyone here ever mention touchscreen gestures
I just wondered if there was an SButton or smth
Yeah
Inside VirtualJoypad
It has buttonAHeld, buttonBHeld, buttonAPressed, and buttonBPressed
The screen taps are SButton.MouseLeft
so I could detect MouseLeft and make my own long press logic ig?
I think so
Hello, I’m kinda new to this topic so please, bear with me while I try (emphasis on try) to explain what I want/need.
I wanna use more pixels/bigger arts for my stardew assets, like say 32*32.
How do I do that? Do I need a framework? And if so are there any available and working currently? :))
Weird question... but since we can in one action edit multiple assets with one FromFile, can we also edit one asset with multiple FromFiles? 
How would that work?
You need either spacecore or scale up 2
For example something like this:
"Target": "Portraits/NPC",
"FromFile": "assets/Portraits/Portrait.png, assets/Overlays/Overlay_1.png, assets/Overlays_2.png",```
So it'd apply those one by one. Overlays could be added with dynamic tokens depending on if they are needed, so we don't need multiple actions  I doubt it's a thing, but would be neat imo
Uhhhh lemme explain better, you know how sprites are mostly 16x16? I want more detailed ones. Ones that are 32x32 or even bigger :)
Oh wait.. it'd need to be 2 actions anyway, since one would need to be replace and the other overlay... unless all the other ones after 1st would be automatically set as overlays
I doubt this would work. Not the way it’s coded there at least. Cause then it’ll just…not do it right
Oh, I already have spacecore but didn’t know it did that. I’m gonna look into it
Yes that's exactly what those 2 mods can do
i think you're responding to messages not directed at you here
I do think it's probably worth considering if you really wanted 32x32 but y'know that's artistic preferences
Just dont go above 64x64 for a 16x16 and u good
That was just me helping the other person. Cause I have tried multiple actions before and it’s not exactly the best
Oh absolutely not, 32x32 is already good enough. i just like my arts detailed and I’m retexturing the sprites currently, but just couldn’t get myself to not detail them that much.
Again, TY FOR THE HELP
Yeah, when I remembered about patch modes the whole question stopped making sense 😅 But I wonder if it'd be something worth considering in the future 
not even sure how the order would work
like i guess the first file gets patched over first
Yeah, if not specified as a overlay 1st would be a replace, then each one after that as overlay? 
Fairly sure i know the answer but just wishful thinking...
Is there any way to get which mod requests an edit to an asset, similar to how you get the mod name requesting your api?
ty for the info ❤️
I'm guessing you don't mean just checking the log to see which mod edits an asset? 
No :)
Secondary question is why i suppose
Patching old issues lol
Old ddfc model all edit the same dict entry so it has been an issue logging who's the culprit when something goes wrong
It'll be fixed in the new release though, but issue will still be there with backwards compatibility
Yeah I don't think you can do much in finding exact one
Usually I just verify on an entry to entry basis to see of something is incorrect
Your new model has a new target right
Not the same data asset as previous
Big respect to aedenthorn, but sometimes i seriously question why they chose to do things a certain way lol
New model has mods register new patches under their own name yea, similar to how you'd use CP or other content frameworks
Well u can just ask erinthe now that she's here 
I ask my past self why i did things a certain way all the time
I dont blame them though, at the rate they were pumping out mods, future compat was probably low on the list xD
she’s literally the message below your question 
Wait wah
erinthe is aedenthorn

so just ask her 
hey gang how do i get recolors to target custom vanilla tilesheets,,,,,
like i tried to modify a map patch with tiled, but after i modified it it started using vanilla colors,,,,,,,,,
queue "she's right behind me isn't she"
dont put the tilesheets in the same folder as the map
and also properly embed the tilesheets
wait what do you mean 'custom vanilla tilesheet'
if it's a custom tilesheet it's not vanilla
and will never be recolored automatically
how do I download smapi launcher on android
!androidsmapi
We are not able to provide support if you run into trouble or compatibility issues with Android SMAPI; please use the discord linked on the Android SMAPI github.
IMPORTANT: This is a highly experimental build and may be prone to glitches, bugs, or incompatibilities. Please see the wiki instructions for more information regarding installing the unofficial Android port of SMAPI for Stardew Valley 1.6.
Do not harass mod authors to make Android specific compatibility patches.
nah its in a separate folder
like
assets folder
-map file.tmx
-tilesheet folder
--tilesheets.png
and by custom i mean copy pasted from the vanilla assets mb,,,,
It sounds like your map is referencing your png instead of the loaded vanilla sheet
its the same thing, you dont want any of the vanilla tilesheets anywhere in your mod
ohhh
unless you want to use the vanilla appearance
when you embed the tilesheet the game will figure it out for you, so long as you don't do any tilesheet climbing stuff
i see
i love map modding 
it's very fun :)
so how do i not reference it from the pngs bc i do need to see what im doing,,,,
gonna be honest, it looks like hell as an observer
If you want to make mods that add or edit maps:
-
Use Tiled to edit .tmx or .tbin files.
-
Refer to the Maps wiki page for details on how maps work in Stardew Valley.
-
Content Patcher allows you to create custom locations through editing Data/Locations
-
Vanilla Maps can be edited via Content Patcher as well: EditMap
eh.
no command list from governor ? 
When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.
If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.
mmm
well
this will probably work too
the second half
you can open the tmx in a text editor and cut out the file path
i envy the regular folk (vanilla players)
imagine playing without such gameplay improvements as [Skip Intro]
intro here means the mr ape splash screen before the main menu
Same
the escape key?
honestly I'm surprised by how few downloads this has https://www.nexusmods.com/stardewvalley/mods/533
the intro feels like an eternity sometimes lol
must be the adhd 
I don't think I've seen the intro in years..
Well it takes ages to load my game with mods anyways, so usually I just leave smapi running in background while I do other stuff, and then when I hear the intro playing I bring the window up
I usually click through the menu animation, but the title screen doesn't feel that long to me, and I like clicking on mr ape
I want to code, but the cat that is laying across my chest and stomach and purring is causing issues.
It's a cruel world.
Seems like mods will take longer to finish.
So real
😂 I haven't skipped the intro even once in my 3000 hours of playing and 3000 hours of modding
it didn't even occur to me
must be the OCD, I need the exact same dopamine experience everytime I open the game or it doesn't feel right
new NPC idea: single dad, grungy fisherman type vibe, overgrown beard and a big straw hat so you can't see his face. Later, heart scene where he shaves his face and reveals he's a handsome guy. His daughter is Jas's age, and it's implied that she's half-mermaid (i.e. widowed fisherman who once had a love affair with a mermaid). He would be friends with Willy? Tell me if this is an appealing storyline, or has already been done somewhere?
i dont think it's been done in sdv yet but if we're talking about the grand scheme of storylines then yeah probably
oh it's definitely a trope, I just meant in the sdv modding canon
There definitely isn't any content about shaving the beard
(and good, cause that goes against all my principles
/lh)
is it better if the beard grows back literally right away, if it grows into a respectable clean beard, or if it stays shaved off once it's off?
im a certified beard hater XD keep it off
It it grows back quickly into a shorter clean beard than I'm all for it 
flashbacks to Disco Elysium ||shaved Harry||
🤔 excellent ty ty
do not ||shave him|| worst mistake of my life
Now that I think about it.. would be fun if there was a bearded NPC and his beard's length changed depending on season 
ngl I have never seen a single person who look better without a beard than with
Well... depends if it's an actual beard or patches of random hair 😅
mmmm vincent, probably.
Vincent does not have a beard to start with
I'm a gay woman so I feel like I understand the appeal of beards *aesthetically more than anything
like the way someone understands avant garde fashion
if I follow my own aesthetics we'll end up with the dad from Ponyo lol
looking forward to sharing some portrait options here later lol
How does a map spawn monsters? I am trying to do something similar to island West's tiger slime spawns, but I cannot find where or how the game actually does that. Maybe I just didn't find the right wiki page, but I simply cannot find it XD does anyone know how to do that or where to get info on how to do that?
you need a framework like FTM of SpaceCore
Oooh, I completely forgot about FTM, I've been doing everything with CP XD thank you, I'll look further into that
Vanilla does it with c#.
why is adding forage so tiring AAA😭
i havent touched my forage mod in forever so i feel drained immediately looking at it
lowkey might just scrap what i got and restart it since the files and coding are all so messy rn
might have to study a bit and make some notes..
Finally decided the mod I'm gonna make
Yokai Valley
@drowsy minnow I LOVE YOUR PFP IT'S ETHEREAL
Would setting a field/property to null overwrite its default value?
data model:
class CustomData
{
public int? SomeProperty { get; set; } = 0;
}
Content patcher:
{
"Action": "EditData",
"Target": "mod.customDataAsset",
"Entries": { } // Default: SomeProperty = 0
}
// vs
{
"Action": "EditData",
"Target": "mod.customDataAsset",
"Entries": { SomeProperty = null }
}
THANK YOUU

DO YOU MIND SHOWING THE WHOLE THING YOU CAN DM ME
as long as it's nullable like yours is I believe so
I love art like that sm
Or rather I know it will but don't know if the nullable part is required
I do the same thing for Custom Museum Framework and it worked fine
I remember some jank around this when target field is involved
Normally if it's a new entry then u should get the default value
You can confirm with patch export easily
there’s a GSQ for found all lost books, but is there one or a mail flag for a certain lost book? or like # found since they go in order?
they just go in order
and is there a way to track “has found seven books”
not as far as i know
you can check if theyve read the 7th book in the library
but not if theyve picked it up and just not read it
even better actually!
in that case, the mail flag is lb_<number>
excellent thank you
are you adding lost books? or just checking a vanilla one
checking that you’ve read the old mariner one
although that worries me, can people add new ones that mess up the order? or do they get tacked onto the end of the list
the actual note text is held in Strings\Notes.json, so anyone can technically change what any of the notes say, but i dont see any reason why someone would
someone can add more on to the end, but they still just go in order, and its difficult to do that anyway bc despite the keys being strings, they must also still be ints
ah okay so i don’t need to worry
i mostly asked because its hardcoded that 20 books = all of them
regardless of how many are actually in Strings\Notes or how many note map actions someone adds to the library
interesting!
okay wait i just went to the wiki to find out which # old mariner is and it said there are 21 books
21 then
oh ok lol
i forgot to count the 0
ahh
yep
thats 13 then
with making a mod?
the forage stuff is overwhelming me so badly especially because i cant find a non-complicated forage mod for visual reference(easiest way for me to learn vs reading paragraphs of explanations) and most if not practically all involve spacecore and i utterly cannot with github and how the spacecore stuff is set up to be read on there(i mean this respectfully im js overwhelmed)
unfortunately i am wholly unfamiliar with both spacecore forage and ftm forage
im just trying to find an easy forage way especially bc i want to be able to place heavy conditions(location & weather & sometimes date specifics) or an alt thing i can do insyead of forage
@next plaza update: writing texture2d bytes to a file does not work :(
maybe put it aside for now and work on something else
since it seems to be stressing you so
and come back to it later with a clearer head
yea :( im just sad i keep getting the creative bursts for sprites but cant do the coding
people joke that sleeping a day helps both in-game and irl but sometimes just sleeping on it does help
skill issue
As an XNB, or just in general?
xnb
I really need to work on the new docs again...
Did you do all the other stuff like the header?
Like in the code I sent, that snippet didn't include stuff like the XNB header
I didn't but it definitely isn't just that haha
what version of monogame does stardew use 
you can probably right click the DLL and check 😛
Or the decompile
Or the github fork with the SDV branches (not sure which one is the right branch though)
I wanna make a mod adding cooking recipes that would need crops that can already be found in the many Cornucopia mods. Should I add said mod in the dependencies of my own (and if so, do I need the permission of the mod creator?), or just create my own version of the needed crops?
I don’t think a lot of people will download my mod to begin with, but I still think about how having dupes of crops can be annoying for some people. 🙁
you don't need permission to add dependencies! you're welcome to create your own version of the crops, but if you'd rather not, it's not at all weird to require cornucopia
you are free to make your mods depend on cornucopia
can someone explain rq why some fields have // and others just use \ for filepaths?
whats the difference
I know there is one, I just can't quite figure out what
they are mostly equivalent; \\ is used in data models that still use /'es to split their fields
it depends on where you're using it, but \\ is used to escape slashes in fields where that matters (for example, calling a texture in an event where / means continue to the next command)
for example you can use ModId/Textures/Chairs in object data's Texture field for, but if you use that in furniture data the game will think you're trying to give it 3 fields named ModId, Textures and Chairs
ohhhh I see
so \ is the alternate option when / is in use?
\*
\\
thank you!
I was trying to make vintage interface recolors for act of cooking but all the examples I looked at for patching another mod were different 😅
wasnt sure what to do
is adding .assets to the end of a mod id a way to tap into the assets folder? or is that a specific thing only certain mods do
I'm seeing this patch for love of cooking has blueberry.LoveOfCooking.Assets in the target field
when loading a new asset, what the name is doesnt matter as long as it's unique
right, I just mean the target path though
yes
on your part what you need to do is use the exact same name as what they use
I'm confused
in this patch, this is how it's written to tap into love of cooking { "Action": "EditImage", "Target": "Mods\\blueberry.LoveOfCooking.Assets\\Sprites", "FromFile": "assets/mod-sprites.png" }
but loc's mod id is blueberry.loveofcooking
just to clarify, the answer to this question is "no"
ah, so then why does this work in this case?
because that's the name LOC uses for its assets
not because there's any specific asset name scheme that allows you to access another mod's assets
ahhhhh i found it, i was so confused where that came from
i didn't realize it was specified in the content file rather than the manifest
thank you for the clarification! 
speaking of act of cooking, has anyone had their cookbook color change while in the kitchen menu? Mine goes very dark, like there's a dark semi-opaque filter over it
(though just to expand on this in case Hadi comes across it in other mods, SMAPI will normalize things to use the same slashes in the end regardless of what you write, so / and \\ are equivalent when it comes to using the asset name)
i'm pretty sure that's an issue with a mod editing the inventory menu. maybe a backpack mod?
it's come up once before
see the cookbook isn't actually part of the menu, it's an animation drawn behind the menu
so if a mod adds a blackout overlay to the inventory menu, wawoosh
Oh, interesting
I don't have a backpack mod 
oh i think I have a menu mod somewhere, that is probably it
that is cursed
lmao it DID hurt my eyes
hmm i cant get the aoc patch to work, but the log doesn't seem to have anything to say about it either
i think I'm targeting the assets wrong somehow
is this not right? { "Action": "EditImage", "Target": "Mods/Kana.ActOfCooking/assets/Interface_1", "FromFile": "assets/{{TargetWithoutPath}}.png" },
i feel like its a dumb error staring me in the face
taunting me
it's possible that the mod doesn't load assets via the content pipeline meaning they may not be editable with CP, I can't find a source for the mod, if you have one I'm happy to have a gander through it to see
^ its impossible to tell you if you're targeting the right thing when the mod you're editing can make up anything it wants for its targets and we dont have the other mod to look at
yeah i think that's the problem, I have no way to see how its adding stuff
ok then, manual replacer it is
I just hate having to replace it every time there's an update sigh
For future reference, if a C# mod uses the content pipeline and doesn't say how to make a recolour or change the assets, theres a list on the Stardew modding wiki with some mods and their target paths, scroll down to the bottom and you'll find them (https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_UI_Recolor)
I been wondering if I could do something like
- Divide mod into 2 dll (still 1 manifest)
- Conditionally load the 2nd dll, when another mod is present
Purpose is that the 2nd dll can therefore have hard dep on the other mod
yes, though the second dll wont go through smapis rewriter stuff
technically you dont need the 2nd dll though
.NET will only get angry that the dependency is missing when a method that uses it is called
so as long as you have abstractions to keep logic from being called unless its loaded, you are fine
Hm the specific problem here is that I want to edit another mod's content
omg thank you for explaining this, I would never have understood why it was happening otherwise 
What degree of abstraction would be sufficient to make net not angy when another mod (spacecore in this case) isn't there
I know I can do some dynamic classes stuff instead but y'know type checking would be good 
if isLoaded() new SpacecoreIntegration(helper)
and have that integration register the assetrequested event handler
also. successsss
Hm I'll try it then
you just need to not touch the compile time types in the method signature or body somewhere where it could be not loaded
It is sort of a perpetual problem with many competing solutions for cp style frameworks
What is the isLoaded method in this case?
ModRegistry.something
Is it the smapi mod registry one or assembly
SMAPI in a sense does this with stardew itself.
its early startup intentionally avoids any contamination with stardew so it can startup and then complain gracefully if stardew is missing
Hm wait wouldn't smapi rewriter bonk me for having missing things
it only checks for missing things from the allowlist of vanilla assemblies
I wonder why i thought i needed to like
Reflect for lookup anything assembly to patch it
If this works then i ought to be able to just put the lookup anything patch in its own thing?
actually I might be wrong, I know the rewriter had an allow list, but I think the generic missing assembly reference isnt
no problem! it's just some patented blueberry jank that was needed to have an elaborate animated moving sprite for the menu theme, cookbook unlocked introduction, etc.
obviously a lot of mods assume noone would ever draw the menu sprite separately from the menu, so this happens sometimes 
also the author of the Act of Cooking is in the server from time to time, so you can probably ask them to update their mod to use the content pipeline, or submit the changes yourself if you can
// detect broken assembly reference
foreach (AssemblyNameReference reference in assembly.Definition.MainModule.AssemblyReferences)
{
if (!reference.Name.StartsWith("System.") && !this.IsAssemblyLoaded(reference))
{
this.Monitor.LogOnce(loggedMessages, $" Broken code in {assembly.File.Name}: reference to missing assembly '{reference.FullName}'.");
if (!assumeCompatible)
throw new IncompatibleInstructionException($"Found a reference to missing assembly '{reference.FullName}' while loading assembly {assembly.File.Name}.");
mod.SetWarning(ModWarning.BrokenCodeLoaded);
break;
}
}
but the rewriters use
private readonly ISet<string> ValidateReferencesToAssemblies = new HashSet<string> { "StardewModdingAPI", "Stardew Valley", "StardewValley", "Netcode" };
as their search path for rewriters
but you can hide from the first block by having the hard dependency in the second dll
BETAS uses Content Patcher stuff in one of its trigger actions, though, which is only called if the trigger action itself is called. but if Content Patcher isnt present, SMAPI says it cannot load the BETAS DLL
i do look at the MethodInfo and turn it into a delegate in order to register the trigger action, but i dont actually call it
Weh
I'm tabling this for later when someone actually need it
The idea was that im lazy and don't wanna do animation stuff but the way I am dealing with textures makes using spacecore animation as is impossible
So i was gonna let ppl give me some data that I'll give to spacecore asset with the correct computed target rect and texture name
I forgot the SMAPI preemptive check for assembly references, its not .NET failing to load, its SMAPI refusing to
probably for good reason as it can be a pita to troubleshoot if you didn't intentionally put guards in place to prevent the runtime from being spooked
which i didnt bc i forgor so BETAS actually has a hidden hard requirement on CP for the time being
its fine no one plays without content patcher anyway,
if you lived entirely in reflection you would be fine due to no assembly reference but also be annoying for larger things
(this + optional content packs make me wish for a "load if mod is present but don't complain if it isn't" feature)
i actually originally did it with reflection before switching to a hard dep bc i didnt realize smapi would refuse to load it lol
and ive been too lazy to go back and change back to reflection bc of the aforementioned no one plays without cp anyway
gunna map a CP less pack just to spite you Button
user error
tbh does BETAS do anything if you didn't have any cp packs to use its triggers?
well, a C# mod can use its triggers and stuff
i dont know if there are any C# mods that do though
if we ignore C# mods then yeah no content packs = nothing happens
well thats actually not true. it does have that NPC cache stuff i added for multiplayer
that will happen in multiplayer regardless of any packs using the other features
hm i am massive dum actually
theres 0 reason for me to actually use an intermediate texture 2d now 
nvm i am still using it to make it possible to omit the color overlay 
so peak
the map edit i did is working now 
issue wierd block using content patcher
Code ```{
"Format": "2.8.0",
"Changes": [
{
"Action": "Load",
"Target": "Characters/Farmer/Farmer_base",
"FromFile": "assets/farmer_base.png"
}
]
}```
Trying to change farmer base i have no idea if its my mod.. my sprites or content patcher tell me if you need more info added my asset that im try to replace with\
Just tried installing one of my mods through stardrop and I'm getting this error: https://smapi.io/log/0f24ade502264e76b4a7bad923194237
I'm assuming it has something to do with the manifest.json hoewever the validator isn't showing that anything is wrong: https://smapi.io/json/manifest/dbcf1abd1dd144e3a2196146bccb4b28
Hoping someone with a better understanding on C# errors can tell me if this is a manifest issue on my part or a stardrop issue I need to look into more, been looking at the code behind stardrop for a little while now and can't find where the error could even occur
Oops, couldn't parse that file. Make sure you share a valid SMAPI log.
stardrop issue, my guess is file path too big or somethin
what it looks like in game
its in a substring call so just look for wherever is using substring in that function, idk stardrop source
I just realised I had the files directly in the zip and not a subfolder inside the zip, so it's both an issue on my and stardrops part as putting them in a subfolder then rezipping fixed it, not sure how it went for so long without me noticing, whoops
16:48:37 ERROR game Festival 'spring2' doesn't have the required 'conditions' data field.
16:48:48 ERROR game Festival 'spring2' doesn't have the required 'conditions' data field.``` I so wish I could trace down what mod is causing this
oh i just saw this mod on nexus today, let me see if i can find it again for you
don't suppose you have red panda bazaar? I had an issue with a spring date festival and narrowed it down to this mod, narrowed down as in didn't appear when I removed it
I.. do not.
assuming you are using Content Patcher to load your assets, a patch reload should reload them
... I do have the fox mods though..
ive no clue what sprite sheet extender is
how did you get the manifest / error
but there is no other way to reload assets added via Content Patcher
i would double check that you are correctly editing the right pictures and that they are properly Loaded into your game
rather than using internal asset keys (if they are)
my mod files were put directly in the zip file, when they should've been placed in a subfolder then zipped
i ment so likehow i do one so i can see whats wrong
ok i can't find it again but i might be able to pick it out of your log if i saw it
if the things that are not reloading are things using Sprite Sheet Extender specifically, then its up to Sprite Sheet Extender to handle asset invalidation correctly, which it may not
looking at its mod page, it doesnt look like its using content patcher at all?
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 157 C# mods and 265 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
yes, thank you, I did. >_>
!json the first link will take you to the JSON validator where you can select manifest, content patcher, or i18n validation
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 think it's starlight celebration https://www.nexusmods.com/stardewvalley/mods/29998
np, i'm just surprised i could help lol i haven't browsed mods in months until today
It looks like you're replacing farmer_base, but your farmer sprites are modelled off of farmer_girl_base, is that intentional?
and now to see if I can fix it..
ooh if you can i'll add it to my playthrough! i passed on it because i didn't know if i'd even get to y2
ya i was checking to see if it was bugged on both
Farmer sprites are unique in that the game needs to be closed and reopened to edit them
You're also missing part of the sprite sheet (upper right), but I don't know that it would create the effect you are seeing.
Was a huge issue with SVO's seasonal farmer sprites for a long time
Conditional farmer sheet stuff just doesnt work
Unless this was fixed in 1.6.16
1.6.15 i mean
Well it sounds like you're using another framework anyways so no
But Im chiming in on farmer sheet editing in general, idk if this was fixed in the past year
Its up to the framework to add mod refreshing capabilities
Most mods other than cp dont have mod refreshing functions
i think SSE is more of an outlier in that regard tbf if you dont count a deprecated one like JA
AT and Fashion Sense both have reload commands for example
idk what exactly you need SSE for but it might be worth considering if you can do it in FS instead
is there a way I can hide a config option in a CP pack while still keeping it so it can be used? or would a better option just be to put it in a "depreciated" section? I want to migrate a building from a single building with a config to change interior size, to a building with 3 tiers total
no
gotcha, depreciated section it is, ty
I thiink the solution's fairly simple:
"Action": "EditData",
"Target": "Data/Festivals/spring2",
"Entries": {
it probably should be Load
because it doesn't exist yet
testing c.c
no, theres a blank.json load in the content.json
if that was the issue you would get a much different error
.. if that's to me, there is no such blank load
uh..
yeah, you're right.
Weird. Well, time to figure out why it's not loading in conditions then
(Even if you think there isn't a load, it's still not best practice to load anything other than a blank JSON with a priority for any data asset other people may want to add to)
it did
..oh.
in some fairness to it, since this is a completely custom festival, no other mod is going to be using it (or if they were also making their own custom spring2 that was not starlight celebration, then theyd need to edit everything inside it anyway, so it doesnt matter if it starts out as something else)
hm.
Honestly, I thnk I just want ot move the festival initiation within the actual when patch
for most assets i ofc very much agree though
Button, I think the problem might still come up if anyone else makes a festival on that same day in their own mod?
thats the second half of what i said
it doesnt matter if the mod loaded a blank or a pre-filled spring2.json, so long as it was low priority
I'm gonna be honest, my focus is shot so I think my brain completely glazed over at the second part
.. if you have two festivals on spring2, one's going to have to lose unless it's passive anyway
even if they loaded spring2 exclusively and the other person loaded priority low, theyd still be doing editdata after, so its still safe
passive festivals use a different data asset as well anyway
right, yeah
anyway, I think just loading the blank file within the HasFlag will resolve the issue
if the blank load is happening before the actual data can be (bc of when conditions) that would be the problem id think tho
.. to be kinda honest
eh
it feels weird to load assets you know won't be usable, but >_>
its not weird if you arent aware that the game is going to complain about it if it finds it empty
fair
author does seem to know but I bet they just haven't had time to fix it since May
"Notepad: hey, want to enable copilot to help you edit this json???"
"Me: No."
(also i think the most common case of a blank load is for events i imagine? which is completely safe to have empty, so could just be habit)
(i forgor where else blank loads are used commonly)
ahh
oh dialogue and stuff duh
(any brand new JSON file target where you might use {{ModId}} is a valid place for a blank.json load, so you can use EditData to add the tokens)
hellooo can ItemDelivery quests have several item IDs to be delivered?
like the quest requires multiple items
don't think so
you'll need a special order, but the current version of SDV doesn't support special orders that never expire yet
aw :(
you can do a series of quests though
true!
hmmm tryna think of a way i could walk around the expiry date
What's the use case here?
Oh, a quest (or delivery ig) where Krobus asks the player for a variety of items that they eventually use to make a warp rune thingy
Any reason why it needs to be one quest rather than a series?
hm, it could be a series! just wanted it to be fairly quick as opposed to drawn-out
hmm
do you want to see the way i handle three item delivery quests at once
YES pls tysm 
quests.json:
"{{ModId}}_SeanceIngredients2": "ItemDelivery/{{i18n:{{ModId}}_SeanceIngredients2.title}}/{{i18n:{{ModId}}_SeanceIngredients2.text}}/{{i18n:{{ModId}}_SeanceIngredients2.objective}}/CharlesRowland (O)156 1/-1/0/0/false/{{i18n:{{ModId}}_SeanceIngredients2.reaction}}#$action AddMail Host {{ModId}}_SeanceIngredients2 received",
"{{ModId}}_SeanceIngredients3": "ItemDelivery/{{i18n:{{ModId}}_SeanceIngredients3.title}}/{{i18n:{{ModId}}_SeanceIngredients3.text}}/{{i18n:{{ModId}}_SeanceIngredients3.objective}}/CrystalPalace (O)376 1/CuringNiko_{{ModId}}/0/0/false/{{i18n:{{ModId}}_SeanceIngredients3.reaction}}#$action AddMail Host {{ModId}}_SeanceIngredients3 received",```
and i give all three in a letter
hmmm i could arrange my current event order to support it being drawn-out!
oooh that's great!!
also i'm intrigued by seance ingredients 👀
will def steal that LOL
(also manually created itemdelivery quests dont have an expiration date)
ooh good to know! i assumed so but it's reassuring to know i had it right LOL
oh, i said it bc i assumed you were saying that bc you thought they did expire
OH i meant the expiry for special deliveries
ahh, i see, missed that part from selphs message. glad to reassure anyway at least 
I'm going to hazard a guess that it's the second row second column post
@drowsy pewter obligatory bug report, sir!
20:07:05 ERROR game Trigger action 'Cornucopia.CookingRecipes_QoSRadio_RecipeBody' has action string 'Spiderbuttons.BETAS_Message Mille-feuille! Despite its 'million' layers, it’s not fussy; it’s precise. It’s the kind of dessert that rewards patience, celebrates craftsmanship, and says, You deserve something beautiful today. Layers of flaky pastry and cream, so smooth, so rich. And the top? That signature glaze, striped with chocolate, dragged into that iconic feathered pattern with the tip of a knife... true' which couldn't be applied: optional index 2 (bool Typing?) has value 'deserve', which can't be parsed as a boolean.
Full log: https://smapi.io/log/9877fa3031c946d883bb336244ed324a
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26200.0, with 165 C# mods and 864 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
normally i fix these sorts of things myself but I have no idea how to use Button's mod and I figure more folks will find their game being crashy after checking the radio with that
(not enough escaping; the i18n token is escaped properly, but then you have more escaped quotes inside the i18n dialogue itself)
(I don't really know what that means fhweifhei)
(dw thats for 6480 to see)
I know I'm dumb about code but I DO like to learn, what is it?
escaping in this context
in the json somewhere there is this trigger action happening:
"Spiderbuttons.BETAS_Message \"{{i18n:Radio_{{TodaysRecipe}}}}\" true"
that i18n token is being replaced with the actual i18n ofc, so it becomes this:
"Spiderbuttons.BETAS_Message \"Mille-feuille! Despite its 'million' layers, it’s not fussy; it’s precise. It’s the kind of dessert that rewards patience, celebrates craftsmanship, and says, \"You deserve something beautiful today.\" Layers of flaky pastry and cream, so smooth, so rich. And the top? That signature glaze, striped with chocolate, dragged into that iconic feathered pattern with the tip of a knife...\" true"
oh the quote inside?
thus it sees the escaped quote before "You deserve" and thinking thats the end of the first escaped quote, before Mille-feuille, which was before the i18n token
why is it called escaped though
therefore it thinks thats where the actual message part ends, and then it tries to parse the rest of the dialogue as other stuff
(i can assume but yknow what they say)
because if you have a string like this:
"i am string!"
then json parsers use those quotes to determine where the string starts and ends. if you want to use a quote in the string, you need to tell the parser that this special quotation mark is not marking the end of the string, i want to literally use it in my in this case dialogue
so the slash must... escape the parser, i guess, is the reasoning behind it.
"i am a \"string\" apparently!"
the slash tells the parser that the character after it has no special meaning and should be taken literally
"escaping" is not a stardew term, it's not even a json term it's used generally in programming. dont know the exact origin of using the word "escape" specifically
ahhh okay, thank you!
this is also why you see \\ used in asset names, because the \ has a special meaning, because it acts as... the escape character! so you need to escape the slash so the parser knows you arent trying to escape something else
also sorry for always having so many annoying questions, this is how i learn/attempt to understand things I can't quite get my head around 
which is why it can be very easy to get into nested escape hell if you try to put quotes inside quotes inside quotes and havbe it all come out right
they arent annoying!
if anything, they let me practice my explanations for when i eventually write more tutorials and help me figure out where some things might not be clear to people 
I worry I'm being difficult
or that someone might think I'm being deliberately dense and get upset
but thats a me problem
ive never seen someone in here get upset at someone for trying to learn when its been clear that the person was actually, genuinely trying to learn, and not just trying to pass off the work of learning to someone else to tell them how to do everything with little effort on their part
this is true, but the internet is scary fweifheif
if someone gets mad at you for it then you sic the junimos on them 
I say this because I used to write for a blog many years ago and I got a LOT of nastiness
oh, and for the 6480 backreading this, i see this error will also probably happen with the Cannoli
the general internet is a fickle beast, usually filled with equal amounts of good and bad, here though, it's a wonderfully curated community with plenty of people willing and able to help across any time of day
(my point is, thank you guys for being so nice and patient with me) 
(to further atlas's point, this isnt a joke. the junimos work hard to make this a nice place and its much appreciated)
I think I just haven't been all that social for the last... idk 5 years? so I've regressed to "internet is scary" 😅
I have no social media, just the very occasional discord chat
protip: never try to do anything with stardew's fonts. i have complained about them before but every day i learn a new thing about how they are handled which drives me the slightest bit more insane. they are fractally wrong. stay away (/lh)
ahahaha
i feel that way about a few assets, though I think a lot of it is better these days than when I started modding
damn escaped quotes
if its easier you can just load your i18n to some string asset and toss in a translation key instead
single quotes instead would also work, though i understand they dont really look as fitting sometimes, and it also wouldnt stop a translator from accidentally using double quotes either
replacing the double quotes around the trigger action itself with single quotes might also work? uncertain
Yeah I'll swap to single quotes as the first thing
like:
'Spiderbuttons.BETAS_Message "{{i18n: etc}}" true'
translators love to goof around though hehe
... except use single quotes and not backticks like i did
i think that would actually fix it bc itd mean the escaped quotes inside the i18n dont need to be changed at all bc theyll be escaped correctly already
i think
dont quote me on that no refunds if im wrong
dont singlequote me on it either
when making recipes is there a way to make it be able to be bought if so how (cooking) ik there are diff things like /s fishing 9 or /f leo 3 but is there one for shops?
"the dwarves dug too deep and too greedily, awakening the beast."
There is none for shops. Just set it to null and add your recipe in tbe shop
could you direct me to the wiki page for shop data?
[[Modding:Shops]]
ty
it doesnt say how to make a shop sell a recipe on the page, do you know how?
Sell the item and mark is recipe true
ty
You're welcome to look at cornucopia code as well, it's all on github (so can be viewed on your browser), though its quite a large mod
any specific thing i should ctrl + f to look for?
shop data uses common spawn fields as noted on the shop page, check the documentation on that link
you can also look at the vanilla entry for Pierre's Dehydrator recipe or Willy's Fish Smoker recipe
Useful note: If your recipe key doesn't already match your item's Name field, you will need to make it do so for selling the recipe in the shop.
Interestingly, the history behind it is the opposite. The normal mode for teletypes and printers was to simply print all text, and you needed an "escape" character (which was the original purpose for the Escape key) in order to make it do different stuff. In a way, it would "escape" from it's normal way of operation.
Nowadays strings are a specific type of data inside a bigger meta-context, and as such the meaning has basically flipped.
You can still use these sequences nowadays to change the color of the text in the terminal, for example.
OMG, I'm back again. I checked my content and added Action to each one, but this problem still occurs. What should I do? 😭
[Content Patcher] Ignored Zayne > invalid: must set the Action field.
!json
Can you send the new JSON, please?
Why this not working...
!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.
The bot doesn't like me.
@stray hemlock You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
And now it's mocking me.
did you close the game and start it again after you edited your json? if not, it's worth a try
I'll test the new JSON in a few minutes, but right now I can't see any big issues.
I've restarted several times, but the problem still persists. 💔
It is so sad--Then I’ll go check for any other issues… 😣
Wow! It seems to work after I deleted one file! But the character still won’t load—though there are no more errors now! I’ll keep working on it 😋 Thank you all so much!! ❤️❤️
Yay. Which file is it?
This
Have you tried validating that one?
yes,It worked after deletion, but now my problem is that the high-definition portrait won't load. 👿👿
So, I wanted to remove Lewis's truck for an event, and tried usingremoveTile <x> <y> <layer>. But this apparently removes the tile forever! Is there a way to get them back? Or is there any other way to remove tiles only for an event?
ive been told it comes back the next day ?
It didn't, but maybe that's because I was using debug sleep. Let me sleep properly...
i think you can also add the tiles back at the end of the event can you
the truck has left...
Truck? What truck? 
So it doesn't come back after sleep, but it comes back if I quit and load.
that must be what i was thonking
i did check the wiki and it seems like there's no option for like a temp map, which seems troubling
Well good enough, I guess/
Are you using ScaleUp?
(it returns upon the map being invalidated, usually from a cp patch update)
would makeInvisible help here? oh wait, same issue
Can you save the state and restore it upon sleeping?
Save the state?
Of the map before removing the truck.
So presumably I can force it to appear with an empty map patch? Maybe?
No, I'm using Portraiture.😢
You can force invalidation of the mal with what would amount to a blank patch to the map, if you want it to be immediate use a locationChange update rate,- yeah
That doesn't support high-res portraits. You need to also use ScaleUp 2.
(though I'd personally not use location change on it, let it reappear overnight and just tell users "suspense of disbelief" "well it's not breaking your game so why are you complaining" /silly)
It disappearing and only appearing the next day is actually ideal. Maybe I'd use trigger so the blank map applies on the next day only. Thanks for the tip!
Np!
Portraiture does support high-res portraits. But it would need more step on behalf of the users.
(the truck has not returned yet, just wait
)
If one wants to have high-res portrait immediately working via Content Patcher, currently the best working framework to do it is Scale Up Unofficial.
Huh. It didn't a few years ago, but I guess times change.
I tried that one in the past, but it didn't work as reliably as the original Scale Up.
Hm, I've never had any problem with it. At least portrait-wise. The thing about the original Scale Up 2 is that it's pretty taxing and give a noticeable performance hit if it's handling many portraits.
is that not the case with the unofficial one?
I'm currently in the performance mines with my framework 
I tried the new one with Seasonal Cute Talkohlooeys and it's noticeable better compared to the original.
do you remember when you were getting performance hits? or was it just always?
I guess I need to try again.
(Also the unofficial version was made to begin with to reduce performance impact.)
-# uberbot remind me in 1 hour to try to figure out why content unload isn't working
Ask me one more time and I'm going to jam a paperclip into my reset button. (#6968350) (1h | <t:1764166834>)
guess it doesn't like whispering
Like, frame drop always, all the time. It was bad.
oof, even outside of dialogue?
Yup. Just walking around.
oh wait scale up is also for sprites, isn’t it
I didn't notice it with my PC, but on my laptop, phew.
Yeah, but Talkohlooeys seasonal only touches portraits.
Scale up can do any texture as long as you get to do the Load i think
For me I have frame drops when picking stuff up with right-click. I always blamed the Right-click Move Mod, but maybe the frame drops only become noticeable because Scale Up 2 slows everything down.
Apparently there was a big update, because the mod is now completely different and has compatibility layers and everything. Cool. Maybe it works better now.
unrelated but hehe I love my npc realm
chu has access to it but decided not to try it 
Spoilered NPC!
damn, grandpa needs spoilers now
I'm still very amused that the Bouncer is like a whole NPC.
what the hell are you doing with them
testing portraits
technically these are all clones
you cannot do everything in the name of science
them being clones also means that qi, leo and krobus don't have annoying hardcoded dialogue any more 😌
first it starts with testing portraits... then cloning people... then putting all the clones in a nature reserve on an island and charging for access...
(Bouncer being a whole NPC is like 60% of the motivation behind Portraits for Extras. Every time I worried "is this too much" I reminded myself "fricking Bouncer has a portrait".)
do you like the bear? he's the most annoying out of all of them because for some reason his sprite is set as 16x32 and then hardcoded
hardcoded bear
Boncher...
hes very cute
Okay, I found it! I'll go try it out again!
i like how bonch just explodes when you show him the club card
We had a discussion here and apparently Scale Up Unofficial is better. Sorry.
oh btw dolphin my portrait framework mod, even on my potato, only has a single stutter when you first start talking to an npc in a play session and that's it, sooooo 
😎
Yey! I'm excited for it! I've been preparing to promote (force) it to some portrait modders.
Got it! I'll go try it out. 😋 Thank you! ❤️
I'm hoping that by the time it's ready for the official release I'll even have some converters made
I’m making a new machine and need some help with PreserveId. I want the product to inherit the flavor of the input item but whenever I use DROP_IN or DROP_IN_PRESERVE it’s not working how I thought it would?
Basically I want a machine that makes cheap wine fast but the output is either my cheap wine item but no flavor or it’s vanilla flavored wine with a cheap price. The problem is when you combine vanilla and modded items in your bag the prices change to match.
where is data on the path on a map an npc makes
the npcs path based on most efficient route
so it's not really a set in stone path that's on a map
oh thats a relief
i was worried i'd have to edit directions for an entirely set path
@gentle rose: try to figure out why content unload isn't working (1h ago)
😌
the main issue with trying to profile ram is that my pc is already using up this much withOUT stardew running...
I think I currently have six? 
I probably could make a separate npc realm only for npcs that have portraits in my framework 
...Later™
okay I closed everything I could on my pc, will this actually help? let’s find out
a second monitor would be nice right now, I say as I have an unused monitor and an extra monitor arm right there
At least for Unix RAM should always be used up. There is no advantage to not using it for stuff.
the hoard grows 
this is windows, and also I strongly disagree, because what if there just isn't anything to do with it? "used up" meaning "reserved for something", much of the time I just don't have 8GB's worth of data to keep in memory?
also UNIX isn't a single kernel (any more) so this would be an unusual thing to be generally true across all Unix-like kernels 
anyway, once I closed some stuff it went down to roughly 40% utilisation
(in fact, on my linux machines, I have a performance polybar I can bring up with a shortcut that shows ram utilisation haha)
"Format": "2.8.0",
"Changes": [
{
"Action": "EditData",
"Target": "Data/Shops",
"TargetField": [ "FishShop", "Items" ],
"Entries": {
"(O)219": null,
"Example.ModId_Pufferfish": {
"Id": "Example.ModId_Pufferfish",
"ItemId": "(O)128",
"Price": 2000
}
},
"MoveEntries": [
{ "Id": "Example.ModId_Pufferfish", "BeforeId": "(O)685" }
]
}
]
}```
this is the ex of editing shops on wiki, is the (O)219: null removing and already existing item and pufferfish is creating the new one??? and what does move entries do? sounds self explanitory but idk
I've been troubleshooting this part for 1 hour, I just don't know why it's not working, can someone help
https://smapi.io/json/content-patcher/6b190420367d46ad80e9af2c2bd3a5e4
correct for both! and move entries moves the pufferfish entry up in the list above whatever is (O)685
tysm
is there a way to download the stardew wiki? im going on a flight and I wanna code on it so wiki should be helpful
not really afaik, and its servers are kinda fragile so I can't recommend it unfortunately. the wiki bot actually needed to get a special captcha exception
ok
can you share your log please? and also say what you tried to check if it works
I've tested it like 8 times now, actually that's a part of a bigger snippet, all the rest are working, it's just that part isn't. I checked the raw logged too and and the rest of the other buffs I added are being detected.
Smapi says no error at all
https://smapi.io/json/content-patcher/41683f450b4446dba4c98dc77d8371cc
Here the full snippet, the rest of the buffs are working, but not that "Intent" buff
we don't just ask for a log in case there's an error, please share your log.
There's some app that let's you use it offline but o have no idea where to find it nor if its any good
Hmm... decided to change the queries into the simpler version of CMCT's tokens...
"Name": "e0",
"When": {
"HasMod": "Parrot.RomRas",
"Spiderbuttons.CMCT/Config: Parrot.RomRas, Portrait Mode": "12"
},
"Value": "0"
},```
Resulted in
```[Content Patcher] Ignored Romanceable Rasmodia - Female Wizard > 'e0' token: its When field is invalid: Mod or pack not found..```
Is this not how it's suppose to look? 
For comparison, when I used "Query: '{{Spiderbuttons.CMCT/Config: Parrot.RomRas, Portrait Mode}}' = '12'": true there were no issues
You can't use them in same block
What do you mean? 
Iirc you need to have HasMod include before u can use the cmct token
I don't think you can do a dt unless you have required on the other mod
Hm? So either the query was an accidental workaround... or it never worked to begin with 
Although I'm like 95% sure it worked
Yeah, it definitely worked
asdfds just tested with the portraits dacar sent me a while back, why are people in this community so talented 😭
-# I go to test my mod and get distracted by pretty portraits
Lol
...sorry got really sick yesterday so had to give up for the day 😅
what kind of jank? if it were to only set defaults when adding a new entry and not when editing one... that'd actually be perfect for my use case
that use case being merging a set of model entries in a list asset... it's easy enough with direct fields if I just give it a default entry that gets merged in last... but gets problematic with entries of list fields
e.g. somebody has a patch (A) with an image with IDModExample.Image0 and some missing fields should be expected to use a default value
another mod could add a patch (B) for that image entry in 2 ways:
option 1) target both the entry in patch A and the image and change the required fields only
option 2) make a new entry and list an image with the same ID
so in option 1, patch B's empty fields should be ignored and filled with patch A's values when merging
and option 2, patch B's empty fields should use defaults which would overwrite and ignore patch A's values, unless those fields are explicitly set to null in which case they would use patch A's values when merging
I never dug deeper but when I was doing machine control panel I encountered the Id of trigger rules becoming null even though game ought to be defaulting it
It seems target field related at the time
I sometimes wonder what the hell am I doing with tokens just to shorten something... 
I mean, I don't have them all animated but I have a lot of them done, if you want me to send you akk I have done for now I can 
(Also I have Lucikiel and now Jean and almost Jorts if you want them too to test stuff)
chu is correct, because with the way CMCT and CP work, content patcher will still check both your HasMod and the cmct token to see which ones are valid. this means that even though HasMod is false, it still has to check the cmct token after, which means it checks a mod that isn't installed and fails. if the query worked, then it's an unintentional and unsupported "workaround" which may not always work and falls under the disclaimer on the cmct mod page that says you might get weird bugs
sure! I need to stress test stuff so it will be helpful
Interesting.. I don't think I've seen any bugs related to that (and I had it like that since CMCT released
Hypothetical question... could it affect performance impact tho?
Or just cause weird bugs
if anything the mod not being there helps performance. but it means the token might crash at some point
depending on how you try to use it and how the other mod in question might change in the future
it's not something likely to cause bugs during a single play session, but across play sessions
Give me a moment and I'll send you (or at least try) a zip with all the portraits (I still need to do the code for some of the RSV ones, mostly the non-animated ones)
If the other mod isn't installed the token isn't used at all, so shouldn't be an issue 
it is, with that dynamic token setup, for reasons just explained
no rush!
why does CP condition not have an early escape clause? 
or is it just that the token substring is applied before any check is done?
How so? Even if all the e<number> tokens are only used in an include gated by has mod? 
it's because of cmct. Content patcher has no reason to not look at a cmct token because cmct is installed
it's cmct that is then checking the other mod
ohh just noticed their hasmod isn't checking for the mod the token is from, ignore me :D
Sended it through DMs, I'm honestly surprised it's only 118 mbs
(Be adviced, Jorts only has the first face fully animated, the others are WIP still so they won't show)
if they're behind an include it's ofc fine, as long as the include gate doesn't also try to use cmct. but you can't gate the dynamic tokens themselves behind an include. they still need to be evaluated
Yep, I think I mostly get it now
Now I'm kinda curious what this query actually checks if the mod is not installed then 
Cause if it's installed I'm assuming it's just "Is 12 = 12", but if not there's no way to get anything
don't remember how query works off the top of my head. it's unique in a couple ways. it might just eat the error and turn it into false for all I know
That's what I'm guessing too
Query expressions have very little validation. An invalid expression generally won't show warnings ahead of time, it'll just fail when the patch is applied. Make sure to carefully test any content pack features which use expressions, and check new or edited expressions with patch parse.
-- https://github.com/Pathoschild/StardewMods/blob/stable/ContentPatcher/docs/author-guide/tokens.md#query-expressions
it doesn’t really explain what happens when they do fail though
I assume fail means the expression fails and returns false, not the entire patch failing
that’s exactly what button and nomori are wondering though haha
maybe Pathos could clear up the wording there but I think it makes sense given what we see 😅
So uh, I'm blue now, can I become mod author?
It says to just ask in this channel, no mention of who to ping 
you can DM bouncer and they'll add the role when a mod comes around to it 
did you add yourself to the wiki page?
i believe you typically wait for bouncer to guide you through the wiki page process
(I know it's been said both ways plenty of times but iirc that's the recommended? And it's that the text in that screenshot says, too)
probably best to do it later i think
Last I asked it was DM first, then wiki
I also DMed first, added to wiki when directed, and then requested a Cheeto dusting after following the directions.
(A ping here is also fine. In that case, a modder-junimo hybrid is normally better for obvious reasons! But Bouncer is more reliable if there aren't many of us around at any one time in case the ping gets missed.)
The old mouldy cheeto. 
oh no, they have too much power!
if u leave the entries move out does it cause issues?
(Should the GitHub mention DMing Bouncer/pinging a juni? Right now it just says to ask in here https://gist.github.com/Pathoschild/927aa919a95cf0ddae542749bc9d9847#am-i-eligible )
Probably a good idea actually, yeah.
so you guys actually see it, yeah
There's usually always something to do. RAM is storage that is faster. You rarely get into a situation where you use less than your memory's worth of storage, be it caching or anything else.
Of course RAM usage should have priority, which is a much bigger issue to properly determine that. Maybe I should have clarified: Under optimal conditions RAM usage should always be used up because the system automatically uses it for less important tasks when it's free and clear it when there are more important things.
This is not to say that software shouldn't be unoptimized.
(I'll definitely bring it up with Pathos once everything's settled!)
"Action": "EditData",
"Target": "Data/Shops",
"TargetField": [ "Festival_DanceOfTheMoonlightJellies_Pierre", "Items" ],
"Entries": {
"{{ModId}}_IrishMossPudding": {
"Id": "{{ModId}}_IrishMossPudding",
"ItemId": "{{ModId}}_IrishMossPudding",
"IsRecipe": true,
"Price": 10000
}
}
},```
would this work for getting the moonlight jellies shop to sell the recipe?
you can debug festival summer28 to test it
Should work.
I'm sorry but I have daily driven linux systems for years and you just aren't right? they simply aren't always at/near 100% ram utilisation?
plus, how would the kernel even know what would be useful to put into ram? there just aren't always ram-consuming "less important tasks" to even be doing in the first place.
(there's also things like ram speed being limited and the fact that operating systems just need a certain amount of ram to be free at all times in order to function that mean it just isn't practical to be always aiming for 100% utilisation)
For me they are. It takes a while, but they are quickly at 95% and then stay there. And in the beginning I wondered whether that was correct, but then I read up about it, and the system does a lot of stuff when nothing is important otherwise. Buffer cache is one of these things.
Granted, I almost never turn of my systems, so I when I say "under normal conditions" I meant "running for at least 24 hours".
ah, what is happening to your system (whether necessary or not) isn't necessarily a rule of thumb for all unix systems. I tend to have more customised installs (have I mentioned I use arch btw) and simply do not see 100% utilisation full time, despite my ram never exceeding 8gb. I can't remember if my buffer cache is fixed size or dynamic so that may be a factor but my system barely works at 95% utilisation haha
but also I'm diligent about regularly turning my computer off
Yeah, I was more talking general in my initial post. I didn't really know your level of expertise so I was giving a rather general answer (the "always" was a really bad choice of words, sorry qq) because I have seen a lot of people worrying about RAM usage and saying Linux is bad because it uses too much memory.
But I think you are more experienced and knowledgeable than me, so I'm sorry for that.
Also, ❤️ Arch
yeah, I don't think it's a almost always/always thing but it's worth pointing out that it can be normal! so thank you for clarifying 
ty
Hello ! How are you ?
I would like to use Selph's Extra animal config to change the animal texture skins when they reach a certain amount of frienship,
I read the documentation but i don't really understand where to put the condition and texture changes in my code. Is it under "Skins" ?
Should i add some code elswhere ? (i'm learning modding)
Just trying to understand here, but:
- Do you mean for the animal the farmer has befriended to change its skin?
yes ! With selph's framework, you can change the skins by using the friendship condition, but i don't understand where to put the condition
this is the documentation, i tried to add it under "skins" fields to change animal texture, with the animal friendship condition
but i don't know where to put it in my animal code
I think all of that still is in reference to entries added via the Animal Extension Data?
For Content Patcher it should be something like this:
{
"Changes": [
{
"Action": "EditData",
"Target": "selph.ExtraAnimalConfig/AnimalExtensionData",
"TargetField": ["YourAnimalId", "TextureOverrides"],
"IdOfYourAppearance": {
"Id": "IdOfYourAppearance",
"Condition": "YourCondition",
"TextureToUse": "YourTexture"
},
},
}
]
}
oh ok i see ! thank you a lot, i will try this 🙂
i'm reading the TargetField documentation, it will help me a lot !
this is so cool they got symbols for brute games identifying https://media.discordapp.net/attachments/383368936466546698/1443341883605782700/IMG_5486.png?ex=6928b861&is=692766e1&hm=94919222130920fa93b71dbd007173e96fcaa70097d0343ea1c09df11079fef3&=&format=webp&quality=lossless
Hi guys, I wanna ask something about delete Warp in Farm Door to FarmHouse. How can I delete this warp in content.json?
hellooo how might someone make an NPC disappear (using SetNpcInvisible) the day after an event?
Mail flags maybe?
hmm maybe! i do want it to temporary though
You want to erase the front door on the exterior of the farmhouse?
You could remove the mail with a TA
hm true! I'll try that!
you dont even need to remove the mail flag, the trigger action that makes them invisible will only happen once unless you tell it to repeat
OH
that's great! is there anything I should do to make sure it doesn't trigger again?
gotchaaa okay
wait there are some things I want to repeat, how can one do that?
ty!!!
okay just to double check, I have a trigger action thing set up to check how many years Krobus has lived with the player, would this be correct?
"{{ModId}}.Trigger_Stat.YearsRoommated_Krobus": {
"Id": "{{ModId}}.Trigger_Stat.YearsRoommated_Krobus",
"Trigger": "DayStarted",
"Condition": "PLAYER_NPC_RELATIONSHIP current Krobus Roommate, !PLAYER_HAS_CONVERSATION_TOPIC current {{ModId}}.Topic.NewYearRoommated_Krobus, PLAYER_HAS_MAIL current {{ModId}}.Letter_FLAG.KrobusMovesIn Received",
"Actions": [
"IncrementStat {{ModId}}.Stat.YearsRoommated_Krobus 1",
"AddConversationTopic {{ModId}}.Topic.NewYearRoommated_Krobus 112"
],
"MarkActionApplied": false,
is this the only way the player gets that conversation topic?
then this will happen on day one of being roommates
Does anyone know how/have a mod link to stop the artifact spots from shaking?
okay i should either set it up to get the topic upon roommate-ing or maybe set it up to be -1 when the world is made or somehting
you cannot set it to be -1
aww
if a stat is 0 or lower, it is removed
dammit okay
eugh my brain is too laggy rn
hm, how could i set it up to go back to 0 after it triggers on the first day
have a different trigger action right after it that checks if the stat is 1. if it is, increment it by -1 to undo it
correct
tysm buttons 
In other news, I've just published a new simple framework for custom emotes, should any mod authors be interested in adding any without the compatibility nightmare that comes with editing the vanilla emote spritesheet.
https://www.nexusmods.com/stardewvalley/mods/39656
Yes!!! Damn that was fast buttons
Button is so fast with mods it's insane
oh, do you want me to showcase it cause i have the role?
wouldve been faster but i spent like 4 days just sitting there with the mod 99% finished but didnt wanna do documentation
how-
if you feel like it
What key works with stardew hack mod?
I couldn't open the hack mode, I can't find the button
how you can tell i was procrastinating doing actual real work on it:
The only stardew hack mod I'm seeing on nexus is https://www.nexusmods.com/stardewvalley/mods/3213, if you're looking for general modded game help visit #modded-stardew but if this is specific to making mods, let me know if this is the same mod you are talking about
this mod
The dream of having Haley do the
emote AAAAAAAA
the dream can now be reality 🌠
YESSSS
Button, you are an absolute gem to the community
omg omg
the dream of having my wife announce the word 
that mod doesn’t do anything on its own. What are you trying to do?
combine it with BETAS and you can make her do it when you are a female farmer married to her and give her a kiss in the morning
I’m ngl i think i’ll forever associate
to blueberry lmao
No, There is a warp at the Farm Map to Farmhouse. I want delete that warp. But I dont know how. And I add different warp Farm to Farmhouse but everytime I warp to Farmhouse 7 10
same, I see blueberry using it so much more often than anyone else XD
25% of the time i use demetriums is because i want someone to assume that it was blueberry who used it
likewise with 😌
chu uses it sometimes too
fraud and identity theft
though recently bluebs has been using 🙂↕️ a lot more
Button arming the wlw mod authors community i have been awake for more than 24 hours but i’m more than alive 
you've changed, blueberry...
what a time to be sapphic
every time is a time to be sapphic when you're as big of a lesbian as i am
New quote added by head_in_the_cl0uds as #6775 (https://discordapp.com/channels/137344473976799233/156109690059751424/1443383548676411412)
Guys?
-# no clue sorry
wren is the one that responded to you, no one else has responded because no one else knows the answer
Button do u mind if i (gently) poke u w questions when integrating this in good luck, haley
feel free as long as its in here and not DMs or nexus messages 
also if you took half an hour to respond I think it would be nice to give wren more than five minutes
(it’s ready for release but what’s another feature)
(and by in here i mean this server, could be in my thread or in mmg idm)
🎶 BABY YOU CAN KISS A HUNDRED BOYS (prolly just alex actually) IN BARRS🎶
The only thing stopping me from making Good Luck, Alex! is a postgrad education, man
github question issue it is
/lh
honestly not terrible, definitely preferable to nexus messages
yeah the postgrad education probably matters more
..just a little
stardew expanded how to go new city and village
!gameplayquestions
sryy
!gameplayquestion
Hi! This is a support channel for issues such as game errors, missing saves, games not launching, and so on. Your question seems to be more gameplay focused, and as such would be better suited for:
- #stardew-valley
- #stardew-spoilers if your question is about something post community center or other late-game content
- #modded-stardew if you want to know what mod something is from or what mod changes some game aspect.
thank you pillow. i would now like to ask about game errors, missing saves games not launching, and so on in this support channel
sounds like a pebkac error to me sorry blueberry
that's a new one
oldest tech support acronym in the book 🙂↕️
that and picnic
picnic is the usual one I hear, easier to remember aswell
pebkac is more fun to say
I never heard picnic until I joined this server 
i'll admit i've never heard picnic in my life
problem in chair, not in computer
it's great if you have sandwiches and a blanket
you can also say its an IBM error if you wanna be meaner about it
I do like that one, but that's more reserved for my own stupidity XD
a little outdated now that that's not a relevant thing to say 90% of the time 
wonderfully it does also open up the avenue for the problem to be a cat
at least we still use keyboards and chairs
gone are the days when so many computers were IBM
IBM itself still pretty relevant though i reckon
glorified patent troll I mean what /lh
(here i stand at a laptop without a chair or keyboard
)
no laptop keyboard sounds diffifult 
... are you using speech to text
i could be using a touchscreen keyboard, but for the purpose of being an exception a laptop keyboard is not a discrete keyboard 🙂↕️
if you call it a keyboard then it is a keyboard
look ma, no chair
it aint a PEBDKAC error
ok a combination computer-typewriter sits in front of me as i stand
oh i know this one, GO EAST
I have always heard it as PLBKAC -- "Problem Lies Between Keyboard and Chair"
theres no word starting with E in that one tho
Yeah, not sure why the people who taught me it didn't use an E word
But there was always an L
I would argue a typewriter is still a keyboard 
source: I own two typewriters and at least one keyboard
Hey guys! It’s been a while since I’ve been here or touched any code, but I’m back because I have an update I’m trying to get out by the end of the week, since I made some promises.😅 I need to make portraits that have a random chance of being chosen among each other during a specific season, but each of them will also need to have the option to be individually disabled in a config.
If all but one option is disabled, would it be possible make whatever portrait is the last remaining to be the default for the entire season, vs it still being chosen by chance? I basically need one special portrait to always be chosen, but all to have an equal chance of getting picked if two or more are enabled.
I also need to link each portrait chosen to their own specific sprites. So… how should I go about this? Which wiki pages would you recommend I look at? Are there any mods that do this which I should also check out? Thanks!
re: default portrait, you can probably make a dynamic token for the portrait that checks if its config is turned on but every other config is turned off, and if thats the case, set its value to "1", but otherwise set its value to "0.1" or whatever percentage chance you give them all by default, and then use that dynamic token as the value in the RANDOM token i assume you're using for the appearance data
(and by RANDOM token i mean the RANDOM game state query)
that does ofc as mentioned assume you're using that GSQ in the first place or even using the Appearance system at all in the first place
I’ve done dynamic tokens before, so I’ll need to open up the json and my references to see if I can get this done. Thanks.
Sorry, was busy. Where is the warp appearing? And on which farm map?
Adding warps won't work properly because the farmhouse is hardcoded to move any incoming warps from the farm to the front entryway. It's an unavoidable side effect of how building interiors work
Put them all in appearance data with the same Weight and Precedence. Set a query on the Condition field to check whether the config for that particular appearance is active.
So… how should I go about this? Which wiki pages would you recommend I look at?
This part should have all the info you need: https://stardewvalleywiki.com/Modding:NPC_data#Appearance_.26_sprite
oh wow the emote framework is out!! this is going to be a lifesaver
Is there a file that shows which schedule's an NPC follows during events? Trying to see what Penny does during the Trout Derby and Squidfest
They just use normal schedules during passive festivals
Apparently I'm doing something wrong with my mod id based on the json validator: https://smapi.io/json/content-patcher/45e8f587bad8416dba5d4e7fd6137afb#code.14
I'm also wondering if my "Condition" query is correct? I haven't tested it in game yet. Help would be appreciated.
the token is {{ModId}}
Ohh
