#making-mods-general
1 messages ยท Page 176 of 1
goes around adding context tags to preexisting items...
muhehehehe or however that cat laughs
so I'm not the only one who makes NPC Fight?
cornucopia i think
I've considered adding more food context tags to default items.
expect us patroleum ๐ญ what
Never made that mod though
everything will be editable thru content patcher. It's all vanilla assets
barley you're so hot this is great news /lh
im trying to optimize these context tag gsq
she says things wrong when she's punching.. she also says Alacapocus
cornucopia does do that but i havent updated it to the new 1.6.9 format yet
(I did make an unpublished utility mod that adds items to a shop based on the context tag)
That you write into the config xD
hmm
I know context tags per items are cached into a set
My thought is if anyone wants to change whatever events I make for the vanilla NPCs or write their own for custom NPCs, it's all fair game
cornucopia adds tags after the item is spawned?
[gently hugs my cornucopia context tags]
I wanted a way to quickly pull all the foods with a given context tag into a visual list in game, so I made a mod to do that LOL
oh thats neat
what
what are the current context tags tbh. does vanilla have any like _nut or _milk or whatever
you can do whatever you want to an item after its spawned with C#, including adding context tags, which is what i think chu is asking about
the thing i want to dodge is this
ItemQueryResolver.TryResolve("ALL_ITEMS", context, ItemQuerySearchMode.All, condition)
where the condition is something like
ITEM_CONTEXT_TAG Target a_context_tag
vanilla is pretty sparse on context tags
Vanilla lacks a lot of context tags for food
fresh farm produce adds fresh and stale tags after the stalening if that counts
those are runtime tags though, which I'm not sure if MCP handles correctly if at all
food_pasta is my favorite
yea hm
if i channel my uber autism, i might just go add context tags to stuff for fun
Ah, yes, bruschetta, the most famous of pastas.
maybe its dum to worry about this then
it is pretty fun tbh
ill just make one of each Object in the game at launch
oh i know. i went nuts on my cornucopia copy to add compat for this tofu extend mod i liked and it is cobbled together by tape and willpower, but my god it works
foreach (...) { new StardewValley.Object }
but i am force to invalidate anyways its doomed
i have more fun modding and doing that stuff than like, playing the game. LMAO
whats the mod you're talking about? Maybe we could add it on our end
if you only care about base tags and dynamic tags that are unlikely to change (id_o_whatevs) you dont have to invalidate unless the object data does
Using MCP to control a machine that accepts FFP stale item to turn them fresh is probably doomed though
yea but lots of ppl put tokens in their data/object edits which means cp invalidate those every morning right 

