#making-mods-general
1 messages · Page 341 of 1
I have the bad habit of going "if a dumbbass like me can do it it has to be stupid easy right"
what you do is insane and impossible
what you do is hard LMAO
i start crying as soon as vs opens up bro
“i can do this in 5 minutes” it will take me five years 💔💔💔
But you will have done it
I will give you back your brain cell, Lani.
no amount of braincells can get me to c# competently unfortunately
im still going through that players guide to c# book i got tho
its helping … a little bit
Just do what I do and annoy your friends to walk you thru everything.
i did that already HAHAHAHA
ive seen you write a c# mod
in this instance i had to “draw the rest of the owl”
All of my collabs are "here is how I think the code should work, please help me make this".
and i could not draw it. i got the circles tho
that was one line of code i basically lifted from pathos 😭
that alone took like 5 hours
but you did it!!
Lani when construction prices mod
I've effectively shelved mods that I could write the code but not the content for so the reverse side of the coin is true too lol
But think of how powerful you'd be.
ill pay chu to finish it for me
NoU
the chulani collaboration
Im technically capable of the events and dialogue but I dont know what to write 😭
I desire your suffering and subsequent growth it's like shonen anime training arc
Putting u in the hyperbolic time chamber rn
This one C# mod I'm working on definitely took me, like, 2 weeks that I'm sure everyone in here could make in 20 minutes.
I'll get there...
Oh do u still need the cue to be swapped
I've run into an issue modding a map that I haven't encountered before. I moved some things around, notably on the back and buildings layers, but the Greenhouse was in the way at the time, so it overwrote portions of the map. I've moved the greenhouse out of the way, but the portions it had overwritten continue to be gone from the map.
I've restarted the game multiple times, warped out and back, replaced the modded map with a temp copy, duplicated and replaced each layer, but no matter what, I can't get these portions of the map back, it's just a void.
Any ideas?
The greenhouse overlay
Did you add it as a new farm map or are you overriding an existing farm map
{
"Action": "Load",
"Target": "Maps/Farm_FourCorners",
"FromFile": "assets/Farm_FourCorners.tmx"
},
I guess the spot that is void was the default location of the greenhouse
Yeah okay
There is a default greenhouse overlay you'll also need to override for that
I'll be real, I completely forgot to do this. ||(was out most of the weekend protesting + hanging out with friends)||
I don't need it to be swapped but it's one of the ones I would like to be swapped.
I should probably just come up with a list.
Have an idea for a big misc audio changes mod, for all of the stuff I don't think makes much sense to upload individually.
Farm_Greenhouse_Dirt_FourCorners.tmx ?
If you be making a farm mod just make new farm type no replace
Even if it's literally just a tweaked version of a vanilla farm
Do you happen to have a link handy to documentation on that or examples that I could reference?
thanks
@lucid iron so like maybe like a framework to make interactive holdable books that when activated will display pages?
Hm like a menu of some sort?
Yeah I was wanting to make mockup educational books
Existing possibilities for this include MEEP (no pagination tho) and spacecore guide books (elaborate but very stronk)
Like how Skyrim has readable books
I couldn't understand spacecore very easily
I did literally want to make this mod though, a series of stardewui menu widgets for content modders 
I can definitely try though
But yeah imo if u don't care too much about the shape, perhaps letter tile action is sufficient?
menus are such a pain. that would be so nice!
I was thinking of making a version of that which will actually parse letter syntax so u can use bg
Well it's more just impossible to get custom menu going from content rn 
See I really wanna add like photos too
is it gonna be like a markup language that translates into another markup language (starml)
I'll try spacecore for sure though
go steal code from SNF, it does some of this
I believe wildflour is adding guidebook for WAG, you can contact her for examples
I mean i was gonna hard reference stardewui for this
You can also just ask desty/axell clown
ah yeah forgot s&s has that too lol
s&s has the ur example of book
Hi are you migrating with the recent announcement?
https://www.nexusmods.com/news/15301?mtm_kwd=newsfeed
The abstraction is more like the question dialogue things though
Idea is that content modders get to define functionality and i do all the fun glue stuff
Not unless the site becomes worse because of it
we discussed it briefly before. me, I'm on the "wait and see" train
So they might give a item query and i would display every item in a grid
This is like 2026 project and i rather point clown to existing solutions first
Is there reason to believe it will get worse?
also, migrate to where? and how convince entire user base to follow you
Should we open a thread for nexus things 
There's no reason to think so ppl are spooked
It's not very relevant to helping ppl out with modding i feel, but it should be discussed
sorry my bad, i was just curious
your idea is amazing Fellowclown
It's not directed at u dw
I'd download the mod for sure
no 💔
yes
modding is so enjoyable to me pls dont make me rage for my shonen arc 💔
if it's any consolation I may or may not get into portraits eventually and I too will enjoy the upcoming shonen arc
Next time on Making Mods G
I'm in the "wait and see" camp as well. Realistically though, we currently don't have better options beyond simply linking to our repos and praying people can find the Releases tab
next time on making mods general….. lani meets up with an old foe, the carpentermenu! a battle ensues! who will come out on top?!
meanwhile, selph is preparing to beat an opponent they’ve never encountered before… is selph strong enough to best them? FIND OUT IN THE NEXT EPISODE OF MAKING MODS GENERAL!! /j
ModDrop is still bleh, CurseForge has a theft problem
In theory we have the official forum but it doesn't seem to get much traffic?
pretend thats said in the Anime Announcer Man Voice
the forums is also a rather terrible platform for file hosting lol
the forums are the place you go for unofficial updates exclusively. never heard of anyone actively posting there lmao
Ye
Actually only github is a realistic alternative for nexusmods.
back in the olden days there was some chucklefish posting…
I've seen some releases there but it's not a particularly big selection
Why people dont like curseforge?
many reasons
Not suited for stardew modding imo
From an author's perspective, they're not good at protecting authors from people stealing their mods and reuploading them
primarily i dont think its built for something like stardew
yeah
what quillimus said
curse and minecraft are best friends. curse is friends with nobody else however
You know, not a bad idea. 
Any similar service, for that matter
Gitlab, Codeberg, pick your poison
However, for authors that don't want to cc their media/creative assets, it's not a very good option, especially if the platform in question mandates open sourcing rather than simply source available
I'm having this conundrum with Codeberg at the moment, myself.
Bread
i like how peace has their FS github set up with the little io website to show all the mods
idk if itd be possible to make something like that that just links to hundreds of peoples repos though
Github Pages is great
Admittedly not keen on continuing to use Github though, I must say
big ol Mod Gallery
I like https://spacedock.info for example.
what are unofficial mod updates btw?
Unofficial updates are exactly what they sound like
Updates done unofficially by people other than the author
In context of sdv, it's updates to some mod that broke bg game update by someone besides the author
but like, if the mod is open source, can't they post on nexus?
I've seen some updates on nexus and some not so I'm a bit confused
If the license allows for it (which it would if it's open source), definitely!
Though we do tend to... err more towards caution in Stardew modding.
Atp the forum thread is convention, too
Less strictly following the legal, more following the "will this confuse things for the author if we release an update on a new page and they come back to update it themselves?"
Yeah rn it's usually forum thread or gh releases
It's also worth noting that these happen more often for c# mods than npc
I'll get that Stardew GitHub action fully streamlined and released for others to use relatively soon, hopefully.
I see
I asked cause I was searching for a mod that was removed to see if there was an unofficial update and it seems there isn't. So probably because it was not open source
Which mod was it?
that sounds like a content pack
ya I was searching for buildable vanilla counters and cabinets that match the vanilla kitchen
amazingly enough there doesn't seem to be one so I might make them myself
https://www.nexusmods.com/stardewvalley/mods/16283 like this one has that mod as a depedency. And it's basically a recolor of the vanilla kitchen so I might go from there
I think Kisaa (crystallinerose on nexus iirc) had made a buildable kitchen mod too, you could see if it suits you
Fwiw i think it should be not that hard to make furniture that directly use the vanilla tiles
yup that's why I'm gonna try
I was just making sure it hasn't been done before. It seems within my ability to learn and do it
and it'ssomething I can post and share on nexus since my path packs I couldn't haha
Question because I'm not 100% sure how to do this and I'm not finding too much data on it: how do you implement translations for options added by the GMCM?
I've got them into tokens in default.json, but when I try to set them as the display name and description and all that jazz in content.json, it just displays the token name not the token's contents
one sec gotta wait for vs code to load >_<
You name them in a specific way
So I'm a bit desperate... I was trying to port Harvest Moon DS foreagables but when I try to have more than one inside my content.json, it always errors out. I am not a programmer (and frankly don't really understand tutorials for them) So I was trying to use another mod as a base. After messing around with it for a few hours, I give up trying to figure it out myself, could anyone help me and tell me what I am doing wrong? (I also don't know how to post it since I'm new here.)
!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.
!startmodding also I recommend starting from the basica (the content patcher guide)
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.
make a simple mod, get it to load first, then you can resume on your own mod
starting right in middle of another mod would be mightily confusing
Uh... I never used the smapi website to check my json, what format do I use for it? It's a content.json so Content patcher I am guessing?
https://smapi.io/json/content-patcher/dada673d171c4d00a8bfb3d80640c3e4 I see the mistake but I don't really understand what it means...
As a player, would y'all prefer to have an NPC unlock chance 100%, but requires you to donate 60 artifacts - or make it a random low chance to happen?
missing a bracket on line 37
it's resulting in the entry below being nested inside the entry above instead of its own entry
That already happens anyway so probably the former
it's clearer if your editor has auto indentation
Do they need ' "Action": "EditData",
"Target": "Data/Locations",
"TargetField": [ "Mountain", "Woods", "Railroad", "Forest", "BusStop", "Backwoods", "Forage" ],'
multiple times, or can they just list the entries under one Edit Data heading?
you can't use targetfield like that
Oh... Cloudberry did it like that so I thought it was fine...
Would they need an action entry for each different target field?
it's fine, but you're missing brackets which you likely dropped when copying pasting code
so your code is incorrectly formatted
yes
Need double bracket here, like at the top of the image?
I'm using someone else's question as a chance to learn too, sorry! 🙂
now you're missing an opening bracket
think of json as burgers, with {} being the top and bottom buns respectively, and all the entries inside being fillings
your problem is you stuffed a burger into another burger instead of having two separate burgers
or missing an opening bun and having an open air burger
I thought I understood it now... But I guess I don't.
your other ones were right, so you've got it. The brackets are easy to miss
ah darn sorry, I got confused because jierishi is asking questions using your code
sorry
Oh oops
okay one problem at a time
Right I'll wait
okay you need a }, above that { to close the previous entry
all your subsequent Action blocks are also missing the { bracket to open it
does your editor highlight the brackets by chance, so you can see the matching open/close?
finally, that's not how you use TargetField, but we'll get to it
for now add all missing brackets and make sure the validator no longer complains
correction: you need two },
every { must be closed with a } before you start a new Action block with a new {
Was that at Jierishi? I can't tell sorry.
it's to you
Now that you mention it... Sort of.
It adds an underscore
I never noticed it
Maybe I screwed up the brackets in a different way now...
definitely much better
I think you have one extra } at the end
and oh yeah you need a comma between "spring" and "fall" on line 129
I missed it oops
Do I actually need to write it like
"Season": [ "spring", "fall" ] ? Or would
"Season": "spring", "fall"
work?
So maybe I used the wrong mod to learn from? It was the only forage mod to have one item that I could find.
Well uh... It's very big. If possible I'd like to learn from a small mod...
well unless they literally shipped with broken json I'd rather say you missed stuff when editing
The only error it had was the format being 2.0.0 instead of 2.7.0
But it does have
"TargetField": [ "Woods", "Forage" ], like this
well yes, that's how you add a new entry to the Forage list in the Woods entry
Oh. I misunderstood what the targetfield actually does, even after reading it many times...
what you're doing is adding a new entry to Forage inside the Backwoods field inside the BusStop field inside the Forest field inside the Railroad field inside the Woods field inside the Mountains entry of Data/Locations
Yeah I now understand it...
In HM DS they can grow on any Field in the game, so I am not sure how to simulate that for SV
don't do that, we use TargetField for a reason
okie dokie
you can add the entry to the "Default" location (instead of Woods or etc.)
I believe that applies to every location
That might be bad because I plan on not having them grow in the desert.
Would this work?
no, multiple action blocks each with its own TargetField
you'd need to duplicate Entries
yikes
annoying, but that's how it works
something something the content modder yearns for ForEach
I'd say scary as I might mess it up
Any tips on how to patch a constructor using Harmony? I don't plan to do anything invasive, just have it toggle a switch on when the constructor is called, and toggle it off when the constructor finishes
using StardewValley.Menus;
[...]
harmony.Patch(
original: AccessTools.Method(typeof(JunimoNoteMenu), nameof(JunimoNoteMenu)),
prefix: new HarmonyMethod(typeof(ModEntry), nameof(JunimoNoteMenu_Prefix)),
postfix: new HarmonyMethod(typeof(ModEntry), nameof(JunimoNoteMenu_Postfix))
);
I'm trying this but I don't think it's too happy with it
AccessTools.Constructor
tysm! Didn't see that
https://smapi.io/json/content-patcher/50c6ddb5136843bea51a82e699a3691c
I can't remember where to put the double \s whne there's a quick question.
is it every action within the event?
dont forget to specify the param type list, because the class in question has multiple constructors
Thanks!
Could you guide me on how to do that for C#? I'm not too familiar with it
it's the second optional parameter of AccessTools.Constructor
hold up let me get an example
Ah, I completely missed that - thanks so much
harmony.Patch(
original: AccessTools.DeclaredConstructor(typeof(CraftingRecipe),
new[] {typeof(string), typeof(bool)}),
postfix: new HarmonyMethod(typeof(ModEntry),
nameof(ModEntry.CraftingRecipe_Constructor_Postfix)));
Where are you trying to download from
First things first
Are you positive you need c#
I thought you just wanted to make a mexican food mod
that sounds delicious
One of these days I need to port my HM DS crops to Content Patcher and then add the HM DS Recipes. I fear that day
I have no idea how badly I will mess up the crop port
Hey if it's 16x16 sprites it'll be ez
I am more scared of how the new format is
Json assets felt so easy and doing the forageables now in Content Patcher was... well, very painful.
Thanks for everyone's help though
Now I just need to figure out how Litter works
I wanted to include the Weeds, Branch and Stone as well
But uh, first...
Is it possible to have two edibilities?
I think I have this mod almost done, whew
In HM DS Edible items can have positive and negatives as well
Yellow for example hurts Stamina but heals fatigue (Which I made Health for SV)
look into spacecore
oh oh. Do I need to redo the content json again?
learned more about c shapr today made an alternate loading screen for stardew progress
Is there no way using the vanilla game? I saw that the Energy Tonic only restores Stamina but doesn't do anything for Health
that's hardcoded. what spacecore allows you is to do it in content packs
no, you'd just add spacecore as a requirement, and then add an entry that Targets SpaceCore's custom asset the same way you target a vanilla asset
missing ] to close out dependencies before UpdateKeys
and delete the { before UpdateKeys
I require assistance with an event not continuing midway through, nor is it ending
No error messages are showing up in SMAPI
Here is the json aprser
parser
Nothing past Harvey leaving is triggering. he just warps away and then they sit there in silence for eternity and the only way to end the event is to skip
sure that looks good, but pop the full file into the json validator to verify
making avocado mods made me hungry irl i want chipotle
real
Also, does anyone know if there is a precondition that states it must be x amount of days after having seen a certain event?
Conversation topics
fair, but i don't want to make unique dialogue for that i just want it on like a timer
you dont have to make dialogue
3 days after a heart event, a letter must be sent
You don't need dialogue
i don't?
you can just use the CT as a precondition
YIPPEE!
Thank you I have done that
Now
What about the event itself?
There is something wrong with it
here
I've tried looking online, but nothing seems to be amiss?
Everything before /move farmer 0 0 3 is fine
If you forget the "Price": field on your items, your item will sell for 0 gold.
Found that out when I was fishing for Water Moccasins.
rip
I am not sure if I understood it correctly... Is this right?
Oh no you need a second edit
Oh
I forget what the custom assets name was, something like spacechase0.SpaceCore/ObjectOverride?
sigh, my new mod has weirdness with bigger backpacks probably because of how it pokes the opcode
It's sorta like Data/Objects but managed by a mod instead of the game, so you need to Target different thing
Tell ppl to use return of custom backpack upgrades instead trust
public static bool hasOrWillReceiveMail_Prefix(ref bool __result, string id)
{
if((storecall_JNM || storecall_Swap || storecall_draw) && id == "canReadJunimoText")
{
__result = true;
return false;
}
return true;
}
trying to override for specific circumstances (ex: in the middle of a function call) and Bigger Backpacks is like "😎 nah"
Why r u doing this
or it might be another part of the code that's screwing up
I want to be able to view the community center bundles from the inventory even without unlocking them
it works great! just without bigger backpacks.
I didn't want to interfere with the normal unlock process
I only want people to be able to "preview" the bundles from their inventory
Hm ok, i find it suspect that u r patching the method checking mail instead of the place that call this method tbh
unfortunately it's called like ten times inside the bundle drawing method, so it's incredibly inconvenient
Okay, I think i did it. Do i also need to add the Mod ID to the entry like the previous ones did, like this?
Yeah it's gotta match the key
looks like a pita
i would also like some help whenever you can
mmmmm delicious
I'll take a look into transpiling, thanks a lot
You can do whatever you want obviously but i vote for transpiler here
I made Organism 46B sell for 50 gold less than the Lava Eel at normal quality but unknowingly made it ridiculously common and easy to catch for its size and price.
The event will just...freeze halfway through?
Harvey leaves and everything goes to crap
Avg harvey moment
harmonyextensions also has an extension method for transpilers that you use on a list of codeinstructions thatll already do the work of replacing every method call found in a function with a different one. you could do this transpiler in one line + a custom method that just returns true, if thats the only way "hasOrWillReceiveMail" is used in this draw function
thanks a lot! will check this out
yeah but i benchmarked it first and found out it wasnt
so idk why i did it again for that one
Fengshui
Is everything working out?
Who is that question directed at?
semi-relatedly but what is an infix, i see in Harmony's recent(ish) commits that theyre working on an implementation of those?
iveh eard the term before but have no memory
General, I'm waiting until others have gotten help first before i ask for mine since it might take a while
I'm gonna try to fix the event on my own first though
Will update as time passes
okay, my solution is disabling bigger backpacks yes yes
like... the whole mod?
yeah, my mod mostly for personal use
You should just ask things whenever here, it's normal and ok
if its for personal use why not just.. uninstall bigger backpacks
i did it got buried
wait what's what I mean?
Worst case you don't get an answer now so just bump it
like turning off the mod on my side
Cus rn idk what u asked
ah, okay
HANG ON i think it's working now
i was worried you meant using your mod to disable the other mod if it detects its installed
hell no lol
okay carry on then 
but definitely working around a mod which pokes the instructions directly is 😭
So hm ik bigger backpack does a lot of elaborate patches to make it show 4 rows
doesn't even matter if I put bigger backpacks first, last, in the middle
out of curiosity, which .draw function is it exactly you want to patch?
https://github.com/spacechase0/BiggerBackpack/blob/master/Mod.cs#L92
it's black magic
Hence why i was like "custom backpack framework" which doesn't do that and just let you scroll
It's just using older approach of how2 do transpiler
The thing we r recommending u to do is exactly this but packaged nice lol
I have suffered from bigger backpack woes as well and usually there's nothing to do besides hardcode some offset to match 
hey, I can now preview bundles before unlocking them, so I'm happy
no more getting blindsided by bundles added by mods
I am back for more suffering. I now need to figure out the context tag for the Mine and how to add an item to the Mine digging/tilling list. It's because of the Black Grass, it can only be found in the mines in HM DS, when digging/tilling. Alternatively, maybe I should make them forages for the mine similar to Quartz and Mushrooms.
nevermind that the buttons seem to be a little... off for some reason
I figured out the issue with my event! The farmer can't use move commands to rotate, they have to use change direction commands
hrm idk if u can do that actually, mines are so hardcoded
maybe you can make them item extensions nodes?
should try adding to the ArtifactSpots field of Data/Locations:UndergroundMine first
Funny story
So, to make NPCs disappear, I warped them to -999 -999
In this event, I did that with Harvey
But because this event has a fade to black and i need to keep it black while I rearrange everything, I had to move the viewport
So I moved it to my usual place of "nothing": -999 -999
So
Whenever there was a fade-out
Harvey would ominously appear on screen for a few seconds
How do I make a door open in an event
Like an interior door
Right now Alta just....phases thru the door
doAction and whatever the door coords are
Ok!
DANG IT
NOW I WANT TO ADD SYLVIA AND ROWAN INTO THE MOD TOO
SO I CAN HAVE ROWAN AND ZERO TRYING TO STAY AWAKE FOR A WEEK WHILE CHANTING "NO SLEEP TILL BROOKLYN"
AND SO I CAN HAVE SYLVIA AND HALEY START A FASHION MAGAZINE TOGETHER
Please remember rule 40 of the internet
EVEN WITH CRUISE CONTROL YOU STILL HAVE TO STEER
Apt metaphor. Because i am going off the rails
xD
Do you know what the event thing is to start an event after the farmer sleeps?
Like the wedding or the bus being repaired
Wait
Figured it out I think!
Nvm
did NOT figure it out mayday
I believe there is a framework for it
Yeah but it's like a trigger action thing
And I can't trigger an event with a trigger action
Basically after the player sleeps, i want this event to happen of Zero hopping off the bus (or walking idc) and going "welp. time to move in ig"
its not a trigger action thing. "More Nightly Events"
nope
Ah well. then I'll simply do it like the Kent introduction
Or
Temporary map >:)
Or
I omit it altogether
OR
I DIG THROUGH THE CODE
AND FIND WHAT MAKES THE EVENT HAPPEN WHEN IT DOES
Anything to avoid further dependencies
nothing makes the event happen when it does. the framework does it.
you cannot do an overnight event like that without dependencies or your own C# code
i mean u can do morning events in the farmhouse
that yeet u somewhere else
thats approximately the same feel
That's how sve does it iirc
only jank is that if ppl restart day then brrrr event go boom
id call that a pretty significant jank and personally as a player i really dislike morning events lol
makes me feel like i "have" to finish the day now even if i was thinking about stopping playing
my own code you say....
Jk i am NOT doing allat
I'll figure something out
you said "anything"
Anything barring that
i dunno i think it's just about how important this is to you
it's uhhh
idrc
i could def do without it
I'm a fan of show don't tell but i think i'd rather tell here than show
then just slap a morning event on it whatever dw about button (\lh)
ok, fellas, ive got a token problem and i need assistance
i have two variations of keys -- regular, and then NoModern. when a config option is enabled, in the dialogue, it will choose the NoModern version of a key IF it exists, otherwise it will default to the regular. so far this is accomplished by the following example (daily dialogue is the same, just named dailydialoguekeytoken)
{
"Name": "SeasonDialogueKeyToken",
"Value": "Lani.Dialogue.{{season}}_{{DayToken}}{{HeartLevelToken}}"
},
{
"Name": "SeasonDialogueKeyToken",
"Value": "{{SeasonDialogueKeyToken}}{{NoModern}}",
"When": {
"Old Timer Language": true,
"HasValue: {{i18n: {{SeasonDialogueKeyToken}}{{NoModern}} }}": true
}
},
howEVER, it seems to not pick the NoModern version even with the config enabled. if i get rid of the "HasValue" clause, then it will apply, but the check for checking if NoModern variants actually exist is gone.
i know this could hypothetically be done in "five minutes in c#" but i'm too silly for that and want to figure out why this won't work. is it just too many tokens? too complex? i didn't cook enough?
i also hate morning events like demetrius. buddy. i don't care if you've been camped outside my house since 4 am and you want to set up an experiment. do whatever you want. i just woke up and the only thing I'm gonna do while my eyes are still crusty is run to the mountain and flirt with your goblin stepson
tl;dr i want the game to pick the NoModern version of a key only if it exists, otherwise keep the normal version in the pool
ill admit im kind of having trouble parsing what exactly it is you're trying to do or what the problem is but why arent you just using i18n fallback keys
what part is confusing. i can elaborate
you want i18n fallback keys for this i think
the All of it, but thats not exactly your fault, just kind oif always hard to get an immediate feel for whats going on when presented with someones very custom token setup
oh ok
but yes, you shouldnt need to check if i18n exists when i18n tokens can already specify what key they should use if the i18n you asked for doesnt exist
um hm
i have the pool of chosen dialogue like this:
{{season}}_Mon2, Mon2.{{Random whatever}}, and Mon2.{{whatever}}
some of those keys have NoModern verisons appended at the end so the pool of chosen dialogue would really look like:
{{season}}_Mon2{{NoModern}}, Mon2.{{Random}}{{NoModern}}, Mon2.{{Random}}{{NoModern}}
but not all the keys have NoModern variants so im like. Bwah?
can i specify a fallback per key in a pool??
but the fallback goes in order listed doesnt it?
if it pulls something that doesnt exist, then itll always play the fallback key
so itll keep pulling the fallback key a majority of the time if i have Mon2.1, Mon2.NoModern, and then Mon2.3 or something
itll only choose the fallback key if it randomly chooses i18n that doesnt exist
isnt that what you'd want
You are
ok i dont know how to proceed from here then
if im thinking too hard
if i have
fall_Mon4.NoModern
summer_Mon4
winter_Mon4.NoModern
Mon4.1.NoModern
Mon4.2
Mon4.3
and i have my pool set up as {{season}}_Mon4{{NoModern}}, Mon4.{{Random}}{{NoModern}}, Mon4.{{Random}}{{NoModern}}, what if it pulls... Mon4.2? But since the NoModern is appended on, that key won't exist. i want it to pull that key, though, and just ... ignore that if it doesn't have a NoModern key...?
there's a game loop event called dayEnding, is it possible for me to use that for my own event
i dont think this is possible with just tokens, hence me asking in here
alternatively, what if it pulls summer_Mon4 but there's no NoModern variant? i want it to still pick that key.
does this make more sense??
it my birthday
happy birthday!!
essentially:
pick a key
check if theres a NoModern variant
if there is, use it
otherwise, don't
dayEnding + change location?
what you want is a dialogue key that's just the normal form, and the key abstraction goes in the i18n. e.g.:
"Mon4": "{{i18n: Mon4.{{Random:1,2,3|key=asdf}}.NoModern |defaultKeys= Mon4.{{Random:1,2,3|key=asdf}} }}",
(modulo typos and me firing from the hip about how to key the randoms)
what does "key abstraction" mean
does that make it choose the same random?
if it does, i understand 🫡
yeah go look up what the correct syntax is, i've never had to key a random so i forget what it is exactly
"key abstraction" means where the NoModern parts live
so don't put your NoModern key material in your dialogue.json keys, put it in the i18n so you can use fallback keys to load it only if it's defined
I have a few questions.
1: How would I make a forage item exclusive to the mines?
2: Can I also add that item to the Mines tilling itemtable?
3: Can I make custom Litter, and if so, what do I use for the TargetField as it's not a forage item.
4: can I make custom Branches and Stones drop items when destroyed and also how do i make them destroyable?
what is litter? trash?
I thought that was Weeds and similar
do u want that to come out of garbage bins
I'd like them to spawn in random areas like the Stardew Valley weeds, twigs and stones.
note the key randomization is order sensitive.
{{Random:1,2,3|key=asdf}} and {{Random:4,5,6|key=asdf}} will always spit out 1,4 2,5 or 3,6.
and if they are different lengths it can get out of sync really easily
that wont be something you can make with Content Patcher alone
it'd be Farm Type Manager, probably
for spawning, can u use ftm or spacecore to plonk the items down?
Yeah, I guess I need to use FTM... I absolutely forgot that
i would check vmv they have a lot of those
i only have 0 1 and 2 so i think it will be okay
i assumed it was just resource clumps (ive never looked at FTM)
i think u can but whether you can pick them up is a excercise for the reader
like i remember wild tree seeds being just, stuck
needed to bomb those away 
Oooh that's a good idea, I'll put that in my map toolkit
Well uh, guess I should first ask how to make Forage spawn in places.
You can do that either with an ftm content pack, or by editing location data with CP
[[Modding:Locations]]
hypothetical would this work for the seasonal keys
"Name": "SeasonDialogueKeyToken",
"Value": "Lani.Dialogue.{{season}}_{{DayToken}}{{HeartLevelToken}}"
},
{
"Name": "SeasonDialogueKeyToken",
"Value": "{{SeasonDialogueKeyToken}}{{NoModern}} |defaultKeys={{SeasonDialogueKeyToken}}",
"When": {
"Old Timer Language": true,
//"HasValue: {{i18n: {{SeasonDialogueKeyToken}}{{NoModern}} }}": true
}
},
or would i append the defaultKeys somewhere else
[[Modding:location_data]]
I guess I'll use FTM as I'll also need to do the Weeds Branch and Stone.
Would be nice if the modding pages used a consistent naming scheme. I wonder how hard it is to set up aliases
This is what I currently have for Weeds
doubt its hard. the Wallet page redirects to Special Items & Powers
i imagine you can do the same for modding pages
whether you or i can, idk
the royal you is what i meant
defaultKeys is an argument for the i18n token specifically so it has to be where you use that token
Actually... I can't find how "chance" works. is it % based?
yeah i do use it in a token ichor
"Name": "DialogueToken",
"Value": "{{i18n: {{Random: {{SeasonDialogueKeyToken}}, {{DailyDialogueKeyToken}}, {{DailyDialogueKeyToken}} }} |defaultKeys= Lani.Dialogue.Mon.0 }}"
it just splats it all together in here
i guess try it and see then. too much going on for me to sensibly predict the outcome
I changed a redirect yesterday. It seems like you dont need special perms to edit them so surely you can add one
Huh, I might do that then
What do u wanna redirect out of curiosity?
probably smth to do with the fact that its a crapshoot whether a modding page ends with " Data" or not
I swear the convention is never know is when to caps something
Rip pathos who fixed caps on 15 pages after a refactoring I did yesterday to satisfy a stub notice
Some of the modding pages are just Modding:Thing and others are Modding:Thing_data, so if I can I want to add redirects so you can get to the Thing_data pages from Thing
Whenever I make them I think I default to not putting data at the end... Am I part of the problem
Like Modding:Locations -> Modding:Location_data
i dont know if you're part of the problem or part of the solution
because i dont know what its meant to be or what started itr
Im part of the solution because nobody else was going to migrate that giant crop info /lh
there is totally a debug command to display a dialogue line right
(i just noticed Pathos added CompleteQuest the other day. thank u pathos
)
Also realistically objects should probably be multiple pages but that's a spaghetti pile I don't want to touch just now
Sounds like a lot of broken links if you do lol
Well, no, because you could make it an index page
whats wrong with Objects
Hmmm fair
Modding:Items is already basically an index to each item type
Oh wait I think I got the two confused
Objects is all Data/Objects
Item stuff used to be a single gigapage for all item data except clothing
Which was just very confusing
Yeah I haven't been on the wiki that much recently, so I'm not surprised I missed it
Mostly just the pages for location data, maps, gsqs, token text, and trigger actions
The original distinction was:
Modding:X datapages only covered the data format (e.g.Modding:Object dataexplained theData/Objectsformat without the surrounding topics like C# extensibility);Modding:Xpages covered everything about a topic (e.g.Modding:Mapsexplained how to install Tiled, how to install maps, their data, etc).
The distinction is legacy though, since there's no reason not to document non-data stuff if it's useful. So we're slowly renaming all pages to remove the 'data' suffix.
yay, part of the solution i think
(Maybe we can just rip off the bandaid and rename all the remaining pages.)
i was about to ask why it was a "slowly" thing
Mostly just because it's a pain to do, since we need to go through and fix all links on the wiki to point to the new page title.
from what i read if you "Move" a page it auto-creates the redirect for you
(The main wiki moderator doesn't like links to redirect pages.)
can spacecore animate a map tilesheet
i feel like creating the redirects and then making the "fix the links" the "slow" part of the process would be better imo but i am not the main wiki moderator, so
i have special reasons to not do this via normal ass map things
it is the ginger island mailbox tiles
@idle lantern to set custom dialogue for your NPC when they accept the mermaid's pendant, you add a key to Strings/StringsFromCSFiles which is <NPC_internal_name>_Engaged
so if memory serves, you would have a patch like this:
{
"Target": "Strings/StringsFromCSFiles",
"Action": "EditData",
"Entries": {
"{{ModId}}_Rahiel_Engaged": "Your dialogue here"
}
}```
Yes
(tbh idk if my wiki account even has good enough reputation to rename pages wholesale but since its easy to find every page that links to a certain page anyway, id probably find it satisfying to just go and rename/fix them all myself tbh just to finally have them all consistent)
modulo i18n, of course, which i recommend you use if you aren't already
{
"Action": "EditData",
"Target": "spacechase0.SpaceCore/TextureOverrides",
"Entries": {
"{{ModId}}_Maps/island_tilesheet_1": {
"TargetTexture": "Maps/island_tilesheet_1",
"TargetRect": {
"X": 48,
"Y": 368,
"Width": 16,
"Height": 32
},
"SourceTexture": "{{ModId}}/mailbox_gingerisland:0..4@300"
}
},
},
what am i do wrong 
Do it in 16x16 squarws
weh
Basically every draw rectangle has to be separated
thank god its only 2 squares
And maps draw in 16x16
do i need 2 textures
The atra is not sure
was that the intended outcome
idk i can only assume the carrier pigeons are trapped
ah right spacecore doesn't use miliseconds but ticks
Is this actually a valid type?
yea
wow
how do u covert from tick to ms 
he hates me lol
16.67
Unless you use a lot of mods
reluctantly
use condition
Hewo, I have a CMF related question.
How can I go about expanding a custom museum space?
Like if I add Y mod, it can add an additional map space and detect those as museum stuff?
Well uh... there is a lot of info. I am not sure I understand it
do I write it like Town_Summer?
Is there one for all seasons as well?
the other mod can add a map patch and add tiles and tiledata the same way the original custom museum has
CMF looks at the Location to know what museum it is, not the literal tiles on the map
Release the magic smoke
I wish my tickrate was 16.67ms
Mine is!
so the other mod can add to ze custom museum rewards? or... 
I'll get the hang of it eventually vv
the other mod can edit the Spiderbuttons.CMF/Museums asset after you do to edit your museum yes
I am very confused if I did this right.
hi idk where to ask but is there things like modpacks in minecraft, but for stardew ? im new to modding and added a few mods to my save but idk many mods so i'd like to discover somes
ftm i added allat
This channel is for making mods, you want #modded-stardew :)
Condition is not a list of strings, it's just a string. Remove the square brackets and you should be okay.
Can I add in multiple locations as well?
Does it need a comma or is it fine without?
No, you can only check one location. No commas.
But you shouldn't need to be checking multiple locations anyway because it's going to be the same season in almost every location (except for desert and ginger island).
You can use a second GSQ if you need to check another location though.
I think I'm using the wrong thing then... What do I use for custom forageables?
What do you mean? That is a custom forage item. The Condition is just to control when it will be available. Right now you're adding your custom forage to Default* when it's spring or summer in Town (and therefore most of the world).
* I don't know what Default actually does, whether it shows up everywhere or only places that don't have their own forage list, or something totally different.
I would like them to have a chance to spawn as well in the backwoods, busstop, woods, secret woods, railroad and mountain.
It's to simulate how they are found everywhere in Harvest Moon DS
The condition doesn't stop that from happening.
I really misunderstood it.
Is it making sense now?
I think so.
Can I use that condition to make them able to spawn in the Mines as well?
Hooray!
Excuse me @brittle pasture , but did you hackerman into the ES mod page, upload a file, delete it and run away? /j
But seriously it seems that there's some shenanigans happening in Nexus database with various modder names getting attached to random mod updates? Do we know anything about this?
omg i saw that too with Riley, i was very confused
no idea it was a widespread bug(?)
once again nexus is broken
love that it keeps finding new ways to be broken
trying to navigate past the first page of bug reports yields only errors
Nexus knows about the error
I figured
looks like my application to be an ES creator leaked early /s
hmmmm turning comments into bug reports also seems to be broken
Bro does not have automated tests /j
Can't blame them too much
After all, they're working with an antique bbcode forum as the base code
Certainly not a job i would want to have
Apparently the new management is pro AI
oh no
I am unsurprised
the old management was pro AI, too, but i guess only milquetoast pro AI and maybe not as full-throated
Trust surely it will not devolve into being unusable due to vibe coding
Do we know for sure that the chosen company is part of this and not just the 2 random ppl
They gotta do an official announcement eventually....
Also ngl if i ever name a company "The Chosen" please come up to me and hit me across the face with a fish
What happened to generic positive sounding names
"Happy gaming leadership"
Anime happened
That time I became the nexus mods site owner in another world
The company name just sounds so stupid I can't take them seriously
anyways... anyone knows if this will work?
it sounds like a spinal tap gag
All their graphics are just... Orb
I'm not going to get out of bed to check but the last I recall the forage spawn system in the mines does not call the normal one
yes, though you'll probably want to use it with MoveEntries so it's not last
oh for the mines? I don't think forage spawns in the mines
floor stuff is handled with other systems
I think there's a framework for it though
Ftm might be that framework
I tried looking at the commands and am more confused than knowledge
I think i need help for that as well
I was never good with that stuff. Someone always has to explain it multiple times until I understand it
Item Extensions can modify mine spawns
although I guess only for custom resource nodes
I think FTM is the only way if you want regular objects to spawn
I figured previous management was okay with AI but new management seems to be true believers
Either that or the dude has a LinkedIn account
Not sure
ah, but you repeat yourself
ichor what if farm animals can hat
I wonder... do we give nexus mods a license to feed our content to ai?
Like already do we do that
is there a list or map of where NPCs stand and walk during the night market, similar to how there's the spreadsheet for the main festivals?
linkedin is such a wasteland my god
The worst part is its necessary for a job lol
if I ever start making inspirational javascript posts on linkedin just put me down please
yeah it's so fucked
night market (and saloon!) was on that same spreadsheet last i checked, but that was some time ago
I hate how much capitalist toe-sucking it involves
Here's what my == vs === bug taught me about wedding etiquette 🚀
this has been broken for me for a while
I saw someone with a tagline of "i want to connect with you, emotionally" and his whole post history was just gibberish and he's the only valid LinkedIn member
whenever i try it get stuck and eventually the first comment in the chain makes it
it was so useful 
I did almost make a post using O(0) as a metaphor for not doing algorithmic work that doesn't need doing but then I realized that a) it was a terrible metaphor and b) might go above some people's heads
maybe i'm not looking in the right place :P i think it may have been vandalized at some point because there are a million tabs
i admit that i thought u said (O)0 weedses instead of O(0)
Wouldn't that turn it into Ore?
This stuff is really confusing...
Please tell me it's easier to add it into the Mine's Tilling droptable.
O(0) also works in teaching the weakness of O notation, in that O Notation only talks about how algorithms/systems scale based on the input, not on how long it actually takes
an O(1) algorithm that is shit can be slower than O(N!) particularly at sane values of N
I honestly feel that one of the most important aspects of performant programming is actually just assessing what assumptions you can and can't make, and when to restrict functionality in favor of computational corner-cutting
It's something that I think takes a lot of time and practice to get good at
profiling is also good /lh (figure out where your bottlenecks actually are, then fix those first)
oh absolutely. That is such an obvious step that I forgot it wasn't self-evident
(if only someone made a mod called Profiler to try to find the bottlenecks, it would help in troubleshooting performance problems)
it would be so nice to have but I doubt anyone would ever make such a thing. It's simply too hard. /jk
fr though profiler has been a great help for yelling at me for writing inefficient code identifying slowdowns in regular play
profiler yells at itself sometimes as well don't worry
in mumps I had a feature that scanned the paths layer to gather information and it wasn't caching any of it so the mod overall added like a second of load time between rooms which was. not good
1s 
it was like 800ms I think
i remember i used to do this (in early version of the mmap light tile prop stuff) but it wasnt that bad
specifically it scanned the front layer
I don't mind performance spikes on warp or even infrequent button presses.
its timechanged or even updatetick(ing/ed) that I'm less happy with
yeah but cp added another 1900ms so overall there was like a 3s pause whenever I changed rooms, which was an active hindrance for things like buildings where you're frequently warping in and out
in my 1.6 pack neither of these things is an issue any more
in the case of CP I suspect it's at least partially because DSV uses Appearances now, and the sequel mod to mumps has a lot more and better caching going on
the advantage warp has is that the lag spike is while its on a black screen anyway so feels less disruptive than your inputs suddenly not doing shit walkng in town or fighting mobs in the mine or fishing
a lag spike while fishing a hard fish is extremely frustrating
sometimes i wish automate had a warp only mode or smth
I think currently I have a perf issue with chests anywhere doing some stuff in Rendered, I think for furniture names or something
not all of those 5-10ms blocks are chests anywhere
is it rendering for storage furniture?
I really need to get around to rewriting this damn website, it deciding all the mods needing to be purple isn't useful
idk but it happens when I'm just walking around, not with the interface open
weird
chests anywhere does have functionality for doing tooltips which I think this might be?
Thank you! Didn't see this
I also want better filters to help narrow down on the background noise rather than the huge but infrequent spikes, particularly when I do the silly thing of having Profiler start measuring GameRunner.Draw and thus spams the ever living daylight out of profiler
i appear 6 times on PlayerWarped 
Question, would this work to get Forage to spawn in the mines?
i wish profiler had better ways of breaking down cp pack problems though
or perhaps it does have the tools and i didnt set it up right
unfortunately idk if i can give this to randos in mh 
Profiler cant do it from the outside due to the methods not being naturally called
MethodInfo apply = this
.GetType()
.GetMethod(nameof(this.ApplyPatchesToAsset), BindingFlags.Instance | BindingFlags.NonPublic)!
.MakeGenericMethod(e.DataType);
apply.Invoke(this, [e, loaders, editors]);
I don't understand the FTM commands... I can't find one for the mines.
I keep up to date links in the profiler thread #1359454014319755294 message (now has a pinned message too to easily get to them)
Maybe if I look at a vanilla item? How exactly does spawning Clay work? You Dig the ground it has a chance of giving clay?
a lot of this stuff is hardcoded in some way
you can perhaps try editing Data/Locations UndergroundMine tho
and iirc FTM does have some stuff for dealing with mines
Maybe I need to add all of these?
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!
the tmx is what u want but cant see that until u unpacked
I somehow did not read it correctly.
Wait. I think i am still not reading it correctly?
It has them for all seasons but only seperate
I can't find an option which includes all seasons in one
honestly i am not sure about this either 
you should prob avoid focusing too hard on the mines
they are very hardcoded
do the straightforward bits first 
I know, but this one single "foraging" item was only available in the Mines in harvest Moon Ds.
yes i understand but what if u just put it in the quarry
I thought making it a forage in the mines would be easier than making it obtainable by tilling in the mines
thats an ordinary location
Okay...
i know people do spawn things in the mines, but mostly ore nodes 
Yeah I am kinda weird
Or maybe Harvest Moon DS is weird
I am not looking forward to doing the Litter items and making the Branches and Stones be able to drop Stardew Valley materials
Will this work?
"Condition": "LOCATION_SEASON Quarry spring summer fall winter"
quarry is part of Mountain
Oh.
and u can use LOCATION_NAME alone here psure
Okay.
@outer glacier cheeto dust requested ^^
You too.
Heya Dylan! Could you please add yourself to the list of modders on the Modding:Community wiki page ? You'll need to make a wiki account if you haven't already.
This one? (that link goes to .net and I get a permission error)
https://stardewvalleywiki.com/Modding:Community#Modders
yes. sorry! I mistyped 
I'm on it.
I'm not seeing your name in the table - you added yourself to it?
Oh, I'm sorry. I mean "I'm doing it right now" orz
lmao

Ok so I'm a little slow on the uptake tonight
No, me too.
You're good, Dylan - I just apparently need to unplug myself and plug myself back in
achoo Congrats on the triple-coating of cheeto dust!
I wanted to be cool like Scarlett and Kantrip.
Welcome to our latest cheeto!
I'll fix the alphabetization. 
so many cheetooooooooooooo
I need some help with fixing a different mod. A buddy is using it but the sprite change does not seem to work. in sublime it seems to say that it has an error. But the validator says it's all fine.
I can't speak to why it's not working, but those are not the same file - the first with the highlighted red 0 twice does not write that as a string like in the validator example: "0"
does anyone happen to know where the images are in the unpacked files for the trinkets (frog / fairy etc)?
I swear I did not do anything.
TileSheets/Objects_2
(around the middle, in case you have trouble spotting them)
and companions if you wanted the actual companions
yep that's perfect thank you
could the validator add the quotes when it formats the json?
Most likely yes
oh i thought so
It's The Creature
kailey please onyx in box pics
Cat
Meow

How do I make the music play at a specific time of day? So far nothing working for me.
Don't do this please just use GSQ for the whole thing 
Anyways if this is location music, you would need to enter the location at the valid times
the cp when/update would need to be at the more outer layer anyway and not within your entry
:D
Kity!!
Back to making evebntgs
And when im doen with ebent
I am "done" with mod
(ready to be sent to the boys for playtesting)
Like this? Also, how can I superimpose the music onto every map, or is that impossible?
as far as the condition goes, you'll need a comma between each query, and should generally remove any leading 0s on times:
"Condition": "SEASON Summer, TIME 800 1600"
(although I guess the time GSQ is fine with leading 0s, checking the code)
ugghhhhh i REALLY don't wanna give zero an eight heart event
because the ten heart event is a wedding >;[
Is it possible to make schedules take different priorities?
Like rain usually takes priority over friday, but friday is mail delivery day for zero and he gotta get dat mail out
You could probably use a when condition to change the rain entry for his schedule on Friday?
(gsq conditions in schedule parsing when? /lh)
// Marlon
{
"Operation": "Append",
"Target": ["Fields", "Marlon", 1], // Loved
"Value": "Strawberry",
"Delimiter": " "
}
Inside the value, do I put the [ID] number or the full name, for the strawberry?
Yeah, or just null it out Fridays only
I'm really confused. I have a sprite and portrait change I want to apply to the wizard, for the rest of the day after seeing an event. If I apply the patch without conditions, I can see that it works. However, when I use conditions it never applies. I have tried applying the conditions as part of the appearance conditions, and as content patcher conditions. I've tried making the condition having seen the event, or having a conversation topic that I set during the event. Simplified example that never works (but does if I take out the condition): { "Action": "EditData", "Target": "Data/Characters", "Fields": { "Wizard": { "Appearance": [ { "Id": "LAOSV_wizard_transformed", "Condition": "PLAYER_HAS_SEEN_EVENT Current {{ModId}}_RipleyWizard", "Sprite": "Characters/Wizard_LAOSV_Transform", "Portrait":"Portraits/Wizard_LAOSV_Transform", "Precedence": -999, } ] }, }, },
NPCs only recheck their appearance conditions when they change locations, which the vanilla Wizard famously never does
Oh OK, I saw that information but misinterpreted that the appearance was applied when the farmer changed locations
dang
Npcs only change clothes when they warp
OK, I guess I can set the event to have the wizard be invisible and replace him with a stand-in but that will unfortunately prevent gifting
Mood
Wizard never touches grass
They're a wizard. Do wizards need to touch grass
Wizard ponders grass
khloe! hello!
Hello~
-# I had to sneak out from my lair in programmers off topic to make a dumb joke
unless it's the junimo event, then it's a different kind of pondering and a different kind of grass 😔
Do you have lots of gold in your lair
I want to make an event in the Secret Woods. How get rid of the slimes?
you shouldn't have to. events take place in a pocket dimension
Okay!
What about the stumps?
is there an event condition that relies on a quest being completed
if the quest sets some other state (typically mail) flag, you can use that. otherwise the game doesn't really keep track of which quests you have completed
nOOO
hang on
can i make an invisible mail?
like mail that doesn't actually exist
yes, the game does that all the time
Yippee!
that's why we call them mail flags /lh
depends on the quest and how you complete it
if it's a give-this-person-an-item quest, they probably talk to you, so you probably have to use a dialogue command ($action) to send the mail
yeah if you add it to data/mail then it will become a real mail that shows up in the mailbox (or in your collections page if you send it straight to received)
it can/will still work the same as a checkable flag though
okay!
(Update on the Nexus Mods acquisition: the new owners are officially Chosen, and they posted pinned FAQs under the original announcement. Don't scroll down to the other comments.)
#1384246113472872459 is the containment thread i think
or rather just a "here it is all in once place" thread, not rly containment
that post truly did become a nightmare
Probably still good to summarize new developments here for those who aren't in the thread, then redirect discussion to the thread.
Hi! I'm planning to make a mod that adds a new late-night TV channel (available only after 8:00 PM) after the player meets certain conditions, but I have no idea where to start. Could anyone point me in the right direction or share some advice?
hello, does anyone know offhand what x and y, width and height the vanilla straw hat is in terms of FS .josn hats? i've done a tiny edit with ears on the straw hat and am just struggling to get the positions and w/h done. i'd really appreciate any help!
you need a framework for adding new channels: https://www.nexusmods.com/stardewvalley/mods/24278
I recommend going w 0 0 offset and 16x32 size to start w
And then using Fs_reload to tweak
what you want (only after 8pm) doesnt seem to be supported however
you'd need to roll your own C#
You could point the mod to a certain image, and have a CP patch that edits the image after 8pm?
Too bad the author didn’t get to finish the planned features. Thanks!
Before 8pm just have static?
Thanks. Could you explain in more detail how that would work?
the framework isnt a CP framework
that isn't possible
it uses its own content pack model
CP has an OnTimeChange frequency that lets you change what the image would look like at different in-game times but this only works if the mod dynamically fetches the image, even if was a CP framework (which apparently isn’t)
learning C# is always an option 
Thanks a lot for all the suggestions! Can I ask C#-related questions here too ?
most definitely

so i got the front in the right position but there's a hat at the bottom of the character and it's static front face no matter which way i turn my farmer.
How is your sheet laid out?
Do you have the hats vertically and arranged in a 16x16 grid? Because if you set it to pull from 16x32 but the hats are 16x16 then it will do this
i think it's 16x72?
ok 16x16 fixed it
but it's still only facing one direction when i turn my character
Did you add it with FS or JA?
FS
Would you mind sharing your JSON file?
(dont use JA please)
Each direction (FrontHat, BackHat, LeftHat, RightHat) might need a slightly different Y value to align properly.
align with the other angles?
it's stuck like this:
in the front facing-angle
so adjusting the Y value doesn't show
In an event i have two characters kissing but their sprites...don't align??
did you try position offset
no i did not. hang on
id suggest maybe looking at an event code that has kissing in it(tho off the top of my head idk any, hm)
I think it's just Alta being "higher" than Zero by 1 pixel
I added the position offset and it broke the whole event so im just gonna reupload the spritesheets
what programming language do yall use to code mods btw?
so i just got a message on nexus about smapi 'warnings' so im trying to be sure somethings not wrong. the map edits in question are reliant on specific other content packs/specific config for said content packs being loaded/active before it places the fruit trees from said mods into the map. im just confused as to why its throwing a warning at all, since its supposed to not apply when the content/config is unavailible.
!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.
Chu beat me
This error means nothing to us unless you show the when block
i was hoping that wasn't needed. and it was just a 'hey this patch was skipped' in all cases.

