#making-mods-general
1 messages · Page 348 of 1
i think you'd have to either create a new duplicate of the sewer map and change stuff, or make a c# mod
I have a question again, I am trying to port and old xnb mod (For personal use.) But i don't exactly understand something... the tutorial says to "Note down the width and height of the sprite (which in most cases in Stardew will be 16 x 16, unless it's a portrait or a character sprite). " in my case it's the hat.png. Is it fine to get the whole Hat row? It would be 20x80.
not an expert with c# stuff though
can you send the tutorial so i can see that line in context?
you definitely should avoid creating a new Sewer location (and be careful about creating a new Sewer map for the location to use) for compatibility reasons. Editing that warp would require a transpiler using harmony
Have you ever come across a super cute mod but then found out it was an XNB? Well, fret no more! This tutorial will help you convert that XNB mod into a Content Patcher mod (made by Pathoschild).
oop yeah, like i said, im not really an expert on these things. it would def be a nightmare with any mod that uses that location
you just need the width/height of the area you are patching
all the sewer map mods I know of very intentionally keep the warp locations in the exact same spots even if they expand the map or add other warps
But if I just added a warp to my desired location in Town to the Map Properties of my custom sewer, I can warp the player without needing to handle their interaction with the ladder tile, right? I would prefer to trigger the warp on interaction, but I could probably live with just using a mapproperty warp.
Of course, I could just move the sewer grate two tiles back to the right on my Town with a little more effort.
What about the X and Y?
so like, imagine you're selecting an area of the vanilla tilesheet that you're going to patch in with your own image. so x and y is the top left corner of that selection, and the width and height is the width and height of the selection
you can definitely just add a separate warp, yeah, but if you can align with vanilla tile locations for these more hardcoded locations, that'll make your life simpler
so basically you're noting where you're going to "cut" and "replace" on the vanilla tilesheet
that Sewer warp is checking the tile index, right? as in, the index of those tiles on that tilesheet png? couldnt you just add another custom sheet to that map with the same ladder tile texture as a map patch, and paint ot overtop the original?
then it wont be hitting tile index 21 on the "st" sheet anymore
so you can put your own action on top
^ that would work, since the hardcoded thing is targeting the tile index, not the tile position
Would that be the correct target?
yup, iirc
Thank you all.
are you trying to replace this on the vanilla tilesheet? because this is the section you're referencing
Yes
It's a port rather than adding a new hat
Good to know I did it right...
Though, this was not everything the mod did
It has text changes too
I never edited hat text before.
I did it for tools though.
Oh... I missed the fine print... There is a web tool to convert xnb to Content P...
i mean, it is good practice to convert it yourself because you learn how it's constructed. but if your priority is using the mod then the converter could be really helpful!
Just in case I screw something up.
I messed up the tools text edit for so long, it got frustrating
I rather something smarter do it for me haha...
WAAH! Okay nevermind. It needs a manual touch as well. The converter would just try and replace the hats file with this old one...
i believe in you, modding gets easier as you practice and go through the frustrasting walls of errors. but im not going to gatekeep & i think the concerting tool is a great resource, and go ahead and use it if you'd like to 🙂
correct, i don't host the entire content folder for anyone to download
again, i don't host the entire content folder
so it has no idea what it should look like in modern versions
Does this look fine?
hmm why are krobus's sprites' heights 24 instead of the default 32? is it resized somewhere? i cant find it. is it hardcoded?
special fella
he's special yup
Oui
He's a short king
quick question, just out of curiosity: why is krobus's sprite just entirely resized, instead of leaving whitespace on top?
That's a question for Mr. Ape
lol maybe krobus is just special like button said
I just realized - if I edit all the fesitvals for Marlon and Marnie to be together, that just opens me up to bug tickets because xyz mod conflicted with my new maps
more* bug tickets
so id just accept that there will be incompat
and fix the ones you care about if you do
or tell people you dont if you dont
That's true. I felt/feel obligated to try to make all everything work together - and that isn't feasible
hm i think u can move a vanilla char right
if u put Marnie in additional chars maybe?
imo u should offer a config for it 
sugar and tlit showed me how to find them in the temp maps
assuming u wanna do
no idea why it happened all of a sudden, but halfway through testing my mod, cjb spawner and lookup anything have entirely stopped working
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 11 C# mods and 2 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
I saw the additional characters thing, but I wasn't sure if it'd just duplicate her
yea but if u can do it via additional chars it is perhaps better for compat
dled the newest versions of both
worth a shot
that's also true
if u remove Alx's Additions is it still like this
putting someone in additionalCharacters who already exists in setup will replace them iirc from last time i looked at those functions
or rather update them to whatever you put in additionalcharacters
it wont duplicate them
u are still gonna get the problem of "oop i moved marnie over a mod npc"
that said i am not 100% sure what happens if you do it after theyve been set up with an advancedmove or something
bigger separate issue 
i cant remember if it resets the controller
it is not, that brings it back to normal - problem is, Alx's Additions is my mod, and it was working fine about an hour ago 🥲
well we are trying to determine the root cause here
I was hoping I was just missing something obvious in the error logs that I've changed recently
did you patch reload while you had Lookup Anything open to something
it seems like u did something terror in there and the info mods didnt like it
I don't know what that means 😮
wait, what does your mod do
I've determined at least what's causing it, and it's my fish.json
as soon as I removed that, it's working fine again
yeah i was gonna ask if you were accidentally deleting all of Data/FishPondData or something
oh wait
yeah that might be it hahaha
I wanted it to be treated like a legendary fish but may have royally messed it up
you're missing required fields in your fishponddata
oh you're editing another one
(is the id of the other one really start with "id_"?)
in this case you're accidentally removing required fields
this seabass is tia's example right
I'm trying to add a new one - it seems I've apparently not done that well 🥲
using "Entries" means that any field you dont specify will be reset to default values, which may or may not exist
oh
okay well same thing
u gotta change it to match ur stuff
you're not specifying fields so they arent becoming anything
bc they are required and should be specified
Hahaha, yeah, I just entirely missed that I hadn't replaced that bit
in particular, ProducedItems
@lucid iron Dearest chu, please enlighten me 
I assume the buildings all work the same way
ok so lets use nano's cp pack as example here
that makes sense - I just wanted the produced items to be Roe, and nothing else, like the other Legendary fish, but I deleted too much! I'll go exploring and try and figure it out
this bit of data edit means "for every season move the source rectangle 96 px to the right"
i dont know exactly how fishpond data works, but maybe just try "ProducedItems": []?
so spring's at 0, summer at 96, fall 192, winter 288
it match how the coop texture is arranged
never mind, you need one ProducedItem thing but it must produce (O)812 if youj want it to produce Roe and only Roe
if u wanted to make another coop match this and become another skin to use, you would have to arrange the coop tx same way, and add the skin data
there's example of how2 add skin in the skins.json file
So I'd need to completely revamp the folder structure as they're [[season]]/[[building]]
after doin all that u should be able to use AT normally to toggle these season skin
yea gotta merge em
again i low key regret doing this on someone else's mod 
but i felt the advantages are notable enough to go for it
Probably
i wrote guide here (but i didnt do the seasonal part)
https://stardewmodding.wiki.gg/wiki/Tutorial:_Change_Building_Appearances
Stardew Valley 1.6 added a feature to have custom building skins. You can now have multiple appearances on one kind of building just like what Alternative Textures enabled. It can be useful to offer this feature even if you only plan on having 1 skin for each building, since it will allow people to use your building textures in conjunction with ...
I see. I'll check it out later, thanks!
thankyou so much!! this worked perfectly 😄
error's gone! now i just gotta write the mod page lmao
that's a tomorrow job though - thankyou so much for all your help again!! ❤️
hmm what's this code in ShadowShaman.cs doing? it seems like if you have enough friendship points with an npc called "???" they don't do any damage. but why does it say "???"? hoping i can reference this for my mod
https://smapi.io/json/content-patcher/ed9ecf069347485e9d1927b074bea5e2 for some reason my character's sunday schedule isn't working--she gets stuck immediately after exiting the roof (the roof leads to a custom map, which leads to another custom map, which leads to town), but she doesn't get stuck in the same place any other day of the week. anyone got an idea of what's wrong?
hmm i dont see why that wouldn't work... do you have any errors in your log?
nope. i can send it anyway but no errors
"???" at a glance looks unused - the character appears in Data/Characters.json though... so maybe? might be easier to just run your own damage code
yeah
Fyi there's a few other mods doing story related change to the shadow ppl in the mines
SVE has a quest that makes em non aggro
Lurking in the Dark has option that change them to golems
hmm would that make them conflict? maybe i could have a sve compat toggle or something
I think your reading of the code is correct
I also think it's unused
yeah i thought so, maybe ??? is a placeholder of some kind.
hello! what's up community, hope you are well, I was wondering if anyone has contact with the modder Gweniaczek ;-;
Lumina (the mod author) has been asked this before and has said no, she would prefer that people not do this.
i didnt make it, but its probably not the nicest thing to say, least of all in a discord where the author is present
I haven’t seen Gwen online in ages
I’m not always always around, so this isn’t a fully definitive answer
However, if you’ve asked via nexus DM and gotten no response, unfortunately that might be it
I assume you’re wanting to ask for permission for something, so if you can’t reach Gwen unfortunately you’ll have to assume you don’t have permission
when you do a map patch does it also include the TileData, or is that not included, like how map properties aren't included?
Tiledata is included
Tiledata and the tiles being different thing is a tiled concept, in tide which is the format stardew uses under the hood there isn't a distinction
And stuff like tile rotation/flip which isn't a native thing in tide at all gets encoded as tile properties instead which smapi adds rendering logic to handle
oh interesting
@ivory plume hello Pathos! after your blessing for it last night and discussing it more after with SinZ, i believe ive an implementation of that "limited tilesheet climbing for maps" stuff we talked about that is safe, backwards compatible, and deterministic so ive opened a pull request for it. its the approach you mentioned tentatively wanting to do, basically, allowing climbing up just one directory to the Content folder.
i know you've been focused on 1.6.16 stuff lately so this aint a call for you to look at it immediately ofc, just wanted to let you know and say that ive no expectations for when it is looked at, but if you did look at it and some point and spotted something that may be wrong or a case i didnt consider, feel free to let me know and i can take another look at it so you don't have to jump to line 200 of your TODO just to fix a faulty PR 
I'm trying to set a When condition so that when a player sees an event, they can no longer see a vanilla event but when I test it in game, the vanilla event still starts. SMAPI also isn't showing any errors. What am I formatting incorrectly? (I only included the relevant part of the json into the json validator since it's part of a larger file but I can send that as well!)
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Unix 6.5.0.23, with 7 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
is this the same day you see the ELEngagement event, or future days?
I was testing it the same day
It doesn't change them to golems, it changes the Monster Kill goal to golems.
Content Patcher wont re-evaluate the conditions during the day unless you tell it to with the Update field
Is there a way to have an event after buying a ticket from a Central Station added stop?
(Kinda like in vanilla with boarding willy boat or boarding ze bus)
Oh I see, thank you!
So it is working as intended and I've been frustrated for way too long lol
Thanks! I'll take a look soon. Though one note is that ../ should be relative to the map asset name, which isn't necessarily the Maps folder (e.g. if you're editing Maps/mine/120, then you'd need ../../LooseSprites/Cursors).
doing that would be harder and have backwards compatible impacts I think
afaik doing an EditMap on Maps/mine/120 today would still load tilesheets from the Maps/ folder, not Maps/mine
well, you can put Mines/whatever as your image source and it will not complain about that and will load it fine from that folder
i think it might be doable if instead of allowing just 1 directory climbing segment like i have currently, i allow up to imageSource segment count - 1 climbing, and make sure theyre consecutive from the start?
or mayube not - 1 maybe just the count
so "townInterior" allows 1 directory climbing as it has one segment, but "Mines/volcanoCaldera" has two segments and thus gets allowed 2 climbings
(i need to sleep on it though, mostly bc i was already getting ready to sleep when pathos replied)
I think it would be weird that Editing Maps/mine/120 would need to use Mines/mine_lava to access a tilesheet in its own folder, but then have to do ../../LooseSprites/Cursors go backwards twice to go elsewhere.
due to the fact for backwards compatibility cave should just work being mapped to Maps/cave and volcano_caldera doesn't currently work
hii i was wondering if someone wouldnt mind helping me, im having some trouble again 
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 9 C# mods and 2 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
yea
Your MFM mod has to be a separate one from the CP mod
looks like your manifest is for content patcher currently
Also are you sure you need to use MFM?
ohh ok thank uu
You don't need it just to send an item through the mail at a certain heart level
that mail looks fairly easy to do via a trigger action and populate Data/Mail
Very, yeah
i can give it a try i was mainly referencing from another mod to help
Was it a mod published after March 2024?
i forgot to check that but no it was published before
Do any mods add new paths? I need reference
When you're using mods from before 1.6, it's fairly important to check if there have been any changes to processes before you copy them.
Plenty do, here's one from chu: #1256552123202539561 message
I shall note this idea down for later when I investigate further
Friends, I'm running into an odd problem: My patch on LooseSprites/temporary_sprites_1 doesn't seem to be doing what it's supposed to for Leah's painting event. It shows the wrong portrait every time, and if I try to patch export, it shows NONE of my patches on that PNG, even though patch summary shows that it's there.
(and it is showing one of the new paintings, it's just the wrong one)
Okay, disregard the wrong portrait thing, apparently I needed a completely new save so that it doesn't try to remember the first option I picked and will actually show the other 2 portrait variants.
Oh, glad you figured it out - I was looking in the source code and, yep, the game gets which painting to show for this save by checking a variable set in the save's world state. Naturally that leads to what you encountered.
Still not sure why the patch export doesn't update, but I'm gonna chalk that up to weirdness with the temporary sprites sheet.
yeah I was curious about that... don't have an answer there
(I even tried patch exporting while I had the heart event open, no dice)
Dynamic Map Tiles Extended now lets you create and destroy animated sprites, has a new Load trigger to make tile changes on map load similar to Content Patcher (but more flexible tile matching), and more!
https://www.nexusmods.com/stardewvalley/mods/33900
hi all - need some help creating icons for a CP dog mod, they currently are all offset in Marnie shop, using wiki IconSourceRect | The icon's pixel area within the IconTexture, specified as an object with X, Y, Width, and Height fields. i set the values to
"IconSourceRect": { "X": 16, "Y": 0, "Width": 16, "Height": 16
and they are offset to the left, could someone direct me here? how do i know what size to use (the icon is just grabbed from the spritesheet)
Can you share the exact image file you Load as IconTexture?
That should be the area you specified with your current IconSourceRect. Starting 16 pixels from the left (X) and 0 pixels from the top (Y), with size 16 pixels x 16 pixels.
So if you want to properly show the creature's face, you'd need to increase the Y value and decrease the X value.
I was wondering, a mod itself has been updated a lot, but the translation hasn’t been touched in 2 years. I’d like to update it using the old translation as a base — if the original translator never replies, does that mean I just can’t update the translation using theirs as a base?
what are the permissions on the translation on nexus?
They uploaded the translated .json file directly in the comments.
is this on nexus?
if it's in a random comment then usually yeah, you have to assume you don't have permission
ok, thanks
Oh my God iro you have a profile picture
Yeah, iirc testing some volcano changes and yes
Festival Positions will be the end of me.
Would also make Maps/MyModId/Mymap (or Mods/MyModId/Mymap) have breaking changes
I think in a perfect world having everything be correctly relative to where the map makes sense and is how vanilla works, but we have had so long where that's not how smapi worked where moving to that would break
Only maps that are direct children of the Maps folder wouldn't break, as it's "accidentally" correct
But I think having one set of rules for same folder and forward paths for backwards compat, and a different set of rules for relative paths would be the worst of both worlds
If pathos todo is random access line 200 is same as line 1
Unless pathos todo has an l1 cache
(I have no opinions on this. )
I'm loving how much this is freaking everyone out
In which case since we have queried the location of which line in the to-do it is, it's already in l1
Imposter!
(I have no opinions on the map loading. After all, I have not had my third coffee.)
My views are if we want to time the change with a modpocalypse anyway, fix it so it's always relative to the asset name, otherwise keep the status quo that all mod provided maps are for the purposes of relative path in the Maps folder.
To be fair this is likely a stale pointer
Anyway
I'll go make coffee
I think pretending everything is in the Maps folder also makes things easier to think about when it comes to EditMap, as when you are applying an edit to an existing map, your edit still has a source map and doesn't have the identity of what it's editing and all smapi will know is it's actual filesystem path
Howdy folks! I'm struggling with recipes - it all cooks fine but the items needed is throwing up an error icon - it's meant to be just any fruit, but doesn't seem to be working
I used -79 as the category for fruit, and it works, it just looks a little funky
Wasn't there a bug with using a category as an ingredient? I remember a convo about this a while back
What do you mean by template?
Like. A file that's the size it needs to be
Or what size do I make it, and what size do I make the individuals
You can just unpack the game files and see how the portraits are arranged
For the size, it depends on you; if you're going for HD, then you'll need to go bigger than vanilla anyway, and there is no real rules on that (but you'll need to use the framework Portraiture)
Ok. Can't do it till I get home then

Are you making a portrait for a specific character?
Oh, yeah then you'll need to check the sheets for each of them, they aren't ordered the same way x)
Like. Aimon's swamp expansion+ the witch expansion
So yeah I have to wait considering
for mods however you can probably just check the files on nexus
Yeah
I'd check out dacar's hd portraits
It's a recent and fairly comprehensive pack
"Action": "Load",
"Target": "data/events/club",
"FromFile": "assets/data/Blank/blank.json",
"When": {
"HasMod |contains=FlashShifter.StardewValleyExpandedCP": false,
"HasMod |contains=HaruNesukts.DesertExpansionCP": false
Will the load action see this as 'load if both are missing' or 'either are missing'?
That'll punch the 'another mod does this D:' error away? heck yeah. ty 🙂
Tbh both of those mods should use Low as well
how do people even make furniture....
furniture is so fun!
dont say this. you just havent tried/practiced enough to feel comfy
youre a super competent artist, dont let some squares get you down
actually for what im doing i dont even need the string 😭 since it's interior tilesheets
ah irocendar has a pfp!
other discord users stop confusing us for each other challenge (impossible?)
uhh like, kinda antique looking furniture
if its plants you’re on your own. but if its like couches tables chairs etc thats ez
like PC’s old world furniture or like… visual examples plz
will never happen. we will forever be the same person
its just me guys come on
ah yeah like PC's furniture but more... gothic?
it’s not just you lmao
hmmm if u have visual references that will help u immensely
ok thank god
i dont think theres anything ornate in vanilla BUT as long as you have a starting point you can experiment with shapes
i usually pick whatever’s closest to what im trying to do and build off of that if idk what i’m doing
dimensions wise or design wise
you could also look at creative commons sprite sheets, see if anything sparks your imagination
a custom smapi message is a DLL command, not a CP one, I'm guessing?
??? when a mod calls SMAPI's log functions, SMAPI puts the name of the mod that logged it in the brackets []
I wish I could remember the other mod that did it. that one put a big error message that looked like this, in Smapi
You used the wrong mod. Go use my other version. (paraphrased)
Cauldron
I don't reocgnize that one but I'll go peek in their code. I'm interested in how it's done!
I don't see anything in the jsons, but there is a DLL. I'm going to guess it's in there
It's a smapi Api to write to the console/log and isn't exposed to content patcher which is a declarative system anyway, so writing to console wouldn't really make sense
ahhh
I did add a trigger action to EMP to write logs on your behalf, if it's necessary for a CP pack
https://github.com/Esca-MMC/EscasModdingPlugins/blob/master/docs/emp-modding-guide.md#log-message
pretty simple and still uses EMP's log header at the start, so the convention is just to say "Your Mod Name:" before the message
ty! I like learning new things, even if it makes me feel / look incredibly foolish
I love using this so much, too much 
YOU HAVE A FACE NOW? 
Not much more of a face than before, but a more unique face that's for sure
Hi, how are you? I want to make one of my custom fish behave like a legendary. Is there a parameter that determines that? Because I looked through what I believe is all the documentation related to fish and didn’t find anything that mentions it. I have a vague memory that I saw something about it somewhere, could you give me a hand, please?
There's a context tag i think?
Yes, I think so, but I don't remember exactly.
Take look at the objects perhaps
It's in data/locations iirc
Ty
would anybody be able to help me modify a mod(for personal use), it replaces the ugly stumps in the main town but issue is one conflicts with the entrance to sunberry village
ive been trying myself and it hasnt been going well XD
cant find what section of the code to modify
Does it Load over the whole town.tmx
looks like it
but im not super familer
You might as well make your own version of this mod then
The compatible approach is to do editmaps targeting only the stumps
Another question related to locations: in order to make it possible to fish it on Ginger Island, should the season be set as summer for that location, or should I list all of them?
yeah had a feeling, suprised there isnt another mod that did this
Supply and demand
hmm seems pretty doable, just a bit tedious
you could just duplicate the town.tmx file, edit it so you delete the stumps then put a tree spot on the paths layer, then do patches for each section
Maybe u can make it real trees
at that point you've effectively made the mod over again, which is what chu was getting at
Need rtf/BETAS for existing save install
ooh congrats chu on ol slitherlegs
woah ur rainbow
I slither right over grass
yeah id do it myself since its simple enough but it might count as mod piracy, idk
Well the other problem is that i think town tmx changed
So u really should start from new copy of town.tmx from unpack
yeah itd be more simple to start from scratch
after some testing both with current release SMAPI and a version with my PR applied just to confirm things, yeah, what SinZ (and a bit of atra) said is correct in that currently SMAPI already does not know how deeply nested the map is. if you're editing Maps/Mines/10.tmx, you currently do actually need to change your image sources to be Mines/mine.png or Mines/volcano_caldera or whatever, otherwise SMAPI will load them from Maps instead, and throw a strange error about converting Map to xTile or whatever. so from SMAPI's perspective, they would still only need one directory climbing segment ../ to get out of Maps and into Content, because they are starting in Maps and have been before this PR too. if you wrote just townInterior as your image source for Maps/Mines/10.tmx it will just work already in both existing SMAPI and post-PR SMAPI. and in testing, none of the three functions FixTilesheetPaths, TryGetTilesheetAssetName and GetContentKeyForTilesheetImageSource ever even know that 10.tmx is in the Mines folder in their current form because none of the variables used (imageSource, relativeMapFolder, relativeMapPath, etc) for relevant checks ever included the Mines/ prefix, as far as i can tell when i Loaded over it
the ||secret path east of clint's that leads to a hidden book|| is definitely new in 1.6, for example
that will be missing on a 2022 vintage town.tmx
Aged like milk 
Hmm, that's unfortunate and probably not intended. I guess we can keep it as-is for this PR then, and I'll look into it some more later.
1.16.16 mine map dehardcoding as an excuse to fix it /j
(ive actually run into that issue in the past with editing mine maps too but just assumed it was intentional... oops)
@ivory plume idk why but for some reason simply getting the value of Character.StandingPixel for the farmer while riding a horse can lead to the farmer being drawn behind the horse when facing down. It happens in a Postfix to Farmer.MovePosition
I can work around it, this doesn't cause a problem:
var bbc = f.GetBoundingBox().Center;
var tilePos = new Vector2(bbc.X / 64, bbc.Y / 64);
@inland rain Are you patching any of the other character methods (e.g. GetBoundingBox or GetSpriteWidthForPositioning) or changing the character position/size? That could happen if the methods are returning the wrong position/size for some reason, which would result in the cached standing pixel being set to the wrong value, which would then affect the layer depth calculation.
quick question, for questions in dialogue, is the fallback dialogue said when the player talks to the npc again on the same day, or what the dialogue fallbacks on for the next time the key is applicable?
if it's about $q, the fallback is specific to that instance of the dialogue, so the latter (the next time the key is applicable). typically that's not the same day, since typically NPCs get one daily dialogue and no reloads
oh okay, thanks!
are there any mods that edit the last floor of the mines? just making sure my map patch wont conflict with any other mods
I don't know of any, but I am not particularly into mines mods
You can always go with the strategy "see if anyone complains about compat then add it if they do"
ah yes the fuck around and find out method
my favourite
I often see creators list support for other popular mods like RSV or ES, but not SVE. Is there something specific that makes SVE harder to support ?
yes. it edits nearly (or maybe fully) every vanilla asset, often in major ways and frequently without regard to other mods. depending on the nature of your mod, it can mean literally making two versions, one to work with SVE and one to work with vanilla
other expansions are, almost without exception, much more self-contained and usually require only minor considerations, if at all
(there are also a few mod authors who refuse to offer compatibility with SVE and therefore don't list support for it, but those typically also say that they won't offer it)
wow, no wonder compatibility is such a pain…
Tbh it is fair to handle compat by scream test
Ie, I'll fix it if you tell me about it
Sometimes it is also just about listing mods u tested with 
I tend to make a "mods in screenshots" section so ppl don't have to ask separately
i always think about mod compat as happy accidents. like if it works without intentionally making a compat patch, then cool
hewwo! quick question. I want to make a tape player that when you feed it a tape it gives you like, a line or two about the type of music that's on it and then if you interact again it gives you the tape back. Would that be a bigcraftable a regular craftable (like a machine) or something else entirely?
C# def. whether you make it furniture or a craftable doesnt matter ig 🤔
You can make a machine i guess
Machine with output DROP_IN and load sound (the music) -> emc action on ready -> some kinda action to show text afterwards
1st step is vanilla
Nothing that I'm aware of since editing mine maps tends to be a little twitchy. Floor 120 should in theory be fine to patch into as long as you don't mess with the dangerous toggle shrine/account for it)
oh boy! my first c# modbits 😄 everything else I've done so far has been for Content Patcher so this'll be fun to try
hmm where is the dangerous mine toggle? also if mine maps are not recommended for patches, im honestly fine with the patch being in the entrance of the mines
Thinking about getting into modding specifically bc Skull Cavern Elevator is not compatible with current version lol, I have a bit of prior java experience and want to make my own version. Thinking it's relatively simple as im guessing the game has built in variables tracking how deep in the cavern you go and I am hoping I can reuse the functionality of the main elevator. Anyone tell me how feasible this is for a beginner? I don't really have any inclination to code anything else for SV I just really want this mod lol
Most of the mine levels are duplicated and then added in with C# (that's why most people avoid them), but 120 should be static.
The dangerous shrine should be the thing between the two snake pillars on that map iirc
hmm i actually am patching that spot, so i will stick with the entrance 🙂
Mod compatibility list says it should be? Are you running into issues with it? Or is this for Android SMAPI? https://smapi.io/mods
yeah im currently using it rn and it works for me, are you using an older version?
It hasn't been updated in months, it loads properly and tracks what level you are down to, but the buttons don't work for me, and I have seen several people with the same issues
Maybe I am just being silly, I'll check if I missed an update or smn
I can third that skull cavern elevator works fine. Could use the elevator buttons and everything , even to floor 500 something 🤔
Weird, yall get it off of Nexus or Curseforge or smn else?
Oh definitely Nexus.
(Stardew itself has also not been updated or changed in any way in months)
I wouldn't use CF unless a mod is exclusively there, I expect a lot of stuff there to be either out of date or pirated.
Thats what I figured
Guess I shouldve asked about it in the other chat first, didnt mean to go off topic here, sorry guys! Ill mess around with it
the mod does have a lot of assorted bug reports (mostly duplicates), but it's technically up to date, and closed source so I have no idea what a similar implementation would require 
aedenthorn's Better Elevator seems like an alternative if needed, though it's much simpler mechanically
(that said, it'd be a trivial mod to recreate)
Anyway if you're up to date on all your mods, you might try posting a log in #1272025932932055121 as there might be an easier solution than updating it yourself 
Thank you guys, appreciate it
when using C# do you use the same type of field and effect language like OutputRules, OnlyCompleteovernight etc? sry if that's a stupid question haha I know there's always a section on the modding page that has extra stuff but I wasn't sure if the above stuff for CP applies to the C# too
I nominate u 
for my custom npc, lene, they talk a lot about specific facts from books they read, so it might feel jarring or weird when they repeat that dialogue. but i do have specific dialogue for each heart hevel/day of the week, so will repeats not happen much? they also live in a village that you access through the mines, so they're not easily accessible often, since it's not easy to walk all the way there
(well last i used it it wasnt broken, so..)
Content Patcher is a C# mod. its just editing the C# parts for you based on your json. the classes are not different. if you're making a C# mod without looking in the decompile, you should be looking in the decompile
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
omg i misgendered my own npc 🤦♀️ im so dumb
(It's probably an issue with controllers tbh)
Meanwhile I'm like "skill issue"
Sugar, I wouldn't have noticed. Some of my best friends are they/thems
Anyways
$1 is useful if you don't want an npc to repeat a line
I did a lot of that for Demetrius gifts because I figured you won't want to get long ramblings on biology every time you handed the man something
(Don't ask where that project is. All my mods are vapourware)
my quick question isnt taking away friendship points with the choice that should, why...
can you send your json?
One time i kept doing that to the point where i just changed their gender
😔 i just gave up and went "you know what sure fine"
Everything works fine and theres no single message in the log saying i did a command wrongg so idk why its not working https://smapi.io/json/content-patcher/dcbe85e2fae546cf9c8aa2cf946b1a55
the only thing different for that friendship line is the space right before it but i dont think that would cause anything?
i might know the problem
With different dialogue for each heart level and day of the week it should be plenty.
Also it never seems jarring to me, personally, when I see repeating lines because usually a week or more has passed since I've interacted with the character and enough has happened in between that I either don't notice or don't care
oh okay. i might be overthinking this haha
I suppose with mentioning specific facts I could see the concern because it's not generic but I think it'd still be fine
i forgot to turn off no friendship decay in CJB lmao im an idiot
i guess players might understand that theres a limitation to having fresh dialogue each time, or maybe they just dont care lol
lolllll that kind of stuff happens too often
happens to everyone, ur not an idiot 
yyou'd be surprised of all the silly things i do
does anyone know where SVE sets festival positions if not on the map? because people aren’t standing where they’re supposed to in game and i’m tweaking
festival positions json just has advancedmove stuff that isnt relevant to my case
Methinks maybe in the individual festival jsons
sve might do this kind of stuff if you cant find it anywhere
I opened the fall16 json and found stuff that looked like positions
it's for advancedmoves, the set up with all the positions are in the tmx
Really?
I scrolled down
Like way down
Idk ive never set up festival position before
that NPC tmx layer stuff is for vanilla NPCs
but i checked the map, and they arent
ohhhh ok
im specifically searching for emily's position, which is why i'm tweaking that it's not on the map
and thus, i cry
oh, well then she may very well be placed via the tmx
but the tmx doesnt have her in the position she spawns in in game
im not sure though
Is it in setup_additionalcharacters like they're modded NPCs?
is she in additionalcharacters?
additionalCharacters isnt actually just for modded NPCs, you can put anyone in there
if they were already added via the tmx or the main setup command, theyll be changed
she is currently overlapping with my npc because i thought nobody was standing there, but apparently everyone spawns in totally differently for some reason. let me go check
useful for changing people in vanilla who are in the main command without fragile textoperations
festival positions are a pain honestly 
I assume you're talking about schedule dialogue or locational dialogue here? You can always randomize it if you're worried.
yeah im stumped. i dont see anything
let me try searching with vsc because this is gonna piss me off
honestly i just trigger the festival in game then use debug mode mod for positioning
festival positions are annoying but fine, it only gets horrendous when you gotta think bout doing sve compat tbh
Spirit's Eve 
thats why i only send constance to festivals, none of my other npcs gonna go
That's why my spirits eve solution to SVE compat is to turn it off
i'm going to explode i think. NOWHERE does he seem to magically move haley OR emily
i mean are you certain its SVE thats doing it then
people have reported it with sve, and not without sve, so i'm assuming yes
do you trust users to pinpoint it so accurately
i would still do a patch summary just in case though to see if something else is touching the file
failing that, a mod folder wide CTRL F search for Emily
(SVE mod folder, that is)
i did ctrl f emily, i think ill have people do a patch summary
maybe it's the position offset in the festival json files?
what should i have them patch summary? patch summary Data/Festivals/winter8? or just. entire game
there's quite a big position offset
have you not recreated the emily overlap yourself
(also i dont actually know. i dont remember the patch summary syntax)
ive had other people reproduce it with sve installed, but i will try it myself rq on my small mod loadout
i would absolutely never try and debug an error i did not reproduce myself
…true
im waiting til the festival starts
lets see who the real culprit is…
just repro'd it. its sve
UGH but WHERE does she get set
Why am I not surprised it's SVE?
well at least now you can patch summary it yourself
patch summary'd it, still no clue
and your mod list is just your mod and SVE, nothing else?
the requirements for sunberry yes
is there a way to like, see where festival positions are set when exporting.......... im gonna chew wood
for fucks sake the layer was turned off
for the setup bit
im so done bro
i am just a silly billy it seems
everyone is entitled to a number of hours of silly billying per annum
What is the number
wouldnt you like to know
8760
silly question, when making an event on the Forest map. the trunk blocking the path to the deep woods, does it appear always? is it never there? or it depends if the player removed it or not?
because i'm trying to frame where my character is coming from and like, I don't want her to go through the thing if it's there
I think it's only there if the player hasn't gotten rid of it
ah, finally. it's fixed. yip
is the door to the shadow people village ok design wise? also, is it "realistic" that it'd be right next to the minecart trail because when it's in use... you can get run over there (like, if it was to be irl)
i removed some collision placement so it's like a hidden trail
You can also use a chair in vanilla
I do like how the door looks but also would they advertise, for lack of a better word, using a shadow person, that that's where you can find them when their enemies are so nearby?
I think it's a cool spot to put it though and didn't even think about the minecart track being too close
I think that makes sense
And also for a door to your NPC, I think the entrance will be easier to access than the bottom floor anyway.
You should also be able to have your NPC path out of your location into the mine entrance/into town if you so desire
(I'm not positive if you can path out of floor 120 without serious shenanigans but I suspect the answer is "No")
floor 120 doesnt even exist if you're not in it, so i wouldnt bet on it
"ArtifactSpotChances": {
"AdventurerSummit": 0.02,
"Custom_AdventurerSummit": 0.02,
}
Will adding Mines to this work, to make it diggable?
Where is this
Object modifiers I snagged from SVE for formatting.
I had a custom gem that I made, but I don't currently have it set up to need to be donate-able. But I've gotten a few messages about people wanting to donate it. I don't currently have any way for players to get it, outside of cheats
probably not
Tbh try it but my guess is no
each underground mine location gets created on demand with the name UndergroundMine[Number] or smth like that
and on top of that i think it might have its own artifact digging rules? dont remember
yeah, i dont think thatll work unless you specify every possible mine number. and its only used for the RANDOM_ARTIFACT_FOR_DIG_SPOT item query
would be easier to add your artifact to the ArtifactSpots list in Data/Locations for UndergroundMine
which will encompass every single undergroundmine floor
aren't you going to share with the class 
Hey I had spicy tomato rice noodle soup for dinner and it was good
I can share some with you
Hmm I should eat dinner
I am potentially changing the character position in the mod, but only if the character is trying to run into an object; I don't think any change is happening when the bug occurs, but maybe I'm missing something; thanks for replying, it's no big deal just thought it might be worth mentioning
how to get the total playtime of the current save?
Farmer.millisecondsPlayed seems to be the value used at the load menu
somehow I've never noticed that UI bit 
(fun reminder that the 'mini save' thats used for the load menu is just the serialized form of Game1.player, so a bunch of random crap is on the farmer object just for the load menu to work)
(that's how i found the field, lol)
"this is displayed on the load menu so it must be in savegameinfo/must be saved on Game1.player somewhere"
it causes funny things with split funds enabled in multiplayer where the load menu will say I have 0g, as the other farmhands have all the money
Can u have different playtime
it's a netulong, so it syncs
hi all, i'm requesting the mod author role here as per git instructions. here is my nexus mods profile: https://next.nexusmods.com/profile/fantasyandmana
you need to add yourself to the wiki
@outer glacier cheeto dust requested
The Junimos want people to ask here before adding themselves to the wiki
Does anyone know off the top of their head if the female LeahEx sprite ever gets used?
Yeah, if farmer is female.
All the event references so far are about "Mr. K" and don't seem to reference a female ex, so I figured I would ask to be sure
If Farmer is female, then Kel also becomes female. She still uses "Mr. K" as online handle.
gotcha
HUh I thought it was Ms. K
Nope, I'm looking at the internet event and it definitely only mentions Mr. K
there's no gender switch
Yea. That's the reason why the non-binary Kel mod also still uses "Mr. K."
I have to edit the event anyway for the rename, so I'll just add the gender switch myself. 🙂
Oh, are you making a mod that changes Kel? I'm also making a mod that changes that event. Would you mind a DM to discuss compatibility?
It's going to be unrelated, most likely! This is for my Legend of Zelda NPC overhaul mod. So the odds of ANYTHING being compatible are pretty low, LOL
I'm touching a lot of files to replace all the characters.
Aa yeah. Well my mod adds a portrait to Kel, so it still could be compatible if you want to give them Zelda-style portrait too...
For the sake of my sanity, I am not planning for compatibility with any mods except for purely additive ones, since every NPC name is changing in addition to portraits and sprites.
Anytime another character says the old character name, it won't make sense, so I'm not even gonna try to make it cross-compatible with other NPC mods.
(if it was easier to use tokenizable strings in events, that would be less of a mess)
thinking once again about pulling j-club-style shenanigans to automatically change plain references to vanilla NPC names
That was a very cool thing that got done, but I have 0 C# knowledge, so I can't do it that way, LOL
Dolphin, if you want to add gender switches to your own mod, it's pretty easy! Just replace all instances of Mr. K with ${male^female^non-binary}$ options instead.
So basically all my mod does is add portraits to event characters that don't have portraits (Marcello, Kel, MaRILDA), so if you changed their sprites, we can still do compatibility if you'd like. (Though just ignore me if you've already given them portraits of their own. 😅 )
I'm not making a Kel or MarILDA portrait, but I did make one for Marcello already. He's a Business Scrub in my mod. xD
Kell is becoming Fado in my mod, because the character name is used twice in the Legend of Zelda franchise, once for a female Kokiri in Ocarina of Time, and once for a male Kokiri in Windwaker.
So it works out well, especially since Leah is becoming Saria.
I see! Admittedly I know nothing of Zelda but it's cool you can do fitting reference like that!
I still need to make so many map tile NPCs
So many random Gerudo and Gorons and Zora in my future.
(whats difficult about it? /gen)
There's a few places where you can't use tokenizable strings (namely anything that uses a direct character name but is already located in the Strings/ folder), so something like using a token for the localized NPC name doesn't work.
It'd be nice for consistency with it in things like events, though, but it'd only be useful for modders who want to change the NPC names, so it's unlikely to ever happen in the base files.
is there a policy for taking base game assets and adding them as furniture? like is there a way to tell CP or AT to take sprites from a different sprite sheet?
im confused by what you mean with the "anything [...] but already located in Strings" part
Stuff that's located in Strings doesn't typically parse tokens. I'm not sure how to properly explain it, but I've run into it before.
whether something parses tokenizable strings has nothing to do with what asset its located in, though
Like I said, I'm probably not explaining it well
and events do run the entire raw script through the tokenizable string parser
so using [LocalizedText Strings/NPCNames:Whoever] would work
That's why I edited my original comment, to explain that it wasn't just an Events problem.
The Events problem is just that you'd have to edit every single event to use the LocalizedText reference because they currently don't
It's very possible that I just happened to run into a bunch of JSON files in the Strings folder that did not like my localized text strings.
Farmhands have independent playtime as farmhands only increment their timers while online, but 'host' must have the largest value unless you have done save edits
(I remember the World Map tooltips being frustrating when trying to change the names of residents)
(They do in the upcoming stardew 1.6.16, but alas not currently)
world map tooltips are one of the things that do use the token parser, so they should have worked
interesting.
but the tokenizable string would need to be in the tooltip
Mine definitely just kept popping out unparsed.
not replacing whatever it was loading
When did the parsing get added to worldmap tooltips? It's possible I tried prior to a change there.
This was probably at least a year ago.
when do when conditions re-check? my map edit when has read letter isn't applied
daystarted unless you tell it to care about other lifecycle events with the Update field
i dont have repo access /shrug but i imagine since 1.6 at the very least
since itd be a user-facing string and those were all converted to tokenizable strings
but if you were doing EditData on Strings/StringsFromCSFiles itself, that wouldnt work
That was definitely one of them.
(to replace whatever was in thjere with a token i mean)
As well as Strings/1_6_Strings
There were quite a few names in there that needed to change.
right i just mean like. this one for example:
"Text": "[LocalizedText Strings\\StringsFromCSFiles:MapPage.cs.11119]"
this is a world map tooltip. if you want to change what goes there, you replace the entire line with your own LocalizedText token e,g:
"Text": "[LocalizedText Strings\\MyAsset:SomeKey]"
dont go edit StringsFromCSFiles
Ah, I see!
the tooltip itself is always going to parse a tokenizable string. always. but if it parses a localizedtext token, it just means its going to grab that key from StringsFromCSFiles
its not going to parse what it gets again as another token
oh that would be why then. do you think it would be better to do an update rate of on location change, or to have some other trigger? i could maybe get around the letter if i sent the letter now when you reach 10 hearts and then did when letter sent or smth else that will refresh in the morning with the letter
if you're curious, this is a rough list of every place that tokenizable strings will work in: #making-mods-general message
its not 100% exhaustive (there are 70 places in the decompile that call the string parser) but they are all in places that a player would see the resulting text
(notably, mail is not one of them, bc they dont work in mail)
if you can live with waiting until the next day to see the result, it's always best not to specify a faster update rate
I had previously tried something like "Text": "Home of [LocalizedText Strings\\NPCNames:Elliott]", which did not work as intended.
I don't feel like looking up the exact key from the previous attempt, but that was roughly what I was attempting to do
I probably just did it wrong somehow though.
if i had to guess maybe the formatting of the token or key was wrong or something was improperly escaped or somethin like that. bc tokens for sure do work there. they have to, bc there's no Data/WorldMap.fr-FR.json for example
the only way to get translated text in there is via a tokenizable string
(pretending content patcher isnt a thing obv)
mhm.
That reminds me though, since I do intend to try to i18n this mod eventually: Shouldn't be anywhere that won't take an i18n token that we know of, yes?
the game wont ever know you used one, so if it doesnt work, itd just be bc whatever text its used for is cached
excellent
like item descriptions or whatever
or names. idk. i never remember whats cached
but yeah when it comes to CP tokens, the game has no possible way of knowing you used one. CP replaces them all before they even get to the game
they are functionally identical to writing the text directly in your content.json
I never Load my entries directly without a blank JSON or an existing one to EditData on for tokens, so hopefully that goes smoothly later then
You can set the texture for a piece of furniture to any asset that you want. The final field in the furniture string is the texture field.
(a good reminder for me to clarify for anyone else reading that what i said doesnt apply to Loads where tokens arent replaced)
alright, time to figure out what's left on my list that I can use to procrastinate on trying to to fix the Wolf Link sprite
Conversation topics, maybe. Let's see if I can work those out. 😄
okay forreal i do NOT know why this keeps happening but has anyone else had GMC mod menu in game bug to where it literally will NOT close because it keeps happening in the middle of my days and i can't for the life of me fix it without closing my game and losing my progress or sleeping with half the day left unfinished
debug tailor is the current fix last I heard, though I think there was a PR waiting to fix that bug?
yeah, it's a known bug in the latest version. downgrade or debug tailor
oh my god
you are a lifesaver
thank you both i can deal with a console command input if it happens again i don't mind i was just distraught abt having to skip days

This is also the wrong place for those kinds of questions, in the future. xD (#1272025932932055121 would have sorted you out very quickly)
OH yeah that's right
i'm so used to just being able to ask things here, since the last time i played was a good few years ago and there wasn't a forums channel for mod help back then ^-^; my apologies
For editing/adding sounds, I'm a bit confusd about the FilePath entries, because the one on the wiki just straight up isn't an absolute file path??
Is there a list of the tokens and what they do? I did a full search on the wiki and that's the only instance of that token
{
"Action": "EditData",
"Target": "Data/AudioChanges",
"Entries": {
"{{ModId}}_Music": {
"ID": "{{ModId}}_Music",
"Category": "Music",
"FilePaths": [ "{{AbsoluteFilePath: assets/music.ogg}}" ],
"StreamedVorbis": true,
"Looped": true
}
}
},
What if the furniture is split across two sprite sheets or somehow just not contiguous on the original sprite sheet? I guess my question is more about whether or not its ok to reupload stuff in base game sprite sheets for your own mod
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md
that token means "return the absolute file path of this relative file path"
like permission stuff and copyright, not really about execution, is what im concerned about
so for c# I should just ignore it and use the real path I'm assuming
for C#, you'll want to use Path.Combine(YourModHelper.DirectoryPath, "assets", "music.ogg") (to follow that example)
I might have to edit the page once I get finished with this because it's not very clear lol
yeah this is what I already have, was just weirded out by the wiki
If you have to make a new spritesheet to turn vanilla things into furniture I think it's considered okay to upload. Though you might want to check it hasn't already been done with the items you're thinking of, because I've definitely seen mods that make furniture out of vanilla non-furniture.
it's very content patcher focused
the wiki example you pointed out there is for Content Patcher, which is normal.
the wiki says its an example for a content pack
I'd leave it alone.
specifically a CP content pack as it links to the CP page
I mean to add a c# example like there was before the 1.6 changes. there's no such example now
(Not that you can't do it if it's already been done, but just that you might not want to.)
I am in favour of C# examples being added to the wiki too. They are helpful for me xD
yeah for someone like me who isn't super well versed in content patcher it's not always easy finding what I need in the wiki. Just thinking I can make someone else's life easier in the future
(Is the wiki excruciatingly slow for anyone else right now?)
Doesn't mean it couldn't be more detailed. There's no reference to the type you're supposed to use for audio (which seems to be AudioCueData from digging in the code). Before there was a full example on adding a new sound in c#, now there's just a reference to a content patcher file. Even a link to that other wiki page would be a useful edit
that doesnt have an example for audio
which is a special case, as it requires an absolute path
Maybe a note about that would be good, but id be hesitant of a full modentry example on the audio page ig
Duplicate info just means more maintenance
you dont need a full modentry. just explain how to use Path.Combine for it
I seriously questioned what new word modentry was for a minute there before realizing there was probably a space or a capital letter intended. /lh
i think the C# example for adding a new sound should probably stay gone, since it detailed a method (adding directly to soundbank) that is no longer recommended now that we have Data/AudioChanges
ichor, this is for an example of how to use AudioChanges via C#
agree, but that's not the point I'm trying to make. I'm just saying that before there was a useful guide for how a c# modder could do the same thing as content patcher.
I'm just suggesting that I add some links to relevant pages and add a snippet for what to do in c#
I think they meant a link to the page Pillow linked?
that and some info about the correct types to use, and the bit I asked Button about re: the correct path
i wouldnt say there is a reason to link to the page about editing assets, because the audio page isnt special in that regard
but a snippet for how to get the absolute file path would be helpful
-# tip: check out the Dataloader class if you want to know what type to use
I'm confused, why shouldn't it be easier to get around the wiki? imo searching for modding pages isn't the most convenient
because that other page is already one of the top links in the modding index
yeah that's how I found it
its the page you see first when you go to the modding namespace, or one of the first
If it's a CP focused page, content modders are easily confused sometimes
and none of the other pages describing data assets have examples like that
all you need to do is Modding:query and it works the same as the normal search
the only reason Audio does is because it is a special case
oh I didn't know this 
I think see also sections should be reserved for stuff that couldn't apply to 12 other pages
(when searching on the wiki it also doesnt have the Modding namespace enabled by default either, but you can toggle it)
I guess I'm comparing it to something like wikipedia or other docs where relevant things are just linked so you can easily jump to them.
it's not, there's a c# section about managing audio at the bottom
it just lacks any notes about doing the edits
Then just add your tidbit to the section I dont think its super deep lol
you can also log in to the wiki and set your preferences to make modding included by default! it's what I do
If someone doesnt like it they can edit it
you mean i don't have to keep every single modding page open in a browser because i'm too lazy to advanced search?? wow
yup, it's in your preferences for the wiki 
anyone have any tips for someone getting into mod making?
I just do modding::term I'm searching for
!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.
thank u!
https://smapi.io/json/content-patcher/45a9b3412f754a34be3a9fe801c5bc37 is this not the correct way to write this? i'm trying to have a custom location where, when the farmer visits it, it regenerates their stamina, but only when they're in the location
needless to say i'm not regenerating stamina when i visit lol
these trigger actions dont have a MarkActionApplied field set to false. so they run once and never again
ah damn, that got me again! thank you
Hi! Sorry for missing this ping! If you could please add yourself to the list of modders on the wiki? https://stardewvalleywiki.com/Modding:Community
Hey, to any of you working on NON-romanceable npcs, do you have plans for some special, extra, or endgame content? It’s something pretty interesting to think about, though I know adding any of the ideas I’ve had is going to prolong production time by a lot…
I’m interested if anyone else is doing something similar 😄
mine are currently non-romanceable! one cool thing i've done is have the 10-heart event reward the player with some kind of item or buff as a token of friendship
that's what i'm working on right now as it happens lol when you reach 10 hearts with one of them, she gives you access to a room that regenerates stamina when you're inside it
Oh, nice
I’m definitely planning on having a lot of events, even though I don’t know what most of them will be yet! I’m also thinking about adding in a special reward for players to unlock, but it’ll take so much time for me to make on top all the regular stuff my mod needs 😅
no problem at all, i've added my information to the wiki 
yeahhhh i planned to have this update out only a little bit after initial release, and here i am two months later because i keep adding things lol
Welcome to our newest cheeto @dire kestrel! achoo Enjoy being coated in cheeto dust!
I’d love to create a character that people will be interested in, even if they can’t romance the npc.
Making a romanceable character is too much work anyway nevermind that the other stuff I want to add to make up for not making a marriage candidate is a ton of work also
Not all characters need to be romanceable.
yeah i feel like romanceable characters are honestly overrated, romanceable != better
I really enjoy the process of befriending and getting to know people - their backstories and their arcs can be just as fulfilling, if not more so.
i really love unique non-romanceable characters like jorts and jean haha
i wish there was honestly more to the non-romanceable characters in vanilla, but were honestly already spoiled with so much content so im not gonna wish for more lmao
That's where I feel like many of the non-romanceable modded characters fill a huge gap.
Jorts and Jean are a great example of that.
I want more non-romanceable characters! 
Same, Aba, same!!
also sliiiiighty off-topic but: is the sdv official forum pretty active & worth beung active on, esp for mod making? just curious
I hope my mod can deliver that for the people who want it!
6 mods in the last4 months which is more than I expected actually https://dont-ever.download-ram.online/jbKAXtxcWi
The forums are where a lot of unofficial mod updates are posted, too
So it's beneficial to know your way around
Vanilla bug reports have to go there, so that part is active at least
k thank you! good to know. i just saw it in the [[Modding:Community]] page and was curious cuz i didnt know that existed
I loaded up my game this is what smapi says about the portrait mod. Can't apply image patch "BodybuilderAlex > EditImage Characters/Alex" to Characters/Alex: FromArea size (Width:0, Height:0) doesn't match ToArea size (Width:64, Height:416).
The FromArea height and width have to be identical to the ToArea height and width, which they are not.
um, for my shadow village thing, the best name i have for it is the "Shadow People Village".... which is... not very creative lmao. im having trouble like making krobus-esque names that are in the fictional shadow language
also im hoping to have some of shadow people speak like dwarf before you learn dwarvian, do i need c# for that?
speak like dwarf, but different letter combos ig
Does anyone know if the mossy, green rain, and mystic variants of trees can be in Alternative Textures? The guide only helps so much before I need to resort to asking someone else.
im assuming you need c# for the language change
You can fake the language change by doing conditional patches once the player learns the shadow language (I assume you mean that and not that it's actually Dwarfish)
yup, that's what i mean - sorry i worded it confusing! but im not really sure how to convert the language to "shadow language" before the player learns dwarvish. i could just directly write gibberish into the dialogue ig, but that's kind of lazy haha
No, that's what I am suggesting
Use gibberish and then patch to the actual dialogue once the player learns the language (although why would learning the dwarf language help them understand shadow people?)
ohhh okay! i mean, it works? and translations can also be just gibberish lol
there'd be different conditions, in this case an event trigger
I haven't tested it or anything but I don't know why it wouldn't work. You can't use a fun alphabet or anything, it would just have to be rearranged English (and Korean, Portuguese, etc for the translations) but it's the same principle as any other conditional dialogue patching.
But that's the same as vanilla anyway iirc
honestly now that i think of it the directly patching idea is actually better, since i can be more flexible about it (e.g. leaving "krobus" the same, since it's from that language itself)
yeah, honestly just using english makes sense since it's verbal
thank you 
patching NetInt.Get works btw, i just had to postfix NetFieldBase<int, NetInt>.Get and NetFieldBase<int, NetInt>.Value's getter with
static void postfix(NetFieldBase<int, NetInt> __instance)
{
if (__instance is NetInt netInt)
{
// ...
}
}
interestingly, patching NetInt.Set didn't work (it was inlined in some contexts i care about) but i figured out a workaround using events
okay wait i thought this was working but it looks like it isn't. how do i tell if it's the trigger action failing, or the buff? i copied all of them into here: https://smapi.io/json/content-patcher/e97aedf95bdd4a08a45bd14103531ef7
Try triggering the buff through the console
debug action AddBuff {{ModId}}_CrystalVoidRegen (replace {{ModID}} with your actual mod ID - for once!)
ooh okay it applied the buff so it must be the trigger action then
Next thing to do is check the condition
Go to the location and try debug gq LOCATION_NAME Here {{ModId}}_CrystalVoid (again, replace token)
i just tried entering the area to remove it and it did remove the buff
result true
That's good...I notice the json you just sent still doesn't have MarkActionApplied: false. Does your actual copy have it?
oh yes sorry i edited the old link to have the buff without having the markactionapplied, but my copy does have it
"{{ModId}}_CrystalVoidStaminaRegen": {
"Id": "{{ModId}}_CrystalVoidStaminaRegen",
"Trigger": "LocationChanged",
"Condition": "LOCATION_NAME Here {{ModId}}_CrystalVoid",
"MarkActionApplied": false,
"Actions": [
"AddBuff {{ModId}}_CrystalVoidRegen",
],
},
// crystal void stamina regen - remove
"{{ModId}}_CrystalVoidStaminaRegen": {
"Id": "{{ModId}}_CrystalVoidStaminaRegen",
"Trigger": "LocationChanged",
"Condition": "LOCATION_NAME Here {{ModId}}_CrystalAndNiko",
"MarkActionApplied": false,
"Actions": [
"RemoveBuff {{ModId}}_CrystalVoidRegen",
],
},```
Ok cool just wanted to rule that out haha
yep lol always good to check for stupid mistakes
Hum.
I have a tiny memory of something about the condition being checked on the location before the one you enter.
I don't know if that memory is correct, let me see if I can find why I think that.
oh hmm that would be problematic
Man, this memory is soooo nebulous
It seems like an extremely dumb limitation so I must surely be misremembering
I think Here is previous loc and Target is next loc for that combo, but I'm too on-phone to check
Oooh
Does it look like this, nic? #making-mods-general message
yep this is what i have, x2
"Id": "{{ModId}}_CrystalVoidStaminaRegen",
"Trigger": "LocationChanged",
"Condition": "LOCATION_NAME Target {{ModId}}_CrystalVoid",
"MarkActionApplied": false,
"Actions": [
"AddBuff {{ModId}}_CrystalVoidRegen",
],
},```
When Esca tested it they found it worked and then it worked for Clown.
Well, actually...
what really gets me is that when i manually apply the buff, it does get removed properly
so one works and the other doesn't lol
Are you testing this on the same save that you were using before you added MarkActionApplied false?
i don't remember, but i might be. let me try a new save, because if that's the issue i'll go bananas
You can use debug gqq PLAYER_HAS_RUN_TRIGGER_ACTION <player> <id>+ to check if it's run before
Current
wait a minute i might be stupid
they both have the same ID
i forgot to change one after copying
explains why one worked and other didn't despite being identical almost lol
Yup, only the second one existed
does CP (or SMAPI, or whoever handles it) always choose the last patch to apply when there are multiple identical entries? like does it write the first and then overwrite it with the second?
Yup (and it's CP)
haven't been able to work on my mod for like a month and i worry i forgot how to even code
I'm sure it's still lurking in there ready to spring out when you have time.
i'm off on vacation this week but it took me until right now to work up the nerve hahah
i did find some mistakes already from the last time i coded so i think the knowledge is still rolling around in my skull
am i supposed to add gmcm as a soft dependency when i add support for it to a mod?
There's no need for it to be a dependency i think
As long as you have a config.json it will pop up
wdym
I think Forsy is thinking of CP mods. But I think you're doing a C# mod?
yeah
Either way, you don't need it as a dependency in your manifest.
oki
As long as you've called the API and registered your config fields it will work.
for C# mods, specifying mods in the dependency list is mainly only for not loading your mod if hard dependencies are missing (eg Spacecore)
anything soft dependency is usually easier to do outside the manifest and do in code instead (like gmcm)
and load order isn't nearly as much of a thing in the C# world
iirc most of the mod code doesn't even get executed until all mods are loaded, right?
my memory is hazy on the exact order, but iirc the rewriter/validator phase runs over all mods, no mod code is executed at all
then a first pass of initializing the ModEntry class of every mod to shake out the mods that error out doing that
and of the mods that survive that, then they run the Entry method
-# I really shouldn't be asking things until I'm properly awake, I ask enough dumb shit as it is
that sounds about right though
any logic running after that is mod defined behaviour like listening to events, harmony, etc
but once mod code has executed (even at the constructor tier), the rest has an asterisk because harmony is unlocked and can change things
the order of those 3 steps I'm confident in, I just can't remember if any of those sections to multiple steps per mod or not
I think no one is allowed mod code while the cecil is happening, otherwise someone would have done a harmony patch to add cecil logic to patch other mods by now
(probably me tbh)
I thought patching other mods is frowned upon and can earn you a polite 🗞️ from pathos
I've harmony patched other mods (and smapi) more than I've patched stardew
probably more about the spirit of things than just doing it, then 
I'm a true modder, I just mainly mod other mods
Metamodder
btw sinz, were you also interested in investigating mod-related memory leaks?
or was that just atra 
probably atra.
I'd look into it, but I don't have much infrastructure to track it, and isn't a big interest for me due to having 128gb of ram myself
your ram is half the size of my ssd 
(all nvme ssd)
skyrim modding isn't friendly to my disk
Hello everyone, and thanks for your help earlier. If you want to create a custom tool, is it okay to define its data in a Content Patcher mod and add its functionality (DoFunction) in a C# mod? If yes, what are you supposed to put in "ClassName" in the tool data? I tried putting the class name, or the class name with the namespace, and both times I got a SpaceCore error saying it's unable to find the class.
is it a public class?
Hi. Yes it is
"[XmlType("Mods_pwet_Placeholdername_ChronoTool")]
public class ChronoTool : Tool" in the namespace Placeholdername
Did u try the assembly qualified name
Can’t remember if it’s a necessity but I believe your Tool subclass needs to be in the StardewValley.Tools namespace
It definitely didn't for this WIP that I never continued working on, but I was also just spawning the tool manually and not adding it via CP at this point in testing.
namespace PortableBridges.Tool
{
[XmlType("Mods_DecidedlyHumanBridgePlacementTool")]
public class BridgePlacementTool : StardewValley.Tool
{
private void InputOnButtonPressed(object? sender, ButtonPressedEventArgs e)
{
if (e.IsDown(SButton.OemCloseBrackets)) Game1.player.addItemByMenuIfNecessary(new BridgePlacementTool());
it needs to be fully-qualified if not in the Tools namespace, e.g.```json
"ClassName": "MyMod.Objects.Items.ShrubTool, MyMod, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
for some ShrubTool class in MyMod with the namespace MyMod.Objects.Items
Wow, didn't expect so many answers, thank you everyone 🙂 I hope I'll get better and be able to help people as well
And to be clear, you are definitely also registering the type with SpaceCore in GameLaunched?
this.spaceCoreApi.RegisterSerializerType(typeof(BridgePlacementTool));
this.spaceCoreApi.RegisterSerializerType(typeof(Bridge));
Yes, in a OnGameLaunched event
Helper.ModRegistry.GetApi<ISpaceCoreApi>("spacechase0.SpaceCore").RegisterSerializerType(typeof(ChronoTool));
I lifted this code and didn't come up with it myself so maybe it's not how you're supposed to retrieve the space core api
I mean it's not going to be resilient to errors (like SpaceCore not being installed), but it's good enough for the early prototyping phase.
(I mean, if spacecore is a hard dependency, I think it's an expected error
)
Is all that documented somewhere? I tried reading some Spacecore readme but somehow was unable to find that information, I'm not excluding pebkac though
It's more just it's technically best practice to:
- Check the mod whose API you need is loaded.
- If it is, check the version of it against the versions you need.
- Then try to get the API.
- Check if you got it successfully. If not, log an error, if you did...
- Call whatever method you need on it!
But given this will be a hard requirement in your manifest, you could technically skip the first step... it's reallu up to you how far you go with it!
You're right, it's just not my number 1 issue at the moment 😄 But I will follow your advice
Like I say, yeah, the way you have it now is 100% fine for the phase you're in!
Guys, I have a question about map tilesheets created in Tiled. When I use map tilesheets from the vanilla game, I can't/don't need to copy the .png files, because the game will use the vanilla files in Content/Maps, but what about when I use, for example, a .png that belongs to another mod, will those same files be available in Content/Maps? Because when I load a .tmx with the content patcher, I just need to load the .tmx, there's no need to Load the .png to Content/Maps, so I'm in doubt, if I need to copy the .png file that belongs to another mod into the mod as well, or if because that mod has already loaded that png into the game it doesn't need to.
Yeah they did the part of Load
So u can have the pngs while editing then remove afterwards
Even if the png belongs to another mod?
Yeah u can look at their content json
Basically they did what you would have done if u were making custom tilesheet
@lucid iron @brave fable @blissful panther Thank you, it worked 🙂
What would happen then if 2 mods use the same name as a .png?
I don't know, mod1 has tile1.png
Mod2 has tile1.png
Mod3 wants to use tile1 from Mod2, and then how will the game know whether to use tile1.png from Mod1 or Mod2?
If Mod2 loads after Mod1, then both Mod1 and your mod uses tile1.png from Mod2.
Assuming they just do a plain load for the texture.
You also aren't likely to come across two tilesheet mods that name their assets exactly the same.
I haven't yet and I have almost all of the tilesheet mods there are.
When it comes to loading a map, you just need to give the Load command in the .tmx file, right?
The .png file is loaded by itself by the .tmx from what I understand
If it's a map for a custom location, you need to Load the map and also create the location entry in Data/Locations. If it's a map for an existing location you probably want to use EditMap to only edit part of the existing map itself.
No .png files get Loaded into the game unless someone's mod Loads them. A map file can't do that.
So, my question is about the png files
I'm helping someone who used .png files from expanded to create her map...
The question is whether or not she needs to remove the .png files from her mod from the final version, which are the same as those from expanded.
Definitely remove them for the versions that get uploaded!
It won't hurt to have them there, but it would be redistributing things you might not have the rights to.
That's exactly my concern... the issue is that the expanded .png files are inside the expanded folder, and not inside Content/Maps/file.png like it is in vanilla, right?
I also don't know what the etiquette is for using tilesheets that aren't from tilesheet mods but I imagine it's frowned upon. It's okay for SVE because it has very open perms anyway but for mods without open perms it'd probably be considered rude.
In general, it's just a waste of storage space if you're allowed to distribute them.
SVE Loads those .png files into vanilla's content anyway so they will be "in the maps folder" the same as vanilla ones.
How will the game know that that map is using a png that is inside Mods/Expanded/CP Expanded/assets/...
It won't
It will just know that the map is using a tilesheet called sve_exampleTilesheet and since there will be a tilesheet in Maps called that, that's what it will use.
Great
Yeah, the path of the PNG is irrelevant to the game. It's all about where it's loaded to in the game.
This happens with other expansions, or only the expanded one that does this work of loading the pngs for Content/Maps
Almost every mod that adds new tilesheets Loads them
But that doesn't mean that people automatically can use them. As I said, I imagine it's frowned upon.
And (I believe, correct me if I'm wrong Aba), a tilesheet for a map needs to go in Maps for a map to be able to use them. No Maps/SVE/mapTilesheet. Just Maps
That's why just the PNG being next to your map is the right choice, and how the game always knows where it find it. Because it's always in there.
Correct, unless someone's using ATA in which case they can access any image in the content pipeline (am I using that term correctly?)
Oh, I did forget about that mod!
And its functionality may make its way into SMAPI if Pathos deems it safe enough
I think that would be a net positive, personally.
Being able to reuse character sprite sheets for map tiles without needing to make a custom tilesheet? Great!
(you can use a tilesheet in Maps/SVE/whatever, the image source in your tmx just has to match everything after the Maps/, so in this case SVE/whatever would work)
I do too except for the increase in confusion that we'd get from the uptick of people giving their map assets names like Mods/MyCoolMod/myMapTilesheet.
Wait, what?! Subdirectories (well, "directories") in Maps works for tilesheets? Huh!
Yup! It's anything fully outside of Maps that requires ATA
And what about image editing, for example, using an image as a base and editing it, making a different version, does this infringe any copyright?
I guess that makes sense. I have never explored it because I don't see the appeal.
Not allowed unless the permissions specifically allow modification.
Unless it's a vanilla one
Modifying base game assets is fair game, but for others' content... it depends like Aba says.
That is allowed
Good thing I only make modifications in vanilla.
(SVE is unusual in that its permissions do allow pretty much anything* - most mods do not.)
* except conversions to other games, use in mods for sale, or uploading the mod in its entirety to other sites
So that's where the question remains, can you edit the file and put it in another mod? As long as it's only posted on the nexus, is that it?
If it's from SVE, yes. You have to credit SVE though.
yea this depends on the perms setup
I'm surprised we don't see more NPCs that are just minor edits to Sophia tbh
sve says you can do whatever but another mod's perms might say nope dont
eagerly awaiting SVE Expanded
Is that compatible with SVE, blueberry?
I was looking at the tractor mod, it's much more permissive, it's a MIT license
sadly not 
I think everything of Pathos's is MIT (but don't quote me on that)
ONLY works in multiplayer (splitscreen specifically)
Stardew Valley Expanded Expedited? SVEE!
for sve i was speaking of these bits rather than gh licence (i think sve c# is mit too?)
My guess is that they saw Tractor Mod is MIT because Pathos relies on the GH licences rather than specifying perms on Nexus.
I think Pathos just tends to bypass Nexus's permissions entirely, yeah.
I need to get a legal text to this MIT license, because I'm building a library in Python, a framework to create mods using the available frameworks: Content Patcher, Farm type manager, Item Extensions, etc... so I use the MIT license in it.
Which I would do except that if anyone ever whitewashed or de-transed any of my characters I want to be able to unleash the fury of a thousand suns upon them.
If a mod allows you to use and modify it, but does not allow you to post it on another site, but if it is for private use, can you? For example, if there is a group working, it is necessary to use github in collaboration, with the other people in the group.
I don't think u need to license your tool in any particular way cus you aren't shipping those mod's binaries
If this is still about sve assets i think as long as you don't repost entire mod it should be alright
That's what all those sve based rextures are in a sense
hey, does anyone here know how the "loved" and "liked" tags for movie reactions work?
the wiki says they refer to the npc's reaction to the mobie, but I'm not sure how a reaction can depend on a reaction...
no, like you can have a reaction that says "Tag": "like", "Reaction": "dislike"
as seen in penny's movie reactions:
How odd
oooh i think it's bc penny will like a movie if pam is there even if she dislikes it
no, that's a different block
well all i'm seeing is that tag is in reference to the movie and response is their response i'm just not sure what the tag like, dislike and love involve
maybe movies default to a reaction?
and in penny's case she likes all movies?
that's what I'm asking, wiz
sorry
I actually think they may be unused, looking at the source code 
i was hoping to find a blank or default block that'd refer to it but i ain't findin shit all
wdym?
like find a block that was for 'default' character which would be the basic reactions to the movies that the others would refer too y'know
oh yeah, that isn't a thing, the default reaction is just a blanket "like"
but that still doesn't explain the tag because the code doesn't access them in that way as far as I can tell
more stuff CA just forgot to remove then ig
Nevermind... I now realized what I did wrong...
Did a fast GitHub look and looks like everything is under MIT, except for SMAPI itself, which is under LGPL-3.0 license.
im worrying a little if the house im making is too large...
Bigger
is 70x42 big enough
Farmhouse or npc house
totally depends on the context - is it a small home for one person living in the woods or more like a boarding school?
what happens if you have a tilesheet climbing error on a spouse patio 
You fix it?
npc house

i cant draw furniture