#making-mods-general
1 messages · Page 530 of 1
hello there Es-in-Zee
You're sin(z)
oh I guess also sin-zee and ess-in-zee
Where z is a complex number
atra is in the fourth camp
Hi esca!
Ahh-bah-Gah-yaw-nee
its sin-zed
Hey at least I have a pronouncable name
I used that joke a decade ago
british people detected
(now how do you pronounce this? sinus-zed?)
(my brain: eye core, E row, and sinzy)
"Handknit Bear Plushie"
"Sine zed"
(My names a parsnip "pun" btw)
My brain is close to your brain, but it's "eye-row" instead of "e row"
😔 eh row
S in Z. it's set theory
My name is very pronounceable, yet surprisingly hard for people to spell
"Ick-core", "eye-row" and "sine zed"
Hi SButton!
Also on a more on topic line of thought since there's a lot of sharpies here right now, has anyone extensively messed around with Monogame's DynamicSoundEffectInstances before in their mods?
Nope!
Sad times for Button
I blame reading japanese for that part
ah/ay/ee/oh/ooh verb defaults for anything I don't recognize
The documentation on them is not so helpful and I am stuck and I feel like I'd be a lot less stuck if I understood pcm audio better but alas
I cant be helpful but I offer you a 🫂 emoji
Oh wow that's an interesting way to read it! Do you pronounce the word "Gaia" as "gah-yaw" too?
It's pronounced "ah-bah-guy-ahn-yuh" (it's an Ayleidoon word and luckily for me is said a couple of times in the Elder Scrolls games)
But then I pronounce Aba like "ABBA" haha
That's all I got
That's helpful of a sort!
What's the X and Y location for the tile right in front of the bus? Can't open the game rn to check
Bus entrance i mean
happy aba gaia new year's eve
22 14
ty!!!!
oh wow I got it spot on
all I remember about XNA/MG sounds is that wrappers help and errors escape try-catch blocks 
My memory is its like 20 layers of OOP deep before something actually happens
can't escape from a try-catch if I dont have any
Same tbh
I might just throw in the towel with the half-finished thing I've got now and call it good enough, since I don't think anyone would expect perfection anyway
Otherwise I think it's gonna take me another 100 years
Fizz does.
I initially looked into it for speedy solutions to try and get hints of what made the cue but then gave up and decided to just diff incoming vs cached AudioChanges instead
i just wanna know what the heck "the audio format" is
like. im generating raw bits from nothing here what are the alignment requirements
Does Ridgeside Village change the location name for the Bus Stop because of the path it adds at the top?
I always pronounced it
ah-bah-guy-an
in my head because it was today i realized i'd been reading it wrong and the y is not silent
no busstop's name internally is BusStop
its fizz buzz :/
No, no mod changes any vanilla location name as far as I'm aware.
Oh, I think I've pronounced it both ways in my head before (minus the -yuh at the end), I just chose this version when guessing. Suprised it's not yee at the end. I liked abagaianyeeee 😅
It's a nice name either way though! Did not know you were an elderscrolls fan either. I'm not very knowledgeable in that area.
this post right here is The MonoGame Experience™
I also couldve sworn I read somewhere about my buffer samples needing to be 16 bits long but I cannot even find where I read that anymore
I mightve just made it up
Would this be correct?
Buffer size alignment and the audio period – Matthew van Eerde's web log https://share.google/NgwQ1MIWD1IvjKCta
hey that's my thing! no stealing /lh
Can't believe I'm so desperate I'm clicking on a share.google link
posting my only still-in-use sound nonsense here for the record™
cs try { Game1.soundBank.GetCue(soundId); //throws an error if that ID doesn't exist location.playSound(soundId); //throws an *uncaught* error if that ID doesn't exist }
as of like 1.5 or w/e I implemented spawn sounds, anyway
There appear to be options here
Don't worry I'm slowly talking to my phone so Google shows me better ads
if the decompile doesnt change the files i can look at the format the music in stardew is in
So far, repeating the words "1/5th horsepower sump pump"
It's still difficult for me to wrap my head around the idea of audio having frames
you can think of it as quality of the music
Also none of these in the table are mono
button i have no idea if this will help you but here is a thing i did when i needed to convert ogg samples to WAV https://github.com/ichortower/HatMouseLacey/blob/1.1.3/SMAPI/Music.cs
(if you asked the me that wrote a music player 8 years ago I would know exactly what those words mean)
sounds like a 'note' that lasts X time period, but I was very bad at music theory, so
if you have the original file of the music I can just upload it to my software and check the format for you
I actually need to double check if I can even share what I was working on in here
The way I think of it is
Nyquist–Shannon sampling theorem - Wikipedia https://share.google/UI3eZmjO3jDJrlzES
The Nyquist–Shannon sampling theorem is a theorem in the field of signal processing which serves as a fundamental bridge between continuous-time signals and discrete-time signals. It establishes a sufficient condition for a sample rate that permits a discrete sequence of samples to capture all the information from a continuous-time signal of f...
but i would try 44.1 or 48kHz sample rate
Unfortunately this would be a lot easier if I was simply loading stuff from a file but I am not 💔
I'm like 75% sure I have no choice besides 44.1
Button doesnt the cue save this info somewhere....
I am not working with Cues
I usually work with 44.1kHz, I feel like its the most reasonable
Oh, just to touch on this again, I should've put guh in my guess over gah 😅
Ichor i love this
I really love this
Anyways, I will assume ichor is right, shorts (16bits) is correct
thank you! i was trying to be conscientious
i don't think it can be higher than 44.1 cus its the limitation of the ASIO driver, when ppl with windows send me audio files its usually 44.1
concerned ape only used his mouse and the software so he wouldnt use anything else other than that
In digital audio using pulse-code modulation (PCM), bit depth is the number of bits of information in each sample, and it directly corresponds to the resolution of each sample. Examples of bit depth include Compact Disc Digital Audio, which uses 16 bits per sample, and DVD-Audio and Blu-ray Disc, which can support up to 24 bits per sample.
In ba...
Okay, further search supports 16bits being a common depth. Dunno what monogame does
😭 it's a common depth because it's the limit of the ASIO driver!!!
you'd need external hardware if you wanted to go higher
Ok I can post what I was working on I just had to record a different clip
This is a NES emulator I made to stuff into an IMinigame
and have been trying to figure out how to Audio
it works nicely here in this game? but I don't know if its missing any sounds, and it definitely does not work entirely right in other games
Qh!
oh boy my friend is a huge nerd about C64 music/things but he's asleep rn
Okay I spent a bunch of time listening for music
i would like to extend my congratulations to Button for receiving the 'wat' award for excellence in doing unexplainable thing to stardew valley
I think I'm multilining wrong 
this reward feels very prestigious to me, thank you
(I did install the smapi thing in settings)
New quote added by atravita as #7211 (https://discordapp.com/channels/137344473976799233/156109690059751424/1468106477725024480)
Multilining means you have one command per line
ah, ok. Back to the wiki to understand that I guess 😅
if you have any questions about the music in NES things you can ask them to me and then I can ask my friend, he has his own chip that he uses to make music; he's just asleep rn; However the sample rate of that type of music is 44.1khz so you'd be fine
Glad to know I evidently didnt make up the 16 bits thing thoug, thats nice
you don't need one command per line, but you can insert lines in some positions without breaking the event parsing in order to improve readability
That is true
The problem I was tackling is that the music in the other game I was testing worked fine, but the jumping noises... made me very much regret having headphones on at full volume. And I don't really know why, since they both use the same square wave generators
the "wat" award is also why I felt it was probably fine to give up though because I hope no one expects 100% accurate or functional NES emulators in their stardew mods
I can't show you in the validator because it completely borks my lines, but here is an example of one of my events
Thanks for the example
Can you record a jumping noise
How
I know playing multiple sound cues in the same frame did (& probably still does) amplify their volume to dangerous levels, so my random guess is multiple copies of a sound played simultaneously during jumps? might not be how that works, though
if you'd like another example this one is quite unexplainable but showcases some of the possibilities and impossibilities of multilining
Is it mono or stereo
No ❤️
(But, genuinely no, not in this server, as the game in that clip was chosen specifically because it is a homebrew, open source licensed game)
i.e. no murky legal waters
Mono or stereo?
Mono
sellout
the old button wouldn't bat an eye at copyright violation
Thank you 🫐
You're encoding as one channel i assume?
The old Button was already planning on asking bouncer if it was okay, and that was before I was a junimo myself!
stereogame
uh
I don't. Know how to answer this.
Can u describe how the audio hurt
Spiritually
I'm going to sleep kthxbai
Just very high pitched beeps and buzzes when there should be a nice jumping sound, that mixes very strangely with the music at times because both pulse channels are mixed
maybe its a filter problem
Can u Fourier transform the audio
and you guys wonder why I refuse to acknowledge the existence of audio
Atra are you familiar with the audio processing unit of a NES
Iro i need to make my signal analysis professor proud
Given i once tried to randomize the phase angle of a song to see what that did
Dont do that
It's noise
This is all one singular DynamicSoundEffectInstance, all the audio is mixed into one signal and fed into the audio buffer of it
Do the beeps last as long as you expect for the jumping noise, or nah
They do!
if you have the file/code for the jumping sound i can send it to my friend for him to look; he has a real sid
high pitched sounds make me think its a filter problem, so if you can figure out how to put the sound through the low pass filter it should cut those sounds out
(I asked about length to guess whether or not it was a frequency issue or a decoding issue)
Let me see if I can find another game that can demonstrate the issue
The thing is the music you heard in that clip is coming from the same exact channel as the other noises
Because I only have the square wave generators implemented
They use the same exact class
I tried implementing the other channels and had... limited success, and they didnt change the sound of the jumps either
not even the filter one?
I'll be honest I don't really know enough about what I'm doing to answer that or even confidently know what you mean by "filter one" here, since all of my APU stuff so far has just been reading the nesdev wiki and trying to parse it into C#
Not very much understanding going on, mostly just throwing stuff at the wall attempts at transliteration
vanilla audio was loaded with XACT and is fundamentally wav files in a wave bank
that's good to know, thanks
Congratulations button you have successfully nerd sniped me
I forgot to get the extension and was wondering my all my attempts at multilining were breaking because I was confusing it with the schema (again) 😅
are you going to steal my title to be the first person to mod in an nes emulator
a fully functioning one that is
Should I leave auto updates for extionsions on, btw? Is there any more of a safety risk doing that if I'm not going to understand the source code either way?
The duty cycle is the easy part!!
Do u have the DMC
Nope!
It counts backwards that's weird!!!!
Just to be clear, you don't need this extension for writing your own multi-lined things. At all. Its use for multi-lining is that it can convert existing single-lined events into multi-line for you (and vice versa).
My vanilla event may be malfunctioning every time I touch it because it's not set up to run in the game then. I can pull an example that I think should work based on the samples you both showed me, but isn't
It's the first bus stop event in the bus stop event json
what notepad++ plugin is recommended for json formatting or event formatting?
I cut the line off just like blueberry did
And I'm guessing it's because I'm missing the other stuff
You've got two choices: json tools or json viewer.
Because this wouldn't run ingame by itself
ty!
the schema also is messing up the other entries just by existing
The schema does not mess things up
But
You appear to have it in the wrong place
Are you Loading that file?
I don't see an EditData patch
I am not, I'm only trying to edit it to make the multilines work for readability. That's probably the problem?
I should add extra stuff like it was going to get patched in the game right?
Ah, okay, I think I have finally clicked what you're struggling with. You want it to stop having the red squigglies?
oh
The schema doesn't stop those from happening and nor does the extension

I think only setting your file language to jsonl will stop it
The issue with that is that it takes away all your error messages for the whole file
Like you can see here that I've removed the comma after the Target line. The syntax highlighting has change for the Entries line but there's no red squiggly and no error listed in the bottom left of the screen
So this is normal then? You all just ignore these red squigglies on a regular basis? Or am I being sloppy and triggering unusual ones?
I don't ignore the squigglies, I set my files to jsonl
oh
Because I don't need the error checking
But you can just ignore the squigglies and the error messages that refer to lines inside the event
Sorry that I wasn't more thorough in explaining this when I first mentioned multi lining to you. I don't always have the energy to go over the caveats but I really should because it is a dealbreaker for some people.
Don't worry about it! You've always helped me out a bunch anyway.
The smapi schema would also catch the relevant errors that would break the json in game, wouldn't it?
So jsonl shouldn't remove anything I'd really need?
Nope, jsonl prevents the schema from checking anything. Or reporting it, IDK.
My approach is to just ensure I've got a separate file for events that I set to jsonl and then the rest of my files are jsonc
Oh, hmm, ok. So I'd install it a little differently then, right?
Sorry, install what?
You do not need to install anything
Install was the wrong way to put it
You can just click on the language name at the bottom right of your screen and then type the one you want
I also have a file association set up to automatically show files called events.json in jsonl instead of jsonc like the rest of them
Oh, yeah, that's what I was wondering about! Whether I should set up an association the same way I did with jsonc
Maybe try manually setting to jsonl at first to see if you like it
But up to you. It's easy to set up another association now you know how to.
Ok, I'll try it manually on the bustop json first. Thanks!
Oh and to explain the schema - that only works for CP, so it can only go in files that have CP patches in them
Oh 😅
If you have it in Includes, you'll get a warning that you're missing the Format field (which you should ignore, because only the content.json should have the Format field)
Ah, I might need to do the setting a file association between .json and .jsonl thing, because my mac wouldn't let me open it when I set the file to jsonl by renaming it
But as an easy rule of thumb: if there's no "Changes" field, you shouldn't be using the "$schema" field either (other frameworks may have their own schemas which would violate that rule, but for now it's good enough)
No no you shouldn't rename the file.
I misunderstood
When I said to change it, I meant click on the language that I've got circled in red
Oh, ok
That will change it just for that session. As soon as you close the file, it'll go back to being jsonc next time you open it. And the file extension should always be .json regardless.
Ok, gotcha
Why isn't the paths layer giving me light?
does this map have the forceLoadPathLayerLights T map property?
are you sure you don't want to set ambient light to a different value instead
incidentally that is way too many lights hahah
i figured that was more catharsis than anything else lol
person said LET THERE BE LIGHT
Sorry to bother you again (you already helped a lot), but you said this is similar to setting up the jsonc in the associations menu. Can I ask how you did this in particular?
im trying to summon the torch god
or in this case... the light path tile god
I'm not sure how I'd do it it with extra specification
It's no problem! It's here: #making-mods-general message
it does now
and it still doesn't work
let me try something one sec
Did you start a new save or use RTF?
i used patch reload
are you exiting and re-entering the location
...ill do a new save
yeah
Paths layer things are only generated on new save
oh
oh wait yeah i was thinking day/night tiles for a second
Or when using RTF to regenerate things, though I've never actually used RTF so I don't know if it applies for lights
Thanks so much Aba for all the time you spent on this with me I really appreciate it 😅 
didnt work
You're welcome! Always happy to help people find ways to make modding easier/better
Try, just for comparison's sake, adding one light as a map property instead
Alright, I'll go check out that thread
this is a custom location, right?
yeah
Oh! I just checked this out a couple minutes ago. What I wasn't sure on how to add was the specification of only targeting the events json. Sorry for the confusion! It's not just a manual I switch on everytime I open the file is it?
I know, and that's what I meant too. It is there.
See how instead of *.json like with the jsonc one, it's events.json? That means it only applies to files named events.json.
Oh my bad!
Thanks 😅
Can't wait to get this stupid event somewhat functional in the game
And then edit it forever 😄
I'm definitely a few steps closer!
Guess who might've figured out a solution to a sprite issue
I prob didn't but I think I found a way to replace the sprite image & portrait
Cause clint popped back up in winter
Are you certain you're editing the right file?
Or not
How do I replace portraits and sprites?
in what context? for example, did you draw your own take on Haley and want to replace hers with yours?
Copy the patch that replaces his regular one and just add _Winter to the end of the Target so instead of "Target": "Portraits/Clint" it's "Target": "Portraits/Clint_Winter"
(Personal edit of Clint to Clarice for 1.6 compat)
Thank you so so much
I swear to the gods above and below that this is gonna eventually turn into me making a compatibility patch
for reference, I'm pretty sure it doesn't, and it doesn't have related options ("Path" means flooring here)
RTF removes and/or adds objects, terrain features, and other spawned-in items by taking them from a temp duplicate of the target map(s)
but light properties aren't attached to a spawned item, and they're recalculated from properties whenever the map loads
(aside from maybe regenerating default lamp furniture in a farmhouse, specifically
)
Thank you! I vaguely remembered it having a bunch of options so I thought it wasn't likely that it was just redoing the entire logic to do with the Paths layer or it wouldn't be able to differentiate between the different objects
Hey so did I do something incorrectly?
Hmm. You don't need that winter check in the When field because NPCs don't use their Winter file in other seasons anyway. But that wouldn't be stopping it from working.
Can I see your log, please? Do you know how to share it?
I don't know how to actually
!log That's ok! If you follow the instructions in the message below it'll take you to the website and then the website itself has instructions for what to do next.
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.
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on macOS Unix 26.2.0, with 18 C# mods and 29 content packs.
Suggested fixes: SMAPI is out of date, consider updating it
We can see here that your portrait edit is being applied. But the characters one isn't. So when you talk to her you should see the right portrait?
I'll check
Do you happen to have the headband set to trans?
Yes actually!
In the screenshot of your file, you don't have a patch to edit the sprite for that setting.
So set the headband to something else?
Also the portrait does in fact show up
To check if that's the problem, yeah. It should change straight away once you've hit save in GMCM. And if that is the issue, you can then just add that patch.
Time to add the patch cause that was the issue
Guess I'll be making sure nothing else is wrong in the morning. Goodnight y'all, and thank you so so much Abagainye for all your help!
Is 1.6.16 going to allow non-dateable NPCs be available for flower dance, or did I imagine that?
Wait, the migration wiki says Fixed NPC FlowerDanceCanDance field ignored for non-datable NPCs with no dialogue. Does this mean that it actually works now, as long is the NPC has dialogue?
yes, that's apparently already a Data/Characters field in .15, it just doesn't work in that edge case
the field was there and theres logic for it to work, but theres logic earlier in the function that short circuits if not datable
oh, does that phrasing mean "if the NPC is not dateable, the flag is ignored and there's no dialogue"?
I parsed it as "if the NPC is not dateable and also missing certain dialogue, it's ignored" 
I think in 1.6.16 it changes from It never working ever, to if you have the field then as long as theres dialogue it'll now work
would need to double check though
just wondered why something wasnt working just to realise i didnt even have the framework downloaded
If I'm using UnlockableBundles is there a token or something I can use to check if the bundle is complete?
I can't see anything on its documentation
seems like "Purchased" is the one you'd want? e.g.
json "When":{ "DLX.Bundles/Purchased": "your bundle entry ID here" },
https://gitlab.com/delixx/stardew-valley/unlockable-bundles/-/wikis/Home
"Target": "Mods/mistyspring.ItemExtensions/MenuActions/(T)Shears",
"Entries": {
"{{ModID}}_openredgiftchomp": {
"TargetId": "(O){{ModID}}_redpresentchomposaur",
"RetainQuality": false,
"RetainAmount": true,
"AddItems": {
"(W)38":1, "(O){{ModID}}_redpresentopen":1},
"RemoveItems": {
"(O){{ModID}}_redpresentchomposaur": 1,},
"PlaySound": "scissors"
},```
anyone familiar with item extensions?
i'd like to made the additems have two items with a chance for each
currently it gives a weapon and a trash item, i would like to have it be two possible weapons and the trash item
just not sure how this is expecting that to be written out
tried a few different methods without success
the :1 is quantity i believe
yep, that's stack size, and AddItems/RemoveItems seem to be Dictionary<string,int> without any other options
I guess you could use the TriggerAction field to trigger the vanilla AddItems action?
i was hopiong to use this same thing to do random fish and flowers tho too hmm
since triggers can check random and such
honestly i wonder if there are undocumented features
i think the docs are out of date
like ExtraItems would be handy here lol
trigger action is a good idea tho, thanks
the "items" fields aren't documented in the menu action wiki thing to begin with, but I don't see any obvious "additems but with options" stuff at a glance
https://github.com/misty-spring/StardewMods/blob/main/ItemExtensions/Models/MenuBehavior.cs
(everything from TargetId to AddBuffs are field names)
ah, so i'm not crazy, this time
"myPatchID": //can be any, it's used in case your patch fails
{
"TargetId": "(O)ItemToTarget", //can be any type definition. see here https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_items
"RemoveAmount": 0, //amount to remove of ItemToHover per targetId
"ReplaceBy": null, //replace target by another item, e.g (W)0
"RetainQuality": true, // (if replaced) retain item's quality
"RetainAmount": true, // (if replaced) retain amount
"TextureIndex": -1, //changes item's texture index
"AddModData": {}, //adds mod data to item
"QualityChange": null, //changes quality, e.g +1 goes up a level (silver to gold), -1 reduces, and just using a number sets it to that quality
"Health": null, //add/set/reduce player health, e.g "add 5"
"Stamina": null, //add/set/reduce player energy, e.g "reduce 5"
"AddItems": [], //dictionary, adds items. e.g, { "QualfiedItem": 1, "AnotherItem": 3 }
"RemoveItems": [], //same as above, but removes
"PlayMusic": null, //changes map music (temporary)
"PlaySound": "null", //plays a sound
"TriggerAction": null, //triggers an action
"Conditions": null, //GSQ for this to trigger. https://stardewvalleywiki.com/Modding:Game_state_queries
"AddContextTags": [], //add context tags to the item
"RemoveContextTags": [], //remove context tags
"AddQuest": null, //adds a quest (if not done yet)
"AddSpecialOrder": null, //adds a SO
"RemoveQuest": null, //removes a quest
"RemoveSpecialOrder": null, //removes a SO
"AddFlags": null, //adds player mail flags
"RemoveFlags": null //removes player mail flags
}
}```
there's the template
it can do quite a lot
so of course i want the thing it can't lol
Coming in between for a sec here. The language here is C#, right? 👀
yep, the game and almost all code mods are C#
(though probably-the-majority of mods are scripted with JSON files through framework mods)
boy i sure wish the wiki would show more examples
can the trigger additem even do more than one?
wiki just says AddItem <item ID> [count] [quality]
its always like that 
i guess the item id can be random
can i do like AddItem RandomItemID: [ "(W)38", "(W)39"]?
no, AddItem only outputs one item/stack per run
and it looks like that field just runs one action, rather than triggering whole entry in Data/TriggerActions, I wasn't sure
I’m guessing it’s easier to start with this type for a beginner?
generally, yeah
and in some cases like adding in-game items/locations, it's simpler to work through the main framework (Content Patcher) than to do it in C# at times
though not terribly so, they can both access the game's shared assets either way
If you're not a programmer and comfortable with C# or with your ability to pick it up fast, definitely. Which is not to say you can't still start with C# but there's a lot you can do without it if the C# feels daunting.
I’ll start reading up on things. I learned a bit of python and html/css in school so I know a little bit about computer languages, but they’re all different of course
Tho the code up here looks kinda similar to python
if nothing else, BETAS has an ActionList action that can just run several at once
https://stardew.button.gay/docs/betas/tractions
(vanilla-wise you could set a mail flag & have a Data/TriggerActions entry do the item addition later, but it'd be pretty awkward as a menu interaction
)
this started because EAC has issues dropping weapons from livestock btw lol
also geodes would be super easy but we can't change the break graphic...
It is unfair to blame that on EAC when it is vanilla's problem lol
aaaaa
yeah
that's true
feels like anytime i want to do something a little random it's a different format
...oh, it might just have what you're looking for, now that I read closer 
not in the template or readme, but the C# class has this
cs List<string> RandomItemId
so "RandomItemId": ["thing 1", "thing 2"] should use one randomly instead of "ReplaceBy"
though idk what the exact logic is
replaceby seemed to not actually be real when i was testing yesterday
i could have been mistaken
i can mess with it tho, thank you
"Entries": {
//**********Begin Pies**********
"{{ModID}}_PumpkinPie": {
"Name": "{{ModID}}_PumpkinPie",
"DisplayName": "{{i18n: pumpkin.pie.N}}",
"Description": "{{i18n: pumpkin.pie.D}}",
"Texture": "Mods/{{ModId}}/pumpkinPie",
"SpriteIndex": 0,
"Width": 1,
"Height": 1,
"Health": 4,
"ItemDropped": "{{ModID}}_PumpkinPieSlice",
"MinDrops": 1,
"MaxDrops": 1,
"ExtraItems": [
{
"ItemId": "{{ModID}}_PumpkinPieSlice",
"Chance": 1,
"MinStack": 0,
"MaxStack": 2,
"Quality": 0,
"IsRecipe": false
}
],```
hey what
so it DOES support extra items?
secret features!? im getting annoyed and i dont even use this framework(yet)
lol
yeah i'm afraid they may want to consider updating some docs
ok, that's two ideas to chase then, thanks yall
i thought it was weird that it didn't seem to do these
ExtraItems is documented in resources page, though idk if that applies to what you're using
https://github.com/misty-spring/StardewMods/blob/main/ItemExtensions/docs/CustomResource.md
oh right, that's what it was
(not quite sure which extensions apply where in IE, personally)
yesssss
It's hard to write documentation
oh no doubt
yeah my annoyance is at a very shallow level
the rest is happiness that we've got so many cool frameworks to do a bunch of the heavy lifting for us
How to center a cell in the modding wiki for comms? I am adding myself there and cant find how to center the green tick.
no idea how the wiki work, is it markdown?
IE has some doc, it's just a bit scattered between the documentation and the examples
not the worse doc i saw overall
aha in source, thanks
hmm feels like the extraitems isn't doing anything
thanks!
oh that's weird
"TargetId": "(O){{ModID}}_redpresentchomposaur",
"RetainQuality": false,
"RetainAmount": true,
"AddItems": {"(O){{ModID}}_redpresentopen":1},
"RemoveItems": {
"(O){{ModID}}_redpresentchomposaur": 1,},
"RandomItemId": ["(W)38", "(W){{ModID}}_magicfrypan"],
"PlaySound": "scissors"```
doing it this way, cutting open a box just deletes the whole stack of boxes and gives me the magic pan
yeah weird, it works, but now it's ignoring the retain amount
Why the heck are grass sprites 15x20px
to keep us on our toes is my only guess
yeah that's annoying lol
stop eating the stacks aaa
lol, if i set a remove 1 it works....by eating the shears
remove 0....back to eating the stack of presents. why
null doesn't work and -1 does the same as 1
telling it to give both in the usual additem field, works fine. so seems like randomitemid is like....sort of but not really working
which makes sense if it's not an actually intended use
let me just throw an OR in the additem or somethin lol
doing a patch export shows me even the default entry does have a randomitem field so shrug?
here's the problem behavior if that helps explain myself
it should turn one box into an empty box and also a pan
Does it work if you change it to two (O) items instead of two (W) ones?
it seems to only eat stacks when i use the random ID
so yeah (O) items did the same
seems like it's doing weird counts to the 999 stack too
hm
perhaps i misunderstand stardew stacking here
here's one working (mostly) correct with an error item cuz it's not finished
but that's not using the random function
i have one that makes dusty skulls as well and that one behaves fine
What does it do if you comment out the AddItems but keep the RandomItemId?
i'll try
same thing. here's the patch export btw https://smapi.io/json/none/a509dced9cad4a7b889c64c571b580a9
This is a patch export of Mods/mistyspring.ItemExtensions/Data?
Ah, no, Mods/mistyspring.dynamicdialogues/MenuActions
right
Sorry if I am asking things you've already mentioned trying, I tried backreading but I am a bit fuzzy brained
Have you tried to use ReplaceBy instead of RemoveItems?
i've tried several combinations yeah
i forget which at this point
i can attempt again
So no AddItems, no RemoveItems. Just RandomItemId for the pans and ReplaceBy for the open box with RetainAmount set to true.
"TargetId": "(O){{ModID}}_redpresentchomposaur",
/*"AddItems": {"(O){{ModID}}_redpresentopen":1},*/
"ReplaceBy": "(O){{ModID}}_redpresentchomposaur",
"RandomItemId": ["(W)38", "(W){{ModID}}_magicfrypan"],
/*"RemoveItems": {"(O){{ModID}}_redpresentchomposaur":1,},*/
"RetainQuality": false,
"RetainAmount": true,```
that look like what you are suggesting?
doing that code makes it eat the stack and not give an empty
oh you are right
yeah clicking a stack just makes it into a pan with no empty
and it doesn't like adding a :1 to the end so i don't thinkit wants that
this does seem weird, right?
Okay, that is definitely not ideal. My next suggestion suggestion is to use the BETAS RandomAction trigger action action to add the pans, while using AddItems for the open present again.
i will look into that then, thank you
surprised i wasn't already using BETAS, huh
"TargetId": "(O){{ModID}}_redpresentchomposaur",
"AddItems": {"(O){{ModID}}_redpresentopen":1},
/*"ReplaceBy": "(O){{ModID}}_redpresentopen",*/
/*"RandomItemId": ["(W)38", "(W){{ModID}}_magicfrypan"],*/
"RemoveItems": {"(O){{ModID}}_redpresentchomposaur":1,},
"RetainQuality": false,
"RetainAmount": true,
"PlaySound": "scissors",
"TriggerAction": 'Spiderbuttons.BETAS_RandomAction "AddItem (W)38" "AddItem (W){{ModID}}_magicfrypan"',
},```
this seems to actually work as intended
thank you
feels a bit odd that i needed to involve another dependacy just for that but ok
if mistyspring gets back to me i'll ask if it's a reasonable feature request
works for my random fish boxes too, hell yeah
is there a fast way to get a list of diggable tiles in the current location, right now im getting the display width and height of the current map and checking every tile which takes a while.
pretty sure that’s the best way (are you the one who asked the other day?)
(if not, weird coincidence haha)
luckily it’s the kind of thing you can cache
or memoize, to use a term casey loves
And even then, fast enough for a daily check.
Or you're doing it repeatedly
(yes please don’t do this every tick)
Fucking love @lru_cache lol
hmm some of my items are still showing up with quality despite telling them not to in EAC. oh, i forgot to qualify them, that's why
The display width/height? If you mean like location.Map.Layers[0].DisplayWidth/Height thats part of the problem, you want LayerWidth/Height, the Display* ones take into account tile size (16 x 16 for Stardew), so you're checking over an area 64 times as large as the map
Wait, that's not right, 256 times bigger
Hi! I am making a sprite edit for an NPC, and I incorrectly assumed the sprite sheet represented a 1-frame idle and a 3-frame walk, instead of the actual 4-frame walk(with a duplicate frame), and the first frame of the walk gets used as an idle.
The thing is, I like the idea of a unique Idle pose. I would like to know if it's possible to change what frames walking uses. Or possible workarounds, like if I somehow can change the time of frame 1 to zero, would it be skipped during walk? I looked for the animation data for it but it seems walking does not use easily accessible data files.
Idle animation as you call it don't really exist because NPCs don't intentionally idle
What you may want instead is a schedule animation (e.g. abigail playing the flute)
i seem to have made my mammoths like garlic, pumpkins, and bananas as treats and i don't recall why
seems like they should probably eat mostly grass and flowers and maybe tree material
well, banana is the fruit of grass, so that works 😄
haha
Am I able to call on schedule animations whenever the character stops walking, with the correct orientation?
Sorry for the confusion, what I meant by idle is just a single frame pose, I don't need a fancy Idle animation. I notice they will play frame 1 of walk when they stop, that is good enough for me, but they will also play it while walking, of course. So I was wondering if I could clamp walk to frames 2 to 4 and keep 1 as a unique idle.
I already made one of the sprites for testing, and she correctly uses it in-game when she is stopped, but she also uses it while walking in a loop. I like the asymmetrical pose, and I am looking for a way to keep it as an idle pose.
i set my carnivorous dinos to accept meat category as treats but maaan those get pricey enough to be kind of unbalanced
like 4 whole hearts off one
Wow long leg leah
but that also seems like...players can decide to not do that
they'll also accept fish and eggs so that's the "cheap" option there
Well, you could probably rewrite the entire animation code if you know enough C# and Harmony and have enough determination. But without that your only option is schedule animation, which you'd just add to every schedule point. They're not going to stop walking outside of schedule point stops anyway, unless it's because something is in their way or whatever and they're pausing before stomping on it lol
ok yeah ancient fruit is also a ton of friendship on herbivores so shrug then lol
I do know C#, but I don't know what harmony is. I've been known to have a stupid amount of determination from time to time. Does this type of modding result in an easy-to-install mod, or does it make it harder for someone downloading?
nope, just a coincidence 
Also sorry to keep bothering, but is it really rewriting the ENTIRE animation code?
this is what I was doing wrong, now it works with no problems
thanks everyone
The resulting mod would not be any more difficult for users to install - it's just download a zip file and drag the folder into your Mods folder. But there's probably a chance that you'd break every single other NPC mod.
I don't know, I am not a C# modder. But the current code isn't set up for it at all.
(also, agreed with your about me section, why are scam dms like this
recently I got one to go away by telling them I charge $50 for the honour of having their art shown on my profile)
I suspect i could do in a way it does not break any other npc, as frame 1 is a duplicate of frame 3, so excluding it does not remove unity frames from the animation.
Thanks I will look into this harmony thing.
well, you assume that’s the case for all modded npcs, but are you sure it is?
best way to find out is to make the changes xD
best way to find out is to check 
(but also do what you want tbh, as long as you’re clear to users about what you’re doing!)
It is quite odd that they have a repeated frame, some NPC might have a asymetrical walk.
yeah, I respect trying to get some business as long as you're not scamming people but it gets annoying after a while
All the cold-DMs are scams tbh
the player has a 4-frame, non-duplicates, walk cycle right? maybe they all use the same code, that would be a problem.
The player animation is totally different to NPCs
ah you getting those too?
Yep, just report to Bouncer and delete
sucks since sometimes we do actually legit want to do that here
Fortunately we have legit ways of advertising comms (modding wiki) so we have an easy way to point people to reputable options
Plus people are always happy to offer recs for specific people if someone asks
yeah
anytime i have to do it i always say what i want to talk about which helps
the bots are always just the same vauge junk
If I want to DM someone in the server I always ping them in a channel first to ask permission
That way they know to expect it and I know they're ok with it
smart
Speaking with my non-Juni hat, that is. I'm never going to ping someone to ask to speak to them for moderator things.
The first 16 frames in any NPC is their walk cycle
Schedule animations are vanilla and basically let you use any frame on the sheet but for a vanilla NPC there's potential for conflict here
If you wish to be fancy about it you could use BETAS and do it like: when NPC arrives at a tile, change their Appearance to the posing version
I don't think it's very different bc you still need to know their tile ahead of time 
Lastly if u wish to do a tiny bit of C#, you can modify their parsed schedule points to just tag every point without animations with the posing schedule animation automatically
This won't need any harmony
That would be interesting, as I am reading in the wiki harmony is not recommended.
Well i think you need to first know C# before you even consider using or not using harmony here
Try setting up the button press mod example from the tutorial
Come back here after u got Thing That Builds 
I've been coding in C# for more than 10 years, I just don't know the mod tools for Stardew very well yet.
Hello
i am shy to ask this since i am a newbie but how did you guys get the sprite for custom npc 😭 
Yeah still, setup the csproj stuff for sdv first
It's slightly funky compared to actual enterprise C#
But you can use debugger and hot reload in VS dw
Also go decompile the game
Draw it?
We draw them or commission others to do it
that warning is overzealous. harmony is not always the right tool, but sometimes it is, SMAPI's warning message be damned
(after all, smapi ships it for a reason!)
I agree with this but I think this problem is easier without harmony
no disagreement there, chu
Bc you just need to modify npc.Schedule
i just like to tell people not to trust the wiki saying "please don't use harmony, it bad"
At DayStarted which should be after the schedule parsing
harmony is Fine™
How will modifying NPC schedule achieve their goal of changing NPCs to use a walk cycle of only 3 frames?
Nah we just make it a regular ol schedule animation (4 of them actually)
I feel like i remember there being a meme with harmony where it was the cycle of "it's working" "now it's not"
i'm always working hard to make my problems easier to achieve
But i can't find it lol
(Since they have dismissed the idea of using schedule animations)
And then instead of doing the editdata, dynamically apply it in C#
while i'm looking at itemextensions, anyone used the eating animation feature?
THE way i did not think of this before holy crap i might be dumb /nm 
This would achieve the desired effect of "change to the pose at every point where NPC stops"
But they have said they don't want to use schedule animations
I sometimes wish the sprites would appear out of thin air XD
Without having to deal with actually editing schedules directly bc we would do it after NPCs get their schedule parsed into the C# data structure
Oh god i've started something i didn't intended, sorry...
I didnt dismissed anything just yet, i just wondered if i could change the animation logic
an altered version of it is on here https://stardewmodding.wiki.gg/wiki/Memes
Dw I think it's valid to ask for justification on why i am recommending any specific approach
has anyone suggested the evil solution (spacecore anim) yet
i read somewhere the reason it works like that is because the dev tied walking to movement and did a modulo loop on the 4 frames, from my experience i can just change that modulo loop to be from 2 ro 4 instead of 1 to 4. But sure, i dont know untill i see the code.
If you actually want to change it to 3 frames for reals that is going to be annoying because so much code is assuming 4 frame walk cycle
It's not impossible but seems overkill for the desired goal imo
But i dont know what i dont know i am just looking for the simpler way. I am not afraid of coding in C#, but i do want to make the mod easy to install and not cause problems.
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
Nike logo
I will go do the Harmony tutorial now. I am thankful for all the help and suggestions people are sending my way!
I've made games before, but i very rarely mod. So It does confuse me a little bit what sort of access mods have to any particular game.
When I heard I can just override code, that is something I understand, that is why I was looking into it first.
I think it's helpful to look at NPC and AnimatedSprite classes in the decompile first
But the bottom line is I just wanted to have a sassy idle, that was not part of the walk cycle. If people know of an easier way i will consider it too.
Often you can set the fields to whatever you need and it work
SMAPI itself is pretty minimal but you do get events to run code at start of day or on tick etc
not literally, no, count is exactly one integer there
ah ok
No, but you can use CP tokens to make it pick from a range with AddItem (O)Carrot {{Random: {{Range: 1, 5}} }} [quality]
you could use random tokens or some such, but that'd be on CP's token refresh rate, so not ideal for that lootbox thing
yeah this is for the boxes
That's also another reason to use geode 
i could just like...make multiple copies with the different values? lol
You can use PeliQ tho then u get item query in general
like just do the same additem three times with different quantities
setting up some boxes that give you random flowers
so like a pink box can give you any spring flower
"TriggerAction": 'Spiderbuttons.BETAS_RandomAction "AddItem (O)597" "AddItem (O)591" "AddItem (O)18" "AddItem (O)22" "AddItem (O)597 3" "AddItem (O)591 3" "AddItem (O)18 3" "AddItem (O)22 3"',
maybe there's a saner way but that should work yeah?
afaik that should work for one random item out, yeah
(or one stack for those options)
trying to think if there's specific amounts of flowers that would be particularly beneficial
incidentally, if you made the boxes unstackable, I imagine IE's random item thing would work as-is
the forage ones for quests maybe, although i dunno if this would count there
i considered that
but I'm running on no sleep so backreading is hard
might've misread the replace issues
i just wanted them stackable lol
these were already a workaround for unstackable item drops so yea
this way you can hoard as many as you want until ready to open them
make sense, yeah
the geode style options would work with vanilla, but for IE's use-item-on-item thing, that (or chu's route) is probably the best option
i would have gone geode if i could have changed the breaking graphics haha
all this work i gave myself over minor graphics buggin me etc
but hey i like how these are turning out and i learned some stuff maybe
I think a machine was suggested last time someone was doing random-item stuff? not familiar personally though
(which I'd assume doesn't use geode anims but idk)
yeah that would probably also work
oh, and spacecore's item use trigger action stuff
i know you can restrict from the geode crusher, i wonder if you can do the opposite and make clint ignore them but the crusher not
lots of framework options, but vanilla's slightly more roundabout
yeah i may look through spacecore more and see if i could cut a depenancy but ehh frameworks ain't that big
is this how this map tile property is written???
yeah, I don't really advocate for trimming dependencies (selfishly
), but it's got an item-used trigger event or some such fwiw
theres nothing really about it onn the wiki so im checking here
works, nice
seems like it even just gives one color which is maybe a surprise but i'm ok with that
looks like the game just wants it to be not null, so existing at all should be fine
the vanilla maps use T values though
okay ill do that
yes, dont use the geode function and make your own machine rule with custom drops
Yep like Esca said. It looks like this
(also by vanilla maps I mean "only Island_Shrine", now that my scan finishes)
I will fix it in the wiki
thank you aba ❤️
(I found it by doing a find in files through the maps haha)
i love the collaborative nature of this community
it worked!!!!
oh yeah it's so nice here :)
no more pathing through my wild trees and breaking them
ooh congrats fellowclown!
thanks for putting up with me making my problems everyone's problems etc
Me too. The way we share and help each other out is what makes me love it here.
this community is just the best thing to ever happen to me
awww :)
its taught me how to socalize in ways that no one in my close life has managed and that has helped me navigate my life even more.
before this community I could only really communicate in outburst and angry rants so i owe the people here in this server a lot of love
its why im constantly giving away assets actually
for me it's honestly been such a refuge too, I lack many opportunities to socialize irl, so it's been really nice connecting with ppl here 
🫂
i honestly adore you already so
i see you typing and my brian goes !!
brain*
modding as a hobby has been a good mental health exercise for me i think. most of the time, lol
i have adhd and autism and like learning disablities too, so ppl here being so chill is awesome
oh same, fellow disability maxxer here LOL
ooooh?
between dwarf and yamay village
HMMMMM
theres a race of people i think hed know about?
on that note i'm always open to discuss collab stuff or cross-mod compat if anyone wishes to
the Dwarven Cyclops race
yesss
hit me up if you got somethin in mind
our animals could get along you drew half of mine lol
fall and winter flowers are gonna share a box
this is nice now that it's working smooth
good luck
lots of items but i'm sure it's fine lol
the boxes are all fairly rare
prob a good stopping point for today
thanks for the help as always yall
None of the fish are present for the modded map, its likely how I am using local tokens in the screenshots, nothing with the fish code at all (fish code worked when it was directly referring to the map, but with local tokens it doesnt apply oddly, i assume i am using it wrong)
What did the patch summary say?
Oddly on Linux patch summary does not work well for me, it just spits out empty lines and when I scroll to the top, nothing is there
You can try using the log website to check your log in case it's just the console itself that's failing to display it properly
Where does the patch summary log save? i dont have any file of it
sorry, new to this lol
It's just your normal log, have you grabbed one of those before?
I grabbed patch export logs from the folder
but its not there
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.
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Unix 6.12.63.13, with 16 C# mods and 13 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it
(ignore the north west update, the mod is actually up to date, just their manifest is reporting wrong)
Ah, you used the wrong command. It's patch summary full <your mod's id>
ohhh
okii
But I see you do have a full patch summary so I can find yours, it'll just be trickier.
i'll hand the right one in a sec, dw
patch summary full ASF
Oddly didnt make a file
(Sadly yes ASF is my ID, too late to change that, story for antoher day)
It shouldn't make a file
It should print out the patch summary in the console which you can already see in your existing log file
aba what time is it for you? checking if it's appropriate to bully you into going to bed 
But I can already see your patches and it says that your patch is applying:
[X] | [X] | [X] | Default | Include compat/index.json > Include compat/templates/ocean.json > EditData Data/Locations
How many times are you doing that Include? Just the one?
interesting, and yeah I am testing it just one time (it applies only once to each map that needs the ocean fish from my mod)
and just that map for now for testing
ima take a closer look real quick
i think theyre 12 hours ahead of me iirc so maybe we have to gently nudge them to bed
oh heavens
It's 2:30am
not that bad by your standards!
ok not 12 hours 
I went to fish there, it said no fish from my mod was there (fish overlay, but that has had issues before), so I decided to fish there, also put bait for a fish that is always active, fished with instant catch and bite 20 times, no fishi spawned there
What did your patch export show?
It's far easier to check that than by actually fishing, which is way too random to be useful
for patch export Data/Locations, in the map, the fish arent there
lucy whats your fishijg skill level
maxed
Ok so it's applying but not correctly, it seems. Can you share the json from the compat/templates/ocean.json file?
okay 
sure, do you want me to post it here, or post in the smapi thingy so its easier to view on ur end (json thing)
Like I said, actually fishing is a very inefficient way to test this. Better to use things like patch export to view the data itself.
Json website please
If I can't see the issue straight away I'll have to just go to bed without helping anymore
id like to ask something.. theres a new smapi version, how do i update it? im new to modding
three cheers for sleep schedules!
just download and do the same process you did for installation :)
ok, thank you! do i need to tranfer the mods or anything?
nope!
oh, and for future refernece, this channel is for making mods, not using them, you might wanna check outhttps://discord.com/channels/137344473976799233/933546639669493791 :)
Can you also share the patch export you did of data/locations, please?
oh ok, im sorry, but thank you for the help ^^
Validator is not enjoying that file lol
no worries :)
Sorry, can you send it to me as a json file instead? The website won't load it
So there's this mod called the Northern Gulf that I'm trying to fix (It's not mine and it's no longer being worked on). The quest framework mod that it used is no longer available and it overlaps with the Downhill Project's pathway. Can anyone help? The file is on Nexus if anyone is interested
Alr
[[Modding:Quests]] quests are natively supported by 1.6's features now, you can read up on how to add new quests on the wiki and migrate the code over
[[Modding:Quest_data]] oops
as for the overlap you can try moving the map patch/warp elsewhere
Thanks. Unfortunately, I am not seeing what is wrong. Your token name matches, the location name in the token value is correct, the Include is being included, the patch is being applied. It's just...silently failing.
Like I said, I have to go to bed now. If you don't get it figured out by tomorrow (for me, lol) feel free to send me your mod if you want me to try to have more of a poke around. I know there's got to be a reason it's not working, I just haven't seen it yet.
Alrighty, I understand, and I appreciate it! I'll see if I can get this fixed in the meantime, I'll take a peak around what I am doing and consolidate it to be a lot smaller so its easier to test
Go get some sleep! 2 am is late

