#making-mods-general
1 messages · Page 61 of 1
me who put the minedeath and hospitaldeath incorrect info
Maybe I should ask Pathos if this is the intended behavior
Frontier Farm is probably a good example
Warp farm x x? For the way back?
Ok so I can make custom farm with an extra map attached.
You can put whatever warps you want on your maps
The new location wouldn't automatically have properties of farm
Cus it's just a location
Need to add IsFarm can build etc
Or not, your call 
I want context for this 👀
oh i just appended minedeath information with the hospitaldeath information cause it was left on TODO
So if I'm understanding right, it'd be used like
"When": {"HasMod": "UniqueID"}
Yay, I'm understanding the code better!!
Sounds like a simple mistake. I bet I'd do that on accident too lmao
hi ive never made a single mod in my life but im wondering if it was possible to create a mod that automatically changes your clothes? im thinking it'd be dependent on fashion sense since they have presets, and it'd be like your clothes can automatically change on festival days or when its raining or after a certain time (for like pjs and stuff).. does this sound achievable? bc i wanna try making it but not if its absolutely impossible TwT
AFAIK a force change is from the highest difficulty (c# coding) https://github.com/Floogen/FashionSense/wiki/Fashion-Sense-API
The API allows mod authors to set (override) the player's current appearance with any Fashion Sense appearances. You can also utilize the API to clear (remove) the player's current Fashion Sense appearance.
i don't actually know what IsLocked does in terms of, whether it's applicable, whether it forces the change, but you could also look into that: https://github.com/Floogen/FashionSense/wiki/Content-Patcher-Integration
it is achievable. someone has achieved it https://www.nexusmods.com/stardewvalley/mods/19503
(it also does/requires farmer portraits)
Not me thinking something like that was impossible
in c# land, nothing is impossible 
it's not a C# mod, as far as i know
ikr i was sitting here thinking ab how impossible it might be
ah yeah i just checked the files, interesting
avi's point stands, though. anything can be done in C# if you are determined enough 
ive been wanting to learn how to mod for stardew for a while but whenever i look at mod files ive downloaded it just looks so confusing LOL
getting a handle of content patcher is probably your best bet, even my first mod is just a portrait/sprite replacer
!anyonecancook
stares at ichor
the initial hurdle is the biggest (prior programming experience helps, even if you're not expecting to write C# code). there's a lot of stuff to learn about
i do believe in you. the pixels say it, so it must be true
y'know i'm still on the fence about my first command, my sandwich analogy
thank you guys!! i wanted to try my hand at making building / clothing mods but im just not sure ab the canvas sizes i should be using or if there's a certain parameters to follow, i tried searching it up but i didnt really get much information so ive just been looking through the mods i have and trying to figure it out from there lol
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
following/editing the game sprites is a good start.
though for clothing specifically it depends on whether you want vanilla-like clothing or Fashion Sense. The latter has no limits
(loosesprites/cursors)
Loosesprites/cursors
we don't have a cursors command?
.q 6218
It's not in Cursors
There's no way it's in Cursors
... it was in Cursors
- @tiny zealot (Jump)
that's as close as i have, sorry
puts it in my stash
well as level 100 cheetos we have the forbidden powers to add commands...
(but I won't)
i could attach that wiki.gg cursors thing probably
jokes on you! it's everything that's misshapen!
I have the vaguest memory of javascript back when I took a coding class in high school (don't even know how I got my javascript certification but not html even though javascript look like arabic to me), so it helps me understand conditional statements
and of course don't forget Cursors2 and Cursors_1_6, both of which are real and feel like trolling by CA /lh
(Ichor is still typing)
shush. i love to type
1.7, summerobjects, fallobjects, winterobjects
Hi, I found the game more cozy and relaxing with time speed mode. I don't change the time speed in runtime just slow it down x2.
But I won't be able to get SMAPI to work on Android...
So is there any way to patch apk/libs to change the default time speed?
!androidmods
Many mods are not compatible for Android, but there is an incomplete list of android compatible mods.
If you find a working mod that isn't on there, submit it by following the instructions here.
For mods not listed, they may or may not be compatible with android, but the Modding Android Wiki page provides more info on how to find a compatible version of a mod not listed in the first link.
there is probably a way to do it with, like, a hex editor (find the values you need in the byte stream and change them) but i wouldn't recommend it
yeah, i don't think we cover that 'round these parts though 
It's one of those things that is probably technically possible
But sufficiently hard that no one in their right mind would do it
more of like, "you're better off becoming the dev for smapi mobile"
nah, i wouldn't wish that on my enemies
1.6.9 save serializer homogenized across all platforms
1 fear
Hopefully 1.6 makes it easier
I'm not sure though
I wonder how the net6runtime on android is (mono)
praying SMAPI Android Mods (if it's ever a thing) just works (tm) because I'm not doing compat requests
It's probably going to be less bad than 1.5 but still much worse than macos or split screen support
worse than split screen support 
is mac incompat (still) a thing
I'm sorry, SPLIT SCREEN GAMEPLAY?
Yeah SDV has local co op
I wish more games has splitscreen stuff but that's so hard when everyone uses separate devices
#making-mods-general message read: atra's current headache for fixing modded split screen
What happened to sharing a PS1 and playing racing games on a split screen
Split screen isn't bad. It threw me for a loop the first time I ran into it, but afterward it's just sprinkling PerScreen here and there.
Aside from the really esoteric stuff like tracking quits, obviously.
i haven't heard of mac incompat
but i am a wee egg who just got into modding not even 4 months ago 
It used to be the case that Mac/Linux rolled their own versions of the runtime/game code
But that was fixed in 1.3.something? So an eternity ago
all i know is that microsoft sees linux as 3rd rate citizens because vs22 has all the nice features unavailable to any other OS
They do develop VSCode completely for free, though.
them buying a free Linux VS alternative and immediately deprecating it is the bigger asshole move though
yeah VSCode is cool, but still not quite VS
yeah
I don't think the fate of monodevelop can really be blamed on Microsoft. The developers simply abandoned it.
true, but it happened when they're owned by Microsoft so I'm blaming them regardless
(This is a specific split screen bug I'm trying to fix from outside of smapi with no harmony and a minimum of reflection. Which means a lot of careful searching through the code to find my entry points.)
Normal splitscreen modding is not that bad
that's true, it is wild that the editmap thing has only now been exposed this far in
Is this some sort of personal "no harmony" challenge or you just expect harmony to be fragile for this?
I don't want to patch smapi
I've already done one skipping prefix on SMAPI so I guess that completes my transition to the dark side and everything else is fair game.
Profilers patches into smapi are transpilers into the event dispatch mechanism
i should make that shitpost mod that patches SMAPI just to change the console title to say a random one of the wrong names that users give it, like spami and scampi and smarpy
Smacky
I like Scampi.
oh that would be easier. i never looked into it, i just assumed i'd need to patch it
Not gonna lie, why the hell is the console name so god damn LONG 😭
Does any one know or have tutorials on how to make indoor custom maps and have them connected to the other house in the custom map
connection is just through warping
https://stardewvalleywiki.com/Modding:Location_data
https://github.com/Aviroen/Custom-NPC-Edelweiss/blob/master/data/Locations.json
my location data is all through content patcher editing though, not through the Tiled TileData
When I play it to the game only one of the maps show
is there a reason you are using tbins rather than tmx files for your custom locations?
The tutorial I watched used tbin
Ah. TMX has some fancy features you can use in Tiled (like flipped/rotated tiles) so it tends to be the preference, so I was wondering
Ohh
A lot of the video tutorials are outdated
(your tutorial sounds very out-of-date btw, tbin was mostly dropped for sdv1.5 in 2021)
Custom locations is a clear indication of an out of date method, also
What’s the newest thing to do?
Avi, are locations covered in the npc command too?
it's very simple to add new locations:```json
"Changes": [
{
"Action": "EditData",
"Target": "Data/Locations",
"Entries": {
"Custom_MyMod_House": {
"DisplayName": "{{i18n:world.house.map}}",
"DefaultArrivalTile": {
"X": 15,
"Y": 15
},
"CreateOnLoad": {
"MapPath": "Maps/Custom_MyMod_House"
}
}
}
},
{
"Action": "Load",
"Target": "Maps/Custom_MyMod_House",
"FromFile": "assets/MyHouse.tmx"
}
]
unfortunately, no, but i did keep my git example as clean as possible
contemplates
Remind me in 16 hours to contemplate writing the "Full Guide on Creating Custom Locations"
you know what rhymes with jerkface? aviroen. aviroen does. but fine i'll remind you anyway... (#6297975) (16h | <t:1728853847>)
Also for anyone brave enough, the modding:Maps wiki page still links to a deprecated custom locations CP documentation that links to the Location_data wiki page
That could probably be updated on the wiki to link directly there instead of two redirects
if it's a singular link, probably easy enough
Its this bit: Custom map You can add a new map and location to the game. The easiest option is to create the map using Tiled, then use Content Patcher to add the custom location to the game.
The "add the custom location to the game" link
If you want to make mods that add or edit maps:
-
Use Tiled to edit .tmx or .tbin files.
-
Refer to the Maps wiki page for details on how maps work in Stardew Valley.
-
Content Patcher allows you to create custom locations through editing Data/Locations
-
Vanilla Maps can be edited via Content Patcher as well: EditMap
i think this was the other command roku and i changed out in our tirade of masked links
@worthy leaf Hey! This would be the channel to ask for help
There should be a quick command for beginner-friendly pixel art programs (can someone link it?)
!software
Here's a list of software for pixel art and JSON text editors we recommend: https://gist.github.com/ishanjalan/c8efb21afa21f74a052293176db107f7
For making SMAPI (C#) mods, see the Requirements section here for which IDE to install https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#Get_started.
audiohostem needs help figuring out how to use an art program to do simple recolors of some sprites
you can do recolours with anything so long as you have a fillbucket tool and a lot of patience
Can some one tell me how to make this a valid json I’m so confused
!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.
it's hard to tell what's wrong with so little pixels
I’m trying to add another custom location but the json it’s making it invalid
(ignoring the fact that CustomLocations is deprecated for now) your second block is outside of the square brackets of CustomLocations
and it should be wrapped in {}
yeah, it needs another curly bracket at the very bottom to close everything in with the curly bracket up at the top
(also you can use the snipping tool that comes with Windows (type Snip into your start menu to find it!) to take a screenshot of just a portion of your screen, that way you don't need to take a picture with your phone of your computer screen)
(though recommend just posting it at smapi.io/json 🙃 )
(yes but everyone should know the snipping tool exists, it is my favorite tool)
or just press prtscrn on your keyboard lol, no need to find the exe
(alt+shift+s on windows, you're welcome)
on macos command shift 3 or 4
how would a 3d model get used?
probably do whatever focustense did to load the sml files
it's win+shift+s on windows, or just printscreen key lol
It'll get rendered n stuff
like why load a thing if stardew only uses 2d things
I think one of you bracket is misplaced
also, I'm working on my promissory notes and I need an object category. would Object.metalResources be affected by the Blacksmith profession? the Items page on the wiki doesn't say that it does, but I wanted to make sure, first
or is this meant to work with something
delete the second duplicate set of lines - "Name": "Custom_Village" and the one below it
(i forget my alt+win swapped places on this keyboard
)
Well it'll let ppl have funny 3d objects 
it's hardcoded to only be the 5 base metal bars 
But hm I could just pack it into a xnb 
excellent! then that category I wanted to use is perfect :D
heyy i got it to work but house wont load into my game does anyone know whats wrong with it?
@brittle pasture 2am thoughts about the proposed 1.6 framework design patterns page:
Central topic: how to make C# mods support CP mods
- ModData & CustomFields (& context tags?)
- Delegates (TriggerActions, MachineOutputMethod, Tile Actions, etc)
- Custom Assets
- Caching & Invalidation
- Why custom asset instead contentpackfor? To help CP eat everything ofc
try using Format 2.0.0 or higher. Format 1.24 is painfully out of date
your Custom_Village house is not within the custom locations list
its currently just floating out in the first level of the content.json itself which means it does nothing
How would I fix that?
it needs its own { ... } section like you have the first Custom_Village in (they will also need different names)
and also put it inside the square brackets of CustomLocation
i would also recommend updating to current content patcher format though just in case you plan on using anything else thats been added since 1.24
it needs its own pair of {} brackets and to be above the red line (inside of the purple [] brackets)
I'll spin up something on the .gg wiki tomorrow (probably after sleeping for 12 hours)
one hour of sleep for every piece of computer on the floor
I’m so confused lol
it's very simple! your Custom_Village map works, so copy what you did with that
(but also consider Data/Location instead)
I did and it didn’t load
it'll look like this:json "CustomLocations": [ { "Name": "Custom_Village", "FromMapFile": "assets/CustomMap.tbin" }, { "Name": "Custom_House", "FromMapFile": "assets/House.tbin" } ]
(dont forget the comma after the last bracket at the end tho!)
your issue was likely that both maps were named "Custom_Village"
(just mentioning it in case they copy paste that)
is there anything missing from my OpenShop, or should it open up the shop when you click on the vault on any of its 1x2 building tiles?
defaultaction looks like it'll use the whole building if actiontiles isn't used
using the whole building is fine, that's what I want
I haven't actually tried it in game yet, I just wanted to make sure I didn't miss anything before I closed my buildings.json and went to go work on the next file
Ughhh it still says the location wasn’t found or can’t be loaded in smapi idk what I’m doing wrong
Some CP changes likely will not work if you haven't changed the Format to 2.0.0 or higher (recommended is 2.3.0 currently)
3D model is not a monolithic thing. We could be talking about something as simple as an .obj or as hideously complicated as a .glb. "Loader" is a little ambiguous; technically, a .gltf is just a JSON file so you could already load the data for one of those; whether or not you could actually do anything useful with the data is another question entirely.
@fleet crystal That will probably also take care of any migration issues from you using the old custom locations system
Otherwise, if you upload your JSON to smapi.io/json it will be easier for us to find any new issues
Odds are fairly good that you haven't loaded your second map asset before using it as a map path if people were mainly focusing on the other pieces though
It still didn’t work lol I updated the format I think there’s something wrong with my JSON because it won’t load but I’m not sure why
It’s literally not adding to the game
Yeah, the smapi website will point out any lines with errors
It’s a valid json that’s the thing
valid json isn't necessarily valid Content Patcher input
Although, one thing to note since it seems like you are adding the house to backwoods: if you are intending to use this for an NPC they will not use anything added to backwoods.
Backwoods is hardcoded to be excluded from NPC pathfinding.
I’m just using this as a test location I plan on moving it
Ok, just wanted to be sure you were aware of the issue
But I can’t figure it out lol
Like I’ve look it up the most common mistakes are spelling errors but I haven’t spelled anything wrong
If you upload the json to smapi.io/json and change the drop-down to Content Patcher, do any issues show up?
The validator needs to be told what type of file it is to properly find issues
please, just link the smapi json here, i'm not going to parse images
Please copy/paste the link in the green box
don't think so, but LOCATION_ACCESSIBLE uses a bunch of hardcoded checks that you can use analogous CP stuff for:
case "Desert":
if (Game1.MasterPlayer.mailReceived.Contains("ccVault"))
{
return true;
}
break;
case "CommunityCenter":
if (Game1.player.eventsSeen.Contains("191393"))
{
return true;
}
break;
case "JojaMart":
if (!Utility.HasAnyPlayerSeenEvent("191393"))
{
return true;
}
break;
case "Railroad":
if (Game1.stats.DaysPlayed > 31)
{
return true;
}
@fleet crystal The other useful thing to have would be the exact error from SMAPI's console
It typically gives you at least some indication of why it failed to load
(to that end: share the FULL log at https://smapi.io/log)
I think I figured it out I was using the wrong name in tiled lol
Ah, that would do it
It worked!
woohoo! my vault works as intended! (after a little bit of troubleshooting because it helps when you load all of your .jsons, haha)
now I just need to add in a config file to enable or disable the silly memes/reference items and set the actual building condition to be after Perfection, and it'll be all done :D
hey so has anyone ever had problem loading the panorama assets from daisyniko's tilesheets in a map? i'm getting this error even though there's no tilesheet climbing, dependencies are set properly, and i didn't change the source image's name
double-check it in Tiled, would be my suggestion. sometimes Tiled changes sheets to Untitled or something, and that throws the whole thing off :<
done that already
i even tried changing the config of the tilesheet itself, but no dice
its based on a dynamic token and loaded into Maps/panorama
i dunno if that means you'd need to rename it to just panorama.png
this is the same problem with my mod's tilesheet loading except with someone else's mod so (shrug)
i'll try this i guess
kinda weird that i have to do that when the FromFile format is like this
its bc the fromfile format is like that that makes me think you'd have to rename it, bc thats just for daisyniko loading the tilesheets, not your mod
but it loads them all into just "panorama" unlike the other ones which seem to load into assets that have a name matching the .pngs
when it comes to map making stuff and tiled and tilesheets and whatnot though im never 100% sure on anything im talking about, so, yknow, take what i say with a grain of salt
that's something to try, at least
I found the time speed value is 7000ms per 10 game minutes.
It's hardcoded in the method UpdateGameClock()
So...
I'm going to patch the StardewValley.dll create the blob and update apk...
??? it loaded finally
that was weird, but at least it's working
alls well that ends well 
oh my god i forgot to add the warps between both halves of the farm. i knew i shouldn't have done that part at night
my "When": field to enable my silly memes option is in my shop, I have the config schema loaded, and I have a .config file for it as well. I'm clearly missing something, but I don't know what. is there something else I need to load in content.json besides the config schema, the data/shop, /building, /object.json(s), and the assets?
your config token is Enable Silly Memes not Silly Memes
the Section and Description parts are just for GMCM
then I'll keep the Description part for GMCM and get rid of the Section, since all it needs is the single checkbox of 'do you want silly memes or not'
okay the panorama loaded, but it's loading the snowy version instead for some reason?
im assuming its not actually snowing in game right now?
of course not, it's a fresh save
also, it's not changing with the time
oh wait, the time change happened
if you're using cjbcheats or something to change the time directly that might not count as a timechanged update, might need to manually let it tick over
if that still doesnt do it then- oh ok
as for the weather thing ive got no idea
it uses a dynamic token called seas that should be blank in spring summer and fall and _snow in winter so iunno why itd be loading that in spring
hmmm. SMAPI stopped yelling about it not being a valid config, but it still shows the meme items even when the box is unchecked
i changed seasons in CJB, and it still loaded the winter panorama 
maybe someone who has used the panorama from these tilesheets could weigh in better
for the time being i'll mess around with it
there's no errors in SMAPI about this, either
might try sleeping a day? dunno if shop inventories are cached or somethin
sleeping did not fix it :<
removing the double quotes from around the true in the When setting didn't help, either
you can't use config in shop like that
you can only use a when on a whole block, not per item
either you use a condition being {{yourtoken}} for each item you want enabled that way, or you use the when for the whole block
(oh yeah. clearly its way past my bedtime if i did not catch that lmao)
(it's past my bedtime too lmao, I just wanted to try to get this finished beforehand XD)
ugh the panorama still isnt loading the correct asset
anyone know if using scale up 2 works with farmer base sprites?
can I seperate my shop.json into two blocks, one for items that are available all the time, and one for the silly memes that are only available when the config option is set to true?
yes
but then you may need to edit the second part differently
(depending of how you add them currently)
(i didn't look too closely at that)
right now, it's just a straight list that goes down. very braindead
you may need to do :
{
"LogName": "Editing YOURSHOP Shop",
"Action": "EditData",
"Target": "Data/Shops",
"TargetField": [
"YOURSHOP ",
"Items"
],```
to target the exact field and not erase existing stuff
okay. what exactly did you mean by using a condition being my token? I am assuming my token is RiftstalkerSekun.WealthCondenser, but how do I use that as a condition to enable or disable individual items? I thought that the When was supposed to do that.
I don't want to risk the items disappearing from inventories if the setting is turned off later, just not show up on the vendor any more
shop entries have a Condition field that you can put GSQs into, but you can also just put your config tokens in them {{Like This}}
if the config tokens are boolean values theyll either be true or false which becomes a valid GSQ
{
"Id": "Lumisteria.MtVapius_NaveenShop.Coins.PriceACChamomile",
"ItemId": "Lumisteria.MtVapius_WeirdCoins",
"Condition": "{{HasMod |contains=wildflour.ateliercrops}}, SYNCED_CHOICE day lumisteria.naveenshop_flower 1 4 1",
"MinStack": 2,
"MaxStack": 4,
"Price": 0,
"TradeItemID": "(O)wildflour.ateliercrops_chamomile",
"TradeItemAmount": 1,
"AvailableStock": 3
},```
This specific item trade will not show in the shop if the player doesn't have the wildflour mod installed
and yes, any token that can result in true/false can be used like this in a GSQ condition
GSQ stands for General Standard Query, or something like that?
game state query
ah, okay
technically i guess any dynamic token or config token that resolves to a valid GSQ string would work too but i dont know if ive ever seen someone do that bc it seems not so useful :p
(yeah i tend to assume people are familiar with stuff like i am sometimes 😄 )
...okay i thought redoing the whole process and starting a fresh day 1 spring save would fix it, but nope it's still loading the day_snow one
yeah, I'm a walnut when it comes to stuff like this XD
i've added a comment on daisyniko's mod page but i'm not sure if they would ever reply bc they're (mostly) inactive afaik
i'm not sure what a walnut is in this context 😄 it's my turn to have things i'm not familiar with 😄
small brain, hard head XD
oh!
it's not a hard head as in I am resistant to learning, but hard in that I will keep smashing it into things until things work the way I want them to, lol
that's understandable, i have a tendancy to "just try one last fix" and then it's way too late. But sleep is important too to see the issues clearly
Did you sleep after changing the season in cbj? The change for the panorama tile sheet doesn't happen instantly because it's loaded with a token instead of with the winter-prefix in the name
That was meant for you sorry
it works! :D
figuring out how to do the token made a lot more sense when I looked at my greenhouse mod and realized that BuildCondition was basically the same as Condition
one last question before I sleep. I wanted this to be available after Perfection is achieved, which should be handled by my "BuildCondition": "PLAYER_HAS_MAIL Any Farm_Eternal" part, but testing that this works this way will be a pain.
is there a debug command I can use in SMAPI to give myself Perfection so I test this easier to make sure it works?
i think its debug perfection
i believe there is
the winter image was already loading on spring 1 right after getting out of the farmhouse for the first time
awesome, thank you :D
Oh ok that's strange then, I've never had any problems with it except for with the thing that I mentioned. You didn't accidentally leave it in the assets folder or something like that?
nope. this is way too weird indeed
the thing is, it's loading the correct recolor-based one (desaturated version, bc i'm using VPR and the tilesheet setting is "off"), it's just not loading the correct season
and yes i'm loading the vanilla_day one in the .tmx, just renamed the png to "panorama"
Actually for the winter one, the vanilla and desaturated ones are the same
bc if i don't do the renaming thing the entire map won't load
just checked, it's not. there's a vanilla_day_snow and desaturated_day_snow asset.
oh wait the image itself is the same
my bad
would using the desaturated_day one as the source image even do anything
You mean in tiled? No all the changing stuff should be handled by the content file, it always needs to be called panorama because that's how the mod loads it
i mean using that one renamed as panorama.png
this doesn't seem to be a me issue ngl
It doesn't matter which one you use, it's just for you to see where you place it. The game should load the correct one automatically
and it's not doing that. why? 
actually lemme delete and reinstall and see if anything happens
Do you have any other mod that uses the panorama, can you check if it works there?
@frozen elm You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
i don't, but i could try installing one
My two cents: you could try doing a patch summary for the DaisyNiko mod to see what token values are listed and what patches are being applied
If you patch export it, does it export the snowy one?
Also you might be able to do a patch parse of the fromfile
..how do i do that??
Just double checking the format, hold on
patch parse "assets/Panorama/{{pan}}_day{{seas}}{{weath}}.png" "DaisyNiko.Tilesheets"
Hopefully that should tell you what the fromfile path is being parsed as on any particular day
errrrr
shouldn't this mean that it's actually using the correct asset but somehow it's showing in my game as the winter one?
yeah, that too
patch export maps/panorama
Then go to your Stardew Valley folder, find the newly created "patch export" folder and open up the panorama image inside it
it exported the winter one
How do I delete NPCs and parts of the map?
Humm. That is very strange that it is using the correct fromfile but the asset itself is the wrong one. I don't expect this will fix it, but have you tried it with your config set to vanilla?
You will have to be more specific with your request, please. What NPCs and what parts of which maps are you wanting to delete? (It's unlikely you'll be able to delete an entire NPC - especially a vanilla one.)
nope, i have tried changing from off to vibrant pastoral though. no dice
Ideally all
You want to delete all the NPCs and all the maps from the entire game? Why?
I think Sharogg's idea of getting another mod that uses the panorama to compare might have to be your next move then. I can't think of anything except comparing with something you know that works.
I want to make like a total conversion mod
make entirely new maps and NPCs
Do you know how to make maps and NPCs?
(i'm not sure there's a clean way to entirely disable vanilla npcs as they are involved in a LOT of stuff)
yes
A total conversion mod would involve changing so many things. Mail, quests, dialogue, events, shops, items - nearly everything in the game. Including at least some C# stuff I would guess.
If you just tried to remove an NPC you'd have non-stop errors from all the things trying to reference that NPC and couldn't.
you needn't necessarily delete the npcs, just rename and redraw them
Yeah
wipe their schedules, replace their dialogue, etc
Still a lot of work but you could keep internal names at least
I'd probably still need to remove some of them
honestly i'm not sure it's that even needed, as people may be willing to have both your mod and vanilla content
To actually remove them, I'd try setting their entry in data/characters to null - but I'd probably do that last after editing all the game references to them so they aren't referenced anymore.
Or you could just make a warp room map and set their schedules and homes to be in there so they exist but are never actually around. Wouldn't stop you having to edit everything else to stop people talking about them or players getting (some) events with them though.
Thanks, I'll try that
i doubt it - condemning someone to nonexistence and nothingness is just as good as removing them, but the game doesn't mind as much
I thought perhaps they meant they had fewer NPCs than there are in vanilla so they couldn't replace all the vanilla ones
that is what I meant
that's fine, just wipe their schedule and spawn them in an empty cube
again, removing is bad
Wouldn't they still show up in the relationships menu?
mark them as cannot-be-socialised 😌 there's always a simple fix
okay, this does seem like a much simpler way of doing things, thanks!
i can't believe i didn't add wind here sooner. so soothing..
so easily amused watching little sprites wobble and fly away
@frozen elm a very funny discovery:
the cause for my panorama displaying incorrectly was your mod 
it seems that always winter = true for entrance to narnia overrides the panorama for other mods as well. i disabled that setting and my panorama immediately displayed correctly!!
No way, I thought I limited that change to only that specific location
which 1. i KNEW it wasn't a me problem 2. is funny bc i have spent the past few hours malding over this only for me to remember "wait i have entrance to narnia and it's always winter, would be real funny if that was the cause"
I am very sorry
then again, i don't have the latest update to narnia; if you fixed that in a later version, i might not have known!
im quite behind on updating certain types of mods haha
Ok I double checked and I did fix that so it should be fine after you update it
nice! thanks, i'll get to that 
Would have been weird that I didn't notice it working on Mountain Gardens if I hadn't come to think of it 😅
now that that's fixed, i can wrangle this FTM file
seems like FTM has a love hate relationship with me because one time it instantly works, others it wont spawn stuff lmao
I have managed to avoid FTM so far and limited myself to the vanilla features but I will probably need to deal with it at some point 
i've used FTM my entire map-making career but it seems like it only works correctly from the get go with cliffside cove and secret grove. with my other maps it took me multiple tries to get right lmao
I had a problem reported on my farm map with ftm stuff spawning from another farm maps file so I have been a bit scared of it
fill in the FarmTypes field in File_Conditions? i think i updated a map with that once and the cross-spawning stopped
I had that situation with a user. It was just because the creator of the other farm map failed to specify that it should only be affecting its own farm map.
whyyyyy is this meteorite not spawning. why do you hate me so, FTM
yes it was what Aba said, I think the problem was that that map was set up to replace any other farm map based on config
Are you making your maps as AdditionalFarms, Sharogg?
quick q: is "quarry" a valid tile property in tiled?
my quarry map isnt spawning any ores... wonder why
Actually I think it was your map that my user was having quarry stones spawn on, Sharogg. We might be talking about the same person lol
Not that I'm aware of. Are you sure you've set your FTM spawns up for it properly?
OreSpawnEnabled set to true and the spawn settings look like this
no extra conditions
and i didn't change the spawn chances at all
wait could it be bc of the {{ModId}} token in MapName?
i don't believe FTM use quarry like that
Yeah, possibly. I would assume that FTM can't make use of CP tokens.
nope, didn't do anything. still no ores spawning
Quarry is one of the options for terrain types in the FTM docs
Maybe try changing the includeterraintypes to all just to check
I've never used FTM so I am just poking around the docs and other mods
your map have the terrain quarry for the quarry tiles?
yep
i also have SpawnMountainFarmOreRect in the map properties
i mean the property
nothing's happening though
for the terrain
ah, it's set as dirt now. can one tile have multiple terrain types?
Possibly, I think it was LNH's comfortable farm
And yes my farm mod (only one so far) is an Additional Farms one
oh yeah, lnh's comfortable farm definitely caused wrong forage spawns for me too
i think it made beach forage spawn on my vanilla forest farm lmao
Yeah I dropped a comment on their mod page but I think they've been away for a bit
It was just a pain for me to figure out what caused it, especially since it was at the beginning of modmaking and I was kinda clueless
I'm sorry I didn't think to let you know about it!
Nah don't worry, it was good practice
Anyway the issue wasn't my mod, so I was happy about that. I got a bit confused because I also have the option to spawn ores but I didn't realize the config for that doesn't change until you restart the game
the ores and meteorite still won't spawn 
i've followed the instructions in the FAQ even,,
this anyone? if i cant find a fix im gonna have to add it to my bugs list .-.
@calm nebula: write this, you've got all my pieces now (12h ago)
anyone know if there's a guide for making the farmhouse? the outside and the upgrades
Can you make a cheese mod.
For the exterior, check out the building data section on the main wiki, and for the interior, check out [[Modding:Maps]]
I don't remember if building data has its own page yet or if it's still part of the 1.6 migration page
isn't there a template or something similar?
i know how to make art but not mods hahaha
im gonna check that btw thanks
You can unpack the game files as reference, but there's not really templates for anything.
It's not very hard to learn, though, and doesn't require any programming
uhmn ok thank you!
(fwiw, once you Have Art, and it honestly sounds like you want to make farmhouse skins, people are often pretty patient in helping you get it into the game.)
!unpac
depend of what you want but yes, i have made cheeses in VMV for ex
!unpack
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
Building reskins and map replacements are some of the easiest mods to make. It gets a little more complicated if you want to change the shape/size of the exterior, but that's not too hard either
...isn't there already cheese in the game
unless you mean to cheese the game, as in to make everything easy, in which case cjb is your friend
There's only like 2 types of cheese though, so much room for improvement
it's just i don't know how to start mm
!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.
You want to make a content pack for content patcher
content patcher is discontinued no? or idk
No??
I want full realism
FULL REALISM
Okay, there should be a link to the AT wiki on that first link
cuts to a confused cat standing in a room sized fridge surrounded by cheese molds
okii
Play with Lumi’s cheese!!
I haven’t figured out how to make all the cheeses yet
But they all look tasty
mine is a compromise between game simplicity and realism, because as a french person if i start making real cheeses i could do one a day and still never finish
Ooh
Then you could eat lots of cheese
And croissants
Baguettes
Ok that’s my full list of French food I can think of
But probably other foods too
and touch grass?? isn't that scary?
touching grass isn't scary
I'm terrified of it /j
dishes that involve potatoes, or cheese, or even potatoes and cheese /hj
Snails
vmv introduced me to many cheese ive never seen irl
yeah that is because all the vmv cheeses are fictional for the reason explained above 😄
however, they are all inspired by real cheeses, just not 100% transpositions
(it's like, pretty common for cheeses to be named after a place hence the names of some VMV cheeses being named after fictional names of places)
(The actual answer is that I would need to unfuck a lot to get a save working on 1.6.9)
And I don't want to do it
Sorry 😦
(why are you sorry?)
one cheese i like a lot irl that may inspire a modded cheese one day is matured inside chesnut leaves
(image found on google)
Got it, flying to France immediately
I have a question, how would i add like map area text to the base map?
You mean on the worldmap?
There are two strings you can set through Data/WorldMap which are the scrolltext and the tooltip text, you need to define the map region and set those values accordingly
the base world map?
Can anyone give me an idea of what to do, I need to use Harmony to override a method in the JojaCDMenu class, the problem is that many variables are not instantiated within the method, but are instantiated outside the method, what is the best method to resolve these instance variable errors in a function?
This is the function I want to modify using harmony, several variables give an error in it
exitTimer, base, checkboxes, boughtSomething
functions too, getPriceFromButtonNumber
you can pass a JojaCDMenu __instance parameter to your prefix/postfix to access what would otherwise be this in the regular function
see https://harmony.pardeike.net/articles/patching-injections.html for more info and other parameters
__instance worked on some variables but not on others
These: __instance.exitTimer JojaCDMenu does not contain a definition for exitTimer and no exitTimer extension method could be found that accepts a first argument of type JojaCDMenu
Hi guys ! New modder here ! I'm trying to make a mod for my boyfriend. I had no problem with the character nor the portraits, but i can't seem to make my two other mods work. There is one to change Leah's name and another one to change her dialogue. Can someone please take a look ?
exitTimer is private
use reflection to access them
so i am finally finishing the stardrop quick start (Build it yourself edition) after a long break...very long break.
everything should be ready and good. Will smapi throw a error at me if i don't have a content.json tho?
is it expecting anything outside of just a manifest.json?
that way?
FieldInfo exitTimerField = typeof(JojaCDMenu).GetField("exitTimer", BindingFlags.Instance | BindingFlags.NonPublic);
int exitTimer = (int)exitTimerField.GetValue(__instance);
you'll need to change the display name: https://stardewvalleywiki.com/Modding:NPC_data
Also your includes lack the changes field and which asset you're actually targeting
not sure; I use the SMAPI helper and the reflection syntax on this page: https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Reflection
Can you maybe screencap where you are trying to add map text? Just so I know if we are talking about the right element
I will soon I'm afk for now
ModEntry mod = ModEntry.Instance;
int exitTimer = mod.Helper.Reflection.GetField<int>(__instance, "exitTimer").GetValue();
Will this be right?
And as for the "base" variable, it is instantiated in a strange way in JojaCDMenu
public JojaCDMenu(Texture2D noteTexture)
: base(Game1.uiViewport.Width / 2 - 640, Game1.uiViewport.Height / 2 - 288, 1280, 576, showUpperRightCloseButton: true)
What would be the method to access it? Reflector? Or another?
base is used to call the parent class' overridden functions
in your example it means "call the parent constructor as part of the child constructor"
do you have any specific examples why you need base?
turns out it needs a content.json of some description.
what could i quickly add to a content.json? something that inputs to the smapi log maybe?
it can't actually do anything but it has to be there...
https://github.com/Pathoschild/StardewMods/blob/stable/ContentPatcher/docs/author-guide.md#what-does-a-content-pack-look-like
but just make Changes an empty array
hmmm can i make it say something funny in the chat?
like "hello how are you?" or "stardrop quick start successfully enabled"
probably the second one.
something nice to put in the content.json without actually putting something that could break.
is it a bug or am I just stupid?
I can Load custom building paint masks and they are applied to the building but I can't use EditImage on them
that works only on vanilla paint masks for me
https://smapi.io/json/none/0aa2aaf1388b43bb9adfe9f2237685b2
the EditImage looks like the one in the corner and according to the patch summer, it is applied but obviously not
base.receiveLeftClick(x, y); << It is used for mouse click from what I understand.
i don't remember having issue to edit an existing mask in the past, did you double check you're looking at the right image? Can you provide the patch summary since you did it?
one sec, double checking that my vanilla masks still work
I’m not quite sure where to ask this buut, if I’m to play with someone that doesn’t have mods, can I still use mine? 😮
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
did you load into winter or did you sleep into winter
so you want to call the IClickableMenu.receiveLeftClick function in your patch on JojaCDMenu? that's unfortunately still a massive pain in the butt
https://github.com/janxious/BT-WeaponRealizer/blob/89defeb47e9d45f144dc9013d98f31f879ae76ba/NumberOfShotsEnabler.cs#L24 has sample code on how you'd achieve it
ngl, once you patch THAT MUCH of a menu it's easier to just replace it tbh
I'm not the one who wants to call the function in the method, it's simply in the original method, I have to replicate the entire original method in my method, and make my replacement, isn't that right?
yeah, as mentioned if you want to replicate that in a prefix/postfix you need to handroll some IL
one of harmony's blindspots unfortunately
Like atra said, if you're doing an entire skipping prefix just to insert a few calls into the base function it might be better to just implement a new class that inherits from IClickableMenu
and then in the code that would create a JojaCDMenu patch that to return your own menu instead
If I create a new class, copying all the code from the original, is it possible to use harmony to replace the original class with mine?
yes, per my last sentence
find where the game is returning a JojaCDMenu instance and harmony patch that part of the code
var original = typeof(JojaCDMenu);
var prefix = typeof(JojaCDMenu_Prefix);
harmony.Patch(original:original, prefix: new HarmonyMethod(prefix)); << Would it be possible to replace the class entirely?
Need to patch where JojaCDMenu gets created I think
JojaMart.viewJojaNote
that function is making a new JojaCDMenu
patch it so it's new YourCustomJojaCDMenu
this part
the actual vanilla world map im wanting to put a label for my graveyard
https://stardewvalleywiki.com/Modding:World_map
Looks like...
Either of those specifically for whichever one it is?
im wanting to know how to do it though ^^;
ive no idea what it looks like and i learn by seeing
Well, best I can do is tell you it'll be an EditData on Data/WorldMap following... the structure of that. 
Maybe a little JSON snippet for each of these would be a good idea for the wiki...
im trying something out now hopefully it works
Oh wait, do you already have the map area for the cemetary in place?
yes im wanting to add the label now
but idk how to add it to the base map
i just wanna label it so ppl know where my cemetery is
So the one you're missing is the hover text, right?
yeah and my npc icons are there either
but thats not a big deal
i guess i dont need a hover text but hmmm
You will need to use an EditData to define your WorldMap area so the tooltip knows where to show up, and so that the NPC location map knows where to put the character icons
i know i just dont know what that would look like, i learn by seeing things done and memorizing
cause like idk how to edit the vanilla data i can make custom ones tho
If you give me a little bit, I can send my code block for an example, but you will need to fiddle with the exact coordinates and dimensions for your own location
"MapAreas": [
{
"Id": "{{ModID}}_PasserbyCemetery",
"PixelArea": {
"X": 75,
"Y": 0,
"Width": 140,
"Height": 180
},
"ScrollText": "{{i18n:FC.PasserbyCemetery}}",
"ScrollTextZones": [
{
"Id": "{{ModID}}_PasserbyCemetary_HoverText",
"TileArea": {
"X": 0,
"Y": 0,
"Width": 0,
"Height": 0
},
"ScrollText": "THIS A CEMETARY."
}
],
I'm thinking it'll be like this. Not 100% sure what it wants for the tile area part, though.
With the power of having your mod here, I figured the best example would be splicing it right in there. 
I know what that looks like....Im talking about the editdata part i dont know how to set it up. do i append? do i....use just entries
That starts at line 17 of your WorldMap.json that I have on my end. You don't need a separate anything, just include it alongside the entry itself like that!
but that will apply to my custom cemetery world map not the vanilla
it even works with sve and east installd hell yes
This is so cool to see omg, like I always wanted this w Passerby and now it’s happening!!!
hehe im hoping to have this done for the next update
I have no clue what's going on, vanilla paint masks are applying the EditImage but are no longer updating, which I know was 100% working from my changelog:
fixed paint masks on Ginger Island (for Build on Ginger Island, Buildable Ginger Island)
i just hope it looks okay i was trying to do that perspective thing CA does with the desert
paint masks no longer reload on a running game? I have to close the game now to see any change
Hello! I'm in the process of creating an NPC mod for an upcoming anniversary gift for my partner! As recommended, I started off with downloading SMAPI--me and my partner typically play on CurseForge to load the mods, what should I do here?
You will want to install SMAPI
I mean... if you ever played with mods I'm pretty sure you still used SMAPI, since it's used for all modding, not just Nexus (which is recommended over CurseForge)
Whereever your game is located
If you bought the game on Steam, that would be the Steam path
Yeah! The game is on Steam, and it's ran from Curseforge with the mods, still opening the Steam game
So then, just use the steam path?
I'm looking at writing some automation mods that use SMAPI integrations. I've played around a bit with SDV modding a while back, but I'm still pretty new to it. I know that for some games I've modded it's a lot easier to mod the GOG version than the Steam version. Is that the case here as well?
Nope, it's the same difficulty/process for both, there's virtually no difference between them
that's good to know, I think I'm still going to buy and use the GoG version just because it's easier to uninstall a GoG game and delete the directory than for most steam titles.
But I may be bringing my biases from years of playing around with Jagged Alliance 2
Hello! Apologies for the bother--I'm sorry for the silly questions, I'm new to all this 😅 though! the manifest, assets, and content files--are they added manually.. or are they added in some other way? I already made the folder for the mod itself as given by the wiki example^
I already downloaded both Content Patcher and SMAPI as well
yes, you just make them manually, the rest of the guide should explain it
What file types are content and manifest?
you can make new files by right clicking inside the folder and clicking make a new text file, then rename it so it says content.json instead of content.txt
json as shown in the image
make sure you have view file extensions on!
Yup, looks good
I also need some clarification on this part here--probably another silly question! Dooo.. I just copy and paste the second formula and paste it into the blank.json file?
In the JojaMart class there is a method
protected override void resetLocalState()
{
communityDevelopmentTexture = Game1.temporaryContent.Load<Texture2D>("LooseSprites\JojaCDForm");
Morris = new NPC(null, Vector2.Zero, "JojaMart", 2, "Morris", datable: false, Game1.temporaryContent.Load<Texture2D>("Portraits\Morris"));
base.resetLocalState();
}
If I use the content patcher to replace LooseSprites\JojaCDForm
with my custom file, will it change in the game, or do I need to create my own form input?
yes it should
!
Blank.json quite literally means { } it helps create space for the necessary files, if you haven't already, I would unpack the game to see how files look as well
!unpack
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
Ahh I see! I think I just don't necessarily understand what they mean by [brackets] or how.. the files should look like exactly? This is what I have thus far.
Thank you!
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
I can see you're already using tia's guide which is a good start, I would also read content patcher docs
!cp
Content Patcher (https://www.nexusmods.com/stardewvalley/mods/1915) is a mod which loads content packs to change the game's images and data without replacing XNB files. If you want to make mods using Content Patcher, start at https://stardewvalleywiki.com/Modding:Content_Patcher.
Alright, thank you
Are you able to verify if this is correct thus far, though?
I can't tell because filenames can be anything
It's this part of tia's wiki!
In regards to putting actual text in these jsons, you can read through my template/github example for how each file actually looks in conjunction with one another
Are you able to send it over?
3rd bullet point of the npc command
Thank you! I'll look into it
Alrighty! I unlocked the content pack--was that the idea of the StardewXnbHack?
Yep now you can see how the game reads the files, like how data/characters looks to create a new npc
Just know that the "unpack" folder does nothing, it doesn't affect your game, you can just see it in english
Anddd... I believe that in turn should give me a better idea of tia's wiki I take it
Thank you!
I should look at the characters folder, yes?
Npcs have several different things that they pull from
What do you mean?
mm off the top of my head they pull from the characters folder -> dialogue/schedules, portraits folder, data folder -> characters/npcgifttastes/engagementdialogue/concessiontastes/moviesreactions/weddings
I also must apologize for the bothersome! I'm still trying to learn n' all!
Ahh sweet
Got you
That makes sense
depending on how in depth you wanna go with an npc, it will definitely teach you everything content patcher can do, whether you like it or not 
It's an anniversary gift, so i gotta gooo alllll the way!
In the content pather, I am changing the form file,
{
"LogName": "Load Objects images",
"Action": "Load",
"Target": "LooseSprites/JojaCDForm",
"FromFile": "Assets/JojaCDForm.{{language}}.png",
},
In the English game it worked normally, but in Portuguese it didn't work, do I need to put the language in the target?
The problem is also that English doesn't have the "en" next to the name of the original target file
Do you know if it's possible to check using When if the language is not English, or do I need to make the change for each language separately?
Hey I have a modding question, for changing item sell prices using SMAPI what language are you supposed to use?
Thank you for your time!
game code is c#
but it's also feasible to do this in content patcher
thx
Yes, it was on this website that I looked at the documentation, however, I was left wondering whether I need to do the English separately?
https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Content#Example_data_edit there is a direct example of sale prices
If you don't mind answering, if lets say I want to make varable item prices based on rng of planting but they still stack in the inventory at diffent prices, if possable would SMAPI be best for that?
you'd have to change target to whichever one you're replacing
put a first draft together at https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_Framework_Mods (minus the delegates stuff). all framework authors welcome to add to the page and correct any stupid mistakes I made
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.
quantified items are kind of a slippery slope iirc 
Is there any capability difference between them?
i mean, nothing is impossible with c#
but content patcher is in java, right?
it's newtonsoft json
with like, a dash of handholding, because content patcher will forgive you for trailing commas
(the trailing commas are fine bc of newtonsoft)
so both are C# at heart?
did we need to check CustomFields not null
Forever and always
Yay, time to learn a new language!
Just fyi, just because it appears like it can't be null doesn't mean it can't be
When you get deser involved
Yeah big skems
yep, I simply forgor
as a general rule, just because your model looks not-nullable doesn't mean some content modder won't try to load a CP action block there instead
lol
I can write about the delegate stuff, though it's like, very specialized 
(My general rule is I treat users as if they're incompetent and content modders as if they're deliberately pentesting, lol. It's not...all of them, it's even only a tiny minority, but still.)
ELI5: me, always
var buildingData = building.GetData();
if (buildingData?.CustomFields?.TryGetValue("MyModID_MyFancyKey", out string myFancyData) == true) {
// do stuff with the myFancyData field
}
valley girl code
yeah I considered that (and that's what I use in my own code lol) but I thought the current form is clearer
the fancy one liner you and bluebs helped me with i can give
if (building.GetData() is BuildingData data && (data.CustomFields?.TryGetValue("MyModID_Key", out string? myModData) ?? false))
Say, does anyone know the exact realtime that a pickaxe swing takes?
it's subtly not the same though, since with null propagation I don't have to go back and grab the field reference each time
also yes, I lost my account int he migration
say hi to my lazy second account
atravita v2
what migration?
remember back in the day when the modding wiki was on like, I don't know, some other site?
also, fun fact, you get IAssetName instances with GameContentHelper.ParseAssetName https://github.com/atravita-mods/StardewMods/blob/02971ccd5cf7a492b439de6f7625cb5036237500/EastScarp/AssetManager.cs#L39
Can somebody verify if this is correct?
So I have visual studio and can’t find any way to get any mod files open on it, is there something I have to do?
Are you following the wiki C# mod guide?
oh the wiki one
i thought you meant on discord or something
I'm following Tia's wiki tutorial! if that was question for me!
So, you're interested in creating a new character for Stardew? Good news: with version 1.6, creating a character is easier and allows for more flexibility than ever. However, NPCs are one of the more complicated things to create for Stardew, as they have a LOT of moving parts. This guide aims to provide a basic but thorough walkthrough for ea...
This is how my files are lookin' so far,
(blast from the past: #making-mods-general message )
you're missing a { before the "LogName" would also suggest something with a json verifier
!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.
!vsc
When creating content mods, it's useful to have a program that will check the validity of your json for you. We tend to recommend either VSCode https://code.visualstudio.com/download or notepad++ https://notepad-plus-plus.org/downloads/
you could go the hard route and constantly throw your code into the smapi verifier, but it definitely gets old fast
notepad++ requires the... sourceforge? is this reasonable? https://sourceforge.net/projects/nppjsonviewer/
well that's a rather nihilistic question 
yes
look for the joy in notepad++, not the reason
sourceforge is the site where old crusty open source programmers put things
I am new to all of this! I am slowly evaporating
Got you
curseforge is the weird site people sometimes upload mods to
(and apparently the api was acting screwy with curseforge and manifests)
I only use it since I use it as well for Minecraft
I'll switch to Nexus though
(I'm mostly joking, curseforge is a site people upload mods to.)
sourceforge != curseforge
then select the directory your mod is in
(btw the recommended 'mod manager' is stardrop: https://www.nexusmods.com/stardewvalley/mods/10455)
It only recognizes the assets folder
Not content, or manifest
that's cause those are files, not folders, the preview on the side should be showing your files
you don't have to make them all different folders
it will obviously look different because i'm on visual studio 2022
but [CP] is my main folder,
hrm i been calling it delegates
but what exactly is umbrella term for "functions you can call from content (because game's doing it already)"
This is all really complicated ahaha
Is there a chance somebody, at another time, hop in a call and guide me through the basics n' all for making this mod? No idea if that's okay to ask, but I hope it's not bothersome!
Lookin' into it, but I mean for somebody to visually help me and verify the work!
Seems I got the Manifest workin'!
delegates 
Non static methods basically have their 1st parameter be the class instance, so their signature would not match
@velvet narwhal: contemplate writing the "Full Guide on Creating Custom Locations" (16h ago)
does the full guide include wind simulation and simple harmonic motion? wondering if i shouldve waited for the guide(tm)
blueberry why dont u write the guide
plus the guide about putting your farmer in situations through farmerrenderer
i tried an art guide once but its hard to be an authority on everything when u dont know anything
like realistically would you trust a guide on anything from someone with ~2 years casual experience lol
I have this annoying problem in an event, I want my 2 characters to walk to the right for a short time, while the screen fades to black and I warp them away. But for some reason the Curator continues to walk to the right after warping. Had a similar issue with a different event, figured I'd just increase the pause which fixed it. But not here? 
move Curator 2 0 0 true/move farmer 2 0 0 true/pause 500/fade/viewport -1000 -1000/warp Curator 30 40/faceDirection Curator 0/warp farmer 33 40/faceDirection farmer 0
Full json: https://smapi.io/json/none/2c96d584b5b34420a66bd3360f3363be
Fixed it, just needed even more pause
its a hobbiest context so yea i would 
plus these guides r more about making stuff work at all, not about having opinions about what makes something good
No wind ™️
my guides are basically, "do it work off the shelf? yeah? good enough"
why is this happenign im so over with this
how do i get notepad++ to not do this?
it is a json file btw
true with all ones i open in notepad++ for SDV mods
are you loading the file?
tokens don't work on load
u need to quote "Price"
kk
there should be info about formatting errors ike this
on content yes
best to follow and fix them
isnt this right
yes no need to ping me
as i said, tokens don't work on load
either you load a blank file then edit it, or you put your mod id directly, without a token
i did put the raw id and it showed the same error
then provide a log with the error
did you load your custom maps O:
mood tbh
Do you need more math 👀
no please i dropped out of calc2
math is definitely spooky
i only need to understand matricies and sine, i am ignorant to all else
Math is beautiful
What about cosine
that's the one that's origin is like 1,0 right? pain /lh
Making videos is a huge pain in the ass
Text > video in my opinion
I’ve resolved to only ever do 1-take videos that are less than 10 min long
Plus I can’t copy paste from a video
I hate it when I want a tutorial and the only thing is a video
i can't stand my own voice and i'm not interested in editing out me typing something up as a reference, so i won't do it
But I do feel bad for the people for whom text is hard to learn from that there aren't any 1.6 videos
surprisingly no! but now that i'm just throwing wobbly dangly pendulums all over my maps i'm thinking i should probably just have an array of 4~5 resolved pendulum values for different resistance/weight values rather than calculating for every single sprite when most of them are pretty similar.
on the other hand, giving each one tiny changes in weight/resistance means wonderful tiny changes in how they swing and settle in the wind, which looks nice when there's like 4 lanterns or paper chains or rope tassles in a row
after all, what's 5 more ridiculous trig calculations in the grand scheme of things
What about a function that you plug in constants? Or is it already that
i mean if you did the array bit can't you just also multiply by* random to the strength
atm it's a data file where each sprite has a resistance value and weight value, where resistance scales the wind force down, and weight scales the gravity force up
random probably wouldn't be good since i'm giving things fairly realistic values to make them blow around all nice
@ elizabeth
tiny changes
Hi, I'm editing the community center bundles, and I wanted to make the bus not be for money, does anyone know which of the methods of the class that is in StardewValley.Locations is the CommunityCenter class, I think that's where it works, right? I've been reading it, but I didn't really understand where the bus bundle differs from the other bundles, since the others are items and the bus is money, I would like to put items in it
Some time ago I had tried to edit the Bundles.json file even using the content patcher, but it didn't work to make the Bundle Vault the same as the others, the game bugged.
I was reading and I think it might be in the last method of the class, but I don't know if I would have to change it to another one, the method is this:
Videos are easier for me. I had to gulp down so much coffee to read the wikis cause I can't pay attention sometimes. Have to cram it in my noggin.
If I didn't like modding I wouldn't spend all the time reading I guess
Making a farm was a bit easier than I thought except for the greenhouse glitch I would never know how to fix on the wiki since no info
Mobile discord isn’t showing me 😭
The bundles are more fragile than pretty much any other part of the code. It’s possible to edit via CP but screwing up the bundles screws up the whole save
I don’t personally know where the methods are for the bus but I get the impression it’s likely to be hardcoded
The method I sent called getJunimoNoteTileFrames does a check, if (area != 5)
I think it's right here, the problem now is that map.RequireLayer is not being recognized by my Visual studio, I'm trying to figure out how to do this
I found it, it's StardewValley.Extensions
Now you will test to see if it works
Oh gosh I'm looking through the CP documentation and it really does do so many things all on its own. I love this community
are you sure you can't?
my coworker says macs have that magic
I don't know what you're doing but that's map tiles
like, editing the map to show different things
may I suggest JunimoNoteMenu.setUpBundleSpecificPage
You could copy and paste from an ASR transcription. Which would be about as good as copying and pasting from a ChatGPT summary of the video, probably.
He said you can copy of text in a video, it's ocr, and it's surprisingly not bad
I suspect you would rarely do it
You’re actually right that macOS has a lot of OCR stuff these days
But idk about during videos
Like i definitely accidentally copy paste text out of images a lot
@brittle pasture i put in stuff about delegates
possibly put too many headings 
im also unsure if stuff about making custom classes that go in content fields as string is worth mentioning
that is like, extremely niche and not really a thing u would do for general usage framework
machine output delegate fell under this too so i didnt write anything about that
Which StardewValley pack has this class?
I'm hoping someone can help me. I'm trying to do an add on pack for a mod and trying to set the condition to only spawn in the items after a certain event. I know using:
"CPConditions": {
"FarmCave": "Bats"
},
will set it correctly, but I want it to be compatible with bats and mushrooms cave as well. Is it as simple as:
**
"CPConditions": {
"FarmCave": "Bats",
"FarmCave": "Mushrooms"
},**
is this FTM
yes I'm using Farm Type Manager
Things will be allowed to spawn if all of the provided conditions are true at the start of the day.
bats and mushrooms are exclusive so u cant do that
try HasSeenEvent for demetrius event?
personally would not be bothered if cave was spawning stuff before bats/mushroom, 25k is very early
@next plaza: look into spacecore animations not working in other languages and the 0-schedule fix breaking marriage schedules (24h ago)
yeah not adding the condition in makes it super cheaty in early game do you think it might be possible if I use:
"When:"(
"FarmCave": "Mushrooms",
"FarmCave": "Bats"
}
No I think the condition is AND
You would need a cave that's mushrooms AND bats which is only possible with mod
Instead consider checking demetrius' cave event
trying to code a super basic CP mod to just add one fish and ive gotten quite far and the fish is catchable and sellable... but it doesnt do the fishing minigame? just gives it to you like trash or algae or whatever?
"FarmCave": "Mushroom, Bats"
works as an OR in a cp condition
anyone know what im doing wrong? is it the springobjects?
Did you give it the right Type and Category?
ping me if anyone knows why my custom fish is skipping the minigame (no i havent got something that does that) im going to sleep but if anyone has any info then please contact
i assume so
it can be caught with a rod
and professions work on its sell price
there's no springobjects/cowphotowinter in the game, where did you get that from? and what are you trying to do with it?
!json share you content I guess
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.
Did you give it an entry in data/fish
"Type": "Fish",
"Category": -4
{
"Action": "EditData",
"Target": "Data/Fish",
"Entries": {
"FishTest_Greenfish": "Green Fish/30/dart/10/50/600 200/spring summer fall/both/681 .35/2/.3/.2/0"
}
},
Matching data/objects edit looks like?
{
"Action": "EditData",
"Target": "Data/Objects",
"Entries": {
"FishTest_GreenFish": {
"Name": "FishTest_GreenFish",
"DisplayName": "Green Fish",
"Description": "If you can see this, that's a good sign.",
"Type": "Fish",
"Category": -4,
"Price": 1200,
"Texture": "Mods/FishTest/Objects/Objects",
"ContextTags": [ "color_green", "fish_river", "season_fall", "season_spring", "season_summer" ]
}
}
},
my bad im just trying to replace the cow photo from the haley cutscean.. i used xnb2cp as a guide
did you unpack the files to see exactly where it is?
"Action": "EditData",
"Target": "Data/Fish",
"Entries": {
"FishTest_Greenfish": "FishTest_Greenfish/30/dart/10/50/600 200/spring summer fall/both/681 .35/2/.3/.2/0"
}
},
why are we replacing the fish's name with the id
"MNF.MoreNewFish_ghost_eel": "Ghost Eel/60/smooth/8/40/2000 2600/fall/both/682 .2/1/.20/.15/0",
^ example from MNF
What does the object data look like for that fish?
For the Ghost Eel
oh give me 2 sec
Replacing with the internal name actually
"MNF.MoreNewFish_ghost_eel":{
"Name": "MNF.MoreNewFish_ghost_eel",
"DisplayName": "{{i18n:ghost_eel.name}}",
"Description": "{{i18n:ghost_eel.description}}",
"Type": "Fish",
"Category": -4,
"Price": 100,
"Texture": "Mods\MNF.MoreNewFish\Objects\Objects",
"SpriteIndex": "14",
"Edibility": 14,
"ContextTags": ["color_sand","fish_ocean",],
Display name should not be used anywhere
Kind of, it's using i18n so it wouldn't match in a different language
Vanilla uses the plain names for the internal name rather than the ID
I am kind of confused about the Ghost Eel working there
yeah so whats up with using Ghost Eel instead of MNF.MoreNewFish_ghost_eel
ok fantastic
I suspect it works until it doesn't
well ill slap in the internal name and see if it works
Probably in some nightmarish multiplayer scenario but yeah
I guess I don't actually use that mod so I have no idea if it actually works lol
MNF did have some odd persistent issues pre-1.6 so that might be part of it
Notably the “everything is weeds” bug
weeds honey
MNF is old old old, from before JA
fond memories of my first mod giving me junk like Weeds Ring
I would maybe pick a newer mod to reference if possible
????????
well it didnt work but that may or may not be because i forgot to update the folder in my mods folder lmao
Wait why did they hardcode indexes then???
I always assumed it was because it predated JA
CP didn't have mod-added tokens originally
Just because a tool is available doesn't mean someone will use it :P
They definitely at least used to hardcode indexes
Maybe that's why? (No fetching the dynamic JA ID )
I suspect after 1.6 they don’t anymore but idk
After adding fish data?
Well, the thing is, JA was released a year and a half after the game was released. CP didn't even exist at the time
after changing to this
So maybe it was an XNB mod???
Because the game definitely needs fish data to define how hard the mini game is
Just to be sure, you definitely are getting the minigame otherwise?
100%
got really excited and then realised it was the minigame for a smallmouth bass
Try a patch summary?
Maybe the fish data patch isn’t working
Or a patch export on fish data
youre going to have to walk me through that sorry
Since I’m a beginner i scrapped the cow photo out the code… I’m going to see if it works now
!patchsummary
Can you do these steps to provide more info?
- Load your save and view the content that should be patched.
- Type
patch summarydirectly into the SMAPI window and press enter. - Upload your SMAPI log to https://smapi.io/log (see instructions on that page).
- Post the log link here.
!patchexport
A patch export makes a copy of specific stuff in your content folder so you can see what changes have been applied.
- Load up a save (with Content Patcher installed)
- Type
patch export <FILEPATHOFTHING>in the SMAPI console and hit return - Look in your
patch exportfolder in the game folder for the relevant json file or image - If it's a json file, you can share it via smapi.io/json. If it's an image you should just be able to look at it.
Well they are fully CP now
But I haven't used the mod recently due to you know
this?
Hmmm
your time is formatted wrong: you want 600 2600 instead of 600 200, and you're also missing a true or false on the end
well the other fish in the file all say 2600 hahah
yeah i didnt have that until just now
!unpack you should unpack the contents so you can see the base data
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
yeah i changed it to 600 2600 and added the false
and its still instant
idk what the problem is
i might call it for today since its after 1am
if anyone has any other suggestions please please ping
also bit of a backtrack but the vanilla fish have internal things that don't match the first part (except goby)
so what's up with MNF doing the same thing
I love it when the decompile looks like this
anyways, so far I've not figured it out, it looks fine to me
never mind I see it
FishTest_GreenFish
capitalization matters
oh my god
of course I would mess that up
literally of course
ok
thank you I'll fix that tomorrow
(meanwhile the zeroth index of Data/Fish seems never used.)
I can't believe I just wasted 90 minutes on two capital Fs
That doesn't actually seem that outlandish when it comes to programming
Pathos has made so much stuff case-insensitive, it's spoiling
what do the young ones say? press f in chat?
I dunno if that's a "young'un" saying really, like millenial age at this point lol