u lyin?
its important for functionality
yea, why I said invalidating when object data does
which if you only do once per day its neglegible
my spaghet!
you could get lucky and none of the mods a user has installed has a token that changes every day so maybe it will never invalidate 
iirc tokens will be checked daily but if the value hasnt changed the patch wont cause an update
I still dont get what problem we're trying to solve but I trust you're all having fun
either way its probably still better than ITEM_CONTEXT_TAG Target a_tag which costs 50-100ms 
u see 6480 it takes me 3s to open the dehydrator in my game
What's going on lol
i went back to spriting windows. i feel you
im trying to make that less bad
Are we taking thing s apart
it scales linearly with amount of objects prob
I like taking things apart
i have wag cornu vmv and some incidental stuff
baubles too actually looking forward to having enough gold for that
i still need to play that
it's fun to backsearch for "spaget" because it's almost all chu and it's delightful /pos
anyways yea even if its not perfect a one pass lookup table is prob better than this current nonsense
wonder how long it'd take to dehydrate once you install raffadax
die
im only responsible for 42 out of 153
So sleepy
actually nah, it would take 0 time since IIRC raff still uses PFM for most of its machine rules
Sooooo sleepy
and PFM support is kill
never heard of her
Wdyk open dehydr
What is open dehy
is raffadax not removing that in the 1.6 update?
open the machine control panel menu for dehydrator
Oh hhhhh
which involves finding out all the valid inputs
I was thinking like literal with screwdricer
can you just make machine control panel resolve every machine in the morning?
this is just one time until invalidate but 3s is really long
i could yea but im trying to make it better directly
I dont think so (at least not when I last looked at the beta)
IIRC the reason is that there's just too many rules to migrate, and PFM still works
if the machine resolves in the morning but another mod adds a context tag to an item after the morning it technically wont be accurate
(though from an unbiased opinion they should do that work to move to CP/EMC)
i think raffadax should use BETAS
ill be honest. i actually dont know what raffadax is really or who even made it im just a poser
all i know is it has a lot of items i think?
its got some vendors in it
a raffillion of them
they r like forest spirits
isn't raffadax also the author's name
but its also................. the mod 
https://on.soundcloud.com/ycE1ZDrfk73dQS8A8 here's the music mod's playlist for those interested.
(not all the songs are the version in the mod)
technically the mod is called "Raffadax Complete Production", people just call it raffadax for short
and the reason it's called that is because it's a conglomerate of all of raffadax's content mods
Hey, you've probably seen this message thousands of times already
I am interested in making a mod for Stardew Valley but I have little or no experience with programming, I started researching the wiki and took the option of asking for help or advice here, so
Is there something where I can start?
like, create new/custom maps, creation of npcs, etc.
!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.
Should I be able to find Fashion Sense items through Item Spawner?
fashionsense items are usually only found in the hand mirror menu, not physical items like vanilla clothes
I say usually since FS apparently supports being actual items now, but there's probably like 1 mod that uses that feature currently
I love that feature
(Seasonal Hats will be releasing an update using that feature pretty soon, now that Content Patcher's local tokens are available.)
ugggggh I forgot that dynamic is object and KeyValuePairs are structs so you can't cast a Dictionary to an IEnumerable<dynamic>
I think I have to do something messy qith linq
i just added dialogues for this mod and now i'm gonna have to add collapse entries?
I'm not sure how Fashion Sense integration would change any dialogues you have?
i have a data file that maps duplicate hats into a single reaction dialogue. if it adds fashion sense versions of the hats, then i would want them to map to the content patcher ones
i'm not actually upset, it's just that i added support for those hats today 
actually wait I can use dynamic generics for this
You won't need to. The whole idea of the new Fashion Sense feature is that they're still regular Content Patcher items, but they have metadata which lets Fashion Sense hook into them.
Yeah, the feature is pretty amazing
ah, i see! i misunderstood then. carry on!
although
it depends on what fashion sense returns when i ask it what hat is being worn
i am calling fsapi.GetCurrentAppearanceId(FSApi.Type.Hat, who);
actually it doesn't matter what it returns. i'll get a new string anyway because of how i constructed this
do you know if there's a way i'll be able to tell if the result is a content patcher item?
it sounds as if these FS items are CP items
unless there's a context tag, moddata, or custom fields entry, there's no distinction?
im not sure why you'd use FS though unless you want people to just be able to cheat in your clothing via the FS menu
my thing is that hat mouse needs to know what hat you are wearing in order to load dialogue for it
i don't use fashion sense, but approximately everyone else does, so i would like to support it
FS overrides whatever real hat you are wearing, so i have to ask FS first. that returns a <bool, string> tuple, and the string is something like
KaileyStardew.OrangeHatFS/Hat/Orange Hat
i do some nonsense about it after that, but as of now, if i get back a string from FS i treat that like an FS hat
this feature makes real (CP-added) hats appear in the fashion sense menu, if i understand correctly
so my question is what comes back from GetCurrentAppearanceId and whether i can tell from that string that it came from a real hat
(i am hoping it's just the hat's ID, since those should not contain slashes and that's probably a reliable check)
im not sure if 'does the hat name include a /' is exactly reliable for checking for an FS item hahah
selph do you know of the 1 mod that does this already so i can test it out
Hello! So, I'm in dire need of help. I'm trying to make my mod translateable but I don't think it's working.
I have my Dialogue.json file that gets loaded as a new NPC's Dialogue file and, amongst many other lines, I have her introduction dialogue.
Here's how it looks in the Dialogue.json:
"Introduction": "{{i18n:dialogue.Introduction}}",
And here's how it looks in the i18n/default.json:
"dialogue.Introduction": "You're the new ${guy^gal}$ that moved in from the city, aren't you?$1#$b#I'm Quinn! It's lovely to finally put a face to the name.$1",
Except when I load the game and talk to her all I see is a single { followed by a blank text box. I feel like this might be a well documented error that has an easy fix, though I'm struggling to figure it out for myself.
Hi! If you're using "Action": "Load" to load Dialogue.json, you can't use Content Patcher tokens like {{i18n}} in the loaded JSON since it's raw data. The usual solution is to load an empty data file, then use EditData to add entries which can use tokens:
{
"Action": "Load",
"Target": "Characters/Dialogue/{{ModId}}_Quinn",
"FromFile": "assets/empty.json" // a file just containing `{}`
},
{
"Action": "EditData",
"Target": "Characters/Dialogue/{{ModId}}_Quinn",
"Entries": {
"Introduction": "{{i18n:dialogue.Introduction}}"
}
}
Thank you so much for your help! I did that with the Schedule, don't know why I didn't think to do that with the dialogue. Again, thanks! ๐ซฐ
nope cant find it 
I can post a preview build of Seasonal Hats with the feature if it helps.
that would be super! thank you
Loving that you're using the most ridiculous possible hats for this example 
Here you go. You can search Seasonal in CJB Item Spawner to see all the hats (including the optional fixed-season versions).
This is the first I'm hearing of this feature, but I'll look into it and update seasonal hats on nexus time permitting
(Just to avoid confusion, this is Seasonal Hats by ParadigmNomad, which is distinct from the similarly named Seasonal Hats by Beans and Maea which you ported to Content Patcher.)
(my son is also named Bort)
Ah, both were equally likely lol
thanks, pathos!
I still will look into it though, it sounds really neat
I'm not home nor on pc so that's why I'm asking, if your npc is non romancable, can you set them up to dance at the flower festival or no?
Orange hats too, I suppose. I guess I can stop releasing paired content patcher/fs sets if I'm understanding this correctly 
You can!
Is that why mod have json called empty with nothing in them always wonder
yeah, from what i'm seeing CP hats can edit a custom FS asset to add themselves to mirrorspace
... I guess I'll add that to my scope creep then lol thank you ๐
Exciting and efficient new ways to put an orange on your head!
Does it equip the actual hat or just draw the har
just draws it. i'm seeing some weird behavior with pathos's preview which seems to be on FS's end, but disregarding that, for my purposes it is a new appearance id so i'll have to add map entries
or do some reflection crimes to determine that it comes from a CP hat, which might not be bad at that
hmm, can you do something stupid like
if (fs.hat_name == game1.player.hat.name
with correct logic and like sanity ofc
i don't think so. you are free to equip a real hat while the FS version of a different real hat is on
ahh interest
what's interesting is the real hat can still change your hair, even though FS prevents it (the hat) from rendering
Okay so, I have spawned my hat in FS and it works dynamically! I now just need it to appear in-game as an item so Pierre can sell it
I've got a CP file with a Load, but it hasn't created a hat at all, let alone whether it's the FS item
Load has worked for my boots!
does someone know if the Number of the Growthphase Sprites for crops has a limit?
do you mean the amount of phases or the number of days in one phase
i mean the amount of phases
yes its limited by the size of the sprite sheet
eight phases total, two of those are seed phases
so in GrowthPhases its 6 phase max (5 If its a regrowing plant)
I looked at other mods plants and saw a pattern. Next time, i will do that before drawing.
sprite sheet can be any size though, right?
the game expects a new index for crops every 128 pixels along the sheet but i will admit i have never tried to make a crop with ten phases
feel free to try it
hm
ah yes completely comphrehensible
so based on the math, if it's fully grown or regrowing, it will always be slot 7/8, but otherwise is limited to 16 if it's in the left column and 8 if it's in the right column
so you can have a 16 long crop if it doesnt regrow?
@simple spoke have at it
I assumed the hardcoded 7/8 slots and seed slots on the next crop index would prevent it from advancing
well, yes and no. fully grow non-regrowing will always show slot 8 it looks like
but otherwise you can have 16 slots
can't have more because it clamps the values
huh?
so it grows through 16 phases and then loops back to frame 8 when fully grown?
yeah
fully grown is hardcoded to slot 7 if regrowing and slot 8 otherwise
but it just uses the phase number if it isn't fully grown
idk why it doesn't just use the same index logic as everything else
I don't think it would be too hard to write a framework to enable opt-in standard index behavior for custom crops though, so you can have unlimited phases
fully-grown regrowing crops will use a prior phase sprite if the amount of growth phases is less than 5, and it's their first harvest
after the first harvest it does jump to frames 7 and 8
return new Rectangle(
Math.Min(240, (
!fullyGrown.Value ? (
(phaseToShow.Value != -1 ?
phaseToShow.Value :
currentPhase.Value
) + (
(
(phaseToShow.Value != -1 ?
phaseToShow.Value :
currentPhase.Value
) == 0
&& number % 2 == 0
) ?
-1 : 0
) + 1
) :
(dayOfCurrentPhase.Value <= 0 ?
6 : 7)
) * 16 + (
effectiveRow % 2 != 0 ?
128 : 0
)),
effectiveRow / 2 * 16 * 2,
16,
32
);
``` this is the full formatted logic
idk how it handles fully-grown sprites with less than 8 phases. maybe they're right-aligned and it fiddles with phaseToShow
@simple spoke sorry for pinging you, false alarm
I think i need a coffee before i am able to try to understand whats happening here right now.
basically it boils down to: yes you can only have 8 phases max (as i originally said)
thats something i can work with.
yey i got my spaget down to 677ms for dehydrator
I am going to framework this nonsense... later
are you gonna split the loading of the dehydrator stuff across several frames when you detect the user starts hovering over the button
no im gonna add prefetch that
gotta get that fancy preload
on invalidate
remind me in 36 hours to unspaghetti crop indexes
๐ (#6481456) (36h | <t:1737304192>)
wont that still not work for mods that add tags at runtime
it never worked in the first place
cus it was looking at item query results
not item u have
tbh i was still half asleep at the time i dont think i followed very well
All this growth sprite talk makes me want the invisible seed from Vincent shop. Too bad it is not updated. Yes I am weird. Talking about drawing sprites makes me want a blank sprite sheet.
i did think about perhaps having an alt mode that check for things u own somewhere in the world tho
but it may get confusing 
When making a character replacement, is it possible to change the actor's name? Replacing Penny as a test.
you can change their display name yeah. i wouldnt recommend changing their internal name
keep in mind that a character's name may be spoken in dialogue or contained in item names, and you will have to update those too since they don't pull from the character data
I think i would prefer getting an untranslated english name if the point is to replace a character
actually this doesnt matter

was there an update to CP recently? Just got a comment left about a new error in patcher when I haven't touched the mod since June of last year so I find it less than likely it is me screwing up an update.
Comment:
Got a new warning from Content Patcher (I think because of recent updates to improve CP):
[Content Patcher] Error loading patch 'Penny Expanded Patch for SVE > Include Assets/{{Trailer}}.json': file 'Assets\Trailer_Big.json' doesn't exist..
It looks like your mod is trying to include Trailer_Big.json when the player has seen an event (I'm guessing it's the "upgrade home" event). But the original Penny Expanded mod didn't have Trailer_Big.json so... are the patched additions supposed to be the same as in Trailer.json?
follow up to this question, how would I get the upgrade information for the farmhouse? I was able to get the BuildingData object for the farmhouse like so
BuildingData farmHouseBuldingData = Game1.buildingData.FirstOrDefault(kv => kv.Key == "Farmhouse").Value;
I tried getting information like the BuildMaterials, Builder, and BuildCost for this object. But it was all some sort of variation of None I tried checking BuildingToUpgrade as well, but that was null
Its working now. Thx for the help
CP did update but it doesnt have anything to do with this error. you are just trying to load a file that doesnt exist
{
"Name": "Trailer",
"Value": "Trailer_Big",
"When": {
"HasSeenEvent": "611173",
},
},
further down in your file you have this:
{
"Action": "Include",
"FromFile": "Assets/{{Trailer}}.json"
},
but you do not have a file named Trailer_Big in your Assets folder
farmhouse upgrades aren't handled through building data, they are hardcoded
in GameLocation.houseUpgradeAccept
Hey! I'm a new modder trying to make my very first mod using Content Patcher. One of thethings I'm trying to do is make the Lawn Flamingo behave like a scarecrow but nothing I'm doing is working and I was wondering if anyone could help?
what do you have so far?
Are you aware if there's any other upgrade/building that is like this, or is this only exception? I did find this list of keys within buildingData, but I have yet to 100% the game, so I'm unsure
Junimo Hut, Earth Obelisk, Water Obelisk, Desert Obelisk, Island Obelisk, Gold Clock, Coop, Barn, Well, Silo, Mill, Shed, Fish Pond, Cabin, Pet Bowl, Stable, Slime Hutch, Big Coop, Deluxe Coop, Big Barn, Deluxe Barn, Big Shed, Shipping Bin, Farmhouse, Greenhouse
it is only the farmhouse. the farmhouse is one of two buildings that were not originally buildings (the other being the greenhouse, which isn't purchasable anyways) so there's a lot of legacy logic involved
I'm also not super familiar with discord and I don't know how to put it in the text box thing but this is what I have right now for the scarecrow part:
{
"Action": "EditData",
"Target": "Data/Objects",
"When": {"LawnFlamingoIsScarecrow": "true"},
"Entries": {
"Lawn Flamingo": {
"ContextTags": ["crow_scare", "crow_scare_radius_8"],
}
}
},
!codeblock
You can embed code in Discord using a series of three ` :
```
Your code can go here
Even if not a haiku
Just an example
```
For syntax highlighting, add the language code on the same line as the first
``` (with no space, like ```json).
The usual codes are cs (C#) and json.
(but if your jsons ever get any longer than that you should use the smapi.io uploader)
doing it like that is wiping the entire object's existing data
that's also the wrong item id to start with
the flamingo's item id is 36
so, I notice a few things
- the lawn flamingo is a pre-1.6 item, so it will have a number ID, which you're not using
- you are currently overwriting the entire entry, which will break things. I will show you how to use TargetField instead
- lastly, the lawn flamingo is either a craftable or furniture, which means it's not in Data/Objects
it's a craftable so Data/BigCraftables
{
"Action": "EditData",
"Target": "Data/BigCraftables",
"TargetField": ["36", "ContextTags"]
"When": {"LawnFlamingoIsScarecrow": "true"},
"Entries": {
"crow_scare": "crow_scare",
"crow_scare_radius_8": "crow_scare_radius_8"
}
}
Thank you guys! I tried the (BC)36 id and the Data/BigCraftables earlier and it wouldn't work. I guess the rest of the format was the problem. I appreciate the help! I'll test it really quick and let y'all know if it works.
yeah Data/BigCraftables use unqualified ids as keys (same with objects and furnitures)
the qualified prefix is for the rest of the code that needs distinguishing between (O)36 and (BC)36
So just an aside in my attempt to grasp how Fields work. Would doing it like this also work? { "Action": "EditData", "Target": "Data/BigCraftables", "When": {"LawnFlamingoIsScarecrow": "true"}, "Fields": { "36": { "ContextTags": { "crow_scare": "crow_scare", "crow_scare_radius_8": "crow_scare_radius_8" } } } }
the problem with Fields is that it will replace ContextTags with just your entries
you'd want to TargetField deeper into ContextTags itself
though it will keep the other top level entries intact
using TargetField allows you to add to ContextTags
that also wouldnt be the format for doing that even if you did want to replace all the contexttags
because contexttags is a list
I'm working on adding content to the 'powers' tab, which requires pixel art that's 16x16. I'm way too unskilled with pixel art to be trusted with making my own, so I want to use some of the stock art. Particularly stuff in TileSheets/Craftables.png. The shame of it is that those things are all 16x32 and, like I said above, it looks like PowersData takes a sheet and a point, not a point and a size. I think I'm clever enough to do some cut&paste and a resize, but that'll be kinda nasty. Is there a way I can still use the same art and let the game do the resize? Or is there another PNG file that has all those craftables in 16x16 form?
there is no way around making the game use 16x16 sprites for it
use the output item sprite instead of the craftables?
slice it in half?
open an art program and squish it with a hydraulic press
I see, so basically you use Fields to pinpoint-change one entry.
kinda
are the sprites in TileSheets/Craftables not their output item sprites?
ask chatgpt /jk
its like entries but the top level thing isnt deleted, only the levels after that
as in wine instead of keg, or jelly instead of jar
whats the output of a snowman
you can also combine Fields and TargetField i believe
you can!
I'm assuming they're adding powers corresponding to Junimatic machines
Is there a use case of Fields that TargetField can't do?
if you have a specific circumstance where listing multiple stuff in Fields is possible whereas youd have to split it into multiple blocks for TargetField (as its one level further down)
i dont think you can TargetField into something thats just like, a string
im pretty sure i did that at some point
but you would targetfield into the object entry and then use Entries Price
Ah! Imagine changing the price of 500 objects in one EditData block. You can do that with Fields
Ah okay! I get it now. Thank you, all.
"Action": "EditData",
"Target": "Data/Objects",
"Fields": {
"301": {
"Price": 300
},
"302": {
"Price": 300
},
"303": {
"Price": 300
}
}
},```
aw you got it
Aw, I appreciate your example all the same.
Sorry, got distracted while I was pondering your suggestion. It seems really good. I mean, it sure seems to me that a picture of an ice-pip would be more meaningful for the fishing junimo than a crab trap. I thought of good icons for all of my junimo types except indoor pots. Hm. Maybe a watering can?
funny you mention crab pots since it's one of the only machines that's 16x16
lol
@gaunt orbit@brittle pasture It worked! Thank you guys! I just had to add a comma to it. But I have another question. I use UI Info Suite and it has the option to show the scarecrow range. Should that automatically apply to this or do I have to figure out a way to do that myself?
I think it should be automatic
someone here had problems with UIIS2 lagging when using their 300 tile radius custom scarecrow
It's not showing up at all for me
Is "Cant_Sleep.000" not a valid Id for a string? Because my other strings work for dialogue in the schedule, but this one doesnt. The Npc just says "string" and then when I click again, they say the path.
That usually means that translation doesn't exist. Try double-checking where you're adding the string to the data asset, and try running patch export <dialogue asset name> in the SMAPI console to see what the asset contains?
last i checked UIIS2 had a bug that prevented it from detecting custom scarecrows that was fixed in the dev branch at the time but not in release. it might still be unreleased
bc it only checks for "arecrow" in the name (which vanilla does too) and not the "crow_scare" tag
yeah I remember now too
Well I tried adding it at the end of the schedule for the day, and then I added another time after that to see if that was the problem, it didnt work. Its formatted exactly the same as another dialogue string that is working for me, so I dont know why this one isnt working? Is it because the other string has .000 too? Do they need to be different?
I think you suggested just adding "arecrow" to the internal name as a workaround lol
itd work i think. or just wait for the bugfix. i dunno when UIIS2 releases things
im remembering now its not in a dev branch actually just on their local machine uncommitted, so maybe itll be a while
(i also wouldnt suggest changing the internal name of an existing item tho)
It's not super duper important so I'll wait. Thanks again! You and @brittle pasture were a huge help
Can you post your schedule entry, and the patch that adds the actual text for that dialogue key?
yes I will tomorrow! Im going to sleep and after 3 days of problem solving I have such a headache from this ๐ญ
does anyone know the footprint for the tractor garage?
Same as the stable: 4 tiles wide and two high, with two tiles at the front walkable.
Thanks, making a smallish modding tool for myself, needed to add some buildings from mods I commonly use
Trying to follow this as a foundation, I've created an add-hat.json and then tried to Include the whole hat.json from my FS mod (which performs the weather check and changes the appearance of the hat)
But no dice - CP says the hats.json doesn't exist
Probably a misunderstanding of how all of these files talk to each other, so appreciate your patience with me
Err, dumb one. What's the magic word to say that you want the springobjects.png as the source texture? I tried:
TexturePath = "Maps\\springobjects.png",
and that didn't work out well.
if you're loading an asset in C# and not using one of the Game1 constants then it doesnt have a file extension
OIC, I want to do:
TexturePath = Game1.objectSpriteSheetName,
?
i dont know, i dont know what the constant is off the top of my head
(technically not a constant but yknow what i mean)
Trying it now. It's constant enough for me.
it shouldnt be an actual const. theres just a texture2d field on game1 somewhere
there might be a const for it but if you just need the texture, it already exists and is loaded somewhere
Got. Thanks!
To clarify:
- You say you added an
add-hat.jsonfile but includehats.json? If that's not a typo, the filenames should match. - What do you mean by including the
hats.jsonfile from your Fashion Sense content pack? (It would need to be a Content Patcher pack forIncludeto work.)
Note that the add-hat.json is just a way to repeat the patches for each hat. If you're just trying to add a Content Patcher hat to Fashion Sense, you only need a patch like this:
{
"Action": "EditData",
"Target": "Data/PeacefulEnd/FashionSense/HatData",
"Entries": {
"{{ModId}}/Hat/ExampleHat": {
"Author": "Your Author Name",
"PackName": "Your Mod Name",
"PackId": "{{ModId}}",
"FromItemId": "(H){{ModId}}_ExampleHat"
}
}
}
(Here are the official Fashion Sense docs for that feature if it helps.)
Sorry, I should have been clearer!
My mod pack has a CP folder and an FS folder; inside the FS folder there's a hat.json (which was what I was using to dynamically change the hat appearance when inside/outside). I wasn't quite sure how to link it up with the CP, so I tried to call hat.json into my add-hat.json
If you already have a Fashion Sense content pack, I don't think you need to do this? This approach lets you have a Content Patcher pack only, and add the Fashion Sense-specific info through Content Patcher.
Welcome! Feel free to ask if you have other questions.
Question, if you made a seperate map that was like an extension to the farm but on a different map, would using the map property for IsFarm allow you to plant in it?
you want to set the CanPlantHere field in the location data 
https://stardewvalleywiki.com/Modding:Location_data#Basic_info
Ok but on https://stardewvalleywiki.com/Modding:Maps#Other_location_metadata it has a property IsFarm that says does the farm logic
the wiki's a little vague on what IsFarm actually handles:
https://stardewvalleywiki.com/Modding:Maps#Other_location_metadata
i don't suppose it would hurt to use it?
for reference, all farms + greenhouse + islandwest use CanPlantHere: true in their location data entries
Friends, would this work correctly for loading the assets for a custom NPC?
"LogName": "Load Urbosa Sprites and Portraits",
"Action": "Load",
"Target": "Portraits/Urbosa, Characters/Urbosa",
"FromFile": "assets/{{Target}}.png"
}```
Mostly wondering if {{Target}} is correct to save me from having to rewrite the name and location of the file, if the structure is identical in my mod folder, except within an assets folder at the top.
Yeah, if your assets are in assets\Portraits\Urbosa.png and assets\Characters\Urbosa.png respectively, that's correct.
Awesome, thank you!
hey all, need some advice for dialogue mod, including compat. it solely uses <season_day> dialogue keys, so if i want the dialogue to run any year, do i need to also include _2 for year 2+? like have "spring_1" AND "spring_1_2" for every line of dialogue? or would i use conditions in like, the content.json, to apply to everything?
I'm sleepy, so I want to make sure I am understanding correctly: You are asking if you need years on the end of your keys if you have dialogue that is the same every year?
(as far as I know, if your dialogue is valid in any year, you don't need to include the year in the key at all)
You would probably only add the year to dialogue keys if you want specific years to have different dialogue.
Ooohh okay, yes that's what i was asking, ty! this makes it easier for me then heh
basically, i want it to run regardless of if players add the mod in year 1 or 2+
and yah same, i gotta sleep lol
Hi, y'all. I'm doing a two map custom farm map mod for the first time (a secondary area accessible by a pathway that warps you to the new map). I know I have to set up the data for the new map (pointers on how to do that/helpful examples or links are also welcome), and I was wondering about the warps, specifically. The map property is Warp | [<int fromX> <int fromY> <string toArea> <int toX> <int toY>] and I'm not sure how to handle the toArea. Would it be the actual name of the .tmx map file? Would it be the name as specified in a certain part of the JSON files? ON the secondary new map, would it be to 'farm' or to the special name of the farm map I'm making? Please @ me so I can make sure I see your responses. Thanks! ๐
The toArea is the location ID defined in your Data/Locations entry
For the secondary map, unless you are editing an existing location, you will need to define the map in Data/Locations as a new entry with its own ID, which you can name whatever you want
@normal trout
Okay, thanks! I'm going to have to hit the wiki to figure out the Data stuff in its entirety, so I'm sure I'll have questions about that lmao. Honestly I've only ever done replacements for vanilla map types, so this is a big project of new things ๐
https://stardewvalleywiki.com/Modding:Farm_data and https://stardewvalleywiki.com/Modding:Location_data are the important pages for this probably
(also note: since it is a separate map, you do not need to append it with the Farm_{{ModId}} bit, or else it'll try to replace the farm, you can think of it as it's own brand new custom location for the additional section)
I'm glad I don't have to do that, because I don't have any idea what you're talking about ๐ ๐ฅฒ I've been inactive in modding since... before 1.4. So I'm a bit rusty lmao.
The wiki has a warning for the lines needing a specific year version. This one may be the one needing that.
Who's excited to help me troubleshoot?!
good morning everyone

I'm adding this in as a Variant for the spring time music. What do you think (I haven't even posted on soundcloud yet as I've just finished it)
Oh no, you know you've stayed up too late when people on discord start wishing you good morning ๐ฅฒ
I am Very Particular โข๏ธ about the sounds that enter my ears. So take this or leave it. I'm the girl who always turns my game's music volume down to a sliver on the slider ๐ BUT my thoughts are that it's really pretty, very Spring-y, but feels a bit... fast? Can you slow the tempo (no idea if that's the right word, I don't do music things) down a bit? I'd be curious to hear it slightly slower!
I could, but it's accurate to it's original
I didn't even know it was based on an original. See how much I have a right to a musical opinion here? ๐
this one was edited ugh.. hang on
blah nvm.. you get the idea
I am pulling nostalgic game music into SDV.. I do hold some liberties of course, but they are made to resemble the original as much as possible
(Anyone got the money to commission Smooth McGroove to cover all of Stardew's music and make a music replacer?
/j)
It definitely sounds like the original, though... which is obviously very spring-y.
Omg I just got a big red time out! Are there certain file types we're not allowed to share?
well.. what kind of mod are you working on?
Content Patcher and hopefully integrating with Fashion Sense
Which is the part I was hoping for help with haha
I also tried to send my SMAPI log as a masked link - maybe that was it
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 7 C# mods and 1 content packs.

Sometime discord doesnt like some symbols in messages
I know nothing about your plight as 90% of the mods on my SDV are literally my own
Masked links are only allowed for mod authors, I'm pretty sure
Ah yes masked links are banned
Rather than uploading your entire mod though, you're better off just uploading the relevant code file you'd like help with to https://smapi.io/json and sending the link instead
I'm trying to use the new Fashion Sense/Content Patcher metadata link to add a new hat as an item (from here: #making-mods-general message)
But the EditData action seems to not be sending anything to the FS data path, at least from what I can see from a patch export
I can upload them each to JSON validator if that's easier for checking?
The hat is in the game, it just won't change between show/hide hair on an update check (which FS can do)
CP content.json: https://smapi.io/json/content-patcher/ee382746870e4999964d5efc1fdddb5f
CP add-hat.json: https://smapi.io/json/none/34ec50ff8d1b4c039474060fdb337900
I have been working on this all day, so I have a bit of the brain scramblies
(and lvl 100 iirc, unless that's changed very recently)
Are you updating IllogicalMoodSwing's mod?
I feel attacked by this image
(can confirm I can post masked links)

That's me! Haha
Oh! Didn't realise you were on Discord as well ๐
I'm vying for that sweet Mod Author role now
But in the mean time, trying to learn how to, um
Do it all โจ
not hard to do.. I literally posted a trash fish mod back in the day and got it.. no effort required xD
Congrats on the new releases last week, by the way! They're both very cute
or do you mean in Nexus
Please don't ever be so nice to me ??? ๐ฅฐ ๐ญ
I have a couple more ready to go, I just thought "I'd better update my old mods before getting carried away"
And now I've been trying to fix the stupid rain hood for a week
I'm not much help on the FS side of things, sorry, but a few other random bits:
- Are the dynamic tokens leftovers? They're not needed in their current form since you can just use the CP token directly, and SMAPI will also complain about them since it's possible for the token to not match any conditions and thus not have a value
- You could use a dynamic token for the shop conditions if you wanted instead of needing to duplicate the EditData code. Just have an initial fallback token with
"Value": "",so that SMAPI doesn't complain - The second trigger action has the same conditions as the first. I assume it's meant to be a fallback for players who install the mod mid-save, but you can just do one trigger action with
WORLD_STATE_FIELD WeatherForTomorrow Rainin the Conditions instead
Incredible feedback, thank you!
(Masked links and other Markdown are unfiltered for the farmer role and up right now! Making it less lax has been a bit of an experiment, but so far it seems to be going okay.)
You're welcome, though you don't need to ping me on reply when I'm actively chatting ๐
Ah, sorry! I do it out of habit to keep my comments in context
Busy Discord servers are so overwhelming ๐
Ohhhh but take the ping out! Got it
Yeah, the reply is fine, it's just the bright background on the reply ping that's the issue ๐
Yeah, some day Discord might allow the super basic feature of having it default to off. We can certainly dream.
Also whatever's going on with the FS/CP code might also be related to there not being a default condition
I assume it's meant to be hood down when inside and on sunny days, hood up when it's raining? Try removing the When check on the hood down code and move it so it's the top code block, that way it should always apply as a baseline and get overwritten by the hood up code when the conditions are met
Literally in your display name too - sorry!
Okay, I have a lovely list of checks to start with tomorrow - it's 10:30pm here
But keep the feedback coming, if you have any more!
Nothing more from me, sorry ๐ Get some sleep though and come back to it fresh in the morning
Question, is a way to change the text dialogue sound/chirps?
Or is that hardcoded?
So I did a patch export of Data/PeacefulEnd/FashionSense/HatData and my location-based patch just doesn't seem to... well, patch!
If anyone can see what I've missed, I'd be bloody delighted to hear it haha
Really is bed time now, though! Feel like I've done a full day of work ๐
Have a good day, northern hemisphere-ites
A patch export or a patch summary?
A patch summary should tell you info in your log about why something's not patching (although Includes will always say the patch isn't applied in a patch summary even if they're working)
(but come back to it in the morning
)
for some reason when i try and add custom objects to spring objects they just show up as a circlecrossed out, anyone know what to do
if i edit the prexisting objects sprites they do show changes i make to the sprite
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.
Don't add extra sprites to springobjects, that's just asking for incompatibilities. Create your own custom tilesheet and use that instead
That's just the bottom of the vanilla tilesheet, Bea ๐
yeah creating your own tilesheet is pretty easy and will be wayyyy simpler for a lot of stuff
wait isn't that the size of the whole springobjects tilesheet actually?
oh wait they're patching the entire thing. i see now
like this but for an object?
hats.png is just that one hat
Don't ping me on reply, please. Are you updating CopperSun's mods?
No
This is just part of a custom NPC mod I'm making with Content patcher
The Lorax? There's an existing mod that adds him as an NPC in case you weren't aware
so in the event i want it show the hat with the addobject command
(although i don't think calcite would be against two cakes as long as none of her stuff is used?)
i didn't know... uh...
so you want to make a hat object to show in an event? you may be better to use a temporary animated sprite for that but it's also a bit complicated
Not saying you can't do your own take on it, just letting you know
i mean my mod isn't the lorax it's the onceler 
but the lorax is in it for like two events i just drew my own sprites
yeah it's best to know before ๐ i agree
For the event, I'd recommend just doing a temporary actor with the same sprite rather than addObject
thats the risk you take if you use an established character but i did study other unrelated custom npc mods to learn how to do stuff but definetly didn't copy anything
oh yeah temp actors are way simpler than animated sprites
i looked online and someone called lemurkat mentioned that being a good method but i thought eh ill just try add object that sounds simple haha.. oops
i'll try temp actor then thanks ๐
wow yeah you're right this is way more simple you just have to load the tempactor in characters
the issue with objects is that then they exist, which means that you need them to have like, data and stuff
and manage things like excluding them from perfection
mmhm that makes sense, i mean the hat is already an object as in its wearable but i couldn't figure out how to addobject (hat) and im assuming that doesn't exist because all the boots and ring pickups are just in objects, no hats
Lol I have a save like that too
Hey guys, first time posting her. I tried my first Mod and added a custom seed. I have no errors in SMAPI but still 2 Problems: 1st: the price at the shop is doubled from what i thought i set them and the bigger prblem 2nd: with the seed in hand i cant plant them like other seeds, i dont see a parameter or something for this... any help?
- is intended, shops by default have a 2x markup from base price
as for 2. can you post your code?
!json use this site
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.
the name of the entry in Data/Crops must be identical to the name of the seed object
you're currently using {{ModId}}_Avocado_pflanze for the crop and {{ModId}}_AvocadoKern for the seed
oh i see, didnt know that
worked, thank you
so i tested it and i wanted it to regrow after 2 days but when i harvest the whole plant is gone, is it more than just set RegrowDays ?
what does your sprite sheet look like, maybe it's invisible
What coding language is used to make mods?
for a regrowing crop with less than five GrowthPhases the spritesheet must be formatted like this
It always uses the 8th slot for the regrowing sprite no matter what
then after it regrows it uses the 7th slot regardless of where the finished harvest sprite was in the first harvest
ah ok thanks for the info
hello
can i ask for assistance in a matter?
if it's related to making mods
yes
You don't have to ask if you can ask, just ask your question directly
i want to make a translation of the game for toki pona.. can i get a short(ish) guidance on how to do it?
i never made a mod before, but i have programming experience. also, for the paths, i use linux
You'd be making a Content Patcher pack
You can use the stardew Thai translation mod as an up to date example as you look through the wiki pages
Hey! I was on here last night asking how to make the Lawn Flamingo behave like a scarecrow using Content Patcher and was able to do that. Now, I want to change the description of the Lawn Flamingo to have the same description as the scarecrow and I'm struggling again. I scoured the Content Patcher author guide and can't find anything on changing descriptions for existing objects.
You just edit the item but editing the specific description field instead of the item as a whole
remember when you tried to use Fields? That should work for the Description, since it's just a top level string
how to install xnbcli?
@ivory plume okay, stupid questions time. Who is "Github-sysadmin" on the mod compat repo?
is that "some dude with that name"
or "github some bot"?
I assumed (b) but looking at previous pull requests, maybe (a)?
some dude who looks at recently updated mods?
looks like a real person
Im trying to test an NPC's spouse area behavior but they just... never seem to be going there. Does them going to the spouse area have to be specified in their daily schedule? Or is it built in like them sometimes being in their spouse room.
- do not pack xnb files
- unpack them with stardewxnbhack
no, but they do that on Saturdays if it isn't raining
it's hardcoded to marrigeduties
its possible that making custom languages requires fonts to be packed in xnb
im not that familiar
i want to work with the command line mostly
stardewxnbhack is a command line program
its also better at unpacking some of the edge cases iirc
per [[Modding:Custom_languages#Add_a_custom_font]], doesn't seem as such?
what mod are you hoping to make?
ah okay, i was just checking the thai mod files
urghhhhh acnhors dont work
They're making a language mod
shouldโข๏ธ work now [[Modding:Custom_languages#Add_a_custom_font]]
It's just a regular user with a name I'm surprised GitHub allows.
HAHAHA
ok unironically making a language mod is so fucking hard bc i tried making one that would display both english AND korean characters. insane failure
Just spent like 2 hrs moving all the dialogue, display text, event stuff to an i18n and then referencing it. Putting it off to do after is not the play v-v

!i18n We gotta use the !i18n bot command more often, it has a link to the converter
So you'd like to stop writing all of \"your strings straight in your content.json?\" and/or you'd like the capability to see all of your strings across all of your .jsons?
Introducing i18n!
-
How to make your mod compatible with other languages: stardewmodding.wiki.gg
-
The file where you can put all of your strings is called default.json, and it sits in a folder at the same level of your assets, named "i18n".
-
If you're converting from an older version of the game, there's a converter for ease-of-access.
Not to be confused with
{{DynamicTokens}}since these require the specific{{i18n:<KEY>}}modifier
Probably also worth tweaking the wording there since it's not just for converting from older versions ๐ค
dont know if this is allowed, but i wanna practice making farmer replacement mods for both pc and switch, but i have no motivation. would anyone like a custom farmer? furry, human, anything (just lmk if you want it as switch, pc, or both)
itll be free just i want smth to reference for this
i don't think it's forbidden but i'm not sure i would offer to do switch mods knowing how risky they are
^
hmm
i have an old mod that worked properly before, and i believe it worked fine even when i changed content format to 2.0.0
but now CP latest update (i think) has an issue with some formatting
[Content Patcher] Ignored Lumisteria Festival Additions > WillyStandRY2Graphic (Festivals): the When field is invalid: invalid named argument 'WillyChanges' for Random token, expected any of 'key'.```
```json
{
"LogName": "WillyStandRY2Graphic",
"Action": "EditImage",
"Target": "Festivals,Maps/Festivals",
"FromFile": "assets/WillyFish.png",
"ToArea": { "X": 464, "Y": 55, "Width": 48, "Height": 57 },
"When": {
"Year": "3, {{Range: 5, 10}}",
"Random: {{WillyStand}}": "01",
"DayEvent": "stardew valley fair",
}
}, ```
WHich use a dynamic token as follow :
```json
{
"Name": "WillyStand",
"Value": "01, 02 | WillyChanges",
},```
since it mentions a key, it may just be that since then the random stuff need the key part to be specifically formatted?
(in which case it's possible it's the format change that caused the issue, i'm just surprised i then missed the wall of yellow several time but this is in the order of possible at the moment for reasons)
Weird
I've never seen that formatting for random keys myself, I thought it required 01, 02 |key=WillyChanges
How the heck did it get that
as said it's a pretty old mod
Ah, yes
i'm pretty sure the first version of random was using implicit keys
Just release it and users will comd
then | evolved to be more versatile
could be true, yeah, I didn't use CP for quite a while
so in theory it should be as simple as copy pasting key= in all the right places
thanks
no more attack of yellow, i'll have to test it (eventually) but it looks better at least ๐
that.. isnt what im making. im turning someones character into a mod. even if i was making a mod thats generic i have nothing to go off of hence why im asking if anyone would like a free mod done with their character
So you're asking if anyone has a mod concept for you to make for them?
how is it risky? you put it in the atmosphere folder and its just a visual mod. you can use it online and everything as its only your side (unless its a game changing mod)
basically yea for the farmer
ohh
switch modding is risky, if you aren't aware of how, don't offer mod for switch
dude i have 4 modded switches
no, i can't answer the details of the risk of modding switch
yeah good, you'll offer them to people having issues i bet
most people dont mod the switch though because it can be risky
ik how its risky, just modding stardew a mainly offline game has no risks. the only risks are if you commit crimes like tax fraud
personally i wont mod mine because i dont want to have my stuff t posed on by nintendo xD
You know im not even going to ask...
you can look at uh... oh whats the link
this for mod ideas
ic
i dont know if it will have what you're looking for but :D
i wanted to make someone a personal mod but alr
you could ask in #modded-stardew
this is for people who are already doing the mod making so for the most part theres not really people asking for others to do it for em ... unless they get misdirected
okay yeah, re: nameless keys* earlier
{{Random:hood, jacket, raincoat | outfit}} worked from formats 1.11.0 to 1.14.0, then stopped being supported in 1.15.0 (around 2020, when named keys were added)
thanks for digging ๐ so it's likely the format change that broke stuff and i didn't notice it, rather than the CP update in itself
alr thx
i'd probably install it bc I can but that's about your entire userbase
(oh i tohught you meant switch files for your existing mods mb)
there's no risk from replacing a sprite when your switch is already modded
it's not what i said however ๐
" i'm not sure i would offer to do switch mods knowing how risky they are"
i'm not interested in discussing it further
they aren't offering to mod switches, the offer is to maek a sprite replacer an xnb as well
thank you

And is it possible to use location data like 689 .35 682 .1 for fish? They write that this type is no longer used, but many vanilla fish have only such data, that is, there is nothing written about them in Locations
(for what?)
which ones?
What data or what fish? I didn't quite understand what you were talking about :\
fishes that aren't in location
Well, such as sturgeon, for example, are not used
they are
Where? I didn't see anything about them in Data/Locations
{
"Chance": 1.0,
"Season": null,
"FishAreaId": null,
"BobberPosition": null,
"PlayerPosition": null,
"MinFishingLevel": 0,
"MinDistanceFromShore": 0,
"MaxDistanceFromShore": -1,
"ApplyDailyLuck": false,
"CuriosityLureBuff": -1.0,
"SpecificBaitBuff": 0.0,
"SpecificBaitMultiplier": 1.66,
"CatchLimit": -1,
"CanUseTrainingRod": null,
"IsBossFish": false,
"SetFlagOnCatch": null,
"RequireMagicBait": false,
"Precedence": 0,
"IgnoreFishDataRequirements": false,
"CanBeInherited": true,
"ChanceModifiers": null,
"ChanceModifierMode": "Stack",
"ChanceBoostPerLuckLevel": 0.0,
"UseFishCaughtSeededRandom": false,
"Condition": "LOCATION_SEASON Here summer winter",
"Id": "(O)698",
"ItemId": "(O)698",
"RandomItemId": null,
"MaxItems": null,
"MinStack": -1,
"MaxStack": -1,
"Quality": -1,
"ObjectInternalName": null,
"ObjectDisplayName": null,
"ToolUpgradeLevel": -1,
"IsRecipe": false,
"StackModifiers": null,
"StackModifierMode": "Stack",
"QualityModifiers": null,
"QualityModifierMode": "Stack",
"ModData": null,
"PerItemCondition": null
},```
(i copied some of the data of location for VMV, before i believe there was the way to just borrow fish data, so i know some of them are here)
for explaining it to them
(her and her disagreeing doesn't mean she needs to be explained to, thanks)
I seem to have been looking for data the wrong way all along ๐คฆโโ๏ธ
ah
that's ok, it's not super obvious
the fish data wiki page still references "slash-delimited data from Data\Locations.xnb" for some reason, but yeah, the fish data sections like 689 .35 682 .1 are labeled "unused" now & fish are just controlled by the new locations format
The entire asset was overhauled
Ugh, they aren't there ๐ By the way, it's too bad, because I really wanted to add a couple of fish to the mines
i think it was discussed recently but i don't remember if it was "solved" as something doable
yeah, I just mean the Modding:Fish data page still mentions that, which is outdated unless I'm misreading
(the rest seems accurate to 1.6 though)
I could swear I just explained this yesterday about the fish. Only ubiquitous fish like the Ghostfish are in location data. Level-specific fish like Stonefish and Ice Pip are hardcoded in MineShaft.
yeah, the mine fish are still added via code based on floor number and such; you could probably use CP conditions to add floor-specific fish, but not remove the vanilla ones
not familiar enough with the new data/loc to be sure or know where you'd put that, though
default with condition as a GSQ maybe
Yeah, the location is UndergroundMine and you can add to that list, though the actual chance you specify will be affected by the hardcoding. If you need to limit it to floors, use a GSQ condition, but I don't think there is a vanilla GSQ for "mine floor" (although as Atra said the other day, it seems the floors are straightforward suffixes like "UndergroundMine50" and so on).
here's an interesting query; If someone downloads 2 music mods that edit the default music.. will it conflict or mix together
(i assume conflict but I should ask anyways)
If the default music is a list, then they can mix. If it's just a property that gets set, they'll conflict.
hang on I'll show you what it looks like
hey folx, i have a dialogue mod compat question - if this code is the only Change in my content.json, does it mean my mod will ONLY run if a player has either CFE or DSV?
(the "RKAB_Alex_Dialogue" file has the Change, EditData code in it fyi)
"spring1": {
"ID": "spring1",
"Category": "Music",
"FilePaths": [
"{{AbsoluteFilePath: Music/Spring/thunder.wav}}",
"{{AbsoluteFilePath: Music/Spring/thicket.wav}}"
],
"Looped": true
},
``` If someone made a similar patch would they conflict
Yes
If you're replacing the entire spring1 entry then yes. If editing the FilePaths then no.
okay ty, that's what i thought - how would i...make it compatible regardless of a player having either mod?
Mods that add to dictionaries or lists have compatible edits. Replacing entire keys is not compatible.
u can target field into there i think, and just append ur music
FilePaths is a list so it could be compatible, but you may not be doing it that way.
i've done it before with Koda's help w/ CFE compat, but it was for a SebMarriageDialogue.json...not sure why it's not applying to Alex Dialogue
well.. i don't know what people have done on their own.. sooo I did it basic
<.< also my music mod will probably cover a lot of things overall eventually
It's not a question of what other people have done. If you add to a list, your mod is compatible with any other mod that adds to that list. If your mod replaces the entire key, it is likely incompatible with any other mod that touches any part of that key, unless one of them adds to the list and the stars align in terms of which mod gets priority.
meh..
If you want compatibility, don't replace entries, instead add to lists/dictionaries. Otherwise compatibility is at best a gamble.
the answer went further than I needed.. but good to know.. Momma is a selfish musician
i want to say that i did something
Hey everyone I'm new to making mods and I was trying to make a new greenhouse map, does anyone have any suggestions of tilesheets I can use? All the ones I seem to find have nothing really related to a greenhouse
town interiors
also CarolineGreenhouseTiles
rmbr to start from the vanilla Greenhouse.tmx and keep all the existing tilesheets
New in the upcoming...
- Train Station 2.0.0: add boat and train destinations through Content Patcher! Separate content packs for Train Station will be deprecated, but will continue working as-is indefinitely.
- Expanded Preconditions Utility 1.1.0: check expanded preconditions through a game state query.
(Also both mods now have rewritten and expanded readmes.)
Am I drunk, or how the hell is this possible?
Context.IsWorldReady = false but the program fell out of the if block..
Omg I can't believe I didn't think of that one thank you so much!
And why the hell is Farmer.forceCanMove running before the game window is even launched?
is there a framework mod that lets me adjust the lighting of certain maps without the use of C# coding?
I'm curious why the code on lines 37-40 is grayed out. Is it possible you edited the code after the game launched, but didn't hot reload?
You can use ambiant light map property
It behaves a little weird between day and night tho
I think its just my editor colors, line 37 is definitely being hit by the debugger
R u on a thread that isn't main
^ was just going to ask that. I remember you were talking about BG thread stuff yesterday.
wait a minute
If it's on a background thread, the value could have changed between those statements.
actually I think Pathos is onto something
sadly this doesnt work on certain maps, such as farm caves and outdoors. trying to figure out a way around it but... im not finding one
this block is not part of the project being debugged
so it had not been rebuilt..
my bad everyone
That's actually a neat way to avoid requiring separate content packs to expose config to other mods. Are there any docs on this? Curious if there's a way to specify a file path within the content patcher pack directory and then load it from my mod
Do you mean to add/edit stations from a C# mod? You can...
- use Train Station's mod API;
- or use SMAPI's content API to edit the asset (though you'll need a bit of reflection).
This is great ;o People have been asking for TS compatability and this will save an optional file
No, essentially I'm looking for a way to let other modders customize some sprites within my (C#) mod. An obvious option is to have them make a content pack and then just read stuff from the pack folder, but I'm trying to see if there's a way to do this without the extra folder
if you want other content packs to be able to edit your sprites, you should load them through the content pipeline
Traditionally for that...button got there first
then other people can target them through their content pipelines either via SMAPI or CP
Gmcm has an example
nowadays you dont really need to make your own custom content pack format because CP can handle a lot of it, and doing so means someone cant use CP features for your content pack format either (bc they cant make both a CP mod and a custom framework mod in the same one if they both need a ContentPackFor field)
See Let other mods edit your internal assets to do that (no content pack or folder needed).
Framework mods refers to C# mods that add new functionality to the game's code, and allows content mods to make use of them without having to make their own C# component. They usually work by reading custom data set in content mods and then apply their changes accordingly.
This page details the various...
a example of this type of framework mod is extra machine config
i also have a small example here (a custom asset that is used to define question dialogue) https://github.com/Mushymato/MiscMapActionsProperties/blob/main/MiscMapActionsProperties/Framework/Tile/QuestionDialogue.cs
hi follow up question - is there a way to write this so to ensure it plays both my mod dialogue AND CFE's editing the same dialogue keys, even if the keys in the default.json are unique to our own mods?
like this?
Alright, I'll see if I can make it work this way, thanks all for the help! What would be the best way to expose some mod state that could be used to choose which asset to replace with? I'm thinking something like a custom game state query that then can be used by CP's "When" field, but just want to make sure
hm im not sure what you mean here
usually it's best to just have the user put all needed data into the model once, rather than do any elaborate reloading on content patcher side
you will have to explain your usecase
no
editing the same keys inherently means one is going to overwrite the other
(also game state queries arent for use in CP's when fields. like chu said you'll have to explain your use case bc i also dont really know what you mean)
hmm okay, so the best way is to just use different keys? it's happened before that CFE dialogue played, then mine - but maybe that was fluke and the keys were most likely different?
its not a maybe, its a certainty. you cannot have two identical keys that have different content in them.
you can have two patches that edit those keys differently under different conditions, which may make one patch apply and another not, but they cannot both be applied and seen at once
ohhh conditions could factor in okay, and dang
Maybe the better question would be whether I can specify some conditions (context) when loading stuff this way. Let's say I want to give my mod some sprite to use when a type of animal building (or a set of buildings) is watered. To specify the building names, would I just set the asset name to something like "Mods/(id)/(comma separated building types)/SpriteWhenWatered"?
Here is the schedule entry https://smapi.io/json/content-patcher/e3c251a6d3704447b13cf55e4413fcbd
and here is what its referencing: https://smapi.io/json/content-patcher/d45642e801634faeb3ab5af2bc0d0c0d
I have that file already loaded in through content.json and another dialogue key is working, but not that one.
hey! there's a way to make say the wedding ring functional in stardew right?
what do you mean functional
yea you can do that, but you are actually better off using mod data in this case
like with stats or some function alongside being used in multiplayer
in vanilla you can equip it still but it's kinda there for decoration
when equipped i mean
as with all things, anything is possible in the land of C#. which iirc is still needed for custom ring stuff. or a framework to do the C# for you. but it really depends on what you mean by functional
Can you enter patch export Strings/schedules/Cole in the SMAPI console window, then post the full file it exports?
here is a example of me using custom field for the custom hoe dirt texture
i dunno just an idea that's been rattling in my knoggin
(some exceptions apply!)
if u want a proper data model with fields then do the full custom asset setup
honestly i am still a beginner in c# so a framework for it will be helpful!
i infer that this is for the animals need water mod, but i never played with that one so idk what info is needed to provide support
[Content Patcher] Exported asset 'Strings/schedules/Cole' to 'C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\patch export\Strings_schedules_Cole.json'.
Is that what youre looking for?
the texture won't change but i want to add some stats! maybe it activates after giving your in game spouse/roommate the first kiss/hug for the ingame day
though i assume for that it wouldn't be a simple content patcher mod right?
Yep. Can you upload that C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\patch export\Strings_schedules_Cole.json file to smapi.io/json and post the link here?
it would not, no, i think you'd need custom C# for that regardless
still rather than reload texture conditionally, i think it's better to always load the texture, but conditionally draw it by your own mod's logic
oh boy ;w; this is gonna be a field day
Can you upload the actual contents of that file instead?
Open the file at that location and then copy/paste what's inside it to the json parser ๐
Sorry about that lol. This is all thats in there right now https://smapi.io/json/none/23a889057e1b459784bc9d70d01d18fc
Forest.000 works when I reference it, but the other does not
speaking of? is there a ring framework for stardew valley??
Is the texture path an absolute one? I'd need to have a way to get access to files inside the CP pack folder to load that asset, but i haven't found a way to do this via smapi's API
you dont want to access the files of a content pack directly if you are not making yourself a ContentPackFor framework
(or rather, you cant get them directly, by design)
the person making the CP pack Loads their textures to a custom asset. you then load that asset name via SMAPI's content pipeline stuff
if, in my CP pack, I load dirtOveride.png into the Target MyMods/DirtOverride, then you, from your own mod, can Game1.content.Load("MyMods/DirtOverride") to get the texture i loaded
so if in the customfields someone writes the name of a texture asset e.g. MyMods/DirtOverride, you know what to load
I think schedule dialogue keys are usually case-sensitive. The file contains Cant_Sleep.000 (capital S), but you're loading Cant_sleep.000 (lowercase s).
Omg I feel so dumb ๐คฆโโ๏ธ I have three entries testing that dialogue, and the one thats not working was the only one I checked in game.. but I was looking at the others and going "yeah theyre both capital!". Anyway thanks a lot, glad its a simple fix
Welcome!
yea what button said basically
this is how the content pack would provide the dirt
{
"Action": "Load",
"Target": "Mods/{{ModId}}/FarmCaveHoeDirt",
"FromFile": "assets/{{TargetWithoutPath}}.png"
},
{
"Action": "EditData",
"Target": "Data/Locations",
"TargetField": [
"FarmCave"
],
"Entries": {
"CustomFields": {
"mushymato.MMAP/HoeDirt.texture": "Mods/{{ModId}}/FarmCaveHoeDirt",
}
},
},
Alright, this seems like the cleanest way to do this, thanks!
it is one extra step compared to contentpackfor, but it has advantages like allowing a recolor mod to edit this dirt
(very unlikely anyone would but u know, maybe if someone makes volcano recolor)
and lets people actually use Content Patcher
which is a huge plus unless you want to reimplement content patchers tokens and conditions system yourself
okay so if i CFE has this dialogue key "Wed4": "{{i18n: CFE_Alex_Wed4}}" and mine is "spring_10": "{{i18n:rkab.spring_10}}" a Wed, it will play mine until you're at 4 hearts? if they coincide at the same time, editing different keys -- <season_day> and <dayhearts> -- would that make them compatible? and play one after the other?
hrm i just thought of something though 
Wed4 and spring_10 are different keys. there is no conflict there. its just a matter of the games dialogue precedence order in which it checks for dialogue
it will not play them one after the other. the game chooses one dialogue to load for an NPC every day. you can only talk to an NPC once
at that point, its not a mod priority thing, you're just using the dialogue system
if u want to associate data with a map rather than a building then consider map/tile properties https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_Framework_Mods#Map_Properties_and_Tile_Properties
lots of ways to do things pick what feels good 
Hi everyone, can someone tell me if I'm on the right track?
{
"Action": "EditData",
"Target": "Data/Shirts",
"Entries": {
"1040": {
"HasSleeves": false
},
"1041": {
"HasSleeves": false
}
}
}
I just want to edit the "HasSleeves" of these shirts to false, without changing any other fields, and I also wanted to know if this would support conditionals. I wanted to make some specific shirts lose their sleeves in the summer.
you have to use Fields, not entries. you can use When conditions like any other patch yes
using Entries will reset every other field that you arent changing to their default values
however shirts that are already spawned in the world wont have their fields updated when the condition changes
(there are mods that can make that happen but it depends on how many dependencies you want if any)
Would it look something like this? { "Action": "EditData", "Target": "Data/Shirts", "Fields": { "1040": { "HasSleeves": false }, "1041": { "HasSleeves": false } } }
Or would I need to change the structure?
that looks fine to me
Thanks a lot, I'll give it a try to see if it works
gah okay thx for ur patience, Button! it's just killing me, cuz it did happen once while testing. first it played CFE and not mine. then i changed something in content.json, maybe from "EditData" to "Include" or vice versa, or "When": "HasMod" conditional, closed the game, re-ran it, and it played CFE and then mine right after...on the same day with the same NPC. which made me think it was possible. like HOW 
Late to the party but I have thoughts! ๐
I'm not sure if you want to add any kind of requirement / prerequisite mods to your greenhouse edit, but I'm in LOVE with some of the grenehouse furniture mods available on nexus right now. The one I'm thinking of in particular is https://www.nexusmods.com/stardewvalley/mods/20139, which is a resource specifically for modders rather than an independent mod in its own right. Their art is GORGEOUS and has a lot of great tiles you could use! When I make my next greenhouse mod, I'm going to use them. Just wanted to send you that link. I'm catching up on messages for the day, so apologies if someone later down the thread already suggested this to you.
But yeah as someone else said, start with the ACTUAL greenhouse file, and it'll tell you what tilesheets you HAVE to copy into your folder to use to start with (and then remember to delete those after the fact - only custom tilesheets remain in the mod folder when you package it, because the tilesheets included with the mod overwrite any vanilla tilesheets, and make recolor mods that act on those vanilla files do nothing for your map!). Then add assets from there.
If you need any help or have any questions, feel free to ping me specifically! I literally started modding this game with doing a bunch of greenhouses years ago, and while my 1.6 knowledge is a bit rusty, I know a lot of tips and tricks for the basics of the greenhouse specifically ๐ Happy modding! Hope you have fun!!!
(as a matter of fact, you've inspired me - I'm literally going to start the greenhouse mod I've been tossing around in my brain for a few days now lmao. Thank you! ๐ )
Hello all!! New mod creator and a llittle stuck. I am writing a mod for some horse skins for content patcher and have everything written out (coded), assets completed etc but loading it into the game the skin (no matter which I choose are not working. I get "Can't apply image patch "Shadowmere > Horse" to 'Animals/horse: the fromfile file 'assets\horse_oblivion.png' doesn't exist". But everything is there.
I have already wrote another horse skin mod and done testing and that one wors fine.
The slashes look weird
Idk if thatโs a problem
Also is it definitely a png?
Instead of a jpeg or webp or something
!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?
Can you turn the file extensions on?
Ok about to sound dumb but how do I do that?
you dont have two copies of the mod do you? Maybe share your content.json with the link above and your log as well
!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.
!fileextensions
Windows and Mac hide most file extensions by default. If you are creating or updating mods, it's helpful to show file extensions so that you can be sure all mod files are named correctly.
To show file extensions on your computer:
On Windows 10, open File Explorer, click on the View tab, then check the File Name Extensions box.
On Windows 11, open File Explorer and click on View > Show > File Name Extensions.
On Mac, open Finder, and in the menu bar, click on Finder > Settings (or Preferences) > Advanced, then check the Show all filename extensions box.
Because I see you're editing the mod on your desktop
unless your desktop is set up to be your mod folder that wont work
I am using virtual studio code t creat the mod
wherever the mod is, it's in a folder called Desktop
@light bramble: make a map modding tutorial (2d ago) [Requested by wopr1234]
if its not in your mod folder, it wont be added to the game
you may have one copy with the code and no images in your Mods folder and another copy somewhere else, which has the images
I was in my mod folder. I had moved it to my desktop since I thought it would be easier to share anything from there
I can definitely move it back. ๐
Ah okay
can you please share your content.json and log then?
(according to the bot messages linked above)
why did this make me chuckle. โa folder called Desktopโ. 
If you want you can also zip the folder for your mod and send it here or dm it to me
This what you mean?
a little easier to resolve mysteries like this
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 22 C# mods and 16 content packs.
yup
Great! Will look
Tysm! I've just gotten started but I'd love to run some things by you when I'm a bit further along
My other little horse skin mod works great so I am not sure why this is being cranky. I would love to get these two fleshed out so I might hopefully put them on Nexus for others to try if they wish
Hey so it does work for me
I would just check again that the version on your desktop is the same one being loaded in your mods
Other than that I did change the Format field to 2.4 because I was too lazy to install CP 2.5
Ahg I did that exact song and dance for like an hour once
"why are NONE of my changes doing anything!?!?!?"
How? lol
It looks like a pretty straightforward mod
if you want you can send another screenshot of the image files, this time in the folder path Stardew Valley/Mods/[CP] Shadowmere/assets
but I just can't answer why it doesnt work since I dont have access to your computer
Thank you
anytime, n3rdgirl64 xD
you can also try changing Format to 2.4 if you want to replicate everything I did
might as well rule it out
It's working. lol
Lol
All four skins load to my test farmer
Game is like She's sending it to professionals. Let's work now. lol
If it works, it works ๐
Right. So is it ok to post a mod like this to Nexus? With the name being Shadowmere? I don't want to get in trouble. I wouldn't think anyone would care but.
Yeah people make fandom stuff all the time
Y'all are amazing. I don't now what I would've done with out the help
Thank you so much for the help
No prob. I'm glad I could help by doing... nothing ?
alright, i yam still troubleshooting this dialogue key compatibility thing - is there a reason why the game would run dialogue on a day not related to the dialogue key?
i'm trying to pick keys different from CFE without bothering/pinging Koda if anyone else has done this with CFE specifically
here's mine, summer_15
i reloaded the game to test again, and it played CFE on the same day
so i did "Find in Files" in Visual Studio code, and this was the key "fallSat6"
i am so confused 
@ivory umbra re comment on trinket tinker (way to force random idle animations to play at least 1 full loop)
random clips are rechecked when 1 anim completes, could you send vid of what you see?
I have a question, is there a way to get the data of each crop object on the farm somehow?
can you have a npc give the player a custom item in a heart event, or does it strictly have to be through mail?
crops.json in data has it if you mean like, not specifically your farm
It happens in the base game, so by logic it should be possible to do it with a custom Item?
from what i can tell you can use awardfestivalprize but i haven't checked if that works and on the wiki it says it only works on a few items in vanilla
That's not what I meant, I mean if there is a way of getting the data of each and every crop object existing on your farm
As in every crop growth stage, the tile it's on etc. The things defined in crop.cs
I'm doing something with all the terrain features in every location so this isn't an ideal solution if you only want crops but I'm sure you can find a way to make it more efficient as terrainFeatures is a dictionary:
foreach (var feature in location.terrainFeatures.Values) {
if (feature is HoeDirt soil && soil.crop != null) {
CropData data = soil.crop.GetData();
}
}
All the different fields provided in the data are accessible from CropData then
too late haha i'm here
no worries! i enjoy helping (although i am learning a lot myself and apparently not good at spotting errors in other peoples code yet haha)
tyyy, lol we're all ~in process ~ 
For the square_x_y feature in scheduling- should square_0_3 theoretically work so that they just move back and forth horizontally? or does there also have to be an x value?
when I left it at square_0_3 it didn't seem to do anything and then i changed it to square_1_3 and now they move like.. in the vertical direction but not at all horizontally still which is... weird
so cfde's alex line for fall appeared in summer? I can't find any reason why that'd happen on our side..
Thanks I will check it out tmr
X is horizontal
i knowww
which is why i'm at a loss
Y is vertical
like that's what you're seeing in the picture right? it's summer 15, but dialogue is fallsat6
are you using any other dialogue mods?
maybe someone else moved that line when cfde and their mod are both installed, our permissions allow that
Saph's New Introductions and some DSV dialogue has played during my keys too
Ohhhh that's a thing??
hmm neither of those should be a problem
yeah as far as im aware the only mod i've seen doing that is the haley's coming out stuff and I think they changed that with their newer update but it's allowed and I don't know every mod's code
I even drew a little x/y diagram on my note paper for this, I have no excuse
right? should i share the log? idk how else to pick different keys
uh, yeah let's see a log and if you could also just give me your mod as it is rn that'd help too
okie thank u so much! ik how to share logs, but how would i share the whole mod?
a zip file ๐
altho idk if people at your tier can do that in this server, if not there are file sharing sites like... litterbox? i think? is what it's called?
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 44 C# mods and 45 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
hmm do you know what's causing those smapi errors?, and could you load that save again and use patch export characters/dialogue/alex and patch summary gizzymo.canonfriendlyexpansion for me?
looks like it!
yes will do!
okay so! Looking at your files, I think i see a solution to the problem your code is having (even if i don't understand what my own code is up to lol)
your content.json looks like this:
{
"Action": "Include",
"FromFile": "Data/RKAB_Alex_Dialogue.json"
},
{
"Action": "Include",
"FromFile": "Data/RKAB_Alex_Dialogue.json",
"When": {"HasMod |contains=AirynS.DSVE, gizzymo.canonfriendlyexpansion": true}
}
] ```
this doesn't actually do anything as far as I can tell, because youre still loading the same fromfile either way and there are no dynamic tokens or conditions on the alex.json side either. Instead, just use the first changes block, and add to your manifest a false dependency for cfde and dsv to make your mod load after them
https://smapi.io/log/819083cced424d0ab506eb11dc25f7ac assuming your patch summary is viewable here?
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 44 C# mods and 45 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
yup! thank you
oh yah, my bad, meant to take out the second one - i was thinking they'd cancel each other out?
okie lemme try the dependencies in my manifeset
hmm my patch summary looks right and the blip doesnt seem to appear in the wrong spot in the patch export so... I have no clue, and since it's not immersion breaking I think i don't have to care
if someone with more skill than me knows why my fall_sat6 heart dialogue is displaying outside of season that'd be good info to have tho
like this yah?
i can't promise that's the right uid for dsv but otherwise yeah looks right to me ๐
lul yiss i gotta a spreadsheet xD
gonna run summer_15 twice and see what happens
appreciate u so much for taking a look!
Are you sure that's the right mod ID?
DSVTeam.DiverseStardewValley is in my files for the DSV content patcher portion
That looks to be the ID for the diverse Stardew Valley Expanded pack
And not general DSV, unless that's what you're aiming for

thank you kailey i knew that looked off!
There's way too many people on the DSV team for an AirynS id to make sense anymore lol
Not that we don't appreciate the heck out of airyn! 
right! but he's really proactive about making sure everyone involved gets credit so that uid wouldn't really follow
ahhh gotcha, i think i pulled it from an older dialogue mod i have
Airyn and Gang
The Assorted Gays
summer_15 checks out
Koda, if i come across anything else similar as i test, would u like me to let u know?
Hmm. Anyone around that can explain how DayTiles/NightTiles works these days to me? I haven't used them since like... <SDV 1.4 ish. Can I take a custom tilesheet and make a light using the property on a custom greenhouse map?
Do you want a glowing light
Or like a lamp tile that changes texture to look like it glow
I think the wiki has an updated guide on DayTiles that includes lights
But I also want it to emit light at night
One sec
For the former u use the light bulb looking Path tile
The wiki is... very low on detail when it comes to map modding. That or I'm just too autistic, and the map properties section confuses me more than helps half the time ๐ฅฒ
Or the map property that specify where all light sources are
See here
I also reccomend checking vanilla maps where it's used
It makes way more sense in-context
please do! any other cfde wierdness i definitely want to know about
if you want colored (not yellow) lights u need spacecore or mmap
Yes I have that open and was looking at it. But it wasn't super helpful. I was confused in particular about teh tilesheet index - can I use a custom tilesheet? Or must it be a vanilla one? I know what tile indexes are, but not tilesheet indexes per se
I think you're good to use a custom one, but only one way to find out
Like, I've used DayTiles and NightTiles before, on outdoor maps with existing tilesheets. But it was literally years ago. So I wanted to see what changed, and how to go about the custom nonsense
The tilesheet index is the tile index, same same
i dont think they changed very much
The glow will only be added if the location is indoors and the <tilesheetIndex> is 256, 288, 405, 469, or 1224. in particular
okie cool, will do! what's best, reporting as a bug on nexus?
Ohhh yeah I forgot about that clause
fun hardcodings 
Yeah it's hardcoded for windows n stuff
Yeah. I know it's hardcoded into the default tilesheets, that those tiles will glow.
but again u may use a regular ol Paths light
Why not patch your own tilesheet via content patcher conditions at night instead?
And then they just won't swap tiles at night, correct? It'll just emit light?
For the tile portion. And you can conditionally add lights to the map the same way
Map Edits via CP are something I'm still trying to get the hang of. In my day (cue old lady voice) we could only do it in Tiled ๐
So make your map with just the day version, and make sure your tilesheet is loaded to Content/Maps and not in the same folder as your map. Then editimage your own tilesheet to turn the lanterns from the day to night version, at night only via content patch conditions. And then use editmap properties to add a light to those coordinates under the same conditions
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editmap.md#edit-map-properties
Add the light by appending the map property for light
Is there a good explanation out there of the Conditions thing specifically? I have been messing around with data more and more lately, and haven't been able to find a good explanation beyond a mention in almost everything I'm trying to do ๐ ๐
Thank you so much! Time to get to reading these links ๐
You'll want this one
The content patcher docs (the github links) are your friend, they're the textbook
Yeah they've def been more helpful than the wiki as of late for me
The wiki is for general modding and game data, not content patcher itself
With map stuff specifically, anyway







sorry, i tried LOL