#making-mods-general
1 messages · Page 8 of 1
oh this is cool, i'll follow this instruction. a modder raised that i forgot to include onekid_2 (theyre right) so i was thinking of just adding one but i just might add extra
yeah you can be lazy as well
"OneKid_1": "{{i18n:LanceOneKidMarriageDialogue_0}}",
"OneKid_2": "{{i18n:LanceOneKidMarriageDialogue_0}}",
"OneKid_3": "{{i18n:LanceOneKidMarriageDialogue_0}}",
"OneKid_4": "{{i18n:LanceOneKidMarriageDialogue_0}}",
"TwoKids_0": "{{i18n:LanceTwoKidsMarriageDialogue_0}}",
"TwoKids_1": "{{i18n:LanceTwoKidsMarriageDialogue_1}}",
"TwoKids_2": "{{i18n:LanceTwoKidsMarriageDialogue_2}}",
"TwoKids_3": "{{i18n:LanceTwoKidsMarriageDialogue_3}}",
"TwoKids_4": "{{i18n:LanceTwoKidsMarriageDialogue_4}}",```
make it all say the 1 dialogue
i just went straight to 3, forgot the 2 lmao sorry ;-;
thank you!!! u r a heaven sent to my dialogue mods ^___^ @velvet narwhal
What happens if you don't have all the keys? Like if you removed "OneKid_4"?
i don't think it works proper
my mod works because i'm running off an already existing npc with the dialogue keys, but euuuu i vaguely recall my customnpc not enjoying not having all the keys
Ok good to know
guys, with quest framework and smapi how i force start a quest in the console? wich command i have to put?
quest framework is broken in 1.6, why/how are you using it?
im usiing it in 1.5
i need to start a quest in multiplayer that didnt started for my friend
so its like broken untill he get this quest but i dont get how i make the game to force accept a specific quest for him
I would try #1272025932932055121 (that's new, interesting) this channel is primarily for making mods
Not sure how I feel about it being a forum now, I never went there in the first place so I guess I dunno what the hit rate was on actually getting help
honestly my issues stem from me making my own mod, so yeah i haven't had a need to go there either
Honestly my issues stem from my childhood
I don't have the bandwidth to participate in multiple channels
Big same
Ahhh that's interesting
I thought this because it used to crash the game if the player didn't have an appearance the host did. Or was that skins
(I think I didn't realize it because ELR messes with it.)
during busy hours multiple convos would frequently overlap and i think lots of new people would get frustrated with how difficult it was to get help
just because of the format of how easy it is to lose messages
fair
Sometimes I feel like they think we're jerks for linking the modded support but then again I'm like
98% of the time in here I just wanna bing chill and read the c# chaos
Lays in therapists chair "It all began on the day of my actual birth, both of my parents failed to show up.."
hiii im syrine and id appreciate it SO much if someone makes me a sprite (i have all the pics, i just dont know how to code)
what does null mean in the cooking recipes json??
in what field?
Hi syrine!
I'm no expert on SV NPC sprites but it looks like you mostly followed the convention correctly with respect to layout. Some notes, with the caveat that I could be wrong about anything:
- It looks like there is blank space around your sprite sheet, I think SV expects the sheet to be just the frames.
- When I load up your image, it looks blurry. Did you save your image as a .jpg instead of a .png? If not, it's possible that pasting into Discord wrecked it.
- Once those are situated, you basically already have your sprite. All you need is a very short block in your Content Patcher mod's content.json. Something like:
{
// Homestar's overworld sprites (this line is just a comment, you can delete t)
"Action": "Load", "Priority": "Low",
"Target": "Characters/Homestar",
"FromFile": "assets/CharacterFiles/OverworldSprites/Homestar/Homestar.png"
},
(Adjust the file path in "FromFile" to match the location of your sprite sheet, and replace "Homestar" with your character ID.)
Sources:
https://stardewvalleywiki.com/Modding:NPC_data#Overworld_sprites
If you're using CP, this can also be helpful: https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Recipes_with_CP
Hello! Rokugin here with another tutorial on how to make some simple stuff with Content Patcher. If you need any help with this or any of the stuff on my Git, feel free to try to reach me on the Discord server.
What are you trying to do? Do you want to replace the looks of one of the existing characters, or make a new NPC entirely?
As far as I'm aware, this is already an existing mod that's dated 2020.
Oh, that is a good point! I assumed this was for a new character; if you're replacing an existing character's sprite sheet, that's different
Are content patcher mods hard to make?
I can't imagine they're very coding intensive because theyre just replacing sprites
Depends on what you're patching. Baseline, not at all
(Im not talking about the drawing and designining process)
If you're just replacing sprites then no, they're pretty simple
In fact you may not need Content Patcher at all in that case, right?
Just make sure you have sprites that match vanilla format, or make sure to use EditImage instead
Ah, right, that's safer
if you're also patching dialogue, they're def not complicated (as much as I thought it was gonna be initially lol).
!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!
ooh
Definitely do that, it's very easy and kinda fun to get lost in the game's content files for a bit
Now all thats missing is my idea
Literally i had an awesome idea for a content patcher mod but i forgor it
Oh no X D

I have a backed up text file with so many ideas because I kept forgetting them
Will literally stop mid-play and write them down as they come up
Just to be clear, don't go around replacing assets without content patcher (or equivalent C# mod)
I should make a Kanban board or something
xnb mods not recommended
Ive never used c#
Really the only programming language i have experience withis Python
Just learn it in 10mins ez 
But you only need to consider C# if you are adding new game mechanics/behaviors
Can I get a code design sanity check?
Problem: In an event handler, I want to iterate over nearby chests in increasing order of distance from the player and manipulate their contents.
Problem: Multiplayer means that for each chest, I need to lock its mutex before manipulating.
Problem: I can't just loop over the distance-sorted list of chests requesting locks and manipulating in the acquired callback because requests aren't guaranteed to be granted in request order.
Problem (?): I don't know whether yielding/sleeping the thread in an event handler is Bad™ but I suspect it is.
Solution 1: Have the event handler enqueue operations into a queue, then have a separate update loop request, do nothing until acquisition, manipulate, and release each chest before proceeding to the next.
Solution 2: Kick off a separate thread to do all this stuff more legibly. (I'd love to do this but have no idea what the ramifications are.)
Is there a simpler solution?
(note to FlowerSun: This is not the kind of problem you have to solve if you're doing sprite replacements)
Yeah I figured as much but I held out hope
"I'll just write my own pseudothread manager and " never hear from Molli again
you guys are all so nice
:3
Why is order important
I want to do stuff to nearby chests before I do stuff to further away chests
(I understand this may be a feature design smell but will address that later)
queue sounds fine assuming order matters, but u should consider if you actually care in this case
Made a mod that automatically pets pets and animals
https://www.nexusmods.com/stardewvalley/mods/27203
Congrats!
Do you want a #mod-showcase
Sure!
Hmm. If I do some preprocessing I may be able to remove the order requirement without altering the visible behavior
What do you want as message?
Ooooo this is so nice and convenient. Congratulations on your mod release! 
The AutoPetter mod automatically pets your farm animals and pets in Stardew Valley. No more running around to each animal to show them some love—this mod does it for you, ensuring your animals stay happy and produce the best quality goods.
You have two things you can use
I would consider using the delegate on a "get mutex" for "mutex get failed"
Ah, never mind
Yeah you're writing a task manager. Enjoy!
No worries, it wouldn't be the first time (or the fortieth, honestly)
Use case is: I'm writing yet another autostash feature, but I really really want to favor closer chests when there are multiple chests with a given item
But the more I think about it, the more I wonder whether that "really really want to" is the right desire
I'd probably spend my time better implementing a way to mark chests as "don't stash here" or otherwise let the player categorize
(Trying not to end up completely reimplementing Better Chests if possible)
GUYS I JUST REMEMBERED
it was replacing the pig portrait with the "Brother may i have some oats" meme
Anyway, thanks, folks, having someone to bounce questions like this off of almost makes me feel employed again 
If it makes your life easier there is a slot for a delegate on the fail to acquire case
(I mention it only because vanilla never uses it.)
What if we make mod that turns every (O) object into wallet currency
Yeah, I think finding a way to specify chests as no-stash is the way to go here, it more neatly solves the problem that ordering attempted to solve (accidentally stashing in an undesired stash location)
Never stash anything ever again
But multiplayer sharing resources -_-
(\j)
how about just ignoring mutex-locked chests
(/running with it) brb, writing new wallet UI w/ search bar and scrolling
help I don't know why it does this It has the description as the title for some reason
You could make them team wide like golden walnuts
Yeah I'm actually okay with a failed lock request just failing
You put i18n key for desc in the title I assume
I have a bit of an odd question. I apologize if this is the wrong place, but I'm really not sure where to ask.
I am in need of help writing some of the events for my mod. I can get the vibe of some of the characters easily, but others give me enough trouble that I can feel myself slowing down in my progress. I have absolutely ZERO desire for that to happen, and would greatly like to at least release the first edition of it before I take a short break and work on planning the next update.
I'm looking for someone who would be able to, at the very least, allow me to bounce ideas off of them and give me constructive, clear feedback. Where would I go to request assistance like that?
Also, uh, if anyone adds THAT many virtual currencies with SapceCore, I'll add a scrollbar. But not before.
Don't we have a creative writing thread
Maybe that'd be useful for you?
Rocks are currency now
Each rock is a different currency
Keeping rocks as objects but adding meta to each single rock specifying its composition, geologic history, etc.
I should probably pop in there at some point, I've been having trouble coming up with events for a thing
But then I'd be perceived
Now that seems like work
If I have to think of a crystal structure again this week it will be too soon
It's not so bad, now lemme import Minecraft's biome generator and add a few more noise layers
I feel like ES will happily do ideas bouncing if you want a smaller space
Terrafirmacraft so-many-rock-types flashbacks
!stone
🪨 The item ID for Stone is 390.
What is Minecraft
(Okah I know what Minecraft is but I do not know why biomes are involved. )
Well, I've only told a few people about this part of the mod to begin with, so that's still being perceived 😛
(It's that game thr lawyers play. They keep on setting each other on fire.)
The world is "infinite" and randomly generated, so there are different biomes you can find
Feel free to dm me about it anytime! I just am not sure I can be helpful
pls help
someone gave you a response
for more help, we need to have more info about your code
I'm a bit confused
oh wait
nevermind
i see now
FINALLY I CAN APPLY FOR A CHEETO ROLE
In the interest of not spending inordinate amounts of time on this feature, for now I'm just adding a sentinel item ID that, if placed in the chest, excludes it from autostashing anything but that item
That should keep our farmhands from accidentally stashing all their wood in the kiln feeder
Hi, I'm trying to apply for the Cheeto role I'm so lost 
Did you DM bouncer?
Yeah :3 i'm trying to do the entry thing rn 
Oh the part where you edit the wiki?
I'm using CP and want to make a mod that sends a letter every year and I'm stuck. I've looked over event data, mail data, and even tips on the modding wiki and I can't seem to figure it out.
Need to make account but after that just copy someone else's entry and fill in your data
Did you look at trigger actions?
That's where you want to make the changes
You'll need entries for your Mail itself, and Trigger Actions to determine when your Mail is sent.
Interesting. I managed to get one letter to send by creating an event in Farm and a follow-up letter as well, but the follow-up letter only sends once and I want it to happen every year. So Trigger Actions instead of Events in this case?
Wait how do I get the unique ID (I barely use Discord, unless it's sdv related lmao)
if you're sending a letter every year, you can do some fancy things with a repeating trigger action https://stardewvalleywiki.com/Modding:Trigger_actions#Make_Data.2FTriggerActions_repeat i assume they're all different?
Should be clairesstoryofseasons#0 yeah?
I probably need to update mine on the wiki, I bet it still has the actual number on there
@velvet narwhal - the first one is unique then everyone after that will be the same. Like Pierre's messages about the rebate.
ah then you'd have two, one that sets the conditional of receiving it in general, then the other one sends every consequential year after received
the first conditional one doesn't need to repeat, the 2nd can have the false appliedaction
In TriggerActions, not Events, yeah?
yeah trigger actions
do you have a specific idea of how the first mail should be received?
like what requirements
Oh no sorry I meant Discord ID
I'm looking where I'm supposed to get it and there's so many error sounds popping on my head rn sigh
clairesstoryofseasons
Oh... thank you 😭
Totally! The way I have the event currently set up it to send a message on Fall 24, doesn't matter what year. The second event is set up to send on the same day as long as the player has received the first message. Unfortunately, using Events, once the second message is received it won't send again.
Sorry I've left my desk lemme dig through my github for an example
First mail: Send on Fall 24.
Follow-up Mail: Every Fall 24 as long as they have seen the first mail.
https://github.com/Aviroen/LanceExpanded/blob/f8eab5ea0581f238c50d24805de547427c341013/[CP] LanceExpanded/data/TriggerActions.json#L106 thus is just a mailflag but you can make it send an actual mail, it sends out on the 1st of the month and I have a different trigger as an event that removes said flag
Do I just send the entry here? 
So your condition can be season fall day 28 to send out the first one, then the 2nd trigger action is player_has_mail and a player_stat check for greater than 1 year
My brain is blanking on "repeated year" conditional right now but you can probably apply the same fall 28 to the 2nd
Does the command work I pray
[[Game State Queries]]

put yer self in here
https://stardewvalleywiki.com/Modding:Community
It's /wiki
I'll give those a try!
Oh hi btw by discord id, I meant the one with a bunch of numbers ;-;
Oh btw sorry if I pinged you
it's 1269333396149244025 but i don't think thats what you need?
you can enable developer options in settings to have ability to copy user id
I think it's required in the fields for the entry.
your username is enough, the instructions were from the time where you had a 4 digit(or) more number combo but discord changed the way names are
Is there a list of conditions somewhere? I feel like I'm issing something obvious. Like DAY_OF_MONTH and SEASON or something.
oh wait, it actually does now that i look at the link where it tells you how to add yourself lol (i dont remember adding mine tho)
Selph for the win
Thank you. I was looking for "conditions". 😆
Yeah :(( i was kinda confused where to find it cuz I see people with a bunch of numbers on their discord id
there is a link to explain every entry and how to fill that spot right above the list
I just want the chimkin cheeto role now that I have farmer lowkey but that's what Bouncer instructed :3
there it also says how to get that ID :)
I refuse cheeto until I'm purple
you can just right click your username here in the chat and the last thing should say get username id or something (idk exact words since I have it set to German :B)
ooh, congrats CSS!
Actually it came up last night about beehives being hardcoded, does emc handle that?
Whats hardcover
Autocorrect
Just edited it :3 hehe
hmm what's hardcoded about bee hives?
CHEETO
Something about crops vs flowers
How do i make a content patcher mod?
Im going to replace the Pig Painting with one of 4 alternate paintings
I want an option were you can choice between any of the four
for the honey flower check it specifically checks if the harvest item has category -80 (aka flowers)
if you want to change that there's Better Beehouses:
https://www.nexusmods.com/stardewvalley/mods/10996
I think it was aloe that was dealing with flowers
!cp
Content Patcher (https://www.nexusmods.com/stardewvalley/mods/1915) is a mod which loads content packs to change the game's images and data without replacing XNB files. If you want to make mods using Content Patcher, start at https://stardewvalleywiki.com/Modding:Content_Patcher.
backread a bit, I think she solved the problem? Basically have to make the item category -80 specifically
Ah I think the thought about emc came up because I was in my own thought process of, "purple corn honey
"
Found a mod that does the same thing as a mod I was working on but implemented it for more use cases and implemented it better. 😬
2 cakes
better beehouses definitely let you achieve your corn honey dream
Honestly I'd say don't let your dreams fall through just bc you weren't the pioneer, it's a big world
Does anybody know what the filename for the Pig Painting is? (i don't want to unpack all of the files for 1 image sry)
its not likely to be its own image, all the furniture is placed on tilesheets. you'd need to unpack your files anyway to get its coordinates
i see
I still don't understand how that works honestly, why is everything on big stilesheets. Seems to make things a bit harder
@velvet narwhal It doesn't look like there's any need to mark the first mail action as applied because they're applied by default. Yeah?
it is what it is
stares at cursors
pig painting is on TileSheets/furniture_2.png
i mean tilesheets for related things makes sense to me
from a game making point of view tilesheets are a godsent. try make a map without tilesheets and instead with individual images and you'll start to understand why
it's pretty common for games to put related graphics in 1 image asset yea
tru
whether everything on cursors is "related" is a topic for another time
CA just...got a bit creative with a few tilessheets, like the mentioned Cursors
and when making a game if making tilesheets is easier for you to help accomplish that I imagine that's more important than thinking "hmm but what will modders 10 years from now think"
Trigger actions by default fire once and that's it so yeah the first one just needs the addmail action
but tbh still a mood. when i started to make my own tilesheets for my mods it began being a big hassle moving things around once you started using the assets so ofc at one point i gonna go "oh, ill jsut slap these in those free spots"
Excellent! Thank you!
What code should I use so that the color of the temporary sprite is the same as the color of the loaded item?
I think what makes Cursors special (aside from having a lot of not-so-cursory sprites) is that there's no regularity to it; everything is in a totally arbitrary position with a totally arbitrary size, so pretty much anything you reference from cursors needs to be hard-coded. There's no meaningful "sprite index". No other tilesheets are like that; they're all fixed-size sprites which means they get the benefits of being performant and also easy to program around and those are both Very Good Things. (tm)
Tile sheets in general aren't just good, they're essential, you can't make a 2D game without them.
it would be much worse to have 900 individual pngs for each item for sure
Much worse. Not just because of the organizational issues but because of all the texture overhead.
Also people don't enjoy physically drawing maps 
Then so. I have a stump for mushrooms. A texture with 2 sprites was created for it. The first sprite is the stump itself, the second is the grown mushrooms. I need the sprite of mushrooms to be superimposed on the stump and inherit the color of the mushroom placed in the stump. Is this possible?
I still like Atra's bit of terrible knowledge that there are menu sprites in Maps
is this for mushroom logs (the 1.6 machine)
The weirdness of cursors I can at least understand because UI is a complete nightmare to work with even when your tools are decent
It's random, but I need specifics, so I created my own stump))
ah ok, i dont think you can dynamically change what the ready to harvest texture looks like (inb4 selph)
you can specify load/working effects depending on the output item
you cant do it automatically but you can specify a rule for each color you can think of
it's also possible that you actually want to make a custom bush that grows mushrooms
cornucopia has some examples
but I don't think you can set the ready sprite based on the output unfortunately, only the processing sprites
hmm do custom bushes support conditional outputs?
Actually nvm I think you can? but you have to have a separate output rule for each color
with the IncrementMachineParentSheetIndex field
tldr I am 60% sure what you want is possible, albeit a pain to implement
My stump works like a crystallarium i.e. creates what is placed in it. Is it possible to use triggers to record the color of the input element and return it to the output sprite?
not in a way that changes sprite, i mention custom bush only bc its an alternative approach to machine for this type of thing
You don't need to add new triggers, just multiple output items in the OutputItem list
one conditioned on the input item having the tag color_red, one for color_blue, etc., all of them identical aside from the IncrementMachineParentSheetIndex field
but u would have to manually make these sprites with color right
you can group multiple similar colors to reduce toil (ie blue and dark blue)
yea
cannot use as color mask
hey i been trying to find where this one icon is located. there is one on cursers but it didnt seem to be the one here. anyone kno where i can find the paint buildings icon? i want to make it invisible
its in cursors2
I have an option with individual colors, but I wanted something universal. Are there ContextTags that combine, for example, all shades of green? It is too tedious to list each one.
Modding Stardew is just kind of a lot of toil
the context tags arent that detailed u just have color_green
whats that link to 6480's color sheet
do we already have the "where is the objects.png" as a command?
in my mod if have this for example
public static void OnCall (string something)
I want to divide the mod into 2 and put OnCall to a new mod. Is it possible to call that from the original mod?
divide mod into 2 C# mods?
!springobjects
what is the reasoning here
Most vanilla object sprites are in the Maps/springobjects asset. See a table of springobject sprites by index.
Some newer object sprites are in TileSheets\Objects_2. You can check the entry in Data/Objects to see where its sprite is stored; SpriteIndex is the position, and Texture is the asset name (defaulting to Maps/springobjects).
yes I added OpenAI in ( that OnCall ) and thinking about put that seperated as a dependent mod, well in case some people dont want that AI
Not to interrupt, but I'm having a precondition issue: my event, CPFIsaacIIntroEvent, loads and can be played, but there's some tomfoolery with the preconditions I need to sort out. Currently, it has the precondition "CPFIsaacIIntroEvent/F/n CPFIsaacIReturnLetter", and the mail is added through a triggeraction that works. The player recieves the letter using that mail id, but the event won't play (Even though preconditions are met). Here's the trigger action:
"CPFIsaacIReturnTrigger": { "Id": "CPFIsaacIReturnTrigger", "Trigger": "DayEnding", "Condition": "SEASON_DAY spring 24, PLAYER_HAS_SEEN_EVENT Host 145857", "Actions": [ "AddMail All CPFIsaacIReturnLetter", ], }
Here's a json with the event in question, as well as the triggers
hm then you'd want to make a mod API interface
!codeblock (just for future reference)
You can embed code in Discord using a series of three ` :
Your code can go here
Even if not a haiku
Just an example
For syntax highlighting, add the language code on the same line as the first (with a space between, like json). The usual codes are cs (C#) and json.
Again, the event plays fine, it's just getting it to start in-game that's strange
oh what happened to the governor formatting there. what did they do to him
what did they do to my boy
oh yeah that one was there. i edited it but my change didnt show in game so i was wondering if there's another
did you load a blank.json to your custom map
It's in the bus stop
there is not. the one in cursors2 is the one used in the carpentermenu. if it didnt change then either your patch is wrong or another mod is overwriting your patch
does the busstop have it's own data/event
it does
And again, it's not the event itself that's the issue- I've bug tested that, and it works- it's just triggering it naturally without cheats
That I can't seem to do successfully
And one more question. If temporary sprites are specified in the vehicle operation settings, when the vehicle is demolished, these sprites remain on the map. Can this be fixed somehow? So that the temporary sprite would disappear when the car is demolished.
Is the mod author for MT here? I actually wanted to ask a question re npc clones
Market Town? The mod author is often here, yeah
(To restate my issues, because my explanations were really bad 😅 basically...)
- I start with a trigger action that works, with the sole command of
"AddMail All CPFIsaacIReturnLetter"
-The player receives the letter in the mail
-The event's only precondition is to trigger not on a festival and when the player has the mail flag (Which they must, becuase thye recieve the letter in the mail)
-The event won't trigger once I go to the bus stop, even though it works when I debug it
a simple example
// Stored delegate, initially pointing to the vanilla version (that i defined in this class)
private static Func<StardewObject, IEnumerable<Vector2>> CompatibleGetSprinklerTiles = GetSprinklerTiles_Vanilla;
public static void SetUpModCompatibility(IModHelper helper)
{
// Check for better sprinklers here, then update the delegate field if needed
if (helper.ModRegistry.IsLoaded("com.CodesThings.BetterSprinklersPlus"))
{
BetterSprinklersApi = helper.ModRegistry.GetApi<Integration.IBetterSprinklersApi>("com.CodesThings.BetterSprinklersPlus");
if (BetterSprinklersApi != null)
{
// GetSprinklerTiles_BetterSprinklersPlus also defined in this class
CompatibleGetSprinklerTiles = GetSprinklerTiles_BetterSprinklersPlus;
}
}
}
// thereafter, call CompatibleGetSprinklerTiles
i'm trying to recall the issues i was having but the only one that pops up into my head is the data/events not existing, you have the / for a string event, so that's not the issue either, it plays when you debug it, but it's not triggering upon entering said map 
when you do a patch summary uniqueid it's applied?
can you post the json of your event key and script here just in case? didnt notice the link sorry!
yo guys i am a bit confused about bug report i got? I sat on that couch in every direction and dont get any second couch appearing...but ofc i didnt get any log or screenshot or anything...does anyone happen to know about an odd known issue like that
"give modlist pls thx"
i've honestly had the godsend to not get those, my bugreports always send me the full detail of what went wrong or they give me a smapi log
does debug starting the event mark the event as seen for the player, and thus remove the possibility of it starting again on its own?
Check for AT
yes it is probally me
yes
great. tks
https://smapi.io/log/ea454a64b777446a9ffd83dee4719731 I'm a bit lost- is there a way to check on whether or not a mail flag is applied through summary? I did ctrl+f and couldn't find any references to CPFIsaacIReturnLetter (Other than when I mistakenly told it to do a patch summary of that)
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 17 C# mods and 5 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
but i assume you've just relogged
Yeah, but I'm on a brand new save 
it's not about the mailflag i wanted to look for, i wanted to see if your changes to data/events/busstop were actually taking effect
Were the cloned NPCs removed on the new update? I actually dont know if the cloned Sebastian and Sam were from MT but guessing from your update post, it could have been the case.
it seems like your bus stop event isnt being applied because the ImportToken token is not valid
Aghh, I messed around with i18n'ing earlier 🤒 that must be the issue then
Andrew, what are your preconditions
i think you're passing the input into the i18n token wrong
"CPFIsaacIIntroEvent/F/n CPFIsaacIReturnLetter"
Yeah, that's a pretty good lead- I'll proofread it!
what does your CPFIsaacIIntroEvent.1 dialogue key look like?
in your default.json
for i18n
yes cloned NPC is removed in v6. If you talk with them or Lookup Anything, and their name or ID has MT.Guest then it is from MT. otherwise you can try killnpc or removenpc to see if they get removed
https://stardewvalleywiki.com/Modding:Console_commands
"CPFIsaacIIntroEvent.1": "@, I knew you'd make it!$1{{IsaacIReturnBeef}}",
Yup, the Import Token was def what was killing me
i assume the thing that's getting mad is that yeah
Oh okay, thank you for clarifying. 
/speak APTMarcus \"{{i18n:CPFIsaacIIntroEvent.1 {{ImportToken}} }}\"/
i assume you were trying to replace the returnbeef thing with the import token
I'll remove and reload, then try again!
I use an automatic converter that adds the whole {{ImportToken}} nonsense and missed it 😅
when in doubt, patch summary and start squinting
{{i18n:CPFIsaacIIntroEvent.1 |IsaacIReturnBeef={{ImportToken}} }}
oh
dunno what the converter meant by it then
but if you mean to pass a token into i18n like that then thats how you'd need to do it i think
since default.json cant access tokens on its own
Let's try it out!
Is that an exception to the suggestion to not put tokens in i18n?
its not an exception, thats just how you pass arguments to the i18n token
ok, now I found the issue...honorary mention to me "fixing" the wrong thing and turning the couch invisible
if you have specialty portraits, you need to do that
if you want your dialogue to say "Today is the first day of {{Season}}!" then you need to pass the season token into the i18n with the i18n token
Right, I just wanted to make sure before I said: you should avoid putting tokens into i18n so that translators don't think they have to translate that and break the token
(or use a tokenizable string but that was just for example)
yeah it is an attempt to keep translators from breaking things, i think people even separate the emotes to deter that
Yeah, I'm not familiar with special characters in translation, but I'd probably avoid putting any special command types in there too
in this case it would be better i think yeah to separate the different sections of the dialogue into their own tokens
own i18n i mean
i don't put any of my $actions into the default.json, but i left my emotes for my translator to understand what to look at, but that's case-by-case basis
and then in your EditData patch just string em together with the command separators between em
alright thanks. i will look into it
but if you want the dialogue itself to have a random token in the middle of it but still be translatable then i dont think there's a better way
i mean you could split the sentence right in the middle of it or something but thats awkward
"just don't touch the brackets" //note for my editors
instructions unclear, they changed everything inside the braces
thank avi i forgot about the patch export thing 
LMAO
Instructions unclear, deleted system32
ayo i love patch summary it solves 98% of my problems
the 2% is me forgetting to load a blank.json
(though you shouldnt touch anything inside brackets either. parenthesis are fine tho)
((unless the thing inside the brackets is EscapedText...))
i have tried my utmost BEST to save my translator the trouble of trying to reason my chaos
okay i figured out my issue. it was never added to my content file lol. rip. fixing it now
Hello!
I dont know if i am right here but i have a small question.
i am currently working on a mod that adds item which i want to let spawn at certan locations. I already have it added with content patcher and let it spawn with ftm.
Now I'd like to know, is there any way that i could enable and disable the spawnin through config manager?
Or is there another way to let items spawn like forage besides ftm that works with a config set by the contentpatcher part?
where's esca i don't understand ftm
i also dont know enough about FTM unfortunately to know if its configurable or not
(to ping... or not to ping...)
i already tried a few things but i had no luck so far 😄
like setting the config schema in the ftm content json.
well, its not a problem if none of you have an idea how i could do that. no need to ping for that. 🙂
i just try around some more. maybe it is even not possible what i want to do and i have to find another way. in the end, the challenge is what makes it more fun for me.
Still Thanks. If I find a way i make sure to tell how i did it 🙂
esca will probably ping you if they see it, if not then i can reroute whenever they're around
thanks!
wooo, I fixed my couches. Turned out I had the wrong size :B
i just had an evil idea but that might be my meme mod instead
Nice! Don't you hate it when it's that simple?
adding geese, and they bite you if they're disgruntled by you
Love that
geese that steals your crops
you have them free range? say goodbye to your crops
Untitled Goose Mod
gotta put that in a note somewhere, i'll probably work on it if my c++ class is slow
i am terrified but also intrigued
but at max hearts with a cracker they lay a golden goose egg
what i'll make the golden goose egg do? idk, i'll figure that out later
i have a mod that changes a sprite but last updated 2020 so i want to remake it
Hatch golden geese
if ykwim
A mod someone else made I'm assuming?
If it's for an existing NPC, the easiest way would be to find another up to date mod that changes what you want and see how they're doing it
<time> [location] <tileX> <tileY> [facingDirection] [animation] [dialogue]
(optional) The direction to face after reaching the destination. The possible values are 0 (up), 1 (right), 2 (down), and 3 (left). Defaults to down.
The wiki
2000 Lumisteria.MtVapius_AsterHouse 8 16 4????
What the fichtre did i do???
did you eat the wiki
no, i try to understand why i have facing of 4 in my schedule
It's your subconscious politely requesting a break /j
It's a custom NPC, iirc.
I usually just tell mine that we'll rest when we're dead, but that's apparently the wrong answer
that may explain why my npcs are facing in weird directions, they probably keep whatever facing was in previous part of schedule
To make an actor pause, use the direction to face and the number of milliseconds to pause. 1 is right, 2 is down, 3 is left, and 4 is up. The reason 4 is up and not 0 is so that advancedMove can tell the difference between a pause command and a move up/down command.
advanced move is burned into your brain
(yes, but advanced move indeed use 4 which is the only case i believe when a 4 is used for facing)
i did the schedules before ever trying to look at what advanced move was doing (because i was afraid) but it's likely one reason of the mix up
that or me offsetting the value in my mind
which command is this?
honestly when i'm doing facing direction, doesn't matter how many damn events i've coded, i still point "north east south west" "0 1 2 3" when i'm doing it, and i feel dumb every time
schedule commands
@velvet narwhal I swear I'm missing something here.
"Target": "Data/TriggerActions",
"Entries": {
//First Time Mail
"{{ModId}}_DecoSale1": {
"Id": "{{ModId}}_DecoSale1",
"Trigger": "DayStarted",
"Condition": "SEASON_DAY Fall 24, !PLAYER_HAS_MAIL Current RobinHolidaySale01 Received",
"Actions": [
"AddMail Current RobinHolidaySale01 Now",
//"MarkActionApplied Current {{ModId}}_DecoSale1 true"
]
},
//Start Follow-up Mail Loop
"{{ModId}}_DecoSale2": {
"Id": "{{ModId}}_DecoSale2",
"Trigger": "DayStarted",
"Condition": "SEASON_DAY Fall 24, PLAYER_HAS_MAIL Current RobinHolidaySale01 Received",
"Actions": [
"AddMail Current RobinHolidaySale02 Now",
//"RemoveMail Current RobinHolidaySale02 tomorrow",
"MarkActionApplied Current RobinHolidaySale02 false"
]
},```
schedule
is it Fall_24
i haven't used the season_day command tbh
well, i think i need to put "cleaning schedules" on my todo list
nvm that's not it
I was about to say. 🙂
ah so AnimatedSprite.faceDirection has a switch case for 0 1 2 3
no default so 4 just falls through 
i assume you've just cut the fat but did you lock these in their own { }
I did, yeah. I think it has to do with the MarkActionApplied thing. I may have to create a third entry then tell each trigger to mark the other as false. But there has to be another way. There aren't two entries in the vanillia mail.json for every repeating event.
so what the "MarkActionApplied Current RobinHolidaySale02 false" means, is that it's going to constantly check on dayStarted if those conditions are true
Don't want that.
you said you wanted these yearly, yeah?
yeah i will need to clear my schedules
Yep. Every year on the same date.
what a joy, i already LOVED schedules so much (/sarcasm /irony /cry)
i think you can get away with... my modulus query
hold on
{{Query: ({{DaysPlayed}} % 111 = 0)}}
that's a full year
wait hold on
full year -1 day, for it to spawn on the appropriate fall date that you want
Isn't that what we want, actually? It should check every day to see if the conditions are met.
yes, that is what you want
but you need a 3rd condition to make it only check every year
or not check, but y'know it's counting down the daysplayed
so if the daysplayed is a perfect division of 111, it'll send the mail
Sorry, I was asking about the markactionapplied comment you made about it constantly looking at DayStart for the conditions. My brain is melting - been staring at this and work stuff all day.
(okay but i added spacecore for the sfx on my animations and it just made it that much better)
oh, that one's fine
that one is necessary for it to "repeat" on the 2nd trigger action, you can remove it for the 1st
and trust me, i've been looking at trigger actions for the past week, so i understand the brain melting
i've learned a lot of things, but i was also set back because button reminded me i'm dumb when it comes to ITEM_ID gsqs
i suspect this is just decompile shenanigans, but stardew has code like this for building strings
DefaultInterpolatedStringHandler defaultInterpolatedStringHandler = new DefaultInterpolatedStringHandler(5, 1);
defaultInterpolatedStringHandler.AppendLiteral("fps: ");
defaultInterpolatedStringHandler.AppendFormatted(frameRate);
string fps = defaultInterpolatedStringHandler.ToStringAndClear();
is this just unrolled version of $"fps: {frameRate}" or actually better in some ways?
Yeah, that's what $"{meow}" type things unroll to I believe
apparently even a simple one like that
i've been doing $"{someNonStringValue}" a lot
i've stopped after seeing the decompile
Yeah
someNonStringValue.ToString() it is
is there a way to change the reward of mail with c#
wait can you send the same mail id multiple times or
yeah you've gotta be able to. there's repeating mail events
mails rewards are part of the mail strings so you need to do some string manipulation
and yes you can send a mail multiple times, but I think a single mail with unique ID can only be inside the mailbox once per day? there was a convo about this above
only one of the same mail id per day yes
Game1.addMailForTomorrow looks like you can't get the same mail id again ever? with that one player.hasOrWillReceiveMail check
it's fine i can figure that out
Just figured out what RemoveDelimited does.
(is ender gonna drop the unlimited tree update 👀 )
(sorry not a tree update this time, just gotta ping pathos cause i found a bug in 1.6.9 ;p)
(we love pinging pathos with bugs)
(and i'm also a nervous wreck about pinging pathos so this short message which should've been sent like 10 years ago takes, well, 10 years to send ;p)
@ivory plume as of 1.6.9 the AcceptGift_<id> dialogue key has stopped working, NPC.GetGiftReaction never checks TryGetDialogue("AcceptGift_" + gift.QualifiedItemId)
y'know i was terrified about the broken_capsule and everyone was like, "okay but the summit is the only one that's incorrect"
wAIT THAT'S IMPORTANT TO ME THOUGH LMAO
hello gang Im having a hard time with expanded storage 😭
[Content Patcher] Ignored Pau's Winery Racks > Include data/WineBarrel.json > Load Wine Barrel Rack: Entries > '{{modID}}_WineBarrel' value is invalid: '{{WineBarrelCapacity}}' can't be used as a token because that token could not be found.
WineBarrel.json https://smapi.io/json/content-patcher/2ef81c57217b4ba4b5c9155db441606d
content.json https://smapi.io/json/content-patcher/f88136984302479faeaf56e110a12db5
if it helps im trying to study 6480's storage variety, and I think i have everything set up but clearly not hiodshdiugh
so i would need to do string manipulation. where would i do this? i can't (shouldn't?) like edit the xnb files while the game is running, right? would i have to patch like LetterViewerMenu or something in the data loading process?
I dont see the WineBarrelCapacity token being defined anywhere in your files
^
the good news is that the facing 4 in schedules was mainly on one character so at least there's not that much to fix...
You can do whatever the heck you want in c#
Oh !! wait I think I see exactly where I glossed over 6480's code; the top part 😭
thank you aaa
*shouldn't?
sorry i've literally never messed with mail
no no, should
ah ok
someone is making a first person stardew, cause chaos
You can edit the mail asset with an AssetRequested event or you can edit the mail dictionary after it's loaded. You can even patch the function that adds the rewards
Depends on what you want to do
alright. thank you!
though I recommend the first route
Fixed in the next 1.6.9 beta patch. Thanks for reporting it!
@ivory plume The fairy box trinket light source only appears on the local player, is that intentional?
Probably not, but that'll need a bit more refactoring to make sure the light is managed correctly. Can you post a suggestion in the forums to make the light shared?
There’s a mod that gives the farmer portraits right?
I had a strange encounter with CJB Cheats Menu where Fishing was set to level 60 when I was at level 9 and then level 59 when I leveled up to level 10
Which class are the monster abilities in the decompiled code
wording questions, if you want to say someone wasn't obligated to do an effort for you, what would be a common sentence to say that? like they are giving you a hand with tedious task or whatever
like in a rude way? or a nice way?
"oh you dont/didnt have to" "feel free to say no" "oh you shouldnt have" (very nice, surprised)
rude: "Even though I was under no obligation to offer help, I decided it was necessary."
thats from the wrong pov
nice way, from the person receiving the help
oh receiving help
"I appreciate the effort even though you were under no obligation."
or like "i'm not gonna take your hard work for granted" something
"“You didn’t have to do that, but I really appreciate it.”
thanks 🙂
will temporaryanimatedsprite <fade> command get mad at me if i set it to a negative if i want it to slow transition from nonexistence to existence
I think every monster type has its own class for its behavior (Ghost, Bat, etc.)
which all derive from Monster
Hello!
Im making a content patcher mod to replace the pig painting
I found the painting; its in tilesheets/furniture_2
I had received some advice about the "coordinates", but im not sure what to do
any reason why you replace rather than adding a new one?
content patcher can also add paintings
ok 🙂 well, adding furniture isn't that much difficult if you want
Maybe ill add the furnitre in another version
https://www.nexusmods.com/stardewvalley/mods/26505 a bit advanced but here's a CP mod adding some
Its just that i already ahve the pig paitning so its easier
and yes, that is fair, i wanted just to let you know 🙂
if you're fine with just changing the current painting then the EditImage stuff Chu linked is what you want to look at
yep, in particular the bit about PatchMode
hi, is it possible to have a range and select lines in i18n dialogue? for instnace i want lines 1-10 and 13 how would i do this using range? currently im using {{i18n:anony.NPC.0-4.{{Random:{{Range: 1, 10}}}}}} just to get lines 1-10
{{i18n:anony.NPC.0-4.{{Random:{{Range: 1, 10}}, 13}}}} I think
thatd make line 13 a lot more individually likely than any of the other 10, right?
Hi
oh yeah
Im getting an error when i try to use my mod
[Content Patcher] Error preloading content pack 'Brother, May I Have Some Oats?'. Technical details:
Newtonsoft.Json.JsonReaderException: Can't parse JSON file at C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Mods[CP] Brother\content.json.
Technical details: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'ContentPatcher.Framework.ConfigModels.ConfigSchemaFieldConfig' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly.
To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array.
Path 'ConfigSchema.Changes', line 16, position 15.
at StardewModdingAPI.Toolkit.Serialization.JsonHelper.ReadJsonFileIfExists[TModel](String fullPath, TModel& result) in E:\source_Stardew\SMAPI\src\SMAPI.Toolkit\Serialization\JsonHelper.cs:line 86
at StardewModdingAPI.Framework.ContentPack.ReadJsonFile[TModel](String path) in E:\source_Stardew\SMAPI\src\SMAPI\Framework\ContentPack.cs:line 76
at ContentPatcher.Framework.RawContentPack.TryReloadContent(String& error) in E:\source_Stardew\Mods.Pathoschild\ContentPatcher\Framework\RawContentPack.cs:line 80
at ContentPatcher.ModEntry.GetContentPacks()+MoveNext() in E:\source_Stardew\Mods.Pathoschild\ContentPatcher\ModEntry.cs:line 455
!log
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.
!json send your json too since it seems like your config setup is wrong
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.
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 13 C# mods and 10 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
you copied the json link wrong, i think, just leads to an error
hi, i just joined a few minutes ago. i have no experience modding games, but ive spent the past few several hours looking into stardew modding, downloading content smapi and content patcher and stuff, reading guides and things on the modding wiki-
my goal is to add some fish, namely gourami. issue is, using the guides and the wiki i cant figure out what Exactly i need to be putting down, and what folders i need to have set up to include the new assets.
i know that at least on the wiki, adding fish is a fairly advanced thing to do? if anyone has any advice, or can direct me to at least something else i should do to get a better handle on how exactly to add things, i would really appreciate it.
ah yeah, missing a closing brace before "Changes"
Hey! You'll want to be making a content patcher mod. You can use the mod More New Fish as a direct example
currently the json is trying to add your Changes stuff inside the config which doesnt work
You don't need to have your mod files organized in any particular way. Mod file organization is pure preference (for CP mods)
I would suggest trying to add any random object first
so could they just be like, loosely thrown into the mod folder? lol
I dont understand; howwould i fix it?
yeah its more about how your code refers to each file
as long as your code names the files correctly then they can be anywhere
your "ConfigSchema" line has a { to start it but it doesnt have a }, to finish it
Have you made a working CP mod first? Literally anything?
it's not that advanced, it's just that there's several small things to change. Mainly :
objects to add the actual inventory object
fish to have the fish data (hard to fish, season, behaviour)
location to add the fish to specific location (bit advanced because you need to target field)
aquarium (OPTIONAL) to have fish swimming in it
fish pond (OPTIONAL) to have fish producing custom items
i suggest starting by making the object and focusing on that alone
makes sense, thank you! and no i have not 😭 ive honestly sort of just been floundering around between guides haha
(also you seem to have an extra } inside your changes section too)
Content Patcher (https://www.nexusmods.com/stardewvalley/mods/1915) is a mod which loads content packs to change the game's images and data without replacing XNB files. If you want to make mods using Content Patcher, start at https://stardewvalleywiki.com/Modding:Content_Patcher.
second link, it gives you a dummy mod to set up
once you have a working object you can see about having fish info, then location stuff
once you have the dummy mod set up and working you can come back and i'll give you a template/info for object modding
okay awesome, ill check this out. thanks a bunch!
(i emphasis on the step by step, as the location stuff is to be done right to not erase existing location info)
luckily the progression is mostly natural at least, you don't have to start by the worse part. Another advice before i go to sleep : install mods like CJB item spawner (and CJB cheat) as they'll make testing easier. I love debug commands, but cheat mods are really more convenient on some stuff. WIth item spawner you can quickly see if your item is properly added/working
i hope you dont mind the @ , but ive got it to this point
Awesome! Okay, I'll type out a longer message with more direction for you
first unpack your game
!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!
You can keep that folder you set up and use it to start working on your fish mod.
- Have the CP author's guide open--this gives you info on different CP functions that you can search through for help https://github.com/Pathoschild/StardewMods/blob/stable/ContentPatcher/docs/author-guide.md#readme
- Have the Object wiki page open as well--this tells you specifically about the structure of the game's object data (which you can view in the unpacked files in Data/Objects) https://stardewvalleywiki.com/Modding:Items#Objects
It's the structure that your custom Object (the fish) will follow - Grab my template mod and look through the files/code to familiarize yourself with it. You can copy directly from it to use for your own. My template mod adds one crop and two items (the seeds and the produce), but you just need to worry about adding an item, which is going to be the same format https://github.com/6480k/6480-Stardew-Mods/blob/main/[CP] Mouse-Ear Cress/content.json
You can see that my template mod only has a single content.json file, and a folder for image assets. That's because it's really simple and I have no need to split code among other files. If you want to split code between files, you need to use a special CP function called Include for that. But I recommend that you just do stuff in the content.json until you're more comfortable with everything
considering ending a reply to a nexus comment with "hope this helps!" and shriveling into a husk unable to decide if it's genuine or savage. surely this is what tone indicators are for
Put a smiley
._.
"Hope this helps! D:"
meanwhile all of my changelogs have some form of "i made a woopsie daisie, dumb me"
how can i show off my mod in mod showcase?
one of the orange flavored names can offer to put it up, it's a farmer + mod author perk
errrr 
Hello!
I need some help: i'm doing my own mod and i'm trying to change Haley's texture, but when i start a new game, she's wearing winter clothes... is there something that i can do about it?
StardewXnbHack 1.1.1 is only for the 1.6.9 beta version. Use 1.1.0
you have to change haley winter texture as well
Could you please showcase my mod, @brittle pasture ?
sure, post it!
do you intend to give her more outfits?
Nope!
Actually, I already changed everything (except for the beach texture), that's why i'm so confused :d
(New game shouldnt use winter however ?)
Yeah, that's really weird!
I don't understand why she's using winter clothes, it's spring season
:(
oh i missed the part about new game, thought you just loaded in 
your winter clothes or *vanilla( winter clothes?
hey, now you have a new mod: haley has poor circulation 😅
@brittle pasture Thanks so much!
can't imagine how that'd happen if you are just using Load or EditImage, perhaps post conent.json and a log
No prob! PS. That's a hilarious idea lol
Is there any possibility of having something wrong with my content.json?
My winter clothes!
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.
Lol thanks. I got the idea when i was talking with a friend and he sent me the meme
yea could be that you got your loads wrong
you probablu just named a texture wrong
I'm going to take a look at it, i think i found the mistake
still waiting for the game to unpack, but i seriously appreciate the help!
I'm pretty sure I've asked this before, but When statements don't allow you do to different days per season, right? Like if I want something to be available on Spring 14 and 15 and again for the month of Summer, I need to use Conditions instead. Is that right?
you can do a query inside of a when
you can probably do just the uh comma additions though iirc
you dont need to do a query, you can just have two different when conditions, one for spring and summer, and one for the day being 14 or 15
cause that's an any
i have absolutely no when conditions without the |contains lmao why am i like this
yeah you can just use CP syntax to combine when conditions
Where do I find that again?
Hey 6480 how'd you come up with prices for your crops?
i keep a spreadsheet for vanilla and modded items and balance them so that profit/day roughly matches vanilla
thats all i can really say
just balance it
for machines i made a spreadsheet for time/profit/effort/etc for all vanilla machines
hm, alright thanks
I've been reading that, but it won't work if I'm trying to have the items available for two days one month then all days the next month because "Each condition is true if any of its values match, and the patch is applied if all of its conditions match."
Unless I'm still missing something, of course.
Oh all days the next then yeah buttons 2 different editdata with their when condition
You got it!
then use the conditions field
Does When not apply to shops?
its the intended method of hiding shop entries
i mean you can use When if you want but like
MoveEntry only works when the entry exists
other mods patching your shop entry will have to account for the shop entry sometimes being there sometimes not being there
its just not something i would do
Thanks for the input!
Oh shops
I did not enjoy reading making my custom shop
But did you enjoy making a custom shop?
I'm guessing there's isn't anything like that, but worth asking anyway. Is there a wiki article or something that describes how base game handles internationalization/translations? 
https://stardewvalleywiki.com/Modding:Tokenizable_strings
This is the closest I can think of right now, it typically uses LocalizedText which points to one of the Strings assets
Hmm not quite what I was looking for, but that gives me an idea at least, thanks
I have a Redwood I started worked on a week or so before 1.6 was released. I got so bogged down, I still haven’t finished her. She is really tall. It is funny tho cause the vanilla trees which are large, but are just graphics…
Syntax highlighting for my content patcher type thing for SpaceCore? 
anyone know where one can find the weather debris textures? I can't see it in cursors
Now, do I go through the trouble of implementing error highlighting...
(I have no clue how languages "keep going" after highlighting an error... my parser stops at one)
aha! it is in mouse cursors
i think they might just pretend the error didnt exist or like, if the issue is a missing comma or something, pretend the comma is there, and keep going
r u make the abstract syntax tree
in those case its ok if a node is kill, it can continue with other branch
I'm not sure what defines an abstract syntax tree, I kinda just whipped something together
(i took a whole course on it and still barely understand them
)
the only thing I did related to ASTs was writing JS code that wrote other JS code. and yes, it is as cursed as it sounds
yea in the context of a functional programming language a leaf is a literal and a branch is a operator, so smth like addition would be like
[+]
- 1
- 2
- is it a tree structure; and
- do the nodes represent individual syntax elements (not punctuation or other stuff).
That's pretty much it.
u can prob steal homework from the official json extension
Found this that I'm hoping will be helpful: https://github.com/matarillo/vscode-languageserver-csharp-example/tree/master
ig for json the operators would be array, list, object
https://github.com/microsoft/vscode-json-languageservice/blob/main/src/parser/jsonParser.ts
functions are also "operators" kinda
Well, it only took 2 and a half hours but i finally have an item with no image and a broken name, LOL
it lives!
hahah
picked a hard to spell name for a mod (i like it) but it has led to at least one Esoteric Tech Issue because i spelled the name wrong 😭
THE CUTEST LIL DUDE
(also i love your carrd)
Haha thank you!!!!
There aren't that many mods which use OutputMethod machines right
I was thinking of adding some desc for the vanilla ones to LA, to show in place of the current "too complex to display" message
that could be a good idea
But it'll be hella hardcoding which bothers me a little bit
LA is already hard coding context tags' readable descriptions
since there's like no other way
what if I just reverse patch and show the IL it'll be very useful trust
No no no
Feed the IL to chatgpt
See what it says
Clearly a machine that can solve a resistor net a third grader can solve can lay out a pcb
Oh yeah I do still want to do that custom asset maybe, but I am slacc rn bc beta
Prob need more opinion from content mod authors too, whether they would be down with extra work like this
still not as much a slacker as me, who more or less washed their hands of future improvements to LA since it already did what I wanted
(unreadable Cornucopia yogurt recipes be damned)
I try not to think about the font wrapping 
hmm is there already precedence for stuff like this with Custom Bush? or does it do something else for the bush description
Oh custom bush integration is just LA calling the api
No additional work from content makers
Really the ideal case is sneak a context tag model into game itself and make everyone do it 
or per atra's idea feed the context tag to chatGPT and spit out a readable description
Nou
Context tag model is pipe dream but I do think it'd be really nice to have display names for locations
LA has a bunch of no translation for modded fishing data
Don't locations have a display name field
It's not always populated but k swear it exists
GameLoc does, yeah
no idea if it's ever used, but it's available as a data field, I guess
What about the data model
yeah it does have DisplayName
it's the first field in vanilla Data/Locations entries, e.g.
"Woods": {
"DisplayName": "[LocalizedText Strings\\StringsFromCSFiles:MapPage.cs.11114]",```
pretty sure the field didn't exist prior to 1.6, yeah
That or LA not updated in this aspect, I'll check tmr
so the fix is probably to bug mod makers to add the display name to their data field
Or be that one CP mod that adds it to a bu ch of mods
altruism!
Mwahahaha
(It can only show one error at a time though)
Only problem: It's not very helpful because this is technically valid until the end of the file:
Because argument separators and statement enders at the same token
And I'd need to add support for all the functions...
ive never made a mod before, and ive been told this is a good place to ask for help. i think its pretty simple? im just having a hard time understanding the error code im getting when i try to validate my content file. if anyone is willing to give me insight or feedback id really appreciate it. its content patcher texture replacement
So this is a longshot but can the farmer's eye color be referenced in a content patcher dialogue line?
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
looks like a missed comma after ToArea before PatchMode
damn, i didnt even notice that. i checked with the validator before fixing it, and again after fixing it (thank you for the command btw) and now i have brand new errors to parse, but this is definitely progress, thank you :)
(i would also highly recommend notepad++ instead of notepad, incidentally)
(notepad++ at a minimum i mean, VSCode even better)
👀 is this like your own language for specifically spacecore?
Yeah, I made it for embedding in my C# mods that depend on SpaceCore. At some point I'll make it available for others to make content packs for though
i originally learned to code on notepad++ i cant believe i forgot all about it, thank you XD
TIL wild trees can have a sprite for "has seed", and a sprite for "has moss", but not a sprite for both
Does anyone know if I can re-use this format to trigger dialogue after events (from Demetrius' dialogue file)? or do I need to use the event to create a conversation topic? "eventSeen_65_memory_twoweeks": "Don't forget to check that farm cave! There's bound to be something useful in there by now.",
You can iirc, 65 is the unique event id
OK so I can use my own event IDs in this way? awesome
Yeah I don't have access to the decompile right now but it should fit the template, Abigail has it too
@drowsy pewter sorry again for the @ but 🥹 thank you SO much for the help!
I think that's because "seed" in this instance really refers to coconuts and palm trees can't grow in any of the same locations as moss.
If I wanted to try to make my new home renovation room decoratable as far as being able to change the walls and floors, how would I go about doing that?
I saw mention on the wiki about decoratable locations but I can't figure out where that gets implemented if I am using CP
added a method to Helper.Events.GameLoop.DayStarted and it doesn't seem to get run at all
How did you add it?
Helper.Events.GameLoop.DayStarted += OnDayStarted;
like you're meant to im pretty sure
is that in your Entry?
Can we see the whole file?
yeah
i moved the method over from another file thats why there's so many method references elsewhere
like Code.Helper etc.
literally i don't see any reason it wouldn't work
abstract class?
okkk another issue i don't understand the cause of
in both a patch on Crop.newDay and a function using Utility.ForEachCrop the Crop instance passed to the function returns an empty string for Crop.indexOfHarvest and returns null for Crop.GetData().
i don't know how to get what crop type it is
i use
Utility.ForEachCrop(CountMatureFlowers);
with
public static bool CountMatureFlowers(Crop thisCrop) {
if (thisCrop.dead.Value) return true;
if (!thisCrop.fullyGrown.Value) return true;
Helper.Log((thisCrop.GetData() is null).ToString());
if (!Helper.FlowerCache.Contains(thisCrop.indexOfHarvest.Value)) return true;
Farm thisFarm = Game1.getFarm();
Helper.Ensure_modData(thisFarm, Helper.ModDataPrizeCheckKey);
int prizeScore = int.Parse(thisFarm.modData[Helper.ModDataPrizeCheckKey]);
thisFarm.modData[Helper.ModDataPrizeCheckKey] = (prizeScore + 1).ToString();
return true;
}
sounds like invalid crop data to me?
it's every crop though. not any of them get through
indexOfHarvest seems to be what the game uses to make the crops drop anything though. if it's an empty string, then that functionality would be broken
hm.
i think i figured something out?
nope...
lookup anything seems to be able to get the indexOfHarvest just fine
but nothing i'm doing works :(
maybe the gourmand frog code would help?
it was the only thing i could think off the top of my head that "judges" the fact that a crop exists 
it seems to work?
(did some testing with Utility.ForEachCrop and seems like it also counts the ginger on ginger island and that seems to have a null indexOfHarvest, so you would've just needed a crop.indexOfHarvest.Value != null in the original code)
yeah but all of them ended up null? the correct ones might've gotten filtered out early
it's alright it currently works rn
Hm, in my testing only the ginger is null, the crop i planted works fine (see the top line, that's it's indexOfHarvest)
do someone spots anything wrong in :
speak Sterling? \"{{i18n: SeedShopMaddy2HSterling01}}\"/```
I thought using ? would avoid issues but instead my event just end
so maybe i don't get how ? is supposed to work, but wiki has like, no extra info
speak is currently broken with optional NPCs if the NPC isn't present.
I think that it should be fixed in 1.6.9 but I am just looking back through discord to check that it definitely did get reported to Pathos as well as the problem with the move command
thanks! i was about to say that i have no issue with optional in advanced move command so
good to know
good thing : it's not me
bad thing : it's not me 😄
Yup it's in the beta changelog that it's been fixed in 1.6.9
thanks 🙂 i'm glad i asked, i would not have solved it on my end 😄
("she fixes C# issue with a simple CP trick, developers loves her")
Oh whew thanks EnderTedi
Ohh I didn't even think to click on the page for the beta to find the changelog. Silly of me.
I shared this over in #modded-stardew but it'd be more useful over here instead 😆 I've started making a table on the modding wiki with a list of everything contained in Cursors (and eventually Cursors2 and Cursors1.6) with a quick description, co-ordinates, and sprite sizes for easy reference
https://stardewmodding.wiki.gg/wiki/Cursors
The Cursors.xnb is full of various different icons that are used in-game. Of course, at first glance it is difficult to tell what they are used for and where. A running joke in the SV community is that if you are looking for something, it is either in Cursors.xnb, Cursors2.xnb... or Springobjects.xnb.
Note: some of the usage descriptions may be ...
It's only partially filled in so far because we've all seen how big Cursors is and there's some stuff that I don't know where it's used, but I've got the main structure set up if anyone's interested in helping fill it out at some point
That's going to be very helpful for a lot of people! How are you determining which order the sprites should be listed in the table? I see it's roughly left to right and then down, but the inconsistent sizes interfere somewhat with that approach I think.
Yeah, it's just a rough order since everything's packed in there
The separation bars are at the points where there's a clear line between sprites with no overlapping
(is there a thread for the beta or something?)
Does the wiki allow multiple people to edit a page at once or does it lock it once one person has started?
Should be open to anyone
Non!
Two people can edit at the same time
But that usually ends in tears
Hmm that seems dangerous if more than one person is doing it.
Though I'm not sure how it'd handle it if two people are editing at the exact same time 
Sometimes in the past when we were discussing wiki edits I'll be like "lock on schedules page, please don't edit until I'm done"
About to cause merge conflicts on the wiki 
Yeah, uh
I guess if I try to add some stuff to the cursors page I will just do them in a different program in small spurts to avoid a) trying to edit at the same time as someone else and breaking stuff or b) working on something for ages and then someone else has done the same work.
Lol all good
She's...kind of going. I get too caught up on trying to make her realistic and forget that I am meant to be having fun lol
yeah, focus on the fun 🙂 realistic can always happen if you find a way to make that part fun. Like, a challenge, or just being "oh, Hiria would react (that way) that makes so much sense". Sometimes, you need time for the pieces to click together
it's good to not force it 🙂
I also realised that I can just shanghai people into realism testing her for me 
It helps to know that I don't have to do things all by myself. If I hadn't joined this server I would've gotten overwhelmed and abandoned her several times over by now 
this is good advice. along these lines, a favorite writing tip of mine is to let things come as they come: as you define and refine the character, some things will seem to "write themselves", because the character's reaction to a situation has become so obvious to you
Ngl ichor
I really do want to know how lacey reacts to specific 1.6 hats
(I'm not asking you to tell me, just expressing interest)
the latest update has the 1.6 hat reactions
one thing i will spoil in here: in 1.5 i did a gag about the pink bow being enormous. 1.6 added multiple bows of comparable size, so i had to keep riffing on it
I am writing a mini-event of Hiria discussing parrots with Demetrius because kākāpō are fat and stinky and I want the world to know about them :D
Oh thats cute @ichor and aba
Only problem is that Stardew doesn't do macrons so I have to write it as "kaakaapoo" and that's just awful 
This might be the thing that finally gets me to see if the Font Settings mod will let me add a font with macrons.
those are the birds people are trying to reproduce so they don't go extinct?
Yeah. They are critically endangered because they are so fat and flightless :(
Aba, does ä work as a substitute in Maori? I ran into the same issue with Samoan Alex's dialogue since he calls his grandparents Tinā and Tamā, but I found a resource somewhere saying that ä could be used as a substitute for ā in Samoan if needed, which works in Stardew
this is the sort of situation that would get me writing some bespoke C# shenanigans to patch in the macron letters
Ooh thanks Airyn I will look into it. I've only seen letter-doubling as the acceptable substitute so far (hence kaakaapoo lol) but I will try specifically looking for two dot substitution.
käkäpö...
out of curiosity I looked up kaakaapoo and omg
they look like atis
im gonna whip up a meme just for this uno momento
uidsgiuguif
okay bye HAHA
what is atis?
Okay I am going to use diaeresis as a substitute for the macron! Thank you!!!
The atis looks like a custard apple.
I wonder if they are the same?
lemme find what else its called, maybe youre right
wiki says theyre also called sugar apples
I'm pretty sure it is, yeah!
sweetsops, thats a cute name 
Okay, so now everything is under the minerals category, and… nothing can be donated💀
i didn't know at all about this fruit, thanks 🙂
looks like airyn and aba are right "The flesh is fragrant and sweet, creamy white through light yellow, and resembles and tastes like custard. "
Yeah Australia does call them custard apples - I didn't realise the rest of the world doesn't!
thats so cool !! i learned a new word for them today
One of you guys should make a mod that just adds it
/cough Pau cough/
hfuahfajuf ill check if cornucopia has it first
the chances of it being there is high
Is there a tag or smthn that lets me donate because it wasnt the category that was the problem
If I could do that, I would. I am going to use diaeresis as a substitute but I would definitely like to find a way to make macrons possible at some point.
This is for MCGM
i have no problem with my mineral being natively donatable
can you ensure you are testing with fresh items
have place left in museum
and show the code
Think it'd be possible to get CA to slip it into 1.6.9? 
Would you like a segment of one gen or the whole 2,400 line block?
what do you think would be the most convenient for me?
One i suppose 
1.6.9 seems like all bug fixes tho
kinda wish we have a "temporarystaticsprite"
Pathos mentioned there were some accessibility tweaks too, I think
update from my prelim research, atis/sugar apple/custard apple is not in cornucopia
👁️ maybe I could do it after all
Very confused now about what Atra was suggesting be added. First I thought macrons, then I thought custard apples, now I think macrons again. Halp.
sorry for the multi track train of thought uighuigfiudg
i must say it, i really resisted but the name of this accent is really really really hard to read
T___T
cries in french
Wait, yeah, I think Atra was suggesting custard apples but my reply was about macrons 😆 Whoops
thanks, we can return to a normal discussion
Yes I saw 1.6.9 is getting fields to support screen reader mods which is awesome
Does it work if you make a TemporaryAnimatedSprite that's 1 frame long
here lumi
i guess, it's just that it's a list of 18 fields
!codeblock
You can embed code in Discord using a series of three ` :
Your code can go here
Even if not a haiku
Just an example
For syntax highlighting, add the language code on the same line as the first (with a space between, like json). The usual codes are cs (C#) and json.
Lol, poor Gov
try type minerals and test with a fresh one? just in case
how the heccdo i get the backwards apostrophe
Is that a new problem with the command? I don't remember it being all wonky like that before.
Backtick is the key to the left of the 1. The tilde like roku said.
You can also copy paste from the message
me and my french keyboard are disagreeing
i cant tab down
I usually fix tabs in vscode then paste
It's on the 7 key for the French keyboard?
Tab down? Do you mean line break?
If so that's shift+enter
there we go
Usually when I copy paste from VSCode discord decides that my tab spacing is actually illegal and messes it up
Just send the code via the JSON validator
oh yeah discord doesn't like the actual tab character
Then it's not taking up a huge amount of space
I indent with spaces bc I am unfortunately a python dev
I thought I had it set up to convert tabs to spaces already
(yes, near the è )
Maybe I only have that on regular VS
I tab in discord though
Have I just never noticed it not working?
Hmm my tabs look fine to me
I think tabbing only works if it's in a code block
i mean, i see no point in sending it if you ignore the suggestion of fix i.... suggested
tabbing dosnt work normlly
Pride themed yarn, obviously
test with the suggestion and then tell me if it's better, and if not, send the actual version
they are fresh
you mean with cjb?
...
godammit im so confsed
this
you still have mineral
anyway
send help pls, i found a sprite for barbecued aubergine i made a while back and now i want to make a recipe
Objects that already spawned don't get refreshed from object data changes
That is why lumina is suggesting starting with a new copy of the item
"maybe this event can learn you (recipe x)" "what about more recipe????". Begone, scopecreep
You can also check how vanilla is doing its stuff to see
Thinking about it, I actually can't remember if there's any existing mods that expand on wool & cloth? It'd be really neat to have a mod that lets you dye wool, spin it into yarn, and then create knitted socks, jumpers, cardigans & such
A better example I guess, matching your desired category
i remember some mods wanting more steps to craft wool, like a spinning wheel or whatever
no idea if they released/are up to date
irl looms r massive
wonder if there's something that let you make bigger big craftables
aedenthorn casey had a mod for that (sorry I misremembered!)
not updated though
or you can just make a building
I'm going to be honest, I think physical crafts are a very different thing than video game
I guess my next step is to get a decompiler working 💀
Like, the fact that it is a physical object is the point
Well yeah, but that's also true of a great many things that can be created in games with crafting 😅 It's more "this is a way of expanding what you can do with wool" than specifically about the item itself
Bigger craftables is casey
Yeah, I just don't really like items for the sake of items
I don’t get it, there’s nothing that implies donatability
And idk what the “localized text” means
Your Type and Category have to be set correctly, the game automatically assigns context tags that decide donatability
You could try manually adding one of the context tags as well

