#making-mods-general
1 messages · Page 47 of 1
Thank you both 😭
no, cause I just searched i18n because I didn't know if the rules were different
So that took me to the translations page
oh i see 🙂
when you want to do randomisation there's several ways
- use the chance thing explained on dialogue page (named c something, i don't remember if it's #c or c# or else), see abi gift dialogue for amethyst for ex
- use a random token in pair with the translation key (ex : mykey(your randomtoken here) and have mykeyrandom1 mykeyrandom2 and so on in the translation file
- have the dialogue keys edited randomly by a cp patch
Ohhh interesting
you may find one approach easier than others, so it depends of what you prefer
I am wondering if I am maybe looking at the wrong thing then because for example, this section I am looking at seems to pull from one of the options: "This story is about a princess fighting a lich., This book has a bunch of short stories.#$b#Most of them are fantasy., I'm reading the third book in the Adventure Boy series., This book is actually a magic tomb.",
Or maybe I am completely misreading
Oh no this is one line
i don't know, not enough context
OH I see
This may still not be enough context, but this section has "spring101.1", spring101.2, spring101.3, spring101.4. I need to crossreference but it seems like the game then just pulls one of the lines to use, maybe
I think also I might just look at some other mods as well and piece it together that way
hu yeah
some mods are doing stuff in a specific way
maybe they use randomisation and , is their separator.
you'll find a LOT of different stuff
(oh yeah some people will also use directly the random separator in the dialogue)
so if you feel stumped by a mod, remember it may be advanced mod making and try to see if a simple mod do that this way too
Haven't modded in a bit so i'm a little rusty. Can someone explain why this ```{
"Action": "EditImage",
"Target": "Mods\FlashShifter.StardewValleyExpandedCP\SVE_Fruit_Trees",
"FromFile": "assets/SVE_Fruit_Trees.png"
},
I have the image in the assets folder, i can't see what i've done wrong
no idea if the path is right without more context
a log can help see if there's an error
there are no smapi errors, just no changes showing in game. what's confusing me is i have another similar line and that's changing in game
you want to retexture the SVE fruit tree?
yep!
make sure you have the right target
Also make sure your mod is loading after SVE
how can i do that?
Easiest way is probably to set a false dependency in your mod's manifest
Your target is wrong
Double check the target SVE uses
if you have trouble finding texture names in the code, lookup anything with datamining fields shpws it to you ingame
but you cant just copy the png name from the files
thanks both, lookup anything is awesome
So I’ve managed to get the fruit trees changed now thanks to that. However, I don’t see where I’m going wrong with this. It’s not working when I put the target as zspring_SVE_Tilesheet2 😦
I’m trying to retexture an out of bounds tree
I assume the tree is from that tilesheet so I’m confused
Hey all just wondering if anyone could give me a little direction on how to make a mod that dumps items into chests beside a workbench when accessing it? Ive found the Workbench.checkForAction Method which handles checking the chests around it but not really sure how to handle moving items from the players inventory to the chests
I don't think SVE loads that tilesheet into the contents, it's just using it locally as far as I can tell from a cursory search
Is there a way of retexturing this tree?
You can do an EditMap and patch over the tree with your own tilesheet
Or the old recolor method of just manually replacing the tilesheet in SVE's files
Awesome, thanks!
Is that tilesheet from a different mod? I'm not seeng it in SVE's files at all
No, SVE got an update very recently and it’s from there
Oh, guess I should update then lol
Lemme do that and get back to you if I see anything different
I appreciate it!
Target should be Maps/spring_SVE_Tilesheet2
It says zspring in Lookup Anything because in the map info it has to have a z in front of it for vanilla maps in order to avoid re-organizing the tilesheet order
You'll need to check in the actual code itself to see what the real Target is
(Un)fortunately, every tilesheet Load seems to be in one unbroken line
So that's... fun
The best part is finding little tiny bugs that weren't there during sve beta in your mod but now suddenly is there
I'm tempted to turn word wrap off to see how insanely long this line is
It's, scarily long
That is ridiculous lmao
So this? { "Action": "EditImage", "Target": "Mods/FlashShifter.StardewValleyExpandedCP/Maps/spring_SVE_Tilesheet2", "FromFile": "assets/spring_SVE_Tilesheet2.png", },
No should just be Maps/spring_SVE_Tilesheet2
Whenever you load an asset to Maps you have to start it with Maps/, and Flash usually doesn't use either a manual or automatic ModId
Compatibility is for the little guy after all
looks good
You are a lifesaver Rokugin
It is freakin' cute though
It's working now!
*very glad i turned off comments considering everyone's getting, "DOES THIS WORK WITH NEW SVE UPDATE?"
tldr; yes, my expansion works with the new beta, no i will not give a flying raccoon about the duplicate heart event
Just another reason to avoid NPC or world mods
trust me, i was tempted to gut my expansion and go, "i'm done"
i will have one, very time map patch that holds a tunnel with a minecart for mine since i'm like "yeah this is a big boy expansion, it requires a bit more finesse"
Still having issues finding how to transfer items
does automate have open source
Yep
it's at the bottom of the nexus page
i just didn't have nexus open at the moment 
I've got all this fireplace crap working in 1.6.9 but I'm not sure I want to try to figure out how to deal with it in 1.6.8
Don't worry about it!
Just do all thr work, promise yourself you'll release when X version comes out, then never do it!
if i remember correctly, i had to manually type in 'workbench' though 
nexus is horrible, limited speeds, ads, shady admins in the past, idk why people continue to use it...
It's like the opposite issue lol, I have the future update version ready but not the current version
The other big alternative is curse which is worse
Or just use github...
average modder will not know how to install mods from github
Yeah, good luck getting the entire community to deal with that garbage lmao
ah yeah bc microsoft is a wonderful company
microsoft are terrible true but 0 ads and no limits on anything
"Okay after 1.6.4 I'll release updates" I told myself, lol
that will kneecap the computer illiterate if it were all on github
github has limits
To what degree?
Anyways there isn't a point in this conversation
github definitely has limits, they just aren't willing to tell you what they are or when you'll hit them until you do
there are repo size limits and search limits
yea fair this conversation isnt for here
THanks for the automate link though 😄 gonna dig through and see what i can come up with
re: GitHub, stealing this screenshot from 6480 I hope he doesn't mind
skill issue * thats joke
Yeah, because gatekeeping is definitely what the community needs
it's more a 'mod authors can't possibly be bothered to respond to 100x of these comments' issue
but anyway I'm derailing this channel further
Forced signups to a website seems like gatekeeping to me
Also, that's such a rude issue name for their problem lmao
i don't think this is 7! + 6! + 5! + 4!^2 + 4!'s screenshot in the first place, i've seen it elsewhere i think?
NOT THE MATH
Brb finding a calculator to put that math into
symbolab or desmos
Or google lmao
i checked it
anyway, i've been staring at atra's fertilizers with grabby hands
0x1950 recently posted that in a different server
You may grab my fertilizers
All my mods are up for grabs afaik
wdym afaik, are there secret mods you don't know about
I assumed atra isn't keeping track of which ones have been taken over by others lol
As far as I Kare
I guess it’s possible someone picked up some of them—I do actually think a couple have been
Oops
they went into a fugue state, whipped up a mod, and promptly woke up
Let's see. 36^2 + 72^2 makes great mods
I seem to vaguely recall one of the “make X easier/saner ones” getting redone by someone
i don't think the core of more fertilizers got pushed for 1.6, i'm more interested in how atra deconstructed the hardcode of it
Like maybe trash consume bait or easier cave puzzle
A ficking 200 line transpiler, that's fucking how
i should just study the number 6480 at this point
oh no that's out of my paygrade
That's like 10 instructions /j
AWESOME
wait where's the quote button
Please use 💬 reactions to add quotes. Or .quote add "text" - userid:### nick
How long until 6480 buckles under the bullying and changes their name
never
Never
nooo it's not bullying. it's love. it's an awesome number
Yes I have feelings about numbers, no you shouldn’t be surprised about this 😛
∴ The divisor of 6480 are as follows: ⇒ 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, 16, 18, 20, 24, 27, 30, 36, 40, 45, 48, 54, 60, 72, 80, 81, 90, 108, 120, 135, 144, 162, 180, 216, 240, 270, 324, 360, 405, 432, 540, 648, 720, 810, 1080, 1296, 1620, 2160, 3240 & 6480
the prime factors are wonderful. 2^4 * 3^4 * 5^1
i love these commit comments
108 !!
atra and Casey have amazing commit messages
?
woah
Okay so you guys went from one off-topic convo to an entirely different off-topic convo
is what i'm seeing
sorry 
currently trying to find a source for and research further a belief system my anthro teacher brought up with 108^108 steps of reincarnation. i thought the reincarnation cycle was usually known to be without beginning so this was interesting to me. I still don't know the specifics of the belief system, but i have an email im waiting for a response to 👍
108 is also generally an important number in certain belief systems, makes sense that one of them would implement that into the reincarnation system i just don't know what system does it 😭
oh the description, are you still dealing with nexus markdown bbc?
wdym I love writing descriptions
someone made a nexus markdown thing right
This is why you draft them in markdown first
And suffer because VS markdown is just. Slightly. Not. Github markdown
honestly, i open up a text file in vs22 and manually write bbc because it brings me back to the old man days
well ill just yoink atra's md to bbcode thing prob
but the act of writing is hard too 
all the different markdowns out there is the 14 competing standards xkcd
how can i know what ppl dont know and desire to know
is there a markdown standard with sane table formatting
New quote added by atravita as #6238 (https://discordapp.com/channels/137344473976799233/156109690059751424/1180214713066455101)
<insert standards xkcd here>
markdown is nice but it is missing a few things for various domains, and everybody has their own ideas about what is missing and/or how to address it
clearly we should all use latex
(i'm allergic)
lmao
atra did you just add a quote from over a year ago
i simply use nexus's "wysiwyg" editor and cry softly. from time to time i switch to the bbcode view and fix all the fucked mistakes it made
jail
but ichor the beautiful maffs
Clearly
New quote added by atravita as #6239 (https://discordapp.com/channels/137344473976799233/156109690059751424/1290460797574582284)
listen, i love TeX's output and i love programming my documents, but TeX is an insane, unknowable monstrosity and i hate using it
write with the assumption the regular user will read none of it anyway. free your mind
i feel the need to explain what "machine rules" are
(i use LaTeX like every chance i get... including for just normal essays. i enjoy monstrocities)
become chaos, eyedroppertool the nexus color background for secret messages--but if i ever need an actual website i'mma just pay button
So did i
For years
I had a MS word lookalike template
what i actually use for personal im-only-going-to-see-it writeups is i use obsidian + a latex support extension. i get to use markdown (love it) and basic math latex (love it) together and it's very fast to do
I should work on my website more...
There's still so much to document though...
.choose work on that, don't, don't, don't
Choose result: don't
Choose result: psych hw
FUCK
(If my docs were almost done I would do them... But I still need to do ~7 pages just for the Content Patcher stuff, and it's not as simple as just copying the current docs since I'm adding examples for everything)
What's yall's reccomendation for sluggifying text to save as a file name? Im trying to save data using the players name but that can include symbols that files don't like to use
oh you can use savedata instead of file
depends on what you are hoping to record though 
trying to save a Dictionary is all, pretty simple data types
so save data can work for that, but you can only use it as the host
yeah thats what I was thinking
Are you doing this on farmhands?
Yep!
if you want to give data to farmhand u gotta do some messaging
Gonna be honest, I've done some pretty BS stuff for that before
Thats why I thought the hard json file was a good play
as for sluggifying text if u just base64 it that should be ok 
One of my mods, for example, simply does a deterministic hash code of the farmer name
or use the player's id
would saving it in the players mod data not suffice
Farm name
Everyone loves a good old deterministic hash code
Base_64 should work
Thats a good idea, thanks for the input / help!
if you're gonna convert things to a hash code anyway why not just use the players unique id
Farm name isnt needed for what Im working on, its a preference keeping utility so if people do use multiple farms with the same name it wouldnt be a big deal
Yeah base64 would have been wiser
It was farm name. Not player name
So I didn't go with the random seed because players can set that
what if someone makes a farm with the same name
I think it actually hashed both the farm name and unique ID togethet
Which I assumed had to be unique but I'm probably wrong on that
I don't remember how the unique id is calculated tbh. might use milliseconds since game launched as a seed or something
i knew at one point
Wouldnt that mean it changes every time you play?
it's only made on character creation
Ah
Players can also set it
their unique id?
Yup
like Game1.player.UniqueMultiplayerId?
oh the seeded random thing?
that's what I've been meaning, separate from farm seed
trying to unpack some xnb files with xnbcli to get the pngs, but when I try opening the exe it immediately shuts
How would that work for non multiplayer games?
i think it gets set regardless
can we use .net8 or just 6?
you have to use 6
you can install 8, but you have to target 6 with your csproj
Gotcha thanks
use StardewXnbHack instead
and make sure to download version 1.1.0
not 1.1.1 (that's for the beta)
ty
just unzip into SDV directory and execute it in there
(just read through your post a second time, missed the part you were trying to unpack the exe. you can't - that would be decompiling the code, which is a separate thing)
running StardewXnbHack should unpack all the PNGs (and other assets) for you to view
oh PFM doesnt load in 1.6.9
C# version can be latest?
You have to target 6 but you can set a later language to use
Sweet im just using the latest then 😄
need all the lil nice additions
Lord pathos is typing 🫨
Monthly mod stats time!
New: source code dump
In [last month's update](#making-mods-general message), I mentioned the mod dump containing the code & releases for C# mods on the mod compatibility list is no longer maintained. Downloading all open-source mods' code is still very useful for mod authors though.
So, now you can download the source code for every open-source mod again! The mod dump has been replaced with a script you can run locally to fetch the repos. This is easier to maintain and will be updated monthly like before.
(The full dump at the bottom of this post is still maintained.)
Stardew Valley 1.6.9 release date
Stardew Valley 1.6.9 will release on November 4th! See the release notes so far and the mod author migration guide.
Stats
Mod compatibility
73.3% of SMAPI (C#) mods are compatible or have a workaround, up from 72.6% last month.
Unique mods by type
We have 439 more mods this month, compared to last month's 363. It'll take a few more months to see what it settles on after the 1.6 release, but that's about double the 2023 baseline.
That includes:
- +254 Content Patcher;
- +76 Alternative Textures;
- +44 SMAPI;
- +36 Fashion Sense;
- +9 Farm Type Manager;
- +3 Producer Mod Framework;
- +2 Custom Furniture;
- +1 Shop Tile Framework;
- +0 Better Artisan Good Icons;
- +0 Custom Music;
- +0 Mail Framework Mod;
- +0 XNB;
- -1 Dynamic Game Assets;
- -1 TMXL Map Toolkit;
- -2 Json Assets;
- and +18 for frameworks with <100 content packs.
Content Patcher packs
We have 9,341 Content Patcher packs.
The top six Format versions are:
- 2.0 (3,078 ↗ 3,183) for Stardew Valley 1.6;
- 1.19 (575 ↗ 580) for Stardew Valley 1.4;
- 1.3 (467 ↗ 474) in old unofficial guides;
- 1.28 (393 ↗ 388), latest version for a while last year;
- 1.29 (398 ↗ 401) for Stardew Valley 1.5;
- 1.23 (360 ↗ 361) for mysterious reasons.
Open source
- We have 2,957 tracked C# mods, of which
- 1,861 mods (63%) have a source code repo, with
- 1,051 (56%) in a multi-mod repo and 810 (44%) in a single-mod repo.
Web costs
And finally, web hosting costs for the SMAPI.io site, update-check server, and API dropped from US$189/month to $121/month, mainly due to server scaling returning to normal levels after the 1.6 spike. (The graph is always a bit behind due to billing cycles.)
See also
- [Stats for August 2024](#making-mods-general message).
- Raw mod dump (55GB download) and scripts to analyze it.
- Download all open-source mod repos
And that's it for this month!
"1.23 (360 ↗ 361) for mysterious reasons." what
+2 Custom Furniture;
+1 Shop Tile Framework;
whom'st
who made a new Content Patcher 1.23 mod
whodunit
do we haev 1.23 on some guide's examples
maybe they just copied without changing and it was some simple retex
todo list - find someone who will make a mod per old CP version
(There's also one new Content Patcher 1.0 content pack. I guess someone doesn't like... any of the features.)
start at 1.0, go to...oh
oh i didnt realise 1.6.9 was confirmed to be nov 4th
1.0???
1.0 doesn't even support tokens.
Pathos, while you're here. Why is this so strict? https://github.com/Pathoschild/SMAPI/blob/608c8fa34497aa35e9bf37fe71ab5c19e8fd3579/src/SMAPI.Toolkit/Utilities/PathUtilities.cs#L186
1.23 for mysterious reasons my beloved
It's intended to generate a slug that works in every possible case (URLs, file paths, file names, string IDs, delimited fields, etc). It should probably allow non-Latin characters though.
Ok so i can't find much useful in Automate to do with moving things from the players inventory to chests :/ maybe im just blind though
var t = "a test";
(t.IndexOfAny(Path.GetInvalidFileNameChars()) != -1).Dump();
maybe?
There's also delimited strings and such, which means no spaces for example.
Automate doesn't handle moving items from the player's inventory, but you can see how it's moving items from one inventory to another
Ahh cheers
(it came to mind because, like, literally three years ago I tried to put the farm name into something, assumed it would be fine because that's previously validated to be filesystem safe, then got a surprise when Chinese players were like what)
Automate is very abstracted, since it has a lot of optimizations and supports scenarios that most mods won't need. I'm not sure I'd recommend it for learning how to do things in most mods, there are probably simpler examples.
Gf and i are using monster musk in dangerous mines on splitscreen and spend heaps of time trying to inventory dump each day :/ sotrying to cook up a dump to chests sort of thing
there's that like. that one mod....convenient chests? that automatically puts stuff in inventories.
that said I'm not sure who does the mutex stuff right
doesn't better chests also have a "dump to specific chests" feature?
(Sounds like that mod doesn't do the mutex stuff right then.)
I cannot think of a single example I know of that does the mutexes right and isn't abstracted and hard to parse
I assume Khloe does her mutexes right
hey, what if we look into that mod dump repo
(I have to fix stupid lights bs in AtraCore to build and I cannot. Be. Arsed.)
Pathos whyyyyy is Ring.lightSourceId protected....
You don't want it to feel safe?
lol
(I'll mark it public in the next patch.)
once i am done with this current mod i want to look into identifiable combined rings 
(you don't have to! But thank you!)
i vote for not doing that and writing my mods for me instead bc dynamic tokens are bodying me right now
r there any concerns with that mod in 1.6?
90% I did most of that port already
again, I'm blocked mostly because I KEEP ON NEEDING TO FIX SHIT IN ATRACORE
let atracore (and other personcore mods) go. bring back mods that have one job
let atracore go. bring back atra doing random ass python metaprogramming for shits and giggles
how many mods do u want to explode spacecore into 
personally ive only used spacecore save type register so far
ichor just wants to see the numbers in modded-farmers skyrocket
Anyone use any of the new 1.6.9 quest stuff? I need an example because apparently I'm too dumb to understand what you're supposed to do with it now
Which particular quest stuff do you mean?
The replacement for farmer.checkForQuestComplete in this case
#making-mods-general message for cjb cheats
need to see what particular quest the previous check was for
See Quest event revamp in the mod author migration guide; feel free to ask if it's still unclear.
#making-mods-general message better crafting
(Note that checkForEventComplete told the quest to mark itself complete if needed based on the values you pass in; if you just want to check if it's complete, there's a field for that.)
Awesome thanks, I'll check all these out 
I am so happy, looking at the release notes, the only change I have to make to my in-progress Zelda NPC mod is adding work portraits for Shane and Sam.
Phew
Yeah, I think CP is mostly unscathed, unless you've got a dependency that's not updated
My biggest concern at this point will be if I'm somehow using one of the unused assets by mistake and need to replace them
(if someone has a list of which assets are being removed, that'd be a big help at some point for the migration page)
it's the scaled up ones that got removed
These are the assets removed in 1.6.9:
so that's like;
Maps:
WoodBuildings.png, FarmhouseTiles.png, GreenHouseInterior.png, squints
LooseSprites:
winter_boatJourneyMap.png(?)
Robin finally gets a break
Poor lady
Out there
Hammering away at 1:50 AM
Somehow not passing out
She's been building Stardew Valley for eight years, finally she's putting her hammer down.
I forget does robin also work on her birthday?
imagine trying to get some sleep while she keeps banging on your walls with her hammer at 2 am
I dont have to imagine we have midnight road work here
Yes
I once went outside to take a video of THREE AM ROADWORK in a fully residential area surrounded by apartment buildings because I couldn’t believe it was happening and I obviously couldn’t sleep either
My best guess is that they were behind schedule and decided to violate noise ordinances to try to catch up
If only irl road work only takes 3 days of bonking with a hammer
Over here thinking what tool to mod sprites with.
!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.
just to make sure, when these get removed, it won't affect any custom maps or buildings, right? or does any map that uses stuff like TownIndoors.png going to be needed to be updated to reflect that TownIndoors.png no longer exists?
Also, I looked at the release notes in more detail and I have questions: Fixed being able to steal another player's roommate. HOW?
LOL
Krobus is weak and will move house whenever asked
Krobus just wants to be friends with everyone :<
mods that rely on them will most likely break. they are being culled because vanilla includes but does not use them
TownIndoors isn't townInteriors.png
ah, so if a mod was made from 1.6.8 data and 1.6.8 tilesheets, they should remain good to go?
Any custom map that uses those particular sheets (which were mostly older and less detailed anyway, so less likely to be used.) will need to create their own version of the sheet and load it themselves.
Or move away from using those sheets.
good to know, thank you. I feel much better now than I did five minutes ago, wondering if I would need to redo everything, haha
if a mod references those specific tilesheets they are not safe once 1.6.9 drops
if you've referenced vanilla maps you're good to go, as long as you didn't embed those ones as an additional
I think the only ones I embedded were the waterfalls and spring_outdoorsTileSheet2, because they had animations I needed for my farm map
which, neither of those are on the list of to-be-yeeted
i dont think it matters whether you embedded them or not? or am i misunderstanding what someone is saying
embedding should be automatic for avoiding climbing issues, i meant like, if you're adding a tilesheet outside of what vanilla already has
I am 100% guilty of pulling in tilesets from other vanilla maps to use in my map edits (island mostly), but none of the ones I pulled are on the chopping block. 😄
right. so just because you're using a 1.6.8 tilesheet and 1.6.8 data does not mean you are good to go, if the 1.6.8 tilesheet you are using is, say, Maps/TownIndoors. it sounded like sekundes thought the opposite
(None of these tilesheets were referenced by any vanilla maps; so if you copied vanilla maps, you're fine. You'd need to manually add a reference to these unused tilesheets to be affected.)
ah, i misread data 
if you have a very very strangely sized tilesheet that don't Look Quite Right ™️ i'd still double check
these are the funky ones that look like they're in weird colors/non-stardew art style almost
i just wanted to make sure thats not something Sekundes did! to make sure they didnt think it was only a problem if they specifically embedded them vs used a .tsx or somethin
my maps are using townInterior, not TownIndoors, so that should be okay then. every tilesheet I used came from 1.6.8
the ones that pretty clearly look like they were the first draft but left in because why not
(curse those similar names that had me thinking I was using the wrong one)
Yeah, I always have to flip through my unpacked Maps folder to be sure I'm getting the right one
I assume this is part of why they're getting the axe
because they mostly serve to sow confusion
all of the ones being removed are also in 1.6.8 (thats why they still need to be removed in 1.6.9) which is why i just wanted to make sure 
I also wanted to make sure, lol. so that that way, I could remove the offending sheets and re-upload the files so that they still work in November. but it looks like I'm safe, for now, which is a relief
yknow i would re-un-pack my 168 but i think i'mma just see if that one tilesheet i said earlier got the axe
Which one was that? Pathos posted an image of all the ones removed so far #making-mods-general message
the... FarmhouseTiles or something
Pretty sure the kitchen stuff is used from there
i'm unpacking 169-- does it?
It's definitely still in 1.6.9 and I'm checking FarmHouse1 and it's still referencing that sheet

What's that one?
Maps/FarmhouseTiles.png
Oh I see
There are two farmhouse tiles sheets, FarmHouseTiles and farmhouse_tiles, I think.
unless i'm crazy and something got mixed into there, but i'm usually meticulous about it
There's one named FarmhouseTiles and one named farmhouse_tiles lol
farmhouse_tiles SHOULD be the one being used
It is yeah
got an old outdated one for you: Maps/FarmhouseTiles.png 
cursed
i wish the fridge door in cursor could get moved to farmhouse tiled
Removed in the upcoming 1.6.9 build 24275. Thanks for reporting it!
Cursed
Time to grab myself copies of all those tilesheets
it occurs to me
that with enough regex and pain
you can just...figure out which tilesheets are unused
oh hm
the contents dir hasnt been updated since 1.6.6
does that mean there's been 0 content changes in .7 and .8
what do you need the regex for
just open all the .tmx files in a text editor and Ctrl F for the names of the tilesheets
regex for grep ig
True, fixed all my custom locations doing that when I swapped over to modid
i thought you could just put a normal string into grep
did you tick the beta branch
ls *.png | grep -vE "summer|winter|fall" | sed 's/\..*$//' | sort | uniq | xargs -I {} grep {} -L *.tmx
this is what I'm at so far
i think ive used grep all of one time so i just assumed you could write a script to loop over all the .png file names and output how many had 0 occurences
so iunno
but now I need logic so
yea im aware that 1.6.9 changed content, more wondering about 1.6.7 and 1.6.8
ah woops, the reading comprehension devil strikes again
GOT IT
$ ls *.png | grep -vE "summer|winter|fall" | sed 's/\..*$//' | sort | uniq | xargs -I {} sh -c 'grep "{}" -q *.tmx || echo "{}"'
CarolineGreenhouseTiles_rainy
FarmhouseTiles
FishingDerbyTiles_international
GreenHouseInterior
MenuTiles
MenuTilesUncolored
MovieTheaterJoja_TileSheet
MovieTheaterJoja_TileSheet_international
TownIndoors
WizardHouseTiles
WoodBuildings
cavedarker
desert_festival_tilesheet_text_international
floors_2
spring_BusStop
spring_outdoorsTileSheet_lightergrass
springobjects
wallpapers_2
wow what the heck CarolineGreenhouseTiles_rainy isnt used??
(it is)
Then you just have to compare it to the rest of the content pipeline lol
it's in the code
bespoke rainy tiles feature 
cavedarker is actually unused
Also springobjects being on the list is very funny
yeah it's not used in a map?
Like obviously not used in any maps, but still funny
Feel free to post a beta bug with that list; I'll check each one before removing it. (For example, the _international suffix is a magic one in the code.)
Alright so, I've got an NPC that can be danced with at the flower dance. He has sprites for the dance in the correct spots, everything works when it comes to asking him to dance and whatnot, but when the actual cutscene starts, he's completely invisible. Am I missing something?
Ah, got it. That must be it. Thank you
wallpapers_2 looks like it is used in game, even if it's not necessarily used for the maps itself (except when you apply them to the decoratable walls)
Same for floors_2
congratulations, BETAS is now a core to any cp mod i will ever make
is there a stardew font checker thing
the font does funny things to certain characters
asterisk * becomes 💢 for example
so i wonder if there is list of this stuff somewhere, or a text to sdv font converter
Is anyone willing to explain to me what's so wrong about this content.json? The validator says I have a ton of missing information, but I don't... It says I'm missing FromFile and Action, etc, even though I have them
definitely brackets at first glance
starting at line 128
ahhhh
you ended an action and then just started in with something else
that appears to be raw dialogue and not an action
Yes, and that's right around when I started writing new dialogue
same deal around line 141
are you specifically going for a lower sdv version? cause npcdispositions doesn't exist anymore
you can see from the indents a clue about what's awry
I'm half-updating and half-recreating an older mod
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:
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC -
Custom NPCs received many improvements with 1.6.
https://stardewvalleywiki.com/Modding:NPC_data -
Aviroen has put together a template that will allow you to easily create a romanceable NPC:
https://stardewmodding.wiki.gg/wiki/Npc_template -
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
so there are definitely outdated parts I need to go back and change
Oh yeah, if you're doing 1.6.8 then you have to use Data/Characters
been struggling to get my picrew replacers working properly with the farmer portrait mod, sometimes they show sometimes they don't. Resizing it to 64x64 is the only way I can get the portraits to show at all, but they're very low rez like this as you can see. Anyone able to help me out with getting the portraits to always show instead of the default farmer portrait and having them look higher quality?
I wanted my farmer to match the naver portraits I just got
Without a mod for it, 64x64 is max portrait size
hm I wonder how the naver portraits look so high rez and large then
Never used the farmer portrait mod so I'm not familiar with it
the portrait maker that the author uploaded for the mod has a 256 version too, but it doesn't show since it's incompatible with the farmer portrait outfit and emotion mod
maybe someone else might have a solution here hopefully
i am done messing around with dynamic token reflection stuff after many hours of getting nowhere and now im onto the actual most difficult part of this mod: making a nexus banner for it. maybe i dont need to release this after all—
wait a different mod?
yeah I got super sidetracked this weekend
do you have a name for it or no
decided to make a mod that adds CP tokens that will let you get a different mods config, i18n, or dynamic tokens
probably something very boring and practical like "Cross Mod Compatibility Tokens" or something
Button's Crossmod Dynamic Tokens BCDT doesn't roll off the tongue as nicely
maybe i wanna maintain a strict 50:50 ratio between mods that start with my name and mods that don't
(also that would give the impression that they're just normal dynamic tokens)
i would've suggested keeping the non-name for your mod-author specific mods, but that's too late considering BETAS
that one I wasn't going to but BETAS is nicer to say than ETAS
i basically had no choice
probably just cross mod compatibility tokens tbh
really what matters is just the abbreviation being short anyway since that's what you'd need to write when using the tokens over and over
make it
as the icon
true
that's also why i haven't released my customfield cause my username ain't exactly easy to remember to spell
oh just the
as the header image 
i will consider it if I can somehow stardewify it
either way the pre-publish stuff is a problem for tomorrow me, I've been looking at this mod for way too long and need to never look at it again (for a day or so)
Mod Token Backdoor
that makes it sound so nefarious
don't get me wrong it's a good image and I love it but I hope you don't take offense if I use something else for the banner-
(i am just rather particular about the look of my mod pages)
i could probably put it as a second image though
assuming i had your permission
Helloo, I am learning to develop mods for Stardew Valley, but I am already facing a problem I can't really find it's answer anywhere. I followed the guide, but I couldn't really find what I have missed.
Here is the log file: https://smapi.io/log/a6def952ccc5491ab7b56e0172df102b
I tried to open Stardew Valley with SMAPI to see if running the mod without directly through Visual Studio Code would make a difference, but no..
Mod files are where they need to be, I suspect the manifest file, but I can't really find the problem..
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Pro, with 2 C# mods and 0 content packs.
https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started
https://stardewvalleywiki.com/Modding:IDE_reference#add-nuget
when you build your .csproj it should find your stardewvalley/mods folder automatically, and it turns it into a <MODNAME>.dll
It seems to be installed, also, inside the stardewvalley mods folder I have the dll files:
well, you shouldnt really have two of them, but did you fill out the entrydll field properly in your manifest.json?
looking at your log it seems like you have a typo
startdew instead of stardew
I AM BLIND, you are totally right!!!
you should also change your uniqueid
I literally lost hours and hours finding it... omg, thank youuu 🥹 
not just to fix the typo but to have a proper one instead of one that says SMAPI in it
Before that I had another UniqueID instead of "SMAPI", I changed even that and didn't see the typo...
.
The mod works now flawlessly, no problems detected. Thank you 
i love the portrait i came up with for hat mouse ;o

she sells goth hats with my mod :3
(chanting) hat mouse, hat mouse, hat mouse 
im just trying to get it to work in game now. looking at another mod that adds vendor portraits
Have you downloaded the Portraits for Vendors mod https://www.nexusmods.com/stardewvalley/mods/20414?
yes and im looking at their assets

You'll need to have that mod as a dependency for your mod, because unless you plan to recreate its work in your own mod (with C#) your users will need it too to see your portrait change. EDIT: I was wrong - you can just add a vendor portrait with CP apparently.
If you want an example of a mod that changes one of the portraits from Portraits for Vendors, you can have a look at mine: #mod-showcase message
Pretty sure most of the portrait changes are CP, looks like only the mariner needs C# for that one?
it should be possible to give hat mouse a portrait with just CP
But vanilla doesn't have portraits does it?
there's no portrait specified in vanilla for hat mouse but the shops entries support it
Huh
Non-non player character
Lmao
I wonder why Dolphin needed to ask Pathos to do something to make it possible then
I guess Sialia technically doesn't need to have TDIT as a dependency then
I'll keep it though because TDIT is cool.
i should think sialia would still want to check for it, at least
so you'd know whether to edit dolphin's asset location for that portrait or load your own and use that
And is the entire reason Sialia even exists as a portraity-person anyway
k, checking it out after breakfast
Nope, don't worry I was wrong. You can do it that way if you want, but I have been informed it is unnecessary. You can just copy the way Portraits for Vendors does it, I guess.
The only thing for NPC-less vendors is that they don't have an NPC tied to them so they don't work for Portraiture
i'm going to assume it'll take the regular filepath--you can add npcs right?
{
"Condition": null,
"Portrait": "",
"Dialogues": [],
"RandomizeDialogueOnOpen": true,
"ClosedMessage": null,
"Id": "AnyOrNone",
"Name": "AnyOrNone"
}
],```
oh then you'd have to set ichor's hatmouse as a false dependency
You can make an NPC be the owner yeah
Is Aseprite the go to program? Or is there a better one I should use?
Not sure what you mean by regular filepath
I like Aseprite, but that's kind of a personal preference thing
the portrait: "" bit, i'm going to assume it can just be Portraits/NPC or wherever the target loaded to
People are more used to other programs, so long as it can do pixel art it's fine
The best one is the one you like the most. Lots of people use Aseprite but if you don't have it but do have something else or want something free, that might be a better option for you.
you can be chaotic evil and use mspaint as long as it saves transparency
Oh, yeah whatever your Target for the portrait load is
i do all my art in mspaint 
my stuff's decent tho. i can animate too which i use animation shop 3 for

How do you get transparency in mspaint?
i also use paint.net ;p
i do all my drawing and coloring in mspaint. well most of it
ive been doing a little drawing and coloring in paint.net lately

made that an emote
So...how do you get transparency in mspaint?
i dont. i do it with paint.net
RIght so you can't only use mspaint
this. the best camera is the one you have with you
because im more familar with mspaint. and i use an old version, not the modern one. its cuz its how my brain works. im heavily autistic with adhd. i tend to stick with what i know. and honestly, there's never been an issue with it so i stick with it\
Fair enough
only thing is, id like to have smooth lines but i cant afford other programs
...you do art on your phone? /lh
I've definitely seen some people who do
i also do my art with mouse. i tried tablet before and didnt like it
art on the phone is pretty crazy
Only problem is that they usually have trouble transferring from their phone to computer for actually making the mod
I have developed very specific requirements for my pixel art that so far nothing has perfectly met.
ive been doing a little more drawing on paint.net because i rly like how u can just keep zooming in.
i'm still hunting for that perfect auto-dithering brush on csp
I have hopes for Aseprite but haven't had the chance to use it much yet because I can't get all my existing files into it.
I don't use auto-anything, so at least that's not a requirement for me ^_^
Oh that's a lie I do use the paint bucket sometimes.
Dithering is kind of an involved process isn't it? Unless you're just wanting some super basic/generic holepunch-esque dithering
it can be quite laborious
yeah it's an annoyingly involved process, i might just crank down the stabilization on csp (or crank it up?) so that it makes my lines crisp rather than chunky
if you're doing a big, regularly-shaped region it's handy to have a brush for it (or make liberal use of copy-paste)
I tried to match the SDV style a few times but can't really get a feel for it, just gonna stick with everything being way too solid
!pixelartinfo i made an infographic about it for the contest!
Here is a selection of the best entries from the Pixel Art Infographic Contest hosted in the 2024 Pixel Art Jam:
Hue Shifting by @slender badger
Dithering by @tiny zealot
Anti Aliasing by @twilit goblet
Character Animation by @faint cypress
How to Draw Stacked Stones by @lament berry
Making a Stardew Valley Portrait by @ornate trellis
Well, this was probably made by a Junimod
They're still discussing it
Yeah last I saw they were talking about it internally
yeah i need something that does the specific stardew dithering, which, tbh i might just make my own damn brush at this point
Oh is this where the Anyone Can Cook castle comes from?
yeah! (it's me, i'm the castle)
maybe i can be a mouse sometimes, too, as a treat
God okay here i come trying to have my cake and eat it too again
Using the Hazelwoods Glade map, they have an "additional Farm cave".
I'd like to replace THAT cave with a cave from Hippo's FarmCave Variety but i find myself lost in how to like.. point to it?
I went into the content thing and i have the map in the assets folder and i have the whole like "Target: assets/mining_FarmCave.tmx" but it keeps saying that it's having trouble finding the original farm cave?
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.
!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.
Lemme check it, i've got so many tabs open rn
But also I do not see a "mining_FarmCave" file in vanilla so you might be trying to Target the wrong thing.
does this look right to add a portrait? copying it from another mod
that's probably the hippo farmcave?
i think... you can probably just change the warp on the farm map to that mining_FarmCave
?
lmao "goth hats" i love it
unless they're both named mining_FarmCave, then, well, you can probably just dump the hippo tmx one into the hazelwood folder (considering this is probably a personal mod)
:D
i just need to design the hats lol.
gonna work on player accessories soon. but for now i want the portrait for the mouse to work. the above code didnt do it
This is what I tried! [Still retrieving log bear with me]
Yeah the easiest way would just to be to rename the Hippo cave to the farm map mod's cave name and then plop it into the folder
That's what I was thinking of trying next! just didn't know if there was internal metadata to change or sm
I'm /vaguelly/ familiar with Modding but stardew is a new beast i've yet to learn
Will give it a shot and see what happens
The error log doesn't give much info aside from saying the location couldn't be found
Log found, uploaded to: https://smapi.io/log/78934239672e4b6b9e1f70e6431e3e29
Stardew is definitely very forgiving with CP
oh wow there it goes
Thanks gov
Look at the governer
I'm thankful for that much, It's been somewhat easy to read and understand, for me right now it's just a matter of understanding like.. /why/
oh it's named AdditionalFarmCave
take the mining_FarmCave, rename it, plop it into the hazelwood [CP] Additional Farm Cave/Assets folder
(this is under the assumption that they don't have any custom tilesheets)
Looks like you may have accidentally broken the content.json for the farm cave though (unless you didn't cause this error, in which case the original mod author broke it).
😵💫 boy oh boy fingers crossed the rename method works
JSON will always be a weak point for me
<- Previously had to learn it for the sake of Minecraft mods
sorry, didn't ignore you, you'd have to do:
"HatMouse": {
"Owners": [
{
"Portrait": "YOUR PORTRAIT LOAD HERE",
}
],
}
}``` iirc, my brain is very sleepless
nw and ty. i will try it
i'd say content patcher json is one of the most forgiving and understandable
I've never used JSON in any other context but I find it quite pleasant.
use an editor w/ json support
Json, pleasant?
Haha yes atra
just don't say the acronymthat starts with Y, he can smell it
Does Fields work with nested fields? I forgot
Otherwise Ralo's initial code looked correct to me
that's how i do my nests but i could also be wrong, it do be 7am and i am tired
Fields works with models, but you shouldn't use it on lists
It eats the whole list
Which is probably fine there since it is a list with a single entry
this is a confused mess lol. not sure if i need the other portion still
cries i got the same message
Yeah, you will do because your content.json is broken like I said

It's not currently capable of actually loading the location
Were you attempting to change the JSON earlier?
I restored the original content.json that was in the mod and renamed the map :v
And the original was working before?
The one in the [CP] Additional Farm Cave folder?
you can ignore my initial since selph said your original was good to go
the original didnt work tho
o-oh
Did you get an error?
Did you load your asset
aye
The code is correct, except for the Portrait line
like it's not a super complex contant thing in the original it just points to the map
nah i dont see it saying load on there. let me fix
oh? how fix?
You need to load your png into a game asset first
right
OG content.Json for the CP_Additional Farm Cave thing
like this?
no load your portrait separately
oh
change that back to editdata
And you have definitely got the hippo farm cave inside that "assets/" folder named "AdditionalFarmCave.tmx"? Also wow that's an old format.
lol that just sounded amusing to me. like 'no! smacks out of hand u put that back xD

Positutely, I double checked as soon as I closed my game
much like how you added in your goth shane portrait (right? or am i misremebering names now)
Can you share the error? It might not be exactly the same.
Yes Ralo does load a whole lot of assets in her json already
https://github.com/Pathoschild/StardewMods/blob/stable/ContentPatcher/docs/author-guide/action-load.md
Use your file path as FromFile, and whatever name you want in Target, as long as said name is used as the value in the Portrait field
(as mentioned you may be already doing this a bunch already, I don't have context lol)
k, gonna see if it works
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 107 C# mods and 361 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
i thiiiink i shared the log proper but i might have done it wrong shfvbdhb
You didnt change the Portrait line
you only need one "Format" and "Changes" per content.json, so if that isn't at the top, i would move those to the top so you don't duplicate it
i guess im doing this line wrong. also it breaks when i remove format and changes lol. so i dont mind keeping it there
Yup different error. The problem now is that the map itself is broken. Have you tried editing the tmx file?
can you post the full json
Only to open it in Tiled
I'll try to uh see if it still does it with the like untouched file
its got a fuck load on there lol. hat mouse is near the top tho
The invalid tile gid error implies to me that you opened it in Tiled, you had a bunch of "missing tilesheet" errors, and you (maybe accidentally) saved it like that - which breaks maps unfortunately.
i don't know about the hippo map, if it has a custom tilesheet or not
@velvet narwhal You leveled up to Rancher. That's level 250. Woot!
HUH
ig that means i need to shut up
Ah yeah that sounds like what happened. I was trying to figure out what was up with the warps bc it was wonky at first and google was like "hehe edit your maps in Tiled!"
and my silly little not mod dev brain was like "okay!"
tbf while stardew modding is easy once you get the hang of it, we've kinda just dealt with it's nuances
!springobjects
Most vanilla object sprites are in the Maps/springobjects asset. See a table of springobject sprites by index.
Some newer object sprites are in TileSheets\Objects_2. You can check the entry in Data/Objects to see where its sprite is stored; SpriteIndex is the position, and Texture is the asset name (defaulting to Maps/springobjects).
Editing maps in Tiled isn't wrong. It's just persnickety.
for example
i need to get on map editing soon too. bleh
At mentioned, remove the second Format line, it's unneeded
Also remove the "Changes": [ block you're wrapping your hat mouse portrait load with
you're already adding to Changes (see the first few lines of your file)
I appreciate the patience! I've been honestly thinking of making an NPC myself lately hehe
Now is it safe to assume that i could just... plop the warps into the content.json?
And also delete the extraneous {} block surround that
Hi, stupid question (and sorry if I'm interrupting)! Is there any ability to put modded items into vanilla casks? I've looked around and haven't found anything, but I'm practically illiterate when it comes to coding so I might've missed it.
we welcome any interruptions here
https://stardewvalleywiki.com/Modding:Machines#Data_format
it's... unfortunately one of the intermediate-level things to understand
though, modded objects with a specific item category should automatically have a juice and pickle variation
Yes you...hmm. Ordinarily I would say yes but I haven't tried that for a map added with CustomLocations. Let's say that it's probably possible.
to add a new item to Cask you should just need to copy one of the vanilla rules and change your input item trigger + the AgingMultiplier field
Yay! NPC! Join us! https://discord.com/channels/137344473976799233/1277457201077813280
Alrighty! I'm trying to add the ability to age my modded cheeses but having done next to no coding before, it's definitely challenging
Look into the unpacked Data/Machines.json to see what the whole thing looks like. And yeah it is a bit advanced lol
okay i got all that fixed now but im still missing something
hey friends, i'm missing something silly i think.
i'm trying to edit a string->string dict asset via SMAPI's content API like so:
e.Edit(data => {
var dict = data.AsDictionary<string, string>();
foreach (var entry in dict) {
etc.```
and the foreach is barfing:
`error CS1579: foreach statement cannot operate on variables of type 'IAssetDataForDictionary<string, string>' because 'IAssetDataForDictionary<string, string>' does not contain a public instance or extension definition for 'GetEnumerator'`
what did i forget to do?
what does the new code look like? Any errors in console?
nope
don't you need to do dict.Data or .Value or something
Need .Data
i remember there being something
ah ok, thanks! i knew it was something like that
Where do I find that? Just from the game files?
That looks fine to me. Can you post the whole file again so I can check for missing brackets just in case?
!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!
i have other mods where i do (for example)
var dict = asset.AsDictionary<string, ObjectData>();
foreach (var entry in modAsset) {```
~~which is fine (or was the last time i compiled it), so i didn't know i needed the `.Data` on the foreach~~ nevermind i'm a goober
tysm
ah, scrub that, i can't read
it's okay, blame the coffee maker
fair play, actually. i'm the coffee maker and it's definitely that guy's fault

getting on transit now so I won't be free until 10 min or so, but that looks fine to me? did you reload the mod?
Is your "HatMouse.png" file definitely called that and definitely only inside the "assets" folder, not any subfolders?
(vs22 isn't giving any errors so it looks fine from here)
nw and i will test it now
minus that target line that smapi has already nagged on
oh right, its in portraits
i fixed that so lets see now
EEEEEEEEEEEEEEEEEEEEEE
;o; it's so precious.. ty guys so much
that's so cute oh my godddd
cute!
ive been debating if im going to change names of things im modyfing. like hats, clothese etc
im not for everything tho cuz its way too much work. like i modified all the furniture from the catalog and such but not gonna change the names to match
this is so good. now i can make portraits for the other vendors but im not sure if i will because idk if i rly care to do anything with them tbh
i think it's only... the dwarf and the island trader, right?
i will def add in suki's tho in case someone is playing without sve
oh right the travelling merchant
(note that VMV has a portrait for the travelling merchant (and a name too))
lotti
cute
some people do this, as it happens
yeah i made her portrait but its so far only set to over write sve's
also did sandy's last night
i made sandy whimsi goth
once again, i am considering if something should be a cooking recipe or a machine recipe...
or both
if you use that one, make sure you credit the portrait maker
me, trying to figure out how to make the green squigglies go away
oh right exclaimation
(and even in discussion here, when someone says "made", it's good to mention "with the portrait maker" when it's used)
Any time you post artwork based on Poltergeister and Jazzybee's portrait maker, please mention it
No
(Likewise if you're at any point editing resources that aren't yours but which you have permission to edit - credit)
oh sure, ty for pointing that out. i will note it in my mod notes
long spouseID = Game1.player.team.GetSpouse(Game1.player.UniqueMultiplayerID)!.Value; no? 
sometimes you want to actually check for null
holy hell that is the only function marked nullable that I've seen in SDV code
yeah ive used that program for bases mostly and then drew some of my own assets in some cases. but yeah i can def include that information. im glad u mentioned it
yeah the mouse is obviously not made with it 😄
It's not
lol yeah thats 100% my own. i upload my own art to my DA acc
But in this case, value type nullable works entirely differently from reference type nullable
You can use an exclamation mark to make the green go way, but be prepared to get a null reference exception lmao
back to google i go
you can just check for null here
long? spouseID = Game1.player.team.GetSpouse(Game1.player.UniqueMultiplayerID);
Then start the next line with if (spouseID is not null..
can u use is long spouseID here 
im hoping long? null doesnt just cast to long=0 or smth
No it doesnt
Nullable on a value type is entirely different than nullable on a reference type
On a reference type is just nullptr
why is this chain of problems just going--
On a value type is Nullable<TheType> small struct
boy oh boy i got it to work but now... the warps are screwy

if (spouseID != null)
{
Game1.otherFarmers.TryGetValue((long)spouseID, out var farmerSpouse);```
Warps into the cave, out of the cave, or both?
Sooooo....
the cave itself has multiple warp points
ofc I have the warp list thing but it's a little difficult to put it into the Content.json without it throwing a fit
Warp list thing?
like aaa since i'm essentially combining two mods I have the warps from the one mod and all the info but I can't, unfortunately, just copy+paste from one content.json to another
i am once again barking at .JSON until it works
I imagine that the cave warps are set inside the map itself rather than in json
oh nono i have it! i think
I would do them in the json if they had my mod Id in them lmao
I'm not about to copy paste that garbage in Tiled
"Action": "EditMap",
"Target": "Maps/FarmCave",
"AddWarps": [
//^Spa Area
"6 0 FarmCave 40 25",
"40 24 FarmCave 6 1",
//^Craftable Area
"26 -1 FarmCave 24 59",
"27 -1 FarmCave 25 59",
"24 60 FarmCave 26 0",
"25 60 FarmCave 27 0"
],
"When": {
"CaveType": "mining"
}```
obvi i have to change the FarmCave thing but like those are the little warps in the content
Would you change that Target? Didn't you just rename the tmx and replace it?
Ah because it's not the FarmCave it's AdditionalFarmCave!
Hmm yeah you should just be able to copy and paste that from the hippo cave mod to the farm map mod (it's really hard to picture this when I haven't downloaded both to see how they are set up lol)
Your Target for the EditMap would be whatever they loaded in the first place
doing this screwed the JSON and gave me "expected EOF"
Probably pasted it into the wrong spot
well now that hat mouse is working im just kinda blank not knowing what to attempt next -o-
Yeah, there's not really a guide on how/where to paste these things :^)
Or forgot to add a comma
its either do the player assets or work on maps .-.
thats rly all i have left to do for my mod ;o
Well, there's no guide on how to stitch together two mods by moving stuff from one to the other, but generally you should learn how json works and how CP works
I don't remember if there's a command for learning how json works
iirc someone had the actual website for it but then button said real json syntax is not the same as cp syntax
Is there a guide for it? I learned by looking at other mods and asking in here
I appreciate your input. Please allow me to work with the initial person who's been helping me.
what is the string name for the trader? is it travelingmerchant?
Trying to go back and forth with two people with different amounts of information is largely overwhelming for me.
In Data/Shops there's a few different entires for TravelingMerchant, some are for festivals
Oh right, the festival one is TravelingMerchant and the regular one is Traveler
The actual json convention is much stricter, but Stardew and SMAPI use newtonsoft json which is much more lenient (allows comments, doesn't care about trailing commas etc etc)
k thanks.
Festival_FestivalOfIce_TravelingMerchant
Traveler
are the two I could find
ty ty ;o
so i need to make several entries
so that should look like this right?
oops. had an extra 'festivle' fixed
Just so I'm clear, who is the initial person?
Traveler might be more complicated if you have different portraits depending on which festival she's at
I would say you, you were the first to answer and have been talking with me long before Rokugin
i just have two
one for 'winter' and regular
She has two owner entries, so you'll need two blocks for her
Since you can't branch out with TargetField once you've drilled down
(i cannot for the life of me find the syntaxing for newtonsoft so i guess i'll go back to solving this nullref param)
just kidding i forgot pathos fixed it in 1.6.9
k i will take a look.
she also has night market too
God, I've been intending to change an entry in a CP mod and patch reload for like an hour now lmao
Okay good to know. We don't normally work that way just FYI so in future if you're asking questions in here you will probably encounter multiple people trying to help you as well. If you want to avoid that and stick with one person it might be worth asking that one person right at the start if they can start a thread for you both so you can discuss what you're doing with fewer other eyes and voices present. (Just letting you know because you might run into the issue of getting overwhelmed a lot otherwise.)
i feel u. with my adhd i can get stuck on one thing for most of the day <o> just so many other things going on
thats me rn. trying to organize this code and im kinda like "o_____o" while doing a little here and there
I normally don't have too much trouble focusing, if I'm not sleep deprived, but I've been chatting with a few people at once and trying to follow chat, feeling scattered lol
For now 
i need to google the _ = bool.TryParse(customString, result: out bool stringActivated); disposal thing though cause, uh, i'm confusion
i think im prob needing an upgrade for my adhd meds lol. i will get to talk to my psych about that today tho so we see xD
Ugh, this is what I get for suppressing a null warning
Would you like me to create a thread so you can share your json and I can see if I can see what's wrong with it?
I would appreciate it greatly ;x;
are u confused still or did you google and got answer 
i just can't tell if _ is meant to be a 'disposal' operator or not
(Discard)
oh so the pattern for T.TryParsed(string oldthing, out T newthing) is like
if (bool.TryParse(customString, result: out bool stringActivated)){
// we got stringActivated
} else {
// didn't get stringActivated
}
One of the weird things about technical fields is that words take on new meanings
For example, discard and dispose
Two very, very separate things in c# land
oh i thought irl dispose means destroy
Dispose is highly specialized and I don't recommend touching it but it is about unmanaged resources
Discard is "I don't want this variable"
_ = bool.TryParse(customString, out bool stringActivated);
All this means is that the programmer didn't care about the return value of that function
Lost Lamb Map Help
this felt very wrong but
bool stringy = bool.TryParse(customString, result: out bool stringActivated);
if (stringActivated == true) { blah blah code }
else { _ = stringy; }
If it's a return value then can't you just not assign it?
I thought you only needed discard for ref/out/decomposition
The usual pattern would be:
if (bool.TryParse(customString, out bool stringActivated) && stringActivated)
...
oh avi u should read about short circuiting 
I... completely forgot that wasn't common knowledge
i'm really trying to unlearn my circular logic from c++
yea we r too deep in sauce
The short description of short circuiting is that the minimal number of conditions will be evaluated from left to right
For example, if you have thingA() && thingB(), and thingA() returns false, thingB() will never even run.
Similarly, if you have thingA() || thingB() and thingA() returns true, thingB() will never run
This does also mean that in situations with multiple conditions where order doesn't matter, you want to put the least expensive checks first, so more expensive checks can be skipped if not needed
Does roslyn do any optimization like that
Roslyn puts them in in the order you do
Roslyn doesn't know about side effects
She can't reorder things for you
Maybe I have ThingA() do something
Yeah fair 
I mean all the Try methods with out params technically have side effects, in that they're doing assignments
(You may have noticed the [Pure] annotation. It does nothing. It is not enforced. It's just to make your life as a programmer easier)
where did u find these at? i wanna take a look rq
C# is not Functional enough to make that work
Data/Shops
k
Eh, I think out params are kinda like returns in feel lol
They are, but they're still technically side effects
I definitely prefer them to tuples
(Prefers tuples)
I like tuples but they tempt me to do terrible things
Wren
i mean i love terrible things #making-mods-general message like button's token grabber
At work I have functions with return values of tuple[bool, dict[tuple[str,str], tuple[float,....]]
And on and on
Named tuples...
Yeah that's exactly what I'm afraid of lol
No u
I have dum question, can I inherit Tuple<string, string>
I don't think it's sealed, so probably, but why would you
Bc I wanted a namedtuple in C# 
Named tuples are a thing
You can name your tuples or you can use a readonly record struct why
It was a 4-uple at first so I just did a using to give it an alias
But some refactors later it's a string, string now
Yeah that's when you're better off using record structs
I do need to use it as a key to a dictionary
I swear I have named tuples
Can I impl hashable in records
Structs can be dict keys as long as you implement the hashcode method, which I think record does for you
The example I gave was for use as a key in a dict
Kk record sound good
public record struct MyRecord(string a, string b);
If you want a oneliner
Do I need to do anything to make record serialize
I am serializing the dict with this tuple key into the save data
Then you need to use spacecore to register it
No it's not save type
Oh
Just the smapi arbitrary save data thing
So just json then?
Should be fine
Oh yeah then you don't need to do anything special



