#making-mods-general
1 messages Β· Page 311 of 1
Oh that's good. It is the only way because they refuse to get the bus there haha. I was concerned I needed to make them walk to the warp tile manually
Aaaa she doesn't seem to be using the warp. She enters the bus stop and just stays still:c
Is there another way of getting the npc from the farmhouse to my custom location? It's accessible via bus only
It's a marriage schedule
Ok, so the wiki says "If omitted, defaults to the previous map, or if it's the first, it defaults to the bus stop". Mine is the first, so it's treating it as though i haven't given a location to go to. Hmm, this is stumping me.
you could add an NPC-only warp from BusStop to your new location as a quick fix
or alternatively from BusStop to a new location with NPC warps to each of your locations as a warp-room
That's what I've done. I have patched the bus stop to contain an NPCWarp, but my NPC isn't using it
Will it even work that I've put the NPCWarp in the patch?
if you added it correctly, it should
not my wheelhouse though
The pink tile (just for clarity) is the warp. I've listed it as 0,1. Should it be relative to the bus stop's coords instead rather than the tiny patch?
in what way 'listed as'?
just its position in the TMX patch file, or is it written elsewhere in a content file as 0 1?
I mean in the NPCWarp property within the map. The warp is 0,1, and I'm now thinking it should be 20,6. So instead of separating the patch from the bus stop
properties are transferred from the tile in the patch file to the tile in the location map as-is, so an NPCWarp property will be correctly applied to the tile you expect in the final map
not sure how better to explain it
When the patch is actually applied, it will be a part of the bus stop, rather than on it's own
You're applying the new map property or edited map property through code, not in the TMX that's being patched in, correct?
Map patches don't respect new map properties typically
NPCWarp is a tile property, isn't it?
I'm applying the NPCWarp map property in Tiled
ah.
NPCWarp are map properties, so they'd need to be added to the map you are patching over, you can't set them in Tiled and expect them to be used unless it's a completely new map.
what i said only applies to tile properties
Ahhh okee
I have an IClickableMenu. There I have a textbox listening to user input. However button T still triggers the chatbox open. How can I disable that?
Thankfully, Content Patcher has now added the very useful AddNpcWarps map property for use in CP code as of 2.6.0
in order to get the same effect, you want to use the final map coordinates in your NPCWarp map property, and use TextOperation Append to add it to any possible existing NPCWarp map property rather than simply resetting it with your own value
oh bless
Ok so I'm patching the bus stop. The tiny patch map has the NPCWarp included. I was trying to avoid patching the entire bus stop for obvious compat reasons haha
Yep, you can use an EditMap / Map Properties patch in your Content Patcher code with AddNpcWarps and it won't erase the existing NPC Warps
in which case, you should remove the map properties from your patch file, and use CP to add the properties manually
It will automatically just append your new one to the Bus Stop map properties, as long as your Target is Maps/BusStop
Oh so I can do it all within CP, that's great. So I need to EditData the bus stop and my patch isn't needed?
if your patch file is exclusively used to add the NPCWarp, then yes, you can discard it and instead use AddNpcWarps from CP
ping me for this but what should i use when it is not a locked door but players still must click on it to enter the location? Im a bit confused
so if you follow the link I gave you, they have a code example of AddWarps, AddNpcWarps will behave exactly the same but with NpcWarps instead of Warps
Ok, will give that a go. Thank you both 
You're likely looking for the Action Warp <int x> <int y> <str area> tile property, which gets added as a TileData object attached to a tile on the Buildings layer of your map
Awesome, thank you!
Yay it works, so happy right now 
I need to send a mail the first day of each season but unsure how to detect that trigger
should I send a letter to the player based on the
helper.Events.GameLoop.DayEnding or helper.Events.GameLoop.DayStarting ?
or completly something else
From what I've heard for CP mail, day start is the better choice in that case
also consider doing it in CP
in C# you can just call the addmail directly
its fine to not participate in the trigger actions unless you want to
content patcher?
Yup
well I just dont know how to check when to send it otherwise
but yeah also doing it in C# is fine
if you dont already have a CP component
id prefer to do everything in C#
unless it will get too complicated
theoretically I would need 3 mail structurs,:
one announcing a quest was added (like QI quests ingame)
one containing the prize of the quest
one explaining the punishment for failing the quest
just gotta understand how the whole mail system works
i personally recommend using CP whenever possible for compatibility, future-proofing, and extra lovelies like tokenisation and simple conditions; as well as just for separating custom behaviours from content and asset handling
generally also more readable and maintainable
mhh alr ill check how it works
the "extra lovelies" are the real case for CP in my book. i started out doing everything via C# but found myself reimplementing a bunch of CP's features, and poorly
it's also very simple to include your CP file structure within your VS solution so you can navigate your assets and data easily in your usual workspace
I tought CP was mostly for visuals so didnt look into it ahah
thusly
CP is for content. any content at all. i load all my constant values and unique data models through json files via CP for all my C# mods
what is the difference/advantage?
(im just trying to understand)
I do have quite many constant values that I store in JSONs but I load them directly in c#
You can also use a LockedDoorWarp with open time 600 and close time 2600 if you still want the door noise but no actual locking :)
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md
extremely powerful text replacement system built into CP for use in most of your content files. you could implement this yourself, but why should you
means it's extremely simple to edit your values separately from your behaviours, and lets other mods edit them if they choose. also means you can conilditionally change your values and data in response to any and all tokenised conditions at any rate you choose in gameplay. extremely useful
we're using the word extreme a lot here but it's for good reason i assure u
yeah its that I dont believe you its just another step to learn
but ill try it, why not
I better find out early than later when im more down the line
The "lets other mods edit" is the only part that matters, since you probably don't need any of that other stuff.
(right up until you do)
well theres a lot of stuff in there that look s interesting, like just the line "You can also make very dynamic changes to the game. For example, raise the price of coffee on winter weekend evenings when it's snowing unless the player married Abigail." since stuff like ths would be very helpful for my punishment system
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md#get-started the manifest and content.json are to be added in the new CP folder or in my own mod?
technically you can do all that in a c# asset editor callback manually, but it won't be nearly as readable or editable
you want a new CP folder that's essentially a separate mod which loads and edits to asset targets you may or may not also reference from your C# mod
you can wrap these both in a superfolder for your convenience
mhh so like, theoretycall I could create a custom data that sets every item in pierre shop to 999mln $ and trigger it if you fail a quest
alr tomorrow ill dive into this thanks for recommending it π
ah well that sounds like loops to me, which CP absolutely doesn't do lol
you could just wipe his shop data though with cp for the same effect, but unfortunately less insulting
(If you already have a C# mod, you can have the content pack as a subfolder in Visual Studio and let the mod build package automatically deploy + zip them as one superfolder. See the bundled content pack docs, and the Central Station code as an example.)
cant I turn on/off something like this containing all pierre's items?
maybe i havent understood correctly how it works (I barely understand Json)
Well, you can set the Shop Data to have a Price Modifier that uses Set Price
(I did this for my test mod with Leah selling all the spouse portraits because I didn't want to manually set prices for SVE/RSV/etc. portraits)
trough CP?
alr tomorrow ill check everything I can
Let me double check if that's on the shop or Items level
Yep, looks like you can set it on the shop level
Mhh interesting
I wonder if CP could help me organise all the challenge templates I have too
hmm How do I make an outfit/portrait only happen while at the flower dance? I know I can use the appearance system and I can set that up, but I only want the out fit to happen while he's there at the dance instead of that entire day (I'm uusing the DayEvent GSQ currently)
Challenge templates?
IS_EVENT
Thanks Selph!
Ye my mod basically revolves around random monthly challenges/quests, giving rewards on completion and punishments on fail
Challenges would vary on very different kind of themes, from grow X crop to idk obtain y item to do Z thing etc
There would also be yearly quests, same principle but way harder to complete
Templates are a list of JSON containing ID, Name, description, tags (used to filter what type of completion a quest requires, wether harvesting a crop, catching a fish, completing CC, etc)
Pierre's shop actually already has a PriceModifiers value set by default, in case you were curious! "PriceModifiers": [ { "Id": "DefaultMarkup", "Condition": null, "Modification": "Multiply", "Amount": 2.0, "RandomAmount": null }
on the shop level
Is this in the base game or cp?
Oh yeah I gotta look into that
That sounds really cool! :D
So, your mod could either alter that DefaultMarkup modifier to use "Set" as the Modification and your amount to be whatever you wanted, or you could create an additional PriceModifier and use a Condition to activate it.
(if you do the second option, you may want to change the related ModifierMode to not be Stack anymore though, unless you want the shop set to your amount and THEN doubled.)
I'm trying to add some way to give challenge to player and at the same time "force" new kind of playstiles
I've played this game for so long but there's things I never did, and the "punishments" should help incentivise the player to go that way
Rewards too
not doing a quest and then the price of everything in a shop doubles is .. scary I like it
Ye punishments will be very harsh
Ugh another one would be that whenever you move, you're slowwalking
No idea how to implement this tbh
But it's not the time for that
I have to first make the proper assigning quest mechanics haha
This one might actually use C# ... that or some sort of SpaceCore wizardry
slowwalking could just be a speed "buff" with a lower/negative value, probably.
I might be wrong but I'd prefer to use c# and avoid other mods unless the advantages are very big
yeah that's why i mentioned spacecore, cause you could apply the buff with that value, though im not sure about the length of time thing
Tbh I can't wait to get to the point where I'm designing the "buffs, I have a very long list of many "fun" punishments
If you have to make something to do it you'll want to use a framework mod I will say, just to make sure you don't accidentally create some sort of incompatibility by making something yourself again
Im not sure if that made sense im a bit sleepy lol
Theoretically all punishments stack until u complete a quest
(If possible I'll make a difficulty config where you can switch this idk)
I was trying to make a framework mod at first but... Being my first mod, idk, I'm already learning bot c# and SMAPI at the same time
Wait U mean an external framework or one made by me
as a bonus, most (if not all?) Condition fields take GSQ, and there's the PLAYER_HAS_BUFF <player> <id>+ Game State Query that could be used if you apply a debuff to a player to make things trigger
So you could definitely escalate the punishments that way
Ye I'd like to add some debuff status icon for each of the punishments
But this would be like the end of the line
I first have to make the mail system, the quest system, and than start working on punishments
I meant finding an external one that already exists instead of making another one for the same thing - it's better for compatibility
Anyone recall the github link that contains a list of mod requests?
!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.
Thanks
Hmm... what's the proper setup for a minor NPC that I want to be able to speak but not have any of the functions like gifting and whatnot? I assume CanSocialize will completely disable any interaction so I'll have to set that to true and then set every other function to false?
you want CanSocialize to false
you can still talk to them
like birthdays, gift giving, friendship, and an entry in the social tab
those are disabled
Oh, really? I assumed "social features" referred even to speaking but okay, thank you
just realized that the game applies transparency to objects being placed by setting the draw color to color = Color.White * alpha instead of color.A = alpha, which seems more intuitive to me
you can look at the unpacked game itself for examples
Mhh yeah i Just gotta find one that does what I need
How do I know where to look up for something specific in the games source code?
I cant come here to ask for a specific function every time
Like, in this case I need to understand how to send a letter containing a forced quest (that triggers as you open the letter)
What would you your process of finding how to do rhis
Or in other words, what is your workflow/mind/toughs/process when looking for something int he unpacked code that you don't know,
a good starting point is https://stardewvalleywiki.com/Modding:Index
then I look for references of the assets used in the source
in this case, there's a AddMail trigger action, so I look for what the game does when it triggers it
Thanks!
Idk why I forgot to scroll past the "make mods with c#"
And didn't see the whole list containing examples and explanations of so many things
if you find the method of doing this in game data (i.e. via CP), usually a string command, you can often just search for that string in the decompiled solution to find the implementation.
Hey, would this be the right place if I would like to find someone to commission a mod for me? Yes, I would put up real world money if someone would create a mod for me implementing custom pathways in the game that illuminate at night.
!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
Thanks!!!
I wish I understood how to use dynamic tokens when making all of my dumb dialogue patches... its far too late to go through and change them all now (mostly because of how I did them) ... im glad I understand how to use them now though
dynamic tokens <33
Are there like... official Junimo colors for the ones in game? π Cause I see the sprites are colorless
working on a content patch to patch a different content patch with different images, the original content patch uses the Load Action to replace the vanilla assets with it's own, so i am wondering do i point the Target of my patch at the same vanilla target or do i have to do something else? (i have made sure that my patch loads after the original patch using dependencies in the manifest.json)
You target the same asset (if those are the ones you want to edit), but you need to use EditImage, not Load
Unless the original mod doesn't use Exclusive priority, you have to use EditImage like Nomori said. Loads are exclusive by default so if there isn't a Priority field in the original mod patch you can tell it is Exclusive.
the original mod does not include a priority field
Then EditImage is what you are after
alright thanks!
How to make a mod? I have some ideas that I want to implement
!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.
thanks, fixed
Is there any doc or tutorial on how to format a data model to be passed as the Type in Load<Type> (the ExampleModel in this part of the doc https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Content#Let_other_mods_edit_your_internal_assets)
I tried making a basic class with property names matching the fields in my json but it doesn't seem to work (the instances returned by Load keep the default values I set in the class definition).
Hello lovely people - a quick question re : farm maps
I made an edited farm map for my own use (I'm eventually going to upload it as a modular farm with multiple linked areas but it's not done yet)
It works perfectly in gameplay, but it breaks the intro cutscene for some reason I can't figure out
When Robin and Lewis should meet me on the farm it just loads without the characters in the map and gets stuck until I hit skip
Like this
problem fixed for now: my dumbass wrote private set; on all fields, didn't think about the fact that SMAPI would have to set them...
Any idea why? It's an edit based on the original farm map so I can't see any reason for it
I'm just guessing at possible issues, but is this a replacer farm map or a new one?
I can upload the tmx if that helps?
New map, set as a custom farm type with CP
It was originally a standard farm replacer but I changed it to be a new farm type
Did it cause the intro problem when it was a replacer?
Did you resize the map and expand it up or to the left?
Nope
Same size as the standard farm map, just a different layout
The farmhouse is in a different place, which might be the cause, but I was sure that issue was fixed in 1.6
as I've seen other custom farms with moved farmhouses
Unless it's because it's too close to the map exit maybe? I moved it right basically.
It's not a huge issue, but it is annoying.
Yeah it should be okay to move the farmhouse, but maybe it is too close to the edge of the map. Maybe try making a backup of your map and then moving the farmhouse back?
Also maybe check if those custom farms edit the intro event in any way?
I'm just guessing here
Yeah they don't - the logic for the intro was fixed to allow for modded farmhouse locations in the big modding changes with 1.6
But I'm at a loss as to why mine specifically doesn't work
I've just moved it back 5 tiles to see what happens
yep, that works
So it's a location issue that is probably hardcoded. How annoying
I guess I can try including an edited start event
I haven't changed events before so I'll have to look into that
Ah no it doesn't work on at least some other people's either
I think I need to talk to a more experienced farm map editor π
I'll have a look at DaisyNiko's and see how she's done it
Yeah there's an CP event edit in there. I'll have to figure that out
Thanks for the pointers π
No worries. Happy to help if you run into issues with the event editing.
Do Junimos normally (as in in modded events and stuff) use breather effect..? 
I'm not sure if I like it π
It looks like they are breathing through the top of their heads... which I don't know if I just never noticed, but it feels weird 
huh...?
thats an interesting choice I see the vision
but idk if i like the vision
It's just how it lines up with normal characters breathing rectangle, It's most likely not intended as Junimos aren't NPCs normally
I think idle animations add a lot but I just dot know if i like the idea of head breathing is what I mean
Yeah, disabled it is then 
I just have until friday then I can just sit down and make mods all day
a pain in the....
I have never wanted to edit events and this is why
ahhh yes I see I am working on a reworked seb mod and its the terrible to figure out
Sadly it's necessary to make the farm intro event work on my map
unfortunate
ugggggggh this is gonna take me longer than making the map did π
oh this sounds fun though
I just wanted a aged up pretty normal seb its deffo inspired by Kantrips older seb but I took a less tragic route
idk how else to put it lmfao I just wanted a nerdy seb thats like mid 20s early 30s
thats prob gonna end up being my project
I might just age everyone up and add a bit more depth
but first Sebastian
agreed and I hope to fix that but I am about to graduate college so once thats done I can just get these mods done
I plan to do some tweaks to shane next as well
Well definitely sounds like the kind of mod I would use π
Are you making sprite / portrait edits or just doing the events and storylines?
just events ik people have sprites they like to use
yeah
im also working out custom music but it turns out i can only make weird industrial stuff
so its not working well for me
Awesome! I will keep an eye out for your mod(s) - what's your nexus page?
MushroomMystic
I havent published yet but Im hoping to end of this month
he doesnt really act like it in my opinion
No he doesn't but my impression it's because he's too busy being sulky than because he's actually younger lol
I definitely see him as a brooding teenager 
Doesn't he have an IT job?
yes
So he's got to at least finished university
Honestly? I'm starting to believe getting and IT job is easier when you're self taught and motivated than after 5 years of uni...
Not necessarily
It's a lot ββeasierββ to get a tech job in you have a degree
But it isn't necessarily needed, and many great people (ie Pathos) don't have a degree
(My personal take is that Sebastian is self taught.)
thats what I thought
Now that I have read his vanilla dialogue, he says he doesn't even have a job
he says he freelances in two heart event?
It does? He has this entire heart event where he's working and tired of getting disturbed?
He's between jobs when the dialogue comes up 
Or, maybe, more like he doesn't have a current client
Apparently dateables are mostly 19 - 22
No idea what he freelances in
one of my friends says I need to make it so the farmer has a casual math PhD (idk how i would do this and idk if he gets the game)
I guess Harvey is older, what with being a fully qualified doctor
Harvey is at least 30 though
I should be evil and make people lose ALL friendship with seb if they cant derive a dual lagrangian
Elliot also doesn't really feel that young
he feels 25-27 but not 30
Yeah, the guys seem older in general
he screams hockey player to me
Then there's Abby... who feels way too young most of the time
Oh boy am I fed up of trying to get the intro event working on my farm map already
I'm gonna leave it broken until I actually get around to publishing the finished version with all the modular locations
you dont know how jelly I am of u rn
even tho its broken
I dont wanna do real analysis
That's be awesome! But feels like treading a thin line between making them feel older and making them feel like a different character π
Also, aside. I'm surprised y'all call general programming IT
I dont want to at all
IT to me means fixing computers
I think It will be fine, I do a lot of revisions and want to have a good amount of people to give me what they think
my biggest fear is people will have issues with the way I write romance
It's basically a standard farm but it has extra locations that mimic the properties of other farms
So like a quarry area, an orchard, etc. all on their own maps reachable from the main farm
and I dont like writing characters that are dependent on the farmer and ik a lot of people like that trope
Also I just learned that multiple farm maps are now supported for building on in the base code!
Meh, if people have issues, maybe the mod isn't for them
Actually I prefer characters to have a bit of agency of their own
(And that's fine)
Makes it feel more real
Yes
Balance is good, some occasional personal moments where NPC feels dependent or vulnerable with the farmer can be good, but they do NEED to have lives besides the farmer
yeah I plan to have sassy replies if the farmer tries that
One dialog is like "lots of bad things happen there" to talking about seb when he was in the city
the reply is thats weird to say I have to leave now
I dont like it when people assume the worst or push bounderies if that makes sense even if its just a little npc so I coded it in to not allow that and almost always just ends the interaction
my Sweet and Sour mod relies very little on the farmer - I just have like 2 pages of cute little headcannons about Sam and Shane as friends/coworkers and how it affects how Seb and Abigail interact with Shane too. Like Shane appreciates that Seb has a vice.
Im going to be working on some events that just exist outside of the farmer
most of my goal is to make it so it doesnt feel like the emotions reply on the farmer
I love that.
they are people on their own and dont just let the farmer pry or push boundaries and be a good thing where they open up or whatever
Sam being honestly annoyed with you for bothering him or Shane at work "listen I appreciate how friendly you are but it's kinda rude you come in here all the time when we're working"
this is some of the dialog I have been working out after a heart event where the farmer ovehears a convo w seb
I mean... that's great, but how would the game know it's not the first time the farmer did that 
I LOVE BOUNDERIES π₯Ή
That's what I'm still trying to figure out
$1 dialogue command!
Shows one line the first time you talk to them and another line afterwards.
oh yeah! I was looking through those yesterday.
(Or something with actions, queries, and stats)
A combo of both maybe?
Speaking of figuring things out... What would be the best approach if I want several blocks of code start at the same time? Like for example
- Block 1: NPC A starts moving and jumping for 5 seconds
- Block 2: NPC B starts dancing for 10 seconds
I don't think adding true can work, since some of these would need pauses in them
Yeah if you want it to be more than just first vs every other time you have to get more complex.
beginsimultaneouscommand? - though that's more event specific idk if that'll help here
Lots and lots and lots of trial and error lol
Nope, that is not for simultaneous actions like this
I assumed Nomori was talking about events
Yep
For his wedding event
ahhhhh, okay.
Using [continue] and pauses is how I would do it
Hey, I'm reading the docs you linked and trying to wrap my head around how all of this works, and there are a few things I don't really understand yet:
- How to properly parse the json string into a JToken (there's only an example snipper for WriteJson)
- How to properly cast the modified json structure to my data Model (again, there's only an example snipper for WriteJson)
- How do I tell SMAPI to use the JsonConverter I wrote so that its used when parsing FF content files
Thanks for all the help you and others already gave me yesterday, it has been very useful to see in what direction to progress.
(And I am apparently a great user of simultaneous movements)
Smapi has examples!
But also, it's usually just registered as an attribute
Yeah... that might be the only way... so I'm gonna have to mix a lot of different NPC actions together... god, that's gonna look awful (and be even worse to write) 
As long as you do it multi-lined it will look beautiful :P
I am writing it semi multi-lined (as in blocks) for sanity reasons, but still doubt it 
I don't do blocks because it makes testing harder
that's a perfect example, thanks! I'll get into implementation another day.
Every single command on its own line, then it's extremely easy to comment commands out
And I have to do a LOT of commenting commands out when I make events
We can comment lines out within an event? 
not me doing it with JSONS and just having redlines everywhere
Because they break incredibly easily when you do simultaneous actions
You can write comments in the middle of events too
Having them all on their own lines means I can comment out (or back in) as many commands at once as I want to
Is there a way to write an event in a seperate file and then have it loaded into the CP content.json wholesale as an event edit?
I'm surprised nobody made an event editor integrated in the game yet.
That would be SO much easier than trying to edit the damn thing all in one line in my content.json
I think you are describing Includes
That screenshot of mine was not of the content.json
The -- is the comment? 
yeah I can see
Huh, never seen it done like that, but that's very useful indeed
This is what's in my content.json
will look into this
You can't use // or /* */ comments inside an event, the double hyphen is the only option
ahhhh that will make life so much easier! Can you do that to edit an existing event or do I just overwrite it completely with a new include?
The -- is actually part of the game parser
Includes are just a way of organising your files. They have no impact on how edits are actually performed (ignoring LocalTokens). https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-include.md
If I can just type it out line by line in another file it will make editing the intro event with the correct coordinates for my new farm WAY easier
That explains why it's the first time I'm seeing this
I mean it doesn't matter whether it's in your content.json or another file as to whether you can multi-line it.
At work one of the languages uses ; as a comment
This is what the top of my events.json file looks like (after the gigantic pile of comments at the top)
That... feels like it'd be very confusing...
But does action type "include" permit edits to existing events?
Normally you'd use
"Action":"EditData",
"Target":"Data/Events/BusStop",
for example
But include seems to be it's own thing?
See my screenshot. The EditData action is inside the included file
29 lines of comments isn't too bad
Some people find it incredibly weird that I have any comments before my actual json at all lol
Idk, it seems like you wrote doc for each file at the top
Speak command with optionals not working was fixed in 1.6.9
I have not revisited this event since we updated from 1.6.8 lol
Now one more question : is there an easy way to convert an existing event to multi-line format?
My i18n files basically have ascii art esque shit in them, so I can't say anything 
i like it. it's stylish
haha glad im not the only one who does that
Same lol
Python π
In VSC, yes. linkoid made a plugin
Oh? π
I use it to read vanilla and other mods' events
AMAZING
I just use notepad++ macros to do a search and replace for / to /newline and back
You are a lifesaver
I love that plugin
Oh yeah Limey taught me how to do that too. Doesn't work nearly as well for forward slash at the end, sadly.
ouch.
I was doing mc coding in JSONs it was brutal there was like 1k lines
I mostly use Sublime for everything. VSC for coding.
I've made Sublime replace Notepad completely on my system
I've grown fond of VSC but I still use texteditor sometimes.
really? i wouldn't think it would matter but i am a / at the start kinda guy
The way I tried it, at least, made it go funky. I will admit I didn't try too hard because of having the plugin already.
My colorscheme for VSC and text colors are so helpful for me to have a visual cue
It's a bit too heavyweight for non-coding stuff, hence Sublime
Honest to god @vernal crest you have saved my sanity
yeah makes sense. i ended up writing up a whole syntax highlighter in notepad++ before i found out about the vsc one.
Thank you SO MUCH
Very true. I only started using it when I started showing interest in C# and my fiance put me onto some classes that use VSC
I currently have 18 tabs open in Sublime as well as 4 VSC windows with 4+ tabs open each lol
I don't know much about sublime tbh
same lmfao
It has come to replace N++ for me
Oh good there's a linux version
I think I'm too used to regular syntax higlighting... it looks weird to me π
Although I have been "evaluating" Reaper for about 4 years now π
Oh you don't need to use the highlighting. I just use it to convert single line to multi-line
What does the initial -1000, -1000 line do ?
has anyone written up an event syntax highlighter for sublime?
Sets the viewport to way off in the void
It's how to control fades
Not that I've heard of but I've never gone looking
Argh I am certain this event was working last time I had it like this
Cool I might have a look in to making that so. Seems fairly doable.
Now it is broken in a new way
How long is a tick (or a single instant command) in miliseconds?
(trying to compare it to pause)
although I still can't see why it doesn't work :/
The coordinates all look ok now
bah
I think there's usually 60 ticks per second
Are you asking because you're looking at beginSimultaneousCommand?
(Nomori)
I think the tick rate is only ever 60 per second?
Nope, mostly out of curiosity, partially to plan the command order (no idea if that makes sense)
So it'll be 16.666~ milliseconds... if that assumption is correct.
I will be extremely impressed if you manage to plan out successful parallel action in advance
If I wanted to have a mail be delivered 3 days after an event can I do that with the event memory? I can only see _memory_oneday or _memory_oneweek
Nope you will need to set your own CT
ok cool thanks
I definitely won't, but it might be good to know 
Thank goodness for event tester letting me speed through this event
No human will notice 16ms
There is a pause for specific time command iirc
Yeah I don't know if you can even use the pause command without the duration argument
i would say "wrongo" but sometimes i forget i'm not human
I'm glad I don't notice anymore tbh
But tbh I'll notice frame drops but if two npcs start animating, one frame apart, is fine
Don't care
ichor, remind me what you use viewport unfreeze instead of?
The events system is Fun
I'm also, tbh, pretty forgiving of event jank b/c with all the mods ever, doing mod compat with events can be hell
Ie, did Penny just walk through a chair? Well. The modder probably didn't expect this particular modded interior map
It's fine
i use viewport x y true to move the viewport and fade in, instead of moving the viewport and using globalFadeToClear. i don't think it actually maps to unfreeze when called that way
I am extremely forgiving of other mods' event jank. And intensely unforgiving of my own lol
Meanwhile I do not with events haha
i cannot allow jank in my own events. i have written new event commands to get around the jank and i'll do it again
You've technically made events!
Ichor you and I have a weapon in our back pockets
If we get annoyed enough, new event command it is
Oh right string option was unfreeze. You use shouldFade.
Well globalFadeToClear is currently what is breaking this event so perhaps I should explore shouldFade instead.
Ah... I was hoping I was majorly overthinking all of this if animate had [continue] parameter... but it doesn't 
Does animate stop time while it happens? That seems surprising.
I've technically done a lot of things π
When I get around to the events I need to make, I do worry I'll end up with way too many event commands to make things... nicer.
One day I'll technically go release a knitting pattern and make no money from it
pretty sure animate does not block
Oh yeah... it shouldn't stop it since there stopanimation 
Yay 
I've yet to use animate
Dh expansion when
I'm too attached to TAS
I'm already slowly doing it!
Also do you guys buy Mr. Qi as a r/wallstreetbets guy
Hmm maybe it's breaking because they're using shouldFade and globalFadeToClear 
My entire justification is that he owns a casino
I do not know enough about wallstreetbets to comment on Qi's affiliation
And I need a risky day trade type to balance the gentle long term hedge your bets
(Also holy hell! Activity!
)
@grim latch make sure the farmer is in your list of actors for the event
I am literally just using the default intro event and changing coordinates
Farmer appears at the bus stop as expected
but when it comes to the change location bit, nothing.
It's got to be related to my tmx file somehow
But I can't see any reason why it wouldn't work
Does the farmer appear if you put them at different coords that are further to the left?
I'm gonna try that now
The weird thing is those tiles are basically identical to the standard map
very odd
no moving the farmer start point didn't help either
I am at a loss
I'm curious if people will even notice the little spy 
You mean the camera can't see tile 78 17?
yeah, possibly, although again that's the same as the default event
and the map size is identical
You can use Debug Mode to check what the coords of each tile are during the event
So you can be certain whether 78 17 is visible
they're supposed to be walking in from the right as the scene starts - Robin is, but the farmer just isn't there
but no, can't be that, because I moved the farmer's warp in point so they're definitely in view.
Ugh.
I really hate this.
Yeah unfortunately events are...like this.
You could try running your custom event on the standard farm and see if the farmer is visible there
Just to narrow down whether it's an event issue or specific to your map
I feel like it's the map file, somehow, but I just don't understand why
Farms have a lot of hardcoding. You might be running into some.
I could swear I remember something on farm maps with events and the player position... but I couldn't tell you exactly what it was, or if it actually existed.
But a memory is tingling back there somewhere.
Yes
There is. BUT it shouldn't be an issue here
Because the event itself starts on busstop
Oh, then yeah, that shouldn't... apply...
Ok the event isn't being edited at all.
I added a line of dialog to the bus stop to prove it was working and no luck
cries
but the content.json is apparently ok
oh god I am an idiot.
There was a TYPO in my When : clause
Oh dear
goddamnit.
Happens to us all, don't worry
You're eligible to join the club now, yeah.
I spent aaaaaages the other day with no clue why my dialogue and schedule weren't working before finally realising I'd never loaded them
Woo I think I have finally figured out the issue with this event!
Yesss it broke that is good
Raven is sneaking, Junimos are dancing... now the raccoons...
Are they part of some vanilla events that I can debug ebi? I looked through forest events, but didn't see anything that matched 
Hardcoded I'm guessing
The raccoon dancing
Yeah
Yeah, the animation is what I'm interested in, also if I could use IDs to make their appearance (and number) dependent on already seeing it
Do you want to send it to me and I can play around and see if I can figure it out?
Maybe.
I'm gonna try warping them in to a totally different spot first and not have them walk anywhere and see what happens
That's very kind of you to offer
ah ha
so for some reason, the warp location is actually two tiles adrift from where I set it π€
I set the warp location to 70, 17
But the farmer is appearing on 72,17 when I check with debug mode
which would have put his intended spawn point outside the map
still...... why?
this makes no sense :/
I mean I guess I can just.... subtract two from my warp in points?
maybe
Curious. I wonder if it's related to the farmer speed being set lower than usual.
Seems unlikely though given the farmer doesn't move again until after the warp
oh maybe
but lewis also warps in two squares further over than he should be
and he isn't moving at all at that point
There may be hardcoding
There's just a very odd 2 square difference π
Anyway, that does in fact seem to be the issue as now I've adjusted the coordinates my farmer is spawning in where I wanted them
Now I just need to tidy up the movements and face direction commands
What is the goal of event 
I am literally just trying to edit the welcome event at the start of my game so it works on my modded map
Not be broken by custom farm lol
I hate event scripting π
It is, however, now working
Between my typo in my content.json and the random 2 square differential on the map that took way longer than it needed to
Ah love that for you it's always the little things isn't it
I still don't understand why the tiles are 2 squares adrift from the script.
I get to take my last final then thankfully my biggest issues will be ones related to passion projects
I'm guessing there's no way to check if farmer saw a specific dialogue from Strings? 
Not without editing the dialogue to add something to check, I don't think. Unless that dialogue happens to be a question.
Eh, I give up then, lonely raccoon in the corner it is then
Or not... he's bigger that a human in the files 
Huge racoon in the corner*
Okay, yeah... he doesn't seem that big in game
He's long
Chonky 
Oh the dancing sprites are in mrs_raccoon by the way
Hmm... I probably won't do the dancing sprites, since I have no way of checking if player already saw it, I'll just treat it as a raccoon chilling in the woods and encountering the wedding by accident (also I just noticed it's the wife, not the husband
)
is there a debug command to mark a trigger action unapplied
I know there's a trigger action action to do it
So I'd like to give my recipes the config option of being vanilla or being able to incorporate Cornucopia ingredients. I'm trying to look at Culinary Delight as a guide but the recipe replacements aren't making sense to me. Is there a way to just if vanilla true use this phrase, if cornucopia true use this phrase?
Why did the Raven broke for no reason 
I don't know why the new recipes have like xy coordinates
We dont have if statements, you just write two patches and make sure the second patch has the conditional When for having cornucopia
the second patch will be the one that applies in the end if it's valid
In a larger scale (such as for hundreds of recipes), this can also be done by using Include to have two separate files that have all your recipe data for either setting, and the conditional cornucopia file is patched in second
ok, i'll try that. only like 12 or so recipes so should be fine to keep to one file location
for recipes with xy coordinates you might be looking at code for spacecore recipes, which allows for more features but is a lot more complicated
ok, not sure what i'm looking at there
Yes, you can use any trigger action in debug commands with debug action
smart!
Is there anyone here who used ignoreMovementAnimation? I'm trying to use it in a way so it also doesn't show the directional end sprite... and I swear it somehow worked before, but after I added some more movement and animations for other actors the directional frame suddenly showed up 
I think I know what I did wrong βΒ I just didn't even realize the crop drops could be vanilla items, so I assume they're JA items and try to "fix" them. Obviously this does not work! and then I return null
I can fix this easily in a way that isn't elegant, but I want to think for a min about if there's a generally better way
Basically, I have a method that goes in and "fixes" old IDs
I can either check if the product is an integer and not "fix" it, or I can build into the "fixing" method a way to check if it's a vanilla item
Bad things that can happen if I check for integer: I probably should instead call the vanilla method for checking if something is an item
(there are integers that are NOT valid items)
Huh... okay, it seems that for whatever reason, if I use the move command for a temporary actor few commands before that one it breaks the ignoreMovement and if I delete it, it works completely fine 
hrhrhrm there could be name collisions I catch if I change the fix method
for example, suppose someone creates a CP mod to make StrawberryShortcake βΒ I might accidentally make a JA mod produce that StrawberryShortcake because it would be a valid item in the game (appearing as vanilla)
I think the nicest fix is to check if integer, then check if the integer is a valid item
This doesn't catch the case where JA used to let you specify vanilla items by name instead of by integer
Maybe I already thought about this for recipes?
Yup I use it to make Hiria jump backwards. It didn't seem to work with advanced move. What do you mean the directional end sprite? End of what?
move <actor> <x> <y> <direction> [continue] the <direction> here, as in where the actor is facing at the end of the movement
I use showFrame immediately after it to skip to a different one immediately
And it works fine, unless this π
So you're trying to get them to go from their walk frame straight into a totally different one instead of going into their standing frame?
ugh it's been so long since I wrote C# I'm rusty
Yeah, kinda, more like move without a walk frame and then into the specified frame
Maybe you could try using halt or waitForAllStationary after the temp actor has moved.
So when the config is toggled on for flexible recipes everything shows up, but when it's toggled off none of the recipes show up. Also, I'm pretty sure I'm using the correct ID for Cornucopia oregano and it's asking for a house plant in the recipe...
https://smapi.io/json/none/5305701bd488417eae49712bb5c0e8e0 Part of it is probably me reusing the Entries section but why the house plant
I tried waitForAllStationary out of curiosity too... and that doesn't work 
you have a block for "flexible_recipes": "On",; do you have another one for Off?
I'm assuming that's what the second Entries block is for, in which case you have to split that one off into another Change block
No, I thought the conditional section replaces the rest which is default? I can make an off section though
an entry cannot have two Entries block
Interesting! I've got some stuff in my event that only works if I use waitForAllStationary. Using halt doesn't.
make a separate one
Feels good to be so close to finishing... but the worst part of making a mod approaches... making a mod page 
It doesn't have to be bad if you don't put any effort into it /j
https://smapi.io/json/none/f98bc8e5a34a4f3ab276de55ddb26fc0 It's telling me I shouldn't have a second Changes section
I don't put almost any effort for most
Buuut I kinda feel like this one deserves it
You should not, I think Selph misspoke (or was meaning another patch when they said Change block, not sure). If you remove lines 60 through 63 I think it will be ok.
Is there a difference between StardewValley.ItemRegistry.Exists(itemName) and StardewValley.ItemRegistry.GetDataOrErrorItem(itemName).IsErrorItem?
Yeah it does, good mod pages get more attention I think.
I'm not sure how to nest the When and Entries sections 
Does the When go within the entries then?
The when field is the same level as entries.
So not inside
but then i would have to repeat entries, wouldn't i?
hey all! very quick question, also related to When conditions - if I want something to NOT appear during a specific time, how do I negate a when condition? Like say
"When": {
"DayEvent": "dance of the moonlight jellies" }
but I actually want to to be the opposite, I want to not happen on that DayEvent
i would suggest that someone send a corrected json file for them if possible?
No, if you remove lines 60 through 63 you should have two blocks that look like this
{
"Action": "EditData",
"Entries": {
// Entries in here
},
// And so on
},
{
"Action": "EditData",
"Entries": {
// Entries in here
}
// And so on a second time
}
Oh so I repeat the action section
"DayEvent contains dance of the moonlight jellies": false
Syntax not correct because I can't remember it but it's on the CP tokens page
Exists probably just checks if the data exists, while with IsErrorItem you're first trying to parse the itemdata then checking if it returned an error object
Ctrl-f for "contains" should find it
not two Changes blocks, two blocks within Changes
thank you! That gives me a good clue
Yes, everything within those curly braces at the level of Action or further in is called a patch
"DayEvent |contains=dance of the moonlight jellies": false
at work rn so cant talk much but you can check out something very similar to what you're trying to achieve here
https://github.com/zombifier/My_Stardew_Mods/blob/master/CP_Mods/ChickenFeed/Data/craftingrecipes.json#L1
Thank you that's definitely working correctly now. But I still don't know why it thinks oregano is a house plant
You're missing a quanitity for carrot
it's shifted everything by one place and it thinks your next ingredient is 1
OOOH damn weird that doesnt mess up the carrot part lol
So halt makes this frame appear for whatever reason... have I mentioned how much I hate event scripting? 
@woeful lintel would you mind if I DM'd you? I'm looking into a possible integration with Furniture Framework that I'd like to discuss with you.
@lime seal when you get a chance, can you test this version? I think this fixes the issue.
thanks ya'll, that was the fastest bug fix I've ever been able to do
event scripting makes my brain hurt
Is there any workaround way to use SMAPI's ReadJsonFile function with a file path that isn't relative to the mod's directory?
My mod adds bags to the game that can store various items. Users can create their own bags in json format and my mod loads the .json files. But some users have reported issues where their custom bags aren't opening after they update my mod, and I think it's because they accidentally did a clean install of the new mod version (thus deleting their custom bag json files) instead of updating by merging the files. So I want to add a setting that let's them specify additional folders to load custom bags from
I need to load json files from other paths
Put your bag data in global app data then
i would write those jsons to the app data folder and not an arbitrary folder
exists for this purpose basically
This will not be overwritten because it lives next to the save files
Mod save data also an option
If u want it to be tied to a particular save
theres global data which is not per save and save data which IS per save
but the former allows the files
the latter is just data
so dont get them confused
You can use ReadJsonFile with paths in Global app data? The documentation says the path must be relative to the Mod folder
It doesn't say that
presumably your json files are serialized and deserialized into some model
But also you aren't the person writing the jsons in this case
string path: The file path relative to the mod folder
You just give it a model to write
you wouldnt be using ReadJsonFile, you'd be using ReadGlobalData
hmm that one says it's parameter is 'key', is that the file path?
So smapi namespaces your path when u use global app data
They all live in same folder and then the key become different file names yes
Tbh I would also strongly consider loading through the content pathway
You can trivially provide a new directory you just need to use newtonsoft directly
I recommend just trying it and see
The reason why i didn't bring up content pipeline is just cus it sounds like a user config thing not a other mods adding new bags (e.g. item bags)
I was thinking of using newtonsoft directly but I saw in the smapi source code it had a bunch of little tweaks and additional logic. So I was going to instantiate StardewModdingAPI.Toolkit.Serialization.JsonHelper but it says it cant find that namespace idk why
I really don't think u have to do all that when these helpers exist 
To answer your original question though, you can literally just have user enter a string path to folder in config, and then you deal with that by using Newtonsoft.Json directly
But I don't think you should
Yeah but then I'd want to replicate all the extra stuff SMAPI does when loading json files to ensure it does it exactly the same way, https://github.com/Pathoschild/SMAPI/blob/develop/src/SMAPI.Toolkit/Serialization/JsonHelper.cs#L12
Yes exactly , so if u just use ReadGlobalData WriteGlobalData
You can get jsons to live outside your mod's actual folder
And survive deletions
I think Ill have to once I figure out what the key parameter is doing for ReadGlobalData. I have absolute file paths that I'm working with
(unless the user goes and delete the actual .smapi folder in the save folder tho)
JsonHelper seems public 
I tried using it in my code but it says it couldn't be found. I have no clue why
Even typing 'StardewModdingAPI.Toolkit' namespace isn't showing up
Oh I only have a reference to SMAPI.Toolkit.CoreInterfaces, not to SMAPI.Toolkit
If I add this reference to my mod, will it still work for users who have the game installed in a different folder?
<Reference Include="SMAPI.Toolkit">
<HintPath>..............\Program Files (x86)\Steam\steamapps\common\Stardew Valley\smapi-internal\SMAPI.Toolkit.dll</HintPath>
</Reference>
<HintPath>..............\Program Files (x86)\Steam\steamapps\common\Stardew Valley\smapi-internal\SMAPI.Toolkit.dll</HintPath>
oops its removing the slashes in discord
<HintPath>..\..\..\..\..\..\..\Program Files (x86)\Steam\steamapps\common\Stardew Valley\smapi-internal\SMAPI.Toolkit.dll</HintPath>
How do I make a spouse use their sleep animation at the end of the day? 2200 bed anya_sleep doesn't seem to be working
<Reference Include="Newtonsoft.Json" HintPath="$(GamePath)\smapi-internal\Newtonsoft.Json.dll" private="false" />
Thanks, $(GamePath) is working
- you don't need to specify the animation if you are using
bed(i'm not sure spouse schedules even care, truthfully) - you have to use your NPC's internal name (lowercased) in the animation key, not just "anya"
Ok, so if the internal name is AnyaLilybrook, it needs to be anyalilybrook?
yes, anyalilybrook_sleep
can someone tell me, if using switchEvent does "same location" mean the location the first event started in, or the one it's currently in if I used changeLocation earlier? Sorry if I'm not making sense.
Would anyone be interested in helping me make the sprites for my custom NPC? I have tried to do this myself but I have a really good idea for a custom NPC just am not good with the art side of things and was wondering if anyone would be willing to want to help out? Let me know!
Hello! I was wondering how modders here found their teams/community. I have an interest in learning how to mod Stardew, but I do best working on a project with other people. I love to write, and I'm interested in learning how to draw in the Stardew Valley art style. I'm no good at programming, though.
Just curious as to how people meet other people interested in starting a group project!
it applies to both of you, but typically people demonstrate that they have some skill or dedication to something that they bring to the table, and you'll naturally find people who are interested in your skill
switchEvent uses the current location, so the new key should be in the location you have already changed to
for example... kafkaesque, do you have any desire as someone interested in spritework to work with kkthnx from right before you? and if not, why?
likewise kkthnx do you have any desire to work with kafkaesque
bluntly everyone already comes to modding with their own ideas lol so we're usually not short on those
sometimes it can just be as simple as going to #making-mods-art and being like "I tried drawing my own version of the carrot sprite, what do people think of this image? Oh and if anyone wants spritework for their mods feel free to ask me! I want more experience"
That's very fair! I'd be totally interested in working with anyone, I just struggle with showing off my skills. I'd need to build a little bit of a portfolio to get to a point where I even have anything to show, lol. I'm mostly just curious as to how people even start.
That's great advice. I'll consider doing that!
Honestly you dont need much to show off. Just even one thing to show that you know how to make pixel art that isnt blurry lol! (and even if it is blurry there's always someone that wants it anyways.)
I think my first sprite was just a drawing of garfield
Lolol, that's great. I really appreciate your time and advice :,D thank you
it's more about having some demonstrable attempt at something rather than a fleeting interest that'll be gone next week
Sure thing! Just chat in here/in the other channels once in a while and people will start to recognize you
See, that's something I need to prove to myself that I can do too. I'll do my best to keep myself accountable here!
Just make theoretically useful things and then try to peddle it to people 
It helps get over that initial mental block by just making a single simplest mod in the world
like changing the sprite of one thing
Once you start you wont stop
oh my god that reminds me
Most of this channel is just people coming in and asking "why me mod no work" so it's not like anyone looks at your profolio
ages and ages ago i had an idea for a mod that i totally wanna make and i just forgot about it
something that collects friendship points over the cap and displays them
Lawl, true
like a little "+24β€οΈ" thingy on the social page
i need to do this
ugh time to learn how to mess w the ui
!harmony
Harmony is a framework for patching .NET code, allowing you to take any portion of the game's logic and insert or substitute your own. This gives you more flexibility and control than SMAPI helpers and events, at the cost of being typically more complex and difficult to use safely and correctly, and more likely to break with a future update of the game and/or SMAPI.
If you are trying to do something that isn't possible or practical with SMAPI alone, then Harmony is usually the solution.
For more information, refer to the following:
- Harmony Modder Guide - Intro, Use Cases, Initial Setup
- Tutorial: Harmony Patching - Types of patches and code examples
- Decompiling Stardew Valley - For finding methods to patch
no i know that part lol
I strongly recommend patching game menu instead of the event based way here
Compat reasons 
ofc
But otoh if u want to add a new page
i was probably going to find a draw method somewhere and postfix it
This makes it easy to add new tab if u want
i just wanna add a little bit of text to each entry in the social menu
need to figure out save data too
waow this will be a fun project
You can just store it on NPC.modData
It's a dict string string that goes into save and gets multiplayer sync
ok good good
That did the trick, thank you!!! 
This is scope creep (
), and probably more on Almanac's end rather than JA's, but I noticed there's an error that pops up from Almanac related to JA. Would you have availability and interest to look at it, see if there's something on JA's end that could address it? I'm using the Almanac version available on GitHub here (https://github.com/Vindeflei/KhloeLeclairStardewMods/releases/tag/Almanac_1_18_2) which works in 1.6 besides the error.
Log with the error: https://smapi.io/log/0cfc790fa8ef4504a706ddbd7bdaf66d
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 176 C# mods and 449 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
i assume it's not per-player and ill need to key the data on players' multiplayer ids?
Yeah use unique multiplayer id
okiii
ok ill just do whichever looks easier w how the patches work out
Honestly I don't know why that error happens, since JA API still has that method π€
ah I see
i have a friend who wants to play my mod but only owns a chromebook. my mod dependencies are SMAPI, CP, spacecore, and BETAS. theyβre unable to install the steam version of the game on their chromebook, but they say the google play store has a version they could install. would they be able to play my mod?
the updaters to Alamanac haven't updated the JA API
probably not, that's the mobile version
that's be the android version
Does BETAS work on mobile?
which, well,
if you want the steam version on the chromebook you have to wade through the linux that chromebooks secretly are
I've seen a couple people get through that but it's not super easy for people who haven't poked around linux before, from what I can tell
ive had someone ask me if BETAS works on Android bc they tried and got a bunch of errors, but there was no log so I don't know if it was actually due to BETAS or not. I've not looked into it as I don't have Android Stardew
someone else then asked afterwards if there would ever be a version that was compatible with Android, but similarly i dont know if that means they actually tried it or not or if theyre just going off what the first person in the comment chain said regarding the errors that may or may not be BETAS related
A few BETAS features explode on phone
if it was easy to fix them id probably try, though i dont feel like purchasing mobile stardew just for mod development, so itd be up to someone to PR it i suppose if they cared that much
Well i was gonna follow up with, but button caught them separately so if your mod didn't use em it's probably no issue
no ones ever actually told me that BETAS explodes on phone in any way
so i have no idea what explodes
I remember when I was told that MEEP's closeup interactions don't work correctly on mobile, so I asked for a screen recording of what happens so I can see if it would be a five second fix (which is possible).
They didn't give me one, so I guess it works just fine after all!
they decided to go ahead and buy android versions anyway since they do enjoy the game vanilla anyway. thereβs a specific version of spacecore i should direct them to try, right?
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.
Just note that if mod explodes there's not much help
Besides figure it out yourself somehow
yeah i already told them like, you can try but itβs out of my hands lol
hey is the android discord supposed to link to sdv thailand?
Yes, that's where the main dev frequents (and link to as well)
yes lol
Does anyone know if there is a when condition that checks to see who your dance partner is at the dance? Between googling it and checking the discord search, I can't seem to find anything legit for it.
okay just checking haha
Unlikely to be a condition easily findable in CP unless a mod exposes it, is my guess
In C# is probably easy?
Thanks! I'll give it a shot.
My guess is that it has to know something about who to place there in the event
it might be hardcoded in Event.cs
@brittle pasture thoughts on my pr? π₯Ί https://github.com/zombifier/My_Stardew_Mods/pull/13
I've seen it, have been waiting for it to be finished (which it is now)
okiiii
lmk what u think abt the feature itself
i definitely wish additional fuels worked that way
I admit the original behavior is about 75% intended
I'll think about whether it makes sense to merge, but leaning towards yes
(and thanks!
)
oki ty π
Hm does the current implementation follow the first output thing
(getting the dance partner in C# is easy yeah, but not exposed in a CP accessible way)
This is sorta first output on a machine level
current implementation is just "first rule that matches the vanilla input item", my pr would make it "first rule that matches the vanilla input item and has all necessary fuels available"
the other thing I'm worried is breakages, because even without EMC it is possible to make output entries where none of the output item matches a condition
wdym?
you can modify the hops -> pale ale output item to only make pale ale if you have a mail flag, and if you don't you just fail instead of making hops juice
hmm yea fair
imo the most similar vanilla analogue to additional fuels is recipes that take multiple of an item
but thats also a good comparison so idk lol
e.g. w vanilla behavior, if an earlier rule takes 3 apples and a later rule takes 1 apple, you can trigger the later rule by only having 1 or 2 apples in your inventory
but yeah this pr is unfortunately (kinda?) a breaking change cause it makes recipes possible that might not have been intended
not sure how acceptable that is
I'm really sorry to ask this, I feel like I can't get a clear answer on this anywhere...is it possible to add new items soley using c# and smapi ?
this behavior could also be controlled by a customfields config on the machine (or on the individual rule) but i thought that would be excessive levels of configuration and possibly confusing to players
You definitely can but there isn't going to be a guide because it's much more common to use Content Patcher
You'd be using the same content pipeline that CP does
You basically just do all the content edits on your own
(About adding new items via C# and SMAPI)
Ah right okay that's kinda what I gathered, I guess i'll sink some time into learing how to use content patcher so
I wouldn't do this beyond just 1 or 2 items
Or if you are trying to do a mass edit like make everything 2x as expensive
Overall idea was to add a couple net new items, and eventually a net new npc and quest line involving said items
I'll add items first and then go figure out how to do the rest xd
Most people find content patcher easier if they don't know how to program beforehand
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
Yeah I think im kinda in the opposite boat lol, I was very ready to do this all in c# but the documentation is a bit limited
It's not really about easier or harder imo
Just very tedious 
Content patcher also have various fun features beyond just editing content, tokens and conditions mainly
You can still add a C# component for whatever non standard feature you need
But other people made mods specifically to provide non standard features via content (aka framework mods)
Anyone know if I can get away with the cleaner wikitable syntax in a collapse block (first image about mail) or if I have to use the html tags (second image from events page)?
Not sure if i'm asking in the right place but could someone tell me where i can learn some first steps for modding? Like creating a mod for a dialog expansion or the likes.
!startmodding what you want to make are Content Patcher mods
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.
howdy ! hopefully it's chill to ask about fashion sense here, as i couldn't find a FS server π«‘
i'm having trouble scaling down a bodymodel using the scale property - the body doesn't change size regardless of what value it is
otherwise everything else with it works fine, i'm just using a higher res image so not downscaling it makes it giant : P
Thanks a lot!
this is what the top of the body json looks like, for ref. its more or less the same as the example for all the bodies
Hi guys, does anyone know how to make gift tastes change with different heart levels? I'm still very new to modding
You would do a patch for each heart level with a when condition
hi. first time attempting to create a mod. I'm running into a bit of an issue and I think it may have to do with the project structure.
the documentation shows how to create a Library project with Visual Studio, however I'm using VSCode. My directory looks like this:
Build failed with 1 error(s) and 1 warning(s) in 4.4s
PS E:\DrewMods\MyHoverMod\MyHoverMod> cd ..
PS E:\DrewMods\MyHoverMod> tree
Folder PATH listing for volume NVME
Volume serial number is 4C2A-966D
E:.
ββββMyHoverMod
β ββββbin
β β ββββDebug
β β β ββββnet6.0
β β β ββββnet9.0
β β ββββRelease
β β β ββββnet6.0
β β ββββ{Release
β β ββββnet6.0}
β ββββobj
β ββββRelease
β ββββnet6.0
ββββobj
β ββββDebug
β ββββnet6.0
β β ββββref
β β ββββrefint
β ββββnet9.0
β ββββref
β ββββrefint
ββββProperties
It's a MyHoverMod folder with a nested MyHoverMod in it (which has all the project files). This seems to be what's listed in the documentation. When I try to build the mod
PS E:\DrewMods\MyHoverMod> dotnet build -c Release
MSBUILD : error MSB1003: Specify a project or solution file. The current working directory does not contain a project or solution file.
it seems to want me to be in the nested MyHoverMod dir. Is this correct?
also I'm seeing an issue when build with a json library:
There was a conflict between "Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed" and "Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed".
is this because i have .net 9.0 installed? I thought they were supposed to be backwards compatable
C:\Program Files\dotnet\sdk\9.0.300\Microsoft.Common.CurrentVersion.targets(2434,5): warning MSB3277:
Where's your csproj?
And it's fine to have net 9 while building against net 6
However it looks like you referenced a newtonsoft.json different than smapi's packaged newtonsoft.json
how does your csproj look like?
it's really just those two files:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Pathoschild.Stardew.ModBuildConfig" Version="4.2.1" />
</ItemGroup>
</Project>
using StardewModdingAPI;
using StardewModdingAPI.Events;
using StardewValley;
namespace MyHoverMod
{
public class ModEntry : Mod
{
public override void Entry(IModHelper helper)
{
helper.Events.Display.RenderedHud += OnRenderedHud;
}
private void OnRenderedHud(object sender, RenderedHudEventArgs e)
{
if (!Context.IsWorldReady)
return;
string hoverText = Game1.hoverText;
if (!string.IsNullOrWhiteSpace(hoverText))
{
Monitor.Log($"Hovering over: {hoverText}", LogLevel.Info);
}
}
}
}
i'm aware hoverText is invalid, but that's another issue
i'm not referencing json at all
OutputType defaults to Library, according to MS
Do u have a sln
Yeah that's fine im just trying to figure out why dotnet build didn't work
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MyHoverMod", "MyHoverMod.csproj", "{F531F5E6-68EA-ABFD-6EF8-1C282A95E799}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{F531F5E6-68EA-ABFD-6EF8-1C282A95E799}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F531F5E6-68EA-ABFD-6EF8-1C282A95E799}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F531F5E6-68EA-ABFD-6EF8-1C282A95E799}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F531F5E6-68EA-ABFD-6EF8-1C282A95E799}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {9956211B-8BEB-4546-A462-56A62C92657A}
EndGlobalSection
EndGlobal
I thought sln was a VS thing
If u don't have it in vscode it doesn't give u intellisense
i didn't write that. it was generated in some dotnet step i guess
so i just need to delete the OutputType entry?
Does dotnet build MyHoverMod work
i only found 1 reference to this xml file in the documentation:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<AssemblyName>EXAMPLE_MOD_NAME</AssemblyName>
<RootNamespace>EXAMPLE_MOD_NAME</RootNamespace>
<Version>1.0.0</Version>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Pathoschild.Stardew.ModBuildConfig" Version="4.0.0" />
</ItemGroup>
</Project>
I don't think that matters
(fwiw Rider will also generate one too)
PS E:\DrewMods\MyHoverMod> dotnet build MyHoverMod
E:\DrewMods\MyHoverMod\MyHoverMod\MyHoverMod.csproj : error NU1301:
Failed to retrieve information about 'Newtonsoft.Json' from remote source 'https://nuget.smapi.io/FindPackagesById()?id='Newtonsoft.Json'&semVerLevel=2.0.0'.
The SSL connection could not be established, see inner exception.
The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch
E:\DrewMods\MyHoverMod\MyHoverMod\MyHoverMod.csproj : error NU1301:
Failed to retrieve information about 'Pathoschild.Stardew.ModBuildConfig' from remote source 'https://nuget.smapi.io/FindPackagesById()?id='Pathoschild.Stardew.ModBuildConfig'&semVerLevel=2.0.0'.
The SSL connection could not be established, see inner exception.
The remote certificate is invalid according to the validation procedure: RemoteCertificateNameMismatch
idk what is referencing this json lib. I have nothing in there other than those 2 files I wrote
Is ur nuget not setup correct
i dont believe it is set up correctly. I'm using an extension
i dont really understand why the documentation calls for this nested structure
Mysterious
No you should be nuget the usual nuget source
Huh really
When did it expire
it's being generated somewhere
huh
just dotnet build from the base folder is fine
If this is not working then yeah smapi nuget server shenanigans
idk what's up with that
im not really familiar with windows development, trying to fix my git stuff
i cant clone immediately
and why there even is a separate nuget server
Is it normal to get yellow smapi text saying the following when it turns Summer 1? I'm applying a seasonal recolour to my custom world map: [SMAPI] Skipped reload for 'Mods/8BitAlien.Lilybrook/LilybrookMap/spring_LilybrookMap' because the underlying asset no longer exists.
why is it even looking for this json lib?
https://nuget.smapi.io/
Unable to communicate securely with peer: requested domain name does not match the serverβs certificate.
i'm not declaring it or using it in any files
@ivory plume what's going on
This json lib is used widely in smapi itself
To well, load and write json
right, but it's saying there is a version conflict with a different version of the library that I seem to be relying on
i only have 1 dependency in my xml
You have some shenanigans going on with the nuget server being smapi's (?)
What is nuget.smapi.io?
yeah, what is it
idk. im have 5 minutes of experience
i have 2 files I wrote, and some generated somehow
none of them declare this uri
that SSL error seems to be a thing for any non-existent subdomain at smapi.io
where did that URI come from though...
There is something to do to change the nuget provider back to official but i am struggling to find the right docs for that
Can you post a zip of your solution folder?
sure, is that allowed here on discord?
Yep, assuming it doesn't break the other server rules (e.g. NSFW or AI content).
i'm trying to make a mod that can take the mouse-hover chinese character and display a modal with its translation and pinyin somewhere on the screen
i don't know if the API supports this
i tried to make a unity mod for another game but ran into IL2CPP issues
In Visual Studio, can you post a screenshot of Tools > NuGet Package Manager > Package Manager Settings > Package Sources?
ok, i'm using VSCode and a nuget extension
maybe i should just switch
i just picked it bc that's what i work in on my mac
I use Rider on a Mac
it had 1.4M downloads so i figured it was fine
A screenshot of the equivalent in VS Code is fine too, though Visual Studio would definitely be easier since it's a full IDE rather than a text editor with plugins.
VSCode is fine, but itβs not as nice an IDE, mostly because itβs a glorified text editor.
Pathos is kinder about it than I am 
I was about to ask about the contents of these two files
%AppData%\NuGet\NuGet.config
%ProgramData%\NuGet\NuGetDefaults.config
Here's the thing
The correct location nugets are from, other than school cafeteria, is probably nuget.org
I'm making a mossy dungeon!
still looking