#making-mods-general
1 messages ยท Page 22 of 1
so I'm trying to get my edit of the farmhouse to load in but its loading in like this, with the vanilla farmhouse loading over it. there is no errors in my smapi log, I've been following the content patcher guide exactly, but I can't get it to load right. Does anyone have an idea of what is going on? if I grab a different house mod and replace the maps with mine it loads in just fine
!converters you can try a converter
A lot of converter tools have been made by helpful members of the community to update outdated mods or convert existing mods to modern or alternative frameworks, and for 1.6. Here's a list:
- Convert XNB mods to Content Patcher
- Convert pants/skirt spritesheets to Fashion Sense
- Convert Custom Furniture mods to DGA/1.6 Content Patcher
- Convert visual Content Patcher mods to Alternative Textures
- Convert BFAV mods to work with 1.6 Content Patcher
- Convert TMXLoader mods to 1.6 Content Patcher
- Convert Custom Music mods to 1.6 Content Patcher
- Convert Shop Tile Framework mods to 1.6 Content Patcher
- Convert hair spritesheets and JSON Assets shirts & hats to Fashion Sense
- Convert regular Content Patcher to i18n format
- Convert JSON Assets to Content Patcher
- Convert fish data from field names to slash delimited values
- Convert markdown text to Nexus' bbcode
- Convert Custom Ore Nodes and Custom Resource Clumps mods to Item Extensions Framework
- Convert Content Patcher Animations to SpaceCore
- Convert More than Necessary to Content Patcher
- Convert SAAT to Content Patcher
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
its not finding any errors there
If you share the link then we can see how you're doing it
ah okay
https://smapi.io/json/content-patcher/c60be5b5733d40959eb0b1ab456cc810 thats the content and this is the manifest https://smapi.io/json/none/25861b014d114645bb8a8e2fecc41ad0
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editmap.md
Maybe try EditMap instead of Load
I will try that!
Another good suggestion that I never follow is making sure your mod list is reduced down to only the mods you need for testing, to rule out conflicts
i may have to try that if it doesn't work. rather not have to yeet all the mods but at least stardew is easy when it comes to moving mods
If you do want to do that, you can rename the folders with a . (period) in front of the name and SMAPI will ignore them
Also, you can slap them all into a folder with a . in front of it and it'll just ignore that whole folder
Tbh I used to have like four mod folders
And k would just rename the folder lol
Mods (dev)
Mods (save name)
I did that when I was testing what was going on with the fishing pond and RSV issue lol
I use Stardrop's profile feature, though I think that doesn't work with live debugging. then again I'm on Linux and live debugging never worked for me lol
For the most part, I just chaos goblin it and hope for no conflicts lol
my secret is to play with almost no mods to begin with, so there's nothing left to remove /lh
edit map did not work so mod yeeting it is. then id have to figure out what the conflict is
"play"? I vaguely remember what this is /j
if all else fails ill just have to keep it for personal use and hijack the lune farmhouse mod since it loads in fine when I replace those maps with mine
I dunno what the normal concessus is, but I feel like CP mods can only be so different, I'm not really sure how you would even know if someone was reusing your code
Unless there was a bunch of comments in there like //this mod made by rokugin - no steal
yeah I looked at a few house mods to see if I was messing something up with mine and they all looked pretty similar
Are you adding this to an existing save?
Yes, as well as trying with a new save. same results either way
I have four mod folders. Play, Dev, Messy, and Vanilla (for vanilla but with SMAPI and console commands).
I dunno if I have an example of patching the farmhouse, but I can check when I'm back in front of my PC
What is "play"
Not too difficult though because it uses addMailReceived which is easy to search for.
I think yes to the world state IDs too
I can help once I finish my questions tutorial
honestly since getting a basic grasp of tiled I spend half my day at work thinking about making edits rather than playing the game
It's like testing but you just keep completing in game days without actually testing anything.
Very weird
How do you do that
I'm very confused
Is it like knitting a sock?
God I'm so tired lol
Knit a pillow and go to sleep
I walked ten miles and then donated blood so I guess tired makes sense
(Two separate days.)
I'm glad you included the word then so I didn't think you were giving blood as you walked ten miles. Tired does make sense. It's been a while since I donated blood but it definitely left me tired.
Ive never donated since i dont meet the weight requirements but last time i had blood drawn i thought i was gonna pass out in my car.
okay wow i had forgotten how fast stardew loads when you dont have a few hundred mods in
but im still getting the same results
I nkticd you are only editing farmhouse2
I'm not sure what farmhouse2 looks like anymore
It's the one with the cellar
yeah its only an edit of that one. the cellar is only technically there as I couldnt get the exit warp to work so i made a cellar with pif to take its place
!log
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didnโt occur in your last session, please load the game to the point where the issue occurs, then upload the log.
I will have to get a log when my pc is done moving all my mods back into the mod folder
What's the size of your FarmHouse2 map? Dimensions of the map, not file size.
That's smaller than the vanilla one. I wonder if that's a problem?
if it was then I would think when I use another person's house mod to load it in id have the same issue. its only when I tried to make its own content pack that the issue started
FarmHouse2 is the one that takes all the renovations, so it's a bigger map
Did you ever share your EditMap content.json?
let me grab that
Hmm that's true.
I would actually expect it to have issues, but mostly with the renovations
the only renovation that would work with mine is the attic
i thought about making some of them work with it but i wanted my house to be in a nice symmetrical rectangle
Can you link to the Nexus page of the farmhouse mod that you can use to get your map to work?
its that one
Do you have the main one or V2?
main one
And you just replaced this with your map to get your map working?
{
"Action": "Load",
"Target": "Maps/FarmHouse2",
"FromFile": "assets/FarmHouse2_{{FarmhouseStyle}}.tmx"
},
I replace the large farmhouse maps with mine
I don't edit the content file to change names
Including FarmHouse_CellarLarge.tmx?
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 93 C# mods and 329 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
I am trying to figure out what could be different, because their json is the same as yours, basically
thats what is stumping me as well
Does yours look funny when you test it without the cellar?
its looks the same with or without the cellar, and its just called simple house right now
And it doesn't work in isolation
could it be cause of the cabins?
I don't think so. I just tested doing a farmhouse map where I made it smaller than the vanilla farmhouse and got this
that is so weird. well I'm gonna have to see if there is something in the lune mod that lets me load it in
Does anyone know where the spritesheet that contains the joja cola sprite is located in the file directory?
Maps/springobjects
Thank you.
Right side, nearish to the top
It appears that loading a custom farmhouse2.tmx is insufficient to properly edit the farmhouse at houseUpgrade 2.
My patch export of farmhouse2.tmx looks like this
But standing in my house, it looks like this (note the bedroom length and the weird gap in the right-hand side hallway wall)
is there a way to alter time through an event? i.e adding an hour to the current time by the end of an event to somewhat bypass the effect of time freezeing (in single-player mode)
or is that a bad idea to pursue with npc schedules
that feels strange to me. i will have to continue working on this tomorrow, it is time for sleep for me but maybe sleep will help figure it out
It probably has something to do with renovations.
Hm, that was fun, opened SDV and it set my monitor to a resolution I can't set through my settings
Bespoke resolution
Oh, maybe I can, it's the only setting above 1920x1080 lol
I forgot this monitor is nicer than my other one
https://smapi.io/log/88fe22c5d6c44eedb0e73464be2faffc#footer
Hm, testing without CJB Item Spawner is gonna be kind of hard
Log Info: SMAPI 4.1.0-beta.1 with SDV 1.6.9 'beta' build 24248 on Microsoft Windows 10 Pro, with 62 C# mods and 23 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Try testing your map with the Lune mod again, but comment out the "Load" code blocks for the renovations in the content.json (everything from line 18 to line 118) and then see if your map still looks okay. If I'm right, it should look broken again.
My bedroom became the proper length when I edited the vanilla southern room renovation to move it further down.
Which, if custom farmhouse creators did that instead of just replacing the renovations with blank maps, would allow people to use renovations with differently sized and shaped farmhouse maps.
I could release my test farmhouse mod as a new custom farmhouse /j
Oh, third time launching the game and it didn't destroy my resolution, interesting
Long bedroom farmhouse mod
Honestly, the easier answer to the map issue is probably just make the map the right size
That only really works if you want a map in the exact shape and size as vanilla though lol
Or with differences only in the very few bits that aren't affected by renovations
Yeah, I mean there's definitely not much room with the renovations, they did also say their map was only compatible with like one renovation
So they need to disable them anyways
Or edit them all so they work with their map
Renovations are becoming a new nemesis
Yes, and they haven't been doing that so I think that is what their problem is. But when they put their map into the Lune farmhouse mod, the problem went away because the Lune farmhouse deals with renovations (makes all the reno maps blank) while their mod doesn't.
Ah, I didn't look at the Lune map
Just make your farmhouse map like that one gym from pokemon where you warp around to a bunch of tiny rooms, and extend it insanely to the right
[CP] FarmHouse Like That One Gym From Pokemon With Warps
Wouldn't you need something like the Farmhouse Fixes mod to dehardcode the warps? Otherwise you'd just warp to the front door every time
Oh I dunno, I've never actually tried to put a warp to the same map anywhere lol
Didn't know FarmHouse hijacked warps into it
hello there, is anyone here familiar working with Json Assets? I wanted to make a mod that adds a new output item to the Dehydrator (and prevents the input items from being put into Kegs or Preserves Jars), but I haven't been able to figure out how to do it.
is this something beyond the scope of Json Assets that I would need to use Content Patcher for? (sorry to interrupt the current conversation)
You can use CP for almost everything JA did
My bathroom mod has me reappear at the front door instead of back at the bathroom door
And really should
yes, but my brain vibes better with the way JA is formatted. I tried converting my mod over to CP in early April and realized that I have a smooth lizardbrain and couldn't figure out how to make CP work properly
for this kind of mod, you need BOTH JA and PFM
or just CP, which i recommend
so you would need to learn both JA and PFM formats if you want to do it with JA
or learn JA and CP format (CP for the machine part)
or just learn CP format
JA doesnt edit machine rules itself.
I've got JA on lockdown, I just can't get my brain around making CP work
I was never around when JA was big so I don't even know how it differs lol
this would be te place to ask then
i have plenty of examples for you in Cornucopia - Artisan Machines
I think if you try and do it with JA and CP together, not many people will be able to help with the JA-CP integration
fair enough. I've picked apart a couple of CP crop mods trying to figure out how they worked, but part of what makes JA easier for me is that every crop is isolated in its folder, which makes editing them much easier, while CP tends to have everything in giant files. is it possible for every crop to have its own folder in CP, or no?
its possible, imo its annoying but if you personally like the format there is absolutely nothing stopping you from doing that
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-include.md
You can use Include, however many you please
the nice part about CP is that you can organize mod files however you desire
Makes it way harder to help troubleshoot too
whereas JA limits you to a very specific format
my template CP mod for crops
https://github.com/6480k/6480-Stardew-Mods/tree/main/[CP] Mouse-Ear Cress
adding stuff to the dehydrator https://github.com/MizuJakkaru/Cornucopia/blob/main/[CP] Cornucopia Artisan Machines/machines/dehydrator.json
I love me some templates!
another question, I saw some of the CP crop mods also included everything into one single large tilesheet, whereas all of my crop tiles are the individual 128x32 crops. can I still use those individual sheets for each crop, or do I need to find some way to put them all into one large tilesheet?
you can use them individually
like i said, CP organization is totally up to the author
SVE uses individual textures (which gives me hives but lol)
Yeah it was the same for me and part of me still really likes that part of JA
For preventing your item being used in kegs and stuff, i would suggest just setting their category to be a non-fruit non-vegetable, but if you really want to keep them as a fruit or vegetable then you can ping me for help later since you'd need very specific code
You can! I just did for my mod
Speaking of I think it's ready if someone is willing to do a play test to make sure all the shop/ buy conditions work right
fair enough. my main thought for it was to give the items (herbs and spices) a low base sell value, but if you put them into the dehydrator, the custom item the dehydrator puts out would be much more valuable, similar to vanilla Raisins
for example, Peppercorns, at a base sell value of 50. put into a Preserves Jar, that gets Peppercorn Jelly after two days of time for 150g per jelly, but if you put them into the Dehydrator, that would get Dried Peppercorns that would sell for 750g after one day's time. if that makes sense
i think you mistyped but yeah
I did indeed, my bad, fixed that goof
i mean theres no reason to ban them from the keg or preserves jar if you dont need to, since players would realize its unprofitable. But your other option is to set it to some random category internally and use spacecore (or JA i guess) to have a custom category!
we also do that in cornucopia for our herbs
that's what I was going to ask next, there's a command in JA to mask catagories so you can add in catagories like 'herbs' and such, and wanted to know if that also existed in CP
players need spacecore for it, but the code is written in your CP mod
so you only need to "ship" it as a single mod
I figure if I need CP to make the new Dehydrator additions work, then I may as well transfer my entire mod over to CP just to keep things simple. (the Dehydrator is criminally under-utilized!)
My stance is, if you learn how to use CP to do something, you unlock every single thing that CP can do! Adding new items, trees, events, etc etc
So if you feel stuck, just come here for help
it's worth it
Everyone here is super nice and helpful
I don't suppose anyone offers classes on CP for Smoothbrains? XD I'll study up on the links I was given, then come back to ask further questions. hopefully, I won't need someone to hold my hand and I'll be able to figure it out on my own, but thank you very much for the help so far!
have you made a working CP mod yet at all?
I would recommend just following the steps on this page so you can make a mod that loads and works, then you can add stuff to it (such as my crop template) https://stardewvalleywiki.com/Modding:Content_Patcher
no, this would be my first one. my first mod (still unpublished) is my JA mod that adds crops to the game
Would you like me send you the CP mod that I just made? It's fairly basic, just adding crops. A remake of my old published JA mod
It's also helpful to have the CP docs open https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md
I would love to take a look and see how you made it work
I'll send it. Also your icon is so cute
thank you :D it's a luna moth caterpillar!
im sorry to interrupt but does anyone use StardewXnBHack for Content Patcher mod creation? I'm brand new to mod making :,))
You don't use StardewXnbHack to create anything, you use it to unpack the game's content files so they're in .json or .png or .tmx format instead of .xnb
!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.
And you use the unpacked contents as references or (with images and maps) to copy to use as starting points for your own assets
ah! thank you guys!! the wiki is a lil confusing :,))
XnB won't read my SMAPI files i believe? so i am unable to unpack the files needed, i think
Why would you want it to read SMAPI files?
hold on i think im just explaining it wrong give me a second to figure out why i need smapi for XnB to begin with
Are you using XnB as shorthand for StardewXnbHack or to refer to the file format?
Did you move StardewXnbHack out of the folder it comes in into the same folder where the game exe is?
yes for shorthand i'm sorry i'm very very new to all of this
That's okay, just clarifying so we're all talking about the same thing. You don't need SMAPI to unpack your game files (edit: I was wrong, you DO need SMAPI to unpack with StardewXnbHack), though you do need SMAPI to run mods. Like roku said, did you move StardewXnbHack out of the folder? It should just be sitting inside your main Stardew Valley folder, like this (ignoring how many copies of StardewModdingAPI.exe I have)
MagicWarp and Warp in the house
I will have to create something to test warping from other maps into the farmhouse
Ooh sorry I was wrong, the wiki says you do need SMAPI installed to run StardewXnbHack.
yes, it just is giving me a long string of errors :,)) there's something about unhandled exceptions?
Hmm. Maybe it's the type of warp I have that's going to the front door.
It's funny how long magic warps are
Can you spoiler your gif please roku? It's quite flashy
I did but you have to switch channels
I wish the eye would just always appear on gifs
Can you send a screenshot of the errors?
All gifs should be spoilerable live
Or fuckin' pausible, anything
Okay, took a minute but indeed setting up a warp from another map to the farmhouse the farmhouse just ignores the provided coordinates
also i swear if this is just the game files i need and im losing my mind im so sorry for wasting ur time ๐ญ
Is your SMAPI installed?
Yeah, 1.1.1 is for the beta isn't it?
yes, i even tried uninstalling and reinstalling
my bad, guys! i'll try that now, thank you!!
running now guys, thank you for helping with my dumb mistake :3
my mod is pretty much good enough for me to retired 
I just don't understand how you can exit the cellar properly
I tried setting a warp as a map property and that didn't work
Oh I found where it's doing it, indeed if you arrive in the farmhouse from not the farmhouse or the cellar it resets your position to the entry location, that's wild
(well that explains why my warp action was behaving strangely with the farmhouse...)
FarmHouse.resetLocalState
Some of the hardcoding I would love to know if there's a story involved
wow its still there
@vernal crest I tried to remove the add and remove southern room renovation and that didn't work at all lol
I still need to try making changes to what the actual renovation does, at the very least I guess the price can be set to 0 and then it at least won't cost anything to do nothing
How did you do it?
Just setting the entries in Data/HomeRenovations to null
They definitely get removed but I think it messes up the size the of the map
Or something, maybe there's some silent failing happening because it can't find the renovation anymore lol
Yeah the Farmhouse Fixes mod changes this
Yeah, unfortunate to need another dependency for something that probably doesn't even need to exist anymore
Hey @uncut viper, I had an idea for a semi-original take on a not-so-original idea and was wondering just how granular your trigger framework gets; can it respond to very specific events like "bought item <X> from NPC <Y>" or "accepted current quest from board" or is that out of scope so far?
The defaulted values aren't even used after they're set, it feels like it was a catch for accidentally forgetting to set a position when warping the player to the farmhouse
I think the farmhouse2 map gets all the renovation_removed maps added to it which are what mess with edits to the farmhouse2 map even when someone doesn't get renovations.
you can do trigger actions on shop purchase
ActionsOnPurchase field in shop entries
I have some other testing I need to do revolving around removing those renovations or changing them
But I'm going to bed, so sometime tomorrow lol
I'm not sure if that's really what I'm looking for. I'm talking about adding a trigger for a specific purchase from a vanilla shop, not a custom shop.
then you can modify the vanilla shop?
The way the Lune farmhouse mod does it works but it's quite a lot of extra stuff to have to have in the mod. It would be good to find a way around it.
its a field on every individual stock listing, so you can modify the vanilla one
though, if someone else has already done that, you'd need to be careful not to ovwrwrite it, but luckily its a list which you can add to and not a single string
And CP mods can add a trigger action this way as opposed to just replacing all the trigger actions?
Well, chances are good if I do find any way around it, it's going to be more convoluted then just making the map patches blank
I understand how the data is structured but typically in CP you can only get to modify root-level fields.
the questing trigger doesnt exist and like, it could be that granular, every one of my triggers is me going in and transpiling very specific points of code (with some postfixes) to call a specific trigger, so i could do that w hen someone accepts a quest from the board, though i think id prefer to just make it trigger on any quest accepted
(or so I thought)
Seeing as how I've already determined that the "easier" method doesn't work at all
you can use TargetField to drill down to any arbitrary field
And there's an "add to list" action for target fields?
you'd add an entry to the list the same way you'd add an entry to a root level list
Do u need to use "#1" for this?
no, it's better now after version 2.3.0
you can use the string itself as the key
Ok, I guess that answers the shop question specifically. Sounding like there isn't an all-encompassing solution for all of these things. (And of course I understand that the framework is just a big pile of transpilers)
a general-case trigger could still be useful if you want to check for any item bought that matches certain characteristics, though, but if it really is just a specific item, adding to the ActionsOnPurchase list is best
the tyranny of #-1 will haunt us no more
I thought the #-1 was clever lol
Suppose you added a trigger for "quest accepted", would there then be some way for a CP mod to determine it was the board quest?
To be honest, I've always wondered why the base farmhouse2 map doesn't have all the renovations visible and then add empty patches until the renovations are bought.
Could be as simple as "renovations were added later" though, for that one
I think mostly just because of how the renovation system works entirely
i could add a field to the trigger's fake item that includes whether or not it was specifically from the bulletin board, however doing it that way would require a lot more work, bc id need to raise that trigger from the specific board accept button, bc i cant just postfix addQuest bc i wont have any information about where the quest came from unless i hardcoded a list of questIDs that appear only on the board (gross)
which would then mean id need to do that everywhere a quest is accepted, rather than in a generic postfix
(also in case it wasnt clear since i forgot to specifically answer, doing it that way would let a CP mod determine the source, the GSQ you'd use in the trigger action entry would check for it)
In code I think it would involve checking for ItemDeliveryQuest and maybe some fields on it. But I guess CP can't go that deep.
i guess i could theoretically split it into two triggers, one an all encompassing "whenever a quest is added" trigger and one thats just "when you accept a bulletin board quest specifically"
There's even a dailyQuest field.
just addin a check f or the bulletin board quest would be ezpz, its just that i wouldnt want to leave it that specific
lwhich might sound weird bc a lot of my triggers are very specific, but usually only when there's not a more general case to look for
(or the more general case would happen like, constantly)
player.acceptedDailyQuest has a setter which you could postfix to check for it
Yeah I get it. I mean, CP is not code. The obvious flow is "trigger on quest accepted, then get details about this quest and check X and Y details" but that requires code.
all technically easy code, just major annoying to find every place it'd be needed 
if i release that "harmony patches defined by CP" addition to Special Power Utilities though you could postfix it yourself, though, lmao
Right. I could very easily write the code myself to do all these things. But that is not the point of the idea in my head; the point of the idea in my head is to enable content patches/packs to add a particular kind of functionality.
Easy code, but not easy (or possible) CP.
seems like the toddler might need that shotgun after all
Don't worry too much about it, this is literally still in the vaporware idea/brainstorming phase, not even at the point of a high level design.
(it also doesnt help me going back and forth on whether or not that feature is better in SPU or BETAS, bc it could just as easily go into both)
i only initially wanted to put it in SPU bc it would help it be more of like... yknow, a helpful framework for doing special power related things
It doesn't answer your general concern, but none of what I'm thinking of would belong in SPU. (It might not belong in BETAS either.)
Accent Core Plus R
Nah, I think if it gets to the point of requiring the content authors to name actual methods, then the design (of my hypothetical mod) is wrong and needs to be reconsidered.
If it is not easy to use then it wouldn't gain any traction, and even I would see no point in using it myself since I could just write the code.
if harmony can let me find a method/property to patch without knowing what the method/property actually is then im all ears
I think it's not about finding stuff to patch tho
Not really possible with Harmony. Or with Stardew's architecture in general.
(i do mostly agree though, i dont think its very useful, im going overboard on it bc i find it fun tho)
For most people they just want to do X when Y and u r provide set of sensible Y
Yeah, I picked the quest board as an example because I figure that expansions like Zuzu or RSV might have their own daily quests - not that I play them, or have actually confirmed that.
yeah, and for a sensible Y thats easy to add id go "sure ill add that" in every case, id never actually recommend someone do the CP harmony patch thing
but theres a lotta functions and a lot of things that someone might wanna watch for a trigger and itd be difficult to ever account for them all
or in some cases i could account for them but just Don't Want To bc of the amount of effort it'd be
RSV does have daily quests; IIRC it uses its own quest board class that subclasses the existing one
(or was that the special order board)
I figured. And mods might also add shops with rotating stock similar to vanilla desert trader, Krobus, etc.
i know it has a separate special order board, no clue if it also hasa daily quest board
it does have daily quests, I just haven't looked at the code of that one
Special orders are somewhat less important but still worth looking at.
can you accept an RSV daily quest and a vanilla daily quest at the same time?
yes they're separate
RSV daily quests are mostly just Carmen telling you to fish lol
I don't want to get too hyper-focused on quests per se, I just picked it as an easy example. Another one would be catching a particular fish, along with a condition for whether that fish can actually be caught.
i guess i could add a QuestAdded trigger, and in the GSQ you could check if the player was in an area near the daily quest board
i did add a FishCaught trigger!
Which I guess does speak to the "million little things and no general solution for all of them" issue. I just asked because BETAs kind of was tackling those million little things.
and it passes the fish itself to the trigger context, so you can check what kind of fish it is
among some other info
Right, I do remember you talking about the fish.
i do like tackling the little things, i just like em a little bit less when it involves catching the trigger in the 5 million different functions it happens in
I don't think that's the case with the quest though? Just "quest accepted" along with passing data about the quest in the trigger data.
in the case of addQuest, it happens in 20 functions if you dont count the debug ones
right, but addQuest itself doesnt pass any data about where the quest came from
its just a string quest id
so if i wanted to know where the quest came from, id need to trigger it where the addQuest call actually happened to know
Quest.getQuestFromId?
but how do i know it wasnt added from, say, a letter that gave that quest id?
or another trigger action?
Well, in this case the dailyQuest field would probably cover it. I think.
There's also a questType which I'd have to dig into.
but you could add the dailyQuest questId to your quest log with actions elsewhere
i also dont know what questType is
but if can cover it then id absolutely add the trigger
That's OK. That is, I obviously don't speak for everyone who could ever use it, but when I asked about the daily quest I wasn't really concerned about where it was accepted from, just the fact that it is in fact the daily quest.
if you just wanted that and not that it was specifically (reliably) from the bulletin board, then yeah, thats totally within scope
I am wondering how a daily RSV quest would differ from a daily vanilla quest. There must be some way. I completely agree with you that trying to hook every place where the quest could be added is not the right solution to that problem.
(interestingly, Quest has a function called isSecretQuest() that always returns false. i wonder what kind of secret quests were originally planned?)
SecretLostItemQuest
(oh, its a virtual one, that explains it a bit more)
I believe it's at least used for the 'necklace found in the spa' quest
(basically a fetch item quest that has no log entry)
it might just add it to the quest log without actually marking it as a daily one, though i think you can technically have two daily quests at the same time, but setting the acceptedDailyQuest flag on the player would probably just mean the bulletin board wouldnt show one anymore
I'll think on this. Maybe it's best I start with a high-level design translating into a "wishlist" and then I can circle back to see if you're amenable to adding some of the things that don't already exist.
(i just checked and yeah, the acceptedPlayTest field is the only thing the bulletin board checks for)
... acceptedDailyQuest. Mae incepted my mind for a second there
(more accurately it also checks if the quest actually exists and isnt null but i figured that wasnt relevant)
I am more than willing to receive a wishlist of triggers to add, for sure, so long as the person sending me the wishlist doesnt mind if I turn some down and wont take it personally 
The quest one I can already add, even if it was more hypothetical, because it can still be useful
Of course not. As I said I could always add all those things directly, but if there's already a framework mod to handle it, then why further clutter up the mod database, right?
I take very few things personally, approximately zero things that happen on Discord.
if nothing else it'd pull me away from this cp harmony patching hole ive dug myself into thats taking up too much of my thought process lately
which is a plus
I have to focus myself a bit too, probably... will not be so productive trying to work on this idea, the fishing helper, the mail mod and the logistics mod all at the same time, while still maintaining all the other Stardew mods and Beth tools. That's why I'm being vague, don't want to waste people's time with phantom feature requests.
I wonder... Would it be possible (with a code mod) to have a map where you can place buildings yourself, then have custom NPCs move in and play like a little build sim? Would obviously be a bit more ambitious as a mod, but the idea intrigues me.
that will need a bit of code yes
do you want possible or easy
Possible. Not easy.
It's code, nothing's impossible.
then the world is your oyster
the SMAPI API and vanilla stuff can go far, and whereve it cant go, Harmony can go basically wherever you need to
"Have custom NPCs move in" sounds like you'd have to make custom NPCs which is 50 hours of work right there... unless that really means having vanilla or existing-mod-added NPCs do it, which is a lot more work on the code side as schedules are very finicky.
The easiest way to do this is prob fixed buildings as map patches 
But possible? Absolutely.
In a way you r kinda doing east scarp?
Something a bit harder would be custom farm buildings that npc can path in and out of ig, unclear how to impl off top of head, but it's not impossible (just need C#)
if you're fine with not actually doing freeform building placing (like farm buildings) and have a static town layout that you repair overtime with resource quests and the like, it's achievable with just CP
Yeah the NPCs is one thing. I do have some already finished, just need to re-make the schedules.
Perfect! Oh yeah Harmony, that's the only "scary" thing I didn't mess with yet. But I think my C# knowledge can carry me there.
Good to know. I will look at my possible solutions and come up with a decent working plan. It's definitely going to be a long term project, but now that I have the steam deck I can play the game more often especially on the way home. Which means I have now good reasons to keep working on mods!
Thanks everyone! 
signing off with these insane visuals I got while testing my animal multiproduce feature (credits to chu/e for the idea to make them debris instead of actual objects to not clutter the coop/barn)
||yes, they are flinging poop in the air the moment I enter the premises||
realism
Flying poop!
so, I've been working on moving my mod over to CP (spring crops first since those are easiest to test) and so far, I've been able to get them to load in and be purchaseable at Pierre's.
however, when I go to grow them, they aren't using the growth .pngs that are supposed to be attached to each crop, they're using the Parsnip growth .png instead. is there something wrong in my code that the X_crop pngs aren't being recognized? SMAPI isn't throwing any errors, otherwise I'd share those, too
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
this one, correct?
(ignore that sorry)
no worries
okay your asset name has assets but you're using asset in the crop code
missing the s
....that stupid 's' has tripped me up in this thing so many times, I should not be surprised that it struck again. thank you, my eyes just weren't seeing it, thank you for being an extra pair of eyes
Btw you can use {{ModId}} token
I am sorry, you are talking to a walnut, I do not know what the difference between ModId and (I am assuming) TargetWithoutPath are. what is the difference, and why is one worth using over the other?
rather than having RiftstalkerSekun.CropExpansion over and over again, can replace that with {{ModId}}
ahh, that would save my fingers a lot of work, thank you
im bored guys:(
perfect, made the changes and it works great now! just one more question. Mangosteen seeds are supposed to be a year 2 seed, yet I am seeing them in Pierre's shop in year 1. is this not the correct syntax to have them only appear in year 2?
Need a comma between spring and YEAR
since SEASON and YEAR are separate conditions
ehhh mangosteen seeds so cool
otherwise looks good 
ahhh, ok, thank you again! ๐ซ
hey guys, can anyone explain how DP works? im reading this article but i dont see anywhere payment could be processed? https://www.nexusmods.com/news/15057
other than payouts being later on
10k minimum
i must grind
ty avi 
May I ask why I used the (Farm Type Manager) to add minerals to the mine in advance, and this situation occurred in the old file (the old file was originally normal, but when I came back a few days later to continue the production, it became like this), I opened a new file to check, and everything was normal in the new file, only the old file was like this.
i think it tried to continue spawning mine items every day
?
i've never used FTM for my own mods so bigggg grain of salt
Thank you very much! I'll check it out!
Not technical question : where is the best place to fish for mod suggestions ? I plan to extend my mod to SVE but I never tried this expansion mod (I would still play it before releasing anything, though) I just wanna test the waters
if you don't set settings so the spawn is unique it happens every day based on the condition you set
you can have various setting so you can make chance lower or have condition or both
some of my spawn happen only 4 a month
This channel: #making-mods-general , is for discussing mod making & providing author resources btw
But modded farmers is for any question relating to mods that donโt involve making them 
Speaking ofโฆ What do yall think? https://discord.com/channels/137344473976799233/1281177153441890407 
suggestions are kinda in the middle of it hehe, well modded-farmers seems to be a more "casual" channel so maybe making-mods-general is more appropriate
anaira is correct, mostly because most of us here don't even regularly play the game, so we dont have good feedback (need help making a mod? sure! need help wondering how to integrate your mod with SVE? crickets.)
you can also ask in the SVE server, which may get you more feedback
@drowsy pewter Oh I forgot SVE has a server ! I totally should go there, thanks
Question about the CustomBush mod - when creating a custom bush, do you need to specify a change in texture according to the season or is it enough to just load the texture?
Outside of using a separate conditional patch to change the Texture field, I'm not seeing any way with the framework itself to change texture according to season
Github has decided I'm done, I guess (turned into a loading simulator)
So yeah, it's not the framework itself that switches the season, you're doing the conditional texture load
Are there any requirements for the name of the texture file for bushes?
It's just using CP, so same rules that CP uses
https://github.com/MizuJakkaru/Cornucopia/blob/main/[CP] Growable Forage and Crop Bushes/content.json#L134-L139
https://github.com/MizuJakkaru/Cornucopia/blob/main/[CP] Growable Forage and Crop Bushes/data/teabushes.json
I gotta run, but this is the pertinent places from Cornucopia
Or I guess, Growable Forage
yeah i think that solves my issue, I need to add in blank versions of all the renovations to my version of the house. i was hoping to release this before my surgery tomorrow but looks like I got more work to do. might take this time though to actually adjust a couple of the renos to match my house though
whoops lol its been so long since i wrote the mod
Still good to have an example, was surprised to find there's basically no documentation for the framework lol
my mod is basically the documentation
This needs to be pinned with a link to your mods in general lmao
!cornucopia when
Fair enough
I had to mess with the connector for one of my boards and find myself having to document my BS today lol
Documentation isnt very fun but still critically important 
I forget even what some of the things in my utility library are meant for after long enough
Speaking of reading docs though, the wiki describes the selection of fish in an area as:
A fish is selected by combining this field (the
Fishfield in aLocation) with the equivalent field on the Default entry, sorting by Precedence value (and randomly shuffling entries with the same precedence), and then choosing the first entry whose fields match.
I love documentation because I am thinking ahead to when Future Me looks at the documentation and thanks Past Me. You have to imagine the gratitude but it will be there.
To use some example lists to show how I'm processing this, if Default has fish [a, b, c] and location Forest has fish [d, e, f], Would the following seem right?
- Same precedence =
[a, b, c, d, e, f]=> Randomly shuffle all =>[b, f, e, a, c, d] - All entries of each individually have equal precedence, but Precedence of Forest fish is greater than Default ones
=[d, e, f, a, b, c]=> Randomly shuffle same precedence (a/b/c shuffle, d/e/f shuffle) =>[f, d, e, a, c, b]
I just thank myself for keeping the code I want to reuse readily available
especially the read/write file contents functions to deal with common cases (file DNE, file might exist) when reading/writing
Its a constant process of thanking oneself for the current doc comments and repaying it by writing new ones
As to my understanding of it, this seems right
Okay, nice, this means my next question is worth asking. Another thing I've been wondering about is how the game builds fish for sub-areas (FishAreas in locations).
If I have Town and Fountain, where Town has Fish fields [a,b,c], Default for the game has [d,e,f], and Fountain has [g], it's my current understanding that fountain should have [a,b,c,g], but I'm wondering if it takes the default for the area and/or the game, which could also create [a,b,c,d,e,f,g] or [d,e,f,g]
I see Areas with a Position value have priority over those without. as a descriptor for the Position field in FishAreas, which suggests it might be everything, but ordered with Fountain over Town+Default, which would always be like [g,a,b,c,d,e,f] regardless of precedence(?)
It's funny that every field in FishAreas is optional
Yeah, can just straight up have a fish area of "Nothing": {} i guess
I'm really confused as to how FishAreas would work without a position, is it just the whole map lol
Oh yeah, null is anywhere
SunRoom supposedly has it yeah
So if a, b, c don't have specific FishAreas, then they should show up everywhere by default, and same for d, e, f in the Default Location data, so if you're fishing in the fountain you would get a, b, c, d, e, f, g
And if any of those specify a FishAreas that isn't Fountain, it shouldn't show up in Fountain
Since it should still be building the total Fish list from both the current location and the Default location
Huh, neat, and for the sake of it, if it has a defined position and whatnot, should the ordering not put g in the front of the queue upon setup?
Ignoring whatever Precedence may be
I would have to look at the decompile to see which one goes first in that regard
Ahhh ok. I might be able to look at it myself too, assuming I can get my hands on it
!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
Ah nice, that's not too bad. And C# is at least familiar
Sometimes helps to poke around the code, though when you're working in CP it's mostly a curiosity lol
So looks like it sorts by the position first and then precedence
But position is still before that?
Wow, SMUI really just took SpaceCore's UI and edited it, huh
Didn't even rename it a little bit
I see the resemblance, I just haven't touched either I suppose ๐คทโโ๏ธ
But dang ye
especially the same name
whats SMUI
It seems to be a copy paste of SpaceCore's UI stuff, posted just this morning lol
...they put it on nuget too
well sheesh
per the terms of the MIT license they are required to attribute you in every file they copied and in the license itself. it does not seem like they did
Yeah, Pathos mentioned the same thing. I'm trying to decide which way I want to do this
Oh and they took code from Valley Reminders apparently too (or maybe that's their mod)? https://github.com/Dannode36/SMUI/commit/7c8f58787968ace1c59c5cb98caeba8e3f8d64cf#diff-55a9df8483da3481c01f399b29a6df84e900d241fd572d4efd7ced31869e6876
They have a repo for Valley Reminders.
im kind of confused about this thing, it seems to be library but also has a ModEntry?
Oh, well, checking the decompile was nice too since it shows that errors/null just fish up trash anyway
These commit names lmao
I mean, I have bad commit names a lot too
Oh boy
I don't think I've ever named one "Holy shit it actually works"
nooo
This person doesn't seem to understand code licensing at all
Honestly, I would just make a pull request where you add your license as a file-level comment in the files that are applicable.
My biggest concern is that people will see their nonsense on nuget and think using it is a good idea.
And say something like "hey, the license says you are allowed to use this, but you also need to include the license notice."
And then eventually, version conflicts.
(Personally I'd just tell them to do it themselves lmao)
hey so im wondering about how to go about something graphic wise. so if i want to make a card like on this example, should i just go ahead and make it or would something like this have to be in pieces and be specific sizes like how map tiles work?
True, it is MIT
been wanting to make it but havent yet because im not sure how to go about it and i dont want to end up making something i wont be able to use
Yeah, then open an issue about it in that case
how do you do the attributions for an MIT license? In comments in the code or a readme?
here is a new sorta issue, when the spouse room is added it adds this part of a beam to it, and when the corner room is added the beam is added onto. however, there is nothing in the spouse room map that adds it, nor the corner room map. does anyone know what map is adding these?
ive seen it done in a module (file) level comment
typically a comment in every file you copy and part of the license itself
Yeah, but they didn't follow the license terms (attribution), and have it licensed as for themself only
and also as a NOTICE.txt
I usually just make it a comment at the top of the file, either including the full license, or mentioning who the copyright holder and a link to the license.
good to note
The MIT license doesn't have rules about how attribution should be made like some other licenses.
It just says there should be attribution
And that the license should be "included"
it actually does. it says The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software., which is pretty explicit
(This is part of the reason why I'm hesitant to make future mods like MMR open source)
Yeah, i meant that the License for space, my bad. Also just realized they had an MIT license too..
example with a cmake module https://github.com/CLIUtils/cmake/blob/master/FindTBB.cmake
I'm also partially trying to understand this, licensing stuff like this is something i more or less see happen than work with
(This reminds me I never got around to writing a custom anti-curseforge license for my stuff.)
Absolutely fair, I guess the only real way to avoid that in the future is.. more restrictive of a license? If that's even possible. I'm sure something enforces more attribution / credit where its due
In any case, an eugh to plagiarizing from me
more restrictive licenses are possible, and indeed the norm for software. usually you get a black box
yea
if they didnt obey MIT as described then the only way is to keep your stuff closed source 
You could just put a license notice at the top of all your own files. Then the only way someone could possibly mess it up is if they intentionally removed it.
mhm, thats what I did for the one and only thing I made open source so far
though ig i might want to relicense that upon second thought..
Eh, I used CC BY-NC-SA. That describes credit needs to be given to me, no commerical products from it, and all under same terms
I should start doing it lol, I'm not even putting a notice into the license
though should I use my real name or my internet name, and which internet name
I just have a blurb of Copyright (C) 2024 Romayne (Contact @ https://...)
I see no reason to doxx myself for copyright lol
just goes to my github
it might be FarmHouse1_marriage and FarmHouse2_marriage
these have placeholder room for spouse room
oh i rmbr hearing that CC not recommended for project source code
๐คทโโ๏ธ maybe? I wouldn't know the why of that
Ah
it came up pretty easily in results. Ok. Might need to then LOL
if you're doing -BY it's better to use MIT/Apache, and if you're adding -SA it's better to use GPL
as for -NC, it's kinda a legal mess where software is concerned, not the least of which that your software is technically not open source if you're using -NC so there's no license for that
CC itself does not recommend itself for software. https://creativecommons.org/faq/#:~:text=The only categories of works,otherwise in the public domain.
Thankfully I only need to change one file 
CC licenses do not contain specific terms about the distribution of source code, which is often important to ensuring the free reuse and modifiability of software. Many software licenses also address patent rights, which are important to software but may not be applicable to other copyrightable works. Additionally, our licenses are currently not compatible with the major software licenses, so it would be difficult to integrate CC-licensed work with other free software.
I've been using GNU AGPLv3 because I am using other mods that use the same license for reference so I must.
Just know that your previous commits will still have the old license
Yeah, it seems reasonable
Eh thats fine, the code quality of the aforementioned project is dubious at this stage, if someone really wants to go ahead and do that I dont think id be mad. Good point though, just gotta do smth about it sooner than later
The only thing I would have liked to have done before was whatever I need to try to deter AI training, as if they don't just ignore that
I treat that as a lost cause honestly
they definitely won't honor whatever you try to do
Good luck even knowing who scrapes the repo
robots.txt needs to be enforceable.
I tried ChatGPT for some Euler's problems that I had already done and was unpleasantly surprised that it spit out my exact code uploaded a few years ago for the answer to questions 1-3.
I tried asking it one of the questions I hadn't done yet and it completely fumbled it.
Sounds about right lol
Working as intended
One thing I was wondering, if art is commissioned for a mod, how does that copyright work with a copyleft license? The mod author "buys" the copyright from the artist and then transforms it into the copyleft when it gets added to mod assets?
Typically only code is under the code license, not assets 
yeah I use Apache for the code and CC for the arts I make myself
Old commercial games that are made open source usually does not include the assets in the license
Feels like it would be easiest to do my own art to avoid that headache of copyrights for assets.
working out the license terms with your commissionee ahead of time is important, i think
trash has how much precedence? what the
Doom for example is open source, but the assets are still under copyright by id software so if you want to build Doom you still either have to buy a legal copy to get the assets or draw everything yourself
Trying to understand this, if trash has 2000 precedence and is a part of the "Default" keyed fish data, would it not go to the front of possibleFish each time?
Or is it ordering in reverse, somehow
Ok, thank you for the sanity check
I thought it was higher number better
That's all the fish for a location that it gets, so presumably it is only the default location and the current area by ID
So going back to this, the result should be [a,b,c,g] as far as the possible fish go, sorted by precedence (a/b/c is trash from default, let's say, ignoring that it is all a part of one location), result should rather be [g,a,b,c]
And randomized if they're the same precedence after that
Yep
That's actually a huge help, thank you so much 
The current algorithm I have for getting the base proportions of fish in an area is O(N!) and I haven't had luck getting it down to O(N^2) even after a lot of hair pulling, so being able to go from sets of 21 fish (1000+ years to calculate, owch) to a few seconds is critical
Each segment of identical precedence should be much more ordered, I would hope at most 9-10 fish in a row of the same precedence for an area like the beach would be the case
You need to discuss it with the person you commissioned art from
this anyone?
yeah it def seems pretty complicated so fair if no one knows how that would work, graphic wise at least. for the coding, yeah im likely gonna have to cmmmission someone if i can afford it. poor so. we see
perhaps it would also depend on how it gets coded
the short version is "you're on your own, do it however you like".
the longer version is that there are some graphics and parts of UI that you can reuse, and a bunch that are made for specific purposes and can't easily be repurposed. this is the main thing that makes UI code for mods so difficult
hello
of course and yeah makes sense. perhaps i can do the graphic however, and can just have the coder i commission just code it in like that
Any of you folks have experience trying to scale a speech bubble? I was thinking "just nine-slice everything but the tail, and draw the tail unscaled", like so (first image). However, because there's a gap in the center, that gap widens and the edges of the tail don't actually meet (second image). It doesn't really matter where I try to segment the tail sprite vertically, it's always going to look like this.
Is there a solution other than just grossly stretching the entire sprite without a nine-slice?
(Discord previews did some awful cropping there, need to click on them to see correctly)
I'm sure I've done this before, successfully, but it must have been with the tail farther to the left or right, not having one perfectly centered bottom pixel.
at that size in particular, it doesn't look bad enough to bother me, but i'm sure at others it would
Really? The grey not meeting the black would drive me nuts, personally.
probably because it's on a dark background
This seems like a good opportunity for a ten slice.
i would keep the nineslice but probably special-case the bottom-middle one to draw the whole thing with the bottom border. then draw the tail with the extra pixel on it to include the gap
Never even heard of a ten slice, what is that?
Slicing it into ten instead of nine draw calls, lol. The tail would need to be drawn with a tenth call in order to scale that correctly.
Yeah I don't think there's any way you could draw that with less calls.
Oh, I get that - I mean, that's the idea, there will be ten calls with a separate one for the tail.
Unless you wanted to write a custom shader just for nine slicing without nine slicing.
But even with the ten calls it will look like the image on the right side.
i think he was already doing that (ten calls). he's trying to fix the border on the bottom edge
Unless you mean scale the tail as well (just stretch it)?
The source texture should have the tail separate from the rest of the balloon.
Then you should draw the tail on top of the balloon where appropriate.
The issue is that there isn't a continuous line. The edges of the tail have to (or, IMO, should) meet the edges of the balloon.
The balloon is open at the bottom, if I'm making sense here.
.
If this entire region is a separate part of your texture, then you can just overlay it wherever.
Or even flip it to put it on different sides.
I think I'm not explaining this well - with the image you just posted above, what happens is that when the bottom-center slice of the bubble part (not the tail part) is stretched wider, the black edges are pulled to the left and right. They no longer meet the static tail.
I'm not explaining well either I suppose.
I'm saying, your source texture should be like this.
Completely solid bubble. Completely separate tail.
Ah. Close the bubble, and then use the tail to reopen it.
Yes.
Yes, that works when there's no transparency... Stardew's sprite isn't that, so I'll have to think about where this leads in terms of recolors and such.
Trivially easy to make one but then it's no longer using vanilla. Or I could hack in a staminaRect somewhere but it might be invalid if someone changes the bubble shape.
Which sheet is the vanilla bubble in, so I can look at it?
Boils down to - can't really be done well without changing the sprite in some way, huh? I mean, I couldn't think of a way either, clearly.
Cursors?
Is this the emote bubble?
emote bubbles are baked into the emote spritesheet
is this for textAboveHead? how does the game handle it?
My only other suggestion is to draw the entire bottom using just a couple pixels to the left side of the tail.
But that obviously could break for other reasons
I think textAboveHead might be the less-oppressive bubble at the bottom of the cursors sheet.
Yeah, using the bigger bubble would definitely help.
this is what i was getting at about special casing the bottom middle slice
I'd like this to be consistent with what many other mods already do, like the crop bubbles and so on.
I'm not sure I understand the difference between the second suggestion and the first one.
first suggestion: change source texture so bottom slice has full border.
second suggestion: use 3 or 4 pixels of the bottom slice (where the border is) instead of the whole slice, since it will stretch cleanly (for the unmodified vanilla texture)
I think I see. It's a little wacky, but essentially a kind of "reverse 9-slice" inside a regular 9-slice.
And that's... way too small to see anything.
Just took a screenshot. In this strange alternative patch, the center is the only part that isn't scaled.
I mean just stretch this bit horizontally for the whole width.
Yes, I believe that's the outcome of what I posted above - the left and right columns of the green table get stretched, center doesn't.
Of course I could also just take that entire 1-pixel-high segment as its own sprite and draw it between the two layers (above the nine-slice, underneath the tail). Probably would be the same result in terms of compatibility or not-very-compatibility.
(my guess is, works well with recolors, breaks down for major sprite changes)
At a certain point you have to give up and just let things look weird for major sprite changes.
True enough, an extreme re-spriting could just invalidate the fundamental nine-slice dimensions in the first place.
Stretching the entire segment across seems to be the easiest, as long as I also re-paste the tail on top with a 1-pixel overlap.
"Eleven-slice" looks like the way to go, thanks for the suggestions you two
Hii I want to ask- is making a custom NPC send a mail to farmer difficult?
If its easy, does anyone know how to do it
if you need me, ill be screaming. everything else is working as it should, EXCEPT THIS BIT
so you know what im just modding that bit back into the build, im tired of fighting it
Oh that's the dining room renovation
dining room addon was deleted
Unsure what you mean by this, this is vanilla feature
or maybe it wasn't, let me see if that works
Custom npc mail is same as most mail, what particular mail do you want?
just a simple one where npc tells farmer to meet them at their house tonight
Those are through day ending trigger actions iirc
you can put it into your content.json
ohh
you just have to also have an editdata -> data/mail
whats that? :o
blinks..
so i do editdata > data/mail and put this one right?
"Robin": "Hey there!^I had some extra wood lying around... I thought maybe you could use it. Take care! ^ -Robin %item object 388 50 %%[#]A Gift From Robin"
you were right. its fixed now. i still cant figure the other glitch but the house is now working in its own content pack and i should probably not be doing my actual job and modding at the same time
let me see if i can pull up my ref
for this one, it says modId... whats that?
thatd be helpful!! tyvm
{{ModId}} is a content patcher token that takes from your manifest.json of your Unique.ID
OH ok thats cool
"LogName": "Mail sends",
"Action": "EditData",
"Target": "Data/Mail",
"Entries": {
"{{ModId}}_LETTERID": "LETTER CONTENTS %%[#]LETTER TITLE",
}
}```
you can put it wherever you want, if you make a new .json for it, you have to include it as an action inside of your content.json
yeah
"LogName": "Trigger Actions: Base",
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"{{ModId}}_LETTERID": {
"Id": "{{ModId}}_LETTERID",
"Trigger": "DayStarted",
"Condition": "GAME STATE QUERY HERE",
"Actions": [
"AddMail Current {{ModId}}_LETTERID now"
]
}
}
}```
this is for the condition: <https://stardewvalleywiki.com/Modding:Game_state_queries>
for "GAME STATE QUERY HERE" it'd be PLAYER_HAS_MAIL right?
well you said you wanted the npc to send it, you have to have something that causes that unless it's quite literally "meet me here"
if it's relationship based, you use the PLAYER_NPC_RELATIONSHIP one
if it's heart event related, PLAYER_HAS_SEEN_EVENT etc
ohhhhhhh!!
i see that theres PLAYER_HEARTS thingy and i think thatd suit what im trying to do better
ok tysm! i will do my first trial run n see how it goes ... ๐ซก
Hey, if I use the editimage fuction of content patcher, will transparent portions of the image I'm using overwrite things on the source image?
Yes. If you don't want that to happen set patch mode to Overlay
Okay cool
That makes things way easier
Oh, and if I wanted to target multiple files (I'm replacing the bridge in the fall/spring/summer/winter outdoor tilesheets), would I be able to do that in one action? The documentation seems to say it is but I'm not certain on the syntax
Like would I do ""Target": "Maps/fall_outdoorsTileSheet", "Maps/spring_outdoorsTileSheet", "Maps/summer_outdoorsTileSheet", "Maps/winter_outdoorsTileSheet""
All in one "" pair, so
"Target": "Maps/fall_outdoorsTileSheet, Maps/spring_outdoorsTileSheet, ..."//etc
Gotcha
for this you can probably also use {{Season}} instead of specifying all the filenames, but that's mostly academic
Same effect but a bit cleaner
(there are edge cases where it makes a difference, but not in typical gameplay)
well, the main advantage of using the season token is if the file you want to use has seasonal variant too, in which case you can do all in one patch
Yeah, I'm making a mod that changes the color of a lot of the wood in the game based on my own personal texture edits, so that could come in handy if I decide to edit some of the winter ones
yeah, you will likely be using {{TargetWithoutPath}} or something like it in the FromFile no matter which way you do it
"Action": "EditImage",
"Target": "Maps/{{season}}_outdoorsTileSheet",
"FromFile": "assets/{{TargetWithoutPath}}.png"
and then just make sure your png source files are named the same
Though you will probably want to specify a from and to area
Rather than replacing the entire thing
Or I guess if you're doing a lot, Overlay instead
How do you get this format for text?
(On Discord)
!codeblock
You can embed code in Discord using a series of three ` :
Your code can go here
Even if not a haiku
Just an example
For syntax highlighting, add the language code on the same line as the first (with a space between, like json). The usual codes are cs (C#) and json.
Lol, still broken
they massacred my boy
It's the backtick `, same button as tilde ~
If you're on an English keyboard anyways
The codeblocks command looks fine for me
The first backtick isn't properly escaped it looks like to me
Which is breaking the rest of the block
I'm not sure how to edit commands
"Action": "EditImage",
"PatchMode": "Overlay",
"Target": "Maps/{{Season}}_outdoorsTileSheet"
"FromFile": "assets/QuarryBridge.png",
"ToArea":
{ "X": 0, "Y": 1114, "Width": 272, "Height": 102}
}```
Now if only discord didn't eat spacing
That's what I've got so far
So not doing any of the color grading?
Not yet at least
As long as your goal is to have the same source image overlayed onto the individual seasonal outdoor tilesheets, then that's probably fine, assuming your rectangle info is correct
Yeah that's what I'm aiming for
And that your source image is that size and not the size of the whole outdoor tilesheet
Yeah lol
Are you using a text editor with validation?
Notepad++
Possibly today, we shall see
Rmbr to turn on json plugin for np++
I've just been going without plugins ngl
(does mod author let me into seeing smapi patchnotes cause i wanna see how that i18n splitter goes)
New command added! You can use it like !codeblock.
!codeblock
You can embed code in Discord using a series of three ` :
Your code can go here
Even if not a haiku
Just an example
For syntax highlighting, add the language code on the same line as the first (with a space between, like json). The usual codes are cs (C#) and json.
nope
Hm, didn't fix it, that's weird
Maybe embeds have a different way to escape characters
What's dumb is that I have a mod basically ready to be posted to Nexus but I just haven't taken any screenshots or anything for it
And I've been procrastinating it solely on that
I just make sure I have one that can act like a title and then maybe one or two that give a basic idea of what it's doing, unless it's some kind of mod author focused mod
Yeah I just haven't bothered to figure out what to use since all the things I edited are items
If it's art focused, just take some screenshots of the items in game
i go with the always works: items raining from the sky
As for the words, nobody reads shit, so put whatever
You'll either have to keep explaining what you already wrote anyways or just ignore users
My first mod just starts with "I literally made this in response to a Tweet"
Somehow it's been downloaded by 1300 people
What's the mod?
Another one that makes Shane not a drunk post-marriage
I don't even have any personal investment in it
i was always bothered that his spouseroom is a mess
Yeah I just removed the mess and edited his dialogue
I just made it so that he loved ||ginger|| beer in my mod

Gin***
Bahah
With wonderfully written lines like "Bad_8": "Yeah... hic ... Sure, honey. Whatever you say... hic. Sorry, I've got hiccups."
I have to keep resisting the urge to procrastinate on my big mod and make another minimod to make Pierre less terrible
IT WORKEDDDD IM SO HAPPYYY thank you so muchhhhhh!!!!!
Or "spring_1": "Ooo... my throbbing head. I rolled off the bed last night..."
Hangover? Nah, brain damage
Same difference lol
Real
God I wish I knew anything about how discord bots work
No idea, technically that \ is there on the website where you can see all the commands, but it apparently isn't doing anything in the actual embed
It escaped itself and was pleased
hi all! anyone know if there's a way to make events repeatable?
I made an event that lets you sleep over with the person you're dating, but i want that to be an option any night
you can attach an event to a gifted item, or a dialogue string https://stardewvalleywiki.com/Modding:Dialogue#Dialogue_commands
you can also set it to a mailflag, with a triggeraction that marksactionapplied -> false
There's a specific command that makes events repeatable I thought
it's probably in trigger actions, i have waffle in mouth
No, in the event script itself
oh
i'll check back later if anyone had additional thoughts on this, i'm late for class ๐
thank you!
i'm not seeing it
oh well that makes sense
I've used it plenty of times though
i can shove it into the wiki right now if you want
Go for it
It defaults to true btw
And it has special logic where if the event ID is the current event, then it prevents the current event from being marked as seen when it ends or is skipped if it was set to false.
I've seen it syntaxed as [true|false] in other places
It seems inconsistent actually
A community run wiki is nothing if not inconsistent
viewport is the only one that doesn't use slash, so keep the slash I guess
viewport is a strange beast and i don't like using the other options unless i pull up the decompile to read what it do
i wish i could repro how i made the viewport hook onto my farmer though
New command added! You can use it like !codeblock.
!codeblock last try
You can embed code in Discord using a series of three ` :
Your code can go here
Even if not a haiku
Just an example
For syntax highlighting, add the language code on the same line as the first (with a space between, like json). The usual codes are cs (C#) and json.
buzzer noises
Yeah fuck it I guess lol
I would change the description to say, Used to prevent a mutually exclusive event from being seen
I'll have to bug someone who actually understands this bot
Because it default to "true" and makes an event as "seen"
You could mention later that it can be used to make events repeatable though due to the special logic.
nah if someone asks what that wiki means we'll just be like, "it's used for repeatable events"
i'm around enough to be like, "it do what it do"
(i just don't wanna edit the wiki a 3rd time)
a person should not need to come into the discord to be able to understand a wiki
The game never used it for that purpose though from what I've seen.
It only ever used it for mutually exclusive events.
fine i'll edit it a 3rd time
But reading a wiki is hard, it's much easier to read what other people tell you the wiki says
doesn't all the other stuff not even say what the commands are used for, just what they do?
yeah, there's also a lot of blank spaces that don't describe the optionals
i will not undertake that until my midterms are over, i already planned to migrate 1.6 npc changes into npc
if all the command does is mark an event seen, that's what I'd personally put in it and not say it's "used to prevent mutually exclusive events" because that implies it's the only use
There were a few other event commands I saw that were undocumented.
okay my waffles are consumed, i'mma change one last time because i was copying and pasting rather than actually reading
/action
/showItemsLost
/locationSpecificCommand
/unskippable
/setSkipActions
/playPetSound
/stopSound
by skipped if set to false you mean it just doesn't show up?
I just canโt understand whatโs wrong with this code and why planting seeds doesnโt work ๐ข
https://smapi.io/json/content-patcher/5df9ac0841a940a9a182a9af30a09438
https://smapi.io/json/content-patcher/d2ba35d36809488c81eb99a2777caad4
MK_ChampagneGrapeCrop in Data/Crops should be MK_ChampagneGrapeSeed
If /eventSeen <THIS_EVENT_ID> false was called before the player hits the "skip" button, then the event will not be marked as seen, and the next time the conditions are met to see that event, it will play again.
I'm back! Finally have a second monitor again! Ready to tackle making a greenhouse that can be upgraded.
Also, TextureSpriteRow isn't a thing, it's SpriteIndex
Also no DisplayName
it didn't like me touching that so i'mma leave it for now
Remind me in 48 hours to fix the event wiki addins
hahahaha what? are you serious? I'm a bot not an alarm clock but okaaaaaay (#6224789) (48h | <t:1725738408>)
Hello there, I'm trying to make my mod apply some patches only when certain files are present in its folder. The idea is to allow users to choose which patches to install without clogging the gmcm menu as currently each patch is its own mod. I've attempted to use dynamic tokens and HasFile, to no avail ๐
...
"DynamicTokens":[
{
"Name":"FarmersMarketPatch",
"Value": "true",
"When": {
"HasFile: patches/mrssiFarmersMarket/shop_marnie.json, patches/mrssiFarmersMarket/shop_willy.json, patches/mrssiFarmersMarket/shop_clint.json, patches/mrssiFarmersMarket/shop_sophia_sve.json, patches/mrssiFarmersMarket/shop_susan_sve.json, patches/mrssiFarmersMarket/shop_andy_sve.json": "true"
}
},
{
"Name":"FarmersMarketPatch",
"Value": "false"
}
],
"Changes": [
{
"Action": "Include",
"FromFile": "patches/mrssiFarmersMarket/shop_marnie.json, patches/mrssiFarmersMarket/shop_willy.json, patches/mrssiFarmersMarket/shop_clint.json",
"When": {
"HasMod": "br93.FarmersMarket",
"FarmersMarketPatch": true
}
},
{
"Action": "Include",
"FromFile": "patches/mrssiFarmersMarket/shop_sophia_sve.json, patches/mrssiFarmersMarket/shop_susan_sve.json, patches/mrssiFarmersMarket/shop_andy_sve.json",
"When": {
"HasMod": "FlashShifter.StardewValleyExpandedCP, br93.FarmersMarket",
"FarmersMarketPatch": true
}
}
]
...
These are all the commands in the latest stardew version that aren't documented on the wiki:
Action
ShowItemsLost
LocationSpecificCommand
Unskippable
SetSkipActions
PlayPetSound
StopSound
PrecisePause
ResetVariable
WarpFarmers
IgnoreMovementAnimation
HostMail
Null
AddSpecialOrder
RemoveSpecialOrder
WaitForTempSprite
BgColor
ElliottBookTalk
RequestMovieEnd
RestoreStashedItem
AddWorldState
TranslateName
ReplaceWithClone
PlayFramesAhead
ShowKissFrame
DrawOffset
AnimateHeight
SpriteText
QuestionAnswered
GainSkill
MoveToSoup
oh, Iโm completely confused, I think thatโs what I indicated in the file
Can't believe there's a dedicated MoveToSoup command.
Change the order of the tokens. Not sure how hasFile works, but dynamic tokens are read from top to bottom. Basically, itโs set to true first and then always set to false atm.
(Also, Null
)
there's a Null trigger action action too
I tried that, they were the other way around before and nothing changed unfortunately
In that case, itโs probably that the hasFile that doesnโt work the way you want. Like I said, though, I donโt know how it works, so someone else will have to take over.
i assume by checking in the folder, you want the user to drag and drop these files in? i'd just clog the gmcm tbh
Thanks for giving it a try 
I've too many patches planned, gmcm would become a nightmare ๐
I think HasFile can only check one file at a time
Any commas are counted as part of the name
Oh, wait โ are you the guy who made the compat patches for that realistic shop inventory mod?
You could probably do something with Query to check for multiple
Even when it's file.json, file2.json ?
Yup
Based on the wording on the documentation, I think it's only a single file per HasFile
roku is correct: If the input has commas like HasFile: a, b.png, they're treated as part of the filename
you could be extremely asinine and make them separate optionals, set their own manifest.jsons and do HasMod
that's the super painful way though
Okay I'll try that, I tought having a .json before each comma would work 
You could try FirstValidFile
well if someone wanted multiple patches it'd only take 1 right? or are they all incompatible with each other
So
"HasFile": "{{FirstValidFile: assets/fileName1.json, assets/fileName2.json}}"
It would in fact return the first one it found
I guess, there shouldn't be aby incompatibility
Oooh that looks good
If you want multiple you'd have to do
"HasFile:assets/fileName1.json": "true",
"HasFile:assets/fileName2.json": "true"
```etc
So FirstValidFile you can use to match against any of the desired files at all, and the second would be specfically against the ones marked as true
Where you could also mark some false if you wanted to set up very specific combos
op- textbook finally downloaded,
goodbye i'm off to study
Thinking back on it, checking just one file per patch should work as users probably wouldn't delete random files ๐คฆโโ๏ธ
hello guys
Hiii
Hm, well, I'm forced to accept that making changes to the bots might not be instant lmao
Or maybe changing an alias doesn't work?
Maybe I should make myself a thread for spamming stupid bullshit lmao
You can't actually assume this
I got a complaint on Nexus on one of my mods because the person assumed they could just delete one of the folders I shipped it with
why?
So they just straight up deleted half the mod and were surprised pikachu when it didn't work (I think I lost access to the puffer surprised pikachu when I lost the discord emoji subscription, sad)
that has also happened to me
Thanks for the tip ! I'll keep that in mind ๐
Do I understand correctly that in which plant sprites are described, it must be called crops and located in the data folder and nothing else?
I've been trying to fix the dumb codeblock command and I've just been putting unnecessary crap in chat with it, would be better to just have a thread where my rambling doesn't mess with helping people lol
I'm not sure what you mean by this, the names of stuff is essentially up to you, so long as it doesn't conflict
If you mean the entry key of your crop, it needs to be unique across all the mods you have installed, hence why there's many suggestions to use the {{ModId}} token
(psst roku just spam #governors-mansion )
If you mean your json files, you can name those whatever you want as long as you have a content.json, manifest.json, and are including the extra jsons properly in the content
I did start doing command stuff in there, just not sure how spammy I can get with the testing lol
(i mean for my reload action we kept trying for like 10 messages so iunno)
Good enough for me, probably will just get a warning if I get out of hand lol (hopefully)
all organization inside your CP mod is completely your choice and there is almost never any structure that needs to be followed
How does the game even understand what sprite of a plant should be when planting a seed? By the same part of the identifier?
!codeblock it lives!
You can embed code in Discord using a series of three ` :
```
Your code can go here
Even if not a haiku
Just an example
```
For syntax highlighting, add the language code on the same line as the first
``` (with no space, like ```json).
The usual codes are cs (C#) and json.
i dont understand your question
Data/Crops entry keys are the unqualified item ID of the seed object, the crop sprites you set in the data
Thank you so much for the help @rancid temple
It finally works ๐
So the crop is tied to the seed by that unqualified item ID and the sprites of the crop are set in the data
(
I found it, it has neither pikachu nor surprised in its name)
if it is night time in game but you want to run an event that is set during daytime (ie: a flashback or a post-festival event) is it possible to set the event to have daytime light levels?
This means that I correctly understood the logic of the connection between plants and seeds. But the landing doesnโt want to work ๐ฉ ๐ตโ๐ซ ๐ต
Do monsters have invulnerability frames after taking damage? (Iโm at work and canโt check myself)
Not that Iโm aware of
Th eonly thing I van think of is making the map as an indoor map, but I think even those are affected by nightfall?
if they do it must be super small because otherwise the dagger skill would be useless
you can probably use the event command ambientLight <r> <g> <b> though i'm not sure what the default values are for daytime
Good point
Daytime disables lighting completely I think, so maybe just full white (or full black depending on how the command works) would work
I didnโt realize that was a command
i had an inkling i had read it once on the event wiki page; yup it was there
I wondered that but I wasn't sure if there were other changes for darkness as well. I want to set an event post Flower Dance but I'm gonna have to scatter lanterns around everywhere. It would be fun to imply the Flower Dance goes on long until the evening though.
(and that the part we participate in actively is but a small portion of it)
Phew, finally figured it out. By evening the brain already refuses to think ๐
Downloaded mobile sdv to have something keep me entertained on a train during the long weekend ride and accidentally got addicted 
And it inspired me to work on mod a bit before sleep ๐๐ฝ
anyone got a good event moving directional guide?
i am not sure what you mean but if you want to know where and how far to move characters, i advise DebugMode mod!! It shows you coodrinates of every tile everywhere. You just need to go to that location and turn walk with your farmer and note down! it looks like this
x and y axis
and if you want your farmer facing a certain direction, there's a useful guide here:
https://community.playstarbound.com/threads/guide-for-creating-custom-events.126394/
CUSTOM EVENT GUIDE
by Siv
Hello! I'm Siv, maker of Siv's Marriage Mod. This guide is meant to help anybody make custom events for their game. If you...
so when you write your event to make npcs or your farmer move, you write move [NPC] x y z
with z being the direction you want them to face at the end
Ohhh I just tack that to the end of the event?
... /end newDay/eventSeen etc"/,
Also thank you so much!!
can you put event commands anywhere in the script? im not an event person, but if i understood correctly before you might want it at the start? bc if the person skips to the end of the event with the skip button before that command happens, it wont work
someone can correct me if im wrong toh
Ohhh good point
something link said earlier, hold on
this one
Perfect ok
Thank you
I've done so many things I didn't even dream of before all you guys helped me ๐ญ๐
it's a maybe for throwing event commands anywhere, obviously it reads left to right, and you might wanna throw some flags somewhere that'll trigger specific switch events, and i think skippable acts... strange... if it's too far along in the queue
it is your choice when writing the event if you want to make it skippable or not
they're not skippable by default
ah, did not know that, good to know thank you 
i imagine an event thats repeatable is probably one you wanna let be skippable tho
but also yes you can put them pretty much anywhere, as long as you defined things like written in guides ๐
modding wiki has some amazing tutorials on how to write events
suuuuper helpful
I might have a play with ambientlight to see what happens
you can add skippable command at any point, you can even have a command to make it unskippable, some mods use that to alternate
and pathos added a command to set what should happen if the player skip before a certain point but i didn't look too much into it
waiting around here like an idiot to check on my NPC schedule changes which never happen because instead of "spring_Thu" I wrote "sprint_Thu"
the worse part is that capitalisation matters
i had schedules not working because i named them Summer_something
Yeah I had that problem with end NewDay
It was newDay
And visual studio constantly automatically adds brackets or spacing where I didn't expect it
Put it at the start right before /skippable
Am I correct in thinking that once a quest is completed, it's removed from the 'questLog' and there's no way to test if a player has, at some point in the distant past, completed a quest with a given ID?
completing a quest starts a conversation topic with the format questComplete_[questID]
so you can check past dialogue events if you're in C#, or spacecore has a GSQ for it
(iirc)
you can add mail flags in the complete dialog too
that is an easier way to go about it yeah. so long as you control the quest in question
yeah if it's your quest add a check in the dialogue
it's wayyyyy easier and canbe used for several things anyway
Hi, Iโm player for this game with modding
I have a question
I want to know have any mod that let player can wear or using thing from Scottish culture?
prob want to ask in #modded-stardew
maybe elaho
you probably wanna ask in #modded-stardew but theres probably a Fashion Sense pack for it somewhere
Hi
Is there an event or something to modify how much energy is lost when losing energy or do I have to use harmony lol
i don't remember if there was stuff for farmer in addition of elliott wedding outfit
so for tool energy use
increasing your skill level increasaes efficiency
iirc thats 0.5 less energy per 1 efficiency
0.1 less energy? I think?
possibly, i'd have to look it up in decompiles
I see I will try
Many thank
what is your use case?