#making-mods-general
1 messages · Page 295 of 1
You need separate chair tiles. Chair tiles have no shadow
does that matter if we dont see the bottom of the couch though
It will layer the chair tile on top of your person and if there's a shadow there, it'll double the shadow and look weird. Maybe not such a problem with the wall there but if you use it elsewhere, just an fyi
Hey there we go
now, to finally figure out why the randomized custom companion dialogue isn't working
i did it just like smolhooman but it only shows line 1 🥹
"LogName": "Randomized Sammy Dialogue 0-5H",
"Action": "EditData",
"Target": "{{PeacefulEnd.CustomCompanions/Companions:atelier99.LaniCC.LSammy}}",
"Entries": {
"Companion": {
"DialogueSequence": [
{
"Text": "{{i18n:LSammy.Inspection.{{Random: 2, 3, 4, 5, 6, 7, 8}} }}",
"DisplayOnce": true,
},
],
}
},
"When": { "Hearts:LaniSBV": "{{Range: 2, 5}}" },
},```
this SHOULD work if i patch into the companions.json in the CC pack, but... bweh?
do u expect to get the lines randomly?
i didnt even know CC is loaded through content pipeline
yeah i do
you can randomize the lines with the CP integration bit
smolhooman does this with the CP part of Domestic Animals, sunberry does this with the Raccoon, but i cannot seem to m-
wait.
ok no yeah
i cant seem to make sammy do it :(
how smolhooman does it
"LogName": "Random inspection dialogue for David the Guineapig (1)",
"Action": "EditData",
"Target": "{{PeacefulEnd.CustomCompanions/Companions:SmolHooman.DomesticAnimalsCC.DavidTheGuineapig_DA}}",
"Entries": {
"Companion": {
"DialogueSequence": [
{
"Text": "{{i18n:DavidTheGuineapig_DA.Inspection.{{Random: 2, 3, 4, 5, 6, 7, 8}}}}",
"DisplayOnce": true,
},
],
}
},
"When": {
"Hearts:Abigail": "{{Range: 0, 4}}",
},
},```
god i hate formatting
this is in the CP portion
in the regular companions.json in the CC pack, its just
{
"Text": "DavidTheGuineapig_DA.Inspection.1",
"DisplayOnce": true,
},
], ```
so like. Question Mark?
i did the same thing with LSammy.Inspection.1 in my CC pack, and then the {{i18n:LSammy.Inspection.{{random yadda yadda}}
Do you have enough entries to cover your .<randomnumber> variations?
yeah!
i can toss my files in here if that makes it easier. im genuinely not sure what's wrong, if anything
ive checked multiple days, and she only says line 1 😔
Mind sharing your i18n snippet for LSammy.Inspection.1 through LSammy.Inspection.8 ?
sure!
"LSammy.Inspection.2":"Sammy doesn't seem to have any interest in you.",
"LSammy.Inspection.3":"Sammy's busy licking her paws.",
"LSammy.Inspection.4":"Sammy slinks around your legs.",
"LSammy.Inspection.5":"Sammy sniffs your hand, but pulls away shortly after.",
"LSammy.Inspection.6":"Sammy hisses when you try and pet her too firmly.",
"LSammy.Inspection.7":"Sammy's tail puffs up as you get closer.",
"LSammy.Inspection.8":"Sammy approaches you cautiously, curious.",```
Also is LaniSBV the complete internal name of the NPC?
yes :D
Okay, just wanted to make sure since the {{ModId}}_ prefix is regularly recommended in NPC data, and can cause issues if you used it to define your NPC and don't use it elsewhere. 🙂
oh yeah i dont do that in her npcdata, it made the name too long so i just slapped SBV at the end
like everywhere else i do though 🤣
the extra space after 8}} and before the closing i18n }} shouldn't matter, right?
it doesn't
Yeah, I have no clue either
can you try a patch export
patch parse "{{PeacefulEnd.CustomCompanions/Companions:atelier99.LaniCC.LSammy}}" to find out the target's actual name
patch export that
my only other thought is because your target is a dynamic token, maybe it isn't updated yet
Yeah, Custom Companion creates the dynamic token
It's explained here: https://github.com/Floogen/CustomCompanions/wiki/Content-Patcher-Integration
publishing an update yesterday means anxiously awaiting the inevitable glitches today : )
yes i will try
okay, and then.... how do i patch export that lmao
patch export the token?
with quotes?
u see where it says Parsed value
uh huh
patch export that
with quotes?
CC never loaded this then 
BRUH
your ID are all correct?
and u have tried talking to sammy before doing patch export
yes
can u do a patch summary and then send log
yea mystery
[X] | [X] | [X] | Default | Lani NPC - CC Data > data/DependencyData/CustomCompanions.json > Randomized Sammy Dialogue 0-5H (EditData {{PeacefulEnd.CustomCompanions/Companions:atelier99.LaniCC.LSammy}} => CustomCompanions/Companions/atelier99.LaniCC.LSammy)
SIGH...
can you try patch export CustomCompanions/Companions/skellady.SBVCC.SBVRaccoon just as test
if that doesnt work, patch export CustomCompanions/Companions/skellady.SBVCC.SBVRaccoon.json
wait no the syntax is smth else brb
yeah i was like both of those didnt work lol
ok CC is doing some strange thing here and patch export no work as result 
yeah when i patch export that, it says it cant find Content\CustomCompanions/Companions/atelier99.LaniCC.LSammy.xnb
so i..... i dont know what it wants LMAO
patch export "CustomCompanions/Companions/atelier99.LaniCC.LSammy" "CustomCompanions.Framework.Models.TokenModel"
something something use meep fake farm animals instead of cc (pls disregard this agenda)
wat
well on one hand yay it worked on other hand ???
so it DOES change, but it... doesnt?
it does not
if u take away the When condition and completely restart game does it change
removing When, reopening game
oh my god it does the same garbage. shows the default line in game, but the actual dialogue text changes under the hood
from an asset perspective you are doing things correctly then
wat da game doin....
its just that i do not know what CC is doing
It's saying line 1, right?
how its using the asset 
yeah, lily
Where's your code that adds line 1?
in the Companions.json in the CC pack
which gets patched over in the CP pack... supposedly.
Is it possible that it's still taking priority over the random dialogue?
As far as which it checks conditions for first
(line 1 or your randomized)
well patch exporting says its displaying the randomized line, but the game itself displays (visually) the default line. so im... assuming its... priority is higher in the cp pack
but i genuinely dont know at this point
hey so the vanilla Maps/Festivals sprite sheets apparently don't have a german version? is this odd y/n
maybe germans just say festival idk
("Stardew Valley Fair", "SHOP", "STRENGTH" all in english in-game, since no lang version to load instead)
maybe nothing could fit and they gave up? /lh
My first thought is that maybe the translations were too long, yeah
german is missing a lot
at this point do i ask peaceful about this issue or do i just . give up
did you share your companions.json already?
(I'm getting sleepy, so apologies if I missed it)
!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.
Can't put it in there?
working on the asset pipeline diagram made me find out the fact there is an _international option available in addition to localized variants which seems to only be used for crane game to replace text with iconography
> ls *zh-CN* -1
bathhouse_tiles.zh-CN.png
coopTiles.zh-CN.png
desert_festival_tilesheet_text.zh-CN.png
DesertTiles.zh-CN.png
fall_beach.zh-CN.png
fall_outdoorsTileSheet.zh-CN.png
fall_town.zh-CN.png
Festivals.zh-CN.png
samshowtiles.zh-CN.png
spring_beach.zh-CN.png
spring_outdoorsTileSheet.zh-CN.png
spring_town.zh-CN.png
summer_beach.zh-CN.png
summer_outdoorsTileSheet.zh-CN.png
summer_town.zh-CN.png
townInterior.zh-CN.png
winter_beach.zh-CN.png
winter_outdoorsTileSheet.zh-CN.png
winter_town.zh-CN.png
here's the companion.json
> ls *de-DE* -1
coopTiles.de-DE.png
townInterior.de-DE.png
i guess they just didnt lol
also is it Condition or Conditions when doing a GSQ
condition generally, but I think triggeractions has both?

depends on the model, but the game is consistently Condition afaik
(secret note framework is Conditions, because i beefed it and misremembered. too late now!)
no trigger actions has Action and Actions (for a list)
ah yeah
not too late is it 
u can just have backing field condition
thinkblob. maybe i'll fix it one of these days then
https://smapi.io/json/content-patcher/a27d3f491ce94e2c9385aa9df70176ea here's my CustomCompanions.json i put in my CP folder. only error is that Condition line but it works totally fine in game, and thats just for spawning
condition isn't a Content Patcher thing its a GSQ thing
i dont really know if its worth doing if u already got consumers anyways
wh,, what does that mean
u can just open a Condition and use them as AND
sorry lani im talking about ichor secret note framework
oh, i have consumers. SNF is my biggest mod and it's not close
do i move the condition into the maptiles thing or something
the people hungers for l o r e
anyways lani "Condition": "ANY \"SEASON winter, !WEATHER Custom_SBV_SunberryVillage Sun Wind, IS_FESTIVAL_DAY Any\"", doesnt do anything
note those patches would all be overriding each other
it's not a field content patcher supports
they are all fully setting the Companion entry to their value
oh. word
how do i do that as a content patcher query then
u need to do these by the cp tokens When way
"Query: ('{{season}}' = 'winter') OR ({{Weather}} IN ('Rain', 'Storm', 'GreenRain', 'Snow')) OR ({{HasValue: {{DayEvent}} }})": true?
just have more things in the When block
can i do !({{Weather}} IN ('Sun', 'Wind')) instead
or do i move the ! somewhere else 
which ones? not sure what u mean
all 3 patches targetting the companion target set the Companion entry
from the CCdocumentation if it helps with anything: Note: Custom Companion patches expect Content Patcher patches to utilize the Entries field. You are not required to pass over the whole Custom Companion model, you only need to specify which properties you would like changed.
also the last 2 have the same logname
but its only if the when condition files right
"When": {
"Weather |contains=Sun": false,
"Weather |contains=Wind": false
}
the last 2 have the same when, so the 6-10H only doing dialogue sequence would never happen
i just dont know how to do "THIS OR THIS OR THIS" in when conditions so i am. unshore
"When": {
"Weather |contains=Sun, Wind": false,
}
ah contains takes a set cool
pretty much everything in cp tokens are sets
"Time": "{{Range: 0600, 1900}}",
"query: {{Hearts:LaniSBV}} >= 2": true,
"Weather |contains=Sun, Wind": false,
},```
so this is the when so far
i still need to account for winter or a festival day, but aren't multiple conditions in a When treated like an AND?
yes
if i want it to be OR do i do that longass query thing or do i do multiple Whens
if you want unrelated things in an OR, you are doing a query
okay thats what i did earlier 😭
is this correct
so i can axe one of them, right?
sorry i am The Question Asker tonight
sure, though the last one is the only one with any of the animations
if the regular cc file has the animations and i just want to change the dialogue, do i need to do the whole animations thing too??
i am going to axe it bc i dont think i do need to do that
anywho. ok. back to the query
ok json validator said the query was fine, but idk if thats a good way to check '-'
lets tryyy loading up the game again
no dice
tried it on a new save too, sammy just doesnt want to say anything else lol
kept stabbing at it, im giving up for now 😔 ill maybe ping peaceful about it tmrw
just double checking, i can put a crop in a cask and out comes an artisan good? or are there limits to it only being in the liquor/cheese category
casks are hardcoded in ways that make regular input => output rules illadvised
Is there a way of adding custom items to the pool of items requested by pelican town villagers on the bulletin board?
namely that hitting a cask with a tool will immediately make it spit out the output
I recommend another machine if able
i don't think you have to do anything special for this. the help wanted board just picks items from the game data (subject to certain conditions, sometimes) so as long as your items are there it should work
Ah ok that’s good to know 
crap...
alrighty keg it is
hope people dont accidentally think the stardrop itself is the tea,,
ill just make some artwork to showcase it better heh
I did a dum thing where i skip prefixed another mod's skip prefix in order to call a reverse patch of original vanilla function so that i can undo their skip prefix
Is there less stupid approaches here
is there a way to detect if the racoon shop is unlocked?(i found the mail flag for unlocking the greenhouse but i would like to be a bit more specific)
I think the racoons have mail too?
Typing this all out made me realize that i could just transpiler ret true on the other mod's skipping prefix and it would be better bc then any other prefix/postfix can run
WORLD_STATE_FIELD TimesFedRaccoons 2
this is the thing that unlocks mrs racoon shop's first item so it makes most sense to have it
finally, i found the funny tree. turns out it's gingko, not buxus. go figure 🍃
I like ginkgo trees!!
(there's meant to be a huge ancient one at a temple not far from here. after lunch plans...)
Ive just noticed Shane's Dialogue often has two different elements divided by ||, but no one else does. Is that a 50/50 random?```
"Sun4": "Hmm... it's %time. Should I throw a frozen pizza in the microwave, or should I wait?$u||If the Tunnelers win, I'll knock back a cold one to celebrate.#$e#If they lose? I'll have a cold one to drown my sorrows.",
3 years...
(though the one at akasaka hikawa is good too. and it has its own talismans)
i really respect that shane is ready to throw a pizza in the microwave at %time. no matter what time that is. he's prepared
6 am, 12 am 7 pm, 1 am.... Shanes always ready for pizza!
should i remove Custom Critters from wiki list of frameworks since it is broken
i don't think i can overstate the size of this ginkgo
what is this mod again?
Guys I'm thinking on working on compatibility with mobile devices on my mod, so is there anything I should keep in mind when working with mobile devices?
Quick question, can we use line breaks in schedule entries to make them easier to read?
yes but i believe you need to format your json in a specific way to allow it
Really? I didn't need to do any funky formatting to use them in events 
oh then maybe not! N++ always yells at me when i try to multi-line lol so if it works in events for you then go for it
Oh yeah it looks terrible because Notepad++ thinks its invalid but it reads fine
excellent, then go for it
Thanks for the info 
SMAPI Android is signficantly different from SMAPI for desktop, related to the game code being significantly different between the two platforms. One of the biggest differences is anything to do with menus, and the movement controls have tap to move instead of the usual wasd (or rebound wasd).
Mobile stardew is only moddable on Android, not on iOS
So you'll need an android device for testing, and you might need one for compilation if you need to compile against the mobile game
(I don't own an android, so none of my mods work on mobile in the slightest)
Does anyone know if this crazy idea is possible- making the ginger island boat journey minigame play during an event scene - but with a patch to make it a custom scene- but just for that event? I have hope because SVE somehow does it to go to Fable Reef, but I can't figure out how
Haha, so that's why I been receiving bug reports about the android version.
Thank you too, now that I know that I think I should finish the rest of features pending first
With or without C#? I wouldn’t be surprised if SVE uses C# to do it
Ahh .. maybe that's why I can't figure it out. I've been digging through json files trying to find how it's triggered
i'm guessing i shouldn't have more than 10 portraits on a sheet, huh
Just depends on if you could keep track of them all. Swords and Sorcery has almost a hundred per sheet.
Yeah, and so on.
...just realized that this is just that much more work for myself to make the mod compatible with seasonal cute characters
Mmm.. seasonal outfits... 
i really want to be compatible with that mod since i use it but also. sprite editing bad. why did i make like six extra sprites.
Because uhh.. because
Your vision must be realized !
i could've probably just written a fanfic and gotten this out of my system
But mod cool
Also I bet on my life Nino Kito will play this if he hasn't done a Pierre marriage mod yet
Yay video? I think?
i've only seen one pierre marriage mod and it's this yandere meta thing?
like monika from DDLC??
(I am still mortified that he played mine when it wasn't done, I'm going to explode)
Then he's absolutely gonna play it there's there's way he doesn't
If he doesn't I'll.. uh.. uhhhh .. i don't know really, be super shocked?
i see.
You know i had someone ask me to make fizz marriable-
so uh mine's a bit of a different take on the character
That's not a mod where you marry them though 
if you marry him he goes to prison because you turn him in for tax evasion
i should do that instead of just shutting the route down if you choose to be rude
No no, alternate marriage route where you turn him in for tax evasion..
Are you gonna relate your mod to the wizard situation

my take is that ||he knows but he still loves his daughter so uh oh well i guess||
If you end up having any conversation topics let me know I'd love to include compatibility with Qi
I feel like he would say something about it simply because it relates to the wizard
bless
||Oh I feel like he absolutely would still love her regardless, he DID raise her, but Caroline...||
Pierre isn't a bad father, he's just a little old school about how he goes about it
||wrt caroline he just tries not to think about it, i think. it's been a loveless marriage for a minute||
yeah idk why people act like he's a huge jerk. i can't stand abigail's immaturity; i think it reminds me too much of myself as a teenager
that reminds me, i gotta write some dialogue for her............
if i ever get this heart event programmed
I think he's a jerk relating to how much he works and the credit he steals for your crops, but he's not like.. that bad in comparison to Lewis... eugh Lewis
I believe in you, I'm cheering you on you got this
I should begin to make my apple orchard mod which still has no name but I really REALLY don't wanna sprite trees..
i have decided to address the issues everyone has with pierre with a simple "can't blame a guy for trying, huh?" attitude, which will do nothing to appease his haters but it will be true to his character
doing tree sprites sounds like a nightmare
and i have to make at least 10 of them
Unless I want to make them all look exactly like the regular apple tree.. which feels not very cash money
yeah that's just like. phoning it in.
took a peak at that AT pack, along with AT itself, and at a glance don't see what would cause a performance degradation, unless there's other mods also messing with it
He did play through Mr Ginger but none of my other mods. Pity he never tried the Dwarf one.
I love all of your mods 


I appreciate you.
I appreciate the hard work you've put in to the things you've made! You're definitely one of my inspirations for making mods :D
thanks.. what other mods could mess with it??
can vouch you absolutely do not want to sprite trees
but ginkgo though..
is there an easy way to see the shop ID of a shop i have open?(i tried with pierre but debug mode just showed that i had a shop open but not its ID)
Is a sprite that is 256x360 in size too big?
What is it for?
How possible would it be for the friendship bonus to scale with the price of the requested item for help wanted requests?
And perhaps a bonus multipler if they like or love the item
very possible! one small harmony patch. maybe even a prefix. just a little one
64x64 is very big if you're drawing it by hand. 1 tile is 16x16, so your animal would be 4 tiles large. it's possible, but animals larger than 2 tiles have pathing and collision difficulties, 4 wouldn't fit anywhere easily hahah
!commissions
If you're looking for people who do mod commissions (either art or code), here's a wiki page with a non-comprehensive list of people who do them: https://stardewmodding.wiki.gg/wiki/Stardew_Mod_Commissions
aside from gus not being in the right spot, ever, and my custom sprites not lining up with the vanilla ones so the character ends up jumping around, and also it animates too slowly... the event is perfect!
i might be a bit out of my depth with animations.
i hate to bug. but content patcher things throwing me for a loop.
trying to make mead benefit from the price of the honey used to make it. which ultimately seems like im either missing something really obvious having tried both DROP_IN_ID and DROP_IN_PRESERVE to try and fetch the name component i feel like i might just be missing something in how honey stores that data, but also the results are still only seeing the base honey price for whatever reason. quality does get copied properly. though i guess this might be why the only mod that does this relies on Producer Mod Framework. but producer mod framework can't set the quality a level lower than the input quality, and i don't think i can content patcher a PFM recipe to use vanilla Quality Modifiers.
{// Mead
"Action": "EditData",
"Target": "Data/Machines",
"TargetField": [ "(BC)12", "OutputRules", "Default_Honey", "OutputItem", "#0" ],
"Entries": {
"CopyPrice": true,
"ItemId": "FLAVORED_ITEM Mead DROP_IN_ID",
"PriceModifiers":[
{
"Modification": "Multiply",
"Amount": 2
}
],
"CopyQuality": true,
},
"When": { "Keg": "true", },
}
Thank you
drawing a 64x64 pixel animal in 4 unique directions with 4 frames each plus eating sprites sounds like a lot of work too hahah
again 64 is 4x 16 in both directions so it's really that much more work than small animals even before you consider the change in detail
is there a way for Content Patcher to detect if the beginning of a string matches another string?
argh why are these different D:
probably touchaction is if you interact and action warp is if you go to the area?
first one is walk over a tile, second one is for click on a tile
also could i use this to trigger a click tile action when walking over a tile?
probably depends on the context, but Query has a LIKE operator that could work https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md#query-expressions
oh my, i figured out how to run a tile action on touch action("PlayEvent no false false <tile action you wanna do>", i just used 'no' as an invalid event ID, any random thing should work)
"LIKE" will work just fine(and the quote caveat won't be a problem as ill be using it with local tokens which i set myself)
eew
stardew vimley
Ok but no joke keyboard navigation of the game menus would be awesome
Hello, I was wondering if there is a way with Content Patcher to detect if another mod is installed and then include additional files?
or do I just put a config option and make the player manually activate it to handle compatibility with other mods?
yes, it's quite easy. there's a token you can use called {{HasMod}} which you can use in a When condition
{
"Action": "Include",
"FromFile": "my/otherfile.json",
"When": {
"HasMod": "othermod.uniqueId"
}
}```
"Action": "Include",
"FromFile": "compat/Alchemistry/FishPonds.json",
"When": {"HasMod{22743}}" : true
}```
like that or?
copy the other mod's unique id from its manifest.json and use it like i showed above
okay, thanks
alternately, you may see this construction:
"HasMod |contains=othermod.UniqueId": true
it has the same effect, but it's not allowed to have the same key twice in an object, so if you need to check for the presence of multiple mods you'll have to specify them each in that way instead of using the plain "HasMod" twice
{
"Action": "Include",
"FromFile": "compat/Alchemistry/FishPonds.json",
"When": {
"HasMod": "Morghoula.AlchemistryCP"
}
}
so this should work?
that looks right. try it out!
Yeah should be fine
thanks 👍
it's best to check how the other mod does its work, since load order doesn't matter if the other mod is using priority
I'm just wondering cause my mod rewrites the entire FishPondData file, would it cause issues if loaded after other mods that also edit the data. The way I was handling it before was just to load and replace the entire file which caused other mods not to have their fishponddata register. (compatability nightmare) now i'm fixing it to use EditData instead.
Well yes u absolutely should use EditData 
as well as including direct compatability with a couple mods
look, i first made the mod years ago before editdata existed XD
But i guess it depends on the goal here
EditData is in CP 1.x
Still if the goal really is something like
I wish to edit every fish pond data ever
yes, every vanilla entry has been tweaked, and I would like to also include additional mods as requested by users
so having priority is kinda needed
Then you could consider doing a Load yes, then EditData to do compat
But if i have another mod that's like, i wish to make 1 small change to fish pond data
And get unexpected structure
I will fail when installed with your mod
yeah i've run into that issue, and has a few comments about such scenarios
So even if you do load u would want to keep structure similar if possible
the file structure is basically the same as vanilla game
just with a bunch of edited values
If that was 100% true then this wouldn't happen at all
so basically what I have run into with my own playing is say I have SVE, then the SVE fish will just default to the default class outputs, I.e roe, and not their custom output from the SVE fishponddata
but no crashing or mods refusing to load
That sounds like a later EditData that you are doing then, not a Load 
🤷 it's been "Action": "Load", since I made the mod
Guess it's possible that sve also did a Load, mystery
I suppose you just have to actually decide on scope tho
Do u wish to actually change modded fish ponds
If no then edit data targeting vanilla pond data makes sense to me
until 1.6/CP 2.0, you couldn't specify any priority on a Load and only exclusive was available, so doing two Loads would brick both patches
it worked fine pre 1.6 too 🤷
And I had to basically rewrite the entire fishponddata.json when updating to 1.6
cause of all the background changes to file strucuture
Yeah I'm just puzzled by why a Load would erase anything added by EditData, i thought Load always went first
but if i'm already having to build in mod compatability anyway, might as well change output values for the mods to to align more with my mod
lets go with the example of what I am trying to fix right now, cause a couple people commented on my mod saying that the fish ouputs for the Alchemistry mod wouldn't drop in fish ponds and would just give roe
my mod is loading the fishponddata.json and overwriting all vanilla values
and then alchemistry comes and does "editData" and "should" include their data aswell
but doesn't
(of course, the other benefit of using EditData is you can use CP's tokens, which aren't parsed when using Load)
but I guess if my mod was say at the end of the mod order it could be overwriting everything before it?
have you loaded in with both mods and tried a patch export on the fish pond data to see what the actual result is in-game?
chu is right here; Load always occurs before EditData
I could, i've just been going off of what others are saying, cause I myself dont use the Alchemistry mod
Oh is it cus fish pond data is a list
oh i believe that; if the edits are doing MoveEntries they might not be finding the keys they need or similar
or they simply end up in the wrong order so you get roe
Yeah maybe, tho in theory it shouldn't matter if u kept all the same keys/Id
I download many mods just for test reasons
Probably best to actually reproduce and see what is up
yeah i'll do that now
if the mod is as old as it sounds (predating EditData?) then i wouldn't be surprised at a format mismatch
i'm not sure if it actually predates EditData, I just remember that when i first made the mod the wiki said to use load, so that's what I did
EditData is at least as old as CP 1.4.0
And the release notes makes it sound like it existed before
A chue now knows the history of CP
I'm not to sure honestly
Well let's not worry about that 
for some reason at the time I had the idea that I needed to use load lol
anyway i'm not trying to place blame. just thinking about causes
yeah, i know don't worry
If you want to keep Load then double check your copy is absolutely the same as vanilla
Which had change as recently as 1.6.9
But for future maint u can just change to EditData with a Early priority
If u want other mods to potentially append their changes to vanilla fish after u replace the entire output
and how would I go about that?
Priority Early is a field in EditData action
hmmm, okay
The idea here is you use Fields to mass edit the fish pond outputs for all vanilla fish
Then i can come and do targeted edit on just tuna if i want
alright, so how would I do this?
with the set of mods installed that you are debugging
yup
[Content Patcher] Can't apply data patch "Alchemistry > Alchemistry - Load Fish (from data/Items/Fishing/FishPonds.json) > EditData Data/FishPondData > entry #2" to Data/FishPondData: this asset is a data model, which doesn't allow adding new entries. The entry 'Morghoula.AlchemistryCP_VampireAnemone' isn't defined in the model, must be one of: Item, Next, Parent, Previous.
[Content Patcher] Can't apply data patch "Alchemistry > Alchemistry - Load Fish (from data/Items/Fishing/FishPonds.json) > EditData Data/FishPondData > entry #3" to Data/FishPondData: this asset is a data model, which doesn't allow adding new entries. The entry 'Morghoula.AlchemistryCP_Newt' isn't defined in the model, must be one of: Item, Next, Parent, Previous.
[Content Patcher] Can't apply data patch "Alchemistry > Alchemistry - Load Fish (from data/Items/Fishing/FishPonds.json) > EditData Data/FishPondData > entry #4" to Data/FishPondData: this asset is a data model, which doesn't allow adding new entries. The entry 'Morghoula.AlchemistryCP_MoonlightJellyfish' isn't defined in the model, must be one of: Item, Next, Parent, Previous.
[Content Patcher] Can't apply data patch "Alchemistry > Alchemistry - Load Fish (from data/Items/Fishing/FishPonds.json) > EditData Data/FishPondData > entry #5" to Data/FishPondData: this asset is a data model, which doesn't allow adding new entries. The entry 'Morghoula.AlchemistryCP_ZombieFish' isn't defined in the model, must be one of: Item, Next, Parent, Previous.```
Oh i know this problem your load didn't get interpreted as a List 
It's a CP thing but since it is thought to be a data model you cannot append anything
In the file you Load do you have {} or [] on the outside?
[]
Weird why it do this then 
idk, cause all I did when i made the mod was rip the fishponddata directly from the vailla files and edit the values
It's not something you can change tho
Just gotta live with it and switch to EditData ig
seems like it lol
this is quite an interesting edge case, and I have no idea why it is doing the things it's doing
Well it is mostly c# implementation details
so if i switch over to EditData can I just use the same file I already have, or do i have to rewrite the whole thing again to work with editData
Related to how loads happen
You will want to remove everything outside of ProducedItems
"Action": "Load",
"Target": "Data/FishPondData",
"FromFile": "assets/FishPondData.json"
},
And rewrite it as a dict
so if i take this and then do
It will be quite a bit of work yea
{
"Action": "Include",
"Target": "Data/FishPondData",
"FromFile": "assets/FishPondData.json"
},
No
then add the edit data to the data file and then change stuff around?
Include is for including more patches
hmm okay
Im on phone so i can't type a proper example
{
"Id": "Lionfish",
"RequiredTags": [
"item_lionfish"
],
"Precedence" : 0,
"SpawnTime": 1,
"BaseMinProduceChance": 1.0,
"BaseMaxProduceChance": 1.0,
"WaterColor": null,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"Precedence": 0,
"Id": "(O)857",
"ItemId": "(O)857",
"MinStack": 1,
"MaxStack": 1
},
there is some additional stuff after this, but this is how it's currently structured
But the gist is
- Action is EditData, Target Data/FishPondData
- Use Fields with the key being whatever is in each entry's Id, and the entry being { "ProducedItems": [ your new produce data ] }
{
"Id": "Lionfish",
"RequiredTags": [
"item_lionfish"
],
"Precedence": 0,
"MaxPopulation": -1,
"SpawnTime": -1,
"BaseMinProduceChance": 0.15,
"BaseMaxProduceChance": 0.95,
"WaterColor": null,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"Precedence": 0,
"Condition": null,
"Id": "(O)857",
"ItemId": "(O)857",
"RandomItemId": null,
"MaxItems": null,
"MinStack": -1,
"MaxStack": -1,
"Quality": -1,
"ObjectInternalName": null,
"ObjectDisplayName": null,
"ObjectColor": null,
"ToolUpgradeLevel": -1,
"IsRecipe": false,
"StackModifiers": null,
"StackModifierMode": "Stack",
"QualityModifiers": null,
"QualityModifierMode": "Stack",
"ModData": null,
"PerItemCondition": null
},
If you want to change population gates then u also put that in the entry
here is vanilla as reference
Do not include anything you aren't changing from vanilla
yeah I figured
And read the cp docs earlier for detail on what Fields do
alright, I'll try and sort this out
Is PlatinumCats on this server? 
@ivory plume it seems like doing Load with non blank data on data sometimes result in them not being recognized as a List or a Dictionary afterwards, preventing EditData, is this intended behavior?
@pastel aurora yea
Not very active but sometimes come post previews
Oh, nice, then I can avoid my behated Nexus DMs 
So, since EditData uses fields and can't take from a file... i'd have to fill the content file with all the data entries, meaning for my use case wouldn't Include be a better thing to use, then do the edit data and entries in another file?
@pastel aurora Hi! If I'm not mistaken the original Truffle Foxes were made by you? If so would it be alright if I released a Void recolor of them? I made one for personal use, but as I didn't see anything like it out on Nexus yet, I thought that I could maybe share them with other void enthusiasts 
... I might expand it to a custom animal with a whole new questline (I'm already getting scope creeped) 👀
You can do include if you want, it's just a means of organizing where your patches live
Either way you will need a patch that's Action EditData
I know, but since there is so much data in the fishponddata file doing edit date directly in content.json would lead to a lot of clutter
making future work harder to do
JObject strikes again...
Thanks for the help
I feel like it's worth clarifying in docs cus
Originally i thought it only bonked new assets
But it appears to bonk vanilla too when it's not events
yeah when I was messing with it to change it I also thought it'd only affect new ones
it doesn't always do it, I was able to load over some vanilla things just fine
Perhaps due to fish pond data being list
my duct tape solution seems to have worked and not require a total rewrite

"Changes": [
{ "Action": "EditData",
"Target": "Data/FishPondData",
"Entries": {
I basically just appended this to the file and then shoved everything into it's own entry
probably not the "right" way to do it, but it works
yup it works without needing to specifically add compatability patches now, so other mods won't just have their fishpond drops overwritten with roe
Is harmony a ironic name for it at this point? 
SVE Fishponddata file structure is quite interesting to look at, held together with more duct tape than my fishponddata lol
Put a priority still
yeah I should do that, thanks
The reason why I mentioned Fields instead of Entries is that
Entries replace the whole thing
With Fields u only replace the Fields given in your edit
If u already have things in entries form u can change to fields easily, the annoying part was the [] to {} which u did already
It is already doing that though, so idk... cause it's only editing the stuff directly specified
I think u are just getting default data no?
two seconds
But like if u specified entire fish data from RequiredTags to WaterColor
Then yeah no difference
{
"Id": "Lionfish",
"RequiredTags": [
"item_lionfish"
],
"Precedence": 0,
"MaxPopulation": -1,
"SpawnTime": 1,
"BaseMinProduceChance": 1.0,
"BaseMaxProduceChance": 1.0,
"WaterColor": null,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"Precedence": 0,
"MinQuantity": null,
"MaxQuantity": null,
"Condition": null,
"Id": "(O)857",
"ItemId": "(O)857",
"RandomItemId": null,
"MaxItems": null,
"MinStack": 1,
"MaxStack": 1,
"Quality": -1,
"ObjectInternalName": null,
"ObjectDisplayName": null,
"ObjectColor": null,
"ToolUpgradeLevel": -1,
"IsRecipe": false,
"StackModifiers": null,
"StackModifierMode": "Stack",
"QualityModifiers": null,
"QualityModifierMode": "Stack",
"ModData": null,
"PerItemCondition": null
},
{
"Lionfish":
{
"Id": "Lionfish",
"RequiredTags": [
"item_lionfish"
],
"Precedence" : 0,
"SpawnTime": 1,
"BaseMinProduceChance": 1.0,
"BaseMaxProduceChance": 1.0,
"WaterColor": null,
"ProducedItems": [
{
"RequiredPopulation": 9,
"Chance": 0.02,
"Precedence": 0,
"Id": "(O)857",
"ItemId": "(O)857",
"MinStack": 1,
"MaxStack": 1
},
output on top, and the data in the mod on bottom
Fields means u only need to specify ProducedItems
That's what i meant
Can delete all the data u aren't changing 
yeah there are a few things that could be deleted there, but that is a lot of work to go through all the fish lol
as most of the stuff is edited on every fish expect for a couple things
Yeah do as much or little as desired since the blocking problem is solved at least
yup, thanks a bunch. definitely good to get this worked out so i dont have as many compatability issues anymore
now I can work on aligning other mods to mine through patches like with SVE and Alchemistry to more closly follow the changes I've made to vanilla outputs
Hey guys, two questions, 1. is it possible currently to make a new food item and 2. Is it possible currently to add this new food item to a vendor?
yes and yes
Great, are there any tutorials on how to do this?
Content patcher was made to make this process much easier
https://github.com/Pathoschild/StardewMods/blob/stable/ContentPatcher/docs/author-guide.md
here is the documentation for Content Patcher that you can take a look at
So if your new food item is cooking you can follow this tutorial
Hello! Rokugin here with another tutorial on how to make some simple stuff with Content Patcher. If you need any help with this or any of the stuff on my Git, feel free to try to reach me on the SDV Discord, there are also a lot of other super helpful and knowledgeable people there that are willing to...
Idk offhand if there's a tutorial for adding stuff to shop but it's simply an EditData
!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!
Do this so u can look at vanilla data
It's not, i wanna try adding a bunch of new items to Joja store, it would be just for flavor, since this items would restore very little hp and give you a debuff.
I am trying to debug my mod that makes it easier to complete the CC whether you do the og or joja route. Mod can be found here https://www.nexusmods.com/stardewvalley/mods/32839. Bug report can be found here https://github.com/BlckHawker/Instant-Community-Center-Cheat/issues/2.
Since it's rather tedious to put items into the respective slots over and over again, I thought I can use the command debug completecc to speed up the process. I'm reading the wiki [insert link] and it claims that the command would set the appropriate flags to true to instantly complete the CC. But when I tried running my mod after running the command, the mod thinks the CC is still incomplete. Can someone tell me what I'm doing wrong?
Here's the appropriate code block https://github.com/BlckHawker/Instant-Community-Center-Cheat/blob/main/ModEntry.cs#L207. What should be happening is a global message with the string Community Center is complete, no items to add appears, but rather it's still telling the steps as if the command was never ran.
Do the items already exist
Or do u have new sprites to make into items
I'd need to make new sprites. Items exist atm only as names you can read on the shelves.
BTW someone made a list of all items on reddit. https://www.reddit.com/r/StardewValley/comments/t58814/all_items_stocked_at_joja_mart_because_i_couldnt/
I would try to add only the food items. I get why they were never added in base game, they are supposed to be unhealthy.
But why wouldn't i be able to pound protein bars.
Yeah so u need to do these things
- Load the sprites to a target
- EditData Data/Objects and add your new items
- EditData Data/Shops and add your items to the shop
I understand if none of this makes sense offhand, do consult the content patcher author guide first
I would just concentrate on making a single item and just spawning it into the game via CJB
Yeah you'd need to make the items from the ground up with all the stats
energy, health, buffs/debuffs,value, etc.
cause all you have right now is the names of the items, but they don't actually exist within the game
It makes about 30% sense, i get what you are saying but i need to understand how to actually do it, i doubt it's as easy as click here to make thing happen. Never is.
One step at a time
find a mod that adds a couple items and do what they do
you can also reference vanilla files to get an idea of how they are implemented into the game by unpacking the game files
I'd assume i can copy something like alcohol that already has a debuff, and just change the name, sprite and a few values.
yup, one of the ways I do things when modding games, rip it from the vanilla files and change values around
obviously it's a little more complicated than that, but taking a look at the vanilla files for food objects, and also the content patcher documentation should give you at least some idea where to start
Cool, thanks. Is there a tool to make sprites? They seem to be pixel art for the most part, but not sure what dimensions.
!software
Here's a list of software for pixel art and JSON text editors we recommend: https://gist.github.com/ishanjalan/c8efb21afa21f74a052293176db107f7
For making SMAPI (C#) mods, see the Requirements section here for which IDE to install https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#Get_started.
you can also reference off of someone else's mod that also adds in items to get an idea of how it should look
there are quite a few pixel art specific programs, but most any art program will work
but I would start by understanding how to implement an item into the game using a vanilla sprite, and then once you have that down you can work on the art
all of the regular items are 16x16 pixels when not using a mod to increase that, you'll be able to find most of the vanilla ones in your unpacked content folder in Maps/springobjects.png
your sprites must be 16x16 pixels as well, even if you do not actually draw anything to fill up the entire 16x16 space. aka, leave some transparent space around your sprite if you need to in order to make it 16x16
also the sprites need to be png to have transparency, so don't forget that
although now that I say that, does SDV even accept anything other than png for sprite textures?
xnb
monogame supports other formats but I don't know which ones specifically
It has a whole bunch of weird pixel formats so probably there's corresponding file formats for at least some of those?
🤷♂️ safest to use png lol
Ah here we go, from the docs:
.bmp, .dds, .dib, .hdr, .jpg, .pfm, .png, .ppm, .tga
i dont think content patcher will accept anything other than png, though.
jpg seems like a bad choice to use
Even if you pack it into an xnb?
out of the formats you listed
although for 16x16 compression wouldn't matter, just transparency
i dont know how to pack things into xnbs, so i dont know anything about that
It seems like if you told it to load an image it would just use Texture2D.FromFile
Does it not do that?
xnb definitely works
i know xnb works, im talking about other image formats
hence "out of the formats [wren] listed" aka bmp, dds, etc.
"The relative file path in your content pack folder to load instead (like assets/dinosaur.png). This can be a .json (data), .png (image), .tbin or .tmx (map), or .xnb file."
this is from the CP docs, so i assume it enforces not putting in a jpg directly
So it doesn't seem to check file extension, but it does use skbitmap instead of texture2d
SMAPI itself seems to enforce it
in at least some areas
e.g. ModContentManager.LoadExact<T>
as well as the skbitmap thing you mention when loading the raw image data instead
is it?
Seems like it also doesn't have support for Effects
one could always harmony patch SMAPI to add support for a new file type, of course
i believe StardewUI does that
Yes, transpiling smapi sounds like a great idea lol
Fair enough
I suppose technically effects and other images formats could be loaded through xnb
They probably have it compiled to xnb
They weren't xnb
But mgfx is monogames own format so I guess it just worked shrug
Something I attempted but didn't get very far with is to try and make sdv load fbx 
They'd have to use direct file io or xnb bc smapi doesn't support that file extension and will throw errors
I can use png no problem.
Need 3d parsnip
Do you mean a load through a Content Patcher pack, or a load through C#? The data type is set by the code which first reads the asset, so that shouldn't happen with content pack loads (since it just uses the type provided by the caller).
Yeah a content pack
The case here was someone doing a Load on Data/FishPondData
And this made all other mods unable to append
I'd be interested in a minimal repro content pack so I can look into what it's doing.
Sure! It might be a little bit before I can take a look, working on some changes for 1.6.16 currently.
We can just tell ppl to not do this 
Whohooo i caused a bug to be found 😛
What do you guys think? I guess this is the easy one.
P
Protein bar
Nightshade loads .mgfx shader files but i do it with what i assume is System.IO
byte[] stream = File.ReadAllBytes(Path.Combine(helper.DirectoryPath, "assets/colorizer.mgfx"));
WorldColorizer = new Effect(Game1.graphics.GraphicsDevice, stream);```
I am beyond pleased to report that I figured out a workaround for the boatjourney minigame... instead I made a series of maps using the boat journey sprites, and ChangeToTemporaryMap to slowly fade through each boat position
no C# required... the boat doesn't move along the water like in Vanilla, but it gives the illusion
oh baby we cookin now
Boat 
what's the point of the (O) in the new file structure before the item ids?
to prevent overlap with other things with the same id but different category like furniture
hmm interesting
you don't always need it, but generally you do if different kinds of item could be acceptable in a given context, like for sale in a shop
so not necessary, but should have it just to be safe
check the documentation for the thing you are editing. that will tell you whether it's necessary
probably not necessary, but vanilla fishponddata has it so i'm doing it anyway
back in 1.5 item IDs don't have that identifier and relied on context clues, that's why you get bugs like gifting wallpaper with the ID 74 to villagers, and they react as if they were gifted a prismatic shard (also ID 74)
and bringing SVE fishponddata up to current standard for the patch for my mod
rip green wallpaper sword 🎻
lol
staircase shorts also killed by qualified item ids. a sad day
gotta love repetetive ", paste, ", scroll, repeat
Personally I miss hatching wallpaper into dinos
is the SVE dev in the discord? figure I might as well give them the updated code if they want it before I edit it further
They are but probably better to discuss that in the SVE Discord or the github(I assume) of the C# in question
All i'm doing is making the data for the fish ponds match the formating of the updated vanilla way, which is all content patcher stuff
cause they way it is in their files is the old way with "min/maxquantity" and without the object tagging on ids
(pathos is a regular person! and he's nice)
celebrity in chat
(its perhaps bad privacy to show random people full screen screenshots)
oh, is true
idk how i change it
Lots of things let you take partial screenshots and it's fine to just delete what u already posted
i celebrity
pathos is a real human? I thought he was a set of floating theatre masks D=
He....he isn't?
help
Also yes hi, please protect your personal info-
now i make a best photo
oky! sorry
I thought pathos was an LLM 😛
he'd be getting more stuff wrong if he was
He's too helpful to be a LLN
making strange syntax that makes no sense
really
hello, how i import sv tiles on tiled?
If you mean using the vanilla tilesheets in Tiled, it's usually easiest to unpack the files and open an existing map, then "Save As" to create a working copy in the unpacked Maps folder.
Because there are some things like animations that aren't preserved if you add the tilesheet yourself in Tiled, rather than using a map where it's preattached as a base.
this error apearr, i understand the error, but idk why this apear
Okay, you can't open PNGs in Tiled, you have to open the TBIN or TMX
PNGs can be attached to a tileset (which creates a TSX file unless you choose to Embed it in your map), but aren't opened directly from the File > Open menu.
What are you trying to do with the Barn?
If you're changing the outside appearance of something in the Buildings folder, that's not a Tiled or Map operation, that's something you'd do in an image editor program.
To the PNG
I recommend using Paint Dot Net, it's a free open source image editting program, very lightweight, and really good for pixel art. When you open the program for the first time, and click on the paintbrush, you can change it to pixel mode by clicking on "Aliased Rendering", which is a curved line on the toolbar right next to the "Normal" button near the end
or, use the pencil tool for a 1x1 pixel tool only
If you're using the tilesheet for the png actively in Tiled, then any changes you make in paint dot net appear instantly in Tiled for real time editting
for example, what my paint dot net screen looks like next to my Tiled screen
you can load the tilesheet png in through this button, but make sure the png is in the same folder as the map you're editting, and that you import it as a 16x16 tilesheet - Tiled will create a TSX file with the same name as your image
and then save everything (but not Save As, just Save)
Hello! I've have been trying to figure out how to affect tiles in a cone shape and I'm having trouble figuring it out. At first I tried building the cone from line calculations and figuring out how to get the tiles within the lines but then I found a different method. But now I have a problem with the new method I found. The cone is formed correctly when the player is facing left or right but when facing down, nothing happens and when facing up, the cone is made twice, reflecting over the x-axis. I know it has something to do with the acos but I'm not sure what the correct trig function I need for this situation. Does anyone who is familiar with trig and triangle calculations know what I need to do to fix this?
hello, i want to create mods with C#,but idk how i insert my custom music on the game
I can't read the screenshot of code but it sounds like a unit circle problem
You basically want to take some degree of area from a circle area right
oops, heres a better one
Please use pastebin or something
Github gist etc
The fact that it is being made twice makes me think there's some sign not being accounted for
You should be using Atan2 to determine the angle, not Acos
You're only taking the sample's X coordinate into account with your use of Acos when calculating the theta. And then, after using that value as an angle, you're using Atan2 to calculate the angle again?
Just calculate the angle once with Atan2, then you can convert it to degrees and normalize it if you want before checking if it's within range.
Also, minAngle and maxAngle should not be so deep in that loop. They don't change after they're set.
the other atan was for the direction thats for the hit result class I made. Ive tried using atan2 for the angle itself before but I think I couldnt get it to work right.
Tbh for a 45 degree sweep you don't need trig anyways
atan2 is the function you want for calculating the angle between the positive x axis and a ray between (0,0) and (x, y). If you had trouble with it before, it's probably because values weren't normalized.
Rather than converting your angles to radians, I'd just convert the atan2 output to degrees, normalize everything to the range 0..360, and make sure you have two different in-range checks depending on if maxAngle is less than minAngle, indicating wrapping.
You don't even need trig for a 45 degree angle, just travel out by a specific vector, then out to the side, and have those two vectors rotated correctly
I was kinda doing that by using lines to build a cone but I ran into the problem of getting the points inbetween
(I would like to present my latest Stardew breakage.)
I won't get home until 9pm tonight but when I do I can give you sample code
Can't wait to go home and play D👽W LEY by 🎶 oncerned Ape
The fun part is that the log is 100% clean.
This is me throwing everything I possibly can against the wall to get Rider's debugger attaching to Stardew so I don't have to boot into Windows to do anything Stardew related.
This current attempt is me loading SMAPI's main assembly and starting it manually after a delay to allow the debugger to attach to my launcher first.
DH surely just having a vscode open is less painful than this 
It would if hot reload worked there.
Did u try the whole dotnet watch thing
I've tried C# in vscode, and it is such a mess.
Yes my lang server used to die randomly, this got marginally better
Which version of Rider are you using?
But i am not really using the gui anything besides lang server
dotnet watch works nicely with Rider, but even with debugging that fails. I think I did try in VSCode, but lemme double check...
The latest version, but this has been a thing for... a year or more at this point?
Well, the docs say it requires .NET 8 as the target framework. So... have you tried recompiling the game and SMAPI and everything targeting .NET 8? lol
I was looking and 2023 mentions .NET 6... but that version says it only works on Windows.
.NET 8 as the target framework for debugging on Linux?
https://www.jetbrains.com/help/rider/2025.1/Hot_Reload.html
Debugging with Hot Reload requires .NET 8 as the target framework.
I'll be honest in my mind I immediately went to hot reload and not just any debugging
But that sort of thing also makes me think there's funky .NET version requirements.
Pretty sire yeah that is the case
It's possible it's trying to enable hot reload while debugging even though it knows it should be impossible in this situation.
Okay, hot reload disabled... attempt time.
Aaaannnd no change, yeah. SMAPI doesn't even get launched, it just... stops trying while just waiting for the debugger to attach.
Same going via dotnet watch, too. Running via debugging does get SMAPI launched, but breakpoints don't get hit.
Have you tried turning it off and on again?
Have you tried installing Rider via Wine?
Well, I suppose since I've gotten this far with a custom little launcher, why not try launching SMAPI via .NET 8 to see if that nonsense works.
...I will try that after my chaos. Not a bad idea.
Have you tried running rider with proton
(I mean I meant proton when I said wine, lol)
isnt proton unrecommended if you're not running a game
DH would be running a game though, ideally 😛
lmao true
It's just wine with extra graphics api things right
I have done extremely silly things in which i use proton to install a gog windows game
So that i can get the game into the particular prefix
from proton-ge's readme:
Proton runs in a container, which uses a runtime environment and libraries specifically built for use within that container. Not running it as intended results in the container and therefore its runtime not being used, and severely breaks library compatibility. It causes wine to search for libraries on your system instead of those it was built with/intended for within proton. It may work, if enough libraries match, but it is not correct and not supportable due to library differences across distros.
Can anyone tell me if I'm doing this right? The wiki is driving me crazy.
Yeah but it just means DH has to add rider as a steam game right
first thing I see is you're loading into Characters/Dialogue/San, Characters/Dialogue/MarriageDialogueSan, Characters/schedules/San, Strings/Schedules/San, but your NPC's internal name is YonaKao.ChoiSanMod_San
I see you set up the dynamic token above to avoid repeating the mod ID every time, so you can use that instead
ie. Characters/Dialogue/{{San}}, which will expand into Characters/Dialogue/YonaKao.ChoiSanMod_San
also loading data/<Data/Character>.json is probably wrong, you have some spare < and > there
that seems like you're loading the npc data, which you're already doing below
Is there a condition that links a child to its parent? Like if i had a child with Haley. Then divorced her. Is there a way I can have the child retain something edited about it based on Haley?
No
Ah
You would need to do indirect ways
Is there a mod or framework that does?
Ahh okk
And probably do more than u desired
This is a framework for having more children
And one of the things it does is give the child a persistent internal id
So that you can indeed keep the appearance even if you divorce
If your usecase is narrow enough (e.g. only for 1 npc spouse) it's probably possible to do what you want with series of mailflags
so, im gonna update a recolor mod for personal use, specifically yri's retro recolor, and i wanna know how do i add in the updated tilesheets and what apps do you guys recommend for me to use? i have csp
i might also update their tree recolor to match
by updated do you mean just adding in new files, or changing old ones?
new files
adding in new files just means loading in the tilesheets like how the others are loaded in the content.json
like loading a new image
pretty shrimple
how to do that... i am not familiar with json
I M SORRY 💔 💔 💔
LOL
!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.
Also helpful
barn animals can be at most 32x32 otherwise they can't exit the door
coop animals are even smaller, only 16x16
And I think that's a dilophosaurus? So on the smaller scale, anyway!
Thanks
thak you !
That's a... surprisingly realistic explanation of size limits 
That's literally the reason (cant leave door
Ha I do love the giant dinosaur though
I believe you can make the animal door bigger, but I don't think that helps.
it does, but rip retex compat
Dino house
Starassic Park
You need to have the big gates to enter your farm.
I imagine it working but very very very jankily
The best kind of working
just mod harder
what if you combine lots of smaller animals together like some kind of transformer
Rat king
Goofy question.
How difficult would it be to have a mod that makes the rancher profession also effect the sale value of animals? (Possibly also shepherd/Coopmaster applying a bonus again but only to the appropriate animals)
Realizing this is on the list of "mechanics nobody wants or cares about using" so why do I even care...
if you know C# it's only a postfix on the relevant function
maybe even no harmony if you want to go the asset edit route where you change the price of every animal in Data/FarmAnimals depending on player profession. That is probably worse performance-wise though
heck, if you're willing to list out every animal manually that can be a CP mod
Hmm. Harmony patch of some persuasion or something else?
Wouldn't be my first rodeo on that front.
Admittedly I use animal Husbrandy mod, but also pokemon ranch which doesn't exactly make sense for meat output for most of its farm animals.
Also just feels super weird nothing effects that whole system.
Doing edit data like this wouldn't be so bad (the token only updates at launch and whenever you get profession up) just very manual
In theory there's like three variables in animal data that hold professions they get "boosted" by, potentially I'd be able to determine which profession is assigned to a given animal, or I guess maybe I'd be better off checking the building they live in for weather to add the building specific value bonus.
Honestly still probably wouldn't be all that viable on average but also getting over a 1000g for max heart chickens with Sheppard+Coopmaster feels like a cool thing to have exist.
Admittedly id be concerned about multiplayer with the manual method.
I guess I'll have to look into c# patches and how best to see what I need to target
Hello
Quick q, is this error telling me I have extra }}?
https://smapi.io/log/f3905d738ffb4ccabd5473b01bb839b1
It either means you have extra {{ or you are missing }}
FML
visual studio and json validator are saying I don't have any issues
and I added like 20 new dynamic tokens

needle in a haystack type stuff
I wish you could like, use highlighter colors in VSC
(does having BETAS do it count as "no harmony"?)
Never done fallback keys before, is this correctly put maybe?
"Value": "{{i18n:{{Random:{{GenericKey}},{{GenericKey}},{{SeasonKey}},{{SunberryKey}},{{InLawKey}},{{AuntKey}}|defaultKeys={{Mia.FallbackKey}} }}",
It exists 
oh that is. so specifc. I owe you my life THANK YOU
Linkoid (who made the extension) is on this server tho I haven't seen em recently
This looks like missing }} situation
Need one to to close off Random i think?
that would be the se-OH that's closing my fallback key 
THANK YOU
❤️
thank god I had like a million more of these, love stumbling into it first try
(also fallback keys are very new so id be more surprised if you had done them before)
yeah soph just taught me 
got into the wonderful world of dynamic tokens this week thanks to her 
time to reformat all of sterling's dialogue. again. (after Mia)
YEP that was it
thanks for the second pair of eyes AND the extension suggestion
Airyn and Soph MENTIONED them but I haven't actually looked into them/know what they do
introducing localtokens now would be a rather large mod structure overhaul, fair warning
What are they used for?
Templating
you can define tokens on a per-patch basis, basically, most significantly define tokens for a single Include only
Well crap I made a whole user define language in notepad++ to do that. thats awesome!
🤔
so you could include a file and say "in this file, {{Thing}} is actually "One""
and then reuse that same fromfile but in a DIFFERENT include but make it "Two" instead
Basically like - I changed my dialogue to a Dialogue Token dynamic token
"Name": "DialogueToken",
"Value": "{{i18n:{{Random:{{GenericKey}},{{GenericKey}},{{SeasonKey}},{{SunberryKey}},{{InLawKey}},{{AuntKey}}|defaultKeys={{Mia.FallbackKey}} }} }}",
},```
And I said it'd be cool if I could just somehow use this same dialogue token for Mia, Henry AND Sterling instead of just Mia as I'm currently doing and local tokens were suggested
WAIT. WAIT I'M SEEING IT.
OKAY I GOT IT.

oh I gotta give this a try
what is {{Mia.FallbackKey}} anyway?
So this is my generic key for example
{
"Name": "GenericKey",
"Value": "Mia.Dialogue.Generic.{{HeartLevel}}.{{Random:{{Range:1,30}}}}",
},```
So I'd change ``Mia`` for a local token instead- and then the game would know that in my Miadialogue.json include, {{Name}}=Mia, and in Sterlingdialogue.json {{Name}}=Sterling, right?
and then I could just use the same dynamic token for all my character's dialogue
or am I misunderstanding?
One of her generic dialogues :]
//Fallback Key
{
"Name": "Mia.FallbackKey",
"Value": "Mia.Dialogue.Generic.EarlyHearts.1",
},
soph said it was good in case I made a mistake in the dialogue it chooses for the day so it'd always have something to default to
Wouldn't that be just the same Dialogue.json, included 2 times with different Name local tokens? 
localtokens and how to convert things to use them are still kinda hard for my brain to wrap around but i dont think you'd have the dynamic token at all if you used localtokens instead i think
bc you cant put a localtoken on a dynamictoken itself
Local tokens are kinda like, scoped dynamic tokens
I did recently discover the beauty of local tokens thanks to chu too 
Basically if you can imagine say 3 patches where u only gotta change a few words
if you had two different fromfiles anyway i dont know if theres really much point to using a localtoken?
You can make 1 include and do LocalTokens for those words to change
OHHHH I see 
However if the change is more complex, i.e. different number of patches in general
Then it's not quite the tool
I wonder how many mods actually use LocalTokens 
I've heard of a few people using it, but it's still pretty new
It's a 2.5.0 feature
and I like to keep things mostly simple, makes my life easier
i think a lot of people still dont really think about templating in general when thinking about how to structure their mod, bc it hasnt really been an option
but a localtoken setup while maybe complex to wrap your head around at the outset can make things much, much, much simpler and cleaner if you do keep templates in mind from the getgo and make full use of it
with very long included templates
rather than just using them for like one or two patches
Yeah definitely, I had a lot of fun with just templating portraits/characters builders, I'm sure it'd be way more satisfying for mods with multiple NPCs or something similar
thing is templating has the biggest benefit for a long run-on series of similar changes, which a lot of people don't plan for when starting up their mod
It's best for item mods jmo
unless you're writing it up from the outset with the idea you're going to make, say, 100 similar apples and you don't want to make them just coloured objects or artisan products
i think a lot of the time localtokens are also like. almost what someone wants but not quite. the content pack authors ever yearn for the for loops that they cannot have
decided for funsies to look into what changes I need to make to allow ostriches to fit through coop doors. 2 hours later I would like to announce that
||I give up||
any idea why this function in the mod api: https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Events#World.NpcListChanged
outputs something like this with date time stamp
04/18/2025 13:09:25: NPCs added: Willy, NPCs removed:
04/18/2025 13:09:25: NPCs added: , NPCs removed: Willy
basically saying that the person come and left the location at the same time?
change the ostrich bounding box size to 1x1 on every pathfinder call. done ✅
just let them roam free, no coop needed.. problem solved
502...
selph what if u just
teleport them outside
dont think about the door
the ostrich tardis
the tardis has a door tho?
but its big enough for an ostrich
This is what happens when. Npcs transfer maps
Mood
wait but the time stamp is the same, how to they enter and exit at the same time into the same place?
Yes?
They leave one map and at the same frame enter a different map
What are you trying to do anyways
i think it's just the order that makes it look unusual there, since they're added to the new location before leaving the old
the all-too-brief willy superposition sequence
yeah, and also they are different locations so it makes sense
hm so for the mystery typing, it doesn't seem like actual problem once u have ponds and tried to toss in a fish (triggering the real loading)
that seems consistent with the previous experiments with custom assets
@coral oasis when you were testing w/ alchemistry, did you interact with a pond before trying patch export?
oh.... god
i thought changing the tilesheets would be easy
this is HARD
what the hell where do i start... i just wanna put 1.6 tiles..
is tiled for retextures as well..
tiled is just for making the map, you can see which tilesheets are in a map.. it's not for painting tile textures
for u, its just easy way to look at the map
i am going to go insane.
what are you finding hard?
everything
also finding the changed tiles
like the new tiles
it was hard..
well this totally isnt overwhelming
There also isn't a specific place where all the new 1.6 stuff is iirc, but there should be some tilesheets that are definitely more relevant
You can also use Lookup Anything on a tile in the game to figure out which tilesheet it's from
currently playing "Chip's Challenge 2" and some of these levels... multicoloured (insert word of choice)....
what a mess of tiles these are
wait do we need hard reference to use the content patcher conditions api
No
yep those are from the game
im gonna convert them to pngs
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!
kohl, the extracted files from the unpacker will go into a duplicate of the Content folder named Content (unpacked) and will automatically give you the proper non-XNB file types to change, including pngs. 🙂
yeah dunno why that's the case, I used CP API for a test mod once and the copying the interface method works fine
Pathos says that but if you're clever with reflection 😛
extracted all the files... now i have done it correctly
also those lines in the docs are 3-4 years old and predate pintail being added to do interface proxying
unearthing ancient tomes...
probably not as ancient as the issue on SMAPI that says "you should consider bundling Harmony"
oh that saves me having to make it, though I might anyway as I want to do a full LSP for it and not just syntax colour highlights to complement the debugger
Reading all the trouble ppl having adding mods to the game.
Makes me doubt if I shall go that way 🤔
What do you say, is it common with problems adding mods, or do the usually work fine if installed correctly?
are you trying to install mods or make mods
Install mods
!gs and ask in #1272025932932055121 if you have issues
If you would like a guide to setting up mods for Stardew Valley, check out the getting started guide! https://stardewvalleywiki.com/Modding:Player_Guide
adding mods is easy tho its just that we have a dedicated section for helping ppl who had trouble
selection bias
Okey thanks 🙏
when doing the minimal reproduction, also test that it also happens with just smapi and cp installed.
I don't fully see how vanilla loading the fish pond data would cause it to error out, but other mods loading the asset (prior to vanilla doing it correctly) with an inprecise type (e.g. object) could cause problems.
oh i figured out it's just when you do patch export
patch export guessed wrong type, not really bug

the schema is like this, but cannot use tokens in here much like rest of config
"ConfigSchema": {
"AngryAbby": {
"AllowValues": "true, false",
"Default": true,
"PreviewImage": {
"Target": "Portraits/Abigail",
"SourceRect": {
"X": 0,
"Y": 0,
"Width": 64,
"Height": 64
}
}
},
},
hello is it possible to force a green rain weather day the next day?
set Game1.weatherForTomorrow probably
look at debug commands GreenRain
that one instantly calls down green rain
hmm actually my suggestion likely wouldn't work out of the box either, unless you can get it to run after the day update logic (EDIT: nah, this should work, it just won't override forced weathers like sunny festivals or storms on Summer 13)
tbh u r maybe better off doing custom weather in cloudy skies than trying to mess with green rain
there are some, bizarre behavior with this preview impl if your config controls the Load of something...
hmmmnngg...
I scoured the decompiled code and came up with this ```cs
private void OnDayEnding(object? sender, DayEndingEventArgs e)
{
if (Game1.player.mailReceived.Contains("greenRainMossyDew"))
{
Game1.weatherForTomorrow = Game1.weather_rain;
Game1.netWorldState.Value.WeatherForTomorrow = Game1.weather_green_rain;
Game1.player.mailReceived.Remove("greenRainMossyDew"); // Prevent repeat rain
Monitor.Log("Green Rain triggered for tomorrow!", LogLevel.Info);
}
}
you probably want Game1.weatherForTomorrow to be Game1.weather_green_rain as well
oh
It's because I made a Mossy blade
and want it to appear on a green rain day but I want it to occur the next day after an event is seen and the mail flag was sent last piece of the code was triggering this weather anomaly.
finally did it, bleh
a huge special thanks to @lucid iron for the suggestion I should have gone with in the first place instead of wasting time looking into bounding box and pathfinding
the "worst" part is that I didn't have to handle the animal going back inside, it just works™️
it's the going outside part that these oversized poultry can't do
this is so, so, so late, but I finally did it lmao
Oh wow
Congrats!
I'll release this as a standalone mod that makes all big birds (that I know of) be able to live in coops as well as barns some time later
then my plans of consolidating ostriches/mizu turkeys/vmv geese with their brethren is finally reality
Ah yeah, there is a second argument for the type to have export get it right.
Also less of an issue for normal vanilla assets as propagation would make sure vanilla reloads it, but FishPondData doesn't get propagated as the vanilla code flows read the asset every time anyway
hmm for vanilla assets I can probably fix that in content patcher anyway, because I can use reflection on DataLoader to link asset names to types
ok got it fixed, just testing a case insensitive variant now, did find a bug in the ShinyFish mod as a result, where it tries to (indirectly) load Data/FishPondData while editing Data/FishPondData.
less of an issue when no one handles the load, becomes more of a problem when someone does.
omg this is great Selph
Secret bird warp 
