#making-mods-general
1 messages · Page 571 of 1
Have you ever wanted to live in a cave? Or perhaps, take a cave nap? Well now you can without Harvey charging you. This mod adds a sea cave in a second large rock off the east pier.
https://www.nexusmods.com/stardewvalley/mods/42856
thank you 🫶
So, basically, if I want to make sure it doesn’t extend beyond the toolbar, the solution is—I guess I just have to switch to a different weapon to replace its sprite?
Why are daggers like this
small
This is true they are small
Well, it looks like I have no other choice. Finally, thank you to everyone who helped me!
will these correctly render in game where they show up listed in the layers? or
and Tiled question, why cant i copy paste a large selection right now? I could previously
Are you on the right layer?
Might have clicked the little dice button
🤔 I think i might have yes, i restarted and it's fine now
is it possible to have PerItemCondition check for several conditions? e.g. "PerItemCondition": "ITEM_CONTEXT_TAG Target EXAMPLE_1, !ITEM_CONTEXT_TAG Target EXAMPLE_2"
"PerItemCondition": "ANY "ITEM_CONTEXT_TAG Target unread_book" "ITEM_CONTEXT_TAG Target sold_book" "ITEM_CONTEXT_TAG Target read_book"",
This is what my book mod uses
Though it's 'either' not 'all of these', not sure if that's what you're looking for
my idea was to check for all items with that specific tag except for the ones that have the first tag but another that excludes them
If it's 'all of these', I'd assume what you posted would work but I haven't tried it
more specifically, I have mushroom_item but I need to exclude some of the mushrooms
[[Modding:Game state queries]] you can list several conditions separated by commas, and they will be evaluated as AND
your initial code should work
thank you! I wasn't sure if the same applied to the PerItemCondition field 
Hi hi, I’m trying to make a game state query that specifically checks if the bridge to the quarry is available but I cannot seem to figure out what to put in for it. Is there an event trigger? I swear I’ve looked the wiki up and down and I’m simply not seeing it. Thanks!
Hey all, wondering if I could get an opinion. I'm thinking about making a reddit post about my mod, but still have to add in a letter you receive after winter's over. I'll probably fix that in a few days, (maybe even later today) and since only will happen 5-4 weeks after my npc, I'm assuming most people wont get to that point immediately anyway. Do newly added letters from updates send if players update the mod if the conditions were met for it to show up earlier (before it existed)?
I think I'll just make the posts, and hope for the best.
ccCraftsRoom mail flag
If I get it done quickly enough anyway, it shouldn't really affect anyone playing normally
it's listed on the mails page
Thank you!!
Here I am again… I was wondering if it’s possible to craft a sword with the Dagger ability using only the Content Patcher? If not, are there any other mods I’d need?
I think they already know and they are trying to get around the weird drawing offset of dagger weapons (see posts above)
XY problem thing
Actually, this is my first time creating a mod. If it’s possible, I think I should go back and read the mod documentation to figure out how to do it. Thanks!
(Just to be clear, what I’m looking for is the dagger’s special attack skill—the one that lets you attack enemies quickly.)
the solution to your actual issue (if I'm inferring it right) probably involves transpiling the weapon draw code
MeleeWeapon.drawInMenu
Hi everyone, I’m new to the discord 👋🏻 and looking for mod creation help. This is my first time ever creating a mod, so please be patient with me. I’ve been using the official SV wiki modding guide pages as well as a few forums and other resources I’ve found through NexusMods, but I’m hitting a wall. Maybe I’ve made my mod idea too complicated as a beginner or I’m just not understanding the guides 😞. Is anyone interested in helping me with my mod idea that’s willing to answer questions, give feedback/criticism, and/or play test? Any help is super appreciated 🤍
Mostly anyone here can help you with anything mod related so don't be afraid to ask
What is your mod idea and what you've done already?
First recommended thing to do is creating a custom content pack or a custom map or a retexture so if it's something around that then even I can help
Okay I haven't dipped my toes in this channel yet because I wanted to have my maps made before I deep dived into the more complex stuff, but out of curiosity are the NPC pathways going to be an issue if I change the placement of something (like the fences in town).
And similar to that note, do I have to make sure the puzzle path for the golden Lewis follows the same route for the statue to trigger?
You can get the statue as long as you have the note, path doesn't matter
NPC uses a pathfinder so unless your fences spots is going to occupy one of their end point it shouldn't matter
it would be nice to retexture the path note to match your new thing tho
as mentioned the statue isn't affected but your players may complain if their note doesn't match
Okay so that part is fine, sweet. I did try to stick to the current town layout so I only made some fence and shrub adjustments
Spouces can walk around your furnished house and farm so any npc can do the same with most map changes me thinks
It's not? I tried to get it out in my vanilla map and it won't trigger without doing the path. But also I might be dumb
unless you enclose them or mess with said endpoints
So I'm dumby thicc got it (I'll try again tonight)
(SVE changes the town map extensively, making it so the Joja truck note no longer matches the roite, and instead of changing the path the author just changed the note to tell the player to go to the Joja truck directly)
I might just make the puzzle path still doable for purists but yah
Ohhh I never play it, good to know
Thank you 
Is there a way to turn my 2x3 tmx into a furniture piece like a sofa or a placeable jukebox which can be used without additional to cp frameworks?
or I need stuff like spacecore and such
since I need tiledata on it
oh the essay
Sofa you can do but it's not really easy
Have to write furniture data instead
For jukebox you need to make the furniture and then have something to associate the furniture with a tile action
You don't work with tmx files outside of map
It's png and data models
so its like a new object entry?
But I specify the texture and then manually add its tile data and properties
Check wiki on furniture
igh igh
The asset is Data/Furnitures
You need a framework like spacecore to do this btw
jukebox isnt a furniture I suppose oh
Vanilla furniture does support sitting but not arbitrary tile action
not in data furniture at least
yar I see
Nah but there's a jukebox map action you can repurpose
So u can make it furniture no problem
im fine with it being a separate non furniture thing too
ill take some wikis anyway
ty
Making it not a furniture would be harder imo
And still not possible with just content patcher
I try to recommend what I think is the easiest approach
Yeah im just scared to use additional frameworks
but its totally gonna be the way for my next work
my monsters mod is a huge step above what I could do
gradually gonna do a more complex stuff
once I learn more stuff and practice on my little projects, I will update them to match my skill
theres still plenty of space for them to improve
Dove its been half an hour of you typing please have some mercy
For spacecore in particular you are fundamentally writing content patcher json
Except the Target is a modded spacecore provided one
So it's really not that different, once u know how to do EditData in general it's applicable
I see
The only real difference between most frameworks and what you're already doing is how good the documentation is for the framework
Most however have very good docs
I suppose the more popular fw is the better its doc
That tends to happen naturally as more people ask questions about a framework they want to use
So more info and clarification gets added to the docs
But for every framework I've seen the author's happy to answer questions on it even if the docs aren't fully fleshed out yet
I don't think it's very true either
Is just like this
I think framework docs are prereq to release
(the assumption that popularity = better docs, I mean)
To add to what chu says there is no point to the framework existing at all if no one knows how to use it
Thank you! Would love to share my idea 😊 Sorry in advance for the wall of text I’m writing!
I want to add a new coop animal (chicken) with ContentPatcher framework. I always felt there was a huge gap between coop and barn animal profits for mid to late game, so I wanted to create a coop animal mod that fills the gap but feels vanilla- friendly.
My mod adds an egg that can be obtained from Qi’s gem shop which you can hatch with the incubator into a special chicken. I want the chicken to be configurable for two production modes to choose between: 1) produce special eggs with a new artisan product made from them that gives the player a couple buffs, or 2) produce a randomized set of rare items related to Mr. Qi and Ginger Island (items produced in this mode would all be vanilla items, but rare & valuable like iridium ore, cinder shards, etc.).
I already have sprite sheets for the chicken, its eggs, & the artisan product made from the eggs. I recolored base game sprites and made slight tweaks so they are more unique. I also made two custom sounds for the new animal (adult and baby versions) using base game sounds layered over each other.
I’ve got my mod folder set up with JSON manifest & content files, & I set dependencies for Content Patcher and Extra Animal Config (which I want to utilize but don’t know how). The content file has a configuration schema to allow players to toggle whether the chicken produces eggs or rare drops, whether the chicken can eat golden crackers, and if the player wants the special eggs and artisan item to be counted toward perfection or not.
I have folders in the mod for the data JSON files, assets, and i18n for easy translation. In my data folder, I parsed out the data into separate JSON files so I can easily catch bugs or other issues. I have individual JSONs for: the chicken itself, the items (eggs and artisan product), mayo machine input/output, audio additions for the animal, & the patch to add the egg to Qi’s shop.
Whether they are better or worse mostly depends on whether i remember to write for non-programmers that day
Breaking this down
- New coop animal with content patcher
- Egg from qi shop to hatch instead of animal shop
- Configurable simple or advanced produce
I'm not saying frameworks get published with no documentation
Just that they tend to get more fleshed out over time, with stuff like examples and edge cases
I think before you get into configs and all that, you should do 1 make chimkin exist in your game, just letting it be buy from marnie is ok
Yes, those are the basics! I tend to be quite wordy, so I appreciate you being able to distill that down
We can worry about the produce w/ EAC and config schema after chimkin exist
nothing you describe so far needs EAC, so yeah I'd focus on getting the chimken to show up first
Sounds like I’m making life difficult for myself 😅 I was having a hard time figuring out framework I may need and wasn’t sure if just content patcher would be enough, especially since I wanted two production modes
hii, ive been looking all over for places where people are doing custom npcs (including their sprites, schedules etc) and most forums just say to ask in here so im unsure if this would be the right channel, but does anyone know any people who commission npcs? thank uu !
!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
there's a non zero chance you're going to get spam dms from saying that btw, ignore anyone dming you asking you to commission them
tysm !
What would be the best way to do this? Should I make a new content json to add the chicken to Marnie’s shop then check that the sprites are working and go from there?
if it's like a duck where it could either drop egg or feather then that's all vanilla
Have you taken a look at other new coop animal mods?
Sort of, but I want the chickens to either drop eggs only, or drop rare items only (no egg production).
I recommend this one
that's exactly like what the duck does no
For now let's do just eggs for simplicity
I’ve downloaded sooo many coop animal mods to study their code lol but I’ve gotten a bit overwhelmed
It might help to start a bit simpler
Create the egg object, have it show up in the game, and add it to a shop
Then start setting up the animal after that
Okay, thanks for the guidance! By the way, your Modder’s Pie tutorial has been really helpful to have from Nexus!
The one i linked only adds one animal, which is what you want to do right
Yes, mine adds one new chicken (baby and adult)
Hello again all! I am trying to create a warp totem type object that randomly picks from several possible locations to send the player. Is this something that is possible using the ObjectExtensionData in SpaceCore, or would it require more C# implementation (or secret third thing)?
I know the Eli and Dylan mod has (spoilers?)||the Chaos Totem||, which does essentially the same thing, but that appears to be a custom C# addition to the mod.
Anyone know how many tiles, past the player down, you can see max zoomed out?
Depends on the players screen resolution innit
1920-1080
does anyone know if it's possible to use Content Patcher to edit another mod's content.json? i could have sworn i came across a mod that used a structure like: "Target": "Mods\Folder/assets/example.png", but i cannot remember. anyways, i want to edit a mod's content.json using my own to add more configuration options
Not everyone plays at that resolution, so I wouldn't rely on it being consistent
You cannot.
I just need an estimate broski
Need to know how far off to place a secondary destination
Then feel free to launch the game and count the tiles yourself
I don't have the answer.
😭 then feel free to not need to reply
hm, i'll have to think of another solution then. i will ponder on it, or just upload files where they can just copy and paste into the orginal mod lol
you can use the debug mode mod to see
i think im getting a bit closer into finally fixing my npc (hopefully) but im getting an error from content patcher with the gift tastes saying something like i didnt formulate properly the fromfile section but i think i did it right....Can someone check what its trying to say cause i dont understand.... https://smapi.io/log/29c2eb22f4ed45ce81c52edbb6626646
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 20 C# mods and 25 content packs.
With EMC, for the "IngredientConfigs" section, does an item that fits the "ContextTags" entry need to have both, or would it be either or?
example:
"ContextTags": "jazz_item, allium_item"
both
if you want either you can add two entries; it should work even if it's only for one ingredient slot
ohh okay, awesome, thank you Selph
your framework is so helpful
!json It seems to be saying your npcgifttastes entry is currently a load action when it should be an editdata. Can you share the gittastes entry using the smapi json validator?
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.
yup i think that was problem,i put load instead of editdata https://smapi.io/json/none/8861f87c48a243afa1ebf747014665b0
"Target": "Data/gifttastes",
Target should be Data/NPCGiftTastes
also your format is not correct (you're missing the generic gift dialogue responses)
the unpacked files has examples
i placed it in the dialogues
it still needs the generic responses fields
If you're skipping them you'll still need to double up the slashes
so should i put it in the same format as in the one from the wiki ?
(as a side note I highly recommend adding {{ModId}}_ to the beginning of your NPC's internal ID, to avoid the chance another person releases an NPC named Heycien and conflicting with yours)
yes
i tried to put that token but it said something like it didnt exist and stuff so i gave up and erased it altogether
weird, you're probably not formatting it correctly?
it'd just be "{{ModId}}_Heycien"
You have to make sure it's consistent across all entries that use your npc's internal name
If it's missing in any of them then that error would show up
(Easiest way is probably to ctrl+f 'Heycien' and replace with '{{ModId}}_Heycien' in all files)
(though don't do it for the display name of course)
i wanted it to be customizable so i put another thing instead of ModId,i didnt know u just put that
The {{Modid}} part is a token, it auto adds the UniqueID from your manifest file to ensure the things your mod adds (npcs, items etc) are unique to your own mod and avoid compat issues with other mods
Hey peeps, adding translation to config options. Would one replace true & false with translatable tokens as well, or does this break contentpatchers logic?
you should not change the actual config values
you just add new i18n keys
if you did that with the existing tokens you should revert those changes
the documentation shows translating config choices like wood or metal, but no example for true / false.
it'd be the same
You do not want to translate the underlying values for the same reason you don't translate things like location IDs
config.ConfigName.values.true
Answer the last time Pathos talked about it
hah i totally forgot that CP supports checkboxes
(had forgotten in the moment that true and false will be transformed to a checkbox hehe)
still useful if you're doing true, false, and secret evil third thing though
wait I just realized if I put my truck behind the bus then when it drives back to the bus stop it'll run right through/over my truck :(
wait I can just move it back to the grassy area behind the bus 
if i get total of 1k DLs by tomorrow im gonna do a new mod
or else im just gonna do it anyways lol
im in a rabbit hole atp
ahh okay i'll add it later then
nope the mod still broken,still doesnt move or talk,she just changed directions shes facing
is there any sort of hard coded business involved in gift tastes? trying to remove rabbits foot from Penny's hated gift list but it doesnt appear to do anything ingame. if successfully removed from dislikes she should love it shouldnt she, as its otherwise an universal Loved gift? (first foray into gifting) Or do i need to add it to her Loved gifts as well
post what you have again?
there's none; post what you have?
(as a general reminder posting code is very useful if you need help)
https://smapi.io/json/none/8ef951ec1535487184c5353576c0b8f9
this is included from the content json, checked with smapi log that its in fact being included as well
(content.json for good measure https://smapi.io/json/content-patcher/2fa7260d16cb4d15a4e4c85642a2e8b3
making a personal edit to the Rabbit Floof mod)
I believe you're missing one more entry in Target to enter the hated item field
Do you need to post all the things in my npc folder or is there something in specific u need me to post?
add "7"
Oh is this the line counting thing ive heard mention of
? the 7 would go where exactly?
after Penny, or instead of?
as a 3rd entry in the Target list
gift taste data is split into multiple segments seprated by slashes, 7 here means enter the segment no 7 (the list of hated items)
we can start with the NPC disposition and the gift taste data
list of hated item ids seems to be in segment 8? segment 7 is the dialogue for the hated gift. unless the first segment is not counted?
the list starts from 0
oh of course, derp 
Alright I'll post it in a sec
my brain is not yet default zero indexed 
code looks correct to me at a glance; can you post your SMAPI log?
!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.
Hoping someone can give me a sanity check...I'm event testing and after I use changeLocation and start moving the farmer, they walk off into the void. It's the first event in my json here: https://smapi.io/json/none/cb8bb88b8d174c19983c85c9a35e85c6
Does anybody know why on some festival maps my OpenShop action says "Out of stock" while on some it's totally fine?
Desert Festival and night market work as fine, while ice festival and halloween seem to be an issue
Same tmx overlay, same code, only thing changed is the target map
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 20 C# mods and 25 content packs.
I'm not very familiar with events personally, but you may need to use waitForAllStationary after the fade or somewhere in there; moving the farmer while you change maps might be throwing them out of alignment
Wait I think I know why 💔
Shops are closed during festivals, and night marker/desert festivals are the ones that have shops still accessible..
I suppose custom shops also follow that hardcoded reason
nothing's wrong in the log 
by not talking do you mean the character doesn't respond when simply talked to? or after gifting an item
the issue is just that they walk off screen during the event, I haven't had any issues with dialogue so far. i was able to fix it by removing "true" from the last move command before the changeLocation. I wanted to have it fade out as the farmer was leaving the scene but if I can't make that work, it's ok
oh wait I responded to the wrong person 
sorry this is meant for you: #making-mods-general message
whenever i hover my cursor over the npc theres no dialogue icon or gift icon when im holding the object...And she keeps standing next to Olivias and Victor's mansion like a stalker no matter how much time passes or how many days i sleep 
show your dialogue and schedule file?
I gotta go in a few minutes though, apologies
no worries!But when ure available can u check the files i jst sent u if you cant do it rn??
default schedule entry is "spring", not "default"
per the wiki not having "spring" break things
try fixing that
Ohh okay got it
ok now i go for real
Okay byee
weird question but does marnie butcher her animals at all? or does she raise them purely for what they produce?
Can you make a set of textures apply to your mod only if a certain retexture mod is detected?
Sure can
Not afaik, it's never implied by anything ever (that i've seen). Her only comments are on their produce
ok perfect :3

Just do a Hasmod conditional on your texture load
Awesome, i'll definitely be back here with a million questions later 
How can I cook toast
..I wonder..who was the first person to toast bread 
Why did that actually get to me for a sec 
The first person to burn it, dub
Duh
yummy maillard reaction
this is a text here from 2022, but this isnt the case anymore right? how do i make my npc spawn at the saloon in a specific date?
That is still the case
I literally forgot what a maillard reaction was and i was confused as to what the importance of mallard mail was
LOL
ough... didn't work 4 me is why i asked
Then it's an unrelated problem
zero schedules don't work for npc spouses, i believe, since marriage duties runs after the zero schedule and they get shunted back to the farmhouse. so it could be that
oH it's a spouse
spacecore could help with that, i think
can someone lmk what this means?
hey, anyone know if having these many days of the month would act as a back up incase any players have gotten past the first day it triggers? (due to having not downloaded the update this will come in right away)
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"{{ModID}}_SantaLetter": {
"Id": "{{ModID}}_SantaLetter",
"Trigger":"DayEnding",
"Condition":"PLAYER_HAS_SEEN_EVENT Host parcy.jack_lastHi, SEASON Spring, DAY_OF_MONTH 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28",
"Action":"AddMail Host parcy.jack_santaLetter tomorrow"
}
}
}```
When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.
If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.
@marsh reef
ohoh its that again, okok
ty
question about warps. If within the mod I'm heavily modifying for me, teleporting to a certain warp is "Draylon.ForeverFallsBeachCave" can I call on it like that warping from other places like from the forest by maries? or is it different? bc right now I have it set as that and it still goes to the normal farm :/
I'm not sure I understand your question
i might be trippin, one sec checking smthn
Are you confusing locations with maps?
this means your players won't get mail if they're in summer/fall/winter
is that the intended effect
oh
if you need days played use DAYS_PLAYED
I wanted the mail to happen between the first day, or any of the others I listed incase they download the update late
Doesn't days played track total time?
would that be thing I look into for this?
I don't quite get what you want apologies
sorry
I'll try to explain it better
I want the mail to ideally arrive on the 10th. Does mail arrive later than its set date (in the same year) if a player downloads the mod update adding said mail later than they should have?
you control when your mod's mail arrives
This is what I'm trying to account for
Your mail key would need a very specific format to be sent automatically, otherwise its up to your trigger actions
The condition has to be true for it to send it, regardless of when it was installed
Yeah, I have a trigger
Your condition up there currently requires it to be spring
(please don't use specific mail keys to get specific send times. use a trigger action)
I'm not sure I know what you are refering to?
(I would personally allow the cooking recipe letters though since those (SHOULD!) be inherently namespaced)
I don't think I'm doing that?
(But I would still do tractions anyway. But it wouldnt cause issues)
You're not, ichor is just adding on to me saying that you can format letters a specific way for auto sending
i'd still use a trigger for recipe letters, since then you can have the letters be specific to the recipe instead of generic and reused
You can do it for dates, but you shouldnt
Tbc I'd also still recommend tractions 10 out of 10 times for everything regarding sending mail
I did not know that was a thing. Interesting
It would honestly be easier if you pretended you still didnt
what horrors must this cause?
But it is still useful to know so that you don't accidentally do it when copying vanilla
before trigger actions, specific keys for dates etc. was the only way to control mail in the base game code, so we needed MFM and maybe other frameworks to do more complicated stuff and/or avoid conflicts. but now trigger actions are here, and they're good, and please everyone use them thank you
Well, vanilla uses the date format for quite a lot of its mail. But it must be formatted like spring24 or whatever. Nothing but the date
So, if two mods want to send mail on spring 24th using that format, then... yknow. Incompatibility
ah, ok
I saw those now that I think of it
in the unpaacked
so, this is sending the mail in summer huh?{"LogName": "Send Santa Letter", "Action": "EditData", "Target": "Data/TriggerActions", "Entries": { "{{ModID}}_SantaLetter": { "Id": "{{ModID}}_SantaLetter", "Trigger":"DayEnding", "Condition":"PLAYER_HAS_SEEN_EVENT Host parcy.jack_lastHi, SEASON Spring, DAY_OF_MONTH 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28", "Action":"AddMail Host parcy.jack_santaLetter tomorrow" } } }
No, that's still requiring Spring in the condition
does it pick the first day?
I'm not sure what you mean.
does it pick the 10th as its first choice for sending the mail, and then the rest in order if it fails to trigger?
It's not picking anything. Every time a Day Ends (DayEnding), it checks if the condition is true. If its true, it does your Action and marks this trigger action as done, so its never checked again. If it's not, it doesn't.
Oh, ok. that sounds like what I want it to do I think
I'll go test my mail ingame now that I've changed some stuff
trigger actions are pretty cool
tractions
Do u want to require spring
I mean, not really now that I think about it since the mail would not send before seeing the necessary event
I guess I can remove that
thanks!
Hey, so Si helped point me in the right direction with looking at vanilla mail earlier, but just incase I've misunderstand or forgotten something, do guys think this all looks right?{"LogName": "Send Santa Letter", "Action": "EditData", "Target": "Data/TriggerActions", "Entries": { "{{ModID}}_SantaLetter": { "Id": "{{ModID}}_SantaLetter", "Trigger":"DayEnding", "Condition":"PLAYER_HAS_SEEN_EVENT Host parcy.jack_lastHi, DAY_OF_MONTH 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28", "Action":"AddMail Host parcy.jack_santaLetter tomorrow" } } }in the default json:"Mail.parcy.jack_santaLetter": " removed for spoilers^ -Claus[#]Santa's Letter" in the dialogue json: {{i18n:Mail.parcy.jack_santaLetter}}",Because I can't get the mail to show up still. Si mentioned I'll need two i18n fields per letter, (one for the body of the letter, one for the title) because the [#] (and any other commands) in between have to be in the entry, they can't come from the i18n file (similar to events)
I guess I'm not sure if that actually means a whole other separate key though, because I'm not sure how I'd even format that. Just a little confused.
i18n is a text storage and retrieval system for mods (that happens to be driven in part by what language the game is set to)
there's very little "have to" in how you set up your keys and values. it's up to you
Si is probably making those recommendations because putting syntax about the mail (the [#] and so on) in the i18n text runs the risk that translators for your mod will fuck it up and break your mail
Oh
important to stress here that the game never sees your i18n files, just like it never sees your content patcher tokens (indeed, CP does i18n for mods by using a token!). content patcher evaluates its tokens before handing the data off to the game
Wow, you can actually separate that bit of code? Interesting. I was wondering if my set up was wrong because my letter will still not show up even though I should have met the conditions. Is what I have here supposed to be working at the base level?
typically i set up mail in CP something like this (please forgive errors)
"{{ModId}}_WhateverMailId": "[letterbg whatever]{{i18n:mailId.textcontent}}%item or action or w/e %%[#]{{i18n:mailId.title}}",
so the "code" parts are baked in to the actual mail data and the text is pulled from the i18n
the best way to test whether your conditions are working is debug gq "paste your query here" in the situations where you think it should be true/false and see what the game tells you
if you've been debugging this for a while, you may also be in a state where you have run this action already, so it is not firing for that reason (remember actions are by default run only once per save)
Oh, I'll start a fresh save then
that situation is especially likely if you are testing a DayEnding traction, since it will run right before saving the game
Oh, I don't even know if I need this one to be a dayending check. That was just copypasted from my other traction
for sending mail i prefer DayStarted/AddMail Now over DayEnding/AddMail Tomorrow
Ok, thanks
I just realized something unrelated-
My mod's intro event triggers right after krobus's winter event, and that makes it feel less natural... I didn't really think much about it because I originally had jack's birthday on winter first, so I felt it was necessary, but I changed that to be on winter star instead, so maybe my event should be playing on winter second? Idk, is this a big deal?
(Not asking any specific person, just whoever has an opinion on this)
Hey! I published my first ever mod last night and wanted to share it 
I do plan to add a lot more content to it over time, this was a more basic-level release for Modfest. But I'll try to keep updates pretty bundled!
huh, my npc's not showing up again in this new save. why does this mod do this to me?? I hate it
aww
want me to showcase it for you?
Yes please! I think claude went to bed earlier
It should be there now!
Also I don’t think it’s a big deal, but if it feels more right to you for the birthday to be on the 2nd then i’d just go ahead and change it 
(Thank you!)
I guess the intro is technically his b-day, but it's set to the 25th because his b-day dialogue turns into winter star gift dialogue
It also makes it less annoying if you build him on the 5th or something
Because then you won't see his birthday as winter 1st
It does boilerplate for asset handling, gmcm/config stuff, and event registration mainly. It also has helper tools for harmony, dumps translation keys into a strings file, and can merge local jsons into other dictionary assets. Plus a few other useful things like adding the mod id as a global constant.
I also have plans to add automatic hot reloading to the asset stuff
I forgot to update the version number of my mod in the manifest when I updated it yesterday so I tried uploading a fix on nexus but when I go to download the files again (to make sure it's updated ig) the manifest still has the old version, even tho I KNOW I updated it... is nexus very delayed in making files available for download or something? I can see both the old files in my archive and it's been 10 minutes so idk I feel like I'm going insane lol
Can you link the mod page?
What version is it supposed to be?
1.1.0
That gives me a 404, is your mod published?
wait hold on
Or did you typo the mod id
it's the /games/ part of the url apparently
I see 1.1.0 on files and listed as current version, you should be good
Smapi caches version data to avoid spamming the nexus api, so it may take some time for the update checks to show in console
ah! my npc won't show when I skip the event again! 
ahh okay thank you
odd because I have setSkipActions SetNpcVisible {{ModID}}_Jack/ before skippable
Imagine if it made a request for every mod every time anyone launched smapi. Nexus would get ddosed and launching the game would take even longer than it does
Ok, so there is something wrong with this setup (minus better compat for translators) because the letter arrives, and then disappears
Doesn't let me open it

Also, I guess my setSkipActions aren't working the best either?
Do you have the Data/Mail entry?
I linked to it above. Maybe not I guess
ah yeah
I forgot about that
wait
No, I'm not sure whether it's there or not, because I don't know exactly which thing you're referring to
I have data, but is it the right kind? Idk
But I was looking at the mail from content unpacked earlier
You'll want an entry that's
"Action": "EditData",
"Target": "Data/Mail",
"Entries": ...
With the mail in the vanilla format in Entries. That's what the trigger action then references when sending it
Ohh, ok, thank you. that makes sense now!
sorry for the late reply, I was trying (and failing) to remake those mods. The problem with what you suggest is there can be up to four sprinklers per tile; you have to specify the corner as well, which quarter of the tile you are querying. I can add a method that returns the tiles if you give it the tile you want to check, the corner, and the radius (I can add a method that gives you the radius as well)
where can I find resources for how npc schedules work?
Mainly I'd like to avoid quadrupling the number of API calls (given that the proxying has some overhead). Is there any possibility of an API method which lets other mods treat those corner sprinklers as if they were tile-based (e.g. so if there's four sprinklers on one tile, it returns a single range which includes all four)?
nvm I think I found something
wouldn't it be the same if the mod has to do the work four times?
The end result would be the same, but it avoids the mod needing to call the API four times per tile. The API goes through the whole proxy mapping framework, so there's a non-trivial overhead to each API call.
I guess worst case I can just call the API four times per tile, and have a longer cache if needed.
okay, that's understandable, but they aren't really tile based... like there's no sprinkler at x,y, they are each at the intersection of 4 tiles; it seems like it would be weird to query a tile for that, though I could add such a function I think
chat does anyone do simple pixel arts or do i gotta solo that lowkey?
!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
There are people who do commissions but this is also a great opportunity to practice art!
I know it's intimidating, but it helps if you think of it less as a skill to improve and more as a way to express yourself and try new things
You might produce things you don't like, but that's okay because the process is more important than the result, even if your ultimate goal is to make something you can use in your mod
Does this work?
public List<Vector2> GetRange(GameLocation location, Vector2 tile)
{
HashSet<Vector2> tiles = new HashSet<Vector2>();
for (int i = 0; i < 4; i++)
{
Vector2 cornerTile = tile;
if(IsObjectAtTileCorner(location, ref cornerTile, ref i))
{
var obj = ModEntry.GetSprinklerCached(location.terrainFeatures[cornerTile], i, location.terrainFeatures[cornerTile].modData.ContainsKey(ModEntry.nozzleKey + i));
tiles.AddRange(ModEntry.GetSprinklerTiles(cornerTile, i, GetRadius(obj)));
}
}
return tiles.ToList();
}
I can add that to the API
the absolute euphoria when you draw something with your human hands and then it comes to life in the game 
I need help
Anyone know why my mod page is not showing the spoiler text I wrote?
It shows that there is a spoiler, but the text is blank!
wait, nvm it's actually completely outside the box
still bad
this is what I have
[spoiler]He reflects on his life and comes to the conclusion that it was meaningful even if it was short. He also gives the player his hat if you reach 4 hearts with him.[/spoiler]
YAYYYY my npc shows up ingame !!!!!!! now I just need to actually make her do stuff properly (and give her art lmao)
ignore the snow in the spring I was time traveling
lowkey simple pixel art isn't all that grunge fam, you can get by just fine using photopea, paintdotnet, libresprite, or whatever else you like. gang
my advice would be to unpack the game content with stardewxnbhack and use the game art assets as a base and colour sample
it's very based and labubu
Do you have any other spoilers in the description? Check that they're all formatted correctly. Also try starting the sentence a line below the start spoiler command, so it looks like
[spoiler]
Write stuff here.
[/spoiler]
blueberry, I think being based and labubu is a bit much 😅 /lh
Ah, ok, thanks for all the help, Si!
also the spoiler tags don't show in the WYSIWYG editor on nexus so you have to save and check on the published page
I use pdn for all my art, and I know all of stardew's old art was also made with it. Not sure about the newer stuff
It's simple but more than capable enough
also plugins can help a lot
I am checking the page, and even after formatting it like this, it's still jumping outside the box
Idk why, when the two lines are in the middle
can you tell what im making
A rowboat?
:3 it'll have a motor on the back but yes boat
Are you using the new beta upload form or the original one?
No, I'm not
if it's relevant, this is what it looks like in BB code[b][size=4][color=#fff2cc]Please also keep in mind:[/color][/size][/b][color=#fff2cc] [size=3]That while the story does get sad near the end, it is not all doom and gloom!Small spoiler for what happens when he melts away: [/size][/color][color=#fff2cc][size=3][spoiler][/size] [/color][color=#fff2cc][size=3]He reflects on his life and comes to the conclusion that it was meaningful even if it was short. He also gives the player his hat if you reach 4 hearts with him. [/size][/color][color=#fff2cc][size=3][/spoiler][/size][/color]
I know it doesn't need bb
I can't tell if you're doing this because of the dimness of my screen, but you should use chromatic greys ir pastels instead of straight greyscale shades for the interior, to fit in with stardew's style
But neither way works
I was actually just about to ask for the bbcode ver lol
🙂↔️ it's colored based on Animal Crossing :3
it's kapp'n's boat
Probably because your tags aren't nested properly
Oh, I was just using the default buttons for color changes and letter size
I guess those mess with the code?
Your spoiler opening tag is sandwiched between an open and close tag for size
If it opens on the outside it has to also close outside, and if it closes on the inside it has to open on the inside
If you mix and match like you have it probably explodes the html
Ah, ok. so they can stay between the stuff, it just needs to be matching?
It's like how json brackets need to match, just a little more complicated
Ok... well I'll try fixing it again then
is it required to change every regional tileset in order to make a proper retexture?
like cursors for exp
Yep! If you want to avoid allocating a new HashSet<Vector2> and List<Vector2> on every call (even if there's no sprinkler there), you could also do something like...
public Vector2[] GetRange(GameLocation location, Vector2 tile)
{
HashSet<Vector2> tiles = null;
for (int i = 0; i < 4; i++)
{
Vector2 cornerTile = tile;
if(IsObjectAtTileCorner(location, ref cornerTile, ref i))
{
var terrainFeature = location.terrainFeatures[cornerTile];
var obj = ModEntry.GetSprinklerCached(terrainFeature, i, terrainFeature.modData.ContainsKey(ModEntry.nozzleKey + i));
tiles ??= [];
tiles.AddRange(ModEntry.GetSprinklerTiles(cornerTile, i, GetRadius(obj)));
}
}
return tiles?.ToArray() ?? [];
}
Anyways it is very past my bedtime, so I am off for the night, and I will see you all later.
thanks, rest well
No. If you target cursors, you're affecting all of them (unless you go out of your way to only target one locale). No need to make multiple unless your tilesheet has words in it (or something similarly localized)
Tbh, I think this will have to work for now
Oh, just noticed another typo lol
Sorry for the late reply! Actually, I feel the same way… but obviously, I have absolutely no idea how to fix this.If all else fails, I’ll just have to resize the sprite again.
live on the scene
Hi! I'm not sure if this is the right channel but i think it is -
I am in the midst of trying to create a mod with JSON Assetts as a dependency, im someone with little to no grasp on modding and the only thing i've done before is make a dialogue mod.
Ive been trial and erroring this mod for like 6 hours and i just wondered if anyone here had a better grasp on how rhe JSON assetts thing works because there'z sometjing that just isnt working :((
i have the sprite for the item i want to add, i tried using a tilesheet...i re wrotr the manifest like 4 times...i truly am stumped.
Why are you using JSON Assets?
It isn't needed anymore
unless it's for an old mod with it as a requirement anyway
boy i don't know i said i have little to no modding knowledge im just following tutorials online 😞😞
You must be following an older tutorial then, you don't need to use that
oh. What do i do instead then?
What are you making?
dumb littke mod where i give the bachelor/ettes music tastes - adding in "vinyls/cds" which dont have any use apart from gifting to npcs.
Inventory item, gotcha. Yeah you can just do that with content patcher now.
https://stardewvalleywiki.com/Modding:Items
Here's the wiki page on item data. It's not exactly a tutorial, but it's a start
let me see if I can dig one up
I basically figured out items between this wiki page and looking at a mod that added them
Oh wait how silly of me
Here's a new tutorial
It's how to make a pie, that's an item
Oh okay okay so- i can 100% add NEW items into the game - yeah? Because the reason i ended up using JA instead of CP was because a forum told me CP is only for retexturing stuff or something
That is old information
That was once true IIRC, but later updates opened stuff up a lot
I did a NPC mod and it's all in content patcher, and it has several new items like you're talking about that are things you can give as gifts
You can do all kinds of stuff in it now
Well damn I feel silly now i was doing it right in the first place 😭 i was using CP fo begin with and moved onto JA when a forum told me to do so - ugh thanks man
If someone told you that recently, might wanna tell them their information's old!
Hate to see people struggling along with old info
It was some sort of sdv forum site..cone to think of it i think the thread was from 2021 ugh god ok i'll try doing it this way thanks 4 the help brochacho
No problem!
is there a way to edit image for each of these at the same time besides a manual target set
(ignore first four)
You don't need to
I can only edit one?
Unless you specifically want language-specific edits
nope
But you probably dont
If you just target LooseSprites/Cursors then CP applies it to every language variant
So if someone switches to Russian or something they'll still get your edits
Ohh so its smart
You'd have to manually choose to make it language-specific
I see, tyy!
Saved me from doing extra work
so it works for language specific tilesets for a Maps/ assets too?
yay it works
Yes, any asset with language variants
before i go another question i have is to do with dialogue modding;
what do i type to have multiple liens of dialogue appear ifygwim? Like you click on an npc once, the dialogue plays, and you click again, and it contiues..i dont know if i described that well
you can split dialogue into multiple windows by using #$b# in your dialogue string, or you can use #$e# to make it a second dialogue where you have to talk to the character again
You're a star tysm
Hello everyone... I haven't checked in here for a while but finally back to stardew after taking a little break
I am having some trouble with the appearance system though
Edit: NEVERMIND I think I figured out what I did wrong
Hello that's me
Mod that allows to change the boring default cursors to some silly cat themed ones!
Includes six different styles to choose from. GMCM mod is recommended to have as well for an easier config!
https://www.nexusmods.com/stardewvalley/mods/44336
Can someone showcase it for me pretty please? 
why is specifically only this tile on all trees with this tile flashing in and out of existence? it does the same thing if i select it too
im not sure if tiled supports z fighting but
what layer is that tile on?
as well as the sand tile
it's not flashing behind, it's deleting for a sec, and coming back
it's on back and always front, sand tree
I had some issues with tiled where it had ghost selection as well
have you tried updating Tiled to the last version?
this only just started like 5 mins ago 😭
Tiled can be like this sometimes
okay
then choose this tile you have animation on and press on this camera icon
delete every frame you have on the left
okok thank you 😭 that was so weird
this is probably the funniest reason why it was flashing in and out of existence lol
yet the most logical too
have you animated anything on that tileset
and mb accidentally touched some extra tiles too
To get back to this issue, I've changed the <parcy.jack_santaLetter> to <{{i18n:Mail.parcy.jack_santaLetter}}> in both instances and I've added in the mail data{ "LogName": "Mail Data", "Action": "EditData", "Target": "Data/Mail", "Entries": {"{{i18n:Mail.parcy.jack_santaLetter}}": "parcy.jack_santaLetter",} }, This should be working right?
Because I'm getting the same problem of the mail appearing but not registering
I'll just upload the whole content json too. Don't read the goodbye eval tokens if you care about avoiding spoilers. They're also not relevant to this mail issue. I've got another issue trying to use the mail flag in one of them to change jack's sprites/portraits, but that's definitely lower on the bugs list. https://smapi.io/json/content-patcher/3c1343e4aae54fbb90984bdab8c0dc03
I also have the feeling that I may be needing to register what mail background is used?
But it should default to the default... right?
An entry in mail data is sorta three parts:
The key: "mail.parcy..."
The first part of the value: "letter contents"
The second part of the value: "letter title"
Your key should not be an i18n token. The two parts of the value would be two i18n tokens put together with the [#] separator
"key" : {{i18n:v1}}[#]{{i18n:v2}}
(I think I wrote that right)
And yeah, it'll pick the default background if you don't specify
so, about the key; is this separate from what ichor was doing about compartmentalizing here? "{{ModId}}_WhateverMailId": "[letterbg whatever]{{i18n:mailId.textcontent}}%item or action or w/e %%[#]{{i18n:mailId.title}}",
That first part of your value may end up being a bunch of i18n tokens depending on formatting
Oh
What you just posted is a better formatted version of my quickly typed example. You should use that
I'm looking at it again, and I realized they are doing the same thing, essentially 😅
I'm on mobile, so limited typing abilities here
Yep!
Your key will use the modid token in order to make it unique among all the mail keys added by other mods
Your value is what the player sees
(plus formatting and actions and such)
Ok, yeah, thanks. I'll try this out and hope it works this time
for the letter bg pngs on the shared sheet, are they listed from 1-5, left to right?
oh, maybe that's in the wiki?
I'll check
yeah, it's at the bottom of the page!
hii, so I'm trying to make a custom NPC using content patcher and I have a slight issue :'D
Tried to load her using SMAPI but the console said this error and I have no idea why- here is my code for her portraits and stuff, everything is just how the wiki said (at least I think so) so I don't know what went wrong
sorry if this is an easy fix but I have like, no coding or modding experience, so this is a first for me ^^,
Is that a 2x2 or a real 1x1 with a 0.5 tile offset
Interesting
@ivory plume sooo I ended up remaking the mod after all... I couldn't stop them from disappearing when hoedirt disappears, so now they are tied to the game location instead. I'm still not convinced you should query all corners of a tile at once, but you can with IImmersiveApi.GetSprinklerRange(GameLocation location, Vector2 tile)
Oh I suppose it's something complex
Many such cases of magic being used to make Stardew mods
Junimo themselves helped some people with mods me thinks
I gotta learn that magic too one day
hmm, I have the separate keys now, and the data filled in"Mail.parcy.jack_santaLetter": "Dear @,^^ -Claus", "Mail.parcy.jack_santaLetter.title": "Santa's letter"``````{ "LogName": "Mail Data", "Action": "EditData", "Target": "Data/Mail", "Entries": {"{{ModID}}_santaLetter": "{{i18n:Mail.parcy.jack_santaLetter}}[letterbg 0][#]{{i18n:Mail.parcy.jack_santaLetter.title}}",} },along with my triggr action```{"LogName": "Send Santa Letter",
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"{{ModID}}_SantaLetter": {
"Id": "{{ModID}}_SantaLetter",
"Trigger":"DayStarted",
"Condition":"PLAYER_HAS_SEEN_EVENT Host parcy.jack_lastHi, DAY_OF_MONTH 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28",
"Action":"AddMail Host {{ModID}}__santaLetter now"
}
}
}
am I missing any other critical components?
Uh you kinda added an extra _ in the action part of your trigger action in the letter id
I dunno, i just took a cursory glance and that's what stood out
in vscode, it's harder to spot because the underscores are cohesive
it just looks longer
thanks!
yay!
letter finally works
that was such a pain
Youre missing the _ somewhere, possibly in the data/characters entry. Share the file via smapi.ios json parser
ended up fixing it! You are right, it was a missing underscore but I found it ^^ Thanks so much! <3 she finally loads in
Nice!
Hello! I need some assistance with figuring out Tiled. I want to make a small custom house for my npc, but I have absolutely no clue how to do that.
Can you be more specific? Like is there anything in particular you need help with
Or are tou asking for line a general tutorial
Just a general tutorial
If you want to make mods that add or edit maps:
-
Use Tiled to edit .tmx or .tbin files.
-
Refer to the Maps wiki page for details on how maps work in Stardew Valley.
-
Content Patcher allows you to create custom locations through editing Data/Locations
-
Vanilla Maps can be edited via Content Patcher as well: EditMap
Sorry, I should've specified!
Not sure if there's a tutorial on there or not
I'll have a look, thank you!
Question, does MissCoriel's NPC Creator 3 still work in 1.6?
!!! Trees!!! They look so pretty and complicated
aren't we all 🙂↕️
the terrain feature, the terror of the theatre
EVIL TREE
[SINISTER ORGAN RIFF]
* trees posted in the name of shrub field research
i think no
maybe shes working on a 4th version but idk
and its not tagged 1.6 compatible
Do u gwt fresh figs
incredibly inedible
(we get them, just not from these trees)
Is this a known bug, I was patching Object.PlaceInMachine and noticed if the zoom level isn't 100, the probe code runs at the wrong tile, this happens in vanilla too.
Can you report it here? https://discord.com/channels/137344473976799233/1387907186713301072
stardew valley tiled code tutorial Can someone help me? It loads the map, but when I try to step on the map to enter another one, the black loading screen appears, but then it reverts to the map that was already loaded.It won't go to the custom map, can someone help me with this?

