#making-mods-general
1 messages · Page 11 of 1
Gotta love SDV's weird fullscreen
I've always wondered if it was a SDV thing, or liike, you know
a windows thing
(we used to have Fun Issues taking screenshots of autocad too for some blasted reason.)
....why are you punching nexus's servers
When I remote access my desktop from my laptop I can't run SDV in fullscreen without losing the cursor control
But I can run other games fullscreen
the fullscreen thing for recording is a windows thing im sure bc sharex does it for me for other games too
so, tell me if i am wrong but cant I do an event to make her move 2 up and the one right and up like
move TheFishmonger 0 -2 0/ move TheFishmonger 1 1 0/? (Idk how to do advancedmove without breaking my event)
Reddit post about it
(my understanding is that something about games/cad software causes it.)
she jsut walks offscreen with the second command :I
You can't have both x and y movement in one move command
damn
You have to make her move right first and then up or move up first and then right
so move TheFishmonger 0 -2 0/ move TheFishmonger 1 0 0/ move TheFishmonger 0 1 0/ ?
If you're on nvidia hardware then you can just use the overlay to record a video.
I'm not sure what ShareX is whining about though, we've all taken plenty of screenshots in the game in fullscreen (or at least I have).
!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!
Aaaand I forgot to reload so I just took a video of the same darn thing
yay, Constance isnt jesus walking anymore and also not walking offscreen
Yay!
maps/springobjects
i kinda wannna know what a summerobjects or a fallobjects would look like
Thanks Selph :>
Same thing but covered in leaves so you can't tell what it actually is
Some of the seasonal stuff is literally just colored slightly differently
Gives it more of that summer or fall aesthetic while changing literally nothing else
Winter feels the most noticeable with a shift to blue
But I also like blue, so maybe that's just me :P
I found the rock i want… now what
Is <season>objects actually implemented in the game?
Would it work if you just load summerobject and such I mean 
Probably not, probably needs the _
I found springobjects
what you want to do? Patch it? Use it as a base? Or was it a metaphorical question 
I use springobjects in a map, sure hasn’t thrown a fit about summer/fall/winterobjects not existing (so it’s never looking for one, definitely needs the _ to become seasonal)
I dunno how to free the rock
I wanna use the vanilla rock sprite as a template for my ore
open it in your image editor of choice and copy it into a new image to edit?
huh i wish i had seen this earlier, i collected some of em as a bunch for zelda
/sadly disables Fast Animations in my test mods folder/
rock.
(you can search for some tutorial for the most basic stuff, and keep the questions you can't solve that way for people)
Yup. That's a rock. Or possibly a potato.
contemplates a pr to button about Random r = Utility.CreateRandom(Game1.uniqueIDForThisGame, Game1.stats.DaysPlayed); in birthingevent.cs
i don't think there's another mod that sets it to a config
that or i just do it myself, break some eggs
Is there a way to see in Tiled which tiles are in use (anywhere) and which aren't?
wdym, the tilesheet? or do you mean if there's tiledata?
Example: DesertTiles, the very first 16x16 in the png. Is it used anywhere?
Is there a way to find if it is?
Other than deleting the tilesheet and seeing if Tiled will warn that something is still in use?
say if it's unused, what do you intend to do with it
Hi! I'm not sure what the issue is with this mod but it isn't being sent and I'm struggling a bit.
There's are the jsons.
Nothing, I just want to know what's in use and what isn't
Would make it easier to determine whether or not something needs to be recolored
!json better to use the validator
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.
i guess you can make a tiled extension to check for this 
It's pretty safe to assume if it's in a vanilla tilesheet it's being used somewhere in a vanilla map
I can't think of a way to find out without deleting the tilesheet and seeing what disappears - or recolouring the tilesheet. I definitely can't think of a way to find out how to find out across maps. But Tiled isn't a Stardew-specific thing so there might be info somewhere if you Google it.
It doesn't alert to anything and it doesn't have a recipe.json validator... 
Aye, but it's not the vanilla tilesheets I'm worried about 😄
Right but looking at your jsons as pictures is awful, much better to see them as actual text
you can put any json in the validator
and the format you are using is just content patcher
I think that that's a little above my paygrade
%item craftingRecipe <key> %% if you're sending an actual recipe, it needs the craftingRecipe and then your object or if it's cooking:
%item cookingRecipe %%
THANK YOU
Exactly the kind of labor I'm trying to avoid
but i do agree, throw us the json validator and we'd be able to see it easier
I think it's either, recolor everything or recolor some things and then test
Which will be also a lot of work
I figured it was going to be that
Even then, be it custom or vanilla tilesheet, there's a reason it's present, it's probably used somewhere by vanilla, one mod or another
Oh well
You could recolour in quadrants
Quarter blue, quarter red, quarter yellow etc
But if you just want to know if it is used rather than where, then like EnderTedi said it's just better to assume it is
I'll retest with the %item cookingRecipe <key> %% I was trying my best to figure it out on my own but I caved after trying to trigger it multiple times. Thank you!
Especially if it's not vanilla
I've seen a lot of duplicate tiles so far - and duplicate tilesheets - and not everything is in use
if this is more DTZ related stuff then you just have to take it up with the modder
I am interested in why you are investigating that
maybe even help them clean stuff up
Is it affecting something of yours?
I'm working on making some modpacks compatible with Earthy Recolor
Some do fine straight out of the gate
But others have their own versions of vanilla tilesheets
is the problem that you're not getting the recipe or that you're not getting the mail at all?
I wasn't getting the mail nor the recipe ;-;
if you're not getting the mail thats a trigger action problem
if you are testing on a fresh save and not saving during your tests (so the trigger action doesnt think its already applied) then its probably bc you have it set to DayStarted, but your AddMail action defaults to sending it "tomorrow"
so you might just not be sleeping one more day enough to notice that its being sent
Hmm yeah some people do not know how to only edit the things they need to change and instead just replace whole tilesheets unnecessarily. I can see that being a problem
or, if you were sleeping to get the mail, it means you are saving, and the trigger action was being marked as applied so any changes you made to it over the course of your testing were not going to be checked again
I'm working on updating a mod of mine using the Lumisteria Tilesheets but I do not know how I would add the tilesheets to my map in tiled. Normally to use a tilesheet I just add to the assets folder of my mod but since I'm using someone elses tilesheets I can't just do that this time.
You do do that actually. Just take them back out for testing.
Well i usually dont edit my map in my mod folder
That could very well be the cause of it, yeah
I always edit my map in my mod folder
I copy the map from my editing folder into my mod folder
that sounds like overkill
i ctrl+c, ctrl+v straight back into wherever i set my cp load 
you shouldnt be adding vanilla tilesheets to your assets folder for uploading the mod ^^
You can but also it sucks
You basically have to open poweshell in admin mode
feel free to disregard my terminal linux user brain 
Anyway basically you have tilesheet with map for map editing but not in mod folder for mod releasing
How you achieve that is based on what works for you
I am so confused. The reason I had been adding them to the mod assets is because I couldn't figure out how to access the vanilla tilesheets on the version from the Microsoft Store. I ended up using a decompiler to access the tilesheets
My mod deals with providing the map to the game content
can someone clearly explain how it works?
once you're done actually editing the map and packaging it for release, you can safely remove the tilesheet .pngs from your mod folder
maybe it's worth making a command for it
once the map is actually loaded into the game, the game will find the tilesheets for you
it's covered in modding:maps but comes up alot i feel
It'll still find them in the vanilla game files?
if you package the tilesheets in with your mod folder, then your map will use those first and ignore any recolours or anything like that that someone else might have installed
yes
I think people need a personalised response usually chue because a lot of people find it a very difficult concept
(Or future game update)
the map file tells the game "i want springobjects.png" for instance and the game will go "okay, heres springobjects.png"
it doesnt need to look in your mod folder
Ahhhh I understand now
but if you include the .png, it WILL look in your mod folder, and thats not the best
yea true, it depends on whether you can grasp the content load system
and to be clear. The same thing happens for other peoples tilesheets. They add the tilesheets to the game folder while the game is running. So you dont need to include the image in your assets
(was that explanation good enough, i dont do maps often so i mightve missed something like what lumina said)
Pet grievance: having to reboot because Windows has decided that a folder is "in use" when it really effing isn't.
(you just need a manifest dependency if you're using someone else's tilesets)
I very much understand it now! Thanks for the help everyone
had to do a little bit of redneck engineering, but id say this isnt bad for my first ever sprite
^ when another person creates a tilesheet mod, they add them to the game, so when your map file says "hello game i want lumisteria.png" the game will go "ok, this other mod gave me lumisteria.png already so here you go"
I should be sleeping but ill be around in 11+- hours if you have issues at this point
OMG ITS SO SMALL LMAO
you can put their tilesheets in your folder when making the map so you can actually edit with it, but just make sure to delete it before you publish the mod
(Missings words : sign i should really go)
Toni if you want to post screenshots it's best to zoom in to 400% and then take a screenshot of that. It will show it at SDV size.
Hey guyss, if i only need to change things that mention Haley's name, i can delete things like that?
That seems like so much work Button
The original files (pt-br) will cover it, right?
its less work than zooming in and screenshotting it if you're just wanting to send it on discord
resize to 4x (same work as zooming in to 4x), copy the image, paste into discored
For me it is literally just zoom, snip, paste
you can send images in discord directly from your clipboard
Yeah that is what I do
yes
Can't you just hold control and scroll to zoom in?
so, i'm trying to use Sprites In Detail(framework mod thingy) to make my custom NPC's sprites bigger, but it's off center in the social page, is this a problem on my end, or a problem with the framework mod? I'm not getting any errors in my smapi log either.
then you gotta take a screenshot snippy snip and paste it in. thats effort! instead of just a quick ctrl+a copy paste
Considering I always work with a 400% zoom preview, it is definitely less work than resizing to just snip and paste
it takes me two seconds button
also it guarantees the size someone sees in discord is the size theyll see it in game
thank you!!
That is the point of the 400% zoom as well though
one should not mistake me for someone who has actually strong and not jokingly strong feelings about how one previews their sprites
I will concede that you won't get 100% accurate size when using snip because you probably can't pixel perfect select the sprite that way
But like it'll be really close
im just confused by this convo 😅
Anywho. Yes. It is possible to do it Button's ~~weird, extra work 😋 ~~ way as well. But either way, SDV-sized previews in discord are the way to go.
I'm really out of it today, that's my excuse lmao
typical "SDV modders accidentally revealing how unhinged their setups are" convo
i mean if you're gonna call something the "best" way to do something you should probably at least know the other more accurate options that exist
even if i wasnt being that serious about it
we all know i'm unhinged
toni didnt know how to crop images, i feel like making them learn how to resize would in this case make that option the second best
while ya'll were bickering about the snip tool, i was trying to read sprites in detail but honestly i don't know how that works
hm i know DSV uses sprites in detail but that's about it
i assume it's like how portraiture suggests 512x512 and it auto registers that
Does anyone have Marigold in DSV to check? I was just going to download giant scary Gus to check it
With this mod, the sprites are instead given 64x128 pixels, however, when drawn into Stardew, they will be scaled so that the sprite will have 32x64 pixels to occupy the normal space.
I wasn't quite sure how big to make the spritesheet so that may be the problem, but i don't know for sure
it was a little difficult to follow and figure out what i needed to do
well each "sprite" will then be 64x128
so then you'd have to do a (64x4) width
4 for each vanilla "frame"
https://stardewmodding.wiki.gg/wiki/File:Spritetemplate.png this but multiplied by 2
A template for laying out sprites in an NPC spritesheet. Made by TheLimeyDragon.
i could be wholly wrong, but that's just my intuition
I am pretty sure that EnderTedi told me that Sprites in Detail doesn't make sprites any bigger but this is definitely bigger
Well. The collision isn't bigger but the image is.
Big Gus
yeap
Time to examine big Gus in game
i've accepted my fate that i'm gonna have to do commits to my mod from my laptop while i'm at school 
I do get your point about knowing about more accurate ways. In this instance my advice to Toni was specifically for showing previews in discord in a casual context, so I didn't think that accuracy was a big deal.
The best place to do 'em
I write directly in the github editor from my laptop in bed sometimes
The toilet at mcdonalds
yeah idk cause it looks like this in the social menu when you don't click on his page. which is uh. at least it's centered...?
(Gabriel Ultrakill?
)
yeas
sorry it's for my custom NPC gabriel mod which is actually on Nexus for some reason
My gus is sparkly for some reason
he exploded
rip gus 😔🙏
what do ppl call the x radius and y radius of a ellipse
or rather if i call it that do you know what i am refer to
major/minor axis?
I think it is not you
he's trying to escape into the real world, stop him!
okay thanks so much! I was worried for a second, lol
stop this madman
Biiiig biiiiig Guuuuuuus!
ah sorry for the ping
(though actually i believe major/minor are the diameters, semi-major and semi-minor are the radii)
it's fine lol I even welcome pings
I deleted his chest code to stop him exploding so now his crotch breathes instead of his chest
major is whichever one is larger
what if i just call it x radius and y radius so it's shorter
if you specifically wanna define the width and height of the ellipse id just call them width and height
is this for like, trinket orbiting
i love when you click on a discord message link like that and discord just stops you at a completely unrelated message until you come back here and click it again
yesterday i made the action to activate a trinket's ability and the ability to send a trigger
so from now on i expect BETAS to do all the fancy smancy stuff thanks
i think X and Y radius are probably clear enough for that then though yeah
i cant decide whether id personally go with XRadius or YRadius or HorizontalRadius and VerticalRadius (or even replace the word radius with distance) but i think either way it'd be clear to me what it was
if you make specific requests of the fancy schmancy stuff you'd like BETAS to do id be happy to give it a shot
cool good enough for me 
is the radius in pixels or tiles
pixels
then as long as you make that clear too it works imo 
yea i already have OffsetX and OffsetY
(and in that case i definitely wouldnt use distance. distance feels like a tile-based word to me. no i will not elaborate)
although it was weird that i seemingly couldnt do "Offset": {"X": 3, "Y": 2} when it's on a model that's contained in another model
so i just turned the 1 Vector2 field into 2 float fields
what was going wrong with using the vector2 way?
content patcher did not like it

it was working when it was top level though

lemme try again rn, in case i missed something
are you sure the model in your C# code was defined correctly
(it shouldnt matter between Point and Vector2 right. i have no idea)
write it off as a cosmic bit flip to absolve yourself of blame
ah nope i was not insane
[Content Patcher] Can't apply data patch "(CP) Trinket Tinker Examples > Include data/lerp/tinker.json > EditData {{mushymato.TrinketTinker/Target}} > entry #4" to Mods/mushymato.TrinketTinker/Tinker: failed converting entry to the expected type 'TrinketTinker.Models.TinkerData': Error converting value "0, -64" to type 'System.Numerics.Vector2'. Path 'Motions.default.Offset'..
its the short form that didnt want to work
why is it using System.Numerics.Vector2
does content patcher normally let you do vectors like that?
Good question but you should be using the monogamy one
interesting choice
i am using it 
VS usually tries to make me use System whenever I try to use a Vector2 for the first time
the Microsoft.Xna.Framework.Vector2 i mean
yea this only happens in the MotionData model, which is nested beneath the TinkerData model
i can use "0, -64" just fine on TinkerData's Vector2
could it be cus i didnt make any interface classes
assumin you double checked that motiondata isnt accidentally using system.numerics, ive got nothin
such an error is beyond me
yea but not big deal, having it be vector in data model holds no advantage since i end up making new vector
i was somewhat joking about the fancy schmancy stuff but rn ive only made procs based on what is in TrinketEffect already
so on footstep, on damaged, on damage monster, plus timed which is just update on a cd
i am debating whether i want to add more proc callbacks by patching, or just by pointing to mod which adds more triggers such as BETAS 
in particular why did they make on damage monster callback, but make it unusable for golden spur bc it is not known whether the attack did a crit
well if you're already tracking whether the equipped trinket has a proc for e.g. on damaged it probably is more efficient than raising a trigger that might not even be used
BETAS has triggers for taking damage (not for the other ones though) but it gets raised every time that happens versus a trinket which would only raise it if the equipped trinket called for it, which is better id think
yea i have made use of all the existing ones 
should i go around patching in more is the question
ive kept this whole thing harmony free thus far
depends on if you specifically wanna include checks for "does the currently equipped trinket even use this?" or not id say
oh that part i implemented into the action for procing trinket abilities
So i'm using EMC and i'm wondering. I have 1 plant, that'll either be processed with nothing, oil, or a refined oil. In my json file I had to flip it around so that the plant was the additional fuel instead of the oil, is that normal? Like the machine won't register 1 item with 3 possible variants like it needs to be different?
i may be not fully understanding your triggers/actions/procs stuff you've already got
what's your recipes like? You can do either way, but it's usually recommended to have the varying output based on the input instead of fuel
The recipe is like Plant -> Product, Plant + Oil -> Product#2, Plant + Refined Oil -> Product#3
all in the same machine
so the base game class for Trinkets have functions named like OnDamageMonster, which get called in the relevant places like this
if (who != null)
{
foreach (Trinket trinketItem in who.trinketItems)
{
trinketItem?.OnDamageMonster(who, monster, damageAmount);
}
}
ive simply implemented these
right. so whether or not you'd wanna patch in more elsewhre or point to something like BETAS is what id say depends on whether or not you want to include trinket checks in wherever you patched other procs in
the trigger action i did add (ProcTrinket) requires the content mod maker to add a trigger action like this in order to use it
{
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"{{ModId}}_TrinketProc": {
// This trigger action listens for the firing
"Id": "{{ModId}}_TrinketProc",
"Trigger": "<any trigger>",
"Condition": null,
"HostOnly": false,
"Action": "{{mushymato.TrinketTinker/ProcTrinket}} <optional trinket id>",
"Actions": null,
"CustomFields": null,
"MarkActionApplied": false
}
}
}
like if you wanted to patch in a proc for critical hits, if you checked before raising that proc for whether or not the trinket equipped wanted to check for it, that would be a TrinketTinker territory i think. BETAS would raise the trigger indiscriminately, whether the trinket cared or not
hii i asked this a few days ago but i think my message got lost in the stream and i truly don't know what to do anymore, it's my first time making a mod and i wanted to make a mod to implement sprites using content patcher to most characters in my game including sve characters, and while i followed tutorials and did everything the only characters that have the sprites are bachelors and bachelorettes, but not any other characters, I don't think this is a mod overriding the sprites like looking for love mod because i overrode all the sprites there with my own sprites and i'm truly at a loss at what's wrong, if anyone knows a mod for sprites that works for characters like that please share the content.json with me so i can compare the because I feel like i'm just missing something, my smapi log is: https://smapi.io/log/36892d28df55443a85c687a27641e68d and my content.json for it is: https://smapi.io/json/content-patcher/3d56125f37c04a36833846c3d0064e8c
Log Info: SMAPI with SDV on , with 74 C# mods and 122 content packs.
You can totally have the plant be the primary input in all 3 cases and vary the output based on the fuel used. See Cornucopia's flavored Mayo recipes which outputs gold quality mayo if a large egg is used, or regular quality if small egg.
However it's worth considering from a user standpoint whether doing it the other way around is more intuitive for the user
- you should always be testing with the bare minimum of mods, and not having to guess if anything else is overlapping or not
Yea I was just wondering about it like, say I had the refined oil, and oil in my inventory along with the plant. It'd probably make more sense to put the oil in so it knows which one I want otherwise how can the game tell
Thanks again Selph
you're right let me confirm for sure
- if you did want to circumvent overlapping to ensure you're higher priority of the most commonly used mods
https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Manifest#Dependencies
you might have to dig into SVE for subtle specifics in terms of NPCs though, because i'm pretty sure Marlon is yeeted and instead he'sMarlonFaywhenever called
(i am curious though, are proc effects for these trinkets just typical actions like AddMail and whatnot?)
no the first phase is me making sure my system can do all the vanilla trinket effects
Ability.cs
BuffAbility.cs
DebugDummyAbility.cs
HealAbility.cs
ItemDropAbility.cs
ProjectileAbility.cs
TriggerAbility.cs
ahh, gotcha. i was wondering the use for the optional trinket ID, since i assumed that meant you could trigger the same proc effects for trinket A even if you were wearing Trinket B
well if i am do all this stuff i'd prob include a more trinkets feature

so perhaps you want to target only this 1 trinket out of the 3 you are wearing
someone more organized than me would have a trello board but my planing is this 1 discord msg on my private server that i am editing 
i just keep everything in my mind, which has a flawless track record for as long as i can remember
hm i thought golden spur was bad enough
basilisk claw is in the actual monster classes
why
immunity was right there...
just patch hasTrinkerWithID
selph if the 1.6.9 patch notes can say trinker you can say trinker too its fine
done
cant wait for TrinkerTinket to release
trinket isnt even a word anymore
(its also in the Projectile classes)
wait was that fixed or are we permanently trinker
the patch notes say trinker in one spot. as far as i know theres nowhere in the code that makes that mistake though. i hope
i am too lazy to make a new folder just to ensure 1.6.8 doesn't break
hey sorry for being MIA, been on a work trip the last 2 weeks so I've been falling behind. Basically I'm removing that tab entirely to GMCM like focustense mentioned. Hopefully I'll have time this week as I get caught up with my other project work
Hey guys, i have a problem with my code, it says that it can't find the token {{HaleyName}} :/
Is there someone that can help me? I can send the images on #images-and-memes
!json please send your content.json in here with this uploader
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.
Okayy, btw i'm translating it to portuguese and I want to change Haley's name to Larissa!
wait a minute
It's REALLY messy and i don't know what i'm doing lol
please do not send the json directly in here, please use the uploader that the governor bot links you to
sorry, just for more context, is this a mod that you made, or are you just wanting to change the translations and make Haley's name into Larissa when portugeuse is selected, but this is someone else mod (which isnt updated for 1.6)?
It's someone else mod that I deleted a LOT of things (the original mod content json: https://smapi.io/json/i18n/d16a2513cb674d41869f8d57197f6468)
I only want to change Haley's name, the problem is that if I just put haley as Larissa, the dialogues still in english, so i need to translate it too.
Sorry if it's hard to understand, i'm new at those things and english is not my first language
the original mod uses DynamicTokens it set up at the top of the file to use throughout the file, so if you delete all the other tokens, nothing else in the rest of the file will work either. when deleting a bunch of things, you also deleted the part that actually starts the "DynamicTokens" section and so your "HaleyName" part isnt actually creating a dynamic token, so {{HaleyName}} wont work
nothing else will work that uses those deleted tokens*
so bc the rest of the file is trying to use the HaleyName token you'll need to rewrite it in the Dynamic Tokens format as seen here:
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md#dynamic-tokens
and because you deleted all the other tokens too, most of the stuff in the Data/NPCDispositions section will not work anymore because they need dynamic tokens for everyone else. also, if you're going to try to use this in Stardew Valley 1.6, Data/NPCDispositions doesn't exist anymore
So i can just delete Data/NPCDispositions?
im not actually sure why the original mod still had it since it has other 1.6 stuff too, so i think you can probably just delete it, yeah
you'll want to delete all the non-Haley lines in your Strings/NPCNames section too
and in your Strings/StringsFromMaps section near the bottom, you have a line for Elliott still too, which uses the Elliott token that no longer exists, so you want to delete that line too
I'm so grateful for that, you helped me soooo much!!
But I still kinda confused on how should I add the "DynamicTokens" 😅
okay actually i was a lil bit incorrect (the original json is so long
) bc the original uses both DynamicTokens and config, but the name is actually controlled by the config and not a token (but the same general concept applies in that it was looking for a token that no longer existed)
i assume you dont want Haley's name to be configurable anymore and want it to just be Larissa?
like Larissa no matter what I mean
if so, then at the top you currently have this:
"HaleyName": {
"Default": "Larissa"
},
but if you replace it with this:
"DynamicTokens": [
{
"Name": "HaleyName",
"Value": "Larissa"
}
],
it should work
I'm so confused, I don't understand what i'm doing wrong 😭
can you reupload your new content.json to the uploader site again?
ah okay, that ones on me, you need a comma after the ] on line 27
ive edited my example in my previous message to add the comma where it needs to go
YAAAAAAAY, IT WOOORKEEEEED :D
TYSM I'M SO HAPPY
glad you got it working!!
BTW do you know if is there anyway to change that too?? :]
gimme one sec
oh yep, there it is haha. you can replace Haley with {{HaleyName}} and it'll work
(you can also just write Larissa there if you want but you're already usin the token everywhere else anyway)
thank you so much, you have no idea how happy i'm feeling now!
I've been stuck on that for DAYSSS and i'm glad that i have it working :D
happy to help!!
Hello all! I am entirely new to creating mods, but I have a moderate project I'd like to get to work on. I'd like to start with making the npcs. If anyone could link me resources and tutorials, that would be so awesome. If you could @ me or send a dm (^-^)/
!startmodding be ready for the fact that making just one NPC is already a very big undertaking, let alone several. you'll probably want to look at just the Content Patcher stuff (at least to start)
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.
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC
there is also this excellent guide for NPCs specifically
@past knot i recommend getting to know Content Patcher before jumping into the NPC tutorial. it's essential to have a grasp of what you're doing so you're not blindly editing files
:DD will do! Thanks for being receptive @tiny zealot @uncut viper
if y'ever need help along the way feel free to ask questions in here if you cant figure somethin out (tho preferably after reading the relevant documentation and stuff first, since it probably has most answers you'd need) and someone will probably try to help
i only say "probably" bc sometimes you just get unlucky and no one who is currently around either knows the answer or is free enough to help, so you might just have to wait a bit
(though just a heads up, you will tend to get quicker responses for error messages if you include your log and jsons uploaded to smapi.io when you ask for help)
is there a guide for how to convert data/spouserooms to the relevant fields in data/characters?
Where do I ask questions about mods, as in neededing assistance with running them while on co-op with a friend (we both have all the same mods installed)
the migration guide might have something, but if memory serves, it's fairly straightforward (mainly renaming fields)
what fields do i need to rename then?
set the SpouseRoom field in the new Data/Characters model
what does the mod have right now for the Data/SpouseRooms patch?
assets/maps/eugenespouseroom
oh wait in teh content file it says
//Load SpouseRooms
{
"Action": "EditData",
"Target": "Data/SpouseRooms",
"Entries":
{
"Eugene": "EugeneSpouseRoom/0",
}
},
// Load SpouseRoom Map
{
"Action": "Load",
"Target": "Maps/EugeneSpouseRoom",
"FromFile": "assets/Maps/{{TargetWithoutPath}}.tmx"
},
leave the second patch as is (you will still need that to load the tmx).
instead of the first patch, in the Data/Characters entry you will need to add
"SpouseRoom": {
"MapAsset": "EugeneSpouseRoom"
}```
since this is a 1.5 mod, the content.json probably doesn't have a patch for Data/Characters, so you might have to splice it in with a Fields or something
can i just replace the first patch with it?
(assuming the NPC's name is Eugene) this can work if you don't want to convert the NPC's entire file to the 1.6 format
{
"Action": "EditData",
"Target": "Data/Characters",
"TargetField": ["Eugene", "SpouseRoom"],
"Entries": {
"MapAsset": "EugeneSpouseRoom",
}
}
thank you! i don't honestly think i could convert the entire file, i still have very little idea what im doing
make sure that patch selph gave you comes after (meaning, appears lower in the file) the NPCDispositions patch. i assume CP's rewriter leaves patches in the same position in the files, and you want the spouse room edit to happen later
yep, its after
did not work
can anyone take a look at the file and see what's wrong?
put the Data/Characters SpouseRoom patch after the SpouseRoom map load
(actually wait does it matter?)
please post your log
maybe the outdated format could also be an issue
@next plaza hello i tried to use RegisterEquipmentSlot, it is draw the bg really big rn.
also it doesn't seem to do trinket init stuff (no companions spawn)
oh and i cant seem to unequip anything
The icon should be 16x16 - for the unequipping, any errors in your log?
hm the icons r from game
Yeah the game ones are 64x64
if (Helper.ModRegistry.IsLoaded("spacechase0.SpaceCore") &&
Helper.ModRegistry.GetApi<Integration.ISpaceCoreApi>("spacechase0.SpaceCore") is Integration.ISpaceCoreApi SC)
{
foreach (int i in Enumerable.Range(1, 3))
{
SC.RegisterEquipmentSlot(
ModManifest,
$"{ModId}_ExtraTrinketSlot_{i}",
(item) => item is Trinket,
() => $"Extra Trinket {i}",
Game1.menuTexture,
Game1.getSourceRectForStandardTileSheet(Game1.menuTexture, 70)
);
}
}
darn ok
Oh and your slot validator needs to accept null
I thought I put that in the docs, maybe not
Oh, I did.
* `Func<Item, bool> slotValidator` - The function to validate if an item will be accepted in the slot. Make sure it accepts `null`.
So item == null || item is Trinket
Log found, uploaded to: https://smapi.io/log/b2240effdd8440aebca0ee6959760a57
ig i gotta copy the game's icon into a 16x16 
As for the equip thing, it looks like there's special code for the net list of trinkets
On the bright side, it's a list!
Chu/e, you can probably get extra trinket slots simply by setting the field that has the max trinket slots hjgher
SpaceCore manages it's own equipment slots though, so the trinket stuff won't work with it directly
yea but i dont want to fight more rings
That is completely fair
Granted, no guarantee on sane menuing
Why I made the menu in the first place 😛
SO
For making it work:
Hmm, will this idea work though
It's weird that it is in the netlist
i suppose i will try just setting more trinket slot though, just to see the behavior 
Code
I was gonna say, patch Item.onEquip/onUnequip and detect trinkets and call apply/unapply
But I wonder how that would interact with other trinket stuff
Which makes it do that stuff in mP
(Like, there's an unapplyalltrinketeffects somewhere that's used for resetting before save)
Like, I'm pretty sure on Equip etc is only called locally
Ah, true
But trinkets are actually have inkt code called for all players
is it too late for stardew to go singleplayer only in 1.6.9
any ideas how to fix eugene?
Stardew 1.7: works on Mr. CA's computer
maybe the play is to like
make wear more rings: spacecore edition
and then i can have the trinket slots ahahaha
is yours "Eugen NPC Eng Translation"? it seems to have invalid json in it around line 144
Does wear more rings not have an api for "number of trinket slots"?
need a comma after my patch's last bracket
It has a config field for 1 more trinket slot
it just goes up to 2 i think
Yeah! But I was wondering if it had exposed that in the api
ooookies
(Numv3r of rings is exposed in thr api)
(for future reference please use smapi.io for both JSON and logs. It has validators for the former and neat parsers for both)
okie dokie, will do
ah hm all the checks for trinketSlots is just != 0 rather than anything more fun
it still didn't work!
snailspeed cus im pushing this to the next sprint 
Also I tried to write a c style for loop in python the other day and was sad
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 64 C# mods and 137 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
for _ in range(3) was what I ended up with
I also tried to do rust statements in c#, lol
the wires are all tangled
(ah, it looks like it might indeed be the case that having the old CP format for the rewrite and also targeting Data/Characters might not work?)
I need an excuse for a rust program
would setting the priority on the Data/Characters patch fix it you think?
But the thing I want to build is conceptually very simple and also very UI
Worth a tru
true, cant hurt
you shouldn't need to, since they come from the same mod so order in the files is sufficient. but maybe the rewriter fucks with that, who knows
long shot, but try replace the patch I gave with this:
{
"Action": "EditData",
"Target": "Data/Characters",
"TargetField": ["Eugene"],
"Entries": {
"SpouseRoom": {
"MapAsset": "EugeneSpouseRoom",
}
}
},
giving a try
you'd wanna use fields there, no? not entries
Fields doesn't work with TargetField
oh you're right i was heirarchying wrong in my mind
good to know too that you cant targetfield on a list field thats been set to null, i guess
(object* field not list field)
good idea. I don't have permissions though. should I apply for that shiny tech support badge though
is that forum for bugs with specific mods or just. bugs in anything in general though
you need the support role to add new entries to #1272348274153619477
is this even a bug or just a quirk of updating a mod
Button can you help me solve my bugs at work?
are you gonna pay me
im looking for a job so if you can get your company to hire me we can at least both be paid to complain about the same bugs without actually doing anything
Have you tried asking Cortana \s
i forgot that was a thing
Poor cortana
I actually didn't hate cortana
Voice was pretty good
I got a kick out of trying to install windows with voice commands until I accidentally set my username to "night"
(i still just find it strange they took the Halo character for their AI in the first place... i dont wanna get too off topic tho)
oh is that how that happened
unrelated but does SpaceCore's PlaySound action only work with sound cues, or can it start playing music, too? (without overlapping on top of the current music, ofc)
every time i try to find something in the spacecore repo i get lost and tell myself "ill remember where things are next time"
here i am, at the next time... lost
Not sure if wants to bet on "replaces current running tracl" or "plays over it"
Tbh button I never go to thr spacecore docs
But u can search repo right
id bet on plays over it but i would also not be surprised if it didnt
if i was at my computer right now i would! i will soon though
was trying to think if adding a PlayMusic or StopMusic action in BETAS would be redundant
I think music is sound, non? Everything is in Wave Bank.
it may be redundant, but you may also encounter one of the people who don't have spacecore installed (there are dozens of us)
Technically I don't have spacecore installed!
(More than dozens of us. No disrespect to Casey.)
(I have nothing installed so.)
You don't have spacecore installed on your feature phone? What's your holdup?
Yes but there are types of music iirc
what? you don't have spacecore installed into your fridge? where have you been??
This looks like just play sound
Not switch track
if i added it and it was redundant bc they had spacecore too i think id rather them just use the mod that was much better maintained tbh
if they added my mod and not spacecore bc they needed the ability to play sound with an action then... i would also think theyd be much better off with spacecore
Although doesn't event script have music related stuff
So the question is what playsound does with a music track
would be hilarious if it plays it on top of the current track
I think it just plays it over existing sounds yea
Rmbr the mod about playing sea sound when couch
Needed to track the cue to prevent such things
Well yeah, you can't just Game1.playSound("music track"), that would be... not good.
Well android smapi is dead
not that dead apparently, someone ported Fashion Sense to mobile SMAPI earlier this month: https://www.nexusmods.com/stardewvalley/mods/26897
woops that was meant for a different chat window you all saw nothing
i put up a legacy build of nightshade a while back and got reports that it works on android (pure luck), so some people are indeed still at it out there
I suppose I got the general gist of using content patcher for npc making.
Now my question now is if sprites and portraits must be separated??
they're different yes
you can load them from the same source file if you really want to, but they need to be loaded into different game assets so there's no benefit to doing so
Wonder if it's due to lack of piracy awareness in chinese circles tbh
it's probably just the higher proportion of mobile users among Chinese players in general
I seen posts of dl link for full install of 1.5.39 plus smapi plus mods on bilibili before
(playsound does just play the music overtop the current music. no clue if it loops or not bc two wavys playing overtop each other is mindflooding and i need to stop it)
Loop is a field on the track itself
So it depends
Lol
oh the sound just restarts if you exit to title and load back in huh
or keeps going rather
you're right it does just loop anyway
Do u want to impl some kind of lru_cache for cues
interesting that at least with the typical changeMusicTrack function, you actually cannot force it to play the rain ambient music if its not raining
if you change the music track to none it will stop the music and then pick a new ambient track appropriate for the location, like birds or whatever, rather than silencing things completely
but if you set it to rain it will silence it completely
bc its playing rain but wont let the sound through
i also dont think you can change the track at all if its green raining (and you're not on the island)
whats the best way to add the little lights / firelies from the secret woods to the farm?
are they critters
Rip
il take the L
can someone help me fix my farm map mod:(
https://drive.google.com/drive/folders/198Li0xO6Kz4R4zMUpStUWFt3lr9e26_O
I can't do the map properties right
Access Google Drive with a Google account (for personal use) or Google Workspace account (for business use).
(apparently you can set the music to silence instead of none to get complete silence)
Can you be more specific about what's not working
well, i only know how to do the map, but not the warps and how to set the farmhouse, greenhouse, and petbowl location, also the spouse area and farm cave entry
I tried using somebody elses map mod as a base, i aligned the what's suppose to be the warps and entries and such, but when I load the map I just got lots of red texts, so basically idk what I'm doing when it comes to setting map properties
I'm tryna make it a custom farm
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.
any tips for someone wanting to get into learning to make mods?
I am not at computer so I can't look at your mod files
!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.
First step is to have an idea
tip 1) you absolutely need patience
tip 2) see tip 1
https://smapi.io/log/2c87f52c4be34bb3aba9ed69b0d0d50a
here, this is when I was testing
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Pro, with 5 C# mods and 2 content packs.
Thanks y’all
Looks like your tile coords aren't within the bounds of the map
never made a mod before but i have some ideas lol
Spouse patio specifically
thatt, that's the only thing I didn't touched bcuz there's lots of numbers
i only did the single coordinates ones
there was like 9 coordinates there
but the spouse patio only got 8, it's a 4×2 tile so I was confused
so I didn't touch
https://stardewvalleywiki.com/Modding:Maps
Should be SpouseAreaLocation
Although this could be some custom farm loader thing, which I'm not familiar with
well, for the mean time I guess I could make it as a replaceable?, how would I do that
You don't need that mod to make a custom farm in 1.6 but it does give u some features that you otherwise use farm type manager for
Unsure what you mean by replaceable
like, the farm replaces the forest farm or any of the vanilla maps
Your map itself is erroring
Changing to replace a vanilla farm won't fix that
And once again you don't need CFL to make an additional farm in 1.6
Yeah start with that 
aye
it workeddd!!
djsiisjdjskshdid
tho the bus stop, farmcave, forest, backwoods warp won't work
like, I just go out of bounds xD
Hm is the mod you based your mod on updated for 1.6?
yepp
then the coords should be the same
tho, i think I havent set this warps right
Yeah double check those
A helpful mod for this is debug mode, let you see your tile coords in game
I sleep now, good luck
I'm having some issues with a dialogue replacement thing I'm working on - I want it to be a probability based thing (to not be repetitive) but I'd also like a line break in the middle of some of the options. The game seems to see #$b# as another option and not a break? is there a way to next a line break inside of a probability? I am very dumb 
the # character is used to separate each of the options in your probability-based dialogue command. but you can do this (with more than just two options, even) with Content Patcher's i18n system pretty easily too
How would I do that?
"danceRejection": "{{i18n:Lance.danceRejectionCharacterDialogue_{{Random:{{Range: 0, 5}}}}}}",
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md#randomization
^ there u go much better example than what i was typing up
lol i got you
what avi posted will choose a random i18n entry out of danceRejectionCharacterDialogue_1, danceRejectionCharacterDialogue_2, etc. up to 5 from avi's i18n default.json
0 to 5* not 1 to 5
my default json:
"Lance.danceRejectionCharacterDialogue_1": "Maybe next time, I'm still getting used to my bearings here in the valley.$8",
"Lance.danceRejectionCharacterDialogue_2": "Maybe you could ask someone else...? I hardly believe I'm a fitting partner.$8",
"Lance.danceRejectionCharacterDialogue_3": "Apologies, I don't quite understand the steps.$8",
"Lance.danceRejectionCharacterDialogue_4": "Maybe next time, I'm not quite interested in dancing this time.$8",
"Lance.danceRejectionCharacterDialogue_5": "Sorry, you'll have to count me out, I'm a little worse for wear.$8",```
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/translations.md
this link will help explain i18n too
Oh wow haha that's gonna take my smooth brain a minute, thanks guys!
it is best practice to use i18n/default.json if you ever happen to get a translator, as well as just ease of access for all of your dialogue being in one spot rather than all over the place
alrr thank youuu
g'night bro
Yeah I've never coded before, I just borrowed the format from a friend to update some dialogue, gonna need a bit to get the hang of it hah
oh y'know the content patcher docs doesn't have the range randomiser easily accessible huh 
it just uses the range token, its not a randomizer specific thing
oh fair
i dont think it includes anything for creative nesting of tokens for the most part
we really do be doin crazy things with tokens
do i script my events, or do i continue writing 
.choose events, writing
Choose result: events
there you go
You can check out this page on the modding wiki too: https://stardewmodding.wiki.gg/wiki/Tips:_Using_i18n_for_Easy_Dialogue_Randomisation
With the game's default dialogue setup, you would be limited to 168 lines of dialogue: one per season, alternate heart level, and day of the week. However, you can use i18n to easily create a pool of randomised dialogue, either to extend the amount of dialogue beyond the 168 line limit or to remove the season/heart level/day conditions without r...
Sigh, having this error and cant find anyone with an answer from google. Tried spawning in a item using c# and have the manifest.json and .dll in correct places. I can share code if needed. anyway this is the error on SMAPI "1.0.0 because its DLL has no 'Mod' subclass."
y'know something tells me I shouldn't have an item with an edibility value of 1600 but I don't care enough to change it
your main class with the Entry function needs to inherit from Mod
oh wait I forgot to remove the +400 that probably adds a lot
Okay give me a little to work on it, then ill share my code if not able to figure it out if thats okay?
Thank you for the quick answer Button
did you follow from the wiki guide for getting started with C# mods?
Yes sorta, I tried playing around with to much I think lol!
mightve just removed the mod subclassing by accident then
internal sealed class ModEntry : Mod should have this in your ModEntry.cs (assuming you didnt rename anything)
Uh little lost. Lol ```using System;
using StardewModdingAPI;
namespace SpawnItems
{
public class ModEntry : Mod
{
public IModHelper Helper { get; set; }
public void Entry(IModHelper helper)
{
Helper = helper;
// Your mod's initialization logic here
helper.Events.Input.ButtonPressed += OnButtonPressed;
}
private void OnButtonPressed(object sender, EventArgs e)
{
if (Game1.IsChatting)
{
string chatText = Game1.chatBox.Text;
if (chatText.StartsWith("/spawn"))
{
string itemName = chatText.Substring(6).Trim();
// Check if the item exists in your item dictionary
if (itemIds.TryGetValue(itemName, out int itemId))
{
// Create the item and add it to the player's inventory
var item = new Item(Vector2.Zero, 1);
item.Stack = 99; // Set stack size as needed
Game1.player.addItemToInventory(item);
Game1.chatBox.Text = $"Spawned {itemName}";
}
else
{
Game1.chatBox.Text = $"Item '{itemName}' not found.";
}
}
}
}```
In my solution explorer ModEntry.cs is my only ".cs" file and I made the .dll using a referenced debugging builder. Idk. I seem lost hahahaha
your Entry() should be an override void and not just void
public override void Entry(IModHelper helper)
Thanks one sec ill test and get back to you, appreciate you helping a lot!
Getting same error when I rebuild it and put it into right location in the SMAPi mod folder
Weird.
are you sure there's not a duplicate older/broken version of your mod in your mods folder thats kept there by mistake? if you're using the usual Mods folder and set everything up per the wiki it should already be putting your mod in your mod folder when you build it without you needing to move it
unfortunately i need to sleep now though so hopefully someone else will be able to come along and help you out more
ill keep looking into it thank you! you get sleep ! if someone comes along ill ask them, I will look around to see what I did wrong
do you have visual studio yet?
I have that now!
is it possibly because I am on wrong .net?
only thing I can think of
targeted framework... 4.7.2 LOL is this whats causing it?
yeah! so I just right click on solution explorer on the EntryMod.cs go to properties and target the right .NET ?
yeah you should I just edit the text file
Okay give me a few minutes installing .net 6
should I download arm64 or x64 i am on a laptop
ye just x64 lol
You have to target net6.0 but you can slap <LangVersion>latest</LangVersion> under it to use more modern language features
I couldn't begin to tell you what those are, I run into them occasionally based on where I get my solutions to problems from and nobody ever bothers qualifying that they're for a specific language version, just kind of find out if you don't target latest and try to use something that's not available in 6
I believe it's the latest version you have installed, so if you want 8 stuff you need to install 8
Target will always be 6 unless the game upgrades again
I’d recommend not setting the version to latest, but a specific version (the current latest being 12)
While the versions are mostly backwards compatible, sometimes they do introduce potentially breaking changes
Ah, good to know
Yeah I also just realized I am using visual stuido 2019... so I literally have to download Visual Studio 2022 lol
For workloads can I just download .NET desktop developments? or do I need ASP.NET and web development as well for now? if im just using for stardew
Not sure what that is lol
Just packages to be able to use .netframeworks
No idea, I didn't do anything different from just installing 6 and 8, I already had VS22
yup lucky LOL
asp.net is a framework for web applications, which you don't really need for sdv mods
you can always run the installer again to install it in the future
Yeah thanks , so I got everything setup with the .NET 6 and Studio 2022, but now I have a ton of errors when my code was working before
Here.
Is it because I need to slap in the lattest Lang version like rokugin said?
in vs if you double click the project in the explorer you will open the projects .csproj file
there you need to change the target framework: <TargetFramework>net6.0</TargetFramework>
can't really help further without you actually sharing what errors you're getting 😄
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
Yeah I have that, how do I share a screen shot? can I paste in here?
I havent built it yet since I just switched from 2019-2022
to me it looks like everything is working fine and you just need to update/fix the code to align with the 1.6 codebase
can you link me to the 1.6 codebas lol
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
there's also a wiki page dedicated to modding relevant changes made in 1.6:
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6
eg. For the third error you'd use "ItemRegistry.Create" nowadays
LOL oh my god that is a big wiki document ill look into that thank you, I am new to modding stardew
thanks for the help!
I'm confused 😩 What should be in these fields:
"ObjectInternalName": "{0} Vinegar",
"ObjectDisplayName": "{{i18n:inputName}}",
so that the result would be Vinegar (Rice)
if I am trying to find documentation on like part of the stardewvalleyapi can someone link me it? Like I am trying to find the definition for the chatBox method...
!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
will have to do that once im on wifi, right now im on data. unfortunately.
Why do a lot of modders here use a monorepo for their mods instead of separate ones
Awh dammit there goes another mod idea I was just started on 😅
tbh a lot of it is just mirroring what Pathos does
Is it possible to somehow make my own FLAVORED_ITEM? For example ice cream.
Gah finally I got sprites done to actually put in game... now, I am requesting a tutorial on how to actually create schedules
I don't think a tutorial for schedules is really necessary, since you can just look at the wiki page for schedules to see what everything means and copy vanilla schedules, but I did find this set-by-step for how to edit existing NPC schedules which you could adapt for a copy of a vanilla schedule if you wanted. https://stardewmodding.wiki.gg/wiki/Tutorial:_How_to_edit_a_custom_NPC_schedule_for_personal_use
https://stardewvalleywiki.com/Modding:Schedule_data
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Schedule_changes
Tia's Making a Custom NPC tutorial also has a section on schedules
I can't believe I forgot Tia's tutorial for once. https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC#Schedule
how do you access a private field on __instance? do I just add an argument with three underscores and its name (if I'm reading https://harmony.pardeike.net/articles/patching-injections.html correctly)?
Yup, here's an example from my own code where I'm accessing the private List<Leaf> Tree.leaves:
https://github.com/EnderTedi/Tree-Size-Framework/blob/dea2b7314dfb441e4ec27b6ada2ad0c8ce995f08/ModEntry.cs#L294
ah ty
To downgrade/upgrade tools, is there a direct way to replace the item or is it just removing the old item and adding the new one afterwards?
I have no idea. In my limited experience, I would say it's the latter but there very much could be a way I have not discovered
You can still do it if you want, but as established trinket slots don't work out of the box with space core equipment slots
Hmm, I'll see then. Would be more work 😅
hello, I am trying to make a config option for my SID(sprites in detail) mod, but I cannot for the life of me, figure out how to do it properly. can I get some help here?
i'll get my content.json up in a moment
Wait with or without config menu?
It's easier once you have shared code
Shared code = a shared library, etc
Ngl cherry's set up makes me want to throw things. She has a separate sln file per project
You have a config.json too right?
unless the projects are actually related there's imo no reason not to
yes
Could you send that too
And it is under the SiD folder rather than main npc CP right?
They are.
(EPU/STF)
yes give me a second please
also yes
sorry about this guys
I think it's actually the season query failing
"Query: '{{Season}}' = 'spring'": true
But wait you should just not use query here
You don't even need a query for that, SiD uses regular When conditions
ah ok
Have 2 entries in when instead
sorry, the guide on the description page says to do that
alright, testing it now 👍
What's the config option you're trying to add?
basically "Sprites": "Enabled"
so that anyone who uses the mod can choose to disable them
As far as I'm aware, SiD will automatically add that option regardless of whether you code it in or not 😆 I never added it for DSV's Marigold, but it still shows up as an option in GMCM
Yeah, SiD's documentation is pretty poor 😅
I have the opposite problem, I can't work out how to make it go away 😆
rip
Try changing your code to this and see if it works:
{
"Sprites": [
{
"Target": "Characters/ritzygen.gabrielmod_Gabriel",
"FromFile": "assets/GabrielSpritesSID.png",
"BreathType": "Male",
},
{
"Target": "Characters/ritzygen.gabrielmod_Gabriel",
"FromFile": "assets/GabrielSpritesSID-winter.png",
"BreathType": "Male",
"When": {
"Season": "Winter"
},
}
]
}```
Question: So far is there a way I can brute force open Marnie's pet shop window? Or raise my pet to full hearts to gain access to the page?
debug seenmail MarniePetAdoption
okey gort it thanks
That'll set the flag that lets you adopt more pets from Marnie's
@iron stream Forgot to @ you, sorry!
aaa thank you Airyn!!
it works now! Thanks Airyn, and chu/e !
out of curiosity, where do you find the config option? will it show up under your mod's name, or under SiD?
Help me please 😢 I’ve already tried all sorts of different options and I just can’t figure out how to make the name pull up from vanilla objects in the format Vinegar (Rice)
"ObjectInternalName": "{0} Vinegar",
"ObjectDisplayName": "{{i18n:inputName}}",
i need more context to answer
It appears in the folder for your SiD mod just like a CP mod does
ok thanks!

No problem 😄
Cornucopia does this for new objects, but I only have vanilla ones
i can tell you how to do it but i need more information on what you're trying tk do
The code itself
"Id": "MK_Vinegar",
"ItemId": "(O)419",
"ObjectInternalName": "{0} Vinegar",
"ObjectDisplayName": "{0} Vinegar ({{DROP_IN_ID}})",
"MinStack": 10,
"MaxStack": 10,
"PreserveId": "DROP_IN",
"CopyPrice": true,
no like. what is this. what are you trying to make. what is the outcome and what are some example output names in this format.
In short, I make a recipe for making vinegar from different ingredients and at different prices.
Are you trying to make flavored vinegar
kind of like that, yeah
@ivory plume this may be the weirdest modding request ever but. Can the setter of Game1.player be marked internal, not public
Got it, thanks.
And one more question. Is it possible to somehow make my own FLAVORED_ITEM? For example ice cream.
It's pretty much unsafe to assign to Game1.player because it will call unload on the previous instance
Yeah that's a feature of extra machine configs
People try it, it appears to work, later on a disposed texture file blows up somewhere else. #1277114033647915141 message
I think it's time to stop people from even being able to do it
(It may need an annotation for the xml serializer?)
you can with EMC, but the vanilla way to do it is just how cornucopia does it
like not a true FLAVORED_ITEM
which is basically identical in function just for machines
the EMC feature is for other stuff like item generation
So u can flavored cooked ice cream
Very important
The Texas state fair says cooked (deep fried) ice-cream js very important
In unrelated I'm really starting to wish c# made IsDisposed a part of IDisposable
This is interesting, thanks 😊
Is there any better documentation or understanding of what the fields for TemporarySprites do? I'm trying to get my new machine to release a continuous trail of smoke while operating but it's just not working.
Are you doing this in c$
Or CP
Because I can already tell you it's not possible on cp
I don't think it is possible then
Alright then
With only one exception, temporary animated sprites disappear if you transition maps
(One hardcoded exception)
For smoke effects you would need to bake it into the machine animations
I might just do that
My mod adds ContextTags to some SWE objects for recipe compatibility. In this case, should I ask permission from the author of the mod before publishing my own?
Yes, you should always ask for permission before publishing edits to another mod unless it has open permissions.
if i’m trying to make a mod, what do i need to download here in visual studio?
what is SWE?
SVE with a typo, I assume
Pick net desktop
But it really doesn't matter, all it does is install the sdk for your
And you can always install that later
(But also, the vast majority of mods do not need c#)
thank you!
How is this done correctly? Should I write in a personal message on the nexus or in a mod discussion?
I read it, but decided to clarify just in case.
Generally DMs are best since it sends an alert to the user's email account
Am I just imagining that NPCs sometimes have textAboveHead dialogue outside of events? Like just saying hello sometimes?
Nah, that's a thing. They say hello to each other if they pass by as an automatic thing
Thanks 😊
Ok thanks Airyn :)
What text they use is determined by a combination of age, manner, and "social anxiety" (basically how shy or outgoing they are)
they also have the greeting when they enter or when you enter a location
You're welcome, but please don't ping me on reply
(if added to the proper files, but it had some limitations at some point)
pierre's is the one you'll notice the most often
Sounds too hardcoded for me to hijack it for mini non-event events without C#.
What were you wanting to do with it?
Some games have little vignettes where NPCs have interactions while the player is around but which don't interfere with the player's actions the way events do. So you can hang around to listen to them or you can leave if you want. I'd like to do something like that.
very much C#
Sure! I'll also add code docs to explain the implications of setting it, for mods that will use reflection to do it.
/// <summary>The local character controlled by the current player.</summary>
/// <remarks>Setting this field will dispose the previous value, if any. The new value must be a completely new instance which doesn't share any texture instances with the previous one to avoid errors.</remarks>
public static Farmer player
{
get { return _player; }
internal set
{
_player?.unload();
_player = value;
}
}
Yeah, the closest you'd get with CP would be to muck around with schedule dialogue 
Which I may do since I'm not allowing myself to try to learn C# for Hiria, but mod compatibility would be such a pain that it might not be worth it for me lol
You could theoretically simulate a conversation by having the two characters stand together and give them schedule dialogue that changes each 10 or 20 min slot
Yeah I'll put it in my list of mods that might be worth learning C# for once I finish Hiria
Although you'd run the risk of players not realising what's going on and only talking to them once
you can also do the good ol technique of any non C# author, throwing casually the idea when there's lot of C# author around
and see if it happens 😄 (but then you may accept that It Will Not)
Oh yeah that was the reason I wasn't doing schedules lol not mod compat. I forgot that schedule dialogue isn't textAboveHead so I was going to do it that way and then I was reminded it's normal dialogue boxes so it wouldn't work as well. Still might investigate it though.
hello^^ I made my first "mod" (I want to replace the telephone stand with a matching one" and I think I am almost done but I do struggle with understanding some really basic things (I think?)
is it ok if I just tell you what I did in here (step by step) and maybe someone who understands modding can tell me what I need to do next? I have read through the creating mods page but I am kinda unsure about some things
Welcome
you could also upload json files so it’s easy to look at if you started the coding aspect already
Thank you!!!!!
the png is in the assets folder.
basically what I did is I located the phone stand in the tilesheets (craftables) and looked up the exact pixel location of it and now I want to just replace it with my png that has the exact same height and width and overall outline, I just changed some colors
Is there a flag/game state query/?? for whether the current player has a crib in the farmhouse? IK in the save file it’s
<cribStyle>1</cribStyle> for yes and <cribStyle>0</cribStyle> for no but I’m not sure how to check that in a mod. Want to make a CP event that only triggers if you have the crib
and as a total newbie I am so confused about the .dll part - if I understood correctly with 1.6 and new smapi I don't need to write any more code besides that, right? 
Since it's a CP mod, Camiska, you don't need the .dll line in your manifest at all - that's for a C# mod
(It helps if you also show off pretty art.)
You create it! It's whatever you want it to be. Standard practise is AuthorName.ModName, so for example you could use Camiska.MatchingBrownPhone
oh great, thank you so much!!
For the UpdateKeys line, you can fill that in after you create a mod page on Nexus: click the "Upload Mod" button, fill out the first page, then click save & go to the next page, but do not press publish yet - the unique ID will be the 5 digit number in the website URL
For your content.json here, it's nearly correct but you're missing a set of {} brackets between Changes and Action
So it should be:
{
"Format": "2.3.0",
"Changes": [
{
"Action": "EditImage",
"Target": "TileSheets/Craftables",
"FromFile": "assets/matchingbrownphone.png",
"ToArea": { "X": 96, "Y": 837, "Width": 16, "Height": 26 }
}
]
}```
thanks!! does the exact location of the brackets matter? or is a simple tab ok?
(I am doing this in txt editor and not visual studio or anything)
As long as the order of brackets is maintained (ie. { Changes [ { Action } ] } then it's fine
I'd recommend switching to Visual Studio Code though, it's a much nicer interface, it colour-codes brackets for you to make spotting errors like that easier, and you can set it up with a syntax to automatically check that your code is correct for Content Patcher
ohh
can I find that syntax here on discord? or on the modding guide?
I did a lot of sprites for a fangame but I have honestly no idea what I am doing as soon as I leave aseprite 🙈
It's in the SMAPI documentation! One sec, I'll grab you the link since it's a bit hard to find
I can't find a GSQ or CP token for it. I'm checking for a mail flag now.
Also this guide which I'd forgotten about until just now 😆 https://stardewmodding.wiki.gg/wiki/Setting_up_json_schema_checker
With fancy software like Visual Studio Code and Sublime, you could get the schema set up so it checks the formatting as you write your mod! Like a built in https://smapi.io/json/. See more details on Pathoschild's GitHub.
Below are screenshots of how it should look in VS Code. You may also be interested in how to search an entire folder with VS ...
thanks!!
Waaah vanilla movement is soooooo sloooooow
are there any mods that use ItemSpawnFields?
Would like to just have some test cases
https://stardewvalleywiki.com/Modding:Item_queries#Item_spawn_fields
[SMAPI] These mods could not be added to your game.
[SMAPI] - Matching Brown Phone Table 1.0.0 because its manifest has no EntryDll or ContentPackFor field; must specify one.
what should I put there? q.q
as, adding them or using them for some stuff? i believe misty do use them for IE for the stuff like fishing treasure and such
It needs to be a content pack for Content Patcher. So inside the manifest you need to have code like this:
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
}
I'll take a look at it, tyvm!
like this?
Yes, that's right
Ok I have had a look and it appears that there isn't a mail flag for a crib being present but there is one for the crib having been removed. So I think you should be able to set your event up so it checks for a farmhouse upgrade of 2 or higher and HasFlag: NOT FirstPurchase_remove_crib (or however the negation would be written, I don't know off the top of my head), I think it should work. One caveat is that the mailflag doesn't get added until sleeping but the crib addition is instant, so there is a possibility that a player could add a crib and then get your event that same day.
Cheers, that's a wild hunt you had to go on! I'd looked for ages, thank you so much!!!
I might just add a time delay/conversation topic so there's time for the crib removal to register or something as a workaround
All good! I just went in game and gave myself a house upgrade and then removed the crib, then checked the mail flags using patch summary lol
Wait that's so smart lol
The list of mail flags we have documented on the wiki is pretty small compared to the actual number of mail flags so if it's a context that you can get to fairly easily in game it's a good way to check if a flag does exist.
I'm gonna keep that in mind in the future haha. Thanks again!
"HasFlag |contains= FirstPurchase_remove_crib": false
Ah, something I just realised is that because the crib only has a FirstPurchase flag for some reason, you might run into an issue if a player upgrades their house (crib), removes the crib (no crib), then adds the crib back (crib). I need to check that.
Yes, ok. I can build the crib again and will still have the FirstPurchase_remove_crib flag. However, doing so adds the FirstPurchase_build_crib flag as well.
((is the event for a crib specifically or would you be able to get away with the pregnancy/adoption check on player/spouse))
Ok so you can deal with crib -> no crib -> crib again. But not a second cycle of that, because after you build the crib again you have both mail flags.
Random question I decompiled StardewValley.dll should I also do the StardewValleyAPI.dll?
there's no StardewValleyAPI.dll in my install. Unless you mean StardewModdingAPI.dll? Not sure why that would be useful
For smapi you can just look at the git repo
While following this "https://stardewvalleywiki.com/Modding:Custom_languages#Add_a_custom_font" I did everything I had to. But Smapi is giving me errors. Whats wrong?
My code is in the attachment. And here's the smapi log: "https://smapi.io/log/658d83165e1448fa8271a03b45ff633b"
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 25 C# mods and 23 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
C:\Users\fourt\Downloads\Jauna mape (2)\Stardew.Valley.v1.6.8\Stardew.Valley.v1.6.8\Stardew.Valley.v1.6.8\Content\Fonts\Latvian.png.xnb
remove the .png
in the FontFile path
new enhancements for happy home designer (while menu is open)
- unlimited placement range for furniture & craftables everywhere
- instant pickup of craftables
Yeah you right
I dont seem to have ".png" in the font file path. here's my code.
can I have the entire mod as .zip?
One sec! Can I send it in your dms?
sure
Does anyone know how I would go about grabbing text inputted using Game1?
string chatText = Game1.chatBox
I been looking through the stardew decompiled .dll but theres so much that i think im skimming through it, im just strictly trying to grab user input in chat box and then write a code if they do "/spawn" I can make something out of it. Been trying all night to do this lol
you could probably find where the normal commands are defined and add onto that?
Thats a very very good point , my brains just in mush rn sorry for stupid questions
@lucid iron dude, i just published my farm map mod that I was working on 😍
https://www.nexusmods.com/stardewvalley/mods/27297?tab=description
thanks for helping me out!!
do you want it posted into #mod-showcase
sure, yes plz
sent it here cuz I've accidentally sent it on the other one
Posting on behalf of @hollow dust:
"i just published my farm map mod that I was working on 😍"
https://www.nexusmods.com/stardewvalley/mods/27297?tab=description
thankss!!, idk how to do that
Pillow do you know .cs file for commands? I found debugcommands but not regular ones, and nice mod man!
you need mod author role to do that
once you reach level 25, you can request it since you've got a published mod
it's ChatBox.cs's runCommands method
so you could probably prefix it and do your own checks
Thank you.
.choose tomfoolery, shenanigans, mishaps and mayhem, responibility
Choose result: mishaps and mayhem
Phew
casey is procrastinating again
What's a responibility /j
like a disponibility, but higher res
No don't remind me my responsibilities start tomorrow 
When am I not
a combination of SpaceCore's time-based trigger actions + BETAS TextAboveHead action could probably work for what you want if im understanding what exactly you wanted correctly
@ivory plume in 1.6.9 getting ObjectDisposedException errors related to Audio that freeze the game, only happens when mods change existing/add new sounds/music, most consistent way I've found to trigger the errors is playing an event that uses custom music, once the event ends (either the event ends naturally or it gets skipped) the ObjectDisposedException errors start showing up
Log Info: SMAPI 4.1.0-beta.1 with SDV 1.6.9 'beta' build 24238 on Microsoft Windows 10 Pro, with 5 C# mods and 1 content packs.
Yeah it has to do with the second time ogg files play from what I could tell - we have it logged
It's sort of a two part question where the event is a "family planning" thing, but the purpose of the event is to inform the player that there's a config setting where they can choose whether they want to have bio or adopted kids which will then temporarily change the spouse NPC's sex based on the player's sex and their answer. So like, if: married to NPC AND have crib AND don't have two kids AND (female player & "bio" config OR male player and "adopt" config) = set NPC gender to male, else remain female. But I don’t want it to be perma-male if the player doesn’t ever have two kids so ideally no crib would prevent the change.
there's a slightly easier way to set adopts in the form of the new npc dispositions: https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC#Disposition
"SpouseAdopts": true, //If your character is marryable, you can use this field to have your character always adopt.
the problem would be setting that config to each and every npc
adopts can be set to GSQs which can then be config'd
((although if casey is working on that template thing then maaaaybe you can get away with the cp alternative))
ATM I'm targeting a specific new NPC so there's at least that lol
if that setting only matters for the spouse, could you do an EditData on Data/Characters with the key just being the {{Spouse}} token?
would you have to set the entries: { "{{Spouse}}" ? i don't know if it'll work like that
https://github.com/Pathoschild/StardewMods/pull/1026, Pathos said he'll look into it when he gets a chance
well it'd be Fields in this case, but yeah, thats what i was thinking. tokens do work in keys, thats why {{ModId}} works for unique keys, so id assume it would work... but iunno. dunno for sure
id both assume it would work but also wouldnt be surprised if it didnt for some reason im not thinking of
(it also wouldnt account for polyamory mods even if it did anyway, though)
i mean if you can get away with it that'd be nice 
"Action": "EditData",
"Target": "Data/Characters",
"Fields": {
"{{Spouse}}": {
"SpouseAdopts": {{GSQ}},
"SpouseWantsChildren": {{GSQ}}, << i can't remember the name of this one```
Knowing multiplayer it would probably throw an error for farmhands in multiplayer on the day they join ({{Spouse}} being unready)
(i think SpouseWantsChildren being false would mean no kids at all, adoption or otherwise)
even if it does i imagine you can just add a When condition to it too
to check if the value is null
Ah yeah probably, but still would prove that it wouldn't work for farmhands on the first day, but if multiplayer isn't a consideration then go forth
I guess I could just make the user input whether they want kids as part of the config and use that instead of a crib check 
if you set SpouseWantsChildren to be false by default and set it to true with a patch then it'd fix the farmhand edge case
that one professor told me never to trust my end users though lol
since it would only matter if they asked for kids on that first day, but if they didnt want kids, they wouldnt ask
that's a good idea!
