#making-mods-general
1 messages · Page 200 of 1
Honestly my brain just says, "Patch the Property out and replace it with text property on the tile that says "They won't be home/open today" or something. with a When Condition.
Thats what i figured but i cant find anything
good point lemme see
just seems to have a regular locked door warp
and the property value is?
SeedShop
that's the whole thing?
Pierre is hardcosed
I might be misunderstanding your question, thats the map name
Ah so no way to use it?
that can be done with just cp nowadays, but I have yet to see anyone actually do it.
Restricting it to only greenhouse type interiors is handled with a custom gsq
public void lockedDoorWarp(Point tile, string locationName, int openTime, int closeTime, string npcName, int minFriendship)
{
bool town_key_applies = Game1.player.HasTownKey;
if (AreStoresClosedForFestival() && InValleyContext())
{
Game1.drawObjectDialogue(Game1.parseText(Game1.content.LoadString("Strings\\Locations:FestivalDay_DoorLocked")));
return;
}
if (locationName == "SeedShop" && Game1.shortDayNameFromDayOfSeason(Game1.dayOfMonth).Equals("Wed") && !Utility.HasAnyPlayerSeenEvent("191393") && !town_key_applies)
{
Game1.drawObjectDialogue(Game1.parseText(Game1.content.LoadString("Strings\\Locations:SeedShop_LockedWed")));
return;
}
// . . .
well that's suck
but yeah probably want a CP changes entry to add/remove the property from the tile depending on the date
Oh wow
Ok, no one replied for the first 10 minutes and then everyone replied and I didn't see 'til an hour later. So, yes, the existing (older) mod had just radial menus. The current iteration now has Quick Slots, where you hold the trigger button and press one of the 8 directional/basic buttons. And the newest part, the holy grail, is going to be the ability to completely remap several of the in-game buttons, not just to switch tools but actually use them on press, i.e. you press X to swing pickaxe, Y to swing sword, B to lay a bomb, LB for slingshot, whatever. Because of that, actually needs a whole new UI from the one that Chu posted.
I didn't realize how easy to work with SDV was that coding is so familiar
What's that pixel smoothing mod btw
I keep forgetting to download it and can't find it anymore
Also since it came up, the current version does use Stardew UI, but only for the configuration and for that menu I just posted above. It's technically fully usable during gameplay (not in-game config) without Stardew UI.
it's all very intuitive really, but the difficulty comes from structuring what you want, interaction between the hundreds/thousands of components in the game, and the limits of creativity and brainpower
(very hard limits)
(The pixel mod is Clear Glasses)
THANK YOU
I'm a lil confused as to how it would work. am I going to be like editing the machine (as suggested earlier) so it also works on a GSQ "Type" map or GSQ "Map name" specifically?
Its a bit out of my ballpark and i'm still learning GSQ's tho they are becoming very useful very fast.
It's so nice coming back after 6 or so patches to find that all of my mods still work
invariably nothing fucking works anyway and you can't get createQuestionDialogue -> afterDialogueBehavior -> createQuestionDialogue -> afterDialogueBehavior to actually call the last delegate ever
Was getting kinda suspicious that I hadn't gotten any notifications for bug reports or comments
what are you doing.....
tile action -> question dialogue with 3 options -> option 2 opens a new question dialogue with 2 options -> either option opens a regular dialogue with different trigger action behaviours
wonder if itd work better baked into a dialogue string
Depends on what you're trying to do. LOCATION_IS_INDOORS Current or LOCATION_IS_OUTDOORS Current can be used to limit it to indoor/outdoor locations, or you can delete the condition or set it to TRUE if you want it to always run, or use LOCATION_NAME to enable it on specific maps
I think I'll be using LOCATION_NAME, I'm editing the Condition on the Machine to allow it to run in that area right?
I don't recall how it works off the top of my head, you may want to refer to the machines page on the wiki
[[Modding:machine_data]] i think
Nope
[[Modding:Machines]]
That's it
Ye, I'm looking at it right now...
trying to understand, cuz Honey has the itemplaced in machine... wait i'm probably looking at cask.
If it's enabled by conditions, you'd need ANY, if it's disabled by conditions, you can just use a comma
so its condition is "!LOCATION_SEASON Target Winter"
so can Buildings Action Dialogue do question/response groups orrrr
I've never tried 
maybe i can get away with registering some new trigger actions to open the shopmenu as option 1 and do the nested questions as option 2
Should be able to
It's handled in performAction just like tiles are
probably. i registered a tile action for a little menu that can open two other menus
good catch, so its not that they dont work inside, its that it doesnt count for their timer? 
It's that those checks are global for the whole machine, but condition is specific to a recipe
Also those checks are not gsqs and support only a limited set of criteria
So If I wanted to say add it to 2 indoor locations always working i'd have to do something like patch out the preventtimePass completly, then Modify Conditions, it has "!LOCATION_SEASON Target Winter" Which is as Long as its not winter... so id have to add some kind of And to that and add Outdoors as a Condition to rematch base criteria, then add an Or "Map name" or "Map Name2"?
and that would likely break if anyone else edited it.
Granted, this isnt required to make my mod work, it would just be a nice touch for an area or 2 
back on this, out of curiosity, would it be viable to use a ConditionalDoor? could you mimic the locked door requirement AND the 'closed on certain day' by the queries?
if it is, the wiki did not specify, but you're probably right.
its in this section
it's straight up in GameLocation.performAction
Why is it repeated in both sections?
I think that would need to go in the TouchAction table to replace the one that doesn't specify
so it's weird
idk. pretty sure its used in both layers though
the ConditionalDoor touchaction is the message shown to the player
bc if the door is already open you shouldnt be able to walk in still
the ConditionalDoor tile action is the actual door
I'm more confused by the fact that it's listed as a TouchAction inside the Action table.
If that's the case
Is there a way to patch a mods map patch? I want to fix an issue and want it compatible if the mod updates. I know how to just go into tiled and fix the map. But I want to make it so I don't have to do that each time it updates.
Yeah, there's this one too, Atra, which is why I got confused:
you should do both
or maybe one is the warp version of the other?
anyways
both exist
i imagine its in with Actions because it is suppopsed to go on the buildings layer
Are you not just loading your patch after and targeting the same Target?
You wouldn't be able to target their TMX, but you could target the same spot on the map once they've patched it into the map.
So just make my mod a dependant on theirs in the manifest, so it load 2nd. Just like a CP only patch would do it?
Looking for an assist with this "PLAYER_SPECIAL_ORDER_RULE_ACTIVE" way to use a game state query in a special order condition. Can anyone point me to a mod that uses this approach?
I mean, someone more experienced in C# land might know if there's a different way to do it without CP, but that is not me.
this will work if your patch (edit) is the same priority as theirs. if you set yours to a later value, it will always come afterward
unfortunately, you can't specify "patch after this other mod" in a durable way. if they change their priority for whatever reason you might need to update your patch too
where do i find priority for map patches. I have never done that before. Is there a Wiki link?
you're in C#/SMAPI?
it actually uses the same priority values as content patcher (or, more accurately, CP uses SMAPI's priority values, since it's a SMAPI mod)
you want to find the AssetLoadPriority and AssetEditPriority enums
... I smell an x/y problem
What are you actually trying to do
Ok, that is a place to start. Thanks 🙂
So yeah after reading some more I think that's not what I'm after. Here's the issue: I have a special order that should only be available when a certain conversation topic is active. I'm doing that with content patcher conditions, but it's being reported that it isn't working.
so I was trying to see if I could manage that through the S.O. conditions which looks like a no
That sounds like an insane faff tbh
(btw if i want a conversationtopic that applies immediately and lasts until the following day, do i use 0 or 1 as a value)
I would recommend ignoring the board entirely and sending your special order by mail or event
This is basically not a necessary trigger, it is like after you have jailed pierre from the main event, I am occassionally offering a chance to send him back to jail through the SO board
I could do it another way besides the SO board though it seems a bit finicky
the problem the user reported is that they are being offered the SO when he is still in jail the first time
this is what I have currently, shouldn't this work? "When": { "HasConversationTopic |contains=PierreInJail": false, "cfgJailPierre":true, },
So, the board is populated on Sunday night
And that is when conditions are checked
You'll need to add a "hasSeenEvent" for the event that originally jails him I think
I have that covered in the required tags inside the SO "RequiredTags": "!LaoJailBox, !season_winter, event_239790020",
Your issue is that CP checks tokens on day start
And the board is checked on day end
So there is a window there
Either use the Condition field and a gsq
Or use two tokens
I don't think you can use gsq for a special order though? unless you're doing it through data\triggers i guess?
you can, that's new in 1.6
No, special orders have a gsq field
undocumented on the wiki
Oh
oh... is it documented anywhere else, or is there an example somewhere? I would like to try that if possible
OK I do have it unpacked and see that. I will try that thank you
If I'm making an include in content patcher, should I have the {} in my include file as well, or should I omit them since the include itself has {}?
you need the curly braces for it to be valid json
Sweet ty! and I wouldn't put the "Changes": [ part since I'm putting the include in that section, right?
you still want the "changes" block! the "include" action doesn't just copy/paste the other file into your main content.json as is
included files should NOT, however, have a "format"
!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.
Gotcha, thank you!
does $q have to be unique and non-repeatable by default, or can i have a repeating question dialogue
ideally i want the question and answers to all be repeatable
by default non-repeatable, yes (it skips the question if you've given any of its answers)
if you can clear the id of the response from your given responses, then it should repeat
'if i can'?
if meaning predicate, not if meaning i doubt you
so does that mean i can or
I believe in you also you can use the respond ID of "null"
So in Tiled, it made my map tilesheets point to ../../../../../../../Steam/steamapps/common/Stardew Valley/Content (unpacked)/Maps/townInterior.png which obviously isn't working in game, where do i need to point it to instead?
theres a MarkQuestionAnswered trigger action action
whikch i assume is what ichor is talking about
A blueberry is already in c# and you can literally just use the response I'd of "null"
i'm giving up on c# because i can't nest questions and someone said you can just fine in json dialogue
Awwww! But nick what's his face is telling me c# has a great future!!!
Christ
There's actually a guy who made a closed-source rust mod for Minecraft for NO REASON and hasn't made anything since
i mean does someone need a reason
i dont think someone needs a reason
vacuously, there always is a reason. but i agree with button that we don't need to know it
i'd imagine they had a reason, but one that was probably only justifiable to them
I think the situation here is a bit different than in the Stardew modding scene
Most people now use Modrinth which is ran mostly by people that know Java
Which is where it was tried
So it being closed source, an only project, and in a language the mods are unfamiliar with can make some confusion
i mean i know the situation there. i dont think they need a reason. people mod things just for fun and experimentation sometimes
if i could write a mod for stardew in javascript i would
just for the heck of it
Yeah but there's recently already been a bunch of viruses packaged in mods (and I believe a rust mod previously that was also ARR and taken down for malware) so it just feels odd
an entirely different circumstance and discussion
i simply dont think that, outside of obvious cases like malware and such, that a modder ever needs to justify a mod they create
i believe you will find the answer directly below the message you are replying to /lh
Yeah but the fact that there were two similar mods made in Rust and one was taken down for malware makes me feel as though there should be more than radio silence on their end
there doesnt need to be
would it make you feel better atra if i said typescript instead
I would love to write more Rust tbh
I think so
I've started learning it a little and it's interesting
(the real answer for why javacript specifically though is just bc its the only other language i know well enough)
Backsearch the mod in #mod-showcase
Being Java brained has made moving out of Java a tad difficult. I didn't realize how high level the language was until relatively recently
Rust was a fun change
I cant get to their profile without @ them is there another way I can see it so I can see if its ok to mention them?
God I have a bone to pick with Java right now
Hehe fair
Does not have a thing to do with Java
ignore my spelling.......
Just a language that is objected oriented because Java was cool then
I guess just at them? Idk does their Nexus profile say it's ok to contact them here?
otherwise if you have a bug/feature request for CI I imagine most people prefer them be posted on the Nexus page
they are not particularly active here fwiw
Hmmm I could just message them on nexus
But nobody ever checks their nexus dms X|||||
you can search for from:them and follow the jumps so you can click on their display name
you have to believe
I check Nexus DM's, and Nexus DM's email the Author by default, so it will pop up there if they havent changed the settings
WHERE YA FIND THAT
oh yeah I misread your question
I can confirm that gauss/gaussfire is indeed CI's author
r u looking for that person for updating that one broken transpiler?
Gaussfire is Convenient Inventory, not to be confused with the other mod Convenient Chests
CI is the more updated and well-supported mod
(the main mod is updated now)
No lmao and omg I cant beleieve I did that whoops
Its for a recolor
of the buttons cause I love earthy recolor
That said, I've recently communicated with Gaussfire via Nexus DMs
well hello, author of Portable Holes, not to be confused with my mod Portable Hole 
Ok awesome Ill shoot him a dm then
or message/nexus email or whatever the lingo is lol
Portable Hole, the more updated well-supported mod
@deep cypress: child.checkaction (8h ago)
I believe Earthy Interface already has compatibility files for Convenient Inventory stickied on its comment section. Unless there's some new updates not covered.
Thanks for the heads up I’ll double check 🙂
does someone know where i can see a tutorial for the coding about appearences? the site that maked a tutorial for this doesnt show anymore for me 
I found out why this property wasn't working, This single property uses camelCase instead of PascalCase unlike everything else.
"indoorWater"
i'll have you know forceLoadPathLayerLights is camelcase and asdf could even be snake_case if we believe

Does this not work? https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Seasonal_Outfits_via_Appearances
If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference between the two is that the token way is simpler...
THANK YOUUU!!!!!!!!! this is the one i was searching 😭
So sorry if this question has been asked before. But could someone give me a literal example for this so i can see it in the works?
There's several examples of that in vanilla game: /quickQuestion #Yes#No#It's too difficult...(break)emote Willy 20\\speak Willy \"Aha! A ${man^lady}$ after me own heart...$h\"\\pause 500\\speak Willy \"You can always ${trust a fisherman^count on a lady who fishes}$...\"\\speak Willy \"That's what me ol' Pappy used to say, at least. Haha!$h#$b#Well, keep it goin'... if you can catch every fish in these waters, I've got a special prize waitin' for ye...\"(break)emote Willy 28\\speak Willy \"Not the fishin' type, eh? That's too bad...$s\"(break)emote Willy 16\\speak Willy \"Yes, it's a difficult sport... especially for a beginner.#$b#Have you tried the 'Training Rod'? I sell them right here, at a very low price.#$b#You should try using a 'Training Rod' until you get a little more experienced.\"/
(Central Station preview 4 is now available!
All features planned for 1.0.0 are now implemented. The next builds will mainly have polishing, bug fixes, changes to address feedback here, and the completed map when it's ready.
See the [Central Station alpha thread](#1336049684950683810 message) for more info.)
what is the command name for green rain to include in outfits. Also, what is green rain?
Omg thank you. I was struggling with this lol.
is there a bit of like {{}} That does "Farm Name"?
yes its {{FarmName}}
I suppose that Tracks.
Don't you love when it's just that simple?
it's never that simple. i bet {{farmname}} replants your crops or something
ok mr. Just That Simple, how do i have a json string npc dialogue question response that simply closes the dialogue without opening a blank dialogue
i've tried "" and "$action Null"
i've also tried using an invalid dialogue key but that causes errors
have you tried $k (i dont know if this will work)
if k doesnt work then im not sure you can get around opening a blank dialogue
$k seems bad for my health
it is short for kill so it might be
this is an npc shop dialogue and i'd prefer if opening the shop didn't obliterate all other dialogue for the day
what is NPC shop dialogue
I've always avoided NPCs and Dialogue strings like they have the Plague. 
i didnt realize that was a thing
it isn't a thing, but it soon will be
Has anyone managed to get Farm Type Mannager to work with the mod config menu? I want the player to be able to choose what spawns.
GMCM doesnt automatically add config menus for mods, the mod has to integrate with it specifically (CP does it for you if you make a CP pack). im not sure if FTM does that, but if it doesnt say it does, it probably doesnt
GMCM works off reading CP frameworks for its auto-options. FTM being a seperate framework makes it more complex, you'd have to write an interface, or request the author to add compatability.
also I'm not sure you understand How Many options FTM has.
At best, you might be able to make a few presets and offer those as options. Otherwise you'll just overwhelm most normal users.
^ Note that technically you can do that without coding, by having different "sets" of Content.json (ContentHighSpawn vs ContentLowSpawn) for the FTM section of the mod, and have the user rename one to "Content.json." and then Smapi will use that one and ignore the others.
@tribal ore mind if I DM you re: your beta?
SVE has a config option that modifies monster spawn rate, I'm sure there is something you can use
You can through usage of CustomFields and GSQs. this was the solution esca gave me for my farm cave pack:
Though it depends on what you're doing. mine was to make sure FTM spawns the correct forage when a specific farm cave type is selected in the config.
screen clips that and saves it for later "Neat."
You dont need to make trigger actions for that. just the CustomFields is sufficient
@unique sigilThanks, I'll look into it. Even if it doesn't work for this it'll be relevant when making my mod compatible with stardew expanded.
I just switched from using Krita to Aseprite for pixel art and I'm already in love
It's a pain transferring the layers across programs, but it's possible and I'm almost there 😭
i probably won't change from photoshop, but it's at least nice to see there's plugins for aseprite that replace the godawful ui with something legible and usable
https://mortmort.itch.io/aseprite-darkmode
people seem to either immediately love or immediately hate aseprite, no inbetween
bluebs have i ever told you that you're my hero
i'm sure a couple more times couldn't hurt
well okay then, your art is great, your innovation to cause mischief is awe-inspiring, your attention to quality is something to aspire to
yoinked (thank you so much)
can i add this to my resume (please)
really though i'm always surprised to get compliments when i only post things every few years and it takes a few more to make them actually work instead of deleting your save file
well i wasn't able to express it during the chaos of 1.6.9 testing but i've come to personally appreciate other mod authors who are able to find arcane bugs with detailed reports
and also watching the entirety of love of cooking/the halloween mod you did was great inspiration for me to be like, "i want innovation"
best wibbly lanterns
wibbly lanterns/dialogue crimes
inspirational rooves
i was going to ask how you even remember the lanterns before remembering i specifically pinged you about simple harmonic motion or something inane like that
Im trying to download smapi and its coming up with unauthorizedaccessexception, does anyone know how to fix that?
ive had smapi before and didnt have this issue
!mh you'd be best off in there
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
thank you
inane fun
Does anyone know why the "(SVE)" is infront of the tree name? The only mods I could think would have anything to do with it are SVE itself or UI Info Suite
looked in the tree.json of sve didn't notice anything
Yeah I tried that, it still doesn't parse the {{ModId}} for some reason.
Maybe try grep for it?
Ill look at the i18n didnt think about it
Might be hiding i18n yeah
not in the display name from what I can tell
I'm looking in the CP version so let me check the others to be safe
Didnt see an entry for the stump or tree
sound familiar?
https://github.com/Pathoschild/StardewMods/issues/1056
No not mentioned anywhere else
try a patch export data/locations and see if any of your tokens in values with tokenised keys are parsed
I think it's Data/Characters.
same principle for either
Because, all Load instances are parsing {{ModId}}
Tree display names are all hardcoded in UI Info Suite 2
because trees dont actually have display name fields
So im stuck looking at (SVE) BIRCH TREE X|
I believe the author is working on something that allows mod authors to specify display names on their end
Thank the gods
My ocd is kills me slightly everytime I see (SVE) Birch Tree and the Oak Tree
it's not done yet though, and the author is currently busy with a top down rewrite, so that might be some time away
I shall patiently wait
Okay no, Data/Characters is parsing everything correctly.
So it doesn't work. I keep getting this error in the console: [PEEM (Not MEEP)] Couldn't find the pickup data for PEEM.Test.Pickup.BackwoodsArtifact in PEEM/ItemPickups. Did you remember to patch in the data? https://smapi.io/json/content-patcher/30740c6eb3cf46c3b856684267287b9c (It was working fine before 1.0.1)
And the Load instances are placing the portraits and sprites in the correct location.
is this the same issue as the UIIS2 "_ Bush Bush"/"_ Tree Tree"/whatever it was? 
Not sure why I'm getting this then.
Weird, I guess I'll go back to testing other things.
what kind of console is that-
looks suspiciously like windows 7 style cmd
This computer I'm on has been upgraded from XP to Win 10 over the span of years, so the fonts are messed up.
oh lol
So the cmd fonts are using the XP fonts.
probably, but Custom Bush has a display name field now and UIIS2 is reading from that
So, all patch exports are as expected, Data/Characters is parsing perfectly fine, but I'm not sure what entry isn't being parsed for it to try and load the xnb for it?
I can barely read that screenshot tbh, if you could send the smapi log we might be able to help you better
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 26 C# mods and 25 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
not the contrast so much as the font, it's nearly impossible to recognise some of the characters for me, though I'm sure with experience you get used to it
also earlier comments weren't that clear, you mentioned it was a portrait asset name tokenisation issue
I'm just good at reading old fonts.
Yeah, the portraits and sprites aren't being loaded.
(we ask for logs anyway though regardless of your font, reading off of a screenshot is annoying and we can only get the full context from an actual log sometimes)
but the error is calling out that NPC {{ModId}}_Hekate can't load portraits from 'Portraits/{{ModId}}_Hekate', meaning your npc's name isn't tokenised either
That is my current content.json.
unless the error just doesn't tokenise the key
Oh, it is.
// NPC Entries
{
"LogName": "Initialising the creation of the Hekate NPC.",
"Action": "EditData",
"Target": "Data/Characters",
"Entries": {
"{{ModId}}_Hekate": {
"DisplayName": "{{i18n:NPC.Name.Hekate}}",
"Language": "Default",
"Gender": "Female",
"Age": "Adult",
it is not correctly tokenized somewhere then, because that warning is from the game. if the game ever logs a content patcher token, something is wrong with your tokens
I'd imagine errors use the internal name for easier debugging
the game has no way to know you're even using tokens unless something is passing the value in literally
It looks like for some reason ModId specifically isn't being parsed by content patcher 
usually this happens if something is being Loaded in instead of being EditData'd in
I'll try updating Content Patcher, could be an older version I'm using?
it would have nothing to do with the CP version
you're pretty recent according to the format, anyway
they're on 2.5
(or whatever version was pre-tokens)
Yeah, same issue even with deleting and redownloading Content Patcher.
woah, just looked at your log, that is not the only place where modid isn't being parsed
every error in your log is showing {{ModId}} being passed to the game literally in some way or another
which is all the same issue
i'd consider unloading/unbunging the schedule first
should be forced as includes, not loads 
you're loading an awful lot of json files
which is not always a bad thing, but if any of them use tokens in them they wont work
I've removed every instance of {{ModId}}_Hekate from my NPC entries, and it's still trying to load Portraits/{{ModId}}_Hekate for some ungodly reason.
Why not?
because they just wont. thats how Load works
it gets sent directly to the game as normal, non-CP-formatted json
have you tried loading the portraits as {{ModId}}_Hekate ? why do only the portraits use a different format
the game just loads Portraits/mynamehere for whatever npc, so you're still using some Entries: { "mynamehere": {} } -- did you update the file in your Mods folder?
What.
Hekate likes to hide! (I'm formally a Priestess of Hekate, just got officially consecrated in November!) More serious Note: I am happy to help, if I can!
oh i just mean that either you didn't change the tokenised npc name in your entries for Data/Characters, or the changes weren't made in your actual StardewValley/Mods/WTTDR CP folder
I did, but for some reason now that I've refreshed the mod folder now portraits and sprites are loading.
Sometimes I wonder what even is the point of trying {{ModId}} if it doesn't work in certain cases.
it works in every single case that normal tokens work in
you cannot use tokens in CustomLocations and you cannot use tokens in files you add via Load and there is one other niche circumstance i think im forgetting
To be fair, {{ModId}} is still useable in MANY places so long as you are not using a Load action
everywhere else all tokens will work
Can't use them in Tiled either, obviously
So I can't even use it in defining a Target for a Load?
the target is not in the file you are loading
You cannot use it in a file added when creating a target using Action:Load
Would be the more specific limitation
Your Target path is parsed by Content Patcher, so it works just fine.
i cant think of a scenario when you would be using Entries and not be allowed to use tokens
Entries isnt a thing on Loads which is the only place tokens may not work and it'd be inside the FromFile
I can't seem to figure out what's wrong with my NPC. He has a custom house interior, a custom work exterior, and a custom work interior. The work location is accessible by the player so there's a bus in this location the player can use BusLocations to get to with. My NPC has a warp in a to a slightly different spot than the player lands in the map from his house. He should leave his house, walk to the door of his work exterior and enter, stand at the counter until 9, then walk back to his house. This works all the way up until he needs to leave work. When that happens, he heads towards the exit warp, touches it, teleports back a few steps, then freezes in place facing right until his next action (which should take place in his house) where he walks directly through the wall of his work to the right into the abyss. Does anyone know what could be causing this behavior? These warps work for the player fine
and you cant use Entries inside a file you re Loading bc you cant put CP patches in there
Edited for clarity, I am sleepy
I should really go to bed but my brain refuses to shut off enough to sleep LOL
Regardless of where I put {{ModId}} with my NPC json it seemed to break. So what should work and what doesn't?
tokens work in content.json and json files loaded in using Include. Those are the only two places
anything else - files loaded in via Load etc etc will not parse tokens
Also I figured out what caused my cascade of tokens not being recognized the other day. The [CharacterNameNPC] ones. I had ONE stray [CharacterName] without the npc name referenced in it and it broke them all
me when i realized my 1 dynamic token for mothman was mispelled so he had absolutely no dialogue 
I have already turned them all back into static names at this point, but at least going forward I can go back to using them for the unfinished dialogue to not have to remember which version of Alfonso/Alfonzo I used for the character name spelling
Since it worked perfectly fine for me I think it might somehow be an issue with your CP or something but I don't know how. I just know that the exact thing in your mod that didn't work for you did work perfectly when I put it in my game.
open a shop, daily rice crackers for 200g, or close dialogue. does it work? mostly. was it worth it? absolutely not
{
"shop_main": "$q {{ID}}_Shop null#{{i18n:ui.shop.text}}#$r null 0 shop_trade#{{i18n:ui.shop.trade}}#$r null 0 shop_crackers#{{i18n:ui.shop.crackers}}#$r null 0 shop_cancel#{{i18n:ui.menu.cancel}}",
"shop_trade": "$action {{ID}}_DialogueEffects shop",
"shop_crackers": "$query PLAYER_HAS_CONVERSATION_TOPIC Current {{ID}}_Crackers#{{i18n:ui.shop.crackers.fail.daily}}|$q {{ID}}_Shop_Crackers null#{{i18n:ui.shop.crackers.text}}#$r null 0 crackers_yes#{{i18n:ui.shop.crackers.yes}}#$r null 0 crackers_no#{{i18n:ui.shop.crackers.no}}",
"shop_cancel": "$action {{ID}}_DialogueEffects exit",
"crackers_yes": "$query !PLAYER_CURRENT_MONEY Current 200#{{i18n:ui.shop.crackers.fail.money}}|{{i18n:ui.shop.crackers.yes.{{Random: 1, 2, 3, 4, 5}}}}#$action AddMoney -200#$action AddItem {{ID}}_BurntCrackers#$action AddConversationTopic {{ID}}_Crackers 0",
"crackers_no": "{{i18n:ui.shop.crackers.no.1}}"
}
did you know the base game has hotkeys for "yes" = Y and "no" = esc? i didn't. they also don't work when you do this ☀️
I'm getting a question about Android SMAPI useage for 1.6 in the comments section for one of my mods. before I respond, I wanted to double check and make sure. there's no SMAPI for Stardew Valley 1.6 for Android, right?
!androidsmapi
There is an unofficial port of SMAPI for Stardew 1.6 to Android. Please see the wiki instructions for more information.
IMPORTANT: This is a highly experimental build and may be prone to glitches, bugs, or incompatibilities. We are not able to provide support if you run into trouble or compatibility issues; please use the discord linked on the Android SMAPI github.
Do not harass mod authors to make Android specific compatibility patches.
neat. no idea how to make my map mod compatible with that, but that will alter how I respond. thank you!
map? is it just pure CP?
yeah, it's a farm map and only needs CP as a dependency
your farm maps? interesting
then there isn't anything you should or even can do
it should be working out of the box
if it doesn't, then that's not something you should worry about
okay. I'll let them know. thank you!
So, when I'm trying to load my NPCs schedules I'm not getting anything in return when I patch export.
Here's my current content.json: https://smapi.io/json/content-patcher/29acc705366f49ae8a2b1a98200efd86
I'm adding them via EditData right now instead of external file includes/loads but it's just not working for some reason?
you're editing these files, but there's nothing loading a base to work from -- use something like this:```json
{
"LogName": "Character - Blanks",
"Action": "Load",
"Target": "Characters/Dialogue/{{NAME}}, Characters/schedules/{{NAME}}, Strings/schedules/{{NAME}}",
"FromFile": "assets/blank.json"
}
for some blank.json ```json
{}
never noticed before that the spritebatch alpha behaviour on the farmer renderer blends the hat alpha with your head, meaning my incredible egg-like skull shows bright red through the trashcan
Ah, forgot about that. Thanks.
would you consider hotheads/tigerslimes to deal fire/burn damage or just physical
also are bombs meant to be completely useless for violence in the volcano
I did! they also work in a few other contexts even if the answers aren't literal yes/no iirc
no can also be done via E iirc
https://smapi.io/json/content-patcher/a12edf2167604a39882044876111b4ed
Is it not possible to have 2 crafting recipes for an item?
sure ain't
Naurrrr
any reason why the private struct neteventarg type field Damage isn't being set here?```cs
[HarmonyPrefix]
[HarmonyPatch(typeof(GameLocation))]
[HarmonyPatch("performDamagePlayers")]
public static void GameLocation_PerformDamagePlayers_Prefix(ref GameLocation __instance, ref NetEventArg arg)
{
Type type = arg.GetType();
bool isFire = type.GetField("IsBomb").GetValue(arg) is bool isBomb && isBomb;
bool isCrackerDefence = Game1.player.hasBuff(ModEntry.ModData.BuffCrackersDefence);
if (isFire && isCrackerDefence)
{
FieldInfo field = type.GetField("Damage");
int damage = (int)field.GetValue(arg);
field.SetValue(arg, (int)(damage * ModEntry.ModData.BuffCrackersDefenceModifier));
}
}
field.setvalue is called just fine, but the bomb explosion damage value remains the same
the actual type of the neteventarg is private struct DamagePlayersEventArg : NetEventArg
applies (previously 15 damage), but not persistent
is the field public?
i can't find that type on the decompile repo
nvm found it
i think your issue is that it's a struct
and reflection with structs is weird
i've always hated structs, and they hate me back
apparently you need to box it yourself kek
otherwise you're boxing it implicitly by calling SetValue, but then discarding that box
SetValueDirect is also a given answer
but i've never used that
wtf is __makeref
sounds scary
i'll try setvaluedirect since creating a new struct from a private type sounds awful
can't you just... cast?
arg = new .. ?
if (arg is not GameLocation.DamagePlayersEventArg damageEventArg)
return;
damageEventArg.Damage = 1234;
arg = damageEventArg;
ah well the struct type is private see
ahhh
hence all the reflection lol
i have forgotten the times when i actually needed to do reflection
nowadays i mod Cobalt Core, and we've set up our ModBuildConfig equivalent to publicize the game's DLL
so it looks like black magic AND doesn't work?
unfortunately not every stupid idea works
not even ideas proposed with a smarmy know-it-all stackoverflow post 
maybe it just wasn't stupid enough?
Ever heard of SetValueDirect? There's a reason they made it. :) ooooh you thought you knew it all, user541686, if that is your real name
well i'm out of ideas, not even the depths of my stupidity can get an answer
Oh, stackoverflow. never please change
type.getconstructor.invoke.setfield is just another setfield to fail
I did, at some point, know about structs
it has all been erased from my memory and I'd imagine that was in self-defense
my next complaint about Stardew Valley is that DinoMonster.BreathProjectile doesn't extend BasicProjectile and is in fact a completely different INetObject that uses an arbitrary 25 damage in a takedamage call
i just wanted to make a rice cracker, man
-# what rice cracker constitutes a breath projectile...
can't believe a rice cracker needs several transpilers
I have been going crazy trying to figure out why my warp wasnt working
I forgot to capitalize something 
it is now working
@brave fable worst case scenario you can serialize it, edit the binary data, and deserialize back kek
(that's awful, please don't)
I'm getting an error with my temporary schedule dialogues, https://smapi.io/log/9e519c41b69a47b58cf52e50d712911f
It's saying it can't find it, but I am loading it with the rest of the schedule messages.
Of course, here's my current content.json: https://smapi.io/json/content-patcher/c02cdcdefa4a4357a2a864bf69ad56eb
I'm not sure why it's happening when it used to work fine in an older version of the game, unless they've changed something.
I think I found the issue.
pretty simple: The content file was not found ---> Strings\schedules\Hephaestus
you've got these 2 lines in Characters/Schedules/... when they should be in some Strings/Schedules/... patch:```json
"Maintenance1": "{{i18n:NPC.Schedule.Hephaestus.Maintenance1}}",
"Maintenance2": "{{i18n:NPC.Schedule.Hephaestus.Maintenance2}}",
I have cart that has a random chance to spawn in difference spots in the world using content patcher edits. Is there a way to attach a message to this when it happens like "The Bookseller is in town!" message?
i think the only thing that can do that is spacecore 
or your own custom ui thing handwaves c# if you wanted the least invasive way
the rice cracker life cycle is finally done. probably
wait did you just get him to burn the crackers for you........
now i just need someone that can actually cook to give you the non-burnt rice cracker
sadly im not smart enough to come up with ideas like dinosaur cooking
this girl just cant cook for shit
ah okay
burnt rice cracker = fire resistance
rice cracker = fire power
i wonder how cursed that would be with BETAS... a DamageTaken.. patchupdate the object... to now be a Fire Cracker... instead of a Rice Cracker..
Grass Skirt -> no pants
these rice crackers took 2 new trigger actions 2 transpilers 3 prefixes and the most unintelligible dialogue script i've ever seen
augh how is this already 67 files changed since last commit
...weird. It works perfectly for me. Could you by any chance DM me the entire thing so I can try to reproduce this using the complete version?
Ugh timezone such so much, it’s currently 11pm for me and I need to sleep for school tommorow, I will dm you it tommorow.
That's not a problem!
Hello ! I'm creating a new animals mod, does marnie have to sell an animal ? Or can I remove it from her store?
You either need to sell only the egg, or use a framework for custom animal sellers
For the sell only egg case, put -1 for price
Take a look at ostrich in vanilla
or just void chickens lol
In custom farm loader, adding new furniture was done by editing the json, which was easy. In content patcher, it seems the way to add furniture is by editing map properties. Is there an easier way for content patcher?
You can edit properties in Content Patcher
It's still same kind of string Field though
Thank you.
How to add starting farm building with animals, like that of meadowland farm?
Use spacecore
I did a huge rework back in October/November, then I started working on a script to migrate any FF pack from the current version to the reworked version (so that everyone can easily update), then winter holidays hit (I went back home to see friends and family), then I had a bunch of reports to do for classes to complete the semester (I actually still do have some left but I'm mostly done), so I started working on this again last week-end, and I have about 2 weeks to work on it, but I don't know if I'll have enough time to do basic tests and fix bugs so that I can make a preview version (to share here and have some FF pack creators test it) before I go visit Japan with friends and family.
So now, you're all caught-up with my where-about, I'll let you and other FF pack makers know when the preview version is ready so that you can update (and report bugs) before I publish it on Nexus.
GM, is there anyone that could clarify this for me? ty

Once you set up your config options, you need to make separate patches for each option, and use the Condition key and the config token to make it so that patch only applies when the config is that specific option. See [[Modding:Game state queries]] for more info
The more I deal with local tokens the more I wish CP had a ternary
25 if {{hasmod: cornucopia}} else 15
Witnessing nested ternary expressions will make you regret having that wish fulfilled
and just for clarity, use Condition keys in the content json or in the objects json? I currently have my config set up for the changes I need and just not sure if I need to add it like a when statement in them, or as a completely separate section? The further I get into coding this mod, the more I'm realizing its way over my head :/
better yet, do you know of a mod thats doing it similarly that I can take a peek at?
have you ever looked at the code for selecting a label for the npc you’re in a relationship with in the social page? 
I remember a mod that added snow to stuff during the winter, if that's similar enough for you
so. much. ternary.
Note to self: Do not modify the social page
should work, if its on the inventory sprite
I may or may not have already put a transpiler there which is how I know
turns out, ternaries actually make for relatively easy transpiling
but let me find that massive ternary spaghetti for you
https://www.nexusmods.com/stardewvalley/mods/3990 I think this is the one I was remembering, iirc the inventory sprites were affected
thats because bigcraftables use the overworld sprite in the inventory as well
fences use a separate inventory sprite
the concept is not complicated to apply to your inventory sprite but you're looking for a very specific example
hmm, the repo has it expanded into an if statement
but it was definitely one big ternary in my decompile I think
nvm found it 
string text = (housemate ? ((gender == Gender.Female) ? Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_Housemate_Female") : Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_Housemate_Male")) : (isCurrentSpouse ? ((gender == Gender.Female) ? Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_Wife") : Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_Husband")) : (entry.IsMarriedToAnyone() ? ((gender == Gender.Female) ? Game1.content.LoadString("Strings\\UI:SocialPage_Relationship_MarriedToOtherPlayer_FemaleNpc") : Game1.content.LoadString("Strings\\UI:SocialPage_Relationship_MarriedToOtherPlayer_MaleNpc")) : ((!Game1.player.isMarriedOrRoommates() && isDating) ? ((gender == Gender.Female) ? Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_Girlfriend") : Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_Boyfriend")) : ((!entry.IsDivorcedFromCurrentPlayer()) ? ((gender == Gender.Female) ? Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_Single_Female") : Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_Single_Male")) : ((gender == Gender.Female) ? Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_ExWife") : Game1.content.LoadString("Strings\\StringsFromCSFiles:SocialPage_Relationship_ExHusband")))))));
so should I go about it differently?
CP getting a ternary query...
my regretti about this is palpable lol someday I'll be finished this...
basically what I'm trying to say is that. The point is to look at an example and understand why it works the way it does. Then you can adapt it for your own situation.
If you're looking for the exact example to copy it directly, you won't get anywhere unless someone else does it for you
yes, I'm trying to look at them to get an idea of how they work, I'm a big visual learner. If its being given to my through text, I need every little detail explained so I can better understand, and that's just a lot of hassle for everyone involved.
so being directed to the modding pages while useful, kind of just goes over my head -- up until now I've just done simple cp replace base items kinda mods. this is much more complex, and even if some of* sdv modding is on the easier end of coding/modding, I have like no experience
{{ifelse: {{ifelse: {{ifelse: [[ifelse: {{ifelse: . . .
I wonder how far someone could push it
that sounds like you’re issuing a challenge
though it would be nested in the second or third arguments, not the first
It would be too much for this world to bear if all three could be nested
actually… I said it wouldn’t be nested in the first argument but idk if that’s true, you could use nesting as an AND operator 
Well, rn u can do this shit sorta
It's dynamic tokens
But having it would be nice cus otherwise u setup dynamic token to put in a local token...
Exactly!
I think being very aggressive about looking through Nexus for what mods are out there is probably going to be useful for you then because it's basically a whole repository of examples and we definitely can't know all of them so we can't necessarily direct you to a useful one.
(I say this as a person who does exactly what I'm suggesting because I figure if I can find as close an example as possible in an existing mod then I can dissect that to understand what's going on and then expand on it.)
I use the wiki to provide context to what I find in other mods rather than as my starting point.
i personally would suggest a seasonal path with patches that do also apply to the inventory icon, because paths specifically have their own separate inventory icon just like fences do
can be a retexture for vanilla paths
I have a seasonal hedge fence that does seasonal objects so I'll be sifting through that
yeah
though they load individual objects for each season, since thats all they need to do and then editdata /objects and then put in entries?
so maybe I could load in the object png, and use when statements
seems to be what logically would be next if they were using more than just seasons
Do you want your fence item to look different or do you want players to obtain "winter fence"
aiming to have the correct fence object sprite show up in the inventory based on what recolor, and tone they pick in the config, and obviously if they have it set to seasonal. Default fence sprite for non seasonal users would just be the spring asset for whatever recolor or tone
Ok, then yes you are basically correct in the approach, can make it easier with the season token if u want
however in my objects json I have the sprite index specified so I'm not sure how to link them -- in this mod I'm looking at they just have 4 individual object pngs, whereas I have 1 large object png with 48 sprite variations
Is there a good place to learn C# ?
- Load your big object sheet, use spring variant as the sprite index
- EditImage over the spring variant with fromarea toarea, using the same big object sprite sheet
specifically C# for stardew.
Depends if you have previous coding experience
!yellowbook i've heard this is good (and free!)
A good book for learning c# is https://www.robmiles.com/c-yellow-book
lets just say from start
the most important thing to learn is general programming concepts. those translate easily between languages
this is what I love about the programming community tbh
EditImage over the spring variant with fromarea toarea, using the same big object sprite sheet
for each individual using tokens right? like when x or y
I'm currently trying to make two ContentPatcher packs compatible and I'm a bit confused. Diverse Stardew Valley has a dedicated "Sam_Jojamart" texture while Eunoia's Vanilla Sprites only has the main Sam texture. Is DSV adding stuff for mod compat or is that Eunoia's Vanilla Sprites is missing some stuff
Sam's work uniform was added in a recent vanilla update, alongside shane
if you haven't programmed before and want to learn C# for stardew modding in particular, i recommend:
- use that yellow book or a similar source to get yourself off the ground. this will cover stuff like "how do i turn typing into programs" and accomplishing the basic programming tasks
- go here https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started and install the stuff you'll need, and make the basic example mod.
- use the wiki's API guides https://stardewvalleywiki.com/Modding:Modder_Guide/APIs and make all the little tutorial examples to get familiar with how SMAPI works and how to run code with it
after that you will probably have some ideas about how to accomplish whatever goals you have for your mods
So my guess is the other mod is missing those
AH okay I was confused because there are the mopping textures with the uniform just not a whole spritesheet for it. I'll try to just make the textures manually then
Yikes-- this should be fine for now 💀
Use When Season, and 3 separate Editimage for summer fall winter
I can give u an example in like 8hr
okie dokie, makes sense!
would this work so that non seasonal and spring both use the same sprite? my head sees it as "if seasonal is true, then it will use season spring. if false, it will still patch this image", maybe I'm dumb. I can always just make a duplicate of this entry and specify it just for seasonal use
"LogName": "Starblue Light"
"Action": "EditImage",
"Target": "ShilohAreles.CuterPicketFence/objects",
"FromFile": "assets/objects.png",
"FromArea": { "X": 16, "Y": 0, "Width": 16, "Height": 16 },
"ToArea": { "X": 0, "Y": 0, "Width": 16, "Height": 16 },
"When": {
"Tone": "Alt",
"Recolor": "Starblue",
"Seasonal": "True, False",
"Season": "Spring",
}
},```
If the When conditions aren't met then the patch doesn't exist at all
like all of them? so even if it gets to seasonal false, it'll keep going down to check the season condition?
sorry, I may be thinking of this in too much of an "order of operations" kind of view point
Definitely all of them, I don't actually know if it checks beyond the first failure point
Not that it would matter if it does
Any amount of non-matching condition will cause it to not exist
yeah, cause even if it fails season spring that should be fine, I dont want it to display outside of spring if seasonal is true
I'll just see if it works when I get in there and get all the other kinks worked out
if not I'll go back to the drawing board
You can actually make your patches even more efficient by putting your config token values in the asset/folder name. You dont have to make like 4 EditImages for every season
I have that for the other things, but my sprite objects are just sitting in the assets folder
I'm too lazy to split up all 48 variations but then again I'm just doing the work in making 4 variations of the edit images
like all the assets are just in one big png?
the assets for the object sprite yes, the actual fence tilesheets are separate
so I could break each one [sprite] down into the correct config token folder names
I'll think about it while I'm at the gym
i see, i still suggest splitting it up anyways. saves you the headache if you need to do any debugging in the future because your code will be more concise
also, if you need to rename lots of things fast, consider using bulk rename utility if you havent
😯 ?
Bulk Rename Utility: Free File Rename Utility for Windows. Bulk Rename Utility allows you to easily batch rename files and folders based upon many flexible criteria. Free Download.
thanks ovo
we should.. probably have a command for this. too useful of a tool
PowerToys has a lot of useful tools, including a powerful renamer appropriately named PowerRename
I use PowerToys for FancyZones, Always On Top, File Locksmith, PowerRename, among other things
i have this many folders that contain 9 assets on average, thank god for BRU (and aba for introducing me to it)
wouldve lost my mind much earlier if i had to do it manually
Although PowerToys is Windows only (developed by Microsoft) so that's its only limitation
Here's all the stuff it can do
Oh ColorPicker is nice when I want to sample a random color on my screen without having to take a screenshot and open it in my image editor
I use sharex's color picker. The thing I use the most from powertoys is that one that lets you know what program is holding a file open.
Yeah, that one is a huge saver for me all the time. Because Windows constantly and mysteriously locks folders/files for seemingly no reason.
a colour picker would be nice
I don’t need most of the other stuff because linux but a colour picker would be very useful sometimes
Hello everyone, this is my first post here so I apologize for any unintentional breach of any rules!
I started developing a mod to improve the quality of life when playing with gamepads and I'm having a hard time finding some things in the documentation. So if you could answer and attach where this information is in the documentation, it would be simply fantastic.
When opening a menu and using the analog sticks or arrows, the cursor moves exactly one "square" of the inventory. I want to create shortcuts to move to the last squares (Initially using the right analog stick combined with RT/R2, but with the shortcut configurable by the user).
Menus that have more pages, I want to advance the page with the same logic, instead of having to navigate to the visual arrow (like in the fish tab), Initially using the right analog stick combined with LT/L2, but with the shortcut configurable by the user.
What classes, functions, etc., would I need to create these functionalities?
I was able to recognize the user's keys with OnButtonPressed, recognize which Menu the user is in with OnMenuChanged and I was able to move the cursor with "Game1.setMousePosition()".
However, moving the cursor with this function does not do exactly what I would like. The expected result is:
When opening the Inventory, the first square is selected, when using the right analog stick to the right, it should go to square 12, when pressing the left arrow, it should go to square 11, and when pressing the left arrow, it should go to square 10.
The post is a bit long, because I tried to explain it in the best possible way.
^_^ Thanks for the update! I hope you had a nice holiday! and I wish you only the best of luck on your big stuff at school! I'll be patient XD I just got a little worried when I realized I hadn't said hi in a while
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
It's basically different for every menu tbh
The trick to controllers with in game menus is that the clickable things on the screen belongs to menu.allClickableComponents and the menus always knows what component it's currently "stuck to" based on menu.currentlySnappedComponent. So getting it to stick to another component involves updating that value rather than manually changing the mouse position.
Once you reassign the component, you can call menu.snapCursorToCurrentSnappedComponent()
Just saw this, tiakall. Absolutely fine with DMs about the mod -- should probably put that in my bio!
@jaunty sparrow Another thing to consider is that components have neighbors which tells it the id of the component above, below, and to the left/right of it. That's how it determines where to go to based on controller input.
Look at IClickableMenu.moveCursorInDirection(int direction) in the decompiled code for how that works.
@tawny ore Many thanks for all the explanations. I'll try this things that u tell me tonight
Hey lovelies, does anyone know how to spawn actual critters (fireflies, butterflies, etc) during events? I figured out how to add animals like turtles as temporary actors (they have sprite sheets in the Animals directory), but I can't seem to figure out how to access the critters
I really love the crystal butterflies that show up during the winter, and they would be perfect for an event I'm cooking
In an event they can be TAS
Temporary Actor Sprites?
Temporary animate sprite
Iirc the command is named that but im on phone pls check wiki
Found it! Alright, thank you. I'll give it a shot. I was really hung up on the "actor" part and missed that
Anyone know what the path is for the effect when you read a book? 
FYI you can also add "NPCs" as temp actors if you can't pull off a vanilla spritesheet - for example, I have a fluttering paper falling to the floor on one of my events done that way.
So you made a custom spritesheet and loaded it in for that?
Btw, at what point does a mod count as an "Expansion"? Aside from changing all of the vanilla events for Sebastian (and more besides), I have added at least 10 new events for him 
vibes. you can call it a sebastian expansion if you want, there's no rule
I'd consider that an npc expansion
xD Lol
(cf. a bunch of existing "X NPC dialogue/event expansion" mods)
Cool. This became a bigger project than I expected, but I'm glad to be nearing the finish line finally
Just have one large event left to tackle that I've been putting off
i wouldn't call it just a plain expansion, though. colloquially, that word on its own usually means like new areas and new NPCs and items
Got it. But "Older Sebastian expansion" wouldn't be misleading
I'd call it a "dialogue" expansion, except that dialogue is really just the tip of the iceberg
yeah that seems fine. or "Older Sebastian - dialogue and event expansion" or w/e
Sweet, thank you for the advice
any time 
You can also call a menus recieveleftclick directly
is there an easy way to get the error texture?
or do broken things just draw directly from cursors?
Can do itemType?.GetErrorData
itemType is a IItemDataDefinition
looks like index 0 of cursors
Oh there's also GetErrorTexture
I wonder if anyone tried to define a whole new item data definition yet 
It seems like a thing u can do, for whatever strange purpose desired
The error texture is the cursors texture; if you also want the rectangle then it's best to do ItemRegistry.GetDataOrErrorItem with a bogus ID (that's what I do).
Or just hardcode the coordinates, I guess.
hold on, @lucid iron I now see that the code you gave me utilizes something from C# 12, how come?
I'm not doing item stuff so it's probably okay to just hardcode it based on the default implementation of GetErrorData
language version is different from paltform version, you can use up to c# 13 on .net 6 IIRC
just add <LangVersion>Latest</LangVersion> to your csproj
that, yeah
weird, I looked it up and it says .NET 6 supports up to C# 10
unless I don't understand something
that's the default version, but not the maximum version
huh
there are probably some things in v13 that aren't supported on .net 6 but I have yet to run into any issues
now time to learn wth primary constructors are
actually you're right, the docs say 12+ isn't supported on .net 6 
still, I haven't had any issues so far
it's just doing it like
public class MyThing(string value, int number) {
public string Value = value;
public int Number = number;
}
``` instead of ```cs
public class MyThing {
public string Value;
public int Number;
public MyThing(string value, int number) {
Value = value;
Number = number;
}
}
mostly useful with record classes, because then you can just do this
public record class MyData(string Value, int Number);
``` and it will auto-generate all the properties for you
can't be used for stardew data models though because because records are read-only
Interesting naming conventions
It's better than the constant "Better X" I see all the time
"Better X" always meaning "a mod that vaguely changes X"
This is true. I'm resisting the urge to give the mod a "cute" name, because I find that I can find mods more easily when they are exactly what it says on the tin
I think if your name makes it clear what you do and doesn't make it sound like you have feature creeping or too much monolithing it's good
Monolithing?
Yeah like uh
Yeah, I run latest too
When mods do a BUNCH of stuff to the point that you're like "what does this have to do with the name"
Was on preview for a while
Ahhh, ok
The biggest monolith mod that I know of is OptiFine, as an example
The Minecraft mod? I thought it was mostly for optimizing things. Has it just become a many-tentacled beast?
It also has SO MANY resource pack changes and render changes
(And it's also completely closed source so compatibility is Hell but that's a separate thing)
Speaking of open source, do people just add a license file to their mods on Nexus?
this is how i feel about personcores. i would rather have more, smaller mods that have fewer jobs. (digressing now before we retread this topic)
Same
I use primary ctors, file namespaces and collection initializers extensively and have never run into an issue.
(fyi on the C# 13 thing)
i am also not a fan of "Better X", but i am especially not a fan of "Yet Another X". sorry, everyone, it isn't cute
clearly, what you need at that point is "yet another better x redux" 
Damn, there goes my Yet Another Yet Another mod
anyway, having dropped some takes in the chat, i will now leave for several hours. surely nothing will come of this,
famous last words
I have a soft spot for the “yet another”s just because it makes me think of linux stuff
I have multiple “yet another” packages installed on my laptop unrelated to stardew
If Stardew had a Nintendo like game system, what would it be called? Like what is the system that Abigail has?
I see "yet another" as one step over "redux"
Just means a third author had thr same idea
I thought there was one? that abigail had? can’t remember though
"yet another x extended redux 2: electric boogalo"
yet another Nintendo system
i don't think it has a canon name. probably is based on nintedo
Since Joja makes literally everything in the Valley that isn't either organically grown or magic, I'm going to go with JojaStation
redux is okay if it means “while I was updating this other person’s mod for 1.6 I also added features”. If your mod isn’t actually connected to anything then it’s a weird choice and you should name things better
Looks Like a Super Nintendo
Does Shane's system mention a name? I know it had one for the cheating device
Jotendo
I just can't go with Joja themed though
Suit yourself, but lore is lore
I like the names of type <original name> - <2 or 3 summary words> the most
the console is called Steve, clearly 
source: trust me bro
(I have seen a few aedenthorn reduxes that I think were correct to use the redux naming scheme, since it includes the name of the original mod they were updating but also shows it’s been expanded. Light Mod Redux is a recent one, though I haven’t tried the original nor the redux)
Yeah, it is...
“More _” is also another one that’s becoming oversaturated
i'mm uh updating Pride Pastries and honestly the way i'm going it won't be a redux it'll just be a 1.6 port
no new feature, barely can handle the existing ones
i dun think i understand that one
You heard of More Fish are u ready for Less Fish
This is also my preference
Mod that only has sardines
chu what are you doing to those fish-
I like that!
I like it a lot, actually. Gives a very good first impression
yeah and it contains the marriage keyword
More Fertilizers is accurate
I think I will end up going with "Older Sebastian - NPC Expansion"
yes but it's less ✨ exciting ✨
I think of it as same idea new implementation
Yet another better more fish redux
Mod Name Remastered
This is ok if it's actually a remastering of an existing mod, though
3x more fishy
they're 100% fishy theyr'e fish?!?!
now they are 300% fishy
most aedenthorn updates didn’t do a full reimplementation though, and especially the specific mechanics are usually still going to be the same as the old mod, so imo it’s valid but idk haha, I haven’t proven to be very creative with names
sounds reality shattering, give me 100
Mod Name Remastered Redux
I have a mod for renaming your pet called Pet Renamer, a mod for changing the radius of lights called Light Radius Mod, and a mod for putting markers for events on the map called Map Event Markers… don’t take naming advice from me 
xD
They're not the same words. They are distinctly different
Spelled differently and everything
i mean tbh my latest mod is "Dynamic Golem Rename" so
Aedenthorn still has a ton of mods that have not been updated/redone. I wish there was an easy way to find them other then searching each mod name individually.
expansion doesn't really seem to fit, how about NPC Enhancement instead?
actually nah i can't complain about names
I'm adding 10+ events
aedenthorn has released over 600 mods and they’re all for stardew.
Not just dialogue and schedule changes
oh okay then
we are never porting all of their mods 
yeah,my horse mod I am working on is called Advanced Horses in my files, so I am not a good name giver at all
Horses But More of them
I know, that why I wish there was a central "remake" place to see what has been updated by people.
fwiw, "mod called what it does" makes it easier to search for
That would be the multiple horses mod
although <NPC Expansion> implies that there are new NPC's added, maybe NPC Expanded or something
could always go with <funky name> (<what mod actually does>)
any that are c# may have updates listed on smapi.io (though not all updaters will have added their unofficial update there, since you have to do it manually for things like this iirc)
yeah, that's what I said
oh shi
sorry
I just name my mod after what they do. But my mods are all simple so that it's the easiest way to explain them
lights, camera, action (Light Radius Mod)
Convention I've seen (and used) is 'expansion' = multiple npcs, items, maps etc, while 'npc expansion' is npc specific
also, speaking of aedenthorn… did you know they got a lot of their ideas in the mod ideas repo?
which is now up to date with tagging so you too can find fun new things to implement (no, seriously, there are some gems in there)
!modideas
If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas
However, this does not mean anyone is guaranteed to work on your idea—modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.
maybe you're right
NPC expansion and expansion are two seperate things, yeah
Maybe call it a personality mod, if it is changing all the dialoge and scheduling
maybe Personality Expansion instead of NPC
Overhaul might be the word
having looked through pretty much this entire repo with tia, I can tell you there are some ideas there from 2017 that I was shocked nobody has done yet and that are really not very difficult, for literally every type of modding (content patcher, smapi, what have you)
if you're uh, changing things
anyway that’s my promo done
I like the word "Expanded"!

I am trying to learn c#, just stared today with intro video on YouTube. CP modding is easier 😭
'Immersive' might be another but there's already an immersive seb iirc
(oh and don’t forget to leave a comment with a link to your mod if you finish any of them!)
I actually like the sound of : Older Sebastian - Personality Expansion/ed
I don't monitor for new unofficial but you can always tell me about them
And I can put them in
I think having the word 'expansion' in there will help, that's what most npc expansions have so it makes it easier for people to search for them
Atra you know about mouhraha's repo right?
there’s one person who’s made a bunch but they’re only on github— ty tia haha
gotta make searching as less of a hassle as possible
At least that's been my experience, and I've made 3 so far lol
is mouraha here? I swear I saw them the other day
I agree
Eh, and I generally don't like it when an unofficial is just "the absolute minimum I had to do to get the mod to compile again"
Like. By that metric, my mods work on 1.6
yeah, putting a mod back on life support is a bit eh
But I don't feel like I've done enough testing
but if you’re willing to fully support it but just don’t have any ideas for ways to change it, I’m relatively okay with it if the perms allow
Yup! But I'm lazy and will add data when directly prompted and not before
if u wanted wide seb just look at his beach portrait
I mean that's basically how stuff like BFAV and TMXL limped along through 1.5 
sorry atra i did in fact just do the minimum required to get ur ring mod to work in 1.6 
Remind me in 4 hours to give Atra a list of mouhraha mods
But of course, dear tiakall (#6512302) (4h | <t:1738711673>)
Originally i wanted to make combine trinkets based on that code but I did something else in the end
wow maru's bot being nice to tia?
As it should 
tia is her favorite I guess
perhaps it's in a good mood
Have you guys been bribing it with strawberries?
isn't that hacking
question about content patcher conditions: I know how to specify "only spring 16", and "not spring", and "not 16", but how do I specify "not spring 16"
Yes
Kantrip, re: names, you might want to call it a dialogue and event expansion? I think that's what people usually search for.
Dialogue and Event Expansion Pack - DEEP Sebastion
Does mean that it would be a longer name. "Older Sebastian - NPC Dialogue and Event Expansion" is a little harder to say than "Older Sebastian - NPC Expansion". The mod also touches Schedules
But I don't do custom art for it, so maybe that would be enough
I think it's fine to have a subtitle thats only on nexus page
And use merely Older Sebastian for the manifest
Sure... that makes sense
@half ether hi
just wanted to let you know someone stole one of your aedenthorn updates and uploaded it to nexus as the optional file of a save file. They changed the manifest to remove your name (but left it so it said x.x.x-official 💀) but I decompiled and compared against yours and it’s definitely your one. I reported it to nexus but it’s still up, I won’t send the link here but can send it to you via DM, I think you’d have to report it yourself for them to take it down.
well I dunno, my manifest name is still : <your project name> that seems sufficient
when condition can hold more than one value. i think that's what u mean? uh. example from docs
"Action": "EditImage",
"Target": "Buildings/houses",
"FromFile": "assets/{{season}}_house.png",
"When": {
"Season": "spring, summer",
"Year": "1"
}
}```
(And I hate that because I think it takes the air away from new modders who can do more active maintenance)
I have Opinions
idek why people upload save files to nexus for stardew… like what’s the point. I wonder if it was just a way to hide the fact they’re reuploading that mod.
might be
I mean it didn't stop Trent from working on FAVR (unfortunately 1.6 did).
also getting in the way of progress, they’re struggling for a reason, either let them go and make space for new frameworks or find a solution and make them usable again… don’t just leave them on permanent life support
mouahrara’s aedenthorn unofficial updates repo:
Yup
it's not uncommon for other games on nexus. usually it's either an edited save file, or a save with some specific setup. (IE. fully completed save for sandbox play, or challenge setups)
I still have my pre alpha/beta copy of FAVR and all the animal I converted for testing.
A lot of my mods work fine in 1.6. It's me that is the problem, and thus my decision was to take a step back
Reduce the load to what I could support
Are there any struggling in 1.6 frameworks tho
yeah, that’s why I said in stardew haha. It makes more sense in other games but I think with all out cheat mods it’s not really necessary for us
(what's a FAVR)
Half of em either became vanilla or have og author still maintaining (ty digus)
(Planned BFAV replacement)
people still upload xnb mods, so I think it's just because people prefer to do things the bad way if it's what they know already
mouahrara’s repo is gpl-3 I just realised but the mod is being distributed with the credit removed and no license so it doesn’t count anyway
The main frameworks are all supported or legacy/also doable in CP.
(me using depreciated event preconditions
)
I guess cp anim is bit of a struggler since casey wanted people to just spacecore for a while
not to be a pedant but it's deprecated not depreciated
There's a bunch of niche frameworks limping along, but part of that is because they're niche
Blame my phone for that one 
I saw an xnb mod just the other day. I was surprised with how easy CP is to do.
still can't believe roku gave people wanting to exclude recipes from perfection a framework. niche frameworks my beloved
The particular thing i have in mind is like
- add something game can't do
- only has unofficial update in 1.6 rn
EBAGI counts i guess?
But yeah, I don't know anyone that's feeling held back by the unofficial update for Farm Cave Framework, for example. If anyone's interested in that they're just gonna make it
yeah, but you can mod lots of games with xnbs, so if your only experience is modding other games, and json seems scary and new, you're just gonna fire up xnbcli or whatever and use the tools you already know
STF is still used. As is PFM but both can be completely done in CP now.
I don't know how I'd redo EBAGI in a content patchery way hm
why is EBAGI still a thing?
Multiple Spouse Dialogs is only unofficial. Like I said, niche 
Well there's stuff u cant do without EBAGI
doesn't the game just, do that now
ah. guessing u can't do that with CP?
Like on the beehive?
like the complete bubble
oh, like inside the cell
Im personally fine with the color mask thing vanilla has
There are still mods I like that use PFM, but I converted them for my person use. I hate having pointless frameworks installed.
And someone fixed honey bolb
honey bolb?
old habits die hard i guess
Honey didn't have color sprite
ah
Very happy this exists 
I'm still kind of astounded it crossed the 100 content pack threshold (and is still there).
That is the only part of EBAGI that I want. So I have not installed it for just one feature.
Oh missed that sorry
animal vendor?
I understand that bfav used to have it
ebagi? 
Like an animal vendor besides marnie, i.e. what livestock bazaar is
singular bump in case someone can help with this, thank you in advance
that is a very specific framework and I respect that
It's an unofficial of BAGI
you can combine conditions by separating them with commas, can’t you
to be fair back in 1.5 wine and juice didn't have custom colors
(for AND, for OR there’s an operator)
i did reply to this #making-mods-general message
so not spring, not 16
but I want spring 17 to be fine as well as fall 16
oh it’s for When not for Condition. regardless, similar principle
yeah, that’s what they’re showing you.
they’re showing you how to put the conditions together yourself.
Did it? I don't remember that. I think it was planned for FAVR.
when condition will check if both are correct and only apply if they are
Maybe, i wasn't here for either 
but doesn't the ! to reverse it apply to the conditions individually, and not combined?
I want Other shops to be updated to Stardew UI and have similar options to the Livestock Bazaar Shop menu
Livestock bazaar is great.
Like it is getting hard to shop at Pierre's with over 400 mods
2026 mod trust
there’s an OR operator for the when conditions, right?

are you using When or Condition sdvhead?
Yeah there is with query
!(16 and spring) = !16 or !spring
do with that what you will sdvhead, I can’t remember the syntax rn lmao
Being able to select animal alternative is great.. i converted all my cow mods to be under one cow icon, same with chickens and such.
(can you even use ! with When uhhh)
if you can’t, I don’t see a reason why you can’t switch from When to Condition?
There are mods that add categories to the shops
but they aren't fancy like Livestock Bazaar
this is why my crimes are in c#
yeah i think it's different uhh
True
god i know it's possible to check with when if something isn't true but i forgor
It's usually like
"token |contains=whatever": false
If u originally had "token": "whatever"
so would it be
"day|contains=16": false 
queries have a NOT operator
oh
hiya i have a question Willy's sprite goes down 64 pixels and stays 16 across rather then 32 x 16 It just lists the "frames" in animation as "16/16 17 18 19/16", which should only be his body, not the rod extending down another 32 pixels so i wanted to know the logic behind that if anyone knows
so your solution is {{Query: NOT spring OR NOT 16}} but fix the spring and 16 obviously
wondering because i need a fishing sprite for my custom npc and was wondering how to do the longer version.
or there might be a way to check for an exact date, I didn’t check if this is an x-y problem situation
anyone join the nexus mods web UI beta and is it worth?
I was reading through the east scarp discord and someone asked if there are mods with ancient Greek designs. That would be a cool mod. I want a Greek farm house. (Or Roman)
Airyn's got an obelisk mod
But it's not like, greek greek
No Markdown = no thanks
I tried it. it lets you change back if you want.
it's mostly cosmetic. the main differences are on the main page, where there's 1 fewer trending mod featured, and there's a little thing for collections now
More the kind of things modern ppl make inspired by greek
oh ok if i can change back maybe i'll give it a shot
Idk if i am express this correctly
literally all mod authors want
personally I think the main page is too big on desktop, which makes it feel cramped, but it's worth trying
ok, so maybe the consoles are literally a Nintendo, because Shane has a Sega
(we ask for Markdown or a BBcode implementation that's newer than 2006, and they give us... box shadows. I'm just kidding, Nexus people, never stop being you.)
What r some features of new bbcode