I'm not a mapmaker tbh but have you set the warps correctly? It sounds like your warp doesn't go to the custom map 
I configured everything correctly, I don't know what the problem is.
(That vanished too quickly for me to correctly identify the language but this server is English only!)
Yall, I have a serious issue. I can't decide whether I should work on learning how to make animated furniture next, or finally learn Harmony patching next... Plus now I have "I Can't Decide" stuck in my head.
Well, could you share your jsons and maybe a log from your testing session? I don't know if I can help you but maybe someone can
well you can ask the bot
.choose harmony patching, animated furniture
Choose result: harmony patching
there you go
Rn I'm leaning towards learning Harmony, as I've come to realize that at least 1 other mod I've made assets for will need it (my hyperbolic sapling chamber mod)
Harmony it is, lol
{
"Format": "2.0.0",
"Changes": [
{
"Action": "Load",
"Target": "Maps/Farm",
"FromFile": "assets/custom.village.tmx"
},
{
"Action": "Load",
"Target": "Maps/spring_beach",
"FromFile": "assets/beach_custom.png"
}
]
}
Here it is.
You can understand, right?
Does loading a tmx file also load png files?
Also, are you sure the spelling of the tmx file is correct?
Have you added your location to Data/Locations?
Also, have you already defined the warps on the map you warp to your custom village from? Your current content.json only makes the village and custom tilesheet exist 
It's custom**.village.tmx and not custom_**village.tmx?
I mean, I guess that's obvious since you said you can do it, but I dunno
But I think the name might also be a problem?
{
"Format": "2.0.0",
"Changes": [
{
"Action": "Load",
"Target": "Maps/NomeDoSeuMapa",
"FromFile": "assets/custom_village.tmx"
},
{
"Action": "EditMap",
"Target": "Maps/custom_village",
"MapProperties": {
"Warps": "10 20 Town 40 10 11 20 Town 40 10"
}
}
]
}
If I'm not mistaken, that warp makes you go from the town to the town, that's your main issue 🤔
But when it loads the custom map, which will be a new map, I'll enter the city—I can't specify—I'll teleport to the new map, but when I teleport, it simply...A black screen appears prompting the user to load another map, but it simply doesn't load and reverts back to the village map.
and yeah you need a location, do you have a location set up?
it's not enough to just load a map
I'm going to record a video.
How many sprites does a normal custom NPC typically have
Here's the problem.
is there a log u can send
i couldnt tell you speedy
that depends on what u want entirely
you have ur base sprites
and then any animations u want
hm
Which
if u dont use the sprites then theres no point in having them
How do we do that?
!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 get that but I'm asking how many lol
I'll use them all
the thing is base NPCs have like
40+ sprites
o ok
check console. that usually happens when a location doesn't exist
i have around 60-65
walk, kiss, sleep, dance, wedding, plus reading x2, beekeeping, sunbathing, working out, phone call, drinking tea, laptop, drinking, and a hug
some of these are only used in one instance
maybe i will add drawing
he has to have more hobbies other than just sitting, reading, and baking lol
Do you have a baking animation? could be cute
like tia told me a while ago, u dont necessary have to show all of the hobbies in scheduling or whatever
Nope, but he does have a sprite of him holding a donut
How do we make this place exist?
this is why we asked if u made a location
i struggled a lot to showcase all of tilly's hobbies and it makes her scheduled rly cluttered
you could rely on environmental storytelling and events
so it can be cluttered
im just not sure how it affects playability
So how do I do this? I've already read this, but how do I implement it in code?
there is an example on that page
scroll down, it will be an editdata patch to Locations
I saw an example but I don't know how to do this in my code.
Action: EditData, Target: Data/Locations, entries: your location key
Please provide a complete code example.
is this not an example im confused
[[Modding:location_data]]
i sent that
But I want to load the custom map of the busstop. Can someone help me?
have you read through the getting started guide on the wiki?
you are asking questions which are already thoroughly answered by existing documentation
I couldn't find it.
!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.
in particular this page https://stardewvalleywiki.com/Modding:Content_Patcher
Could someone please write the code for me?
wem already posted an example snippet; if you want somebody to make a mod for you without any work on your part, you can pay somebody for a commission
!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
I wrote the code but I'm still having the same problem.
did you relaunch the game after making changes?
locations are only created when a save is loaded, so you have to reload the save if you want to see changes. Additionally, CP does not auto-update json changes; you need to use the command patch reload MyModID to force it to reload changes you've made to a json file
or you can relaunch the game, which will reload everything from scratch
Are you still having problems
👀
Are you adding your warps onto the right map? Maybe you've switched the two
has anyone had any success adding a rainy day dialogue
doesnt seem to be working for me but i think i did the patch correctly
nvm i got it huzzah
just had to restart
I'm having trouble with adding a custom map, followed the wiki tutorial but got a smapi error while loading into the game, here is my log https://smapi.io/log/7358fd0d92624dcdbbcfd0b96b92f010
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 9 C# mods and 2 content packs.
The Cask class overrides the "TryApplyFairyDust" function of the "Object" class.
Is it possible to create a class for a new machine that only overrides this function? And if so, how would one tell Stardew to use that class?
I can clarify if need be, I'm aware this is a bit vague
!tilesheetclimbing
When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.
If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.
imo you should just use harmony
if you go the custom class route you'd need harmony anyway to make the game create your class when placing the machine down
may as well just patch TryApplyFairyDust
I did try patching TryApplyFairyDust originally, but I was unable to call GetMachineData
Hello, hello, Lookup anything is throwing errors for my custom bushes, so I assume I defined the conditions to produce crops wrong, but I am not sure what the correct way to do it would be?
code: https://smapi.io/json/none/869105c1fac34383935631d0f5b565e6
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26100.0), with 30 C# mods and 24 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
you need the __instance param to get the original class instance (aka what would have been this if you were writing regular code)
XY problem strikes again
Thanks! I'll look into adding an integration when I work on my next update wave.
yup, that fixed it, thank you so much!
Since I learnt XY problem was a thing, I keep noticing how many people fall for that, it's honestly impressive
it's very common, almost no one's immune especially not me
no problem! they are now tied to tile coordinates, and just appear in the bottom right junction of "their tile"
Tiled question, my tilesheet got farded on lowkey, and the animations are all freaked, is there any way to import another currently fixed one in it's place?
...can you elaborate on "farded on?"
🤣 no need, i found out i can open in it cs code and copy paste everything
the animations were on all the wrong blocks
But yes, you can directly replace the tilesheets in the software
In the bottom right of the main screen you can click the button that looks like a wrench, and then go to tilesheet properties and there will be a field with a file path to the current sheet. You can replace the asset from there.
Good news! I got it working!
... Bad news, TryApplyFairyDust isn't the function I was looking for (turns out it gets called whenever you hover over an object 😅).
I'm gonna try and patch performObjectDropInAction instead, see if that works.
that also gets called when you hover, you need to check the probe parameter
any idea why my patch doesn't get applied in release mode (Smapi does detect that the mod uses harmony), if I build in debug mode or wrap PatchAll in a try catch block the patch does get applied:
[HarmonyPatch]
public static class ObjectPatches
{
[HarmonyPrefix]
[HarmonyPatch(typeof(Object), nameof(Object.Method))]
public static bool Patch(.....
}
public override void Entry(IModHelper helper)
{
_harmony = new Harmony(ModManifest.UniqueID);
_harmony.PatchAll();
}
but I have it right here :( and it was working last night
Don't you need to call ObjectPatches.Patch?
Does _harmony.Patchall(typeof(ModEntry).Assembly) work
no thats the patch being applied, just an example method.
yeah it does.
is it failing to get the current assembly
Yeah, stacktrace isnt reliable in release.
The way I've been doing it (granted, this is my first time trying this) has been to define an ApplyPatches function to my class that then applies the appropriate patches
Due to inlining, etc.
I see, no exception was being thrown so I was really confused.
you can do that or PatchAll, both work
sealed class Patcher
{
//internal static IMonitor? StaticMonitor;
public static void ApplyPatches(Harmony harmony)
{
harmony.Patch(
original: AccessTools.Method(typeof(StardewValley.Object),
nameof(StardewValley.Object.TryApplyFairyDust)),
postfix: new HarmonyMethod(typeof(Patcher), nameof(Patcher.TryApplyFairyDust_postfix))
);
}
// NOTE: This is called whenever the cursor hovers over the object
private static void TryApplyFairyDust_postfix(StardewValley.Object __instance, bool __result, bool probe = false)
{
if (probe)
{
// Probe = True when hovering over an item with fairy dust.
return;
}
string name = __instance.Name;
string id = __instance.QualifiedItemId;
ModEntry.StaticMonitor.Log($"Hello World from {name} ({id})! ApplyDust = {__result}, probe = {probe}", LogLevel.Debug);
//return __result;
}
}
I wonder if we could just ask brainz to throw the no inlining attribute onto PatchAll
think
Hey @ Button.....
to preface - im an absolute newbie to modding. i've only ever made an AT pack before.
i'm using the Have More Kids framework to try to add custom children that grow into NPCs. Everything seems to work except for the dialogue. I keep getting no translation errors and I can't for the life of me figure out why
code: https://smapi.io/json/content-patcher/08f60217a2e0444f960bf50c67cff25f
https://smapi.io/json/content-patcher/47eb7bc7bfbd4a35b81e8917ecc34675
chat what the heckings bros?
Did you do all the i18n properly
{{L@Kid}}.Dialogue.Resort
Let's say L@Kid is Sarah or something
This would look for Sarah.Dialogue.Resort in your i18n file
Another thing is that you are using this feature to pick a dialogue asset
"KidDialogueSheetName": "{{ModId}}_{{L@Kid}}_Kid"
But you are still loading to the default dialogue asset name
"Target": "Characters/Dialogue/{{ModId}}_{{L@Kid}}"
These need to match up
i think the i18n is right. the file in the i18n json and the file that pulls the dialogue matches
Then it is probably the second thing
- double check what layer those tiles are on
- double check that nothing is patching that tilesheet
If you don't have specific reason i recommend leaving the dialogue sheet name things at default (i.e. don't set them)
custom tile sheet :( and it's on back bc it doesnt need anything beneath it
@marsh reef You leveled up to Cowpoke. You can now share images in all channels!
(I once had floating Master Kohga faces instead of leaves because I patched the wrong tilesheet by mistake)
Do patch export on that tilesheet or map, I suspect you will see something wrong with the output
it's not recognizing it's a 3x3
what is that
huhhhhh???
okay how would I find what to call this tilesheet?
Do you think people would prefer having simple machine output price functions or complex machine output price functions?
I'm that weirdo who enjoys math, so I have a rather skewed perspective 😅
How can you have an unflavored item name override for a cooking recipe output? I see this in the documentation
"... with flavored variants named "Apple Jam" or "Grape Jam", but want "Marmalade" for if it's flavored after oranges), you can set the following string keys in Strings/Objects:
selph.ExtraMachineConfig_FlavorNameOverride_(O)QualifiedItemId/FlavorId"
but I'm not really sure how to set that up for Strings/Objects...
my current code just in case:
- https://smapi.io/json/none/dd530edc1b7c498fb2b16e97ab7ac40f (recipes that would need an unflavored override)
- https://smapi.io/json/i18n/e6fbb6bbb98b46718892e36636cd4c34 (i18n portion)
today's mood
Strings/Objects is a dictionary of strings-strings; you just edit it like you'd edit, say, character schedules
oh I haven't really edited character schedules yet-
um...would it be something like this..? I guess I'm just not sure where it would go
{
"Action": "EditData",
"Target": "Strings/Objects",
"When": {
"HasMod": "6480.flexiblecooking"
},
"Entries": {
"{{ModId}}_FlowerCookies": "selph.ExtraMachineConfig_FlavorNameOverride_(O){{ModId}}_FlowerCookies/0"
}
but would that be a redundant key for the flavored version...? or would the 'FlavorNameOverride' line replace what's currently there..? "{{ModId}}_FlowerCookies": "{{i18n:BA_FlavoredFlowerCookies_name}}"
no
let me see if I can find an example
but the key is literally the string "selph.ExtraMachineConfig_FlavorNameOverride_(O){{ModId}}_FlowerCookies/0", the value is the user-visible text (aka the i18n token)
does happen sometimes
an example would be very helpful, thank you for looking 🙏
ohhh, hm, in case one isn't found, I think I might get it better, let me test
Just do a patch export of the map itself for that location, it will include the final versions of the tilesheets included on it
(bumping so it doesn't get buried)
omg I could cry /silly
I think I'll finally no longer see a space where the ID/flavor should be for these now...thank you again @brittle pasture 
also I saw this
Let me know if you want this to also work for machines where the input is different from the output.
If you still was considering adding this, that would be coolalthough, would it be possible for it to work if there's more than one input..? I had a thought of an machine outside machine where you put two things in and get a furniture/object based on them, and realistically it would be nice if you could get the flower back in case you accidentally put the wrong one? but it's not end of the world if that isn't possible o:
Can you send me a zip with (a) a save folder which has an affected bush planted and (b) the mod and its dependencies? I'll see if it's an issue with Lookup Anything's integration with Custom Bush.
I should remove that line, because I added the solution below
oh!
I'm not sure if it is, I tried checking Cornucopia's custom bushes and those can be checked without any issues. I can still send you the files, though 
not related to your question but
"SEASON Winter, TIME 1800 2600"
this won't work, bushes always check their produce at the start of the day; adding this condition just means it will never produce
Someone else did report a similar error on Lookup Anything's page; so even if it's an issue with the bush, I'd still want Lookup Anything's menu to not crash displaying it.
Gotcha, give me a moment then!
is there another way of opening the .tbin files? I can't open them in tiled for some reason, even after enabling the plugin, and I wanted to edit the mountain map
have you unpacked the files properly? the maps should be in tmx format
Did you get the .tbin file from unpacking the game folders? If so, I suggest using StardewXnbHack instead which will give you Tiled .tmx files.
I used a web unpacker since the stardewxnbhack crashes for me
We can probably help you get StardewXnbHack working instead; do you get an error when trying to use it, or does it just exit without showing anything?
it just says that it's loading game instance and then it exits on it's own
Can you post a screenshot of the folder where you put the StardewXnbHack.exe file?
This path looks much different than mine hmm
really? I used steam to open this up, it's just in a different language
Can you try this?
- Right-click on the folder background (so no file is selected).
- Click the option that looks like "Open in Terminal", "Open in Command Prompt", "Open in PowerShell", or similar.
- In the window that appears, enter this command:
./StardewXnbHack.exe. - Post a screenshot of what the command does.
Is it okay for me to DM you a drive link to the zip files? They are larger than 10mb so I can't upload them directly
that's all that happens :'D
I suppose you could try asking someone for a unpacked content zip as is but idk if thats allowed
cp and tsinator should still accept it right?
Yep!
Huh, that's weird. Can you launch the game normally, then upload your SMAPI log and post the link here?
You understandably have DMs and friend requests turned off, could you add me? 
My DMs should be open (though not friend requests). I can't send you a message though; are your DMs open?
I'm tryna make a mod to just change the clothes but it keeps saying that the manifest is invalid here is the code for the manifest
{
"Name": "New_ShirtsNOT MINEvamphearl",
"Author": "Vamphearl",
"Version": "1.0.0",
"Description": "For me and my friend, not mine",
"UniqueID": "Vamphearl.New_ShirtsNOT MINEvamphearl",
"UpdateKeys": [],
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
}
}
If you need anything else to help me or understand whats happening just let me know i just don't understand why its not vaild (this is also my first time tryna make a stardew valley mod so bare with me please) I named the file manifest.json like youre meant to aswell and its not saying anything except that the manifest is invaild so as far as im aware thats the only issue
Hi! The error should mention why it's invalid, but the unique ID can't contain spaces. I suggest something like...
"UniqueId": "Vamphearl.NewShirts"
Yup, turns out it was me who had DMs turned off and I forgot 
I changed the UniqueId and its still not working this is the only error message im seeing unless you meant somewhere else
That's not the name in the manifest.json you posted; are you sure you're looking at the right file? Can you upload your SMAPI log and post the link here?
yeah, here it is!
https://smapi.io/log/fd7aba43da4d4f3593c20fdf69b7dad4
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 9 C# mods and 2 content packs.
Someone smack me Feature creep is horrid
does the name need to be the same as the folder file? also here is the smapi log
Log found, uploaded to: https://smapi.io/log/8de6347854d34257b891001fc43de423
there are other mods but everything else is working except this one im tryna make and the others weren't made by me
Bonk
Nope, the manifest name doesn't need to match the folder. Can you upload your latest Mods/MyClothingMod/manifest.json file to smapi.io/json/manifest, and post the link here?
T_T Thank you. Trying to figure out what should be sheered off into a new mod and what should be updated to my existing mod is horrible
@agile terrace You leveled up to Farmer. You're now a prettier shade of blue. Thanks for sticking around!
😔 i sometimes have to rein in my NPCs because i realize i can't just have them take over the whole game lol
it wont let me drop the file for some reason
is there some specific way you have to start creating the mod like on some extension/app or something?
also i can just send the manifest file directly if that would help, instead of going through the website
This is going to sound rude but I say this from experience: We sure it's a .json?
I was about to ask
if its txt
I once did that mistake
it was manifest.json.txt lmao
be sure to have file extentions visible
i created it using a txt document but it says its a json file
looks legit hm
Yea, looks right so far
wait are your file extensions show up or thats the file name that has it
!hiddenfileextensions
like manifest.json.json
Damnit
Hmm, I don't see any issues in the log. Just to make sure, you downloaded the StardewXnbHack-1.1.2-for-Windows.zip file (not the one for Linux or macOS)?
Otherwise we might need to try running custom builds of StardewXnbHack to see why it's failing for you (or I can just send you the specific file if you only need one file).
Windows and Mac hide most file extensions by default. If you are creating or updating mods, it's helpful to show file extensions so that you can be sure all mod files are named correctly.
To show file extensions on your computer:
On Windows 10, open File Explorer, click on the View tab, then check the File Name Extensions box.
On Windows 11, open File Explorer and click on View > Show > File Name Extensions.
On Mac, open Finder, and in the menu bar, click on Finder > Settings (or Preferences) > Advanced, then check the Show all filename extensions box.
i think it might be the file name should i just name it manifest and not manifest.json?
try that
(A misnamed manifest.json file would show a different error: "because it contains files, but none of them are manifest.json".)
I just posted the command
if it allows to remove the .json then its a part of the file name
and not the extention
Your file should be manifest.json, with the json as the file extension
where do i put the command though, sorry im a little confused 
do this and if it does show up as manifest.json.json then you know what to do
not the command, just do what the thing says
On Windows 11, open File Explorer and click on View > Show > File Name Extensions.
The "because its manifest is invalid" error only appears if (a) manifest.json exists and is named correctly, but (b) it contains invalid JSON.
its win 11 for you me thinks
also be sure that it doesnt have any letter from other languages that look like english ones too
in the file name
okay i did it now do you want another screenshot or should i try and launch it?
yeah it's the windows version
it's alright, I don't want to bother anyone, I'm pretty sure I only need the Mountain map anyways so if you could send me that it would be great ^^
is the name not allowed to have spaces either?
I see the 'unsaved changes' dot in the second screenshot; can you try saving it, closing the tab, then reopening the file from the folder?
I hate win11 cuz it doesnt ask to save the file on closing
messed stuff up for me multiple times
Name is fine
how do i save the changes sorry if it sounds like a dumb question
ctrl+s
this icon on the right should be a cross for you
it means it has no unsaved changes
I think its working now cause i dont see the error code but im gonna double check in game :D
well lets see then
most likely you had space in your ID and it didnt saved your edit and kept on being an issue
(An invalid ID would be a different error though; "manifest is invalid" is specifically invalid JSON format.)
Sure! I sent you the unpacked assets in a DM.
I mean it technically worked but it only changed 1 of the clothes options and it was meant to change multiple 
true :)
i put a png in assest and then did something or other to change the clothes in the content.json im gonna post both those rq
2nd image is whats in assests
!json its easier for people to check your json files if you share them through the validator (in the future)
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.
and this is the only shirt that changed
do you have any other mod that changes shirts
i was tryna earlier and it didnt work sorry :(
0 0 96 64
i have ones that add shirts with the fashion sense menu
i dont think anything else that changes shirts though ill double check though
its hard to tell from the screenshot of your shirt asset image, but if that is a partial replacement of shirts, meaning that a lot of blank space is left on the .png where normally there would be shirts, you might also want to change how your new shirt texture is applied, with PatchMode
Well ideally thats how youd want to change only part of the shirts
You also need to add this after your target
"ToArea": { "X": 0, "Y": 0, "Width": 96, "Height": 64 }
Youre trying to make a mod that replaces some but not all of the default shirts right?
yes
you do a rectangle, I also retrived the shirts you accidentally deleted by blank spaces
Or specify which area of the image to replace, as Sasha says
Try swapping the file and adding the line with ToArea
and see if it works
this way you keep the default shirts and make it compatible with other mods
kinda
If their new_shirts.png is the same size as the full default game shirt sheet, they will also need a FromArea, im pretty sure. contentpatcher wont know to disregard all the blank space on new_shirts.png otherwise 
oh oh right
alternatively, if they shrink the size of new_shirts.png so its only the size of the replaced shirts, the FromArea can be skipped (iirc)
Sorry im a little overwhelmed and confused where should i start
You need to do only two things, adding a line to your content to specify which area you want to edit on the original texture by adding this after the Target line
"ToArea": { "X": 0, "Y": 0, "Width": 96, "Height": 64 }
and then you also need a proper png for your new shirts file, the one I did here should work as fine
(you could also do two different rectangles but this works too)
so replace the last image with the one you sent?
generally yep
your file is too big and has blank spaces which game doesnt recognise and basically removes almost all textures for other shirts
i see now that ive done that just try and relauch and see if it works?
yep
would be nice if you dont use other shirt replacing mods that could mess yours one up for a testing period
but thats on you
i deleted any mod that said or had anything to do with shirts
im not worried about the other shirts i kinda just want these ones anyways
its still just the one shirt
💔
do i need to change something in the content.json
are you sure you choose the right ones in the menu
did you add ToArea line?
yeah i did that
can you show it rq
okay huh
try moving ToArea line after FromFile
and dont forget to add a coma after from file line
like this?
It's working!!!!
yayy can we see it?
how it looks in the game!
perfectt
glad I could help, thats a really good way for me to learn too
Glad you get something out of it too. Thank you again for baring with me even though the website yall sent wasn't working and i had to just send screenshots. 

although, would it be possible for it to work if there's more than one input..? I had a thought of an machine outside machine where you put two things in and get a furniture/object based on them, and realistically it would be nice if you could get the flower back in case you accidentally put the wrong one? but it's not end of the world if that isn't possible o: