#making-mods-general
1 messages · Page 529 of 1
I should go and make a tile action version of "just animal shop"
whnat a cute icon!
Rn it's bundled together 
Yeah but it doesn't offer any way to add another entry to the menu (bc it's specialized)
what do you mean?
You can only have animal shop, supply shop, pet shop, cancel
There's no way to add more options to the response in livestock bazaar atm
oooo you wanna make it where you can add as many shop names as you want
be a good way to make a order hotline
If u have like a direct "just animal shop pls" thing then u can use it with mmap or selphshopthing easier
Atm there is a trigger action for it but not a map action
would you be changing how the other way works too or just adding another way?
oh yeah chue since you're here did you do anything special for CSSM and Item Extension's extra trade items
No i never got it to work in the first place 
So i just went shrug compat problem for 2027
I asked since extra trade items I also kinda sorta 2 caked
compat is probably also doom because I can't see where I'd put extra space
Well i can expose my config real quick
Then u can know how many item per row is configured
As for the drawing bit idk i guess I can accept a draw delegate via api too where u get the bounds?
let me know what sorta thing u want from API n I'll do it 
help what the heck does the red part mean in the smapi log???
https://smapi.io/log/163c382bd8b1484ba874a1855e39a109
Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on macOS Unix 26.2.0, with 11 C# mods and 9 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
hmm lemme thonk, definitely wont get back to you before version release though
this is like 5% urgent since there's already the tooltip
almost
show your code? but it seems like you're loading the same asset multiple times without setting priority, which is not allowed
for content??
also should the portraits/sprites be in xnb or something
your second block, you probably meant to load into Portraits/{{ModId}}_Pandora instead of Characters/{{ModId}}_Pandora
no need, that's just how the game sees it after conversion by CP
ahh ok
ohh ok
tysm let me see if theres more issues......
I'm not fitting all this into a CSSM square
SHES ALIVE!! 
(why is there magic symbols?)
I think best case is just tell u when give up
Which u can just do as a config on ur side for now too
what is a CSSM square..
hmm, maybe replace the cost with a … icon? and then show on hover
(when it’s too long)
waow... 2 green ppl in chat
maybe just accept that if someone wants to add a million trade items then maybe trade item shops isnt the way to go
Ahhh that reminds me, congrats to you both on becoming junimos!! 
current work on SM for 1.6 is going along fine, need to test a few things, and still splitting the backend of it away from the game parts to make the mod more universal.
and need to investigate a spurious crash people reported that I haven't been able to figure out yet.
magic apples
alchemy apples
i see. what does CSSM stand for though, thats a new acronym to me
Compact Searchable Shop Menu
added to my lexicon thank u
(it's cus Better is taken)
Compact Searchable Better Menu
Objectively Subjectively Menu?
Misspelling of Butter
Also anything u do is awesome, Button
https://smapi.io/json/content-patcher/48b5277d962f475091d927f83d387636
Smapi says there's an unexpected character for line 3.. but it's just "["? I don't what I'm doing wrong 
if anyone knows the issue please lmk
are you accidentally Loading this patch to the dialogue asset instead of using the Include action?
rhis in the content?
hm, could you attach your content.json and the file path thing to your dialog file?
uhhhhh like mod/(your mod's name)/(the folder where you have your dialog file in)
...sorry if that made no sense- one sec
this is mine for my file with all the trigger actions
gotchaaa okay then that include entry looks alr to me, but keep in mind I'm also a relative beginner
😓 euhhh idk whjats doing wrong then
lemme see
hMMM I don't see any glaring issues myself (again beginner sooo), maybe attach a value to the log's name and then try again?
ALSO are you aware of the patch reload command?
oh right
ooh 
it's really good!
my goodness doing this fixed it
yayyyy
tyt :3
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.
if i have values that arent filled in would that affect it or..? bcz i currently have some that i dont have filled in
Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on macOS Unix 26.2.0, with 11 C# mods and 9 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
oh thank god button's here- she knows what she's doing as opposed to me LOL
you are both Including and Loading the dialogue. your patch on Lines 20–25 is Loading your included file
(which you dont want to do!)
wwaht am i supposed to be doing 😞
Just the Include! The patch just before it is correct
When you Load something, Content Patcher tries to give it to the game directly. So when you're Loading to the dialogue target, its trying to give the game a list of "key: value" entries
But your dialogue.json is formatted like a Content Patcher Json with changes and patches and everything, which is used for Includes
if i include do i need a target?
Nope!
yayy ok
Your Include is correct
ok tysmm!
hm, you're also gonna wanna do thorough testing with less mods in your file, preferably just dependencies and the stuff you need to more efficiently debug
So you just need to remove the Load
is your marriageDialogue.json also a content patcher formatted file, with Changes and patches inside it?
(and same with your schedule.json - basically, double check that these are supposed to be Loads and not Includes)
emm i havent done tose yet but i hope they will be? im just trying to get it to work first so i dont have to go through mountains of errors later...
okiekie
-# oh shit they don't-
new version of Carpentry Catalogue is released! Featuring:
- Extra trade items for shops
- Ability to open a question dialogue menu on maps for multiple map actions
- Custom geode breaker menus
steal Clint/Marnie/Robin's monopoly on shop menus today
@golden basin ^
Thank you!
smapi is not letting me load dialogue asset thingyt .?
https://smapi.io/log/57aa8af27ddc410c8041d4ac2940b743
Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on macOS Unix 26.2.0, with 11 C# mods and 9 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Oh wait is this a new framework?
Yeah, it says so on their page
I'm on mobile I haven't opened it yet
See I thought it was builder mod....I didn't think id need to add another dependency
Or is it a replacement.....do I need to redo my shops again
you cant use tokens in your console (outside of the patch parse command), you have to write out the modid manually
no, that's the same one you've been using
I renamed it a while ago
for style™
Ooooooh
CC (a BB)
Okay cool
what does thi mean...
{{ModId}} is a token
you cant write {{ModId}} in the console because SMAPI doesnt know what it means
you have to manually write out the UniqueID in your manifest instead of {{ModId}}
it still isnt loading...
hellooo can config values be directly used in Condition keys (the ones that take GSQs), or do I have to do something more complex? wanna make a trigger action only apply when a certain config value is chosen, and I have enough values that using when and making all those dictionaries would be tedious
If your config is a true/false then you can use it as a GSQ yes, because there's 2 gsqs by those names
got ittt, I'm too dumb for that (added more values) so it's prolly when time
I don't particularly recommend doing it, feels better to just not add the trigger action
New quote added by atravita as #7196 (https://discordapp.com/channels/137344473976799233/156109690059751424/1467642552265081016)
No i think config as condition gsq is just more lazy
so cani have some direction of what i need to change?
yayyy got quoted for my remarkable idiocy-
The reason why i think it's better to "not edit" is bc the config isn't something that will change frequently
I dislike having a no-op trigger action entry 
yeah :(
heh making thing for configurably increased difficulty to befriend krobus/dwarf
with 3 levels
If u have a lot of trigger actions dependent on the same config you can always put those behind 1 include
So that you only need to write the When one time
uh huh!
i didnt even know it was a thing, which gsq can actually been used with config values? i thought they were separate things since one was a CP thing and the other built-in
ALSO chu I probably asked this before, but what pronouns do you use?
the latest version only adds new features, so you don't have to change anything
There's a gsq literally called TRUE and FALSE
if you wanna switch to using a menu, follow the menu guide + example
the menu would call the existing map actions you've been using
tl;dr switch the map action over
i just dont understand completely yet ill try to read it again
im wanting to put my builder, the supply shop and the geode breaker thing all undder one menu
and im just confused by how to link my already made shops in with the new feature
But in general gsq is just a string so if your config token resolves to the right string it'll work
My pronouns are "idc use whatever"
gotcha :)
esp cause its all one npc
Oh WAIT I see okay its starting click
Anyone know if the Volcano paths items (Button and Door markers) work outside of the volcano specifically? Wondering if I can use them elsewhere
Hi whatever!
No
instead of the shop action being on the map, it'd be an entry in the menu
Ah heck, fair enough; I'll just do it through a map edit I suppose then. Thanks for the help Handknit
but yeah see the example below
Sup any pronouns accepted
Do u want them to immediately activate like in volcano dungeon?
Yeah; for context, I'd be using it as a way to open a shortcut/new area. There's a warp into this room from the cellar, and an entryway into it from the main farm; I'm wanting to prevent access to a certain section until they've opened it from the cellar warp side
So it'd still function as the same type of gate mechanism that exists in the volcano dungeon areas, or most accurately the volcano entryway with its button to open that gate which leads to the caldera
so. does this have any chance of working- I'm mostly screwing around rather than coming up with final draft code and I wanna know if I did this correctly (good to have knowledge for future shenanigans) 
If u need immediate map updates then u would need some kinda framework, if u r fine with waiting a day then content patcher editmap is sufficient
Hi guys how do I start making mods i think I need content patch as I wanna tinker with bundles I checked it out on the wiki and I think m it’s the content pack one, but what do I do? Don’t wanna ramble but I’m autistic and struggle to understand things some times, is it like an app I can use to make it all? I wanna muck about with bundles
I'd have it sync with the addition of the cellar, as that requires the player to sleep for it to finish (And is the other way in). Shouldn't be too bad
There isn't any sort of simple GUI for comm center bundle mods unfortunately
!startmodding :)
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
You will have to write the json
I wanna make new ones
So do I just code what I want?
mhm!
Where do I write it
check out the guide thing in the command :)
!unpack
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!
Take a look at the vanilla bundle data first
Ok so I unpack the file add what I want and then it works?
unpacking lets you look at the game's files, so you can learn how the game does things
it does not edit the game
Yeah it's for reference purposes
-# (oh thank god I thought I got something wrong LOL)
How do I add stuff then
that can come later, best to see how the game does it first to understand the sort of thing you'd be writing
To add stuff you need to write a content patcher json
Where do I write that
!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.
A json is a kind of plain text file
But i recommend following the tutorial on wiki it's more in depth
I see thank you so much this is very helpful
Can i have multiple shops being run by the same npc?
OH and chu, do you think this would work?
oh hey fellowclown!
its working so far except my smithing shop says cros not there but he is
Probably but what is the goal here
It seems like not a lot of reduction
and I wanted to add that {{Hearts:Krobus}} to hopefully make the reduction based on heart level
sure!
hmmm, I do have an extra difficult version too
you don't actually need each entry to be different NPCs, if you thought that's what the example did
You can probably do some {{query}} stuff if u wanna maff
its nto quite working then its saying hes not there to run the shop for the smithing shop
everything else works tho
oooh good! didn't know if that would work outside of when thingies
all of the examples are in when things iirc
It's hard to answer will this work in vacuum because idk what the goals are 
got ittt okay
Better to just test in game
feel free to show your code if you need help
CustomBuilders_OpenBlacksmithShop you wanna use the shop ID, not the NPC ID
OpenBlacksmithShop takes a shop ID like regular shops
ooooooo so blacksmithshop should be my shop id
thank you so much
This is something that needs a small MapEdit right? I've seen other farms with a map patch for right under the greenhouse, just wanted to be sure
could you show your layers in tiled? idk how 1.6 handles it but iirc in 1.5 it would expect a layer called untitled something and would grab the tile from thefe
Nah this is cus your untitled tile sheet is not the untitled tile sheet
kinda hardcoded
It's gotta be spring_outdoors or u die 
This is unchanged in 1.6
Noted, I'll update the name then; mine isn't named spring_outdoors, though I believe my current vitality is positive
heheh love the user SMEPI 
The tilesheet name being checked for is untitled tile sheet
You can check the vanilla farm tmx to make sure
Alright, I've updated it to spring_outdoors
Though it needing to be that specific is slightly terrifying
It's just a little bit of hardcoding
To clarify the logic is
- find first tileset named
untitled tile sheet - pick specific tile id from there to draw for greenhouse entry
Iirc Maps/spring_outdoors is the tilesheet asset with the right tile at right position
Best to double check with a vanilla farm map in case I'm wrong
im still getting that cros not there
{ "Id": "Blacksmith", "Name": "Smithing Service", "Action": "selph.CustomBuilders_Open {{ModID}}_SmithingShop none 900 2000 4 8 5 5", "MessageIfFalse": "Cro ain't here right now!", },
liek this right?
hmm what if you remove all the params but the shop ID
also since all the shops are run by one person you don't need the time/direction/area for the sub entries
oh okay
oh wait I see it
selph.CustomBuilders_Open
should be selph.CustomBuilders_OpenBlacksmithShop
oh so one word?
selph.CustomBuilders_OpenBlacksmithShop {{ModID}}_SmithingShop
ooo
@mellow laurel horse
Now, what about the sound?
Also, what's the format nowadays? 2.8.0?
since content patcher is 2.9.0
the 11th
Oh god, do I have to go through all of my mods now?
you only need to uplift the format version if you plan on using newer features added in the versions since
Some new mods may require the new feature added but it won't matter for most
Oh, so I can just keep 2.8.0 as is unless there's a new update for the individual mods, right?
The format mainly is there so content patcher can migrate old mods if it needs to. But it doesn't always need to
old format versions are always going to be supported, with the only asterisk being pre 2.0 formats being assumed to be 1.5 mods and so extra migration logic runs as a result
Anyway, so what about the XNB file in the assets folder of that mod?
Do I keep them?
Sweet, thanks.
Still don't know whether the engine sound actually sounds good or not because I don't know how long the galloping sounds for the horse are.
For the TargetField, in terms of maps, is it possible to target multiple maps, as long as they follow a pattern?
I am attempting to add support to "Gem Isles", a mod that generates new maps, such as aedenthorn.GemIsles_GemIsles_1_1, aedenthorn.GemIsles_GemIsles_0_1, 0_2. all depending on direction.
I wanted to target all maps that have been generated with aedenthorn.GemIsles_GemIsles*, I do not know if this logic exists, nor if it checks multiple maps and applies it to all that match, and updates oftently (since this mod lazy generates maps, so aedenthorn.GemIsles_GemIsles_1_3 wont exist until you get there by crossing aedenthorn.GemIsles_GemIsles_1_2)
not possible
last question,
```python
"{{ModId}}_SeaTurtle": {
"Id": "{{ModId}}_SeaTurtle",
"ItemId": "(O){{ModId}}_SeaTurtle",
"Condition": "LOCATION_Season Here Spring Summer"
},
When adding a pre-existing fish to a vanilla/custom map, but that map has both freshwater and ocean do i just add this property:
"Location": "Ocean" to it?
i have no idea how fish stuff works so dont look to me for answers 
a few modded locations (blue vineyard from SVE) has both freshwater and ocean-like water at the bottom
if they used LOCATION_FISH then they can fetch fish from another map
i believe they didnt because some fish were put into the small water near the dock
thats why i wondered if me adding fish + making its location Ocean would target specifically any area body of water that is like an ocean
again, i am uncertain, just guesses
Try look at how vanilla does stuff in farm beach or in forest maybe
It seems how SVE handles it is that it manually adds the fishes in, but seperates it with the "FishAreaID": "Ocean", property, which appears to be working flawlessly, same goes for "FishAreaID": "River", if your fish is suppose to go into any body of water with that property value
yay

in this example, is 305/306 fixed for any question or can you use any numbers?
or does it have to be unique in the game or something
you should use something prefixed with the {{ModId}} token
so would it be {{ModId}}_the number?
(You don't need to use numbers, even)
Assuming you would like to check if a specific answer was chosen later on, you'd want it to be unique, which {{ModID}} guarantees, it doesn't have to be/have a number, it can be anything
id recommend using a descriptive string, like, for this example, {{ModId}}_summer_Fri
i see, thanks everyone :)
do i use 2 different values? since the example has 305/306, should i do {{ModId}}_something/{{ModId}}_something else? or does it not matter
You can use different values if it's important to track which answer is chosen, or the same value if it isn't.
alright, thank you!
Psst if it isnt necessary to know the choice later, $y is so much easier to use
But do be aware that there's no friendship changes with $y
If only $y can contain $action. 😔
does anyone happen to know the coordinates for brown egg (180) on springobjects? when following the coordinates on this link to replace it ( https://stardewmodding.wiki.gg/wiki/SpringObjects_Coordinates ) it seems to replace hay instead....
Uh, Photoshop just tells me the coords my mouse is at, so I do that when I need them. gimme a sec
Regular brown egg or big brown egg?
I assume regular but double checking
the regular lil one
192 112
ill try that! thank you!
yup, that was it. thanks so much!
Looks like it and hay swapped?
looks like it. weird
For editing text added by another mod, for simple short lines I can do fairly easily with Content Patcher e.g. editing the description of another mod's custom Power in the player's Power page.
However for an Event added by another mod, if the way they add their custom Event with Content Patcher is using references to other files in that mod's folder, is the only way I can make any edits to the text in that Event by fully copying out all the text referenced by the mod's Event, or is there some way to "transclude" text from their other files?
E.G. they implement their custom Event in Content Patcher with:
{ //Andy's special order event "Action": "EditData", "Target": "Data/Events/Custom_AndyHouse", "Entries": { "5407915/e 5404269": "kindadumbautumn/-500 -500/farmer 13 17 1 Andy 18 15 0/pause 1000/viewport 12 16 true/move farmer 3 0 0/move farmer 0 -2 0/pause 200/faceDirection farmer 1/pause 750/faceDirection Andy 3 true/pause 300/speak Andy \"{{i18n:OrderEvent.Andy.01}}\"/pause 350/globalFade/viewport -1000 -1000/playSound stairsdown/changeLocation Custom_AndyCellar/playSound stairsdown/pause 500/warp farmer 8 5/warp Andy 6 5/faceDirection farmer 2 true/faceDirection Andy 2 true/viewport 7 7 true/pause 1800/emote farmer 16 true/pause 1250/speak Andy \"{{i18n:OrderEvent.Andy.02}}\"/pause 750/faceDirection Andy 1 true/pause 600/faceDirection farmer 3 true/pause 500/speak Andy \"{{i18n:OrderEvent.Andy.03}}\"/pause 500/move Andy 1 0 1/pause 400/shake Andy 500/showFrame Andy 37/pause 250/playSound newRecipe/showFrame Andy 38/pause 500/showFrame Andy 37 true/pause 200/move Andy 0 0 1/pause 300/playSound reward/message \"{{i18n:OrderEvent.Andy.04}}\"/pause 250/emote farmer 32 true/pause 500/friendship Andy 250/globalFade/viewport -1000 -1000/stopMusic/pause 1000/end dialogue Andy \"{{i18n:OrderEvent.Andy.05}}\"" } },
The text I want to edit is just a single number within the text of i18n:OrderEvent.Andy.04.
Is there some way I can indicate to Content Patcher that it should look in the i18n folder of a specific mod, instead of my own, in order to keep these references e.g. {{i18n:OrderEvent.Andy.01}}? Otherwise it seems I must I fully transcribe the contents of i18n:OrderEvent.Andy.01 - 0.5, which seems a bit overboard, and possible might screw with translation?
You can edit individual sections of an event script, though its fragile as it can be broken easily if the other mod changes their event at all
you cannot edit other mods' i18n data, though, since the game never sees it and content patcher does not expose such a thing
If your patch runs after theirs (via dependencies or load order or what have you) then those i18n tokens have already been turned into the actual text
to modify a line in an event using i18n like this, you will have to provide your own copy of the line but with the change you want
Yeah I can successfully edit the text in the event currently, but right now the way I'm doing it requires fully transcribing all the text which seems a bit overkill.
i suppose you could try to textoperations it
really it's just a different flavor of brittle at the end of the day
Yeah that's fair. I suppose the way I'm doing now, if the other mod does change things, the end user won't see those updated changes but at least the version they see will be a working one
Vs. me trying to just edit part of it
Well, no, if they change their event then your edit will just kinda break it
Because your patch would still run
It'd just then be editing the incorrect line
(This is assuming the changes they made to their event affect the order/number of lines leading up to the edited one)
There's no other way to identify which line you want to edit in a slash delimited string other than its number i.e. you want to edit the 7th section of the event
Ah, you mean if they change their event such that there no longer exists any "5407915/e 5404269" entry to be changed?
So if they update it and its no longer the 7th, then... yknow, issues
Just for future reference, the item id (180) is the sprite index so if you have a program that can show you sprite indexes (like Aseprite) you can just open up maps/springobjects and find that index.
And then you can find the coordinates of the top left of that frame
No I mean like if you are editing the 7th section of the event (after you split it up by its slashes), but then lets say they add another event command at the start to make an NPC move or emote or something, that means what was originally the 7th section is now the 8th section, but you would still be targeting the 7th section
I prefer TextOperations because if the event gets changed so that line doesn't exist anymore (in that exact permutation), your edit just won't run rather than still editing the (now incorrect) 7th field.
Ah OK I think I see.
That's not the current way I'm editing it, currently I am completely replacing the "5407915/e 5404269" Entry with my own. But as part of doing so I am also transcribing in the actual final text in place of things like {{i18n:OrderEvent.Andy.01}}
I was wondering if there was some way I could retain the references such as {{i18n:OrderEvent.Andy.01}} in my replacement Event, but its seeming like just fully replacing it like I'm doing now might be the simplest method.
ohhhh okay thanks!!!
If you are not editing a base SVE event, you need to make sure you have permission to do that
You're not allowed to just copy their event back in in your own mod without permission, as you didn't write the event, so it is not yours to redistribute without permission
You can use another mod, Cross-Mod Compatibility Tokens (CMCT) to use i18n from someone elses mod, but I would try the text operations or specific fields methods first
Does TextOperations work with a speak field with i18n?
For their patch, the fact that its i18n is irrelevant since the token would already be resolved
I mean like, if it has multiple languages?
Likely not, since for TextOperations to work you'd need to provide an exact text to match on
Unless you specifically put in the work to make your TextOperations patch also change depending on language
Yes I'd previously gotten their permission to make a compatibility patch, specifically for adjusting the number value of the various price buffs from their custom Powers (which is the number I want to change in the Event, to make the displayed number match the edited value of the price buff)
I would 100% ask them to make sure you have permission to redistribute their event, though. That's much different from adjusting prices
and that's why I had to end up counting until I got to the single field I wanted to replace in an event and it sucked
Pls 1.6.16 come quickly.
OK I see.
In that case maybe I will try to do the Text Operation or Field modifications instead, if that's less intrusive?
No, it's vulnerable there. I'd still personally prefer to do the extra work to make it work with translations (like Button said, changing the patch depending on language) because I prefer the silent failure over having it potentially completely break another mod's event but that's definitely just personal preference.
I tend to need to update my compatibility patch for big changes to their mod anyways, so wouldn't be a huge extra work for me to need to keep an eye on this Event edit to keep it up to date with the other mod
I mean if you have their permission to just rewrite the whole event, that'd definitely be easiest
It's just that you can't assume to have that permission
I never want to have to count fields again LOL
Aa that's fair. I prefer loud failure because I'd more easily know there's something to fix and people would also report it quickly.
So what's coming in 1.6.16 that'd get around that? I thought being able to replace the i18n key might do it but if it resolves first, that's not going to help
To my understanding, it gives the dialogues within events their own keys. So yo can just reference the key.
I just hard counted on this one because I don't know of anything else that'd change this event, and I needed to replace text
(It doesn't work with moded events that don't do that, obviously.)
So it might not help for vanilla events unless they also add that.
They are consolidating the vanilla events
Every event will just have one Event now not Event, Event.ja-JP, Event.de-DE, etc
Vanilla events rework is like the big 1.6.16 thing. So it should work.
OK if there are ways to make the change that don't require copying their Event I think I'd like to exhaust those options first.
I'm guessing a ReplaceDelimited TextOperation in Content Patcher is what I'd want to find & replace the specific number I want to be different?
On the flipside, it would probably kinda break any current mod that edits vanilla events.
ReplaceDelimited can work if what you're trying to replace only shows up first, last, once, or you don't care if every instance of it is replaced
Edits to vanilla events shouldnt break
Oh like with strings?
They're doing away with forking, right? Which I imagine would break any field counting?
I mean, they wouldn't be using the content patcher {{i18n}} stuff, so it's not a token, you're replacing something stored in a string or something
Forking is just deprecated, not being removed
I see what you mean now though,so it depends then
If someone was editing a single line in vanilla then it probably will break the events but if they were replacing the whole event then theyre safe, I thought you only meant the latter, my bad!
Yeah basically all vanilla event dialogue should have their own separate string now. So no more field counting for them.
yeeeeeessssss
excellent
sorry, think I turned into Beast Wars era Megatron for a second there
I'm happy they're killing off event forks
also so cool seeing the new junis out and about aaa 
Guys.. would making a mod that displays fashion sense outfits on mannequins be too ambitious an endeavour for someone that has never looked at a line of code in their life
feeling super dumb. I want to add a new sprite sheet (or even just a single sprite) to the game. I know how to replace things, but not how to add new ones—do I just need to "load" it?
doesn't sound terribly hard! the bigger question for that type of mod is "do you like editing pixel art?"
(I assume they meant doing so automatically with c#, which would be a little difficult actually but involve no art editing)
Wait tell me more about the content patcher option 👀
I wouldn't mind editing thousands of clothes 🤭
I feel like this must already be a mod - showing chest contents on hover, but I can't find one
I've made this mod twice now (oops!), so I guess there must be a reason I didn't publish it the first time... does anyone know of such a mod?
There are mods that show labels on hover, but not the contents
At least not that I know of
Never seen one that does that personally. Not terribly in the loop atm though.
oh, nevermind theres this apparently
https://www.nexusmods.com/stardewvalley/mods/13946
I didn't know about that one! Thank you!
Interesting....mod details say it shows vanilla items; does it show mod-added items?
doesn't look like it. theres a bug report about it having some issues with books too
and showing modded items as weeds
(if your version doesnt have those bugs then Id say it's worth uploading)
Hey guys How are u? I need some help please...
This is a 2-heart event I created for my NPC. At the end, she should look down, but instead, she simply walks to the right and disappears.
https://drive.google.com/file/d/1JCxj_TPDJhQY5-UQ4CzsD9c7Z15pnC9t/view?usp=drivesdk
Yes, you should Load it to a unique Target (like {{ModId}}_FuzzyStonesTexture or whatever - the important part is the {{ModId}}_) and then use that Target in the Texture field for the data edit.
Wrong place, sorry y'all
hey! could you please share your log or json? lemme do the commands one sec...
!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.
!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.
it's funny the first time I made it I went all complicated, probably like what the existing mod is doing... with the one I just made, I just draw an inventory menu and let the game do its thing which ofc works with all items
ooh love your mods Erinthe 
Does anyone know how to make a data edit have a low priority?
or this is possibly some other issue
When editing fish for east scarp, it sadly says the map does not exist
however, once the game loads (which takes a bit), and I warp with the same name, its there, also whereami also shows the same data
i am oddly guessing that the mod is loading after ASF does, I dont believe there is another explanation I know of as of yet 
You want the Priority field in the Advanced fields table and you will want your edit to be Late so it comes after ESR. https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#overview
thank you! also, is it possible that just this patch comes later, or does this property affect my whole mod
you put the priority on the patch itself
awesome alrighty
the "affecting the whole mod" would be to have the false dependency thing in the manifest
oh i meant as in would the priority field make the whole mod start later, or just make that specific patch later, thankfully it seems it only applies to that specific patch
If u r making it remember to cap it in case someone has unlimited inventory installed
Seems if I want a mod I love to work with 1.6 I need to update it myself. Does anybody have any general advice on how I could go about that?
idk what that means, but wouldn't InventoryMenu do its thing anyway?
What type of mod is it?
A mod that replaces Clint
That is what SinZ was answering. It will only affect that one patch.
This mod i mean https://www.nexusmods.com/stardewvalley/mods/30323
But yeah maybe it just works/10 i dunno
The Bye Clint, Hello Clarice mod to be exact. It was pointed out to me that it hasn't been updated since 2019, and it also doesn't work with SVE's Railroad Boulder Quest. Both things I intend to attempt to change
If this is the Clint to Clarice mod you asked about before, it's an easy fix to stop the error about the exclusive blacksmith file load (just edit the Clarice mod to add "Priority": "Low" to that patch on the line below the "FromFile" line). I cannot advise you about the railroad though because I'd need much more information about what SVE's quest is, in which way it breaks, if you get any errors in your log, etc.
Oooh! That I can do. And it's just the fact that since both want exclusive priority, it loads neither's map.
my philosophy is it always just works as long as no one posts a bug report.
It loads the mods, just refuses to load the SVE map and let me place the supplies into the box
Yep, so by giving one of them low priority it just won't load that one. If you want them to actually work together it will need much more work, because you will need to completely overhaul Clarice's map to be an edit to the SVE one instead.
That's gonna require more skill than I currently have, so I think I'll give one of them low priority.
Might work on trying to do that on the side as I learn more and get better at modding, but for now a quick fix will do
Is this right?
"Action": "Load",
"Target": "Maps/Blacksmith",
"FromFile": "assets/Map/Blacksmith.tbin",
"Priority": "Low",
Hell yeah
works with big chests too
if you havent test with autograbbers and autofertilizer sprinkler attachments as well (they are cursed non-Chest BCs that have storage)
Also buildings, like the Mill, that have storage. I know VMV has one similar building
it only works with Chests
the fridge is sometimes considered a chest
I've made it so it can also show if you just walk up to a chest, no need to hover
fridges are chests I think
I'm more concerned about my gazillion chests than my single fridge, so that's a huge boon, imo
it was a way to cheese my AutomateChests restriction as I didn't restrict the fridge so you could use it to do automate early
shouldnt the extinguisher be somewhere away from the source of the fire 
are you also making a fire extinguisher furniture so i can feel safer in my own farmhouse too
Pelican Town Municipal sends one out actually. Has one of the wall ones in the shop
fire safety is now my number one priority
I saw someone say they went around town putting those in people's houses and I was like "actually that's not a bad idea"
the left wall kinda various with various mods, so I picked that spot to be more out of the way
of every place that needs it the most marnie's ranch takes the top spot
Marnie's gettin one, yep
I'm opening up vanilla/SVE/LUTI side by side to place em
I've done soooo many compatibility bits for other maps, trying to avoid too many in this
(I'm sure some will still come up, but "just move it out of the way" is a viable solution for most of them at least)
sneaky floor one behind the counter (so many things touch the back wall). It's ready to protect the books
but also there's a fireplace in the museum so there's one on that end
I am looking into this page and near the bottom there's a "Spouse dialogue" section. https://stardewmodding.wiki.gg/wiki/Changing_Generic_Dialogue:_NPC.cs_lines
This page can be used in tandem with the "NPC-Specific Generic Dialogue" page on the official wiki to change NPC.cs dialogue lines. The table aims to, as accurately as possible, describe the various conditions that the NPC.cs lines are triggered under, to hopefully make replacing them as understandable as possible.
Am I right in assuming that those would only fire if the NPC doesn't have MarriageDialogue data?
How can we define custom children’s gender in an HMK content pack (as per the mod’s page, it is said that the Boy/Girl Modes will be ignored and “uses the gender defined by the content pack”)?
is there a framework that lets CP mods add custom junimo bundles to their own locations?
The documentation for the framework has all the how-to's. For this, the relevant section should be ChildData https://github.com/Mushymato/HaveMoreKids/blob/main/docs/000-overview.md
Unlockable Bundles
tysm!
I have never seen any of these in use by any custom NPC who has defined marriage dialogue lines, to say the very least but then again, I don't do marriage much
would be weird if those got injected regardless but that's where my knowledge ends
Has anyone set up Pathos mod building thing yet?
it depends on which ones you're referring to, since they're technically separate mechanics
but from what I've seen so far, they can all happen for NPCs with marriage dialogue
oof
the "kitchen tile is obstructed" will notably interrupt some other dialogue about childen/pregnancy and such
I wish I could say I had, but I already had my own. 
How does it work, exactly?
And on another note, for a custom HMK child NPC - Do we actually need the waving arms and sitting sprites like a toddler’s sprites?
things like going to the patio or talking about kids have higher priority, but otherwise the unhappiness stuff works as mentioned
mod building thing? 
a C# auto-build setup for github code, basically
(vs making and uploading your mod files manually)
oh, that's neat
Yar, the "I just redecorated" lines and the "I just watered your crops" I think have no equivalents.
and iirc Pathos is still working on having it do code-signing stuff so anti-virus doesn't complain about new versions
But there's some like... the "kitchen tile is obstructed" one has SpouseFarmhouseClutter as its Data/Dialogues/ equivalent. And in case of "heart less than 14" ones in Strings vs. the Good/Neutral/Bad lines in MarriageDialogues, which one gets decided?
Even Pathos wouldn't recommend using his thing currently though, anyway. It's still in development, so it's probably going to break as he updates it until it hits a solid 1.0.
And yeah, he's in the process of getting code signing set up for SMAPI!
psh i used it and it worked fine 
but it's kind of eh if i cant go all the way to a gh release
Oh, does it not have a release step yet?
Yeah, it doesn't. I didn't even realise it didn't have that yet.
(poking around to figure out where it checks those keys, but the main marriageDuties() dialogue thing is 550 lines long and kinda vague, so we'll see
)
Helllo!
I was wondering if my categorization for my upcoming (in a month) 1.2 update is good, or should I make it more simple? Or shorter, just wanted feedback
Custom Fish Integration
(Hand-placed fish spawns & locations)
Stardew Valley Expanded (Fable Reef)
Grampleton Fields
East Scarp
Downtown ZuZu
Return to Mineral Town
Axolotl Village
Lilybrook
Ecosystem Superpack Expansion
Cape Stardew
Echo Reef
Northwest Coast
Compatibility Verified
(No conflicts, no overwrites, fully tested)
Ridgeside View
Sunberry Village
Lunna
Baldur's Village
Nature In The Valley
Dead Boy Detectives
Night Market Expansion
FIASA
I feel like this is where you don't want to be lax on the details!
Looks good to me, though do you maybe intend to have "Ridgeside Village" instead of "Ridgeside View"? If you're worried about your page being too long, you could put each list in a spoiler tag to collapse it.
its nearly 1 am, lol i should look at this in the morning, thanks for catching that. and thanks for the idea!
okay, so to oversimplify, the generic unhappiness lines are probably more likely just because the neutral/bad stuff is at the very end of everything
but the math for pulling a generic unhappy line is like:
int minHeartLevelForNegativeDialogue = 12; -1 if you gave them a gift yesterday -1 if you kissed yesterday
and then the random chance of it actually happening is hearts / that number, e.g. 50% if you're somehow at 6 hearts with your spouse and didn't interact recently, etc
if you get past that and all the other dialogue keys, basically, it'll finally check the affection_random key, which seems really low priority
so for people who lose relationship with their spouses, I'd probably trust the spouse dialogue stuff to happen as documented there, short of really pouring over the math
(ps to clarify, it is more likely if you're low, so like 0 hearts = guaranteed generic complaint, 9/12 = 25%, etc)
I see. Thank you for checking it! Seems like Erinthe's Custom Fixed Dialogue is still super important for NPC's with unusual speech, then.
I guess in practical terms, if someone sits at 10 relationship with their spouse without those interactions, there'd be like a 16% chance per day of loading a generic complaint line
not counting patio days and child-related stuff, etc
(also it takes a week after marriage to start checking some/all of those)
Anyone know why vscode does not let me keep my own json files open when I search for contents in another folder (content unpacked) and vise versa? I want to keep a vanilla event open while I build my own, but it doesn't want to let me do that, seemingly because of how opened the file?
I don't even have time to work on an event anymore right now after all the set up I had to do, but I'd like to fix the issue for when I will be able to again. 😅
I wonder now.
Can I have textures for a monster loaded via the Load and Monster Variety way simultaneously?
I'm saying this because as far as I know, event and festival instances of monsters don't get their textures changed if they're using the Monster Variety method.
But I want my crackhead shadow brutes to show up in Spirit's Eve.
If you just click once on the file you should see that its file name at the top of the tab is in italics. That means it's in preview mode and it will close when you click on another file. If you double click when you're opening or if you edit something in it, the file name will be normal and it will stay open when clicking on another file.
wait are you seriouslerious abt the monster thing
Wouldn't that cause some conflicts in the system?
Yes I was serious. No it shouldn't cause any conflicts, it just doesn't show the vanilla textures when MV is working (unless you give all your variants conditions that mean that there's a chance none of them will apply, in which case the monster will be vanilla). Our mods are incompatible with regular monster retexture mods simply because MV stops the vanilla texture from being chosen usually, not because anything will break. If you're right that MV doesn't apply to festival monsters (which I've never thought to check) then the vanilla texture should just be used. Edit that vanilla texture and voila, yours is seen.
So nothing stops me from just loading a bunch of the ones that appear in events and festivals via the old fashioned way?
Bet.
Nope.
Thanks, bestie!!!
Why are some crop sprites have 2 seed images (like this one from SBV (?) for example)?
How can I randomise the seed's appearance between those two?
All crop sprites should have two frames for the seeds, even if the sprites in them are the same. As for how to randomise between them - you can't control that at all. It's hardcoded based on the tile coordinates that the player places the seed onto.
iirc alternative textures can be used to randomize textures for crop instances
sorry i fall asleep https://smapi.io/log/3aa518fc4f0840f0bdbd1bc206aab236
Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 69 C# mods and 132 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Finally I did it XD I managed to change all the game's code to increase the total walnut count XD I consider myself the Nutman now 
sounds like a lot of transpilers
Not at all, I did everything via postfixes and only some prefixes. It was surprisingly managable XD
hopefully not bool prefixes!
Maybe like one of those. But dw, my mod is rather for personal use XD If I really decide to publish it, I'll look further into how to to stuff more safely
I thought u can just spawn golden walnut as ordinary item
I.e. totally possible to make a shop sell them
Unfortunately it's not that easy. Basically as soon as you have 130 walnuts, the game prevents you from actually obtaining any further walnuts. And then there's a bunch of other stuff like having to adjust the golden parrot oe changing the perfection tracker. And then there are some weird code snippets like for example the Island field Office doesn't give you walnuts for donations when you have 130 walnuts. Instead it gives you alternative items like a cooking set or tent set. And I added hints for my walnuts at the jungle hut parrot XD so a bunch of small stuff XD
Yeah there's one mod that adds a golden walnut plant
And it unlocks in the qi room 
Sidestepping the problem 
Yeah, as long as you don't go above the 130 golden walnuts, you're pretty much free to go XD
The thing is i am pretty sure u can go above the number if it's a new way to gain golden walnut
Well, so basically there is only this code that actively prevents you from collecting more:
public void foundWalnut(int stack = 1) { if (Game1.netWorldState.Value.GoldenWalnutsFound < 130) { Game1.netWorldState.Value.GoldenWalnuts += stack; Game1.netWorldState.Value.GoldenWalnutsFound += stack; Game1.PerformActionWhenPlayerFree(showNutPickup); } }
And this is super easy to edit. So if you ignore the golden parrot and the perfection tracker thing, I guess it is fairly simple to go above 130. I think the only actual gameplay problem would be that you might not be able to collect the walnuts from the field office. Might be fine though if you add a way to infinitely get them
I don't know though when this code gets triggered. Meaning, you might be able to not trigger it if you could harvest them from a plant or buy them from a shop or something. I only know that debug item 73 (the walnut id) and collecting it on the map triggers that code
I can see how this holds the stat but yes but it doesn't prevent you from getting the item itself (if it's spawned)
Do correct me if im wrong here 
https://smapi.io/json/content-patcher/8a859ae6c53f475eb640368e7d66dfcf
can someone check what's wrong with line 112 and 113?? i cant tell that anythings wrong but smapi wont load it and the validator says its wrong...
saw this post announced this morning on the nexus mod authors discord, wanted to drop it here for fellow cheetos who might not keep an eye on all that. this'll probably not effect 99% of people, but if you have anyone reporting update issues in the next few weeks it'll probably be good to know this is going on/report on it while they make this change to update chains
you're missing a comma on 110
In addition to what Jenna said, you're missing an entire dialogue key for line 137. You have the value but not the key.
What does a bad update chain cause rn?
It's probably not very visible in sdv cus smapi has a separate update check
I don't know either how exactly it works, but as far as I understood correctly, the game basically triggers the function OnItemReceived and if you have the case of (O)73, meaning the walnut, the game calls the function I sent in earlier and removes the item from the inventory again. So I think it might always prevent you from obtaining it, no matter what, because it works as soon as the game tries to put it into your inventory. So under normal circumstances, I think you might actually never be able to obtain more than 130 (You can only get multiple in one go to get above 130)
well per their visualization, if you got updated onto the 1.3.1 branch and the cheeto updated branch 2.0.0 you might not get an update notification in vortex/mo2 (significant bc a lot of esl users use mo2 based on my interactions with the translators). obviously smapi would still spit rhymes, but it would require the user remove their copy of the mod and reinstall to the new branch. its a real pain in the pattootie when you run into it
for the user it can just feel like 'omg why do i have to go to website, mod managers suck it should just do this'
i think this is a good change, but i think it only really comes up bc the nexus upload ui is so weird. having a ui solution where you can adjust the chains after upload will be net positive for sure.
So far i think i have done the update chain correctly? maybe??
I thought the upload new version button is just shortcut to move the prev file to old version after upload lol
i can tell you that most people (myself included) fuck it up fairly often. the fact that the replace option is not on by default is a little :\
i think the convenience layer is how most authors experience it, but yeah there is more going on behind the scenes. i think they overcomplicate the file system, but i have a limited scope ya know? other games have other needs im sure.
I always have to do it, then go check the mod page, then go back and fix it if I've messed up lol
(Though I can't say whether I think this upcoming change is any better because I don't have permission to see the post xD)
I think you should be able to if you're logged in? You might need a mod author flag on your account but not afaik
If you still can't lemme know and i'll ask picky to fix tho ❤️
Seems like a good change overall, though!
I am sadly not a recognised mod author on Nexus because I don't have enough UDLs yet 
I spend too much time faffing around and not enough time actually releasing mods lol
haha ahh that might be it then. i think you probably have the gist of it from what's been said here tho.
Yeah and I'm sure it'll get discussed more as well
/me remembers i can print to pdf
Thanks! Seems good to me. We can still have separate AT and CP files in the same mod page etc, there will hopefully just be less of the "there are 3 different main files and they're all different versions of the same mod, why???" - maybe?
(Also, this is a damn crime.
)
Maybe I can show them how many people's mod page credits sections I'm in and they can make me a special role /j
? what am i meant to add?
Mhmmmm. Probably a very obvious superfluous question: but moddata/global app data is also synched in MP right?
nvm figured it out
if you mean the SMAPI feature for saving per-player global data locally no I don't think so
if you mean modData the net field on the game's various types then yes it's synced
New quote added by atravita as #7203 (https://discordapp.com/channels/137344473976799233/156109690059751424/1467898365651193928)
Mhmm moddata net fields synced means here that they can stay unique for each farmer, regardless of main player and be accessed for each farmer as its own?
Each farmer is a different entity so they have different modData and you can read another farmer's modData by acquiring their instance first
Global app data is completely local to each client
Ohh nice, mod data it is then, thanks!!
Just fyi since farmer sync is a bit different
Things off of farmer are special in that each farmer can write to themselves
And host can write to an offline farmer
if the data isn't something that needs sync constantly I usually just use multiplayer mod message
why is this mod authors only? how strange
Picky very kindly moved it to Site Updates so it should be viewable by anyone who wants to see it now
Now I actually found a way to work without bool prefixes at all. I only have one prefix in general (no bool, original code always runs) and other than that only postfixes XD
Hello, does anyone know how to create a custom NPC?
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
is there any reason why the game wont load in my dialogue?
theres nothing wrong with my code and i cant patch export it either
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.
dialogue or content
both
sometimes a bool prefix is necessary! but if you can avoid them, good on you for doing so
minor unrelated note but you have a typo in acceptbouqUet (that u is missing)
oop
and you’re sure the dialogue json is in assets/dialogue/dialogue.json? and have restarted the game?
yup
for resttart do you just mean exit n repoen
ive tried a lot, it hasnt worked
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.5.1 with SDV 1.6.15 build 24356 on macOS Unix 26.2.0, with 10 C# mods and 4 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
and you’re sure the file is saved and the version you’re editing is the one in the mods folder, right?
yep..
if i have marriage dialogue and schedule blank, it wouldnt cause any errors?
would other mods affect it?? i have custom fixed dialogue downloaded
ill try removing other mods and trying again
nope still doesnt work
hey, does anyone know the best method to return all of the non passable tiles for a specific area without iterating through each tile to check?
I’m not sure there is one, what are you trying to do?
im trying to create a path for automating, i just want to be able to check what paths are not blocked before moving to a tile, instead moving to a tile and being unable to move
have you tried asking the pathfinding code to do it for you?
but at any rate that code checks the tiles as it goes, there's no stored collection of passable/impassable tiles that i know of
I didn't know that there was one 
thank you
although i think that might not work because it doesn't include mine levels? is that correct
as long as the map is loaded it should work. check out PathFindController.cs for how to call it (you can make a new one or call .PathFind directly, but not sure which is best for your situation)
The underlying way is still going to be checking every tile
You can do a BFS tho
Hey @lucid iron you were the one who posted that cp pack spoofing thing, right?
and now the new fire extinguisher positions have been tested and confirmed showing up~
Fire safety be upon ye
from a few days ago, right? where the C# pack can also be a content pack? chu forwarded it, but from my thread since i was the one that did it
Yeah! Does that have to be run at a specific time during game setup, or does it work at any time? (asset lifecycle aside)
that example was specifically trying to be a Content Patcher pack, so it has to run before Content Patcher calls GetOwned() to get its packs
since CP does that only once
itd probably vary by framework
Ah, I see.
But since I had to harmony patch GetOwned() anyway which can be done in entry it shouldnt matter
So if I wanted to add packs to cp arbitrarily, I'd have to fuck with the internals
Well, with SMAPI's internals at least, since GetOwned is a smapi thing
But otherwise yeah, the only way to do it is by somehow getting it into its ContentPAckHelper's ContentPAcks list
or array rather
I mean I'd have to bypass standard packloading altogether, since cp wouldn't recheck it
Recheck it how, like for patch updates?
It did that fine iirc
Or were you trying to like, add a mod at runtime
I was investigating the possibility of adding mods at runtime, yes
then yeah thatd be very heavily dependent on the framework in question
and for CP would involve mucking about in internal code
You could try just invoking CP's GameLaunched stuff again
I didn't try that bc for me I was just trying a more general framework-agnostic proof of concept
But I don't know how much stuff would be broken by just calling it all again. Maybe a lot, maybe not?
I've been tinkering with my cp gui tool again and was trying to determine if there was a way to simplify or avoid altogether reloading the game when it's created at runtime
Is the tool for making mods, or using them?
I'm not like dead set on it or anything, just exploring ideas
Making mods
Hm
then while it wouldnt work for config or dynamic tokens, would it be good enough to just get away with reusing a dummy content pack you added at GameLaunched?
Like do the same thing I did in that snippet chu showed you, but then make that dummy pack point to whatever files you want, then invoke a patch reload
That's an interesting idea
It would limit the user to a single new mod per game launch, but that might be sufficient
have you ever felt the desire to work on multiple different mods in a single game launch? 
working on them simultaneously at that, not just shifting gears to a different mod entirely
i think its fine
When i did smithy i considered doing this and then decided just installing actual new mod is better for my usecase
how did you get around needing to relaunch?
I didn't
I just had ui that said "relaunch game pls"
Because it seems better to test the mod as a real mod and avoid any issues induced by C# fuckery
But smithy is meant to produce a regular content pack that works without smithy installed
I wish c# had a way to relaunch that wasn't just "start a new process and hope there's no resource locks"
If u don't intend to have regular content pack as output then runtime make a pack is nice for avoiding filesystem shenanigans
for a mod making tool I suppose I'd agree with that
myself, though, i love C# fuckery
my preferred code to write is stuff that makes someone go "what the fuck"
I do too, but this is already a complicated project, and cp hackery would only make it worse
yeah but you're making an aforementioned mod making tool
so you have an excuse, so i wont revoke your c# fuckery license
Another thing I could potentially do is NOT load the mod at all and just replicate the content edits with c# pipeline stuff
It is a mod
It was originally standalone
But I figured everything would be easier if it had direct access to game data instead of having to duplicate it
Ah then a lot of the choices you face are similar 
After actually doing the whole thing i think being able to kill and start the game again is actually pretty important
New quote added by atravita as #7207 (https://discordapp.com/channels/137344473976799233/156109690059751424/1467973986356039894)
I avoided dynamic tokens entirely because i knew i wasn't gonna be able to reload that
But the goal was "user never need to know about the json" so that was fine
Also to be clear I'm still doing questionable things. I wrote a bootleg source generator to output observable versions of all the gamedata classes so I could use them with stardewui
(bootleg in that it's not a proper source generator, it just reads the classes with reflection and prints cs files)
I do want to go back n add more options to smithy but the thought of ux hell again so soon is stopping me
Also cus I feel like i overfit the ui for furniture 
going back through my code and I forgot about this lol
What is scope of ur ambitions wren?
objects, crops, giant crops, trees (wild & fruit), machines
maybe animals & buildings? maybe fish?
Exciting
I don't want to do npcs because they are SO complicated
I think stuff like machines is really hard to do without teaching user some bit of the structure tho
if you leave a C# modder alone long enough eventually they will make a tool or perhaps some sort of device or helper
New quote added by tlitookilakin as #7208 (https://discordapp.com/channels/137344473976799233/156109690059751424/1467977234068410470)
It's like shelf fungi
i love being compared to shelf fungi, thank you
Well the tool is shelf fungi while i am a decomposing tree
I will join you in being a decomposing tree
machines are pretty complicated, but I think they're kind of a necessary component of this kind of thing
otherwise you're limited to just crafting/cooking
or default recipes like wine
if you are a helper yourself, are you not both tree and fungi?
making-mods-koan
for machines honestly having ability to specify input rules and output items is sufficient for 99.95% of use cases
also speaking of machines someone just reported the wackiest issue i had ever heard of with my silkworm racks and i dont even know how i would even reproduce this
(i use rather criminal, but still pure CP, methods of work animation/sheet index manipulation controlled by the presence of a context tag on the output item, and my only lead so far is that AT/Automate/etc. is improperly resetting the sprite index somehow)
oh well, for now I'll file that under "works on my machine"
Is there a swimming bug with item extensions mod?
no idea, but you may want to provide context
Peeked into the fields of mistria modding channel and it made me so grateful we have all the tools we do. ❤️
So close to finishing my cream cheese modddd (I say, as I am aware I think I said this at least a week ago)
Thank you Aba, I'll give this a try later!
I suppose their tools will improve once the game leaves early access!
That would be awesome! Unfortunately I think part of the complication comes from the game being made in gamemaker which is from my understanding pretty hard to mod for. Crossing my fingers and lurking to learn until then :p
Is there a JSON validator for CFL files? Specifically the CFL_Map.json or Content.json files?
The pinned one is seemingly only for CP, Manifest, and Translation JSONs it seems.
the json validator will check any json file you give it for validity
what it doesnt do is check that you're using the right fields
Hi! I'm completely new to modding stardew valley and currently reading all the docs on SMAPI. Since I'm not so familiar with how stardew valley works just yet, I wanted to ask if it even was possible achieving what I want, which is making a custom clothing/equip slot for a custom item type?
Does SMAPI allow those kind of modifications?
SpaceCore allows adding custom equipment slots
you do need to know some C# but SC does most of the hard work for you
That's great, thanks!
Hmm... Well I keep getting one SMAPI error in particular when trying to get my custom farm map working fully (read a LOT more of the wiki).
[Custom Farm Loader] At DailyUpdates[4] -> 'Type'
[Custom Farm Loader] Failed to parse cfl_map.json at 'DailyUpdates' in path:
[Custom Farm Loader] GrayFarm/cfl_map.json
[Custom Farm Loader] Requested value 'SpawnMountainFarmOreRect' was not found.
What I'm not understanding is that I very much have that value listed in the file it's pointing to, yet for some reason it's not registering it? What am I missing/doing wrong?
I can post the json here if it can help me figure out what I'm missing too...
feel free to post your code for more eyeballs on it, but Im not familiar with CFL
Here's the code file. As far as I can tell from the wikis, this should be working...
(can you use smapi.io/json? thanks!)
hmm I'm looking at the CFL wiki and SpawMountainFarmOreRect doesnt look like a valid type?
Yet the error code is saying that it's not found... And deleting that doesn't change the error code either for some reason...
(there is SpawnQuarryRocks)
uh make sure you actually saved and reload the file?
Yup. Saving the edits, then using the cfl reload command in SMAPI and it's been helping me work out the bugs in my code.
But this particular bug is eluding me...
Does the CFL Reload command not actually reload the content? Do I need to close the game and open it again?
... I'm a fool. lol
Seems the SMAPI command to refresh the content doesn't update to the new code.
Thanks for helping!
Ohp, nevermind. Still not working. Now my custom map isn't loading in correctly anymore... Goodness
I think there are specific issues related to it being early access when it comes to modding the game. It will probably get easier in the following years
OOoh, that would definitely be awesome 😄
Custom map should be spitting out an error code in the console if it's broken, in most cases
Well I'm not getting any error codes, but the map that I'm trying to overlay simply isn't loading in now...
I'm guessing it's something to do with the location of the map file, so I'm testing that out now..
Pssst you don't need cfl for custom farms, you can just use content patcher
How much of my code would I need to change to get that working though? All of it?
Not much. There's a template on the wiki, and also on nexus mods I think
[[Modding:Farm_data]]
Well, if I can't get this working in CFL with this next attempt, I guess I'll switch...
Wellp, still nothing is spawning, so I guess I'm swapping to CP...
For some reason when trying to add a door to my map, I cant get the cursor to interact with it even though everything on tiled looks to be correct
Like a warp door or an interior door?
interior
i have the action door property on the tile, which worked on my other map but for some reason on this one I can't get it to be interactable
do you also have the Map Property for Doors?
yes
You need both Tile Property and the Map Property for doors to work correctly
Is your Action Door tile property on the Buildings layer?
And do you have the bottom tile of the door itself on the Buildings layer?
When editing the target's fields, is it possible to define multiple maps, and change all of their "Fish" field? Or do I have to copy and paste this 5 times if i wanted it to be applied to 5 different maps
This seems like a great use for lcal tokens
What those?
im just adding support for other mods to add my fish into them, and this mod has a lot of maps I wanted to add, but i didnt want to keep copying and pasting same code for each map
oh lucy you're here, i was just about to reply to a comment by you on nexus
you shouldn't be telling mod authors to make their format 2.8.0 instead of 2.9.0; you should update your content patcher instead
(claude, you can use commands in governors mansion for personal use to keep things clean)
-# oh shit sorry
all good, i just wanted to make sure you were aware!
hey, i think my comment got misunderstood, i wasn’t saying authors shouldn’t use. just that if they don’t need anything from it yet, 2.8.0+ is easier for more users. updating isn’t hard, it’s just an extra step, only a suggestion for accessibility

gotcha, i thought you were implying the mod being broken was the mod author's fault. glad to see you know what the issue is!
You should always use the latest format version (currently 2.9.0) to enable the latest features, avoid obsolete behavior, and reduce startup time.
but yeah as selph says updating mods (especially pathos' mods, which are extremely stable) is always a good idea
100%
what's a lcal token? im very interested in it, it may help reduce repetitibe copy and pasted fish code for multiple maps

ooooo, i get what this does..thanks!
Content Patcher 2.9.0 is not available for Android. If you care about Android support and don't use the new features from 2.9.0, you should stick to 2.8.0
(For PC users and PC only mods there is of course no good reason not to update as already mentioned)
I tried this for the local tokens
the local tokens not entirely working just yet (im still learning them)
old version without it worked, new doesnt, im not entirely certain what i did wrong, but i am still learning how these local tokens work
what did 2.9 do to break android compat
Android SMAPI doesn't have the new Mask mode for image editing
right yeah it depends on new smapi and android is a fork
hello, do you guys know how to fix this kinda errors?
https://smapi.io/log/ef4fbea8a8f642bfbdd24a849034938c
it's a permission issue on mac I think
Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on macOS Unix 15.5.0, with 0 C# mods and 0 content packs.
looks like that stardrop issue
wouldn't stardrop tell smapi to run on a different mod folder full of symlinks, that looks like a direct mods foler access
So, the stardew syntax extension is what will help me fix this nightmare, right? 😵💫
You mean multi line it? Yep
Vanilla events are so intimidating in their final form!
When you say it doesn't work, what do you mean is or is not happening?
i would test it + i18n it first!
i'm not sure if nomori's converter takes multiline events
Oh, that reminds me... should I be i18n-ing as I try to figure out the event basics??
Nomori's i18nifier works really well for events in my experience so if you're happy with how it does the keys or you're comfortable in how to find and replace the keys you can use that at the end
yeah i always i18n with the converter at the very end
Otherwise it probably is worth doing i18n as you go because it's a real pain to do it all manually at the end
hey! what's the console command to check the patches applies to a specifc area of the games code?
It does! And if it doesn't work, the Stardew Syntax extension switches between single and multi line
Thanks, that's good to know!
oh nice!
Like patch summary full asset "maps/beach"?
patch summary asset assetname
ALSO it's really cool seeing you green Abagaianye 
that's the one! thank you :)
what would the asset asset name thing be? just the file path from unpacked content?
I have LINQpad on my desktop, which I remember being related to the i18nifier, so I'll need to figure that out again!
Thanks!
You shouldn't need LINQpad
Oh?
These community tools help update mods to newer formats or frameworks:
- Convert to Content Patcher from Custom Furniture, Better Farm Animal Variety (BFAV), Custom Music, JSON Assets, More than Necessary (MTN), SAAT, Shop Tile Framework (STF), TMXLoader, or XNB.
- Convert to other frameworks:
- Other tools:
The first link in other tools
Ok!
Would it be a bad idea to wait to do the conversion until the very end with multiple events in the json? Because I'm likely going to tweak/change them in the future even after they are "good enough". I know it would mean testing all the events again at the end.
I recommend that you try using the converter sooner rather than later so you get a feel for how it works. It doesn't have to be with your event though - why not try it with a vanilla event so you can see what happens? You can use the Stardew Syntax extension to multi-line the vanilla event first and then run it through the converter.
Ok, thanks. I'll try testing it soon then. Just looking at the vanilla event's converted json would be good enough right?
Yeah
Off to event making I go (after a little more setup) then!
The fish just aren't there, but without local tokens and adding rhe map name it works
No errors or anyrging either
I should test a cursed method of doing multi-line events
Try doing a patch export of data/locations to see if it's present but wrong in some way. And a patch summary to see if CP is saying the patch applied.
Is there a best way to run time off the game clock? I mean advance the clock about 30-50 minutes or so. I'm guessing that just doing Game1.timeOfDay += 30 would cause mayhem somewhere...
You need to change the time in 10-minute intervals to avoid breaking things like NPC schedules. See SetTimeCommand in the SMAPI code for an example implementation.
ty!
yay my cursed multiline event worked
(I don't actually recommend doing events like this, I was just curious)
Huh that's neat
(Fun fact: both the game and SMAPI's JSON parser support multi-line event scripts, if you don't mind your code editor yelling at you.)
(I'm aware but I do care about the code editor yelling at me)
Thanks I hate it
At least I went with the 213 / instead of refactoring it to be 213 instances of a TextOperation append
Thanks I really hate it
Instead can we adopt python strings in json
So does it work if u omit the 213 /
you get 212 errors saying that each field failed because the index needs to be between 0 and 0
Wow!!
That's so much nicer to read, too bad the editor complains about it
the only thing the editor dislikes about that sample is that its still format 2.7 as I haven't updated
Oh, wait, so it's not screaming at you for multilining specifically?
this is a different kind of multilining
nothing about it is invalid json, thats the whole point
It would be great to have an extension on the moon that reorganized an entire Json file.
I want it to be properly tabulated
Ohh, so one might not even need the schema for multilining if you just structure it like that?
The schema doesn't prevent VSC from complaining about multilining, does it?
the schema enables comments (maybe trailing commas) and the extra validation, but not multiline
I don't think it even allows trailing commas 
actually this sample has a trailing comma and its fine
Wait, I was confusing the stardew syntax extension with the schema lol
jsonc doesn't let my debugger mod work because jsonc is hardcoded to not allow breakpoints regardless of other extensions or settings say
jsonl doesn't show any syntax errors at all
Ngl sinz
and json5 isn't available out of the box and the various extensions I found all kinda sucked last I checked years ago
Breakpoint in json scary haha
I only even use breakpoints as a signal to encode what patches should be tracked as mods have too many patches
i do not care for the sea of / or giving every line a direct index
outside of the performance impact of forcing cp do the work of having to do all the string joining to make this work, its also kind of a maintenance annoyance to keep the / length in sync
I used a lot of multi-caret editing to populate all the indexes, doing the units first in blocks of 10 then 20 and maybe 30?, and then did the tens/hundreds in blocks of 10
ok, i guess I'll use the multilining extension then...
I can't tell what's better or why at this stage 😅
there is a vanilla debug command that natively reads from a multiline text file you can use for event authoring and at the end put it back into cp
personally i just write multiline events in a text editor such as sublime with syntax highlighting disabled for the file
no corrections, but no errors
don't say it too loudly. aba will get on your case for doing events wrong /j
sad kitten noises
technically using the vanilla tools to do event authoring is the authors intent, doing in cp at all goes against ConcernedApes methodology
So this is sort of related to the extension, but do you remove the schema specifically from the files when you upload your mod?
but wouldn't they be right? 😌
Anyways bluebs u should do what the rest of us do
make mods? oh no
the schema doesn't need to be removed when uploading
Write a bunch of python to turn an excel spreadsheet into event script
U can leave it
no
Oh, ok. Would it break things if it was? I haven't gotten around to implementing it yet
SMAPi/CP doesn't care if its there or not, only the editor takes notice to it
Kay, thanks!
oh wonderful, now there's an easy way to tell between irocendar and ichortower. now if only i knew which was which
(also there is no difference between you locally running your mod while developing it, and an end user using it after downloading it from nexus)
Iro is the one who is willing to be a moderator
ichortower is the one to send all bug reports to
Ichor is the one with the good hobbies
iro made the cool tiled extension, ichortower made the cool events framework
thanks for answering my noob questions all time guys! :>
Mod making has been really fun for me 😄
I should mention that I looked into allowing (Neo)vim's syntax highlighting to accept multiline JSON strings some time ago, and I wanna share my handiwork: ||there is none! I failed! naught remained after hours of work, not even my sanity...||
New quote added by irocendar as #7210 (https://discordapp.com/channels/137344473976799233/156109690059751424/1468097759918948393)
oh, blueberry, i did the thing you wanted. now you just need to wait for the next stardewxnbhack update in however many months/years 😌
I was originally looking into what would be required to get monaco editor to accept the craziness that is all the spec violations that newtonsoft doesn't care about to overhaul the json validator site and came to the conclusion its not happening
the closest I got in theory was aot compiling newtonsoft as wasm and just running it directly but effort
how did you know i wanted you to turn an excellent shade of green
How is "ichor" pronounced anyways?
bike-or-flower
isnt this what everyone wanted of me?
(rhymes with ichortower)
Ok, so it's what I thought!
Does newtonsoft have a tokeniser
afaik that's ichor's about me on discord 
You're perfect for the position
yes, Debugger already makes use of it for the crimes it does
and it's eye-roe-send-are for you right??
petrichor probably
casey has the code crime title out of tenure, I'm just as willing to commit crimes
eee-rock-un-dah of course
All yall criminals
(the word ichor is usually pronounced eye-core. irocendar has no canonical pronunciation because it's a keymash)
Now try mine :D
(but I usually go with eye-roh-send-ahr)
Ok!
Anyways
let's see..
(it is cute listening to people pronounce my name, I think its mainly in 3 camps)


