#making-mods-general
1 messages · Page 337 of 1
(what Lumina said is also correct too, existing items dont usually change after edits. spawn new ones during testing always)
once an item is spawned, its data is saved on the item itself. it no longer gets most of its data from Data/Objects
so anything that changes in Data/Objects will not affect existing items
So for example the turnip seeds have a price of -1 in the shop entry, I assume that the final price in that case is the Price * multiplier but if I change it the buy price will be the one I wrote?
One question: What happens when you make the "Price": field of a modded item a negative number?
Does it take away from your profit or snap to zero?
You enter the matrix
Or does the game simply crash outright?
it takes more than that to crash the game i think
Only one way to find out
Does anyone know how I coud make the condition for a shop item to appear be achieving a specific skill mastery? For context i've made a custom shop that sells trinkets among other things, but I'd want those to only to appear when the player actually has the combat mastery.
you can check that they have the anvil recipe
Oh, I hadn't even considered that kind of method. Thanks
I think u want to check the stat instead
PLAYER_STAT Current trinketSlots 1
There's also
PLAYER_STAT Current mastery_4 1
this might be helpful? https://stardewvalleywiki.com/Modding:Game_state_queries
stat is probably better with the caveat you can only check the current player's
which of course is 99.9% of the time the case
I suppose you can make a mod that gives players the anvil recipe ahead of time
I had looked at that wiki page, but I couldn't find the trinketSlots or mastery stats there. Thanks though, I should be able to get it working one way or another
Tbh the game just Does That sometimes
Have we heard from Flashshifter at all about Castle Village since he did his big interview?
Out of curiosity, are the other masteries mastery_0-3 in order of the in-game menu?
Alright, thanks again
hey all new here 🙂 just trying to figure out content patcher and hit a stumbling block - how could i trigger an event during a custom festival when the player interacts with a specific tile (added in tiled)?
the event would basically be them receiving an item with a message
i've tried adding PlayEvent <eventName> and adding the event to the location the festival is in (Town), as well as Temp which is what the debug mod says, but no luck 😦
which festival? you might have to edit a specific map
i've based the map off of the egg festival, but edited it a bit
actually i’m not sure you can trigger an event inside of an event, since that’s technically what festivals are. let me poke around and see unless anyone else knows
you could switch event but i don’t think that’s what you want
try looking at how the luau is set up?
Hi! Another question re: festivals. The festival layouts change based on even and odd years, and so do the NPC positions. How do I make my custom NPCs do the same and change their event dialogue depending on the year? (Example: On odd years at one of the festivals, Alta stands next to Marlon. Marlon says "despite my bad leg i still never miss a festival," and Alta says "i can't say the same, but you've lived with it for longer than I have." On even years, though, she looks like she's hallucinating a conversation.)
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
Second question: how add dialogue for specific gifts? like if you give seb an obsidian he's like "ima see if i can shape this into a dagger"
@balmy valve Tiakall's tutorial explains festivals
i've see the governer's messages are present as events in luau, but not sure how to trigger something similar (can't find any other references to them in the unpacked files)
add a dialogue key for AcceptGift_(O)ITEMID
actually Tiakall's tutorial will probably tell you all of what you're seeking 
THANK YOU <3
Okay! Thank you
i’ll check when i’m on my computer! it might be hard coded though
I think we just never put that in wiki 
So I have a character that gives you an exclusive family recipe at the end of her 10 heart event, it's an empanada. Can I code in an easter egg where if you give her an empanada before seeing her 10 heart event, she treats it as a hated gift and says something like "you sneaky piece of crap!"
Actually
Nvm
Considering there's no way to get an empanada without cheating
The trinketSlots stat is special in that if you set it, the player will get the slot and start getting trinkets
you could but it is a bit of like "but why"
What if i give empanada from different mod then 
But yeah u can actually do this if desired, just have a RejectItem_ line conditioned on not seeing the event
well no because i did {{ModId}}_Empanada so it will only get reaction for my mod otherwise it will be a liked item since she likes most cooking
Yeah i mean like it's odd to get reaction like this
If it was something more specific to ur mod then it would be fun easter egg
imagine you have an extra food mod that adds empanada and Alta mentions she's been trying to recreate her mother's empanada recipe and you're like "Oh! I have one! Here, maybe try this?" and you give her a nice soggy empanada that's been sitting in an unrefrigerated wooden box for 3 years and she insults your bloodline and decapitates you
She actually does insult your bloodline if you say you can't handle any spicy food, but it's done very lightheartedly
Hm so to do that u need to track "staleness" and also force a death
I guess it would also bump rating of mod to R perhaps
NOOO
No it was joke
i dont want to do that
I've been calling this the Altagracia Mod so far, but i think I might change the mod name to Ctrl+Alt+Zero because it sounds cute
Dang it I should've only added Alta and four fairies so I could call the mod Alt+F4
luckily i only use mod id in my content.json so 😎
You are in the channel where there's only sauce and narrative is an afterthought
We did have creative writing thread tho
Still do 
is there a quick way to find every instance of a certain object/item in the spritesheets (pumpkins & jack-o-lanterns in this case, i'm replacing them) or do i just have to manually look through all of the images and make a list of the ones i need to edit?
i think there should only be a few locations? crops, spring objects, and maybe whichever sheet has furniture
i've found those + fall town and hats, but i'm worried that there's a hidden pumpkin that i'm not gonna catch but my friend will when she plays 
i keep thinking i've found them all and then bam, another pumpkin i didn't notice before
i think thats the best u can do for a project like this
fair enough
at least i have ctrl+f for the scripts
event_id Jierishi.Rahiel_LampUnlock
[Event Lookup] An event with ID Jierishi.Rahiel_LampUnlock does not exist
I can spawn the event with debug ebi, but I can't get it to trigger as 'seen', to continue modding
i believe you need to put a slash at the end so the game sees it as an event and not a fork
from the wiki:
ty! I went back to an older format, since I was able to get that working for a Marnie mod. Once I get this one working, I'll try migrating the names again to the 1.6 format
"977001/f Evelyn 0/r 1/y 2"
or I'll throw hands with my computer
this isn’t the issue with your event, but did you know that you can write {{ModId}} instead of Jierishi.Rahiel every time?
I thought that was aa template. That'd make things easier
yep it’s a CP token built in :)
when people say things like YourCoolModName that’s a template, but the double {} is a token
I wish I knew what I was doing incorrectly. I can't get this event to trigger naturally, even with the conditions removed
but it’s triggering when you do debug ebi?
Yes
the game is actually okay with int event ids without an ending slash
that's changed in 1.6.16, both will be treated the same then
but if I run event_id or anything like that, it doesn't show up
and it doesn't appear under Evelyn's Event logger either
No
can you send your json
I'm looking at a Mr Qi romance mod that was updated a week or two ago, and they have events within the Club. I made an empty .json for the mod to load, which finally let me get the scene to go
it can't be the difference between Data/Events/Club and data/events/Club can it?
fix it and see? idk how the game handles capitalization
nope
capitalization is handled differently by the different OSs so it should match regardless
even after restarting smapi altogether, just in case
i’m not familiar with that mod unfortunately
I'm going to move th elocation to seedShop and test
SMAPI will handle capitalization differences in asset names
Adding priority low to the load Club blank json made it spawn naturally in the Club, finally. Now to try adding the conditions back
How do I add a recipe to the Queen of Sauce TV Channel so that the player can actually cook the stuff I added?
I dont think without c#
there are other ways to add recipes though in case you werent aware
Can you show me how?
put it in a shop, send it in a letter from an npc
NPCs can send the recipe in the mail
learn it in an event
How exactly do I put it in a shop?
or even just have the farmer magically know it when starting the game
there's a mod that adds Queen of Sauce recipes to Gus' shop. might be a place to look
[[Modding:Shops]]
Anyone recognizes this font? It's the font I had in Notepad++ by default (even though Google says the default is Courier New?) and somehow updating LibreOffice changed it and I want it back
i wouldnt know the specifics but you could check out that link selph just sent
Pasting code in regular notepad, and then back to Note++ does it for me. Sometimes my "s will get weird when using json checkers because of fonts
to make it a recipe set the IsRecipe field to true
it's part of the "common fields" section
I thought this sprite was wearing boxing gloves for a hot second, and got very confused
Can you use either dynamic or local tokens to essentially make a list of possible values for a token?
I would like to have a token that's named, let's say, "outfit name" and list all the names I'm using for portraits and sprites. Spring, Spring_Weather, flower dance, Summer, etc.
Then when I need to target all my files, I could do "Target": "Portraits/{{Portrait Mode}}/{{outfit name}}.png" (and repeat almost the same thing for sprites) instead of having to do "Target": "Portraits/{{Portrait Mode}}/Spring.png, Portraits/{{Portrait Mode}}/Spring_Weather.png, Portraits/{{Portrait Mode}}/flower dance.png, Portraits/{{Portrait Mode}}/Summer.png" etc. And then have to repeat all of that but with sprite instead of portrait.
This would also (hopefully) mean that when I add a new outfit, I would only need to add the name of the outfit to the list.
the content modders yearn for the foreach
Ah yes the yearn o foreach
Your usecase doesn't really need a foreach tho just arrange your patch in a include
And then local token that include
So I would have to be using "Action": "Include" instead of "Action": "Load"?
Do I need to copy and paste the same local token list at the end of my patch to include sprites and the one for portraits?
Hey guys, sorry to interrupt, but im trying to add a new custom NPC to the game but I have no previous modding experience and I have no clue what Im doing lmao. Ive already done most of the sprite work for a very basic character but if anyone could help me understand the coding, or share any guides, it would be much appreciated 🙏
So i get to reuse these patches without writing out whole thing 3 times
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
Thanks for the help and the files for an example. I will take a look at that!
thanks!
Also, is it possible to have the travelling cart sell modded items in its random pool to pull from?
yes, it's a shop in Data/Shops like others
Does ExcludeFromRandomSale have anything to do with it or can it only sell modded items if they are manually added to the travelling cart?
the traveling cart does use @randomSale but it only chooses from vanilla items
you need to yes
Okay. Thanks for the information :3
[Event Lookup] Location: 22 Farm, ID: 103042015
[Event Lookup] Event seen: False
[Event Lookup] Conditions:
[Event Lookup] satisfied: e 295672 (Must have seen these events)
[Event Lookup] satisfied: t 600 700 (Between 6:00am and 7:00am)
[Event Lookup] satisfied: H (No further Information)
Any idea what that 'H' condition is?
"not host" in the old syntax iirc? but check the wiki
out of curiosity, do modded items ever get randomly sold anywhere else?
aha!
or maybe not? I have no clue tbh
it's "yes host", I was close 
you're right. I didn't think it was about multiplayer. I was checking farther up
Without explicitly adding it, considering vanilla shops only?
It definitely is that, or it isn't that. One of those two has to be correct.
there's the catalogue, which gets every furniture item not marked with ExcludeRandomSale
yeah. i was wondering what the use case would be for using ExcludeRandomSale
tbf in this case, it being either (!host) or (host) does narrow it down a fair bit 
Yeah you didn't technically present mutually exclusive options. Unless a third option was (host || !host) && ??
Y'all, it's a miracle
congrats! what was the issue
I had to give up on using the RustyKey as a trigger, and spent a few hours finding the actual event id for Gunther's rusty key event itself
in the vanilla game, it says 66/ . It was not 66.
Okay, I think I am getting a better understanding of how local tokens work. I notice that in the example mod that there are three separate entries (patches? What's the right terminology?), each with it's own value for the local tokens.
So I am assuming that it would not be possible to combine multiple values into a single entry. For example, something like this wouldn't work:
"Action": "Include",
"FromFile": "data/opossum-hire.json",
"LocalTokens": {
"L@Vendor": "AdventureShop,Dwarf,VolcanoShop",
}
},```
Is it accurate to say that I would still need a separate entry for each separate value that I want to use as a local token?
Yep u need 3 Include patches
Or however many u have
You are still saving a lot of repeats especially if u ever want to change shared info
Yes, it's not exactly shorter, but feels less messy and it'd be way easier to change things.
If the proposal for multi includes ever get made, refactoring over is easy 
But for now it dun exist
i have an item i've created of fairies in a jar. i wanted it to be placeable as decor, so i made it furniture, but there's no description. can i make it an object instead and give it the context tag placeable?
I doubt it
:O i love that 80% of the time i come in here with a problem, the solution is spacecore
oh i didn't know objects were already placeable haha
i was looking at the decorative bowl for an example
baubles adds like
invisible tables lol
so that their objects can be placed in more spots
personally i think if u dont have to make something furniture, dont.
sick okay i'll make it an object instead
and to clarify if you did use spacecore, you can override furniture description
okay cool
we do tend to recommend solutions that r more commonly installed
like if someone wants tile action on furniture i'd rec spacecore before i rec my own mod that happens to also do that 
to be clear i wasn't being sarcastic, i genuinely love that spacecore has so many functions and that you all know them off the top of your head <3
now to figure out how to implement interacting with objects... gotta make my completely random 8 ball
anyone know a vanilla example of a useable object?
no cus they dont exist 
this is also a spacecore thing, you may use object extensions to raise a trigger
and i would put that in custom fields, right?
no its a custom asset u gotta edit
manifest builder question... how do I stop it from including old data? For example, my csproj only has one UpdateKeys line but the built manifest includes both the actual key and the old placeholder -1. It's also including in the built manifest an old dependency that no longer exists in my csproj and furthermore not marking the actual (or any) dependencies as required despite my telling it to do so.
In a PropertyGroup:
<UpdateKeys>Nexus:28256</UpdateKeys>
In an ItemGroup:
<PackageReference Include="Leclair.Stardew.ModManifestBuilder" Version="2.4.1" />
Later:
<ItemGroup>
<SMAPIDependency Include="focustense.StardewUI" Required="true" />
<SMAPIDependency Include="pneuma163.WorldNavigatorCP" Required="true" />
</ItemGroup>
The manifest ends up with the following plus the incorrectly created dependencies:
"UpdateKeys": [
"Nexus:28256",
"Nexus:-1"
]
I'm still not able to get default color working for my Fashion Sense hat. I've tried everything I can think of... 
Hmmm
(and to be clear, I have completely deleted the mod in the Mods folder to allow it to create anew)
nope
The thing is that the manifest builder reads from the manifest to update it
So that will cache old data there
I use BaseManifest to have clean ones
alright, so turns out I did have a lingering manifest.json that I'm guessing it was pulling from, so most of this is all cleared up
One problem remains: it is not marking my dependencies as required
Required is default
Anyways. Recommend using a BaseManifest to avoid the issue in the future
That seems counterintuitive to me... in the hypothetical case with a mod that I make, if I change something in the manifest, it sounds like BaseManifest keeps old data around rather than replacing it. From the docs: "the generated manifest will use default values from a file"
Maybe I'm misunderstanding its use, though
It's the other way around
If you don't use BaseManifest it reads the existing manifest if it exists
If you use BaseManifest it won't read from the same place it writes to
Oh, gotcha - I do follow that logic now
I have now added <BaseManifest>new</BaseManifest> to the file. That's convenient.
is there a token for current locale
{{Language}}
hmm
see i was trying to think if i can make loading i18n better
tis fine ig 
{
"Action": "Load",
"Target": "{{ModId}}/i18n",
"FromFile": "i18n/default.json",
"Priority": "Low"
},
{
"Action": "Load",
"Target": "{{ModId}}/i18n",
"FromFile": "i18n/{{Language}}.json",
"Priority": "Medium",
"When": {
"HasFile: i18n/{{Language}}.json": true
}
}
"HasFile: {{FromFile}}" works btw
alas i dont think tokens work in target locale
well, if it helps you i do almost this exact thing for lacey's language overlays
{
"LogName": "Fair hat stall language overlay",
"Target": "Maps/hatmouselaceyStall",
"Action": "EditImage",
"PatchMode": "Overlay",
"FromFile": "assets/locale/stallText_{{language}}_{{RecolorPalette}}_all.png",
"ToArea": {"X": 0, "Y": 48, "Width": 48, "Height": 16},
"When": {
"HasFile:{{FromFile}}": true
}
},```
i am debate if i wanna be extra and use LocalizedText for a building mod im converting 
theres really zero point to it cus no events or anything supporting direct keys here
ok i think ill keep it simple cus not me mod 
"Id": "{{ModId}}_8BallUsed",
"Trigger": "spacechase0.SpaceCore_OnItemUsed",
"Condition": "ITEM_ID Target {{ModId}}_Magic8Ball",
"Actions": [
"spacechase0.SpaceCore_ShowHudMessage \"{{Random:It is certain, It is decidedly so, Without a doubt, Yes definitely, You may rely on it, As I see it yes, Most likely, Outlook good, Signs point to yes, Ask again later, Better not tell you now, Cannot predict now, Concentrate and ask again, Don't count on it, My reply is no, My sources say no, Outlook not so good, Very doubtful}}\" (O){{ModId}}_Magic8Ball"
]
},```
should i be using Target or Input in Condition?
i think it is Target but only spacecore docs can tell u
also this is a prime case of i18n random
recommend doing {{i18n:Magic8Ball.Message.{{Random: 0, 9}}}}
or however many message u got
all it said was "use item GSQ conditions to check the right item" in spacecore docs
very easy to just test
i was asking because neither target nor input worked lol
i do know it's triggering because whenever i put anything but Target or Input in there, i get an error message that it has to be one of those two
that just means the item is correctly cconfigured in ObjectExtensionData to participate in trigger actions
hmm then do you know how i would test it? like to identify which part is going wrong
and I'm assuming you have checked for typos on {{ModId}}_Magic8Ball vs the entry in ObjectExtensionData (and Objects)
i'll go check now
and that your modid doesn't contain spaces
-_- typo indeed
god
okay i successfully got one of the messages!
only once though, continuing to use the item doesn't appear to trigger it again?
trigger action needs to be set with the flag to stay active or whatever
by default trigger actions run once and then set metadata in the save to never trigger again
Ugh, trying to learn the appearance system is literally giving me a headache. (I am slowly figuring it out but I needed to vent a little to someone.)
lol
there's a tutorial/template, if you haven't seen it
I'm betting it's this one from the wiki I've been studying. https://stardewvalleywiki.com/Modding:NPC_data#Dynamic_appearances I appreciate the thoughtfulness though.
i was actually talking about this one, although maybe you don't want it for seasonal reasons, so never mind https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Seasonal_Outfits_via_Appearances
If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference between the two is that the token way is simpler...
oh awesome! good luck
will updating the random message to be on time change be horrible for performance? CP docs say randomness changes on day start
also, idk if it's my seed or what, but i keep getting a pattern of like A A B B C C D D
i liked the completely random idea, but i might go back to the original idea of it displaying daily luck
it depends, but i recommend avoiding OnTimeChange unless it's absolutely necessary
that's what i suspected. not necessary for this silly item lol
what makes update rates costly is not the content patcher part per se, but regenerating the affected assets
if nobody else is patching it and it's just text or something, it's probably not a very big deal to do OnTimeChange. but when any mod updates a patch, the entire asset has to be rebuilt and all mods that patch it have to reapply their edits
this can be catastrophic if it's an edit to a big map, like Town or Forest, which many other mods might be expected to have patches for
and that's why patching Town on time change explodes the game?
yep haha
i don't know if i would be patching Random or if i would be patching my custom trigger action
CP random isn't great iirc
yeah, i don't exactly expect it to be solving the true randomness problem XD
i'm going to see if i can work out the daily luck version, and if i like how it performs better, i'll keep that instead
Town is special in the sense that you don't need OnTimeChange patches to be bad, as it all has to run anyway everytime you leave town and re-enter it
still need OnTimeChange/OnLocationChange to have CP do something different though
ironically enough, farmhands don't have that performance penalty
interesting
my speedysolutions mod does fix this quirk of town however
and hopefully upcoming stardew versions have it baked in
https://smapi.io/json/content-patcher/564900ac35c848a29e9120a20f2f0268 i'm guessing i can't check for luck this way? it tells me "outlook favorable" no matter my luck
i miss python if elif elif else 😭
and is your daily luck not actually positive?
nope, not according to... uh whichever mod puts the little colored dice on the UI
UI info suite i think?
That's not how when works
Try: "Condition": "{{query: {{DailyLuck}} =0"
When is a CP construction
can i have two conditions? i already have one as required by the trigger action
separate the conditions with a comma
one condition field, one condition entry, two GSQs
"Condition": "ITEM_ID Input {{ModId}}_Magic8Ball, {{Query: {{DailyLuck}} == 0}}"
Oh the problem the first time was entry keys being the same
and yeah using the When syntax inside the trigger action, rather than at the cp action level
can i just rename them to 8ballgood 8balbad etc, or do i need to somehow have one trigger action that checks/returns three things?
yes, not required
though once you have moved into using GSQ exclusively to do your routing, there is the RANDOM gsq condition which you could experiment with
i'm not sure if you saw, but i had that originally, but it was kind of performing meh compared to what i had imagined, which is why i switched to trying luck. unless you're referring to something else?
you were using the contentpatcher random previously
oh i see
it's still not triggering even with different IDs/names
can i try using When at the CP action level? how would i do that?
There's a couple things I'm not sure about with the following appearance code. The intent is for the appearance to only apply if it's during the Egg Festival and there is an EggFestival.png file in the appropriate folder. (Portrait_Mode is one of my config options, for context)
{
"Id": "{{ModId}}_EggFestival",
"Portrait": "Portraits/EggFestival",
"Sprite": "Characters/EggFestival",
"Indoors": false,
"Condition": "IS_EVENT festival_spring13,{{HasFile |contains=\"Assets/Portraits/{{Portrait_Mode}}/EggFestival.png\"",
"Precedence": -200
},```
I based the HasFile condition off the HasMod example on the wiki, but I'm not sure I formatted it correctly and I'm not sure if I can actually use tokens (such as the config token Portrait_Mode) inside the file path in this context.
yes, with content patcher. would be a simple image patch
uhh lets see
!startmoddin
!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.
here ya go
does it require some smapi action or?
if u read it u will find out
alr
its gonna be the tutorial for content patcher
so uhh i installed it & i extracted the zip file, and i have no idea what to do next
im either blind & not seeing what i should do next from the website or straight up stupid ;-;
By "it" do you mean smapi, content patcher, or something else entirely?
content patcher
i extracted the zip file into stardew valley/mods
now i have absolutely no idea what to do next
check out that wiki tutorial in the post from Governor - then after you read that, the Content Patcher readme is linked on that page and that'll help you go further
alright! it works now
so now if i edit an item in this image it'll automatically load inside the game? or do i need to re-convert the file into .xnb for it to work
you should be saving a copy of that file, then using EditImage in content patcher. do not repack it into .xnb
Also, it sounds like you're at Step 2 of the tutorial (having just unpacked the files). Now you should follow Step 3 to create the folder and manifest.json that you'll need.
i only managed to unpack the springobjects file using this command
!unpack
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
Hello, I am trying to learn more about how the new local token feature works. It looks like it has some powerful capability for making a dynamic template. At this point in time, can it be used for defining objects in Data/Objects and machine inputs and outputs?
follow the instructions here to see all of the game files rather than exporting them via SMAPI
after unpacking them all & modifying what i need, how do i implement the changes so that it appears inside the game?
as amillionand1fandoms said, you need to have first made your folder structure and manifest.json. then you can make content.json and do an EditImage patch to apply your changes to the file
sure, you can use it for anything you'd do regularly (with enough tokens)
alright done
i did make the subfolder & the manifest.json file
now how do i exactly "Add the files needed by the content pack framework"
i dont get that part
@lucid iron Thinking I could actually figure out how to add this instance to CueSwap.
The readme is actually holding my hand.
send PR if it works out 
if it is still no work ill do it on the weekend
since it is a source gen u should turn on the thing that saves the generated code as a real file
Yeah, I'll tackle this tonight.
ive done all the steps, got this instead
i did all the steps, and its giving me the error above despite having the CPF field
!json Your manifest isn't quite formatted correctly. Use the link below and follow it's recommendations or carefully compare yours to a manifest from another content mod.
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.
hi ^_^ I'm making my first cp mod & have no coding experience. I'm trying to make something simple that changes the display names and descriptions of animal products. It does technically work but I must be missing something because it also turns the sprites of the items I'm editing into weeds :p
"Format": "2.7.0",
"Changes": [
{
"Action": "EditData",
"Target": "Data/Objects",
"Entries": {
"184" : {
"DisplayName": "txt",
"Description": "txt"
},
"186": {
"DisplayName": "txt",
"Description": "txt"
}
}
}
]
}```
(also I'm not actually renaming everything txt lol just edited it here for simplicity)
Try replacing "Entries" with "Fields". Using "Entries" generally saves over the whole entry, so any settings in "184" and "186" will get reset to default unless you set them. "Fields" just overwrites the parts you specify and keeps the rest as-is.
(The second example here is pretty close to what you have)
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#edit-a-dictionary
Want to speed up the harvest from cask but it has different output rules than the others. Can anyone help me?
You'd presumably need to set the AgingMultiplier of the OutputItems CustomData
"OutputItem": [
{
"CustomData": { "AgingMultiplier": "4" },
//..
}
]
Howdy, folks - pretty new here, I'm struggling a bit with this error I'm getting, I figured it was just a bracket I didn't close or something but that doesn't seem to be it
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 4 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
!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.
danke
Could you, please, upload you .json file and send us the link?
Missing comma on line 212
I just can't quite figure out what the error is telling me 🥲
Usually if the validator says 'unexpected... line x', it means 'missing comma on line x-1'
you're a lifesaver ❤️ further issues seem to be happening though -
What does "AgingMultiplier: 4" mean?
Keep pasting it int he validator for clues
I don't know what 'invalid property indentifier' means here either
thankyou for all the help ^^
does anyone have the link for unofficial updates for mods?
Unofficial updates fix mod compatibility when the author is away. This thread lets you download and request them.
For players
How do I find the latest update?
Don't search this thread directly! Comments here might be outdated. See the SMAPI compatibility list and XNB alternatives list...
To be honest I'm finding it hard to see what's going on here. I'd go back to VSCode or Notepad++ and see if all the brackets and braces match up
The comments inside the {} are also making it very disjointed
Should (hopefully) be fixed:
https://smapi.io/json/content-patcher/c7fd1481e87e4699acfce5cfbf3e68c9
Good to know! It seems the way to do this as a template is with include, and define the local token variables for the objects in a separate json. I have read the stuff on content patcher github and have experience doing things the old fashioned way. Has anyone tried doing what I have in mind and willing to share a small screenshot or advice?
I can't even see what you changed lol
However, I'm getting way too many warnings in VSC.
the item ages by 4 units every day
Yeah, a few formating issues - missing {} or [] or maybe having them way too much there...
@Alx are you using VSC or Notepad++ or just a text editor?
Because you should definitely use one of those two
!vsc
When creating content mods, it's useful to have a program that will check the validity of your json for you. We tend to recommend either VSCode https://code.visualstudio.com/download or notepad++ https://notepad-plus-plus.org/downloads/
thanks for all the help! I gotta head out, I'll take a look through with a fine tooth comb later - started in just notepad but moved over to notepad++
They underline where there are errors and colour things helpfully
thanks again folks ❤️
4 units every day? I don't understand. As far as I know the cask can only hold 1 unit
That's like time units
(I'm not volunteering to do this, but maybe a VSCode plugin specifically for newer Stardew modders that explicitly disallows you from creating invalid JSON might be a good idea?
)
say a item without quality and aging multiplier 1 would need 56 days to mature, then a item with a multiplier of 2 would take only 28 days
half that
I mean doesn't all json spend a few sec being invalid
Not when editors like VSCode automatically create the closing pair for what you just typed!
Smh dh taking away my right to write stuff inside and then surround with quotes
I feel that while it not bad idea
- how would new modder know to get this extension when they don't even know what a vscode is
- newtonsoft is a funny wild west parser
Yeah, it would only help people who come here or see it on the wiki if we start pushing it in those places.
And this would be using... honestly, what does VSCode use?
Speaking of code and I know I'm a baby, I successfully wrote an Info.plist (xml based) so that my self-compiled Aseprite would act like a real app, and I'm proud. (edited to remove an awkward mixed metaphor)
Nice info, thank you.
https://smapi.io/json/content-patcher/18d604ac494b4062b28e67ed34616d73
I can't get this map to load in Smapi. I rebuilt the tbin, just in case too
does anyone have advice, or insight?
[[Modding:Location_data]] that's not how a Data/Locations entry is formatted
Ah. Tiled says it embedded the tilesheets, but when Smapi tries to load the map, the tilesheet paths are borked
!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"/>.
Rite of passage 
Switching it to a tmx from a tbin, and using VS Code intstead of Community finally helped me. tyvm. Here's to testing it again
switching to tmx is almost certainly unrelated and just a coincidence
when I tried opening up the tbin in VS Code, it showed {NUL} everywhere. Resaving it as a tmx allowed me to see the asset locations within the code. I don't know why
A missing plugin?
something like that. tbin is a binary file format
tmx is xml, so it's human-readable and editable by hand, one of the reasons it is generally preferred on here (although you can set tiled to export the layer data as binary base64 or something like that, shrinking the file big-time at the expense of that feature)
yeah, it's only part of the file. i haven't explored it much
"[Content Patcher] Ignored Rahiel - Custom Genie NPC > custom location '{{ModId}}_RahielLamp': the Name field can only contain alphanumeric or underscore characters."
Should I go through and replace the {{ModID}} with Jierishi.Rahiel ?
Are you using CustomLocations
Yes
If the answer is yes switch to Data/Locations
(then please tell us which guide or tutorial told you to use CustomLocations, so we can fix it)
The format is a little different but u basically do ordinary EditData on Data/Locations
Pls heed warnings 
vin with the fastest fingers holy cow
You know, I promise I'm fairly intelligent when I'm not talking

I feel stupid as hell
(i rotated in place for 3 days debating if i should translate custom locations but ultimately i did cus ppl might be updating from there and need info on old system)
sounds like you would get pretty dizzy from doing that
It is bc i keep failing saving throws u see
my condolences 
I think the amount of missed warnings, like that one, have humbled me more in the last week than anything else. I've gotten too confident
Does sve still use custom locations
yes
Smpi is still throwing error codes about climbing tilesheet data.
do I take out the /tilesheets/?
It's trying to reference this
I have them in assets/tilesheets with assets/Maps being separate
I've tried embedding them directly, and the button grayed out, but it still seems to be referencing them from a computer location
lol 🙂
So basically for anything that's a vanilla tilesheet you need to arrange your working folder with the tmx in Maps too
Do not rename sheets, and do not include these in your actual mod folder
For instance if you needed Maps/springobjects.png, your working folder needs to be like
wip/
Yourmap.tmx
springobjects.png
For a custom sheet i recommend naming them after your mod id
Jierishi.Rahiel_geniehouse.png for instance
Then, do a Load to Maps/{{ModId}}_geniehouse in ur mod proper
Anyways u can still fix up ur existing tmx if u change these names and change the source= stuff by hand
pssst chu
you don't need to load custom spritesheet if they're in the same folder as the map
are you sure the load is even respected though? if they're in the same folder I thought that takes priority 
any idea how I get it to stop seeing
<tileset firstgid="10561" name="townInterior" tilewidth="16" tileheight="16" tilecount="2176" columns="32">
<image source="/tilesheets/townInterior.png" width="512" height="1088"/>
as from my C:/ and from the tilesheets or Map folder within stardew?
Yeah so what i actually do iro
different folder?
Is to put the png in Jierishi.Rahiel/genieroom.png
it's doing it to the custom png as well as the vanilla assets
I think it'll help you to take a look at a vanilla map and how their tilesets are setup
ty
It's difficult to explain without visual aid
I can tell you this looks wrong tho
And / probably turned it into an abs path
<tileset firstgid="5939" name="v16_Waterfalls" tilewidth="16" tileheight="16" tilecount="900" columns="36">
<image source="spring_Waterfalls" width="576" height="400" />
<tile id="145">
it’s a little annoying, but what i do is have two folders: one on my desktop and one in my mod. the one on my desktop is my maps workspace and i copy all vanilla tile sheets and maps there, and also copy all my custom maps and tile sheets there. whenever i work in tiled i only open them from the maps workspace folder.
whenever i finish something in tiled, i save it and then copy the custom map to my mod folder map location wherever that may be. i do not include vanilla maps or tile sheets in my mod folder.
this setup helps prevent tile sheet climbing or errors, and makes sure the game can load my custom maps using vanilla tile sheets
I wonder if it'd be easier for me to recreate the entire tmx map and try again, as awful as that sounds
i wouldn’t think you would need to do that unless it was seriously broken. it just sounds like you’re having file organization issues to me?
can you send a picture of your mod file structure as pertains to your custom maps and tilesheets
am i reading this correctly? i thought your mod folder had to be inside the stardew valley folder for SMAPI to find it. it looks to me like it’s just sitting on your desktop
is your non-working copy the same?
working-on* copy I should say
Smapi is specifically referencing furniture, it also says it's looking for an xnb file instead of tmx
okay so it is the same. can you send your tmx so i can view it in notepad
yes. ty. I appreciate your help
no problem, i actually love it when people have problems that i think i know things about lol
sent via message
i didn't get it, i think because of the anti-spam measures
Ah one second
oh wait there it is
I was going to post it in here, but then I thought about someone making a mistake (like me) and thinking it's a working copy of something
oh you got some weird shit in here :/ i assume because it used to be tbin
Probably. That's what Chu was saying
this is what i was expecting
Maybe I'll go make lunch and then come back and remake it completely
that certainly looks more like how the vanilla tileds read
I'll do that. Let me go feed the teenagers in my house and I'll come back
sorry i couldn't help :( and if anyone else knows a way to salvage it i hope you find it
That's the base 64 format it's fine dw
the other one was much wider, so his room couldn't be seen (I was thinking like how you can see the Gold Scythe mine from the dwarf room in vanilla). Should I work about that, or make the room smaller
There's a couple things I'm not sure about with the following appearance code. The intent is for the appearance to only apply if it's during the Egg Festival and there is an EggFestival.png file in the appropriate folder. (Portrait_Mode is one of my config options, for context, and I have different folders for each mode.)
{
"Id": "{{ModId}}_EggFestival",
"Portrait": "Portraits/EggFestival",
"Sprite": "Characters/EggFestival",
"Indoors": false,
"Condition": "IS_EVENT festival_spring13,{{HasFile |contains=\"Assets/Portraits/{{Portrait_Mode}}/EggFestival.png\"",
"Precedence": -200
},```
I based the HasFile condition off the HasMod example on the wiki, but I'm not sure I formatted it correctly and I'm not sure if I can actually use tokens (such as the config token Portrait_Mode) inside the file path in this context.
Stop right there criminal scum
What if someone wants to recolor ur map thing bolb
I do personally wish we could just load tsx to content too
😔
@urban patrol
I checked out that NPC Festival tutorial you guys recommended, and now I'm kinda overwhelmed. Can someone give me step-by-step instructions on how to make the placements different for different year parities? I know you have to append _y2 somewhere but my unmedicated neurodivergent ahh can't figure it out. Thanks in advance
I remade it, as a tmx, with the tilesheets embedded form the start and look! It /looks/ right to my untrained eye
yeah it looks like what i would expect. is it working?
i don’t have step by step but i do have my festival json i could send you as an example? i got it from a template
i also defined a token in my content.json as suggested by whatever tutorial i followed
no
It's trying to access Maps/furniture. Discord isn't allowing me to upload images for some reason
please 🙏
[14:14:45 ERROR Content Patcher] Can't apply patch Rahiel - Custom Genie NPC > Include maps.json > Load Maps/{{ModId}}_RahielLamp to Maps/Jierishi.Rahiel_RahielLamp:
StardewModdingAPI.Framework.Exceptions.SContentLoadException: Rahiel - Custom Genie NPC loaded map 'assets/Maps/Jierishi.Rahiel_RahielLamp.tmx' with invalid tilesheet path 'furniture.png'. The tilesheet couldn't be found relative to either the map file or the game's content folder.
going to try and redirect to to tilesheets vs maps
yeah so furniture is actually a vanilla tile sheet it can’t access 😅 i believe you’ll either need Alternative Tilesheets Access or to include furniture.png in your mod folder
ah!
i made the same mistake
sure, one sec
thank you
tell me if this link works for you? https://github.com/nbeymer99/DeadBoyDetectives_v1.0.1/blob/main/data/Festivals.json if not i’ll send it as a file
it workin' thank you
awesome
let me also link you to the content.json
https://github.com/nbeymer99/DeadBoyDetectives_v1.0.1/blob/main/content.json you should define a dynamic token as seen at the very bottom
Gah there's not, like, variants for the different years
like year 1 vs year 2 layouts
there should be! do you mean you want to see the layouts visually or what?
no
hang on lemme try to words
Do your characters not change position
because i only see one entry for each and it's got no _y2
Could you load each map like
"Action": "Load",
"Target": "Maps/{{ModId}}_ExampleCave",
"FromFile": "assets/map.tmx"
and use a condition for it to check the year?
the tutorial just says i'm appending something????
"Important note for 1.6: Vanilla festivals now have two layouts for year 1 vs. year 2; year 2 variants are distinguished by _y2. If you want your character to show up in these variants, you need to have a _y2 for the "Set-Up_additionalCharacters" entry, the "set-up" field (for animations), and the dialogue keys. If you don't have any changes between year 1 and year 2, you can shortcut this by making a dynamic token: "
[game] Warp to Jierishi.Rahiel_RahielLamp failed: location wasn't found or couldn't be loaded.
ffs
yes, the additionalCharacters fields are shared (there's only one key, and everyone edits it), so you have to append your data and not just overwrite what's there
oh i see yes sorry i was lazy and kept them the same positions year by year by using the token. if you want it to differ you just have to have two patches
i dont know what that means😭
two “Operation”: “Append”
i recommend tackling one thing at a time. first, get your NPC to spawn at one festival in year 1
then expand as you feel comfortable, to the other festivals and to year 2
sorry is this for your own mod or were you suggesting that for festivals
for festivals
and don't mind me (just lobbing a brick for later): prepare yourself to handle winter8, which has a differently-named main event key for some reason and if you don't account for that your NPC won't show up during the fishing contest lol
did you edit data/locations to add it?
that's ok, she doesn't fish
She spawns at all of them correctly in year 1
Yes. My desktop discord now isn't working, and discord via browser isn't allowing uploads of image snow
But I have 2 npcs that i wanna put in!1 AAAHHH
And for the second operation append, where do i put the _y2
@balmy valve You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
mister governor i have beef with you, i keep putting my best cheeses into the soup and you say it's terrible every time, why would you be so mean
PLEASE where do I pu tthe _y2
I only like those shiny square pieces of cheese. Delicious!
i would figure it out but I am afraid
I will bring Kraft Singles for you next time mister governor, also mayor lewis is diverting tax funds to personal projects i would suggest you look into that
Set-Up_additionalCharacters_y2 like that
Welp. Nap time. No custom map for me today
thank you <3
I am unsure if I did something wrong when unpacking, but there's no Andy files in Characters/Dialogue
I used StardewXnbHack
Does he have a special name?
Andy comes from SVE, I don't believe he needs to be unpacked does he?
Andy is not a vanilla NPC, he is from Stardew Valley Expanded. You can just dig around in the mod files for him
oh my goodness, I had no idea
https://smapi.io/log/f859e4ff23bf436fa60d747d243bd442 Custom gift tastes aren't showing up right? like gift tastes for custom items i mean
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 6 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
and this is why we recommend people to play non-modded first hah
Yep
My sister only played Stardew Valley with SVE and Ridgeside Village. She bought SDV for mobile, and was very confused
Especially not with a mod that turns vanilla on its head and changes the lore so much 
To be honest, almost the entirity of my 250 hours in the game is the same modded playthrough.... so I'm not exactly sure what's vinillah
yeah discord is bugging out for me too, had to restart. at least there’s always smapi.io
hehe
Guys I have a problem, custom gift tastes aren't showing up for my custom characters
https://smapi.io/json/none/c916e85097084d97bfa1b1b7c2a7687a this is what I have
post your gift tastes
It's why I reached perfection in vanilla at least eventually to know what's what (although I still had a pretty good idea since I had played the game for so long)
And why I reached perfection again after 1.6 was released to know what was added by the game and what was modded
sounds like you might have a missing or extra bracket somewhere
that looks correct to me. can you type patch summary into the SMAPI window and then send your log so we can see what’s being applied?
okay
wait no! you’re missing a bunch of commas
oh no you’re not they’re just in the comments
is the map itself named the right way btw
!log would you mind sending it here? it’s easier to read
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.
especially when i’m on mobile 
cuz when i scroll up the last screenshot i see is just named RahielLamp.tmx and not Jierishi.Rahiel_RahielLamp.tmx
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 11 C# mods and 3 content packs.
So if Andy's lines are in Expanded, how would I mod them? Is it even possible without manually updating the mod? I've done that to fix things in the past, but the fix gets lost in upgrades
I renamed it to RahielLamp.tmx
You should be able to. Is that when load priority comes into play?
yeah but your content.json says it should be Jierishi.Rahiel_RahielLamp
{
"Changes": [
// adds location data
{
"Action": "EditData",
"Target": "Data/Locations",
"Entries": {
"{{ModId}}_RahielLamp": {
"CreateOnLoad": {
"MapPath": "Maps/{{ModId}}_RahielLamp"
}
}
}
},
// adds the map file
{
"Action": "Load",
"Target": "Maps/{{ModId}}_RahielLamp",
"FromFile": "assets/Maps/RahielLamp.tmx"
},
// adds a warp from the Club map to the Rahiel Lamp
{
"Action": "EditMap",
"Target": "Maps/Club",
"AddWarps": [
"21 8 {{ModId}}_RahielLamp 5 10"
]
},
// adds a warp from the Lamp to the Club
{
"Action": "EditMap",
"Target": "Maps/{{ModId}}_RahielLamp",
"AddWarps": [
"5 11 Club 21 9"
]
}
]
}
look at your MapPath
and your target for warps
id just suggest naming it all the same but thats up to you i guess
Let me try again. I had the map sas Jierishi.Rahiel_RahielLamp but I was getting an error, though I can't remember what
anyway do you try warping through your warp or via command
through the warp. The warp tries to go through, but then i get the error that the map doesn't exist
try warping via console command maybe?
and the warp worked in the club
I deleted all fo the {Mod etc}} and retpyed everything, the same exact way
minus typos
I don't know what the issue is, but something got fixed
so you dont have {{ModID}} anymore?
I do. I deleted everything, then just retyped it back in
maybe it really was jsut a typo somewhere who knows
On my Marnie mod, I had issues with my "s being weird when copying them back and forth between Note++ and the json checker - and I'd have to retype them
I also have an issue, when you guys are done with this. She's not showing up at festivals. here is my json parsed
Probably
well, its all good now
wow i’m glad Void was here to help fix… whatever it was lol i couldn’t for the life of me find it
Me neither
WOW did you make those tiles yourself? it's 🔥
i have that issue when i copy paste from anything that allows smart quotes vs straight quotes. same with …
I did also rename the map three times in a row, in case something wasn't sticking in the properties
Most of it is from the vanilla files. I made the building border, walls, and Portal on the leftside myself in Tiled
I love it
thats because im smoothbrain and make many map related mistakes myself
help me please
was i supposed to
load sm into the content file
which festivals have you tried? also it looks like your coordinates may not be right—you have up down left right for half, and then numbers for the other half
did you “include” this file somewhere
DANG IT THATS PROBABLY IT
i did that the other day 😂 WHY ISNT IT WOR—oh i didn’t tell it where to find it lmao
ah, the lovely include
right up there with not loading blank.json
just yesterday i forgot to include my png and was like why is it an error building
ok let me try again
what's blank.json?!
if you’re not using it don’t worry about it. it’s how some people prefer to set up files
Forget spaghetti code i'm out here making macaroni code. it's full of holes and held together by cheese sauce
i find it easier to load a blank json and then edit it
New quote added by quillex_ as #6418 (https://discordapp.com/channels/137344473976799233/156109690059751424/1382799009336524801)
jsut how i like it
that feels like an honor
I cackled
OH NO THERE IS SOMETHING WRONG WITH HER FEET
BUT THE SPRITES ARE CORRECT
I CHECKED
her feet?
yes. One moment
its a required setup file if you want to add events or dialogue or something to an asset that does not yet exist (such as events for a custom location) without just straight up Loading the file there
(if you use Load, you cannot use tokens, so people largely prefer the blank.json. if you load a blank.json youcan then do EditData on the asset)
i cant share images fsr
But all her walking is shifted down by one pixel
So anytime she turns to the left, right, or up, there's the feet of the previous sprite haunting her above her head
you sure her sprites are aligned right?
May I upload spritesheet?
oh wait nm
yup your sprites are too low
something's off. that's not a multiple of 32
NOOOOO
hold on, I can fix it rq for you
your sheet is one pixel too long
GAH
and everythingg needs to be shoved 1 pixel up
okay i can fix that 😔
thank u but i have 2 more spritesheets to check now
ok 🙂
but because i used the sprite borders
I ended up buying Asperite, so now I use it any chance I got
Question, how do you make custom long sleeve
your widths are ok. I imagine you only need to shift everything up by 1
ok
have you not set the grid in asesprite to 16x16?
I don't know what it's called but I think there's a framework
Huh? Really?
Fashion sense I guess
I use procreate
Let my search discord. someone was talking about it yesterdaty
I only see sleeveless shirt from sprite resources
Quill || 463 Mods
[BOBA]
— Yesterday at 6:44 AM
@barren surge You want Fashion Sense for doing long sleeve shenanigans
Right I am so forgetful
everyone's got a million things going on, you're fine
Or you can see if there is something you like on this website: https://floogen.github.io/StardewValley/fashion-sense
(Collection of all existing Fashion Sense mods of nexus)
(but there are definitely packs with long sleeves, I have seen them but don't know their names)
I wanted to take an old lady nap, but my kids and my dogs are all in my bed
Thank you. Sucks that I have a hard time finding making fashion sense mod in YouTube
there are 4 other rooms in this house.
Actions > turn on Drawing Guide > Click Edit Drawing Guide > Change Grid size to 16
I'm just a beginner, but you might consider looking at another fashion sense mod is coded to see what they did
When this genie NPC is done, I'm never marrying any other npc. This took too much work
I shall then. Although I am not a coder either
Does this kind of thing clooks like what you're looking for? https://www.nexusmods.com/stardewvalley/mods/13393
Honestly I am considering of marrying my bf in co op mod
Omg omg yes. Although I am a bit selfish. Is there gloves version too
There is this mod: https://www.nexusmods.com/stardewvalley/mods/15431
Can I pin the link though? I don't want that link to be flooded by chat
Wait is there a resource channel for that
only junimo can pin messages
Well I can copy and paste it
Just keep it open on your browser?
So no biggie
Or yeah, copy somewhere safe
(or just lookup "gloves" on nexus and you'll find it quickly ^^)
The problem is that I lived in harsh county. The power is shut down and wifi is ruined by rain
As always
But I will copy and paste it somewhere then
Oh, that sucks, yeah I understand then
i tend to have a private discord server for stuff like that
Well I am glad that the problem is resolved
Wow that's pretty smart move.
i have my moments
For offline saving, I have Obsidian
You can use any random notes app with offline functions for it tho
Or word/LibreOffice/whatever
Done. All I need to make art assets for my custom clothing
I should have practiced faster workload
I can't move on my map after loading. Um. I don't have anything on Paths, is that my issue?
you might have put stuff on the buildings layer
that is invisible
if you have something on the buildings layer where you are thats the issue usually
I have myself porting to the corner in the bottom left. I turned off the back layer. There furniture at the bottom is building and in the middle
let me try a different port spot
there’s a mod called debug mode that lets you see building tiles in game
yes
oh, let me try that
because I don't have anything on the building layer right there, but I can't move
So how do I change event dialogue for year 2? Where do I put the _y2 suffix?
It could be the wall
No nvm, you used the correct wall
you know how you do "{{<NPCNAME>}}": "{{i18n:<NPCNAME>.EggFestival}}", (or something similar for the dialogue? add a _y2 to that npc name
ya
ok!!
and then jsut add your y2 dialogue to that
should it be in the same entries list as the dialogue for the y1 festival?
are you using a dialogue.json or the i18n?
dialogue.json
Ok!!
aye
mmm
wait
I don't think I understand why
thats a lot of red
everything red is a building tile. take the eraser tool and erase everything invisible
ah map work i wish i still was in that stage stares at all my events i still gotta do
that green button looks familiar
Let's trade. You spawn in my genie lamp display case in the club, and I'll write all of your events
i have 34 events, my friend
mapmaking is my favorite for sure
Event making was my favorite
but they're easier to trigger, so far. and the majority of my first mod was just events
i dont like coding the event, i like writing them in itself
the art part is HEAVILY favoured by me tho lol
my trello is so long with what i still need to do, wahh
i think once my alpha is ready i gonna post another teaser pic on nexus 
i really like buildings and portraits, but i hate sprites
knew it
post characters.json?
I'm in the middle of trying to rewrite it using the tutorial agian. Here's where it's at
https://smapi.io/json/content-patcher/69a4183b6ca04615ae8b47a8f6316139
gift tastes are mandatory before NPCs are done i think
oh good wren is here, she’s the expert
I have this on a gifts.json
https://smapi.io/json/content-patcher/98b619dc43b8430d9bb8b449221c3b79
I think it's Wren tutorial I'm using
I'm trying to decide if I should just put all of his files together into a Rahiel.json, instead of separating them
What sort of performance impact do TASs have? Does the built-in pooling feature help at all? For large numbers of them, do you think locality could offer any benefits, or will the overhead from spritebatch render optimization pointless?
I know I've heard people complaining about lag with sve's tas vfx, so I want to see if I can avoid that
Ah, I don't really do npc stuff, you might be confusing me with tia, who made an npc called wren
🙃 my bad!
It's all good
I sure did 😄
idk if this is the issue but the order is actually loved/liked/disliked/hated/neutral
let me cook
js but comments gotta be // not \\
Would anyone be able to help me figure out how to add new items to existing shops using C# and not Content Patcher? I am wanting to be able to control the configs and whether certain changes are made or not through GMCM which is why I dont want to use Content Patcher. I have tried looking online but could not find any direct info regarding specifically adding items to the shops and what the syntax would be. Only the generic guides on data format for shops and editing a game asset but the example shown doesnt help with shop data assets.
not that ill try and steer you otherwise if you really wanna use C#, but are you aware that CP will make a section in GMCM for you for your CP config?
if all you want is simple checkboxes or something and you dont need any of the more customizable GMCM API features, then there is zero difference between using CP and using C# when it comes to how the player adjusts your config
I was wanting use a bunch of the custom GMCM API features which is why I was hoping to have it all in C#. Sadly I make things too complicated for myself 😅
Thank you!!
@tiny zealot i feel like i remember you at one point trying to figure out how to get the duration of a Cue. did you ever figure that out and if so, how did you do it (i am in the same boat)
((if it wasnt you and im misremembering then oops sorry for the ping))
edit: never mind i have figured it out i think sorry for the needless ping 
How did you do it? Previously I just checked if the track was stopped to see if it had ended
public void GetCueDuration(Cue cue) {
if (cue._xactSounds[0].complexSound) {
var instance = cue.GetPlayWaveEvents()[0]._variants[0].GetSoundEffectInstance();
Duration = SoundEffect.GetSampleDuration(instance._effect.Spring.Length, 44125, AudioChannels.Stereo);
} else {
var instance = cue._xactSounds[0].GetSimpleSoundInstance();
Duration = SoundEffect.GetSampleDuration(instance._effect.Spring.Length, 44125, AudioChannels.Stereo);
}
}
so far ive not found a cue that throws an NRE when doing those array accesses but if you wanted to be super safe you could make sure they exist and have elements first
also this is just what im using for my setup hence the void return and the random Duration = ...
What's 44125...
the sample rate
Can I change the sample rate
if you'd like
but the cues in SDV use 44125
if you wanted to be even super safer, instance._effect.Spring.SampleRate
you can also change it to Mono instead of Stereo i guess
dont know how you might detect what audio channel mode the player is in
How the heck do I fix sold recipes being broken?
[game] An error occurred in the base update loop: ArgumentException: An item with the same key has already been added. Key: 1
at System.Collections.Generic.Dictionary2.TryInsert(TKey key, TValue value, InsertionBehavior behavior) at StardewValley.CraftingRecipe..ctor(String name, Boolean isCookingRecipe) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\CraftingRecipe.cs:line 122 at StardewValley.Menus.CraftingPage.layoutRecipes(List1 playerRecipes) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Menus\CraftingPage.cs:line 202
at StardewValley.Menus.CraftingPage.RepositionElements() in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Menus\CraftingPage.cs:line 351
at StardewValley.Menus.CraftingPage..ctor(Int32 x, Int32 y, Int32 width, Int32 height, Boolean cooking, Boolean standaloneMenu, List`1 materialContainers) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Menus\CraftingPage.cs:line 89
at StardewValley.GameLocation.<>c__DisplayClass385_0.<ActivateKitchen>b__0(MultipleMutexRequest request) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Locations\GameLocation.cs:line 8676
at StardewValley.Network.NetMutex.Update(FarmerCollection farmers) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Network\NetMutex.cs:line 86
at StardewValley.Objects.Chest.updateWhenCurrentLocation(GameTime time) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Objects\Chest.cs:line 1153
at StardewValley.Locations.FarmHouse.UpdateWhenCurrentLocation(GameTime time) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Locations\FarmHouse.cs:line 950
at StardewValley.Game1._UpdateLocation(GameLocation location, GameTime time) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 6166
at StardewValley.Game1.<>c__DisplayClass735_0.<UpdateLocations>b__0(GameLocation location) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 6126
at StardewValley.Utility.ForEachLocation(Func`2 action, Boolean includeInteriors, Boolean includeGenerated) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Utility.cs:line 342
at StardewValley.Game1.UpdateLocations(GameTime time) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 6124
at StardewValley.Game1._update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 4326
at StardewValley.Game1.Update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 3454
at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate) in SMAPI\Framework\SCore.cs:line 1095
!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.
(update i forgot you have to replace _currentXactSound with _xactSounds[0] bc i forgor that the currentXactSound does not exist until you play the Cue once...)
I have Stardew Valley on Steam.
Are you making a mod or trying to find support for playing with mods?
Both simultaneously.
Well, more making a mod.
And are you writing C# code, or a content pack?
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 6 C# mods and 6 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Some details about the recipe you're adding might be helpful for troubleshooting the error. The error seems to indicate that more than one thing with the same unique id are being added to a dictionary.
Here's another thing: I CAN'T update any of the mods that are on Nexus because of their login wall when you attempt to download something without an account.
Frog Legs requires broccoli and a bullfrog. Fried Axolotl requires Axolotl, tomato, spring onion, and oil, and Lamprey Pie requires lamprey, flour, and sugar.
!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.
This is more what I was thinking. The actual way you're adding the recipes.
I just realized that I made a mistake in adding the Lamprey Pie and Fried Axolotl recipes to Gus's shop.
Okay, I fixed it: https://smapi.io/json/content-patcher/9b11a1718c044a9e873f6c1a226b2e8d
Now how do I fix a save file that already bought the recipes and is affected by this?
You can open your save file in any text editor although I'd recommend VSCode, and just set the format to XML
If you do edit a save file manually, just make sure you have a backup because it's very easy to break something to the point where it no longer loads
Where exactly are the save files anyways?
!saves
Use this guide if you want to find your save file or transfer it between platforms:
https://stardewvalleywiki.com/Saves.
Okay, I opened up my save data and it's a single, cluttered line.
In VSCode, once you set it to XML you can use Format Document to make it look nicer
I don't have VSCode
One thing I noticed is that your recipes use different ids. Underscores in one, and period in another.
I only know how to help with VSCode since that's what I use. Anything else, you're on your own.
hi im new to coding and to modding
Which one should I end up using?
It doesn't matter as long as you're consistent
You can't switch up the id between different things and have it work
Will it break any saves if I use one over the other?
any suggestions for a simple mod to make as a beginner
I thought recipes couldn't share IDs with items.
It's really hard to break a save. You should be fine with either.
Will it automatically be fixed if I make it consistent?
my real suggestion is for whatever you think would be most fun, because i think excitement is a good motivator. other than that, i think maybe adding an item with content patcher would be simple?
!startmodding this is the best place to learn the basics
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.
If a recipe ID is changed, will it reappear in a shop if it was added to one?
Don't think of it so much as a recipe changing, but more like a recipe is removed and a new one is added
The new one will show up, the old one will be deleted
And when I went fishing, an axolotl somehow appeared without the fishing game.
Also, how exactly do I make a fish harder to catch?
progress
HOORAY
if I have all of my dialogue in the i18n, do I just leave the dialogue.json blank, or with {}?
actually, I'm assuming everything I put in th ei18n probably was meant to go into the dialogue.json and I'm wrong
What is dialogue.json
Oh so includes are basically a way to split up your 20000 EditData
Their names mean absolutely nothing it's just your organization sense
Ah ok
When you have text in i18n you still need to edit them into the npc's dialogue asset somehow
I have the default inside of the i18n folder, but he isn't responding to conversation. I assumed it was because I was missing that.
The usual rec is to load a blank json (i.e. just {}) to the Character/Dialogue/npcid asset
Then u do further dialogue edits on it
Speaking of includes, does anyone know if you can use an Include patch within the Entries section for an Appearance? Something like this (though I think my code isn't quite right for it even if it is possible)
"Action": "EditData",
"Target": "Data/Characters",
"TargetField": ["Wizard", "Appearance"],
"Entries":
{
//Default
"{{ModID}}_Wizard_Indoor":
{
"ID": "{{ModID}}_Wizard_Indoor",
"Portrait": "Portraits/Wizard_Indoor",
"Sprite": "Sprites/Wizard_Indoor",
"Indoors": true,
"Outdoors": false,
"Precedence": -110
},
"Action": "Include",
"FromFile": "Data/FestivalCode.json"
}```
No
What you need is TargetFields
Basically the Actions: Include stuff is only for top level cus those r cp constructs
Once you get under Entries you are in the realm of data that actually goes into game
If u wished to edit stuff nested deep inside without changing the other bits you need to use TargetFields to drill down to where you want
Thanks, that makes sense.
well it looks like I won't be having the farmer sit down in swimming gear
Are there any performance implications or other problems with having multiple EditData actions for appearances compared to having one EditData with multiple entries?
I'd really like to use Include for this so that I can do some shenanigans with local tokens and make it much easier both to turn appearances off with config and to change my code later. But that means making this block of appearance code it's own json and including it multiple times rather than just using separate entries in the same block of appearance code.
I've written like 50 NPC events and only now figured out how to make the farmer end up in a different location when the event is over
Along the same lines, I had an event I had to rewrite to sometimes include an additional NPC. It was originally one of the first events I ever wrote, and reading it today is like ... "who wrote this utter trash and what were they hoping to accomplish??"
Technically more patch cost more work but it is negligible since ur data patch applies once on day start or maybe not even then and that's that
Thanks!
If you make multiple patches, you can provide config options to disable each one individually
@calm nebula: take a look (96h ago)
yarp (#6729283) (168h | <t:1750380319>)
(i don't mind pings)
that does sound like something i was trying to do, but truthfully i don't remember. whatever i did do, i didn't find the solution that you found, so thanks for that!
atra is currently wedged in a crevasse somewhere. someone call a rescue team
-# halp
Hi hi~ first time coming here and a freshman in making mods and stuff, I hope you don’t mind me!
I’m in work for a mod of myself, but I wonder what are the options to put my custom npcs in before I’m capable of making their custom houses. I know of some train station, but if someone could guide me I’d appreciate it ;w;
you mean as in where to make em live until you made their own map? theres an npc apartment around in that case
there's a guide to using it as well, let me see if i can find it
its in the desc, the google sheet has it
if you're fine with things being barebones, there's really nothing stopping you from simply scheduling them in the streets outside. live free
Would someone will willing to look at this and potentially tell me what I'm missing? My npc isn't loading dialogue.
https://smapi.io/json/none/8d9e8093e77e46e08252ba6af580dc39
Ive never really checked it since I mean it when I say I’m completely new to modding, so all options are good before I get my skills to make a map
Thank you 
are you doing the blank load method? it says you're loading dialogue.json but then you edit it in this one
I just knew there’s some train station for sure, but I think it’s more for bigger maps?
its for whatever u want to use it for, but generally yeah
I'm not sure how to do the blank load. Is it like the blank file I made for the club?
yes
Do you have to have fixed the bus to use central station?
schedules also require a blank load
Ok neat thank u
"Action": "Load",
"Target": "Characters/Dialogue/CharlesRowland, Characters/Dialogue/MarriageDialogueCharlesRowland, Characters/schedules/CharlesRowland",
"FromFile": "assets/blank.json"```
you can load the same blank file to multiple targets like this
What are the drawbacks of having an actual dialogue file to load instead of a blank json to patch with EditDatas?
no tokens
No ability to use tokens
Which doesn't matter if you want to use localized text instead
Good morning, button
morning?
good morning
I think it is just up to preference
Just 1 load is technically better than a load and an EditData? But then if u ever want to use tokens then u gotta EditData anyways
He's certainly not going by the schedule I have typed up
I usually recommend blank json to anyone just starting so that it's not confusion
is it a new save/have you slept? you have to do either of those whenever making changes to a schedule
Let me try sleeping
Sleep is wonderful
{
"Action": "EditData",
"Target": "Data/NPCGiftTastes",
"Entries": {
"{{ModId}}_Rahiel": "{{i18n:Gifts.Loved}}/72 74 595 279 446 400 604 432/{{i18n:Gifts.Liked}}/395 348 428 634 91 797/{{i18n:Gifts.Disliked}}/390 306 167 153 702 78 403/{{i18n:Gifts.Hated}}/168 169 172 92 792 category_fish/{{i18n:Gifts.Neutral}}/88 18 724 440 340 373 category_gem"
}
},
I remembered to rearrange them like was suggested
hold up. I don't have gift tastes in that i18n
I can't remember if those are additional gifts needed to be listed, or if it's referencing his responses
(nearly) unrelated, but folks, we love to see a {{ModId}}_ in an NPC's internal name. thank you for being a good citizen o7
Was asking because I thought about making a json schema for this sort of stuff to help newbies. But I guess there isn't a lot of data content files where that would be usefull, and dialogue doesn't have a very compllicated json structure afaIk.
lol, I was thoroughly corrected yesterday. I had been doing it the older way
that's fun because practically no one goes full modid /lh
hang on are you able to do season_day_heart level for dialogue?