must get home. must Mod. need to Mod. i need it
@hollow root You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
would this be the best spot to ask if specific mods exist?
That would be #modded-stardew !
precaite it
Just in case it's case sensitive, can you try correcting your capitalizations for your GSQ conditions? LOCATION_Season Here Spring Summer should be LOCATION_SEASON Here spring summer, etc.
Case sensitivity issues happen more frequently on Unix/Linux machines but it's something to check maybe
I'm new to coding, how do I do that?
!startmodding I'd look at the content patcher tutorial
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.
the hardest part is probably translating all the old quests from the mod into the new system, especially if you're unfamiliar
I appreciate it! though its not the issue, all my other maps work with it, just local tokens dont work
I just tried it, too, still didnt change anything
Sry for bothering you so much. I found the doc with the quests on it, do I just copy and paste it somewhere else?
you'd add a block with the EditData action, targeting the Data/Quests asset to add your new quest
into the mod's CP component (the content.json file)
and yeah you're basically making your own mod at this point
I tried to look through your Local Tokens code but it's a mess to find since it's a screenshot. Any chance of dropping that into the JSON validator also?
I have to head into work so I can't dig deeper right now but it may help others who decide to take a crack at it
I already had them uploaded onto json validator, I will resend in a clean format in an hour or so
Hi! I'm trying to add a new map, but when I load the game, it says it can't be loaded or found. Any ideas on how I could fix this? 
What’s the difference between #$e# and #$b#?
U have to click on npc again to continue conversation for #$e#
Ohhhh ok! Thanks!
this is likely an issue with your tmx, but if you share your log we may be able to more accurately diagnose what's wrong
Do spaces matter? I see some people put spaces before and after #$b# and others don't
the spaces will be tacked onto either dialogue if you include them. you probably don't want that
Ok!
Do I need two of $0 or will it keep the same expression from the last interaction?
$0 is actually the default and will be used if you don't specify an expression
I see
Thank you
but in general yes if you wanted him to be sad for both you would need $s both times
Yep, $0’s the default. However, if you wanna maintain a happy expression at for example $1, then use both before each conversation line.
(after, i think before has the possibility to cause issues)
Issue: Local tokens are not working/applying correctly.
compat -> index.json: https://smapi.io/json/none/d34e77e56baa4cc78fdc49a6baaff625
index.json loads correctly, it worked up until i changed it to a local token instead, I only put one mod in there for now so it is easy for anyone to diagnose. I did not add a When field for detecting the template mod to make it easier to diagnose, since on my machine it is installed (Northwest Coast)
compat -> templates -> ocean.json: https://smapi.io/json/none/1ed451b223ad47bcb8f1671cc44a2999
this holds all the fish for the ocean, and is right now only used for adding compatibility for other modded maps.
an important note is that this entry worked, and is a valid way to add fish, however, once the map name got changed to a local token, it no longer worked
Data/Locations: https://smapi.io/json/none/1a976bfa5c2b48348032dad6db1e3660
the map we are testing right now is Custom_Northwestcoast, a fully working map added by a mod, a reminder is that this worked before changing our technique to local tokens. If the Data/Locations json does not load on the website's end, then feel free to use the Data/Locations attached to this message.
The token name matches, the location name in the token value is correct, the Include is being included, the patch is being applied, though it seems to be silently failing. The index.json and ocean.json have been shortened to make it very easy to look over and review. If you need to see the mod yourself, I can DM you it.
unless that's outdated info
e.g. Hello.$1#$b#I like sushi.$2
here it is, kinda forgot to update some mods
https://smapi.io/log/af01620c014f464982b8bba682e65df1
Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 79 C# mods and 121 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
I can also send the content.json
do you have two Buildings layers? this says an item with the same key has already been added. (also, in general it's best to test your mod on a minimal mod list so that it's easy to isolate errors!)
what tutorial are you using to make your maps?
i'm curious why it's a tbin and also is prefixed with Custom
Yeah! It used to be called Buildings2, but I was transferring ownership so I changed the name
Now that I think about it, it sounds dumb
each layer must be named very specifically. you can have multiple Buildings layers, but they must be Buildings2 Buildings3 etc. also, only Buildings has the inherent properties like not being passable. Buildings2 etc draw over Buildings and under Front but don't have the same properties. [[Modding:Maps]] for a deeper dive
I'm using 2, one from HEXus and the one from The jefri T
are those video tutorials? in general we don't recommend those because they very quickly become outdated. your best resource is going to be the wiki, and the modding wiki will be second best as long as you make sure the page has been updated since 1.6 came out. i'll link you to a good tutorial to adding a custom location because i highly suspect yours is outdated
would i be correct in assuming that every tile that can fit on the regular Buildings layer should be placed there as a part of good practice (clean process and all), while Building2, 3 etc should be used more for cases where you need to overlap tiles to create a specific look, like cliffs for example
https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_Custom_Location_(CP)(1.6)
https://stardewmodding.wiki.gg/wiki/Tutorial:_Map_Patches_and_Warps
Last edited by AtlasVBot on 2025-09-13 18:56:11
Last edited by AtlasVBot on 2025-09-13 18:57:52
Tiled is understandably one of the most unintuitive/intimidating programs to use when making maps or patches for your mod. This tutorial aims to break it down into very simple steps with pictures! This tutorial will use the example of making an NPC house to teach you how to make a map patch (for ad...
so only a minimal amount of tiles should go on the extra layers
pretty much! the extra layers are purely visual
this second tutorial is how to add a house to a vanilla map, but the same principle applies if you want to create a new map
i have a meeting now brb
It works now!! Ty so much
awesome!
I admittedly have not messed with local tokens much, but since both are parsed by content patcher, I am curious -- is there a possibility that {{LocationName}} being a built-in Content Patcher token of its own is preventing it from reading correctly as your Local Token? What happens if you change the Local Token to a different name?
(if anyone else can confirm that Local Tokens don't care if the name matches a built in CP token, that would be helpful)
As far as I understand it you are not allowed to name a local token the same as an actual token, same as you can't with dynamic tokens
Hello everyone could someone pls point me out to where exactly the images of the CC interior as well as the Joja mart interior
I mean where they are located in the inpacked images files
both the tilesheets and the maps themselves are inside the Maps folder
Almost certainly townInterior.png if you mean the textures?
OO okey thanks a lot everyone
Mostly bottom left!
Hey, when creating a map patch with a "When" condition tied to a game state (For my situation, it is "Player_Farmhouse_Upgrade Any 3"), when does it load that map patch then: On change of state, after sleeping (What I thought it was), or after a reload?
I'm trying to have a map patch elsewhere load after any player upgrades their house to have a cellar
When conditions will be re-evaluated at whatever update rate you've set the patch to. By default, that is every time a new day starts, but can be changed to every time you change locations or every time the time changes
That said, PLAYER_FARMHOUSE_UPGRADE is a game state query and cannot be used in When conditions
FarmhouseUpgrade is the correct token name
So if I instead turned into a token for the "When" condition it'd work?
it gets turned into the upgrade level so you'd do something like When:
"FarmhouseUpgrade": 2
or 3
probably "FarmhouseUpgrade": "2, 3" if you want to cover both cases
Is that the current player
good point
yeah for MP you probably want to specify host/any
"FarmhouseUpgrade:anyPlayer": "2, 3"
Can u use anyPlayer....
You can!
I'll test it right now
(also to be clear my "2, 3" was just going off Selph's comments but 3 is the one that specifically adds the cellar)
(so only use 3 if you only want the cellar)
Also just fyi if u add a warp to cellar that will be the host player cellar
Not sure how to warp to farmhand cellar from CP mod
I dunno if you do without some C# mod to get you the actual warp name...
Nomination to u, DH
I just made that for this specifically
The FarmHouse code seems to change the cellar name to Cellar<farmhand number> i think? But yeah I don't know how you'd reliably work with that via CP
That's better than Cellar<farmhand_uuid> or whatever it was when I last encountered it accidentally.
Actually, it's worse I think!
Because Content Patcher has a {{LocationOwnerId}} token you could use to get the UUID of the person who owns the farmhouse you're in
Just checking, do I need to also create the map patch as a location and then subsequently load it?
(Oh, nope, I was thinking of the instanced building interiors.)
No right?
No, no need
Not if you're just editing a map, no
Alright, here's what I'm working with on the map patch; farmhouse does have the cellar, so it should be patching, though a bit lost on why it isn't
(This is just the segment of code tied to the edit)
hmm, i have a bit of strange situation, i have this as conditions for an event :
"Lumisteria.MtVapius_Gavin6H_OrchardIntro/e Lumisteria.MtVapius_Lodge_Gavin6HFollowUp/A eventseen_Lumisteria.MtVapius_Lodge_Gavin6HFollowUp": ```
But it played immediately after seeing Lumisteria.MtVapius_Lodge_Gavin6HFollowUp. Is there something wrong with my CT? Is it possible that somehow the event is set at the end of event, but the CT isn't?
Ideally the whole relevant json should be sent
But also to be clear if the upgrade happens mid-day you do have to sleep for the patch to take effect
So make sure you've slept
Oh this is the day after the upgrade finished, so it should be working
Hi everyone! I'm working on converting an old CON mod to Item Extensions.
On the CON .json, it says "spawnChance: 2"
Is that 200%? 2%? Halp pretty please!
hu, i hated when trying to convert that value
I'm sorry you struggled with it but I'm also grateful I'm not the only one!
Try eventSeen_ instead of eventseen_
i'll do, thanks
it is possible i made a typo and didn't notice
then copy pasted it a few time
my nodes all use a
"SpawnFrequency": 0.009,
Which is on the "rare" side but works well for me because i have a good amount of them
I'm 85% sure CTs are just case sensitive and event ones get generated with the capital S
i'll test that if i can 🙂
This would have a lot of nodes! There's like... 85ish of them.
(Also sorry LadySolystra I'm not sure why your patch wouldnt be applying in this case, but the whole json may help me or others spot the issue if its actually somewhere else causing the patch to not apply. A log with a patch summary done wouldn't hurt either!)
then i suggest testing with a similar value, and see how it is in game and adjust from there
Thank you super kindly! I appreciate you -tons-!!!!
Button : looking at a quick patch summary, the CT is listed so hopefully this is just a matter of typo (easy to solve) rather than asynchronous setting of CT
I have a really weird error, I got a "game error" about portaits even though my portraits code is correct
https://smapi.io/log/00d322e2e8e54097ba0965260d687a33
Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 4 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
I gotchu; the segment for the map edit is at the end, sorry about the few hundred lines tied to the blacksmithing:
JSON File: https://smapi.io/json/content-patcher/8db6ff4ac3dc42afa28501325c5aa17e
Log Parse with Patch Summary: https://smapi.io/log/3af4c92ce1f242e098b1fd2bd6155d8d
SBFForgeCaveFixed.tmx is the name of the Map Patch file
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 26 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it
you're loading the portraits into _MinosPrime, but the game is looking for _MinosNPC
I'm working on C# for a bit today
I fixed it! He's not moving or talking but he's real!
Ok, so that sounds like a potential solution for Lucy might be to rename her Local Token then. Thanks!
It's alive, it's aaalllllliiiiiiiiiiiiive! ⛈️ 🧌 ~FrankenMinos Shenanigans~
(Looking awesome so far)
I'm assuming he's not talking cause I have no gift tastes, and not moving because I haven't slept, but I'm not sure what these errors mean
https://smapi.io/log/e15e80c2f6a7428582cf0c20a88fe433
Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 4 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
It looks like you may have something wrong in your json structure from what I can tell? Could be an extra (or lack of) comma, missing bracket, etc.
(It is saying the json file is invalid)
;-; oof, lemme check
Blank jsons must have {} written in them and not be literally empty
(a bit confusing, I know)
💀 ok added
I added gift tastes and he is refusing to talk to me, the log didn't give me any errors
He learned to use his legs though
I also cannot gift him
Got my problem working, it was a targetting issue (bane of my existence sometimes lmao). Thanks for the help again folks
I am confused about what the formatting error is
You need a Format section
Ah
but only if this is content.json
this is dialogue.json
Ah yeah then no format
Did u load blank.json
yes
what's your NPC's ID? because I saw you're loading his portraits into {{ModId}}_MinosNPC earlier, but your dialogue file is referencing just MinosNPC
It should just be MinosNPC
(this is the point I recommend you use a Dynamic Token, ie. define {{MINOS}} as {{ModId}}_MinosNpc, and then you can just use {{MINOS}} whenever you need the ID)
no, I need the Data/Characters patch
the name in the manifest doesn't matter
Look at the "Target" line, that's what Selph is referring to, Selph wants the one that shows you editing "Data/Characters"
(I had to take a call earlier, thanks Button
)
but yeah, in your patch that edit Data/Characters to insert your character, the key in the Entries block is the internal name the game knows your NPC by
you need to use that name everywhere your NPC is referenced
can someone direct me to a repo of a mod that uses moddata net fields? so i can take a look how/what to do better?
you just read from and write to it when you need to
probably not the simplest example but here's some code from Fresh Farm Produce that reads and updates an item's freshness level in modData: https://github.com/zombifier/My_Stardew_Mods/blob/c469057da730fe29345bcd4eb17e5c261d99a5f4/FreshFarmProduce/Utils.cs#L16
For all intents and purposes you just use it exactly as you would any other dictionary, just with the knowledge that other players will have it synced to them when appropriate
Hi, I'm new to modding SV but not necessarily new to modding in general, I have a curious(?) question... is there any way to reload the mod without closing the game? or a way to load the game faster for testing the mod? 🙂
(Though the mod data dictionaries are shared with other mods, so make sure you prefix your keys with your mod ID in the form <mod id>/<key>.)
!reload
- Content Patcher pack: enter
patch reload <your_mod_id>in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate theConfigSchemaorDynamicTokensections if you use them). - Translation files: enter
reload_i18nin the SMAPI console window. If it's for a Content Patcher pack, also runpatch reloadafterwards. - C#: see the Visual Studio hot reload or Rider hot reload feature.
(And welcome to Stardew modding!)
brilliant, thank you ❤️
need help with my C# mod
I have a ring that works when unequipped and I'm trying to make it retrigger onDayStart if the player has it somewere in their inventory the backpack
how can i fire a trigger action manually from C#?
Do you need a trigger action though? C# mods can also just run their code in the DayStarted SMAPI event.
I assumed they wanted to run an action string manually 
ah a trigger action action
traction action, if you will
trigger (action)²
I used trigger actions to add my ring buffs and I had an experimental feature unequipped rings that still work without equipping
So I've swapped over the code from the CFL map I made and made it into a CP map. I believe that I've done everything that the wikis say I should do, the map I made is loading in correctly, the JSON validator is saying that the code is good, and I'm getting no errors in SMAPI, but still nothing is spawning on my farm map when a new day starts even when I set the spawn chance extra high for everything...
What am I getting wrong here?
CP Code (map should be flooded with spawns) - https://smapi.io/json/content-patcher/2b83acfcf9434d08a8c6f9b1953baecf
Manifest Code - https://smapi.io/json/manifest/d8a0b5038f274a94abb66b7d0b3722a3
And yes, I am making sure to save and cloes the file before opening SDV to test it.
I just can't figure out why nothing is spawning...
What wiki page were you using for that data/Locations entry?
yes it doesn't look like mine it looks different
hmm somehow I have managed to solve my unequipped active rings code
Trying to find the link again. It was the official Stardew Valley wiki for CP map coding though, I remember that much.
https://stardewvalleywiki.com/Modding:Content_Patcher
This is one of the links I used for making the Content.json file. Went on a dive through the wiki though
For context, they are trying to convert a Custom Farm Loader map, which is where a lot of that structure comes from
But, you can't just transplant the data in there wholesale
Yeah, I'm aware. I already made sure to edit the code and adjust a number of the key phrases.
And even looking at other farm map mods that use CP, I can't seem to figure out why this isn't working...
Two different data formats can't be combined like that because CFL completely made up its format, it's not a format the game is using
So there is no such thing as something like "DailyUpdates"
(And dw I was just saying that "for context" part for SinZ and dreamygloom because I missed at first that you'd already mentioned CFL)
Fair enough.
... Really?
This is the format for location data. If it doesn't exist on this page, it is not valid vanilla data that can be applied with Content Patcher
Why is this so difficult? I just want my farm to spawn a little bit of everything...
Well, because farms aren't meant to do that initially! People often use something like Farm Type Manager for it
it's difficult because the usual SDV farms simply don't have that feature, so there's never been a need to support it in the native data models
all the bespoke spawns like the mountain farm quarry and the forest farm stumps are hardcoded, since it's quicker and easier than modelling it for a single farm
That's why things like Custom Farm Loader and Farm Type Manager and such need to exist in the first place
So I need to start over. Again.
If the CFL format still works for you and you're fine with the possibility of it breaking in 1.7, you can keep using it
You don't have to convert to Content Patcher
though they're also fairly convoluted since they have unique spawn rules based on skill levels and the likes, so it'd be rather unintuitive as a base game model, but not out of the realm of possibility for the likes of FTM
Though that really only applies for personal use stuff, for published mods people would probably really expect you to use Content Patcher nowadays
(Not that you necessarily need to care about that)
The whole reason I made the swap to Content Patcher is because nobody here knew how to use or help me edit CFL, and because update 1.6 broke the spawning of items on my map.
I've been at this, trying to figure this exact issue out, for almost 40 hours now over the last two weeks...
This is just for my personal use too. I just want my farm to spawn a little bit of everything...
unfortunately that still holds true, since i've never used (or heard of) CFL, and as far as i knew FTM was the go-to spawn-things-on-the-farm-inator
Yeah, thats just kinda an unfortunate decision you have to make, balancing between available help and familiarity
Seriously? Now I have to learn a 3rd language just to get what was working perfectly fine 2 years ago working again?
FTM, CFL, CP
Is there a 4th code I need to learn too?
The game changed a hell of a lot roughly 2 years ago
1.6 was an absolutely massive change with how a lot of mods worked
yep, most mod authors had to do some pretty dramatic changes for 1.6, frameworks and otherwise
i've still not updated a couple of my mods for the changes
Fwiw it's not really a new language
JSON is a kind of human readable structured data and the most common way to tell C# mods to do things for you
I'm sorry, I'm just complaining. I was hoping to jump into SDV and finally relax for the first time in half a year, and it's just adding more to my plate...
true, it's closer to filling in a form than learning a new language, but there's still the required knowledge since you're writing the form as you go
Thanks for the information. Guess I'll learn the new coding language/dialect/whatever when I have more spoons.
It's your personal project in the end, fine if you wanna leave it as is and go play 
The author of CFL is on this server too, just unfortunate truth that most people don't know how to use it bc it's uncommon framework at this point
That's understandable! It can be overwhelming. I'm sorry that there's not really a perfect solution here. There are so many people in this channel familiar with CP though (since its literally over half the modding scene) that you'd have no trouble finding help at whatever pace you wanted. A lot of the Content Patcher format comes pretty easily once you get a bit used to it
One day, but not today. Guess I gotta find something else to play. Again, thanks for the help all.
oof, I may need some help here
for sure, if you pick it up again then be sure to ask here and we'll give it another look
