#making-mods-general
1 messages · Page 361 of 1
I thought so
now i wanna make an elf that has tea with the wizard every weekend and is mysterious
Robin has one there
without having looked into it, i'd imagine it's banned because of the blocking log in front of the woods, which doesn't have an alternative schedule entry the same as the railroad and jojamart do
They are not affected by the pathfinder because you control all movement in an event
They climb over the log /jk
Could you just edit the backwoods to allow NPCs to pass through the fence and cliff and then the disconnect would be fixed?
I mean, yes, but that would look kind of silly, and the cycle issue would still be there
so you’d still have to ban the backwoods anyway so that npcs that are allowed on the farm (spouses, mostly) don’t explode
I know it wouldn't be desirable because you'd still have the cycles issue
I was just curious lol
it would! as long as any warp that might be used in a schedule is reachable from any other warp
(you could also make the pathfinder treat the two parts of the backwoods like separate maps I guess, but that would be a both hacky and tricky rewrite haha)
I was never bothered by Coal Point Farm's magical warping from the farm to the mountain so I certainly would not bother to make backwoods passable lol

omg i never noticed that
they do just warp to the mountain dont they
cant believe they got fast travel
hm so i can just make mannequin with a (nearly) empty farmer sprite
the sleeves and shoes are broken tho
Hi! I'm having issues with a farm map that I'm trying to edit
I just want to completely remove a fence, I assumed that by erasing the tiles in the .tmx file would work, but Tiled is asking me for tilesets, I've tried to do it without locating the tilesets, and locating them but not moving them to the mod folder, but it's not working
Here's the log:
https://smapi.io/log/71d5c742709b466584771c2e76220b5e
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Pro, with 138 C# mods and 290 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
You have to edit a map with all the tilesheets present in the folder at the same time. If you don't and you locate the tilesheets that are in another folder, you will get a tilesheet climbing error. If you don't and you just let it have missing tilesheets, you will break the tile IDs as you have done in this log. You need to put all the tilesheets in the same folder as the map, open it in Tiled, edit it, save it, move all the tilesheets back out, and test.
alright, I'll give it a try, thanks!
So question: can a text operation be nullified by another EditData?
So if I append text to Strings/StringsFromCSFiles:TV.cs.13191, for example. The under that I do a simple patch edit to Strings/StringsFromCSFiles:TV.cs.13191,
would the text append be overwritten simple patch, or would it do the simple patch first, then the append?
Hi, I have a question, hoping you could give me some insight.
I use a lot of mods that use content patcher, and some of them are causing slowness in some transactions.
I'm making a mod that tells me which CP elements load in each map, but I can't get either smapi or content patcher to give me that information.
First, is this possible? And if so, what would you recommend?
Thanks.
SinZ has a mod called Profiler that does this when combined with the version of SMAPI and CP he made (I think, it lost me a while) back. There's a pinned post that hopefully has the most up to date downloads for it. https://discord.com/channels/137344473976799233/1359454014319755294
@hallow prism: see if you have the field uber pls (12h ago)
Just tested it, and yes, it looks like TextOperations is overwritten if the field is changed later by a "Fields" or "Entries" edit. Between multiple mods, it'd depend on dependency order or priority settings, but inside your own mod, text operations can be erased by anything lower than them in the Changes list.
"CustomFields": {
"UIInfoSuite.ExtendedData/DisplayName": "{{i18n:MtVapiusWildTreeBirchTreeName}}"
},```
I should then be good i believe
(not quite - although sinz optimises content patcher, getting the info from content patcher is indeed very difficult and profiler doesn't do that right now)
SinZ gets info about which CP mods are doing stuff at what times though
The content patcher build in that thread exposes the info to profiler
oh, nice! but only if it uses your content patcher build?
the functions needed can't be harmony patched due to how content patcher calls them
So it's a matter a good priority arrangement then. Thank you for testing it!
(regular profiler doesn't go into detail about content packs and what they're doing, it just says "content patcher", but it looks like with the special version of content patcher that sinz made you're absolutely right)
(I misunderstood your initial message
)
I was going to say, because I was like "but I used it??? And I read what the CP mods were doing in my game on their log interpretation graph!" (Whoops sorry, assumed pronouns)
The timing of Fields vs Entry vs textoperation are all internal to that individual change/patch, but the order is TargetField then Entries, Then Fields, Then TextOperations then Move operations
but if you have multiple patches, it doesn't matter if the patch used text operations vs entries, the ordering is dependent on the patch order
the custom build exposes the info like
{
"OccuredAt": 2358703.6042,
"Metadata": {
"Duration": 2.816,
"ModId": "Aimon111.FarmhouseRoomsPIF",
"EventType": "ApplyLoad",
"Details": "Aimon's Farmhouse Rooms - Rooftops,Attics & Balcony (PIF) > Load Mods/Aimon111.Rooftops$AtticsPIF/Balcony",
"InnerDetails": [],
"Type": "Duration"
}
},
{
"OccuredAt": 2358706.504,
"Metadata": {
"Duration": 8.4264,
"ModId": "Aimon111.FarmhouseRoomsPIF",
"EventType": "ApplyEdit",
"Details": "Aimon's Farmhouse Rooms - Rooftops,Attics & Balcony (PIF) > EditImage Mods/Aimon111.Rooftops$AtticsPIF/Balcony #1",
"InnerDetails": [],
"Type": "Duration"
}
},
Warping into Farmhouse is semi fine, though you would end up at the front door, having the warp back out survive the various mutations that happen is more spicy
Oh path point
I think its possible but would be cursed, its not forbidden in the pathfinding cache, nor is it actually marked ExcludeFromNpcPathfinding
and despite technically being a building interior, it would still likely be considered a full location for the purposes of being in Game1.locations
I do use FarmCave and I had a theoretical mod that used Greenhouse
But eff compat on that one
if you're lucky you can use Shed9a9f80ef-c9ac-4a62-8728-fdfb78fa21c3 in your schedule
Can i?
Pretty sure macroscheduler doesnt accept that one
I'm not being serious btw
I assume bluebs isn't either
When did atra upgrade to 8th grade physics
@acoustic summit i was wondering (and let me know if you prefer questions asked elsewhere), but i have some rewards that don't appears when donating items, is it possible that, despite them having specific unique ID, they aren't showing because the specific item id is stuff that the museum can already donate? like treasure totem or something?
Hi Lumina, no that shouldn't be the case I'll look into it; Are you using content pack or content patcher format for the rewards?
No thats alright 🙂
to elaborate, i have no issue getting similar items as reward with my custom items, so it's possible the issue is elsewhere and unrelated
items i have trouble with is TreasureTotem and MixedFlowerSeeds
so either it's that, or the vanilla items using string ids behaving strangely
hi again! I was wondering, do you know if its any easier to edit tooltips? like, after interacting with the item on the hat, edit the hat tooltip to indicate that item is "attached" to it. maybe something like how enchantment tooltips are shown? idk xD
looks like I get to use this screenshot again
though, hmm, attachment slots is actually an overridable method on Item, not a Tool thing
good news, you probably don't need to transpile drawHoverText
you can patch Item's attachment slots functions to do your stuff only if it's a Hat with attached items, however you're attaching them
you can copy from Tool's own version of those functions
I'm currently working on a NPC who is a mermaid and I wanted to ask if anyone has any mods that add or change the mermaid lore, or give any of the existing mermaids names so I could avoid contradicting them or to reference them. There's a few that are easy to spot but I'm wondering more about mods that maybe have an offhand line somewhere that would be easy to miss.
unreleased WIP expansion Malha is chiefly about mermaids, and my memory tells me that it gives the singing one from vanilla's mermaid show a name, but obviously it's not published yet so it may not be a problem for you
i need tutorial for making a basic mod with json i dont know how to use json yet
is walking, kiss and wedding sprites are enough for a custom npc?
like i am not planning for something extra for now
sleeping sprite
oh right
and if you're doing those romanceable sprites, flower dance as well maybe
unless they're not danceable
yup im not planning that (im lazy for the dress 🙏)
fair lol
it so confusing their is so mcuh to do
what are you trying to make?
we have so many mermaid mods in the works LOL
Krit has one, I'm muddling through one- all the mermaids
our mermaids should all be friends obviously
ive been searching everywhere but is there a map out there with areas highlighted where festivals go? I'm trying to figure out where I can place a hypothetical building and it is so hard 😭 (i'm going to practice making buildings so I can offer that with my sprite comms) I found ones for vanilla and sdve on reddit, but im stressing about accidentally placing it in the way of some event or festival
and I know you're not supposed to touch the way to the mountain from the farm (since thats sacred keg grounds) but its so TEMPTING and open
Well mainly NPC pathfinding re: the mountain farm path is why it isn't touched, from what I understand
as in, NPCs don't path there, so it's awkward to use
ahh I just thought we were all respecting its use as a farm extension haha that makes a bit more sense
Also you can look at the festival map variants in Tiled to see where stuff goes if you need. You can also patch festivals to make sure the building shows up in them
Do I have to set up my NPC's position in y2 of the festivals as well? Mine won't show up in y2, but will in y1
Yes
How do I do that
yes, it's this. NPCs are prohibited from using Backwoods in their schedules at all
Ngl, just use whatever area feels right for you. If you like the sacred keg grounds, build your expansion there! Maybe you can add an easter egg shed space to compensate for the lost keg space if you feel bad about it 
same way, but add _y2 to the end. Like Set-Up_additionalCharacters_y2 and MainEvent_additionalCharacters_y2
ah i see thank you!
Oh wait, does npc pathing shit itself there
mountain pathfinding has always been semi-haunted with some off limits areas, though less so in 1.6
it does too much magic with path additions
Well I think they're talking about Backwoods, aren't they? The path to the mountain from the farm
yeah, backwoods is entirely off-limits, but the mountain itself is somewhat less used due to past issues + off-limits bits
in my vague impression anyway
ohh i like that idea, half of my issue is, i'm just an artist, not a modder
😭 my main purpose is practicing building art so I can offer that alongside my sprite commissions, I might have to pull in my programmer friends haha
(I do believe I'm getting mixed up with my location names, I'll see myself out)
darn, time to make a house in the road tunnel lol
Weeeell, for interior maps you only need tiled and some json
Json is very accessible, fwiw
You'll want tiled anyway
For adding map patches
Yeah Tiled gets the house on the map
bah, I have at least 4 computer engineer friends for that I'll make them figure it out
And if you don't need it to work, you just want it for an example, you can just screenshot it in Tiled.
thats a good idea
like this is a Tiled screenshot of my building. The lighting isn't full ingame, but you still see it in its natural environment
tysm! This is so good to know
I think that'd be good enough for a commission example
Yes! mermaid buddies
Just be sure to turn off grid lines
I'll definitely keep that in mind! thank you so much!
I’m a little lost… reading the guides on creating events and I get the anatomy of it pretty well but I can’t find anything that says what file to put it in? Should it be in my content.json as a change to the Data/Events/WizardHouse?
basically yes
it doesn't have to be content.json, it can be a json file that's included in content.json
anyone know how to format dialogue questions in i18n?
There's nothing special about it but perhaps split it up to several i18n keys
yur okay will do
remember that the game has no way of knowing whether you used i18n tokens or not. it has no idea about any token usage. all it ever sees is what the i18n token turns into from your default.json
Whew okay, done everything. I'm updating my mod for i18n (clearly). Do i have to add something in the content.json or anything to make it work? Or does anyone who has a translation document automatically use it?
no, nothing special besides having the i18n folder with the default.json inside
and of course having all your tokens set up
yay okay thank u
Nomori has an i18nifier btw
I am working on a mod. I would like the watering can to not be given to the player at the start, and instead, for it to be given by an npc in an event a few days later. Is this possible?
i used it for almost everything :) sooo useful
That's what I was thinking. I already have a decent amount written in C# for other parts of the mod. Would the main thing to do be, disabling the daily mail that tries to give the player tools they lost?
I suppose you can run the RemoveItem trigger action, but then it will show up at Lewis' lost and found
you can do something like remove the watering can from the farmer, add it to a phantom global inventory so the game thinks it's still there, and then remove that can after the event
the player will also get a letter every day about the missing tools
though from a gameplay standpoint do you just not have the farmer do any crop farming for the first few days 
just postfix Game1.fixProblems() and remove the watering can from the lost and found and remove the mail from mailForTomorrow
It's a bit complicated to explain, but the mod has players start with crops and sprinklers already placed.
thanks for the help! totally makes sense. i'll follow up if i have more questions
hmm wonder if that or global inventories are cleaner
my solution wouldnt even require harmony theoretically
it would actually be better to prefix fixProblems to put a watering can into the lost and found first, and then remove it in the postfix
is there a category for artifacts? (for gift tastes)
unfortunately fixProblems does iterate every location first, which is sucks, but then it checks lost and found first before checking all global inventories
or do i have to manually add each artifact to the gift tastes...
item_type_arch context tag gift taste
thank you button!
this have proved to be very very fun 
(making an event)
i seem to recall reading once about a list of random adjectives/nouns/etc built into the game? i don’t remember if they were tokens or what though. anybody know what i’m talking about
theres the [PositiveAdjective] tokenizable string, and also one for getting the propert article (a or an) for a word, if thats what you mean?
hm, might be the first?
you can also ofc just use [LocalizedText] to pull anything from Strings\Lexicon
I love events, so so so so much
i had the idea for a mad libs-style event where you write a story with an NPC by picking from a few randomly generated options
and i thought it would be cool if the event never played the same way twice by presenting you with different nouns/adjectives/etc each time
I did a 'choose your own adventure' type style format where choices you make lead to different 'paths'
let me check out strings/lexicon
cool!
plz let me know how the mad libs idea goes if you try it cuz that sounds SO FUN
lol if i pull it off i’ll let you know
I put all my emote commands backwards
😂at least that’s an easy fix
if you were curious, i found what i was thinking of! it's in strings from cs files, starting at dialogue.cs.679
oh i coimpletely forgot about dialogue replacers
is this still true as of 1.6, anyone know?
which part?
that they seem to be unimplemented?
Do I need both of these commands in a json file?
//APPEARANCE DATA
{
"Action": "EditData",
"Target": "Data/Characters",
"When": {
"Weather |contains=rain,storm,snow": false
},
"Fields": {
"Penny": {
"TextureName": "Penny_{{Season}}_{{Random:Sun, Sun_2, Sun_3}}"
}
}
},
and
// OUTFIT LOADS{ "LogName": "Load Penny's Outfits", "Action": "Load", "Priority": "High", "Target": "Portraits/Penny_Spring_Sun, Portraits/Penny_Spring_Sun_2, Portraits/Penny_Spring_Sun_3, Portraits/Penny_Spring_Rain, Portraits/Penny_Spring_Rain_2, Portraits/Penny_Spring_Rain_3, Characters/Penny_Spring_Sun, Characters/Penny_Spring_Sun_2, Characters/Penny_Spring_Sun_3, Characters/Penny_Spring_Rain, Characters/Penny_Spring_Rain_2, Characters/Penny_Spring_Rain_3", "FromFile": "assets/{{TargetPathOnly}}/{{TargetWithoutPath}}.png" },
yes these are individual patches
aka bits that go under the Changes list in a content patcher mod
How does appearance and outfits work though? They would be loading the same files so that's where I got confused. I haven't touched this file in a good few months while I did all of the actual files for it and can't remember if there was a good reason why I'd have appearance data and outfit data
the second entry loads the pngs, the first entry tells the game to use those pngs
as someone slowly learning c#, what are benefits of using it vs content patcher?
you are not limited by the technologies of your time the framework you use
I like using CP very much so - but I also thought it would be a neat way to practice the skills I'm learning via making a little mod using C# instead XD
imo if you're going to be doing the same thing you do in CP it's not that useful
I wanna try something specifically not-doable in CP
if not, then it's indeed more powerful. like actual foreach 
thank you
but I'm not exactly sure what that kind of thing would be since CP seems to cover so much haha
C#'s realm are usually new gameplay mechanics that aren't exposed by any of the game's assets
I'll keep poking around, I'm sure there's something I wanna do that needs C#
hmmm gameplay mechanic you say.... that... that I could maybe work with
ty!
like spells or blessed/cursed objects that do stuff?
🤔 i know people like to make books that you can read and learn recipes from now, so how would i go about doing that...
im thinking of making the player recieve a pizza cookbook for reaching a certain amount of hearts with... uh. Sam, i guess.... shane seems like the type who wouldnt bother...
Usually if something you want is a radically different behavior than vanilla then you need c# yep
Sometimes this is someone else's C#
BETAS has book read triggers
you technically don't need it to make custom books that does stuff, but reading books in the vanilla game only adds a mail flag, and to give recipes you need another trigger which at the fastest runs on location change
If u don't mind letting player "sleep and absorb the knowledge" then u can do it in vanilla
correction: adds a stat
yeah i dont mind making the player sleep. it's simple enough
It does, yeah
Special Power Utilities also adds specific functionality for recipe books
mostly to account for the fact that if the player reads your book and then in an update you add more recipes, the vanilla way wont give them the new recipes nor will any existing trigger actions fire again to give them
shane would maybe like, scribble some concepts on a post it note lmao
also you'd have to manually write out every single recipe you want to grant
good to know!
🤔 in that case i might use special power utilities. i dont know if i'll update the mod at a later time
SPU will also give the HUD pop-up like "You learned X amount of recipes" 
(which is customizable)
Three cakes
Button offering chocolaty and fruit cakes
sigh why did i make so many weird pizzas
i found the dialogue replacers for the adjectives, nouns, and places, but how would i get the verbs and prepositional phrases that are also in strings from CS files?
(Dialogue.CS.722 through 747)
Does the place you want to use these support tokenized text
events support tokenizable strings yes
🤔 do i need to do anything special to make an item a book or will the magic im going to do to it turn it into one
must be category -102 or -103
oh right i forgot about those...
Reading this will allow you to gaze into the infinite pizza abyss
would defining this as a dynamic token work?
"Name": "Verbed",
"Value": "{{Random:\Strings\\StringsFromCSFiles.722, \Strings\\StringsFromCSFiles.723, \Strings\\StringsFromCSFiles.724, \Strings\\StringsFromCSFiles.725, \Strings\\StringsFromCSFiles.726, \Strings\\StringsFromCSFiles.727, \Strings\\StringsFromCSFiles.728, \Strings\\StringsFromCSFiles.729, \Strings\\StringsFromCSFiles.730, \Strings\\StringsFromCSFiles.731, \Strings\\StringsFromCSFiles.732, \Strings\\StringsFromCSFiles.733, \Strings\\StringsFromCSFiles.734}}",
},```
and then using {{Verbed}} inside of a speak command?
tempted to split the npc list in half randomly for those who like pineapple pizza and those who don't
no, not at all. tokenizable strings are not tokens. they are separate systems
actually, ignore me, i thought that was a big i18n token
i dont know about the slashes at the front
but its worth trying
hmm okay i'll give it a whirl
regarding i18n though, would i have to split up the speak command into two i18n entries around the {{Verbed}} token?
i dont know what exactly you're trying to do with the speak command or how your i18n is setup but i assumed your intent was to use this {{Verbed}} token inside a LocalizedText tokenizable string
is this correct
this is what i have for the event command right now:
/question null \"How did Niko's characters fall in love?#They {{Verbed}} together until sunset.#They {{Verbed}} together all day.#They {{Verbed}} every night {{PrepPhrase}} their home.\"
not sure if i need to put LocalizedText in front of each question answer
that would just end up writing the literal text They \Strings\\StringsFromCSFiles.722 together until sunset. (for example)
oh okay
so yes if you want to actually load that string, it must be inside [LocalizedText]
also, your translation keys for them are messed up. Strings\\StringsFromCSFiles.722 is not an asset
i assume you meant Strings\\StringsFromCSFiles:Dialogue.cs.722
oh good catch, it should be Dialogue.cs.number
yep
to make sure i understand the process right: my dynamic token accesses the keys in StringsFromCSFiles, and returns one of the keys randomly. then the event script, using LocalizedText, reads the token {{Verbed}} as the key, then localizes it and converts the output into the value of the key?
and if i were to i18n the whole sentence, it should look like \"{{i18n:EventName.1}} [LocalizedText: {{Verbed}}] {{i18n:EventName.2}} with the first i18n value being "They" and the second being "together until sunset"
although, that might pose a problem for translators whose languages don't use that kind of SVO structure, or pronouns...
you want your event script to be They [LocalizedText Strings\\StringsFromCSFiles:Dialogue.cs.722] together until sunset.
therefore, you want it to be They [LocalizedText {{Verbed}}] together until sunset.
you can either split up the i18n or pass the token value into the i18n by doing {{ i18n: EventName.1 |Verbed={{Verbed}} }}
okay, thank you! it feels like that second option would be more flexible for translators, maybe?
yeah true. i'll just keep it this way until someone comes to me and says they have a better way to do it lol
i absolutely cannot find how to add an item to a universal gift taste anywhere I dont know what to search for on the wiki 😔 does anyone know how
There's an example in the content patcher documentation's Text Operations section, IIRC
hello!!
Yep, it's right there under Append, second example
Anyone has an idea on how to make a sword in CP have the enchantments Crusader and vampiric?
as far as i know you cannot make a weapon that comes pre-applied with enchantments
when 1.6.16 releases you'll be able to apply enchantments to weapons that are spawned via item spawn data like in shops and stuff, but that still wont be attached to the weapon itself (but it may be good enough)
however thats a ways away
well i mean literally anything is possible with C#
https://www.nexusmods.com/stardewvalley/mods/34440
I release the beta of The wayfarer remaster!
This mod adds a stand alone npc, as well as four different crops, some trees and a little bit more too.
im exicted to have it out!
i have a question, for c# custom stuff, do you just throw C# files or do you compile or how does it work?
you have to write and compile C# assemblies
I completely forget where to find the different colors that flowers can be....
now that ive been staring at it i dont think its anywhere in the tilesheets x.x
into a .dll?
And how do i mix that with a cp mod
you pack them as two separate mods in the same zip
it isn't bc it gets a color overlay slapped onto it
the colors are in the crops json, under "tintcolors" or something 🤔 i think
it'd have to be two separate mods
so two folders? :(
that looks messy
alright
well it can be in one folder
and can you guide me towards doing that with c# ? absolute beginner here and tutorials are NOT helping i've been following them but it's extremely unclear
they dont need to be two separate folders in the Mods folder
C# is not exactly something that can be taught or guided on in just a handful of discord messages
if you don't know any c# whatsoever then people recommend the yellow book which has some command I don't remember
i know C#, not how to use C# with smapi
but if you know the fundamentals, then I'd just postfix the item registry item constructor or maybe the weapon constructor
And apply your enchantments if it's your sword
I have basic C# knowledge with Unity
!startmodding how much of the C# guide you went through and did you get a basic button press mod working
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.
yes
i did that
afterwards I think a good step is decompile the game + read the various related topics in https://stardewvalleywiki.com/Modding:Index
https://stardewvalleywiki.com/Modding:Items#Create_item_instances is useful for example
in this case what button suggested is use Harmony patching to edit the behavior of the ItemRegistry.Create function or the constructor of the Weapon class
!harmony
Harmony is a framework for patching .NET code, allowing you to take any portion of the game's logic and insert or substitute your own. This gives you more flexibility and control than SMAPI helpers and events, at the cost of being typically more complex and difficult to use safely and correctly, and more likely to break with a future update of the game and/or SMAPI.
If you are trying to do something that isn't possible or practical with SMAPI alone, then Harmony is usually the solution.
For more information, refer to the following:
- Harmony Modder Guide - Intro, Use Cases, Initial Setup
- Tutorial: Harmony Patching - Types of patches and code examples
- Decompiling Stardew Valley - For finding methods to patch
!decompile do this if you haven't
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
(Or do the thing where you hook the inventory changed and edit the weapon there.)
(Or look at how inherent enchantments work and edit there.)
inventory changed wouldn't help if you wanted it to have the enchantments in a shop or reward chest
to be fair do you care if it's not literally in your hand
I suppose tooltip is borked
for making purchasing decisions yes I do
i also skip reward chests if they don't seem worth the inventory space
What about wait for 1.6.16 when item spawn fields have enchantments
that only helps if you know the weapon will only exist via item spawn fields
harmony ensures every instance of that sword will always have the enchantments
it works... pizza is here... now to actually put in the mail for it
Fine, edit instances in shop and item grab menus too
Also like
How do you put an item in a volcano chest without c# anywyas
I don't think that's dehardcoded or to be dehardcoded right
those look yummy
well we're already talking about using C#, so does it matter
You can add the enchantments when you spawn your instance then
...the temptation to create a brick-pizza oven 'machine' that dispenses pizzas is so strong now.
sam and shane cheered
it appears i did not do this correctly
missing the item id before the itemid
success
what happened to MODDED TES
um
do we not talk about them anymore 
joy
yay i love pineapple pizza
me toooo
The cynic in me wants a "fruit" pizza for Demetrius that's just tomatoes in various forms.
give him chunky salsa and call it fruit salad
whoops accidentally forgot to add the mod file...
😔 i love pasta and pizza but im allergic to tomatoes lol
i kinda want to frame this and put it on my wall.. my beautiful mod page banner, obscured by the UI and crunched by nexus...
@lucid iron
wow the beast games again... 2nd time ive seen that in general
thank u boncher
Shows I have mail but when I click it nothing happens. No error in smapi.? I feel like I saw something about this earlier
probably you (or one of your other mods) added a mail flag for tomorrow or the mailbox instead of received
Hi! I was wondering if anyone had info on modding for changing keybinds that can't normally be changed? In particular, I'm trying to make it so l-click and r-click can have their input options changed. I've found InputTools, but don't know what to do next... anyone know?
Ahhhhh (it would be me) action is addmail current with trigger being dayending?
is there a way to make a cp mod that gets built + released + automatically put into your mods folder using csharp sln files?
Yep can u send repro video
the game has custom-built methods for detecting "primary" and "secondary" inputs in order to support both mice and controllers; you would probably want to modify those
whoops forgot the reply
oh hm does this work even if there is no csharp component?
likes its a pure cp mod, but I'm lazy and dont want to zip and stuff myself...
I think just writing a shell script to do it is the right option
"{{ModId}})_FarOffMemory": {
"Id": "{{ModId}}_FarOffMemory",
"Trigger": "DayEnding",
"Action":"AddMail Current {{ModId}}_FarOffMemory"``` is there something wrong with how I have this set up?
I also tried sending it via dialogue using #$action AddMail Current FarOffMemory
and it shows up that I have mail but no mail actually happens haha
For a mail flag with no mail, you need to add "received" at the end because right now it's defaulting to "tomorrow"
ooooOOOOOhh
If you have actual mail, you've done your data/mail entry wrong
Ah! Anywhere I could find documentation on that?
Okay it's supposed to send a letter to actually received and read by the player
Are you sure your data/mail entry key is {{ModId}}_FarOffMemory?
Here's the entry in my mail section: "{{ModId}}_FarOffMemory": "{{i18n:TheWolf.FarOffMemory.1}}^^{{i18n:TheWolf.FarOffMemory}}^^{{i18n:TheWolf.FarOffMemory.3}}[#]FarOffMemory"
do the dialogue keys need to be the same as the mail ID?
The i18n keys? No, they can be anything you want
Do you still have the trigger action and the dialogue both adding mail?
no I removed the dialogue one - it's just the action trigger now
!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
Many thanks <3<3<3
It should be working correctly then, trying putting patch export Data/mail into your SMAPI console to double check that your mail entry is making it in there
I'm bit confused about what you hope to achieve instead can u describe
c# stuff has no "documentation", generally you just dig around the game code, experiment a bit, and talk to other c# modders when you gets stuck
You can also send json here https://smapi.io/json
Within a few seconds, the player is almost out of stamina despite the value being -0.01. I want to decrease the energy a small number or percentage at a time.
https://smapi.io/json/content-patcher/2791f07a4ddd44199e54bd42fe5aff31
pls try this build
this bug is exclusive to using the Timer proc, which is why i didn't notice initially (i was using Footstep)
Ok, that build works.
idk when ill be able to put it on nexus unfortunately, end of month perhaps
For "Motion", can you list different values for "Flip"?
I noticed in the Pack Possum that we can do "Flip": "FlipHorizontally", but that is not mentioned in the documentation.
i probably forgor to write it down 
Flip is SpriteEffects which can be None FlipHorizontally FlipVertically
you can use it in Motion and AnimClips
oh my gosh taht pizza is so edible
Is it possible to set a config setting in another content patcher mod for the sake of compatibility? It'd be easier than retelling every player who misses the installation stage where I tell them to the first time.
you cannot set another mods config, no. not unless you're using C# and reflection to get there.
Alright.
whats your particular usecase?
I'm working on the update for StardewArchipelago to handle the newest version of Stardew Valley Expanded, and I need the Galdoran Gem Museum Movement setting to always be on, because that allows it to be donated.
I probably should've added, this is mostly a c# mod, so reflection is not off the table.
The issue was just that SVE's settings are in content patcher.
Could you not just edit the thing that needs to be donatable to set it as such yourself, overriding SVE's setting for it?
other than make sure the mail exists correctly, do I need to do anything other than #$action AddMail Current {{ModId}}_TheMailName for it to be sent via dialogue command?
I probably could, but I'm pretty novice level at this. Would this be an EditData action in content patcher I should look into?
I think so (Button please correct me if I am missing something)
It Depends™
the config might be in the CP pack but theres no telling how its used or what it changes without, yknow, checking
for all i know SVE might load the CP config inside its C# component and use it there
I don't think so, although for testing purposes I'd make sure that you don't have any other dialogue commands in the dialogue line and that you're either testing with new saves or clearing the mail flag between tests
so, first step is finding what that config setting controls in the CP pack
That would be the easy solution for the gem. Though to be honest, I need to edit a setting in the Jasper mod for StardewArchipelago to work with both it and SVE too.
yea need to find what editdata is being controlled by the setting and then sorta just redo the edit yourself
if u r in C# tho, it could be possible to reflect into the config instance cp made for sve
but that is more effort for questionable gain
thats a lot more work
you'd have to do a lot of reflection just to get there and even more to get all the instances and types you need
It's used to control which patch is used to add the Galdoran Gem to Data/Objects. If false, the gem is type none, category 0. If true, it's type minerals, category -2.
still, if u bump into similar problem but on a C# mod, you may have no choice
I was already trying to reflect into it, tbh, but I was failing so I was hoping for a more direct answer.
So if ahhh reptar just edits it in Data/Objects afterwards to set it to type minerals, category -2, they can override what SVE does I think
(That said, I'm not sure I would personally appreciate a config setting getting overridden)
Tbh
i wouldnt either. im assuming someone installing archipelago is going to read everything it does, though, and this would be disclaimed
Under normal circumstances I'd agree, but the mod I'm working on is a randomizer, and we can't just have players not able to access a location.
Can you exclude specific things from randomization
Yeah but I'd prefer to give that option to the players. They can technically disable any number of locations already.
Or they can go crazy and enable some like 3,000 locations.
Why is the gem being not donateable a problem anyway
This item was already one I was going to warn them about anyways, as it drops off a boss monster, and some players may not want to have to kill it twice.
Well, theoretically, you could donate the gem and gain the ability to plant, say, parsnips. And you might need to harvest a parsnip or sell a parsnip to reach your second pick upgrade, which would prevent you from meeting the dwarf, etc etc. There's always a chance they wouldn't need to do the one location, but if their goal is like perfection, grandpa's evaluation, or allsanity (do literally everything you can), they most likely will need to in order to win.
All that being said, it's also possible to donate the gem and just get some retaining soil or something basic in return, which isn't required for anything. But I can't have potentially unbeatable games come out of the randomizer is the main concern.
Yeah but any mod can add donateable items
It seems to me like player's choice to enable this particular donateable
how does one clear the mail flag
I mean wouldn't you just want to detect if the setting is on or off and if it's off don't randomize stuff to it?
oh you are saying you're unsure how to access the setting too
So, a big part of the issue is that while I've only been talking about Stardew Valley so far, this randomizer does way more games than that. There's over a hundred if you include all of the core verified and custom games. So the randomization happens outside of the game and then the player will connect to a server that already knows where all the rewards and checks are.
So, theoretically, it's possible for me to get a Zelda player's hookshot on the Galdoran Gem if they don't remove it ahead of time, and we can't wait for the game to be started to read the settings the player already has, it has to happen before the randomizer is started.
I see so the real desire is more complete control over the configs 
Yeah.
That would be quite an undertaking and hard to generalize
hmm and because of how logic works you couldn't easily just say "if the setting is off put the item somewhere else"; I feel like one "easy" answer could just be "you notify the player that it's unobtainable and you give them the check"
I would say just forcing the gem to be donateable is fine
would break logic too but breaking logic in the players favor is better than making things possibly unbeatable
If u do wish to invest more then yeah need to reflect into the whole token system
Is there a way/a point to making a buff that increases the heart points you get from interacting with an NPC? Had an idea for a strawberryandcreme egg that when you eat it you get slightly higher hearts than usual when you like talk to them and stuff
not with CP alone
AT LAST I have found my implementation practice for C#
Yeah. What about moving it to "acquire the gem" instead?
is the statue's friendship buff hardcoded? it would be nice if you could use that
I don't know for sure but I suspect the gem is like that so people don't get softlocked by having too little museum space for example
Like I said, the player just needs to say "I don't wanna do that check" in their config file for the randomizer. On the website it'd just be a check box but in their config file it'd just look like this:
I mean the situation you're worried about is "they started a rando and they didn't turn it off on the rando config but they did turn it off on the SVE config"
so for that situation you could have it give the player the check
for what it's worth, we do override some mod configs already for similar purposes
i didnt realize there was a friendship buff for that. if there is, then it should actually be doable, then
In an absolute worst case scenario I just tell them to turn it on. I hope I can figure out how to reflect it, but you can adjust this setting while you're playing without even having to go to the main menu if I can't.
we've used it only in C# so far though. The part we dont know about is the CP version of a config
assuming you can apply a specific buff when eating an item
Reflecting to a C# config file was pretty easy. I just know nothing about CP
Kaito Kid is the guy helping me learn how to code for the sake of this project, and he's in charge of the Stardew Valley implementation in general, just not the mods.
CPs config system is the entire reason why id recommend just overwriting the patch instead
I only advise, on the mods, I have no time to do it myself lmao
or rather its config system when intertwined with its token system
How would you do that? A separate CP mod that we install with our C# mod?
I'm looking in the decompiled game code to look for the friendship buff statue thing
you can do anything a CP mod does with C# alone. CP is, after all, a C# mod
The suggestion I hadn't told you about yet was to just do a contentpatcher edit myself.
Nah u just do a Late edit in AssetRequested
It'd be like three lines to edit the gem directly.
statue_of_blessings_4, it goes from 20 friendship to 60 friendship in NPC.grantConversationFriendship
Try data/buffs
Yes but what about conditioning the unlock to "just" getting the gem in inventory
My guess is that the gem is Like That because the museum has limited space
SVE adds items without adding extra space
The newest patch has extra space in the museum.
Content Patcher is really just a ton of these but declaratively
Ah, okay
So u can do ur own ez
And worst case scenario I can add one extra tile myself if I've miscounted how many there are.
My example is for Data/Buildings but editing Data/Objects is pretty much the same
where exactly do I find it? T.T sorry
ahhh okay gotcha.
Yeah, another thing to do is to set ilspy search mode to constant and search the string
CA code is Like That tbh
A lot of numerical constants
If u use this buff u would get the statue of blessings buff icon
(Ie, knowing what "statue_of_blessings_4" is)
NPC.grantConversationFriendship is a function, the info about statue_of_blessings_4 is held purely in that function (I don't thing Buffs.json will tell you much about it)
I don't think the effect itself is decompiled but i could be wrong
Ah there ya go
I think there's way to do it with BETAS tho
correct
There's a npc talked trigger right
I mean it tells you that the DisplayName is 1_6_Strings:BlessingOfFriendship so Buffs.json doesn't say nothing
oOOOOHH okay
there are several ways to do it via BETAS
Tbh a lot of the time I at least go from "okay this has display name that, so search (O)153 in the code"
It was worse in 1.5.6 when I would be looking for actual numerical constants half the time lol
I have been peeking around in BETAS, I just really wanna implement something in C# haha
"Where in the code does the beehive do that? Guess I'm searching the numerical constant"
"Why do SVE left rock turn into kegs? Guess I'm searching the entire game for the keg's parent sheet index"
(That was a fun bug)
(Game didn't distinguish between bigcraftable and objects, it was the weed spawn code trying to seasonally swap weeds around)
The move to qualified item ids and string ids definitely seems like a good one lmao
Is there one you'd recommend? I'm looking through them now
i realized there are actually no ways to do it via BETAS besides BETAS harmony, because i forgot theres no way to specify which NPC to do the trigger action on
so, you might as well learn C# for it
I thought the want is any npc
correct
when they give the gift to Any NPC, there is no way to give friendship to That NPC
whale, C# practice it is yaaaaayaaaaaaay
when they talk to any NPC*
Ah i see the issue
Ok so I more or less borrow the buff from the statue make a new buff sprite, and go from there?
Oops sorry I was solving a murder mystery. Did anyone else explain this while I was absent?
No :3 did you catch the murderer
Well, I identified who the murderer was. No catching though lol
So if you want to go scorched earth and just clear all the mail flags your farmer has you can use debug clearmail
If you just want to remove one specific flag it's debug action RemoveMail Current <flagToRemove>
You can use any of the trigger actions with debug action. And any GSQ with debug gq. It's very handy!
I am down for scorched earth this playthrough is SPECIFICALLY to test this mod it is saceificable
Omg
I feel like I knew that
But that is so helpful
How do one make event like Haley's lost necklace? Farmer get control, then interact with something and the event continue
cursed
Get atra to write you some C#
Smh
Atra is that in SMD?
what is SMD?
Okay then pester Atra to release SMD xD
I'm the least reliable modder in existence
What's in SMD?
I only remember the last word is dehardcoding. Some More Dehardcoding? Stardew Mice Dehardcoding? Super Mario Dehardcoding?
Uhh....the player control stuff....some other currently dehardcoded stuff that I don't remember...
Ah well, just gonna make event where it looks like farmer is looking then 🤔
stardew mice dehardcoding
hey, that's my job /lh
I always have you to look up to when I feel like I'm slacking ❤️
I could be slacking so much more
and by slacking I mean being crushed by projects at work but same difference lmao
This is the same flavor of slacc as atra so ur in luck
anyone got any advice for getting the invalid tilesheet “the tilesheet couldn’t be found relevative to either the map file or the game’s content folder” thing to stop? I was able to get it working a few days ago on my test map but I set the proper version up the same and now it’s not working :/
have triple checked there’s no directory climbing
THEMAILWORKS
!log Can you share your log, please?
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.
!help
Please use #governors-mansion if you're using commands for yourself :)
Ah, many thanks!
Also the command you're after is /list I think. That will give you a link to all our bot commands.
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 53 C# mods and 69 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
That looks like a custom tilesheet. Have you Loaded it to Maps in your json?
AH
i was reusing a vanilla sheet last time, i'm guessing with the custom one i need to Load both the map and the custom tilesheet?
Yup that's right
Gotcha, thanks!
i thought you shouldn't have to load your tilesheets? i don't load mine
are your tilesheets embedded into your maps?
You only load them if they're custom tilesheets
Since unless you load them they won't exist
You don't have to Load your tilesheets but I like to encourage people to do so in order to allow other mods to edit them (with permission) 
I know there's a way to do this, and I feel silly for not being able to figure it out. I want to create a conditional based on whether the player is married (or has a roommate) or not - what I really want to know is if the spouse room is showing up. I know there's a Spouse token and a Roommate token. I'm not sure how to structure it to say "When Spouse/Roommate is not null".
@ivory plume log parser seems to have false positives on what it thinks an unloaded mod is. https://smapi.io/log/15d12d37698d46289d9145f94a186a51?Levels=trace~debug~info~warn~error~alert~critical&Sections=ModsList~ContentPackList~ModUpdateList
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 4 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
But this is only with custom tilesheets, as vanilla tilesheets are already in the game
Ah true, you can just keep them in the folder too
ah i see! yeah i was like uhhh i thought magic elves handled the tilesheets XD
HasValue: {{Spouse}}
smacks my head
I knew it had to be something simple. Thank you, @calm nebula
You don't really have to load any images because you can use {{InternalAssetKey}} but see the aforementioned "allowing other mods to edit"
although iirc that also includes engagement because the game is Like That
That should be okay, since I believe the spouse room shows up during the engagement period anyway XD
it doesn't unless the player has one of many poly mods
So
HasValue: {{Spouse, Roommate}},
would be "or", right?
I don't think that will work
That would be an invalid token, though HasValue: {{Spouse}}, {{Roommate}} should work.
That's a single token called {{Spouse, Roommate}}
The map errors are gone 
Yeah, there's a lot of edge cases with the current regex parsing. I have an early prototype to add metadata entries to the log in an upcoming version of SMAPI, which will let the log parser (and other tools) get the mod info without needing to parse it out of the display text.
Gotcha, thank you. The comma doesn't end the line?
It'd be inside quote marks
I assume you're doing this in a condition key (like "HasValue: {{Spouse}}, {{Roommate}}": true)? If so everything inside the quotes are part of the token.
Understood! Thank you ❤️
Hello, i am brazilian and i have a mod ideia but i don't know how to make mods, so i need help, it involves Sprite change and Content Patcher
!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.
whew i got the command right finally
Ok, but i need help to add the sprites and make original sprites for the mod
are you looking for help on implementing sprites into the game through cp, or drawing the sprites themselves?
And i don't want to say what the ideia of mod, just when its ready
Both
have you read the wiki tutorial in the startmodding message?
Not here in the server
Yeah, but i need some help to edit the sprites and add whithout causing bugs
what have you done so far?
I not started yet, actually i tried about a year ago but... bugs... and i don't know how to make mods
have you made a basic content pack yet? if not, this tutorial might be helpful. https://stardewmodding.wiki.gg/wiki/Tutorial:_Your_First_Content_Patcher_Pack
Welcome to creating your first Content Patcher Pack. I wanted a quick and easy way someone could copy, paste, and run their first content patch to prove to themselves everything's working as expected. I always find that creating my first, simple, working code gave me the confidence that I could tinker with things slightly and watch as my code gr...
And also, i don't want to say this in public, not even in the server, i need to finish the mod and put into download before
It will be a simple mod
okay, that's fine
what’s the reason youre being so secretive? if youre worried that someone will steal your idea, that doesnt really happen, at least not here specifically. mod authors already have enough ideas to take up all their time, they dont really need to steal to get more 
If you discover that someone has made or is making a mod with a similar concept to yours, don't stress! Our community promotes the idea of "two cakes", where two versions of the same idea can peacefully co-exist. Your mod will have your own unique stamp on it that makes it special.
Honestly while it's ok if u don't wanna talk about it we can't help very much in that case
plus, making a mod is 10% ideas and 90% putting in the work for it
no idea is totally unique
So i can say it here?
if its not nsfw, sure
of course! no one's out to steal your ideas or anything 
Well... my ideia is make the marriageble women plus Robin, Caroline and Jodi in their swimsuits of Ginger Island, but in anywhere, even in winther, but in the flower dance and the marriage i will make the swimsuits in the white color and add the other details in the flower dance, i don't know if this is nsfw but i just want to make it because a obvius reason and just for joking with the npcs and make out of context and i alredy tried to just change the sprites but... bugs happens... and for that reason i need to make more sprites to substitute the originals, even the portraits and the sprites that just appears in cutscenes
Sorry if that is nsfw and pervert
I just think that will be fun...
well... its probably fine if youre just reusing the vanilla sprites
Oh that's easy you just gotta add appearance entry to use the _Beach sprites
Make it precedence -1000 no condition
And the sprites that don't have a beach version?
Opinion: let the boys wear their trunks too
Do you want to draw the sprites then
Is not that different u just Load the sprites yep
where's shane's looking-dead-on-the-ground sprite?

there he issss
I need to change these sprites too
Yes, you would have to draw those and include it with your mod
But what program i use?
But let's take it slowly and start with the people who do have _Beach sprites
Anything that lets you have a 1px brush and transparency
!software
Here's a list of software for pixel art and JSON text editors we recommend: https://gist.github.com/ishanjalan/c8efb21afa21f74a052293176db107f7
For making SMAPI (C#) mods, see the Requirements section here for which IDE to install https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#Get_started.
Ok
I will test with Leah first
Pretty much anything more complex than MS Paint will do it
I want some help in the private chat to make easier
Our wiki and tutorials provide all the help you will need
Ok
What will be the reaction of the people, principaly the YouTubers when they see the mod?
I'm not sure most YouTube knows about most mods
If I cared about YouTube my hobby would not be making Stardew mods lol
My recommendation is to make the mod you want to make and ignore what other people think
No clue, i don't really watch YouTubers play mods
If u want mod in ur game then just make it
Ok
If u want mod to be showcased on youtube then become youtuber
if you are truly worried about others' opinions you can always keep it to personal use only, no uploading to the mod sites
Is simple really do what u want 
First i recommend reading the content patcher tutorial
these links are pretty helpful for getting started with modding
Understand what Load and EditData do
Once you feel ready i would then check out the wiki tutorial on appearances
Completely irrelevant comment: so exactly what atc is Harvey listening to?
I think that a brazilian like me making a mod will be a unique sensation for me, because i never made a mod before
And i just speak portuguese fluently
atra did you mean to send that in smc? or intentional 
Final thing for the mod before I publish it tomorrow, but does this make sense for the outfits? (Please ping with answer as I'm about to pass out at desk so might not see reply)
https://smapi.io/json/none/d3b6de1f5b4a43dfa6e7d62ff10e3894
{ "Action": "EditData", "Target": "Data/Characters", "When": { "Weather |contains=rain,storm,snow": false }, "Fields": { "Penny": { "TextureName": "Penny_{{Season}}_{{Random:Sun, Sun_2, Sun_3}}" } } }, { "Action": "EditData", "Target": "Data/Characters", "When": { "Weather": "Rain, Storm, Snow", }, "Fields": { "Penny": { "TextureName": "Penny_{{Season}}_{{Random:Rain, Rain_2, Rain_3}}" } } },
Did I miss any weather types?
🤔 mod idea... you know the huge friendship penalty you get from penny if you say you dont like kids.. what if she just refused to date/marry you after that, because she can't see herself being in a relationship with someone who doesn't like children
I mean the convo started there but I don't want to derail what is going on there
Serious question though
I know pilots have to get cleared to like cross the Atlantic but what do they say
obviously i could just give her rejection lines for the bouquet/pendant, but im not sure how i would actually get there, yknow.. well, not like im planning on working on it right this second. i always thought it was funny how you could say that, get the friendship penalty, then just get her hearts back up and romance her like nothing happened
Honestly, I love this idea
Textedit her response
With an $action AddMail [whatever]
Set a mail flag
Then check the mail flag for the edit, do it on location changed
yeah that's the part im kinda stuck on, im not so good with mail flags and stuff
would i just edit her response in the event like that?
Are you intentionally not using the Appearance system?
I was trying to understand the content patch tutorial but it seens complicated and confuse for me
I understand english but i don't understand what the explanations
I think that needs to be more clear
I think that ifs another brazilian explaining will be more clear to me, or not, but maybe this will help, just maybe
Currently know. I can't remember if I stopped using it due to concerns with overlays or why. I just finished all the art part after a year and went back to finish up the json. Outfits have a eye and hair color option
could check if there are any mod authors in the sdv brazil server maybe
making a mod is more confusing that i thought
Okay, well, your first patch doesn't need to specify that weather shouldn't be rainy, stormy, or snow because it will happen by default and then if it is one of those weather types the next patch will replace it. Do you want to include GreenRain too?
Also, quite a few of your patches have Targets like this: \r\n\t\t\t\t\tCharacters/Penny_Summer_Rain which you will need to fix 
Yeah, would like to include green rain. I have no idea what it is, but I'll add it if applicable. Thanks for pointing out the slash error. Oddly, doesn't read as an error in json validator or SMAPI and ran fine for two days in game until it was sad I had a mispelt file
It's not a json syntax error so the validator would not see it ever. Presumably CP didn't see it until it actually tried to run the patch. Here's the list of CP tokens for weather: https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md#date-and-weather
Thank you. For the appearance molding thing you mentioned earlier, should I try to convert to it? I believe what I have now and appearances both needs the outfits loaded so unsure what the differences between how I did it and how appearances does it afe
For all the patches which are EditImage overlays they would need to stay as they are. For the rest, if it's working for you as-is I can't think of any definite benefit other than possible performance improvement to swapping (and I'm not certain it would be better or by how much if so).
Okay thank you. Tomorrow I'll take a look and if it makes sense to me and simple to do, I'll convert them over
I need a brazilian that knows how to make mods with content patcher
Someone help me
vinilla suggested to check the sdv brazil server, i dont know if there's a brazilian sdv modder just hanging around who is actually going to see your message and help you
At least i am trying something
Is this the server?
It says Stardew Valley Brasil so probably?
Yeah, maybe
You're in a better place to judge than we are since you speak Portuguese
two problems i'm encountering with the mad libs:
- it seems that the dynamic token {{Verbed}} is resolving to the same thing--are they determined at the start of the day or something like that?
- regular 'ol %adj, %noun, and %place aren't resolving like they do in normal dialogue. do they need to be localized text?
here's my event script, if necessary: https://smapi.io/json/content-patcher/7caa87d78b7a47e49fc154cdeee7780e
- you're using the same token, Verbed, for all 3 choices. naturally they will all be the same thing.
- its possible that events may not parse dialogue replacers? uncertain on this one
2 might also just be a quirk of /question
well, the intent of the {{Verbed}} token was to pick a random entry each time. is there another way to format it so that it won't be the same thing each time?
a CP token's value can only be one thing at any given time, regardless of where it's used or how often, yeah
(unless they have different arguments/etc)
if i had three tokens, Verbed1 Verbed2 Verbed3, with the same values, would they also pick the same entry?
i dont think so, but im not 100% on it. maybe around 60% on it
if they have the same internal logic, yes, but you could use different random key order for each, for example
are all non-keyed randoms in sync then with what index they choose if they have the same number of elements, even if they dont have the same options?
i.e. {{Random: 1, 2, 3}} and {{Random: a, b, c}} will always be either 1 and a, 2 and b, or 3 and c?
I'm not sure what key(s) are used if you don't specify them, but in this case, it seems like you could just have 3 dynamic tokens with different option order
i'll try three tokens with different option order and report back
its still important here though, otherwise the event will be the same every time
the same overall, i mean
you'd make A always go with 3 instead of 1, but it would still be A1 every time, then
... A3 every time*
I guess you'd need 6 if adj and noun need to be randomized separately
also the rng would have certain patterns to it based on the option orders, but I'm not sure how to make that fully random in CP without a real mess of tokens
i'm losing my mind... i changed it to 3 tokens and now it says the event doesn't exist
loading error and/or typo somewhere?
oh i missed yellow errors
"that token cannot be found"...
is it freaking out because the values are technically the same just in a different order?
there's a stray "Random:" near the end of Verbed2's value
and verbed3
ahhhh the woes of copy paste
or rather, 2 and 3 don't start with it, they got shifted over
i must have grabbed it too by accident
ok let's try again
yayyy
super janky grammar lol but the tokens work
and i guess for the adj/noun/place i'll just create my own like i did for verbs
related question, are dynamic tokens generated upon loading? patch reload didn't seem to be working
(yeah unless i missed something it looks like /question only parses gender switch blocks and doesnt deal with replacers)
is that something that could be requested for 1.6.16?
i dunno, bc im not that confident i didnt miss something, so i dont wanna ask
also, dynamic tokens cannot be reloaded
!hotreload
!reload
- Content Patcher pack: enter
patch reload <your_mod_id>in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate theConfigSchemaorDynamicTokensections if you use them). - Translation files: enter
reload_i18nin the SMAPI console window. If it's for a Content Patcher pack, also runpatch reloadafterwards. - C#: see the Visual Studio hot reload or Rider hot reload feature.
hm i thought itd say more, i dont think Aliases reload either (btu i could be wrong i guess)
not that i really ever see anyone use those...
yeah idk what those even are lol
anyway, thank you both for the token help
time for bed
thinking of recolouring things like grass and buildings on my own. is photoshop needed or can i use any other art program to recolour? i see photoshop being used for it a lot so i was just wondering
photoshop isn't needed, in fact, any program that can do a very small 1px brush (because we are talking about pixels) and has some kind of transparency function should work
generally aseprite gets recommended since it's made for pixel art though
!software
Here's a list of software for pixel art and JSON text editors we recommend: https://gist.github.com/ishanjalan/c8efb21afa21f74a052293176db107f7
For making SMAPI (C#) mods, see the Requirements section here for which IDE to install https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#Get_started.
omg tysm
i’ve been suddenly inspired to make my own recolourings bcus all the rlly cute light pink mods are locked in naver . i just dunno how to start this but i’ll try!!
👍 happy recoloring
yup, at the end of the day, all digital art is pixel art 
@lucid iron out of curiosity, is the mannequin thing unique to 1.6.16 alpha or does it also happen in 1.6.15?
1.6.15
i didnt test on alpha but the decompile looks the same so
u can go try for me cus i dont have alpha on me laptop rn
@gentle rose incidentally iro can u test the fish tank problem for me
on 1.6.16
I can, what’s up
make a custom fish tank (u can copy a vanilla one and just change id), place it, sleep, and then toss the mod that added the tank
in 1.6.15 it causes NRE and problems for farmhouse renovations
unsure if the furniture rewrite got to it
@patent lance remind iro to check the mannequins and fish tanks in 1.6.16 in 3 hours
nop
or at least I think it works both ways?
remind me to check the mannequins and fish tanks in 1.6.16 in 3 hours
remind me in 3 hours to check the mannequins and fish tanks in 1.6.16
.....ok..... (#6765741) (3h | <t:1751974411>)
…ffs uber
maybe this is another instance where my brain made something up 
Hm, no, it should definitely work both ways
Remind me to get reminded in 5 minutes
...mmmm I just wrote that down in a database marked for deletion...eh it'll probably be fine (#6765769) (5m | <t:1751965851>)
@finite ginkgo: get reminded (5m ago)
uber just hates me, I see how it is
the multiple in's probably did it
remind me to check the mannequins and fish tanks i|n 1.6.16 in 5 minutes
As you wish, sinz163 (#6765837) (5m | <t:1751970798>)
@lucid mulch: check the mannequins and fish tanks i|n 1.6.16 (5m ago)
So there are tokens for active festivals, right? Is there one for passive ones like Desert Festival and Night Market?
no, but you can use the IS_PASSIVE_FESTIVAL_OPEN or IS_PASSIVE_FESTIVAL_TODAY GSQs
Yar, I need it for When, unfortunately. I guess I'd just create my own dynamic token. Thank you for the answer!
hi everyone, grampa ate my event, i need help! how can grampa stop eating my event???
Details :
i add events to a location. When trying to trigger them with the debug ebi comment, the event isn't found. A patch export shows grampa evaluation event.
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Famille, with 87 C# mods and 121 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
this is an event added to Data/Events/Lumisteria.MtVapius_ForestTrailPond
what i got instead is :
{
"558291/y 3/H": "grandpas_theme/-2000 -1000/farmer 13 23 2/broadcastEvent/addTemporaryActor Grandpa 1 1 -100 -100 2 true/specificTemporarySprite grandpaSpirit/viewport -1000 -1000 true/pause 10000/speak Grandpa \"My dear boy...^My dearest grand-daughter...#$b#It's been many years since we last spoke. You were just a little boy... Do you remember?^It's been many years since we last spoke. You were just a little girl... Do you remember?#$b#Look how far you've come!#$b#Though you may have forgotten me, I've been here all along.#$b#You see... My body has departed this world, but my heart will always remain in Stardew Valley.\"/specificTemporarySprite grandpaNight/pause 4000/speak Grandpa \"You've been here two years now...\"/grandpaEvaluation/pause 3000/speak Grandpa \"The future of %farm Farm is in your hands, now.#$b#Farewell!\"/pause 1000/globalFade/removeTemporarySprites/playMusic none/pause 1000/end bed",
"558292/e 321777/t 600 620/H": "grandpas_theme/-2000 -1000/farmer 13 23 2/broadcastEvent/addTemporaryActor Grandpa 1 1 -100 -100 2 true/skippable/specificTemporarySprite grandpaSpirit/viewport -1000 -1000 true/pause 10000/speak Grandpa \"My dear boy...^My dearest grand-daughter...#$b#I'm glad you summoned me. I... was perhaps a little too harsh with you last time.#$b#Forgive me. You've been working very hard, and I'm proud of it.\"/specificTemporarySprite grandpaNight/pause 4000/speak Grandpa \"Let's see...\"/grandpaEvaluation2/pause 3000/globalFade/removeTemporarySprites/playMusic none/pause 1000/end bed"
}```
This is NOT what's in my file
there is a patch summary full and an harmony_summary in the log. Any help figuring out the change in grampa's diet will be welcome
a modest 11,000 line log file 🔥
yeah that is the patch summary full, i'm afraid. I believe it's not a CP mod otherwise it would likely be listed there
Include Assets/events/EventsData.json > Events Edit #12 (EditData Data/Events/Lumisteria.MtVapius_ForestTrailPond) // tokens not ready: DLX.Bundles/Purchased
does this mean the data's never actually patched into the asset you've loaded?
what does the patch export file look like?
just the grandpa event above?
this is the patch export
hmm, so
Forever ready to judge no matter where you put your tent
the theory would be that my events are not applied properly to the file because the token invalidity?
Yes
you're right. he is actually in every single event
in which case this is likely a UB issue
because i had the exact same format for several of my events and it was working two days ago
(that or some another change caused by updating whatever)
ok i have to go, but feel free to ping me with solution to test, knowing that UB is already a dependency so i'm unsure why tokens wouldn't be properly ready at this point
if it's for the tent, it'd be from a game update in the last year, so relatively? recent?
you patch exported while in a save?
Yes, the gramps judging you on every map is new to 1.6
I don't see any base game reason why the patch would get messed up, at least 
(there's a weird thing where Farmhouse events get loaded if a player's "homeLocation" is edited & the event happens there, but that's not this)
I assume it's for the tent but I don't have evidence for that
yes
i patch exported after testing to debug ebi my (non existent) event
i also haven't changed anything in my mod recently that would make something not work so it's either CP or UB latest update
my latest CP update was 2 weeks ago so unlikely to be that
i'll try fixes in 5 hours if i have any idea of what i can do on my side or i'll ping delixx
remind me in 5 hours to actually do that uber pls
oh my goooooooooooood lumisteria fine (#6765872) (5h | <t:1751992354>)
is there a mailflag that does same thing as DLX.Bundles/Purchased
@gentle rose: check the mannequins and fish tanks in 1.6.16 (3h ago)
I could make a token for 'the day after a festival' yeah?
(updating CP might actually help, though idk what this error was)
Released 06 June 2025 for SMAPI 4.1.10 or later.
Added Chinese documentation (thanks to mushymato with help from Luo7710!).
Fixed error migrating pre-Stardew-Valley-1.6 location edits in some cases.
isnt that last month
after green rain
oh, I didn't read
possibly because I just updated today
if not u can always do it
hmmm, good idea!
sweeet hahah okay but if like, I also wanted something after (actual) 'festivals' I could do "Name": "AfterDanceFestival" "Value": " {{After Dance Festival}}? for the flower dance for example
I'm not sure how to do something like "if this token was true yesterday", but for festivals with specific dates like that, yeah, you could do a dynamic token or w/e like
"When: {
"Season": "Spring",
"Day": "25"
}```
right, much more flexible if you get into that
Hi sinz
Unlockable Bundles doesn't fully initialize until low priority Daystarted and so the tokens not ready yet
it might initialize earlier during saveload if there was something worth unlocking, but in that log flow, nothing did
low priority daystarded?
anyway if i'm loaded into a save and it's not yet ready, i fail to see when it can actually be ready
Well it's not ready when cp did data edit basically
Yeah, c# mods sort of have to seqeuxe themselves around CP
Especially if they provide tokens
hmm
ok let me complain one more time that "it worked two days ago", and now that's this done, what can i do?
that i'll do later because i really have to go aaarg, thanks!!
understandable. i have to go aaarg too sometimes
New quote added by atravita as #6483 (https://discordapp.com/channels/137344473976799233/156109690059751424/1392111076006559835)
what's the difference between Game1.uiViewport and Game1.clientBounds?
trying to make sense of
if (Game1.clientBounds.Width > 2000)
return Game1.uiViewport.Width - Game1.xEdge * 2;
is one of these for split screen
ahhhh
tbh i think ive always used Game1.viewport and not thought about this
it seems fine/10
why not use Game1.game1.localMultiplayerWindow 
and this is in the android source only, so they're always the same anyways
clientBounds is an XNA Rectangle and uiViewport is an xTile.Dimensions too, weird
If I can't install apps for converting files to dll, I can't make mod?
you can still make a lot of mods with json only
well you need that for c# mods
and it's not really an app, you need to install the .net toolchain
do I need xna?
I tried install it but my computer is old so windows didn't let me install it
No
I installed but dotnet doesn't work too
I don't know what's my mistake
Are you trying to make C# mods?
Yes
Do you know how to write C#?
No, I can say only basic things. I thought I can use chatgpt for a simple mod
No, you cannot. ChatGPT will not be able to write you a working mod. Nor are you allowed to use AI for mods in this server.
Are you already familiar with how to mod Stardew Valley via Content Patcher mods or another framework?
1-2 years ago from reading mod files I learned basics and made a simple mod. But I guess its not enough.
It's going to be quite a steep learning curve to learn C# and learn Stardew-specific knowledge at the same time, but if you are really patient and determined I'm sure you can.
What kind of mod do you want to make?
("I must leave now to get bus for important appointment" aaaarg.
Waiting for bus right now so i should be good.)
I never tried to learn C# because I thought it's harder from other languages.
Hello! I'm making some edits to a farm map, with great success, but I've come with an issue while trying to relocate the greenhouse ruins, I edited the GreenhouseLocation coords to the new position I want, but when I open the save, the greenhouse hasn't moved
I've been able to edit warps and much more, but this I cannot understand, what could I be missing?
I've found it harder than R and python, personally.
I want to make some basic things for personal gameplay like use horse from game starting, change fishing mini game etc. Not a specific mod but I want to learn something.
yes sorry
Once you have started the save the position is fixed bc the greenhouse is a building (that you can't move until repair)
Yes python is fine but I don't know can I spend time for C#
oh darn
Just try starting a new save 
okay thanks, I'll give it a try, luckily I'm on day 7 only hahaha
Since you be making farm it's recommended to make it additional farm
If u have any experience with any code- html, bbcode, etc- you can parse together .json code. I know its daunting at times but i thought the same and i did it
i find python miserable compared to C#, so it's very much still down to personal preference
Have you started looking through the decompiled code?
Dont let chatGPT take away the joy of learning from ya (and again it wont do it right)
They are talking about C# but the principle does still apply! xD
C# is as good as it gets imo. beloved
I don't think ai helps very much cus c# intellisense very good as is
My bad LOL but still!
Maybe one day I will love C#. If so, that day is a long way off lol
But yeah no matter what it helps to have concrete specific goal
you don't need intelligence when you have intellisense 😌
For some of these i think there's framework
Like spacecore might let u spawn a stable from the start?
If not then cheat certainly will
And there's a lot of skip fishing game mods out there, but what change do u wish for specifically?
Two hours
Is literally the amount of time between "i don't know c# but I do know how to program" and "I'm releasing my first c# mod"
A lot of programming skills transfer
two hours is how long is takes me to untangle the spaghetti code in order to know where to put my c# hooks 
2hrs and 2 monsters?
Luckily for Stardew I'm now focused on something entirely different?
2hr is me finally figuring out how to install dotnet on linux with vscode 
It was smooth after that tho
is this after the 2hrs to decide the project name
Gotta spend at least one hour learning a random kpop dance
nah the project name happens 5 minutes before publishing to Nexus, of course (after changing it 10 times during dev)
Or create some random arbitrary working name and never change it
Then again 2hr was me learning how crates worked in Rust
the two hours I struggled before just asking my husband to do it. Like, so hardddd T.T
2 hours debating if I like the theme of VSCode or if I want to change it to 'synthwave' (am about halfway through my C# to B# class)
No that took 3 years
I wanted my first mod to exist since i played 1.5 back in 2021
No one made it during my 3yr of not playing sdv >:(
Anything other than the buffs wiki page as suggested reference material before I try to make my 'friendship magic egg' via C#
We can't read your mind chue
I don't think u even need a buff really
Beyond a visual indicator
Did you do the ol button press example mod yet
that's what I have open rn 😄
Yeah so once u have that built and working pause and go find place of npc friendship
i've gotta say i'm used to intellisense dropping a lot of very novel types on me when autocompleting typos, like this into ThreadSafeException and such
but this into ThaiBuddhistCalendar is very new
that soundsl ike the right autocorrect to me
place of NPC friendship? like in the decompiled code?
i think we'll need a little more info about friendship magic egg
oh! I want to grant temporary 'get more points when chatting/gifting items' after eating a strawberrycreme egg from the magic chickens I'm making
but that's all I've really got for a concept so far other than sprites for the chickens and the egg itself. Separately I also wanna make a weapon that comes with 'vampire' enchantment (which I think I remember seeing is something I'd needs the C# for)
if you use harmony it'd be trivial to affect grantConversationFriendship with a modifier to the amount value, but it wouldn't affect gifting friendship since that's handled elsewhere
honestly as a start conversation bonus is great
oh boy Harmony! (actually excited not sarcasm I love learning new stuff)
i suppose if you do the same to receiveGift with friendshipChangeMultiplier you'd get a good result, but it wouldn't affect birthday multipliers and it'd also multiply the hate value for shit gifts haha
Does the multiplier take effect if negative
I recall iridium hated gifts aren't worse than normal hated gifts
yes! quality multiplier is ignored but friendship multiplier still applies
(Buff name: swagger. Result: people either really like you or really hate you. )
lmao YES
give a guy sundrop tea on his birthday and he despises you now
New quote added by chu2.718281828459045235360287471 as #6484 (https://discordapp.com/channels/137344473976799233/156109690059751424/1392122112176685126)
ok I have the button press thing, and I put in the bits for Harmony, I have to check my Cinna-bites in the oven and then I"ll continue
sorry for putting the punchline on a 2nd message chu 
ah! Okay I found two references in the decompiled code to "grantConversationFriendship" and looking over the Harmony Documentation
Where should I start? Maybe I shouldn't start from C# I am someone who gives up easily.
could I edit something like this? public void grantConversationFriendship(Farmer who, int amount = 20) { if (who.hasPlayerTalkedToNPC(base.Name) || !who.friendshipData.TryGetValue(base.Name, out var value)) { return; } value.TalkedToToday = true; who.NotifyQuests((Quest quest) => quest.OnNpcSocialized(this)); if (!isDivorcedFrom(who)) { if (who.hasBuff("statue_of_blessings_4")) { amount = 60; } who.changeFriendship(amount, this); }
I don't know how to do so
in general, transpilers can do anything and everything
I thought changing mini game for fun.
!stardmodding Yeah you have to have quite a bit of persistence for something like this. If you are already thinking of giving up, well, it's only going to get harder. But if you do want to try it (which I don't want to dissuade you from doing!) then check out the C# getting started guide listed below.
Argh
!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.
I can spell
!stopmodding

