#making-mods-general
1 messages Β· Page 124 of 1
:( canape
because the y arent seen by the player
sucks that they didnt do the full name for ingredients purposes though
is blank.json just
{
}```
or is it
[
]```
You don't need a blank
oh ?
Just initiate an empty dictionary lil
oh
what about the CP packs though? if there's no blank file how will they make entries
ty
the empty dictionary is the blank asset, you're just creating it in C# rather than CP
You can just pass smapi an empty dictionary. This is equivalent
oh shit yeah i always forget you can do that
in any case, the answer is [] if your data is a list, and {} if it's a model or dictionary
yeah it'll be a dictionary i think
huuh, apparently true. reassuring but still sucks for recipes lol
Dried
Dried
what should my Func<object> do / be? i don't understand it all that well, i thought i'd just return an empty dict
can u expand the screenshot a little so we can see the error
you probably just need to cast to your final type
e.LoadFrom(static () => new Dictionary<string, Patch>(), AssetLoadPriority.Exclusive);
that is so bizarre to me, but thanks
oh wait so it just wants some function that returns the dictionary to use
lol im so silly, thanks
it's all very simple in the end, you've just got to break through the syntax hahah
it's a thin wall but it's not clear
maybe if i watch modders in here long enough, i'll learn a bit of C# 
that's how i learned π
it will create an empty dict whenever you request it, provided the cache is invalidated, but all content packs will apply their changes too
what event do i hook this into in the helper? i've never done asset invalidation so forgive my naivete
helper.Events.Content.AssetRequested += Apply
though you need to update the method signature to (object sender, AssetRequestedEventArgs e)
ah i see thank ya
at what point will content packs have made their entries? i.e. when do i populate the patch dict ?
if you call T instance = helper.GameContent.Load<T>(AssetName), it'll be resolved by the time it's assigned
It is generally two ticks after game launched
I wanted to change the recipe for the electric furnace and to that I need to know 2 things:
1-Can I just delete one of the object ID codes (in my case "Object": 390 and the "Count": 50) and change it with another.
2-If the first option is available I want to change it with the base game furnace, and I don't know the item id for it can someone help?
But, you know, I tend to prefer to populate as late as possible
so i can do it in modentry? or shall i just wait until i'm like, on the title screen
or even on save load ?
I mean
i usually init at ModEntry > GameLaunched > OneSecondUpdateTicked
What do you want the content pack to do lol
East Scarpe's loads, at earliest, on DayStarted
(i'd answer the crafting recipe question but i don't actually know for sure if you can use a BigCraftable as a recipe ingredient)
AtraCore when the first bit of equipment is equipped
- Sure. 2. No
Unless you recode the entire mod to use CP alone lol
it's basically going to make random object messages that you can see (like the nameless NPCs) have portraits by targeting the string path and ID and then giving the path of a portrait to use in GameContent (easily then loadable using CP)
thanks both of you
Lazy load would work fine there
so i'll just do it as late as poss?
But I don't understand why you can't edit the map to use the form of action that has a portrait lol
it's for someone else to use as a framework to edit vanilla strings and other peoples' mod strings
sometimes you might find it better to load early, depends on how much you value stuttering during gameplay compared to likelihood of the asset actually being loaded
i'll just do it on saveload for simplicity. thank ya !
hold on hold on, when i load this here:
public void PopulatePatchDictionary()
{
Helper.GameContent.Load<Dictionary<string, Patch>>(PATH);
}```
won't that just return a blank dict from the asset invalidation thing every time? like, ignoring the CP edits that are all made
I mean, you're not returning anything
Note that if you assign it to a field, you'll need to handle listening to invalidating as well
For something as slow as a click event it's fine to just rely on gamecontent's internal cache
on second thought how easy is this for someone that has 0 knowledge on coding
i'm going to populate the dict on save load and then just use it cached in memory for the rest of the session i think
π€·
People get mad at me when i tell them basically everything in thr stardew modding space is like, actually pretty easy, just tedious sometimes
!1.6 probably has most of the info
oop
!gs
If you would like a guide to setting up mods for Stardew Valley, check out the getting started guide! https://stardewvalleywiki.com/Modding:Player_Guide
!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.
Maybe the 1.6 command got removed lol
thanks again
so the way i have thought of doing this is by checking if the current object dialogue that is ready to be loaded is equal to the string at the path we're checking
essentially
as a prefix to Game1.drawObjectDialogue(). this is probably wildly inefficient due to loading the file for every patch i check. is there a way i can make this more efficient that anyone can think of?
im now gonna cache the strings to do it:
public void PopulatePatchDictionary()
{
PatchDictionary = Helper.GameContent.Load<Dictionary<string, Patch>>(PATH);
foreach (string key in PatchDictionary.Keys)
StringsFromPatches.Add(key, Helper.GameContent.Load<Dictionary<string, string>>(key.Split(":")[0])[key.Split(':')[1]]);
}```
GameContent is the asset pipeline (i.e. what ContentPatcher can touch and what Game1.load etc will interact with), ModContent is just a direct interface to your mods folder on disk.
and in ContentPatcher, using InternalAssetKey is the mechanism to generate an asset name in GameContent that will load from ModContent
Windows can't handle that
Anyone know if there is a way to set animals to come outside even when raining?
ah i see thanks
Couple of Harmony patches in FarmAnimal, more if you don't want them to constantly lose happiness while in the rain
Thanks, I havn't looked into harmony yet, any good places to start?
!harmony
Here be dragons. Venture forth with bravery, young warrior, for thou art alone in these dark lands. See the Harmony wiki page for more info.
π€£
Familiar enough I suppose
https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Harmony is probably going to be okay for you then
more details can be found on the link roku sent
As long as you avoid transpilers Harmony is just regular ol' C#
Basically we are playing with the frog terrarrium that add frogs as animals, but it doesn't make much sense that they wouldn't come out in the rain
harmony is literally the key to making beautiful mods - once you know harmony everything is SO easy
transpilers can die though fuck transpilers
I prefer the compat transpilers offer, but they can be a lot to deal with
changing raw IL sounds like what i will be doing if i go to hell
CodeMatcher helps a lot, but there's still a lot of "trying to solve a maze while only being able to see a tiny portion of it"
So would it be able to target only a custom animal?
You'd have to add a check to see if it's your custom animal and return to the base code if it's not
Then when it is your animal, do your custom code and not return to base
so my project relies on this nuget package but when i have it imported it doesn't download the .dll for it to /bin, how can i get the .dll so i can put it in the mod's folder?
will i just have to compile it?
building it should get you everything you need
i've built the project im doing but it's not doing the dll. i'll have to download the nuget sln and compile it myself
Only nuget packages I'm familiar with are Pathos's and neither of them add any extra dll's as far as I can tell
what kind of produce frogs give?
mine is this external project to allow me to easily fuzzy match strings based on different types of matches
erm..? mod, what are you doing?
public override void Entry(IModHelper helper)
{
HarmonyInstance = new Harmony(ModManifest.UniqueID);
helper.Events.Content.AssetRequested += AssetRequested;
helper.Events.GameLoop.SaveLoaded += GameLoop_SaveLoaded;
HarmonyInstance.Patch(AccessTools.Method("Game1:drawObjectDialogue", [typeof(string)]), prefix: new HarmonyMethod(AccessTools.Method(typeof(ModEntry), nameof(Prefix_OneString))));
HarmonyInstance.Patch(AccessTools.Method("Game1:drawObjectDialogue", [typeof(List<string>)]), prefix: new HarmonyMethod(AccessTools.Method(typeof(ModEntry), nameof(Prefix_StringList))));
}
public static bool Prefix_OneString(string dialogue)
{
foreach (var kvp in StringsFromPatches)
if (Fuzz.Ratio(kvp.Value, dialogue) >= PatchDictionary[kvp.Key].FuzzRatio) // Match according to fuzziness provided by the patch
{
ConstructNewSpeakerDialogue(new List<string> { dialogue }, PatchDictionary[kvp.Key].Image, PatchDictionary[kvp.Key].NPCName, kvp.Key, PatchDictionary[kvp.Key].ShouldTrimColons);
return false;
}
return true;
}
public static bool Prefix_StringList(List<string> dialogue)
{
foreach (string s in dialogue)
foreach (var kvp in StringsFromPatches)
if (Fuzz.Ratio(kvp.Value, s) >= PatchDictionary[kvp.Key].FuzzRatio) // Match according to fuzziness provided by the patch
{
ConstructNewSpeakerDialogue(dialogue, PatchDictionary[kvp.Key].Image, PatchDictionary[kvp.Key].NPCName, kvp.Key, PatchDictionary[kvp.Key].ShouldTrimColons);
return false;
}
return true;
}```
has anyone ever seen that before?
first time I saw this kind of harmony call
is there a list somewhere of dialogue keys for shared dialogue among npcs?
edit: nvm it seems the wiki has most of the ones i need
ok. I will take a break. too many new things to a Saturday morning...
Frog leggies /j
I need to stop getting distracted π I start the code/sprites for the crops, boom I somehow end up working on tapper, then I continue with custom moss 
At this point I am not even done with the base items because tangents are powerful
Each frog finds different gifts. There are like 10 frogs
Is there anyone who knows if the next word after "..." should be capitilized or not ? Stardew Valley has a lot of "..." in the dialogue and is very inconsistent about the capitilization^^
Any general rule to follow?
It depends on whether it indicates a complete sentence that trailed off (like "He got a pufferchick... It was raining too.") or a pause in the sentence (like "He got... a pufferchick.").
That makes sense! What about single expressions like "I...ehm...dont know* etc?
I suppose that would still be part of the same sentence in that case
I thought in-sentence its ... and if its between sentence you use 4 dots .... anyway 
I donβt think thatβs a rule in US English
I agree
When a sentence ends with ellipsis, some style guides indicate there should be four dots; three for ellipsis and a period. Chicago advises it,[10] as does the Publication Manual of the American Psychological Association (APA style),[11] while some other style guides do not; the Merriam-Webster Dictionary and related works treat this style as optional, saying that it "may" be used.[12]
seems split according to wikipedia
but yeah, Id follow Pathos advice
Thanks for all the help guys π Coding might be hard, but translating can also be considered a pain in its own category haha ^^
poetic license is a thing too
so for dialogues, doesn't care so much to which is the rule, but to which sounds/seems better
and 4 dots is a bit too much to me, except in official documentation
grammatical rules are employed by native speakers based on what feels better, but they still have rules underpinning them. For people who dont have that familiar sense of "feel", you can also just ask someone to read through your stuff at the end and find stuff that doesnt flow right
Never heard of anyone using four dots
You don't use four dots, an ellipsis replaces end-of-sentence dot and is always three dots long
On a sidenote, It's pretty funny trying to translate all the "uhm"s and "Oh"s from English to my language since we dont really have those kind of expressions
Gotta get creative with it
(Here's an interesting overview of filler words across languages.)
I think the best way is to get the general sense and meaning of the dialogue line and translate it to your own. How someone with that same demeanor would speak in your language?
translation is less about parsing word by word and more about translating the meaning of the original message as close as possible
and that's why bot translations are always terrible...
Does this look like it would work to allow frogs to go out when it is raining?
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
uhhh it's a postfix so im not sure
it'll do what it usually does THEN do what you have written out there
you'd probably want a prefix?
to overwrite the usual logic for the frogs
ok, I'll keep tinkering. Still new to all of this
no worries, a good start
ok, so referenceing farm is good to get the terrarium location
they're a buildable location and you can grow shit but the only place that is of type 'Farm' is the farm
var farm = Game1.getFarm();
// Place the frog on the farm
farm.animals.Add(farmAnimal.myID.Value, farmAnimal);
farmAnimal.home = terrarium;
farmAnimal.setTileLocation(spawnTile);
So will this code only work for terrariums on the main farm?
hm.. If I were to make a UI mod (way out of my abilities) which files would I even be looking at to change?
(I'm not familiar with frogs, but postfixes are fine for adding extra behavior in addition to what the game does.)
if u want to make an interface mod i'd start by looking at a existing one
Yep, Game1.getFarm() will always return the main farm location. If you want to put them in the terrarium's location, you can get the location from the terrarium (e.g. terrarium.GetParentLocation() if it's a building).
it is mostly replacing textures
Yeah, I'm aware. But I guess I could just look at existing ones
but there r a lot scattered across menutiles and cursors
is there a check for if the animal door is open?
The tricky thing for UI mods is changing the text color if needed; you need Harmony if you want to do that, and it's probably not very fun to do.
terrarium.animalDoorOpen.Value seems likely, though you'd need to try it to make sure.
Cool thanks
Yeah. I'm not skilled or experienced enough to do anything of that sort. I was just wondering
!anyonecancook
Still not experienced enough :p
I stick to easy things for now. (even those I might never do)
You can practice little by litte π
I was thinking about making an npc but that's lots of effort I imagine. Coding wise I mean (not to mention character and sprites)
starry blue ui uses this for text colors
honestly, my biggest challenge for custom NPCs so far is thinking up enough dialogue lines to have them not constantly repeat themselves
the only thing I would probably use generative IA is to generate NPC gibberish lines
Dialogue lines and events are difficult for me
'write 100 lines of dialogue as if you were a grumpy blacksmith in a small coastal village'
ok, I kept it as a post event, but I think this should work. Let me know if you see anything that looks wrong. Off to test
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
I have a conceptual question...
Would be possible to cook a mod that checks the current schedule of an npc and gives it a new schedule on fly before returning them to their standard schedule?
That is kind of what inviting a NPC to the movies does in a way, so I bet it is
hey guys, whats the $ for Alex's shocked face
I think im gaslighting myself π
it should b 6 no?
Like 6 I think
okay thanks Ive been staring at it for like 20 mins
This is from what I kinda remember in my recent dialogue craze, don't have the spritesheet to check
if it doesnt work I can always go back and edit!!
I'm trying to get all the days of the week done before playtesting first route, then ill go fill in event n season stuff
I still have to map out my events lol
interesting. I never opened the movies theather before, but I will check the code
I thought it was more like an event
the portraits are numbered starting from zero at the upper-left side, going right and down
western lecture standard
?????
????
I reported
noted ty
But itβs hilariously inaccurate too, anyone can fake that level of βproofβ
Thanks because what that gotta do with the price o rice? (Expression)
I could photoshop a sales dashboard toooo
I guess that's the $ for Alex's shocked face.

22,000 is definitely beyond the portrait limit
Alex is shookethed
I donβt think any computer has a graphics card that happy
@outer glacier
that was the daily revenue of my farm at first summer before I sabotaged myself with mods
Aw man I missed some shenanigans
eh just a spambot
Monthly mod stats time!
Stardew Valley 1.6.9+
Stardew Valley 1.6.9 through 1.6.14 were released this month! Despite being 1.6.x patch versions, these were a pretty big update for mods; see the mod author migration guide for an overview of the changes.
Compatibility list revamp
The wiki compatibility list is dead, long live the mod compatibility repo!
The wiki page was reaching the max complexity the wiki could handle. It was just under MediaWiki's 'post-expand include size' limit, most edits to the page were timing out, and editing it was enough to slow down the entire wiki server. Unfortunately, keeping the table on the wiki was no longer sustainable.
The move also comes with a few benefits:
- The JSON data is very easy to use in tools, unlike the former wiki text.
- The data has been unified into one list, so it's more intuitive to edit mod data overrides.
- The data is now validated automatically to make sure it's correct, and to detect issues like broken workarounds.
- Added field docs and auto-complete directly in the text editor when editing the data.
- Added an open-source license for newer contributions to the data.
Stats
Milestones
- SMAPI surpassed a quarter million endorsements and 6 million unique users on Nexus!
- We reached two stats anniversaries this month: we now have four years of mods by type, and seven years of web costs.
Mod compatibility
71.8% of SMAPI (C#) mods are compatible or have a workaround. That's down from 74.4% before this month's Stardew Valley updates, but pretty good for the scope of those updates.
Unique mods by type
We have 294 more mods this month.
That includes:
- +193 Content Patcher;
- +48 SMAPI;
- +29 Alternative Textures;
- +17 Fashion Sense;
- +8 Farm Type Manager;
- +3 XNB;
- +2 Mail Framework Mod;
- +1 Producer Mod Framework;
- +0 Better Artisan Good Icons;
- +0 Custom Music;
- +0 Json Assets;
- -2 Custom Furniture;
- -2 Dynamic Game Assets;
- -2 Shop Tile Framework;
- -3 TMXL Map Toolkit;
- and +2 for frameworks with <100 content packs.
Content Patcher packs
We have 9,811 Content Patcher packs.
The top six Format versions are...
- 2.0 (3,288 β 3,241) for Stardew Valley 1.6;
- 1.19 (576 β 577) for Stardew Valley 1.4;
- 1.3 (472 β) in old unofficial guides;
- 1.28 (385 β 375), latest version for a while last year;
- 1.29 (398 β 386) for Stardew Valley 1.5;
- 1.23 (361 β) for mysterious reasons.
The 2.0 format has dropped for the first time, with the newer 2.1β2.4 formats now available.
Open source
- We have 3,055 tracked C# mods, of which
- 1,879 mods (62%) have a source code repo, with
- 1,059 (56%) in a multi-mod repo and 820 (44%) in a single-mod repo.
Web costs
And finally, web hosting costs for the SMAPI.io site, update-check server, and API rose slightly to US$139/month. That will increase significantly in next month's stats, since the post-1.6.9 traffic isn't shown yet. (The graph is always a bit behind due to billing cycles.)
See also
- [Stats for October 2024](#making-mods-general message).
- Raw mod dump (61GB download) and scripts to analyze it.
- Download all open-source mod repos
And that's it for this month!
I think I lost the one from October, because that is a very impressive report
was wiki 502 directly caused by mod compat page? or was it combo of that plus 1.6 console
I think it was a combination of someone scraping the wiki until they got blocked, the mod compatibility list, and the post-1.6.9 traffic spike.
I'm curious about how many requests the website is serving to have those kinds of costs.
In the last 13 hours, it received 1 162 112 update-check API requests for 17 836 836 mods (11 535 unique) according to its anonymized stats. That only covers the update check API endpoint since the last server restart; it doesn't cover the main page, log parser, JSON validator, redirects, or other API endpoints.
+3 XNB
(sigh)
the negative counts is because the mods were removed or not updated?
Those are mods which were hidden, deleted, or converted to another type. For example, a TMXL content pack converted to Content Patcher would count as -1 TMXL and +1 Content Patcher.
Congratulations on 6 million!!!!!!!
Hmm. A bit more expensive than I'd think for that level of traffic, then, but normally I'm used to bare metal hosting and not azure/aws so that's expected.
Is bare metal a host or is that a term for bare bones?
kind of the second one but it's more specific
It's a term. You're basically renting a specific machine in a rack somewhere and handling all the software yourself, as opposed to something like aws or azure where they manage a lot of the software for you and depending on how it's set up, there's a lot more.
Bare is... bare. π
many web hosts are "virtual" hosts, which host many servers/websites on a single computer with sandboxing. bare metal hosting runs directly on the hardware and has the whole computer dedicated to a single renter/server
I think cloud hosting is a bit more expensive for the amount of traffic, but only when you don't account for the time spent maintaining bare metal servers (e.g. updating the servers, dealing with Windows Update breaking the server occasionally, manually scaling them, etc).
Yeah, not having to do that is a big value add.
I think bare metal servers are worth it for a company that has a devops team or something, but for a hobby project where every hour spent on server stuff is an hour less of sleep, the convenience of cloud hosting is worth the added cost.
I've been enjoying cloudflare workers recently for some hobby projects. I'm paying $5 a month, and even that's only because I needed websocket support.
Granted that project isn't serving nearly as much traffic as something like smapi, but it's getting a decent 500k requests per month.
Serverless is interesting, though SMAPI's site does need to store state (e.g. the mod update cache). So if it can't store it in-memory, it would need something external like Redis which would be way more expensive.
For a hobby, being able to just deploy some js onto a vaguely defined cloud and have it work and scale and stuff is perfect
Pathos sleeep important!!!
(Flashback to the MongoDB days.)
For something like the mod checker on Cloudflare Workers you'd definitely want to use the D1 SQL rather than the KV. Reads are an order of magnitude cheaper, and the latency isn't a significant tradeoff.
The KV is just... silly. $0.50 per million reads, compared to D1 SQL at $0.001 per million rows read. Granted you need to be careful with your queries but if you're, say, doing SELECT * FROM ModData WHERE id IN (x, y, z) then you're not going to be doing full table scans and reads should stay quite low.
This has me curious if anyone has done C# on Cloudflare Workers now
I love seeing these stats every month. Curious if CF will drop off at some point like BFAV did or if most packs are just straight up abandoned at this point
(Hey silvermoonchan, need a new project
)
Hiddenuntilmet is a new character setting. Where can I find all the doc for new NPC features in 1.6.9+?
I was using a dynamic token before and noticed they only load at start of game
The migration page for sure will have it, or a link to it.
Not sure if it's on the npc modding page yet
anywhere I can find a good tutorial/api about UI editing
Textures or layout/function?
I basically want to replace the nodes of the skill levels with a bar that displays your excess exp once you reach level 10. I wanna know how much extra exp I've been getting
I found the mastery bar draw code in the decompliation, so I plan to reference that
You will definitely need c# for that
I have C# experience, Duck Game and Terraria modding
Oh wonderful!
Then it shouldn't be too difficult, though tutorials basically don't exist for c# modding, beyond the basic usage of harmony (which you'll likely need for this project) and the tools that SMAPI provides to mods
!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
They already decompiled the game it sounds like
I already decomiled it
[[Modding:index]]
the framework ppl use for that is spacecore, u may need to do something about it dunno
yeah, I want to get the vanilla functionality before I support spacecore skills
incidentally
There's links there that document SMAPI's toolkit, beyond that you will also probably want to read the harmony docs, since it's different from the patching system tmodloader uses
!harmony
Here be dragons. Venture forth with bravery, young warrior, for thou art alone in these dark lands. See the Harmony wiki page for more info.
there's a vanilla thing called mastery that use up the excess exp 
is harmony the thing you use to patch unity games as well?
do u care about it for ur own counter?
I want to display each skill's excess exp, so mastery won't get affected
If you're referring to BepinEx, that uses a slightly different library called HarmonyX
The principles are similar but not the exact same
alright, sounds like I'll be able to figure it out then, thanks guys for the pointers
Any time
btw where is exp values stored in the save?
Well, you'd want to read it from the game when loaded, not directly from the file
It's somewhere on Farmer though
I know, I just want to make sure it doesn't cap it at 15000
The save is direct serialization, you'd want to unlimit it code-side using harmony
Or alternatively, keep the limit but track excess in moddata to prevent unintended side effects
I don't know if the vanilla game caps exp, so that's what I'm trying to check, because that determines how I go about my mod
Yeah so you'd want to start in Farmer.cs to see how xp is handled
alright
ok if I'm reading gainExperience correctly, it looks like it doesn't cap exp, even after unlocking mastery
Hmm for some reason my mod isn't working anymore like it did before 1.6.9 none of the mail flags are being set when shown, dynamic tokens aren't working, events and quests can't be found...
i am trying to get the fish smoker to smoke another item, i followed the guide on stardew wiki, but my code is not working :/
man i love makings mods
There's a couple isses:
-
I can't parse syntax easily when it's uploaded to discord like this, so I'll probably miss some syntax stuff. You can use smapi.io/json to upload json code in the future
-
You're trying to patch over the vanilla SmokedFish rule, which if this succeeded, it would prevent any fish from being smoked (since the rule is replaced by your smoked meat rule).
-
meat_item is not a vanilla context tag, so if you're trying to test this with vanilla items, it may or may not work depending on if you have Cornucopia installed or not.
-
In order to make flavored items, you either need to copy the vanilla FLAVORED_ITEM parameters (compare to unpacked smokedfish rule in vanilla files), or create your own flavored item rule, using another machine mod as an example. "Flavored" items that are custom (not a smoked fish, jelly, wine, etc) require a very specific format.
You have two options, one is that you can patch the specific vanilla SmokedFish rule to add meat_item as a potential tag, or you can create a new rule that outputs a new Smoked Meat item. Cornucopia does both approaches, and I'll link those both as examples
Option A, add additional accepted tag to existing rule: https://github.com/MizuJakkaru/Cornucopia/blob/main/[CP] Cornucopia Artisan Machines/machines/keg.json
Under the Enable Vegetable Wine section, there's a section where I add tags like category_vegetable, etc tags to the vanilla keg wine rule. You would do the same for meat_item, targeting the SmokedFish rule instead
Option B, add new smoked meat rule. Search for SmokedMeat on this page: https://github.com/MizuJakkaru/Cornucopia/blob/main/[CP] Cornucopia Artisan Machines/machines/deluxesmoker.json
We added it to our own custom machine, but this can be added to the vanilla fish smoker instead. We have to use an Extra Machines Config feature in order to imitate the product sprite + smoking in the output product
Has anyone ever had an issue where Nexus doesn't show a thumbnail for their mod?
In the search results and also the "my mods" page.
no, but I have had it take > 1 day for the thumbnail to update before
its a issue on nexus part, we cant do that much about it. all you can do is email them about the issue you are facing and hope they will fix it
one of my mod's thumbnail have been stuck
And became unstuck eventually, or...?
That's actually what I just tried. No immediate result but maybe it takes time.
u pressed Save right
Ah - now I am seeing a thumbnail in the search result! Good.
thumbnails are slow and weird sometimes
Still doesn't show up on my mods page, but that's less important.
Most features on Nexus are slow and weird! But this was the first time I ran into an issue that didn't resolve itself after about a day, or look different in a private window.
uuuh I know it matters little, but NexusMods on their bluesky account posted a short video with Fashion Sense's mods for a "Wicked"-like style, showcasing the clothing mods name in panels...but NOT my animated hair name, who is clearly shown used for Elphaba and Galinda's stand-in movie hair, and in action in the video, and I'm not sure how I feel about that. The name does briefly show in the FS menu, but still...
does markdown not let me use relative urls
i'm sure i've done this in the github web editor
github markdown does allow relative urls tho ive not done it with images
i'd absolutely raise this in the comments of the post or video, it's clearly an oversight and they wouldn't want to be setting a bad standard
oh it does show up on web after pushing after all, just a nuisance that vs can't pick up on it
VS is pretty bad as a Markdown editor.
i'd like to think it'd be a little better given the same company owns the git platform, the ide, and the file system
Have you worked at a company that size? It's precisely because the same company owns all that stuff that it's so poorly coordinated.
surely someone there's tried to write a readme for their github page in visual studio on windows and thought it'd be nice to use relative urls in md
i'm going to fax steve ballmer about this inconsistency
Many of us someones, yes. We just use other editors.
I now have developed the theory that focus works for Microsoft
Rider is actually pretty decent about Markdown, I was surprised to find. I think it must just be loading a webview or something.
Shhh, don't tell them I own a Mac.
Is it not possible to add custom context tags?
sure it is, all sorts of mods do 
How do you do it
from love of cooking:```json
// "Target": "Data/Objects"
"{{ID}}_curry": {
"Name": "{{ID}}_curry",
"DisplayName": "[LocalizedText {{STRINGS}}:item.curry.name]",
"Description": "[LocalizedText {{STRINGS}}:item.curry.description]",
"Type": "Cooking",
"Category": -7,
"Price": 220,
"Texture": "{{ASSETS}}/ObjectSprites",
"SpriteIndex": 15,
"Edibility": 35,
"IsDrink": true,
"ContextTags": [
"color_red",
"dye_strong",
"food_soup",
"food_spicy"
]
}
I assumed all I have to do is write a new one in the object data contexttags section but it's not working. Along with an event I made using the kindadumbautumn track not working.
I made a special order using my item and everything is correct no errors is this a smapi issue. Unfortunately since I am poor I have no Internet and very little data to download updates. so I'm on smapi 4.1.3 and Stardew 1.6.11...
a different unreleased mod of mine sets context tags via C# just fine, but i suppose that's a little different
make sure u spawn new items whenever you change this stuff
what type is your item? BC and O populate from ContextTags, but other types don't
Drinking curry, now that sounds appetizing.
Hmm does HasFlag no longer work?
Anyone knows how I remove the top bar covering the categories?
Got my event to work but I had to remove the mail flag
oh yeah it's basically a bowl of thin sauce, it matched up well enough with the farmer drinking sprite so i decided you should just gulp it down like a hippo
what mod is this?
Hmm I see what the issue is when adding context tags they have to be in parenthesis each one.
Thought it was a long string
parentheses? see the loc curry example above, it's a list of comma-separated quoted strings
no? share how you're using it
(no? you don't parenthesize every item in an array/list)
(it's pretty rare that stuff is made obsolete)
Next up, a tall glass of oatmeal with a chaser of applesauce.
u have to unsee a event to see it again did u forget
"When": {
"HasFlag": "mailStone1"
}
Then did debug showmail mailStone1 command, saved a day. but event doesn't trigger. Only when I remove the mail flag does it work
yeah that won't work
showmail doesnt give a mail flag
https://stardewvalleywiki.com/Modding:Console_commands#showmail
Does not set the letter as received or cause it to show in the letter tab of the collections menu.
you want debug seenmail
In CP, can I use EditMap to set the properties of the Object layer, for example to update TileData Action? If so how, since the object layer has the same name as the tile layer?
the Object layer doesn't exist in SDV exactly; all TileData Objects are assigned as tile properties to their matching layer
MapTiles SetProperties is the same as including a TileData Object on the matching layer in Tiled, just at runtime with CP
yes
i believe that's the page they're already on, chief 
... youre right. ^^
yeah SetProperties is the one you want to use
Thanks I think i understand
does nexus often get stuck at files > add a new file > upload > upload is being processed? mine's been on the spinner for 5 mins now
nexus not eating poop randomly challenge (impossible)
Strangely, that's one of the few things that Nexus doesn't do to me.
I wonder if it's some silly virus heuristic thing, like too many Harmony patches makes it choke.
I've ran into that uploading json content packs
it's just their server eating dirt
(I've never encountered it either.)
and I used to like, upload updates to 20+ mods at a time
id say at a rough estimate it happens to me like 5% of the time
Collectively trying to understand what Nexthulu likes and doesn't like is like some sort of Rashomon plot.
tbh I feel like Nexus has gotten worse recently
Or the elephant parable.
is there a "give atra another cup of coffee" parable
atra it's past 8pm do you really need more coffee
yes
do u like coffee or just caffine
i want to taste the delicious beverage. why would i take a pill that doesn't taste like the thing i like to drink
Well, caffeine pills mixed with a certain <censored> can also provide a nice <redacted>

(Nothing illegal was implied, just things you probably shouldn't do)
For all my skepticism on Rider, one feature I am really going to miss when going back to Visual Studio is this "nesting overview" where it shows you whatever insanity led up to your current position.
It would be all the more awesome if it could be combined with a half-decent decompiler, since Stardew's code is often a spaghetti tangle.
huh even vsc has this
It does? I know a lot of IDEs will show you the class and method but usually that's as far as it goes.
oh yea it doesnt go as deep as that for C#
This is all I get from VSCode, it's not as impressive.
but it does go that deep for json and sml for some reason
(Sorry these screenshots are so enormous... Retina shenanigans, everything on my screen is actually twice as big as it looks to me)
they look okay in all seasons except winter. ]:<
these 3 squares are the animated water?
they are! so when it came to winter, its just like that.
those tiles might not exist on winter_TileSheet
i think i may have an idea how to fix this. one sec π₯²
animals can only have 4 frames per movement direction right
Update: Fixed it. I had put the animation tiles wrong.
Hi all - I'm pretty new to trying to work on mods and pixel art and most of it has been me editing mods I have in my game for personal use. Currently, I'm trying to edit the 'rustic wood plank' path texture so that it doesn't have those eye-sore gaps when placed alongside another path - I editted the gaps out of the png in the assets folder, but the gap is still present. Is there some sort of coding I should be doing?
Can you show some pictures to explain?
Screenshots of the game, for example
And possibly the asset youβre editing
The gaps might be on the other path, but in general I believe paths only care about other paths of the same type
Regardless, Iβm just guessing without pictures
annoying gaps in question
Are you editing another mod or the unpacked base game assets?
edit of the texture
It's Elle's Seasonal Paths
The icon in my inventory in-game shows the edited path, but when placed it defaults to the shown texture
Basically, I'm just trying to get an even merge between the stone paths and the rustic paths, without the gaps to the terrain underneath. Right now all I truly know how to do is edit textures, but I imagine there's some sort of code or something I might be missing in the transfer of icon to on the ground.
an example of what i mean
if the path is seasonal, is it possible you're editing the tilesheet for a different season to the one ingame atm 
the two don't appear to match colours
Thereβs two places a path is, seems like youβve hit one but not the other
!log with a patch summary should sort it out
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.
!patchsummary
Can you do these steps to provide more info?
- Load your save and view the content that should be patched.
- Type
patch summarydirectly into the SMAPI window and press enter. - Upload your SMAPI log to https://smapi.io/log (see instructions on that page).
- Post the log link here.
Youβll want to narrow it down to the mods affecting the floor texture
I wouldnβt be surprised if you discover thereβa a hidden one
It is the one currently in game, its the spring texture and it is currently spring
!log
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didnβt occur in your last session, please load the game to the point where the issue occurs, then upload the log.
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 37 C# mods and 66 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
this may be the longest patch summary in history
Should I edit the flooring in the Terrian Features folder as well?
You need to update SMAPI & Content Patcher for a start, and I'd strongly recommend testing with a minimum mod list to make sure that other mods aren't overwriting your edits
I know, I have a truly obscene amount of mods
according to the patch summary, it's editing these assets:
Brick Floor base version (EditImage TerrainFeatures/Flooring)
Brick Floor base version for winter (EditImage TerrainFeatures/Flooring_winter)
Brick Floor Icon (EditImage Maps/springobjects)
Oh I thought they were updated π Everything in my game has been working as expected except for a weird temporary freeze when sleeping so I thought I'd gotten everything when I started playing again
so yes, you want to target the TerrainFeatures assets as well
SpringObjects is simply the icon when held in the inventory, while TerrainFeatures sprites are the ones drawn when placed
Alright let me dig those up, if thats what it is it should be a decently easy fix?
should be! just another sprite edit 
Oh dear goodness I am either in the wrong place or is it supposed to be the .xnb file?
well all assets are packed with the game as XNBs, have you unpacked them already with StardewXNBHack?
I have not
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 only thing I've edited to this point is a couple of hairs implemented through fashion sense
So I didn't have to touch the game files
it's easy enough to use, provided you're on PC 
I am indeed!
I appreciate all the help! I have found with the edits I actually enjoy pixel art, so I have considered beginning to do some custom design work but I haven't even a small clue how to implement anything or do any sort of coding.
all the implementation and code is exactly how you see it in any CP or FS mods you download, so for the most part you can copy whatever they're doing and follow along in the framework documentation to fill in any knowledge you're missing
Gotcha! Thats sort of what I've been doing.
Once I finish the edits in the file, is there anything I need to do to repack it to implement it into the game?
nope! no repacking needed, all framework mods will read the files as-is
if you're making a new mod you'd want it in a new folder and with edits to the manifest file as needed of course, but editing another mod in-place won't need any extra work or tools
Awesome! Just finished editing the terrain features file, so moment of truth
Did not work so I tried editing the rest of the seasonal tiles and the Winter file, moment of truth p2
SUCCESS!!!
mmmm... perfectly aligned kit-kats
I can at last place my paths in peace
congratulations! now you too will be bitten by the bug that makes you want to fix tiny inconsistencies in the game, an itch that soon spirals into an addiction, and finally, a hobby
so much nicer....
This all began because a hair I was using at one singular pixel missing that made me able to see the terrian move past between the hair and the face, and it drove me insane enough that I popped it open and fixed it
This turned into me making a hair shorter that I liked to match my existing hair
and now... this
How simple would it be to modify these items windows? I want to add a custom string to tell the user to save X amount of the item for future projects. I would preferably like this string to be next to the word Seed in the first and third screenshots. And next to the backpack inventory for the second image (could be more to the left near the name of the item itself so people don't get it confused with the count of the item in their inventory)
if you just want to add extra text you can postfix the functions that return the item's name/description/category text
should be very simple
look at source of this mod https://www.nexusmods.com/stardewvalley/mods/21286
that mod also exposes an API to add your own decorations, if you don't feel like touching UI code and is fine with an extra dependency
FFP informant compat when
I actually did look into it! But the public API doesn't do what I wanted 
Anyone know what exactly visible fish uses when looking at custom fish mods? I am working on one and I believe I have it working, but visible fish is throwing errors on the maps that would have the fish.
!log what errors?
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.
check if your item queries are correct
Friends, is there a way to set up an item query that only pulls items with a specific context tag, and if so, how do you format that?
I'm looking for a quick way to add my custom child beds to the furniture catalogue based on a config without having to add them one by one, and without having to enable them for random sale.
ah-ha, ITEM_CONTEXT_TAG does exist!
In the GSQs, which is a totally different page
The example for RANDOM_ITEMS shows categories, which is not what I needed
yeah about to link it lol
okay, time to add context tags to all of them in the furniture definition, which is definitely easier than repeating them all again
trying to edit a door texture but any assets i edit don't seem to be reflected in the game itself-- does anyone know in which png the bedroom door textures are located?
I'll have to get the error log tomorrow. The latest log is the one where I removed the pack to verify it was the cause.
towninterior
that's the one im editing 
Is the only way to "postfix" the functions is to use harmony the same way this user did? https://github.com/gottyduke/stardew-informant/blob/main/Informant/Implementation/Displayable/SellPriceDisplayable.cs#L25-L55
the door animations are in everyone's favorite cursors
yes, harmony postfixing
https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Harmony is a getting started guide
(it looks scarier than it is)
OH THAT'S IT.
since you're editing someone else's mod you could've just looked in the content.json for where the doors were being patched
that was my first step, but as far as i could see it was just towninterior that had the doors
but i think i fixed it-- thanks
Well, clearly I did something wrong, it's telling me that 'IS_CONTEXT_TAG' isn't a known query or alias when I try to put it in PerItemCondition.
did you put IS_CONTEXT_TAG or ITEM_CONTEXT_TAG
d'oh
I put IS, was looking at other queries and must have gotten confused
Thanks, it's working now that I have ITEM in there properly. Now I just need to try to move them around so they fit in with the other bed items in the catalog rather than being split in half weirdly.
doesn't look like there's any way to cleanly position them with the other beds that ARE part of randomsale, oh well
haha, got it! I just changed the PerItemCondition for "Default" in the Furniture Catalogue to exclude my collection context tag, and then let them appear with my other entry for the context tag instead, so they're alphabetically sorted again and all together
so what's the reason for the name Futan on futan bear, futan rabbit, ..
i've always subconsciously associated it with futon because it's all plush like that
what does it mean
https://jisho.org/search/futan literally 'to bear'? is this a joke 
my semi-last hoozah before I go whoosh.
https://www.nexusmods.com/stardewvalley/mods/29039
The Treasure Map Property: I don't super see any examples of vanilla maps using it; I suspect it allows whatever is in the map property to be dug up at a certain percentage rate? Also, does it take one entry, or is it space delimited?
Also, some trivia: bushes spawn on the bottom left corner of the bush, big rocks spawn upon the top right corner.
From what I can see, the wiki is wrong; it's a tile property for the Back layer (with the same format), and it should be a guaranteed spawn.
I'm also guessing it's repeatable*...it removes the property from the tile after it's dug up, but that would probably just get reloaded whenever the map does
Ok, thanks!!! I will attempt a wee bit of a test upon it then!!!
Can that be set in the crawling ants box, or does it have to be on the tileset?
Is there anything else I have to do to make an event load into the game for a specific NPC - other than to have the 'events' json be included and writing the event itself? I can't get it to show up in game at all ( i can send the events json uploaded to the validator but it shows up as one massive line which i'd imagine is hard to read)
Depends on which map the event triggers at. If it's a map like the blacksmith which doesn't have any vanilla events, then you'd need to load a blank event file in order to be able to edit it
If you run a patch summary for your mod though, it should give you more info about why it's not triggering
when in doubt you should generally always err on the side of sending a json, too. a hard to read json is still easier to read than no json at all!
The treasure tile property works great, then, after the first time, makes an NRE with Spacecore.
https://smapi.io/log/7528574694f14835af99086f5d251165
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 27 C# mods and 61 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
What does the 'blank event file' mean? (not used to all of this but i do appreciate the help!)
as far as im aware no vanilla events occur at the desert so that could be my problem
Yes, then definitely you will need one! π
Gimme a second, I will pull up an example from one of my mods....
{ "Action": "Load", "Target": "Data/Events/Custom_RestStop", "FromFile": "Assets/Locations/Blank.json" },
Thank you so much!
make sure your blank.json is an actual file too
it should have {} in it and nothing else
So, just make sure to have the folder right for your json, cause you might or might not be using assets/locations folder filing sytem
it basically creates an empty canvas for your edits to work on, since the game doesn't start with it
Basically the game has a file for each vanilla location with events that contains all of the code for events that take place there. Normally you add an event to that existing file, but if that file doesn't exist because there's no events in that location, then you need to create that file in the first place
Keep in mind though that SMAPI can't load the same file for multiple mods, so if you load one and another mod also loads one, both will crash and not load anything
I need to go to bed, my wife is annoyed at me, and with good reason. I lost my phone, and cannot find it, and my MiniMe is awake because I am awake. Good night loves!!!
I do remember that from the blank json i had to make for the npc itself but I was never sure why (thank you for the explanation Airyn :D)
For compatibility would it make sense to have a 'has mod' condition for mods that might edit it? I want my mod to be as compatible with other mods as possible (once I get it working anyways)
So you're best off adding a priority to it if it's for a vanilla location so that other mods will overwrite your blank file and won't cause issues, like so:
{
"Action": "Load",
"Target": "Data/Events/Desert",
"FromFile": "Assets/blank.json",
"Priority": "Low"
},
You can disable your Load with HasMods too, but making it low priority is more robust because it'll allow any other mod to work rather than needing to specify particular mods
Ohh that's very nice thank you
The other option is adding a config option to disable the load, but that then relies on people actually reading things
I know from experience that people do not read things
Would I be able to load it from the same blank json as the NPC is loaded from or should I make another in a separate folder
Yep, you can load anything that needs a blank from the same file
I'd recommend checking out Jorts & Jean if you'd like an example, since Tia loads blanks for the NPCs and for the JojaMart
How does stardrop deal with replacer files? 
I don't think it does
Assuming I don't directly use a lick of other people's assets (as in, not uploading any of their assets), do I have to ask the author's permission for crossover events and making reference to their characters and other things?
(disclaimer, I don't make NPCs)
generally it's very frowned upon to touch other people's NPCs without permission
I think that falls under "Modification permission". And regardless, why wouldn't you ask somebody to use their character. It's just good manners.
if you're making events involving them you are writing them without permission
Sounds like a gray area of fair use... Well, I guess I'll just stay on the safe side.
I wouldn't mind if someone made events but I would still want them to ask
Especially if it was a character I made
I'm extremely paranoid about someone outright stealing my assets (even though they're all sitting in my local storage or cloud, encrypted by at least two layers), but I welcomed crossovers and references, provided that it's not some massive butchering of my characters.
I think that if you like the character you are crossing over with, upsetting their writer with a "technically I am legally allowed to write this crossover" wouldn't be something you'd want, right?
It wouldn't hurt to just ask.
That's the point, I also appreciate not having an army of people coming after me, even if what I do is legal and/or not a violation of the TOS of the platform.
I've worked with modders that have a rather dramatic history in the modding community, their reputation stained. It's not something you can easily redeem from.
modders with fragile egos? never
i think it's always good to ask because then you cover the case of people wanting to be asked first, but also, it's opening the door for more solid collaboration. If you include a npc in an event or refers to them in a CT and the author is aware, they may then have some extra content when your mod is installed or something, thing that may happen if you put it directly in the mod but months after because they don't know about it.
I mean, if you find the idea of integrating them cool, chance is that the author may too!
Does anyone know where the scarecrow file textures are located? I've been looking for an hour now
craftable are in tilesheets
i don't remember if they are named big craftables or craftables
just craftables
Thanks a lot!
to be fair some stuff has different naming so it doesn't help (like the json file and the art file are not the same exact name)
they're mixed into the craftables png in the tilesheets folder
There's nothing about SpaceCore in those stack traces. The closest thing is SCore at the bottom of the stack trace, which is SMAPI (though in this case it's still not a SMAPI issue)
Going to bed way too late so can't really debug it more though
Hi, I've been trying to mod barns to have additional upgrades, one of which is a cellar
I've been stuck for a while now, I see a couple of ways to do it but can't get any of them to work fully
First idea was to create a separate location for the cellar with CanCaskHere set to true and add a trap door to the barn that would teleport you there but I don't know how to make a separate cellar for each new barn and also how to set up warps to specific barns
Second was to have the cellar be on the same map but far enough away so you wouldn't see it from the barn and then setup warps between that, but I don't see a way for CanCaskHere to be set only in one area and I don't want the whole barn to be caskable
I found a mod that seemed to achieve it by adding CanCaskHere property to a tile but that doesn't seem to work and the mod was never updated
Any help or alternate ideas would be appreciated, thanks
I'd say your analysis is correct, can't rly be done with CP only
I recently tried Market town which is a nice addition to the game. I think it would be great if one could also purchase or rent a new building to open up a shop. Maybe with a quest line to be a competitor to pierre and then maybe buy out his place or something.
Hi! im not sure where to ask this but Im new to modding and im not sure where to start. I wanna make a dateable NPC but i can't find any tutorials about it.
help would be appreciated
!modideas Are you saying this because you're interested in making it yourself? If not, this isn't the channel for suggesting ideas to mod authors out of the blue. You can leave your suggestion on the ideas github
If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas
However, this does not mean anyone is guaranteed to work on your ideaβmodders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.
There's a tutorial on the modding wiki, but if you're new to modding, I'd suggest starting with a smaller mod first. NPCs have a lot of different parts and require a lot of different modding skills, so they're pretty complex for a first project
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC
So, you're interested in creating a new character for Stardew? Good news: with version 1.6, creating a character is easier and allows for more flexibility than ever. However, NPCs are one of the more complicated things to create for Stardew, as they have a LOT of moving parts. This guide aims to provide a basic but thorough walkthrough for ea...
ooh okii, tysm!
A good place to start would be making a small dialogue or event mod for a vanilla NPC, since those skills will be a big part of making your custom NPC
oh ok ok, thank you so much for the info!
Yes I wanted to ask if this is possible to make and where I should start if I wanted to do it.
For starters, you would need to get permission from the author of Market Town to modify their work, unless you're planning to do your own separate take on the idea. If you don't know C#, then it'll be impossible, and even with C#, it's still going to be difficult.
Why would I need permission to simply build a mod that makes it possible to buy a new building in town?
Because your initial comment sounded like you wanted to expand on Market Town?
Hence why I said "unless you're planning to do your own separate take on the idea"
oh god I came back to Stardew Valley after a couple months and not only the game had a lot of new updates but I also had to update almost 150 mods xD
Hi! The "%firstnameletter%name" part should not be touched when translating right? Since I assume it's all part of the code?
(and obviously the @ which pulls the characters name)
yeah, leave that as it is
its a token
thanks! and that goes for every time a word has % around it right?
I might have screwed up once before in that case ^^
yep, check this out: https://stardewvalleywiki.com/Modding:Dialogue#Special_tokens
Perfect, thanks!!
I guess I'll use cp, some c#, tiled for asset logic and solid foundation for the custom buildings.
I guess I'll create a new asset in town that can be accessed via purchasing something from Lewis and then make upgrades available through Robin. Or something.
np!
Question (may have been asked before).
Making a new map, is my understanding correct that the game swaps out the tileset graphics for the seasons based on the map properties such as Fall_Objects, Winter_Objects etc.? And that the graphics need to be prefixed with e.g. spring_, winter_ etc.?
Thank you!
@final arch What if I want to change some tiles properties based on the season? I assume that would surpass what one can achieve with Content Packs right?
you can do that with content patcher
content patcher can edit tile properties through json code or you can patch the map file conditionally
can anyone direct me to some resources for learning how to make my own recolors? 
i wanted to recolor some mods to match my farm aesthetic but i dont know the first thing about AT or modding in general really
because you said you wanted a shop to sell players product. If you just want a building that has no purpose or simple purpose it's pretty easy. If you want to sell stuff it's complicated and it's why there aren't a lot of mods doing it
!startmodding here's the guide to get you started with modding
Morning, lumi!!!!
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.
!unpack You'll want to unpack the game's content folder to poke at the tilesheets inside.
In addition, I'd look at a few existing recolours to see how they do things
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!
hi π doing well?
Hi Lumi, hi Atra! 
do permanent buffs need to reapplied everyday?
Yes
thank you for the help!
!pixelart Bonus tip: programs to do pixel art with and some resources
Where to Start With SDV-Style Pixel Art
If you've never done pixel art before, don't stress! It's easy to pick up the basics - the key is to start small, ask for feedback, and incorporate that into your work.
To start, you'll want an art program. See a list of recommended programs in the !software command.
Here's some good beginner tutorials!
http://pixeljoint.com/forum/forum_posts.asp?TID=11299&PID=139322
https://medium.com/pixel-grimoire/how-to-start-making-pixel-art-2d1e31a5ceab
To start off, try opening an existing portrait and changing the outfit. Start small: edit a shirt pattern, change a jacket collar, or remove a scarf and draw the clothes underneath. Ask for feedback too! The best way to improve is learning how to identify what's wrong and why, so then you can work out how to fix it.
Here's more good tips from the artist of "Celeste":
General pixel art 1: https://www.patreon.com/posts/pixel-art-1-6971422
General pixel art 2: https://www.patreon.com/posts/pixel-art-part-2-11225146
Outlines: https://www.patreon.com/posts/outlines-14106192
Shading: https://www.patreon.com/posts/shading-13869731
Portraits: https://www.patreon.com/posts/portraits-8693396
SDV has a few quirks to remember too:
- Colour limits: Limit the number of shades you use - stick to six including the outline.
- Hue shifts: Rather than making shadows and highlights lighter or darker versions of the base tone, SDV shifts the hue too. Eg. a base orange will have yellow highlights and red shadows. This goes for skintones too!
- Light source: SDV uses a top-right & slightly forward light source - check the vanilla art for reference.
Most importantly, don't hesitate to ask questions and get advice from people. Have fun!
thank you!! I have some experience with aseprite so i was thinking about using it :D
Aseprite is great! I look forward to seeing what you come up with! 
thank you love 
I want to recolor HxWβs bakery shed mod to match the italian countryside buildings mod
no clue if itβll work or even look good but i want β¨ cohesion β¨
Ooooo
luckily aseprite has a handy replace color feature i just learned of so itβll be easier than i think most likely :D
If you make that, do make sure to ask Hime and Flour if you can publish it if you want to publish, they'd be delighted to see your work and will be happy that you asked them 
i probably wonβt publish it because itβll be bad but itβll be good practice if i decide to do them in the future haha
iβve dabbled in pixel art before but iβm nowhere good enough yet to publish anything i donβt think 
Oh don't worry too much about it, I'm far from a skilled artist myself but have a couple mods on my page that had art made by me in them 
Okay who made a 32kb string
iβm sure they are gorgeous 
the secret to making good art for a mod is to just make art 
indeed
what are the units in which mvmnt speed is measured?
In this case, is it a 500% over base? How does it stack with other spd buffs, does it take the base default spd or the buffed base spd
it adds extra speed to default speed, like all buffs
does fractional buff like 10% or 1.1 work here?
I believe so
I'm looking at the effect of Emerald enchantment and it doesn't make sense. I'm probably missing something. Can someone help me see it?
The Emerald enchantment effect is coded as such:
weapon.speed.Value += 5 * GetLevel();
And the effect of weapon speed is coded in MeleeWeapon.setFarmerAnimating:
swipeSpeed = (float)(400 - speed.Value * 40) - who.addedSpeed * 40f;
This means that a single level of Emerald enchantment cuts the animation length in half (200).
At level 3 the animation duration will be negative at -200.
None of this makes sense. What am I missing?
NPC Claire or me Claire
I'm pretty sure that's right, it's just that there's a limit to how fast the animation can get. I'm not sure what that is or where it's located in the tangle of farmer sprite code, but upgrading the galaxy sword with emeralds brings its speed from 8 to 23 without notably changing its animation speed. A lot of weapons have negative speed, though, so it's relevant for those.
I guess it'd be a 1 frame per tick minimum, with the animation comparing time passed to animation interval (swipe speed)
I recently got a bug report, that with speed buff 3 some of the RSV weapons dont attack anymore cus attack speed is too fast :>
Not an RSV issue per se, but encountered with RSV weapons. With enough buffs to player speed from consumables daggers will no longer auto-swing. Anyone else encountered this?
you ofc
HEHE
can you make a stupid fast dagger to test this?
What's the value of visibilityOption.DisplayName
@brave fable question with LoC, with spacecore 1.6 you can add recipes to spacecore skills viva content patcher, so why the custom level up screen?
edit: to clerify, this here isn't needed and is blocking others from adding recipes to LoC level up it seems.
https://github.com/b-b-blueberry/CooksAssistant/blob/a824ed26b159a0f213a03dcb7ffc6d19ccbf8a28/LoveOfCooking/Core/Utils.cs#L819
So what happened is that DisplayName is "(strooberry)" and then you tried to use that as a i18n key
but then your key in your i18n should also be visibilityOption.DisplayName
also if you are using c# you can't use CP tokens like i18n
If you didn't use content patcher, then u want to remove the surrounding {{i18n:blah}}
Simply pass "Berry_Display_Name_Test" to get
Also useful, esp for translations in static method
if you still end up having problems, you can post your code and I can walk you through whatever's wrong
Hey is it okay I ask for some help getting started with making a mod? I know how to add items with Content Patcher but I think I might need C# if I wanna make an instant grow fertilizer mod. I'm not remotely sure if I can even use C# to directly register the item.
anything content patcher can do, C# can also do. content patcher is just a C# mod
!startmodding i think has the getting started stuff for C# though
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.
The intended use for framework is that other people edit in the data via content patcher or something else
By the time you get access to DisplayName, content patcher already resolved the value
So you get their translation
I'm still a little confused on the "Adding an item" part. I have a basic C# mod .
You can also use LocalizedText ofc
With String/yourmod asset
Then it is in the content pipeline 
in that case, you'll wanna read up on the Content pipeline and content-related SMAPI events here:
https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Content
this content pipeline stuff is what content patcher is doing on your behalf
Here is example of what I mean
This token belongs to the content patcher mod
I manipulate it here in C# https://github.com/Mushymato/TrinketTinker/blob/main/TrinketTinker/Effects/TrinketTinkerEffect.cs#L339
I do not attempt to translate it, because it already is resolved using the content mod's i18n
your C# code is never going to see anything that says {{i18n:Berry_Display_Name_Test}} regardless of whether it comes from your mod or someone elses mod using your framework
you never need to figure out what someone elses i18n token should be
Content Patcher figures it out, and Content Patcher adds it to your custom asset
it will only see the text the other mod got out of the translation file
You only need i18n for your own text 
if Berry_Display_Name_Test is supposed to be like "BerryTag" or something, then as far as your mod is concerned, it was "BerryTag" from the moment it got it from the content pipeline
Like configs/help text or whatever
I recommend using a breakpoint to inspect the data when you get it, so you have a better idea of how it works
you will also have to use the asset invalidated event to reload the asset when CP changes it
Wren r u still suffer in gampad land 
I'm not working on it rn tbh
this is my weekend I'm going to do fun things and not horrible input mangling

I apologize. I'm feeling a lot dense. I see how to load a data file. That's a reasonable assumption for where to stick things. But where do I send said data?
if you wanna make a new item, you basically wanna do the Edit to Data/Objects similar to how you would in Content Patcher
so you'd watch the AssetRequested event for when Data/Objects is being requested
and add your object data directly to that asset
SMAPI has asset events, you will want to use those
gimme a sec and I'll explain how the asset pipeline works
the asset pipeline in the game works like this:
- something in c# asks smapi for an asset
- smapi asks everyone if anyone wants to load it
- someone ic c# says "yes I can load this asset for you"
- smapi asks them to give it the asset
- they create or read the asset and give it to smapi
- smapi then asks everyone if anyone wants to edit it
- everyone who wants to edit it, edits it
- smapi then gives the asset back to the thing that first asked for it in c#
Then, later on
- someone tells smapi "Hey, I want to change this asset, and need everyone to refresh it"
- smapi tells everyone "alright, this version of the asset isn't up-to-date any more, everyone get rid of it"
- you discard the version of the asset you have
- the next time you need it, you don't have it, so you ask smapi for it again, and the whole pipeline runs again
in other words, if you want a custom asset that CP writes to, you need:
- to load a default/empty version of the asset
- to request the asset when you need info from it
- to refresh the asset in the assetInvalidated event
and if you want to manually trigger a reset, you would use InvalidateAsset and the asset name
CP will automatically invalidate assets when it changes them, though, so if changes are only coming from CP you don't have to manually refresh
if you are editing anything with c# and want to re-run your edit code with up-to-date information
(including if you just registered an editor for an asset you do not "own")
presumably you're using this ConditionalContextTag stuff somewhere and not calling Game1.content.Load every time you use it in getDescription or whatever, so basically if you store the data in your own dictionary somewhere (for example), and then someone elses Content Patcher edit changes what theyre adding to your ConditionalContextTag asset, your stored dictionary of stuff is now out of date
so you watch the AssetInvalidated event (or w/e its called i forgor) to empty out that dictionary when that happens
and then in getDescription, when you grab a value from that dictionary, you should be checking if that dictionary is empty/null, and if it is, then you reload its data again. by calling Game1.content.Load (or the smapi helper if you want) which will then apply the new edits
it's not complicated to use, it just sounds complicated because there's a lot of steps. in principle you just do something like this
private static MyAsset? myAsset = null;
public static IModHelper helper;
public static MyAsset MyAsset => myAsset ??= helper.GameContent.Load<MyAsset>("Mods/MyModId/MyAsset");
public void Entry(..)
{
helper = Helper;
Helper.Events.Content.AssetInvalidated += RefreshAssets;
Helper.Events.Content.AssetRequested += LoadDefault;
}
private void RefreshAssets(object sender, AssetInvalidatedEventArgs ev)
{
if (ev.NameWithoutLocale.IsEquivalentTo("Mods/MyModId/MyAsset"))
myAsset = null;
}
private void LoadDefault(object sender, AssetRequestedEventArgs ev)
{
if (ev.NameWithoutLocale.IsEquivalentTo("Mods/MyModId/MyAsset"))
ev.LoadFrom(() => new MyAsset(), AssetLoadPriority.Low);
}
mhhh the premise is apparently wrong, holding C doesnt make my farmer permanently swing the weapon π€
what is best way to ignore a RANDOM 0.25 gsq
e.g. i have RANDOM 0.25, PLAYER_HAS_SEEN_EVENT Current 3900074 and i do want to check PLAYER_HAS_SEEN_EVENT Current 3900074 but i elect to ignore the RANDOM 0.25
do you want the ANY GSQ to make it an OR
Hello Stardew Valley mod gurus! I just have an itch today. Do you know if there's a way to tail game events as they happen somehow? Google hasn't presented a mod or clear answer yet. I'm arriving from a web dev angle. I though it would be neat to track what day I'm on externally or have a guide show details for the odd item I just picked up. Too many ideas. Too little time...
I haven't worked with dll files yet, so not sure if I'm actually going to create a mod or not. I'm always trying to throw things to a web server or socket server for web interactivity (I suppose this could live as a mod). That said, I'd be happy to dip my toes in if needed. I am playing with a couple mods (Speaking Valley and its prerequisites).
That's a mod
Also maybe the dagger special
But the wiki claims that each level gives +2 or +3 speed only. Is that a mistake?
(what "tail game events" means?)
Technically yeah, that seems to be based on rounding in the display. The speed displayed in a weapon's info is divided by 2 and rounded down.
Galaxy swords start at 8 speed but display "+4 speed". One emerald upgrade makes it 13 and it shows +6, the next is 18 and +9, the final one is 23 and +11.*
(Almost every base game weapon's speed is even, but I guess there's a 3 and such)
It sounds like you want to write C# code to POST about GET from some server?
(you mean +11 for the last one right)
I guess u can do that but unsure what is purpose vs just displaying the info in game
ok makes sense now
oh, yeah, switching between reference and in-my-head numbers 
yep, it seems effectively capped at 1 tick per animation frame, which varies by weapon type
...and I'm back. Pardon the web dev speak: Servers will often write to a log file with errors or other notable events. I've seen a couple of games do this (I'm not finding it in Stardew Valley yet, so maybe not). Tailing the log would be for a script to read and work with lines as they are added to the file in realtime.
!log for where it's located
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.
does C perma-swing the sword for you?
Possibly! Day 2 Spring starts. I would like to send a signal somewhere (file, server, flexible). C#? I've played with that a bit in Unity I think.
not sure what you want to do as i'm not a dev but you may find what already exists quite useful
Thanks! Taking a look
dont think SDV supports REST APIs natively 
doesn't seem like it, just emulates a normal LMB click
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.
look at the C# guide
(when smapi is installed it has a pretty very detailled log, with various info added, and mods can add more to that, so you should be able to do what you want if it's not already done)
Cool. I'll start there. I found the log in general and can see what it takes to expand. Maybe I could append to another file. We'll see!
I think I have enough to chew on for a while. Thanks all!
sounds like a fun project! good luck!
Hmm. I may need a cooler name for this mod though. I seem to need a lot of wood in the game, and I'll be creating lots of logs in the mod. Can you do better than LotsOfLogs?
ThickHeavyWood? π
EventLog. (so good!)
(also: the tutorials are great!)
LogsOfLogs, additional logging every time you get a log
also make sure it is a name easy for someone searching for a mod that does what yours does to find
League of Logs 
Call it Lumberjack, since it gathers logs
The Treasure tile property seems like it might be bugged. When using Spacecore, digging it up after the first time causes an NRE. I squinted, then removed the Spacecore. Digging them up works the first time. Then, u can pick the dirt spot, and dig them up again. sometimes u get the treasure, sometimes not. On repeat this can go for quite some time.
(Also, I unsquinted, and put Spacecore back on when Done. Spacecore is the best.)
Also, MailboxLocation doesn't seem to work.
Whahaha. (mod name not finalized, yet I can log a new day!) I appriciate the pointers today. Thanks for the assist! Now to standardize this a bit and add more event types. I'll share when it's in some state of usable.
The Treasure tile. I've looked at it before, it looked weird and not fully implemented correctly
I would not use it
I was looking at MailboxLocation, seems like it's still reading the position provided just doesn't ever use it lol
That's probably for the best anyways, mailbox sticking to the house of each player makes sense
(Yes. Because 1.6 made thr farmhouse moveable by players)
Thanks! I will see If I can remember how to log into the wiki, I am just going to make a note on them concerning what you have said above, to not mess things up, but also to perhaps guide future travellers down the road
Remind me in 36 hours to do a wiki edit
yeah, yeah you'd like that, wouldn't you
(#6393634) (36h | <t:1733216629>)
I think I should stick to something closer to my skill for right now, seeing as how I don't have that much experience making my own Stardew Mods.
ok, This is the visible fish error I am getting when my custom fish mod is active [Visible Fish] This mod failed in the GameLoop.UpdateTicked event. Technical details: NullReferenceException: Object reference not set to an instance of an object. at showFishInWater.Trash..ctor(Item item, Int32 tileX, Int32 tileY, FishTank fishtank) in C:\Users\shekurika\source\repos\showFishInWater\showFishInWater\Trash.cs:line 48 at showFishInWater.FishManager.SpawnFishInLocation(GameLocation location) in C:\Users\shekurika\source\repos\showFishInWater\showFishInWater\FishManager.cs:line 299 at showFishInWater.FishManager.OnUpdateTicked(Object sender, UpdateTickedEventArgs e) in C:\Users\shekurika\source\repos\showFishInWater\showFishInWater\FishManager.cs:line 78 at StardewModdingAPI.Framework.Events.ManagedEvent`1.Raise(TEventArgs args) in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/Events/ManagedEvent.cs:line 101
I feel like it has to do with the aquariumdata, but I don't see any issues in my pack
look like the same error i had when i did something wrong with my aquariumdata
do you remember what you did?
oh its so long ago....it had something specifically to do with me doing the swimming animation code wrong, i think
oh, there's no why, i just didn't know that was a spacecore 1.6 feature. i didn't think the spacecore skills side of things ever got upgrades hahah. glad you let me know, i'll poke that later today (probably)
Fair! Yeah I was annoyed that spacecore did didn't have skill recipe functionality when making Archaeology so I did a pull request to add it to base spacecore. I also added skill book functionality (tho you need to control the drops yourself.... Still trying to poke Kasey to do a transplier for it T.T)
And a few other features.
(its casey)
If you can't find the issue, you could compare with Not You Again's aquarium data? Mine doesn't throw errors.
And it's a pretty small mod, just five fish, so it should be straightforward to find the data.
As in the statue of reset in the sewer? Yeah did a PR for it
ohhh very nice, do i have to update for that or is it generic
i've always wanted to pr that in but cloning and building from a monolothic shared project repo is awful
Should be generic and works with any spacecore skill
Yeahhhh, I wonder how hard it would be to poke Kasey to make spacecore it's own repo
It's like large enough on its own to be one
(its casey)
probably impossible, too many interlinked dependencies
Especially since it's a mini-api at this point.
well you say mini-api but it's probably the second biggest api after bettercrafting lol
I mean like mini-api as in a mini-smapi.
It's used by so many mods for like the context recipes, skills, events.
Is better crafting used more than spacecore?
another transpiler to custom Better Crafting eventclickCraftingRecipe
someone pr me. i'm not brave enough to face my own code
my PR will add 1 method that prints "You can do it blueberry!" to the console whenever you open game
i do not open game π
do you think blueberry would make it to opening the game
someone go add spacecore recipes. good luck
https://github.com/b-b-blueberry/CooksAssistant/blob/a824ed26b159a0f213a03dcb7ffc6d19ccbf8a28/LoveOfCooking/Menu/CookingManager.cs
just tell users to use Better Crafting ez
"but what about seasoning" lol, lmao
(now you see why I more or less abandoned EMC's flavored cooking feature, having to manage four-way compat was too much)
question about event preconditions: If someone sees an event with ID, say mymod.event1, and the preconditions on that event (in the entry key) are changed, will the initial event still register as seen and/or will the same event with the new preconditions trigger even if the original event is seen?
the preconditions aren't factored in when checking if an event is seen, it's stripped down to the first value (the event id)
if the id is already in the eventsseen hashset, it won't be replayed even if the new preconditions now match
(if it didn't then events would probably replay anytime the preconditions happened to match again)
i don't know what emc is or what flavoured cooking is haha
but yah me too. dropped it like hot butter
it's a feature of Extra Machine Config that enables this abomination
Hmmmmmm

s+ rank requirements: submit pr with no bug reports immediately after
How do you feel about publicizer
thanks blueberry!
Oh I can't be trusted to iterate backwards correctly bluebs
i don't know what publiciser is other than makes public
Otoh bluebs I refactored thousands of lines of work code over the Thanksgiving holiday and only made two dumb mistakes
set.Reverse().GetEnumerator()?
Yup, you'll need it to access spacecore recipes
yeah i looked at spacecore recipes briefly and it was just too scattered and inaccessible for me to even begin to want to work on it
and then i have to put that in my own existing illegible class
and not cause new issues
(It's a joke. I once did for (int i = li.Count -1; i > 0; i++) in a JA PR
Spot the stupidity
ah the ole instant crash method
(well you could go on a reflection adventure...)
Hey. Button
Hi!
If publicizer is an option, and LoC already hard references spacecore
I see no downside
i also support the use of a publicizer
the downside is having to make the rest of the implementation
Yup.
however you made the cardinal sin of saying the word "need"
and i will always take the opportunity to both a) gently needle and b) also suggest reflection fun
I also need to figure out why my knee hates me today
ur knee doesn't really hate u. it's just pulling ur leg
I need to get some of that cartilage supplement
(needling in good fun ofc but im glad u know that at least)
My cousin also kinda suggested creatine to me
glucosamine?
oh, creatine
pretty sure glucosamine was what my mom took for years before she got approved for knee surgery
brace might also help? One of the compression ones, not the full-on immobilizing ones
And since I'll be going for more running distance in the next few months I think it won't hurt
(do dirt or rubber trails if you can, or if you can go with a road over a sidewalk do that, asphalt but especially concrete is really bad for your knees
)
it's nice if you can go running again π
Quick question is there any way to reset SpaceCore skills professions either programmatically or via a command?
Nayyyyy. Like a complete reset? Nayyyy
Like a repick
supposedly it's possible from the statue in the sewers now π₯³
Yes, go talk to the statue when you have a level 10 skill to reset profession
"now"
Supposedly it's possible to talk to people very far away using only a handheld gadget, now.
well ok, it's been possible for the last 8 months, but not the 8 years prior to that
SOU was added in 1.3, that's a bit more than 8 months. Wee bit.
excuse me how many bug reports do u think are on my mod page about my SPACE CORE skill professions not appearing at the SOU
it's more than 3
π₯
that's the total number of bug reports. it's less than that
Open or closed?
Tons! 2000!
hey yall cool people can anyone tell me wth is happing, all I did was to enable spacecore in stardrop and then clicked "Load" in my menu and this error keeps happening and i cant actually get past the mainscreen https://smapi.io/log/436d67ff40df445daefaf69a23d98a41
Log Info: SMAPI 4.1.8 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 16 C# mods and 12 content packs.
temporarily remove fashion sense, does it still happen
Log Info: SMAPI 4.1.8 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 15 C# mods and 12 content packs.
okay, my guess is that you have some character with an invalid fashion sense item
is this going towards modded help territory at this point
and instead of handling this gracefully, fashion sense just...does that
hm
did you happen to disable a fashion sense pack
i had a WIP one earlier enabled that I had tested but I refreshed my modlist in stardrop which had worked until now, but I guess it doesnt fix that anymore
Btw, if there are anymore features (besides mastery) you can think of for spacecore skills, I can try doing more pull requests
i saw a few bug reports on the FS page about the issue so I guess its a matter of time till it gets hopefully fixed. guess until then i shouldnt disable any FS packs once enabled
yup, alright, i broke out of the loop with enabling the FS pack again, thanks atra
I'm trying to port an old mod of mine to 1.6 and it says to use Game1.removeCharacterFromItsLocation instead of removeThisCharacterFromAllLocations, but the new method isn't being found
hmm yeah removeCharacterFromItsLocation is mentioned on the migration page, but it's not actually in the decompile
in any case it's not too difficult to implement it yourself
use Utility.ForEachLocation, check if the character is in the location's characters list and remove it if it is
thanks that helps
so...i assume despite being Back layer water cannot be walked on by NPCs even when theyre directly warped onto the water past any building layer tiles?
cuz i tried making a lil cutscene with my mermaid and she aint showing up
nevermind i found the issue lol
is it possible to make the player immune to only a single specific debuff?
Probably not without C#
yeah i mean in c# lol
Then probably, but I'm not one of our coders so I can't help, sorry 
probably a prefix/postfix on Buff.Apply
i will look into it
really i'd like to stop specific monsters from attempting to apply their debuffs but i have no idea how to even start with that one
do a skipping prefix on Buff.Apply that checks if it's one of the buffs you don't want, and skip the rest of the function if it is?
(skipping prefixes are kinda considered sinful, but I think it's justified in this case)
if its specific monsters, patch them out from respective monster class
it's specific monsters but only under specific conditions
custom skill buffs in buff attributes sounds nightmarish
e.g. if u want to stop the putrid ghost from doing debuff
transpile on Ghost.behaviorAtGameTick and conditionally skip basicProjectile.debuff.Value = "25";
that's pretty much exactly what i want, thank you!
I think a skipping prefix is only sinful if you're rewriting the entire original method and skipping regardless
speaking from experience I see
Yes well, some day when I'm not feeling like crap I'll make a compat patch for DTZ that actually retains the original functionality instead of just nuking it out of existence lmao
My original patch to GameLocation.performAction was also a sinful skipping prefix 
hmmm just the brief description from the mod will do :>
A new location for a shopping hub! New shops and stalls, new NPCs, and heart events! Includes boutique, supply, cafe, pastry shop, and mini stalls! Accessible by bus (or warp).
Thank you so much btw 
Blocked, blocked, blocked, none of you are free from the skipping prefix sin
please ignore all of mine
Request denied
This is one of my favorites
checked out of morbid curiosity, and goodness, 11 skipping prefixes in Machine Terrain Framework. one of them on a patch to another mod
To be fair, if you download a mod with the word "experimental" right in the name, you have to know what you're in for.
you telling me you had no more lag before no more lag
if you just wanna make debuffs not apply instead of worrying about patching every monster you can also just postfix the DebuffingProjectile constructor and change its ignoreCharacterCollisions
NML has 13k uniques and over 200 endorsements by now. Users 
Experimental No More Lag
i'll be honest, all this prefix/postfix/transpiling stuff is completely new to me, i think i have to learn a new skill to make my mod do what i want it to do
eh, there's nothing there that's that good, tbh
It's new to most people, seeing as how 99% of users are game modders.
I have questions
no more lag from an alternate universe: more more lag
its easier than it sounds, its basically just making C# code run before/after/during functions
no, more lag!
You do not ask questions of Horsethulu.
I love this
grabHorse
The funny thing is, that loop doesn't guarantee a unique horse name.
god, every time I look into the code, I have questions
just looking at it makes my head spin
you know what? fuck it
For that loop to do what it promises, it would have to run nested O(N^2)
an atra needs new fingerless gloves anyways
tbh that loop is silly as hell anyways, since it gets, like, Green Slime in there as well
why not use a guid
green slime???
Monsters are NPC's
I mean, yes, but silly and broken is sillier than silly.
do I want to suffer through a tubular cast on
jsut for the record, this investigation started with this reddit post https://www.reddit.com/r/StardewValley/comments/1h4coyf/til_that_if_you_name_your_child_junimo_their/
Display name as ID is the gift that keeps on giving (bugs).
Missing a closing } between line 42 and 44
you have a lot of missing/mismatched braces
i think. maybe only one or two
its hard to tell with the weird indenting
That's just the one I see for the error on the site
Found the missing bracket there!
the indenting of the CustomFields at the top confused me i thought it was the start of another entry
i would recommend using a text editor that will highlight these missing braces for you and also indent things properly for you
you added a brace to close your Entries but not your EditData action
Yeah, so it was two missing there
vsc is freee
!vsc
When creating content mods, it's useful to have a program that will check the validity of your json for you. We tend to recommend either VSCode https://code.visualstudio.com/download or notepad++ https://notepad-plus-plus.org/downloads/
(it auto-closes your brackets when you add them too)
notepad++ will also at least auto indent things for you if you dont wanna download vsc
I love that the VSC command also mentions N++
hey random question whats this sprite used for??? ive only found it on the side of the town and it literally is only there for the spring town tilesheet
special order boeards
It's the broken special order board
Reusing assets is video game dev 101
sprite reuse is efficient
on the tilesheet? Things got placed wherever there was room.
yeah im more so just confused on why it isnt on the other season tilesheets
since it makes that piece of debris disappear except spring
because the special order board shows up in summer 1
OHHH that makes more sense whoops
:P


