#making-mods-general
1 messages · Page 579 of 1
And they'd be put into the same language dict anyway
(And it'd still nag you about duplicate keys Actually it might not but still)
I would just provide a zh.json overwrite
This is the one which exists, not sure which approach it do
If it matters to you/the other person, even if you do have your game locale set to zh-TW, SMAPI will still use a zh.json when it can find one for a mod
Even if that zh.json is actually meant for zh-CN
thats... broken.
It's intended and seems reasonable to me.
I imagine it's better to fall back to zh than to just English (or whatever the default of the mod is)
It's true i can generally read traditional even though im not from tw/hk/etc
That is not how locale lookups are supposed to work. A locale of xx-YY is supposed to look up values in xx-YY, xx, and then default, in that order.
SMAPI will look for any translations that match the full locale (zh-TW in this case) and then it lops off everything after and including the dash and looks for those too
this sounds like what button described (zh-TW, then zh, then default)
That's what I said, no?
I guess I was unclear, I should've said it uses one as a fallback
So i think for most zh traditional readers it's slightly better to get simplified chinese than default english
That is what I meant, not that it uses it with priority, sorry
oh, I see what you're saying, Button. I read "will still use" as not a fallback
I just meant it in the sense that it wont ignore a zh just because it doesn't have the specific -TW locale and didnt make it clear enough, my bad 
Right. All good. 👍
But that's all moot if some mod hasn't specifically added a zh-TW to the list of locales, right?
Yeah, then it won't even look for that language in the first place and won't even get to looking for zh
Ok, now I have enough info to tell this helpful person what the options are. (Certainly the easiest is to just tell them they can publish a translation mod, but adding the file to my mod as an optional download seems like a good choice, too)
Thanks for the help!
Small update from earlier for anyone who was there, but the translation was taken down, and I had a brief friendly discourse with the modder where I was able to explain why I had it removed. They did initiate the conversation with an apology. Won't go into more detail than that, but the situation worked out to be fairly okay-
for some reason im really struggling making this plate look like, proper. Is this plate, platey enough? or does it just look like a poorly shadowed disk
looks platey
u want #making-mods-art for this kind of stuff i'd wager but looking at the unpacked springobjects sheet could help
yeah u could just fuck around with the vanilla plates
im trying lol, pixel art isnt my strong suit
(if this is attached to furniture i think it honestly looks completely fine and vanilla-esque)
There exists a zh-TW mod I believe?
Like it might not work anymore, and I'm not sure if it ever finished, but it was a thing
This is why I did publish zh-CN and zh-TW translations in one of my mods at some point
ah actually I did zh and zh-TW
I don't remember why, so it may have been recommended?
so I've set the "KissSpriteIndex": 32, the field I want it to be but the first time I kiss him it'll show frame 28, then correct to 32 for any subsequent ones.
Is this something other folks hae discovered? Or have I just done something weird?
hmm i've never noticed such behavior
How do naturally-dropped Holy Swords and Dark Swords already have an enchantment?
I checked the weapons.json of the game and it doesn't have anything special.
Afaik, when you also summon one sword using CJB cheats, it also wouldn't have an enchantment.
Is this related to the item dropping mechanism?
What is a circular reference
circular reference i think is like, A references B, wich references C, which references A again.
So these two swords are set to 100% always have these innate enchantments when they drop?
ive seen some kind of error related to circular dependencies before
(I kinda linked the wrong wiki page, but yeah those two weapons are hardcoded to have those on drop)
other low level weapons can have random enchantments on drop
Can ya link me the right one, please? XD
Ah I see. Thanks!
well, it does just look like you kiss him on the cheek first, then on the mouth, lol.
Heyy quick question, did amytging get updated recently with using null as a field for items that are caught like fish? (The difficulty field being null)
Used to work but I got a report that as of very recently itbisnt
Haven't investigated it yet but I will soon
you gotta provide a log tbh
hi! is there a way to make an npc only accept the bouquet after you've seen an event?
Skipped fish 'ASF_MermaidPearl' due to invalid requirements in Data/Fish: required index 1 (int difficulty) has value 'null', which can't be parsed as an integer
Skipped fish 'ASF_MermaidTear' due to invalid requirements in Data/Fish: required index 1 (int difficulty) has value 'null', which can't be parsed as an integer
This used to work until very recently, from October until judt recently
I wonder if it got harder in an update
I haven't personally its the user, in checking tomorrow
I believe so! you should be able to have a data/character edit with a when hasseenevent thing
besides reproducing yourself i would ask for a patch export Data/Fish
They got a log lemme find it
seconding what claude said. have the value in your npc's data be false at first, but have a patch to change the "CanBeRomanced" field to be true only after seeing the event.
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 6.1.7601 Service Pack 1, with 42 C# mods and 82 content packs.
This is their log
22:30:25 TRACE SMAPI Content Patcher edited Data/Fish (for the 'Aquatic Sea Fish' content pack).
22:30:25 TRACE SMAPI Content Patcher edited Data/Fish (for the 'Cornucopia - Artisan Machines' content pack).
22:30:25 TRACE SMAPI Content Patcher edited Data/Fish (for the 'Fresh Fish' content pack).
22:30:25 TRACE SMAPI Content Patcher edited Data/Fish (for the 'Shells Collection' content pack).
22:30:25 TRACE SMAPI Content Patcher edited Data/Fish (for the 'Eli & Dylan' content pack).
thanks guys!
check if the 4 mods following you do anything weird
happy modding :)
So those mods might be causing issue? I can check tomorrow and install one by one to test on my end
those mods simply edit Data/Fish after you
and potentially touched your fish
whether they did is unknown
this assumes that you arent able to reproduce the problem with your own mod alone
Ahh ty
...windows 7?
Im shocked windows 7 works with stardww valley
I recognize that NT build
eh? it says windows NT
6.1
thats normal
Ah
NT is the kernel
Its internla id, this one is windows 7
valid choice 
My favorite one toi lol
Wish it was in HD and supported still
Anywyas no more nostalgia
now I'm tempted to find the oldest working computer I can to submit a log and see if anyone notices
Hey sorry I'm sending this on XP
or submit a smapi log from like a smart fridge
Im running one new mod at a time and gonna check this out
vanilla is trapped on .NET 6 specifically because CA doesn't want to drop compatibility on older OS's that used to run stardew, even if none of the storefronts support it
it's not like you need the respective launchers of any of the online storefronts to play stardew valley given it's DRM free, so it's understandable that this isn't influencing the decision to lose compatibility with an out of support OS
annoying that, say, the doom + doom 2 rerelease isn't playable on windows 7 apparently solely due to the xbox crossplay features
Does anyone know how the Goby spawn works? It's not in the various Fish entries of Data\Locations as far as I can tell
its in Data/Location Forest Fish
look for "Id": "(O)Goby",
It's not in my file, but if it should be there, then I would assume my file is outdated?
But I do have the jellies 
This is my file. Is it wrong?
i dunno just unpack again to be safe
it was added somewhere before 1.6.8 but after the 1.6 alpha, so a fair while ago, but yeah, make sure you have the current game
wow its one of those wacky BobberPosition fish
it was a 1.6 native fish and 1.6.0 didn't have it in Data/Locations at all and was the only overworld fish that was hardcoded
Even weirder... my data also doesn't have the stonefish 
those mine fish still aren't in Data/Locations afaik, they're added by MineShaft.getFish
oh boy
switch (this.getMineArea())
{
case 0:
case 10:
chanceMultiplier += (double)(baitName.Contains("Stonefish") ? 10 : 0);
if (Game1.random.NextDouble() < 0.02 + 0.01 * chanceMultiplier)
{
fish = "(O)158";
}
break;
case 40:
chanceMultiplier += (double)(baitName.Contains("Ice Pip") ? 10 : 0);
if (Game1.random.NextDouble() < 0.015 + 0.009 * chanceMultiplier)
{
fish = "(O)161";
}
break;
case 80:
chanceMultiplier += (double)(baitName.Contains("Lava Eel") ? 10 : 0);
if (Game1.random.NextDouble() < 0.01 + 0.008 * chanceMultiplier)
{
fish = "(O)162";
}
break;
}```
I think thats the only meaningful GameLocation.getFish override left too
Hey someone did make a framework like just today for these guys
I still have a (void) prefix in EMP that redirects getFish somewhere else, but I consider the whole feature deprecated at this point 
pre-1.6 map/tile property location swaps
This makes me wonder if I should scrap all the work I did so far to try to edit the data dynamically, and instead just override GetFish() everywhere and point to my own data.... 
that tends to make any fish detection UI mods wrong about everything, but it's a lot simpler to implement
I know at least one of them does actual simulations of like 1000 fish to figure it out
that cause me issues in the past so I had to code dive them
I think you should do data stuff when you can
I wonder about VisibleFish though. It's a popular one that I think my players will specifically want to play with
iirc that also just polls getFish to populate, but it's been a while since I needed to poke around in it
one of the UI mods uses an API method I added to get the correct location for EMP mods, but I forget which at this point
(but again, it's pretty much deprecated & mostly used by some custom farms)
Just for the record I'm trying to implement randomizing fish stats in Archipelago.
So I have a whole roll, from the server-side, of where/when/how every fish should be available, and I need the mod to execute that
So I have data like this and need to convert it to a game that behaves according to it
Well the mines r pretty doomed u gotta patch that
so I am now realizing I'll need to override getfish anyway, to handle not only [not getting mines fish in the mines], but also to handle my own fish in there
so if I'm going to override anyway.... I feel like editing data AND code is overkill
it's going to get needlessly complex and I should centralize the code in one place only
For most of these other ones you can probably just replace Location.Fish dw about it 
also I think it would be possible to just patch Mineshaft.GetLocation to just not do hardcoded behavior and use GSQ to reimplement those fish in data
Well at least the crab pots code works
You can either set them to reject the bouquet or have their datability set conditionally. Note that the latter doesn't work well in multiplayer.
Yay, farmhouse building skins mod complete and posted. Now I sleep.
okay so
This works,
This does not. It says the tokens are not tokens.
specifically the SPouseAnton/SpouseKiarra bits are breaking
but they don't... change... between these two versions
why... why would.
maybe they’re not ready? what does patch parse give you
But the first one throws no errors and works fine, why would it be ready for one but not the other? and give me a minute
Valid and ready
wait hm.
idk the intricacies of CP enough to know, it’s just the only thing i could think of
well it yelled at me when it wasn't ready
That's how I knew my poly tokens were messing up earlier
does it work without that last one?
No, wait, it says the token is unready, WHY IS IT NOT READY? The only difference is the hasmods
why would that damage the function of my tokens?!
you're going to have to be more specific about "that last one"
without this
presumably the CMCT token, but that seems to ready up in a gameLaunched event
glancing at its code
I mean, yes, it works without that, look at the first example
i mean with the has mods but not that
I guess I can try, but without that, not much of a point to this patch
no but it would see if its specifically that or smnthn with the hasmods
worth a shot to narrow it down
hang on let me make the change to... the last one so it's easier to see
(try parsing both tokens, I am wondering if your second needs something before Reimagined)
it's wild if a different token being broken makes an unrelated token malfunction though
nope that still fails
editdata for the farmhouse, any way of just.. not having the chimney smoke apear? speficifcally for the final upgrade? completely is fine too 🙂↕️
the parsing or the narrowing down
so I'm pretty sure you can't HasMod your way into making a token optional
"HasMod |contains=Fake.ModID": false,
"Fake.ModID_FakeToken": true```
=
`[Content Patcher] Ignored (CP) Test Pack > EditImage LooseSprites/emojis: the When field is invalid: 'Fake.ModID_FakeToken' can't be used as a token because that token could not be found.`
iirc CP validates all of the conditions before checking them, and either way, it doesn't know that CMCT is where that other token comes from offhand
what is iirc 🧍♂️
if I recall correctly
oh okay
I have all of this inside a hasmod specifically for that other mod by the way, and a false dependency on it
and on CMCT
This has worked before and didn't mess up all my other tokens
assuming you mean this is in an "include" file that requires CMCT, CP might still be validating the When conditions inside it anyway?
I imagine there's a workaround for this but I'm not sure offhand
whats the difference between this one and the time it did work? 🤔
investigating that now
You might be able to null the chimney position metadata if it's not a hardcoded draw? You'd need to do it for both the base ChimneyPosition and ChimneyPosition 3 for the farmhouse entry.
yes that worked thank you
"Format": "1.4",
"ConfigSchema": {
"rainbowcarrot": {
"AllowValues": "true, false"
}
},
"Changes": [
/* Rainbow Carrot*/
{
"Action": "EditImage",
"Target": "Maps/springobjects",
"FromFile": "assets/carrot.png",
"FromArea": {
"X": 0,
"Y": 0,
"Width": 16,
"Height": 16
},
"ToArea": {
"X": 224,
"Y": 288,
"Width": 16,
"Height": 16
},
"Enabled": "{{rainbowcarrot}}"
}
/* Rainbow Carrot Description*/,
{
"Action": "EditData",
"Target": "Data/ObjectInformation",
"Entries": {
"446": "Rainbow Carrot/565/-300/Basic -18/Rainbow Carrot/A fragrant carrot colored with all the hues of the rainbow."
},
"Enabled": "{{rainbowcarrot}}"
}
]
}``` what's outdated in this code besides the format?
Data/ObjectInformation doesn't exist anymore, it'd need a differently formatted entry in Data/Objects
i'll chime in and say that the item ID should be replaced with {{ModId}}_RainbowCarrot, the display name should be updated to use {{i18n:key}} or [LocalizedText key]
i'd maybe also avoid conditionally patching in an object data entry and instead simply prevent it from being required in collections using fields in object data, but that's a non-issue now that items without data become safe error items
(Also, Enabled isn't a thing anymore.)
so this works btw.
screenshots of text 
hey, free syntax highlighting
I mean, my entire mod's uploaded if anyone wants it :V
let me see how much of it is needed to look at and see what this is going and I can get it in the validator, it's just several part of it
https://smapi.io/json/none/6a1cf82c1aa7489da4ac51e129556e45
this one works.
also free syntax highlighting with ```json ```
https://smapi.io/json/none/fe541e163b4e4ffaade2e13b4359c3a0 This one breaks everything it touches
https://smapi.io/json/none/4953ebbb0afc47eab1a9a8e09e this is the Ridgeside one with all the same tokens that works
https://smapi.io/json/none/cea7ef094d114c18b942cdb0de712cb5 this is all my tokens, if that helps
I realise this is probably a stupid question, but how do I properly load a custom asset from my mods folder? I've tried following tutorials and it is. Not working.
What I currently have is
"Target": "{{ModId}}/pen",
"FromFile": {{ModId}}/pen.png
According to smapi that filepath doesn't exist? But I can't figure out what the file path is supposed to be. The image is just in the mod folder, for the record, no subdfolders.
(oh yeah, I don't remember even seeing that before)
and my includes, just my content file in general
just wanted to pop in and celebrate that I managed to put together a transpiler for the first time in several months so I had forgotten lots of how to do it... and this was on draw code, too!
what tutorials have you been following?
ive not seen something like this in one of them before
I changed CMCT to a proper requirement and that didn't change anything, it's still all broken. I cannot tell the difference between my CMCT tokens that work and the ones that apparently break everything except that it's for a different mod
https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_New_Crop and https://www.nexusmods.com/stardewvalley/mods/43811?tab=posts
They were the first that kept coming up when I searched for it.
Last edited by AtlasVBot on 2025-09-13 18:56:15
A simple 1.6 guide to adding a new crop to the game using Content Patcher, adapted from 6480's Mouse-Ear Cress example.
ah
hmm, well
for your fromfile, the file path is supposed to be where your image is located, in regards to the main folder of the mod you're working on.
i can give you an example
"Action": "Load",
"Target": "{{ModId}}/Objects",
"FromFile": "assets/Objects.png"
},```
this is the patch where i load in my assets file
the fromfile is "assets/Objects.png"
inside my mod folder, i have a folder called "assets" with my image in it
if my folders were to be organized like, say this instead, my fromfile would be "assets/Items/Objects.png"
the {{ModId}} token will resolve to whatever your modid is
so the reason smapi is saying it doesn't exist is because it's expecting to find pen.png in a folder named the same as your modid
if your modid is something like my.coolmod then inside your folder, you should have
my.coolmod
pen.png
instead of an assets folder
im not sure if i explained all of that properly 😅
No, it does make sense, thanks. I made an asset folder and used that and that seems to have fixed that issue. I have a new one now lol
It now tells me the asset doesn't exist??
is your png named pen.png
Ya
could you send a log/json?
better yet, upload the json to smapi.io/json
It didn't find any errors.
it's fine if there's no error, sharing it is so we can see it
there's something you may have missed that someone else might catch
How do I do that?
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
The only thing that works is removing ALL the CMCT config bits. It is not the hasmods. but this is a thing I have done multiple times before and the sole difference is the mod I am trying to refer to. I am going to chew this to pieces.
and can you share the log too?
!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.
If you want, you can try with this preview build of CMCT 2.0.0? It should be completely backwards compatible (should) and no functionality should actually be changed, but it may provide more helpful warnings/logs if something is going wrong. It also may not though.
(If you do try it though, don't keep this one around in your folder after you're done with it.)
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24354 on Windows 10 (10.0.19045.0), with 64 C# mods and 48 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
hm, ok my guess is that you loaded your asset to {{ModId}}/pen, but in your content.json, you set the texture to
"Texture": "assets/pen.png",, when it should match your target
So if I try to patch parse, for example {{Spiderbuttons.CMCT/Config: Vlgor.RSV.ReimaginedInterior, Reimagined_LogCabinHotel2rdFloor}}, then it tells me there's no content pack registered for ID Vlgor.RSV.ReimaginedInterior
which is odd because I am looking at it.
(and yeah 2rd looks like a typo but I double checked that)
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 19 C# mods and 10 content packs.
Oh, you haven't quoted it (and are missing the last })
Heck
Then it shouldn't be CMCT that is the issue
Also, when parsing dynamic tokens, you do need to pass in your unique ID
It's not a global token. CP has no way of knowing what dynamic token you're trying to look at
Oh I see
Changing "Texture" to " {{ModId}}/pen" seems to have fixed that error, but now it's showing up as a sort of gray bar in game instead.
So it'd be patch parse {{SpouseYsabelle}} MV.SpousesMoveHouse
Correct
That says it's valid and ready too when I get ingame. Why is it only throwing errors on start with this one patch and not others?
Are you certain you have a manifest dependency on the correct UniqueID for Reimagined Interiors?
Yeah, I copypasted it over
And that manifest is the one being used in the mod folder? (i.e. it's not only edited in some dev folder and wasn't moved over?)
did it again when things started messing up. It's got a number in it for a letter so I wanted to be sure
Yep, I am using that manifest
@ivory plume Greetings, mind if I DM you with some questions about the wiki?
More specifically, a userpage creation. I'm documenting the way Item Delivery quests work (might expand later), and I have the page with all the tables ready - except I can't create it due to new-user category. It would seem higher perms are required to edit other user's page as well, so here I am.
I figured it out! SpriteIndex needed to be zero 😅
(thanks for helping BTW, whatever's happening is way over my head here)
ItemDeliveryQuests are already documented on the Quest data page, no?
I haven't been able to spot anything either, and it's a bit late in the night for my brain to do any more troublesome debugging (especially when I can't just tinker with the things myself) So I'm not sure I'll be much more help either tonight
No worries, it's getting late for me anyway. Maybe sleep will give me ideas
where are the items sprites stored in the content folder?
I do not see the items requested nor the conditions for them on that page.
Oh, you mean the more hardcoded bulletin board ones, I see. Since those aren't content-editable I'm not sure what the protocol there would be in the modding namespace so I'll leave it to Pathos then, apologies and carry on
Yeah, more of a comprehensive list of anything which may be requested
Tbh I feel like that would be better off on the normal wiki page for Quests, though I say that as a user and not as anyone with actual authority on it. Fair warning though that Pathos isn't the wiki admin either, Margotbean is, so it may end up being up to them instead
does anyone know?
(I will stop talking on it now though since my words are largely irrelevant and will instead go to bed
)
!springobjects
Most vanilla object sprites are in the Maps/springobjects asset. See a table of springobject sprites by index.
Some newer object sprites are in TileSheets\Objects_2. You can check the entry in Data/Objects to see where its sprite is stored; SpriteIndex is the position, and Texture is the asset name (defaulting to Maps/springobjects).
That is my intention, yep. A subpage under Quests, most likely, to avoid bloating the main one. There's no dedicated wiki channel here, so I'm just bringing it up in a channel they frequent (plus it's closer to mods with all the code digging anyway).
How can I see the x axis and y axis for a sprite sheet
using some kind of image editor that lets you see the coordinates of your cursor
any recomendations
!software
Here's a list of software for pixel art and JSON text editors we recommend: https://gist.github.com/ishanjalan/c8efb21afa21f74a052293176db107f7
For making SMAPI (C#) mods, see the Requirements section here for which IDE to install https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#Get_started.
even windows Paint will show you pixel coordinates, pick from any (except krita)
Oh im using pixel studio
I cant find the coridants on pixel studio
Hey everyone. I'm making a small map change to a mod using ContentPatcher (EditMap, MapTiles list). To add tiles to a layer, I need the SetTilesheet field. How do I specify it? What is it (string/number/path)?
Off-topic but your name is diabolical
there's a description of it here, but no direct example; from what I can tell, it's the string name of the tilesheet you want to use in the target map, like "untitled tile sheet" or "Paths" in a lot of base game maps
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editmap.md#edit-map-tiles
so presumably something like this
"Action": "EditMap",
"Target": "Maps/Farm",
"MapTiles": [
{
"Position": { "X": 72, "Y": 15 },
"Layer": "Paths",
"SetTilesheet": "Paths",
"SetIndex": "18"
}
]```
It worked, very grateful
Can I use...
"When": {"HasFlag": "FjorlagRond.MWBRM_Floor40"}
...to check whether a mail from my mod has been received?
When making my custom crops recently I spent 2 days going nuts because I didn’t realize the first two seed sprites don’t count for days in phase. If I somehow managed to miss where it says that on the wiki please correct me. Otherwise I was wondering if it would be okay for me to add that info to the days in phase block?
yes, though HasFlag detects mail flags in all 3 possible states (queued for tomorrow, unread in mailbox, and already received)
yeah, it's not really explicit on the crop data page that it's only for "growth" phases and doesn't include the seed state
the comments here by 6480 and/or chu seem to phrase it better
https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_New_Crop#Adding_the_Crop
(whoops, wrong section anchor)
Oooh for sure. I sometimes forget about this modding wiki for some reason and usually just use the data pages. This is definitely more clear and I’m gonna bookmark the wiki 😅 ty!
Thank you!
what is space core used for?
a lot of miscellaneous features that the game doesn't make possible with just CP
there's an overview here in no particular order
https://github.com/spacechase0/StardewValleyMods/tree/develop/framework/SpaceCore#readme
What does it mean to opt in?
in general, or to something specific?
guys im wondering
like if im playing co-op
and im on mobile while the host is on pc
if they modded the server
would it work for me?
@royal stump
you're in the wrong channel, but no, there's a very high chance that it won't work.
you want #modded-stardew , btw
ah okie ty!
When using EditData, is it possible to add multiple entries at once? Like without specifying each entry individually if they should all get the same data, similarly to how you can apply the same patch to multiple targets at the same time.
On the nexus page it says I can opt in
im pretty sure that's talking about their dp program, which lets mod authors get donation points that they can then use to exchange for rewards
Will it make my mod ask for donations when people download it?
you'll just accumulate them as more people download your mod
Should I turn it on?
if you want dp, sure
yeah, the "opt in" page is about those points, there should be an FAQ link and such there
direct donations & those pop-ups about donating are a separate thing, on the "permissions" tab of your mod settings
do I have to type in my mod id here or do tokens work on tiled
you'll have to type it manually, those {{}} tokens only work in CP's content json files
As you were replied above, Tiled doesn't understand tokens, so you need to manually type the map name
Since it's only the json things
thats why i do my warps in a json
for some reason it keeps warping to itsel
instead of the location I'm trying to warp to
did you perhaps set the arrival tile where the warp out is
no
then maybe you made a msitake typing the location, what does smapi say
So if people download my mod will it ask them to donate if I have opted in for the mod rewards
it took me forever to design these dang sony and xbox button icons
Nexus has a whole FAQ dedicated to donation points if you want more informations: https://help.nexusmods.com/article/112-donation-points-faq
Contents What are Donation Points? How much is each Donation Point worth? Where do Donation Points come from? How do mod authors earn Donation Points? How are t
is this how the code for adding spouse room and a patio should look like? I read the wiki but they didn't really have an example
🤔
Map source rect is wrong
taken from vanilla, so ignore the "null" in the map asset
"MapAsset": null,
"MapSourceRect": {
"X": 0,
"Y": 0,
"Width": 4,
"Height": 4
},```
and i think your map asset in this case should be whatever you loaded the tmx to
(idk i dont make npcs who have spouse rooms XD)
Oh boy just got a bug report on my Nexus page with a user seeing translation keys exclusively.
Mystery no translation... This is gonna suck
did they say what thing they're seeing it on... or no
"animal names" was how they described it. But not where it's showing up wrong
I've asked for logs and more info as I know it looks correct with animal bazaar and such
Who knows if I'll ever get the info tho it was posted the third.
Getting real tired of people reporting my project for a bug that's because of pokemon ranch and not my patch...
Irregular animal sprite sizes just cause issues all over the place.
Hello peoplee. I had a question. Again. Is it possible to make a npc who you can marry and roommate? Does that make sense-? I dunno. I suppose what I mean is if you select a dialogue option, can it change if you can romance the npc or if they're just a roommate?
Also should be possible
https://www.nexusmods.com/stardewvalley/mods/44679?tab=description
yay update out, visually shows you what buttons you have assigned, fixed a buncha crashes less go
Sen from Lurking in the Dark is a good example of an NPC who is both a roommate and romance option.
Oooh alright! I'll have to play through the story then. (I've never seen the mod before, so I have no clue what it's about)
@stoic chasm You leveled up to Farmer. You're now a prettier shade of blue. Thanks for sticking around!
that still didn't fully work :'/ Did I mess it up somewhere?
https://smapi.io/json/content-patcher/0f4433aa52d84ddb9d6a21e8d418d0c8
hmm
Is there a way with content patcher to have a fish already exist in a fish tank in like, a map or something? or does that require C#
I don't think any mod adds that feature
sadge
is this a valid input? I can't find any examples
It is, just remember the comma after the " if it wasnt cut out of the image
yeah it's there
https://stardewvalleywiki.com/Modding:Dialogue#Specific_topics
cc_Begin and other specific topics are here in the wiki if you wanted to ask if it was real :3c
ok thanks
System.ArgumentException: Can't apply image patch because the source image is smaller than the source area. (Parameter 'source')
at StardewModdingAPI.Framework.Content.AssetDataForImage.PatchImage(IRawTextureData source, Nullable`1 sourceArea, Nullable`1 targetArea, PatchMode patchMode) in /home/runner/work/SMAPI/SMAPI/src/SMAPI/Framework/Content/AssetDataForImage.cs:line 42
at ContentPatcher.Framework.Patches.EditImagePatch.Edit[T](IAssetData asset) in /home/runner/work/StardewMods/StardewMods/ContentPatcher/Framework/Patches/EditImagePatch.cs:line 166
at ContentPatcher.Framework.PatchManager.ApplyEdits[T](ICollection`1 patches, IAssetData asset) in /home/runner/work/StardewMods/StardewMods/ContentPatcher/Framework/PatchManager.cs:line 632 ``` how do I fix this in my mod?
As it said, your asset is the wrong size
Use a fromarea and toarea
my asset is 16 by 16
We can't really help you more without your json, the error can mean a lot of things
what size must it be?
It just means that the area you're trying to replace is bigger than your asset, so you probably have some mistake in your EditImage change
"ToArea": { "X": 225, "Y": 320, "Width": 1, "Height": 16 } ```
oh wait it was 16
try with "FromArea": { "X": 0, "Y": 0, ...
there where it says 1
0-indexing pog
it says my content pack has loaded now but nothing is replaceing the rabbit foot?
well it replaced the beet seeds?
Then your ToArea is wrong
Should be able to select the right zone there
is your ToArea width still 1?
Why are ur pixels huge 
it told no not anymore
i zoomed in alot
I put in the coridiante it gave me tho
For me the coordinates for the rabbit's foot are X:224 and Y:288
ty but where did you get this info?
Your software doesn't seem to be very precise 🤔
i feel you have something going on with your sprite size that is not showcasing precise coordinates
what software do you use
aseprite
yeah the coordinates 225,321 don't appear in the rabbit's foot sprite, you've either misaligned your spritesheet in the canvas, or your software's all funky
Im using pixel studio so Im asuming its on my end
well tysm
I'm trying to figure out the minecart system so I can add my own. I found information about tile properties and the Action MinecartTransport, but it only opens a dialog box for moving between locations.
Question: If I want to add my own minecart, do I have to implement it in code, or are there other ways?
is there a property to manipulate the transparency of the npc, I'm trying to make them fade in over time.
maybe you could do something with content patcher's new mask patchmode https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editimage.md
are these heart event or date specifications
no heart level
why is it only even numbers?
because most vanilla heart events are structured that way
dialogue at specified heart levels
You can do whatever, but usually it's a way to show a "transition" to a new "friendship level" after hearts events
ok thanks
so if you want specific dialogues for each heart level, you can
also the little indicator at the bottom of an NPC changes each 2 hearts you have with them so it's just a way of structuring stuff
this won't work in my case but thanks anyway, I think I can override the draw function for the npc instead.
yeah this works
public override void draw(SpriteBatch b, float alpha = 1)
{
base.draw(b, 0.5f);
}
Thanks a lot! It was very helpful
No problem 
Not exactly for all level, mind. The only eligible heart levels for dialogue keys are 2, 4, 6, 8 and 10.
Oh really? I thought this was just a convention
Naw, Content Patcher dialogue keys are not that flexible.
If you did want dialogue for a specific odd numbered heart level, you would likely need a workaround, such as a conversation topic
What about dialogue for heart levels 12 to 14?
that's marriage/roommate dialogue and you could do a "When": { "Hearts:NPC": "12" } to target 12 hearts (i think)
is it possible for an npc to sleep sideways?
what does the ediblity mean?
You'd need a framework that allows you to make a sideway sprite
probably with spacecore's big animations
It's what define how much health & energy the food gives you iirc
hmmm, is there a guide somewhere for this?
idk what spacecore even is
space core is a framework mod which gives mod makers the option to do more stuff, it is like top 5 most downloaded mods for stardew
cool thank you, ill probably try to figure that out
@final arch Is there a github for your VisibleFish mod?
or anywhere else one could read the code?
there is not
Alright then I guess I can ask, hopefully so I can avoid having to decompile it.
Does it work based on the data available in Data/Fish and Data/Locations, or does it simulate fish catches by calling GameLocation.GetFish() directly?
I'm trying to figure out a way to make sure your mod, which is very popular, still works with my mod, which will completely change the conditions for catching pretty much every fish
I basically have a copy of GameLocation.GetFishFromLocationData().
I couldnt call getFish() because it used to have lots of side effects, seems most have been removed besides the Island one (spawns walnuts on the Island,
so yeah I use the LocationData
So if I add patches to GetFish(), it won't work properly, correct?
I originally wanted to do it by editing data
I got through like 60% of the work. Then I was informed that the mines fish are hard-coded and not in the data. So I need to patch GetFish() regardless. So now I'm considering moving everything to GetFish() to avoid having to juggle two sources of information
but losing access to VisibleFish would hurt a lot of players. Not only is the mod amazing normally, but it'll be even more valuable in a world where the fish sources are all randomized and players are trying to find the fish
so it seems very important that I care about compatibility with VisibleFish
I know there are a handful of alternatives, but they are less popular as far as I know, and might have the same compatibility issues anyway
so I figured trying to be compatible with the biggest one would be good enough. Then it'll either be compatible with others as well, or at least I can tell players "Use VisibleFish instead"
is it random daily? or per run? if you stay with editing the data (and just use the patch for the mines specifically) itd work with lookup anything etc too
per the whole save file
it generates a random roll at the beginning (Attached an example of such a roll) and then my mod makes that the reality for the whole run
it randomizes multiple aspects, most of which are relevant for VisibleFish (weather, season, location, and also maybe down the line, time of day)
Kaito i think u should still just do the data edit it'll cover most cases
Maybe go ask in 1.6.16 about dehardcoding mines fish too
Im leaning towards data edit too, solely because people will expect Lookup Anything to work probably
if you absolutely want to it otherwise I can maybe think about making an API or so for VF
I'll see if I can get data edit work
Given the nature of what u want
I'd do a Late + 100 edit that replaces the Fish list entirely
I'm not rly sure how archipelago do modded fish but final effect is that you control how stuff spawns right
mine fish is only gigahardcoded for level 100
adding fish to 20 and 60 via data is fine
Well let's say player has a mod that adds the ghost fish to secret woods
Do you wish to preserve this or should the server randomized data win over mod behavior
https://smapi.io/json/content-patcher/c01364e590404d99b74f0c76c79c5234 what's does the error message mean?
you need a comma after the } on line 10 :)
ty
ofc!
vcs could solve half of these issues esp for me 😭
I would say the mod should overwrite it, but like... I don't think I care much either way.
That would be considered a mod conflict with undefined behavior. If they softlock through such a mod, then we'll just tell them to remove it
Well you can choose here
Either do your edit really early so that mods can apply edits on top or do your edit really late and toss away edits from others
grr we hate proprietary account locked creative software
(edit here meaning AssetRequested stuff)
Your json is still missing a }
Please use something that can hint these things for you
VSC is a life-saver there
"Format": "2.9.1",
"Changes": [
{
"Action": "EditImage",
"Target": "Maps/springobjects",
"FromFile": "assests/carrot.png",
"FromArea": { "X": 0, "Y": 0, "Width": 16, "Height": 16 },
"ToArea": { "X": 224, "Y": 288, "Width": 16, "Height": 16 }
},
{
"Action": "EditData",
"Target": "Data/Objects",
"Fields": {
"446": {
"DisplayName": "Rainbow Carrot",
"Description": "A fragrant carrot colored with all the hues of the rainbow",
}
{
]
}```
like this
I genuinely don't understand why am I getting an error, am I going crazy at this point 😭
https://smapi.io/json/content-patcher/e7474a0ea4a74d7e88ff694615fad5b0
https://smapi.io/log/1cf39327ecb944a88a93844bba54a212
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 10 C# mods and 2 content packs.
im testing a mod to change the skin of npc. it works but somehow only work on the portrait. why it doesnt work on character ?🙏
https://www.nexusmods.com/stardewvalley/mods/44309
When I was completing the game on Steam and getting 100% achievements, I had a problem with the "Fector's Challenge" achievement 🫠
I'm think many others have had a similar problem... And I have a solution. Or at least a "compromise" for those who don't want to cheat. Soooo... If you still haven't completed it, you know what to do 
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
assets/dialogue/Marriagedialogue.json
This file is not valid json
eyo, new to sdv modding - is it bad ettiqute to submit a pr to a mod that has its github publically listed? I added a compatbility patch for UI Info Suite 2 Alt
Well this works pretty well
Well if the github isn't public then you wouldn't be able to PR in the first place 
trueee - I just meant listed lol. There are some mods that don't have the repo listed in the description but can be easily found by searching on github, I assume those mods are keeping the git off the description for a reason lol
idk why though :'D
My normal dialogue is done the same way and it works just fine
- Put your marriage dialogue into json validator
- It's not actually recommended to do it like this since you won't be able to use tokens
I did put it into a validator and it didn't really give errors, what would be a different way of doing it then?
Load a blank.json and then use EditData to populate the thing
not usually. often times people just forget to put in a link
github repos are private (ie. not visible) by default, so if you can see it, it means they chose to make it public
ooh alright, I'll try it like that!
can I edit both normal dialogue and marriage dialogue into the same blank.json or do I need to make a new one?
Your blank.json should be a JSON file that only has {} in it
You can Load the same blank.json to multiple targets, though, to create the placeholder file for your new data
You would do your EditData entries in your content.json still and just use the same targets.
yeah that's what I wanted to know, I'll try that out, thank you ^^
yep, that fixed all my issues, thanks so much!
Want this to be showcased?
sorry, im new to modding . i dont know much. what is the app use for?
It's used to share your json to us so we can help you further
Characterd should be Characters, you have some mispellings there
Yeah
More views = more feedback and suggestions
oh😂 im stupid. thank u guys🙏
Thanks
Donee
Oh, I thought the bot was taking the description from Nexusmods, not my message. Ok, never mind
Hmmm, yeah that's something I always forget too
But I hope it looks explanatory enough 
transpiler questions... if I try to match on a single opcode/operand pair and it is in the method, why would CodeMatcher not find any match at all? (if context helps, the method is GameLocation.drawDebris and the IL I was trying to match was CodeMatch(OpCodes.Stloc_S, 20) which is there in ilspy and if I just print the IL from the CodeMatch instance, and it also happens to be unique)
(I already have a working transpiler from matching another bit of IL, so this is just me hoping to learn in this case)
You may need (byte)20
Stloc_s <- the S stands for short, the short form of the opcode
... ok, that makes sense.
I would not have thought of that soon at all...
well, that still fails to find a match
new CodeMatch(o => o.opcode == OpCodes.Stloc_S && o.operand.ToString() == "20")
also did not work, although maybe I did the operand check incorrectly - first time doing a predicate match in a transpiler
Maybe it's time to debug step through the whole il lol
I also think it's probably ok to not fret too much about matching the value here
LocalBuilder not LocalVariable
If u can include enough of the surroundings
alright, this matches: new CodeMatch(o => o.opcode == OpCodes.Stloc_S && o.operand is LocalBuilder l && l.LocalIndex == (byte)20)
thanks - this gives me more stuff to learn about and work from
yeah, the transpiler that I actually have uses more surroundings in a different part of the method, but I wanted to learn more about why what I thought should work was not working
Hi @spice inlet - hope ping for ub question is ok? I was wondering if there is a graceful way to bulk reset incomplete bundles on behalf of the player to avoid them having to run multiple console commands after a major update? I'm rubbish at balancing my bundles and price migration is getting messy (totally my fault!) so was hoping to offer a one-click reset for any incomplete ones. I checked the documentation and the c# api but wasn't able to pinpoint anything (I'm also very new to making c# mods so I may totally be missing something) - thanks!
Im updating a retexture animal mod and it didnt have any baby sprite should I make my own or just leave it
How would one go about implementing and summoning a monster class defined in a C# mod?
Price migration for developers and console commands is about it currently.
If you want to completely reset the bundles with the next update of your mod, a simple way to do that would be changing the bundle id
I could perhaps add a trigger action that resets bundles or make resetting bundles accessible through the api
Okay, I tried to change my code but I still must be doing something wrong because now, nothing is spawning at all.
https://smapi.io/json/none/ab6ff6e7483f48d9a1e5a8ea480dddd3 (Spawning groups, wasn't sure what to do with the setpiece part, really)
https://smapi.io/json/none/82d41b68aa2e4f26a33cf307a18b3696 (Spawnable definitions)
And the trigger action I used:
"LogName": "PeiMing Spawn Trigger Actions",
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"{{ModID}}_Trigger_Spawnables":
{
"ID": "{{ModID}}_Trigger_Spawnables",
"Trigger": "DayStarted",
"Condition": "SEASON {{season}}",
"MarkActionApplied": false,
"Actions": [
"spacechase0.SpaceCore_TriggerSpawnGroup {{ModID}}_SpawnGroup_{{season}} {{SpawnableCoordinates}}"
]
},
}```
I'd start by subclassing either Monster or one of the specific monsters. You can summon one with FTM or if you want to stick with C# look at the ways the game populates mine levels
why condition SEASON {{Season}}? won’t that just always resolve to true?
Ohhh I was thinking it would resolve to the current season and then do its thing accordingly
that’s the safest option for sure, although i’m not sure if you need to
you can try just having Condition true but still using {{Season}} in your Actions
i assume {{spawnablecoordinates}} is a DT?
It is, it changes depending on which house location setting you picked in the mod configs
okay and i assume DTs update themselves at day start
i would be careful with that though, because what happens if a user changes config mid-game? idk what happens to the token and it could fuck up your traction
(not that users should be setting config mid game, but you know)
Thanks so much for your reply! At least I know I haven't missed anything obvious. I haven't tried changing the ID, I'll definitely give it a try.
But also, if you did decide to make an action or api for resetting available that would be amazing - I have around 25 complex bundles for all the tools so would love a way to make it a bit easier for players - no pressure from my side though, I'll just be grateful if you happen to have the time sometime in the future, thanks!
can you try changing your condition to TRUE, then running diagnostics to find out if the trigger action has run etc?
i’d like to identify where in the process things aren’t happening
I added separate patches for now. But I am getting this error this time around: "[game] Trigger action 'void.peiming_Trigger_Spawnables_winter' has action string 'spacechase0.SpaceCore_TriggerSpawnGroup void.peiming_SpawnGroup_winter void.peiming_PeiMingNewOutdoors 7, 6, 11, 14 11, 4, 8/10, 16, 3' which couldn't be applied: Rectangle parsing error for includeRegion 0: required index 1 (Rectangle rect > y) has a blank value."
The DT looks like this:
"Name": "SpawnableCoordinates",
"Value": "Forest 42,73,4,3/55,73,3,7"
},
{
"Name": "SpawnableCoordinates",
"When": { "HasMod: |contains=FlashShifter.StardewValleyExpandedCP": true, "House Location": "SVE"} ,
"Value": "Forest 18,69,2,2/17,79,3,2/22,79,2,2"
},
{
"Name": "SpawnableCoordinates",
"When": { "House Location": "Alternate" },
"Value": "{{ModID}}_PeiMingNewOutdoors 7,6,11,14 11,6,4,8/10,16,3,4"
},
that’s wild why is it dropping numbers like that
You missed a , between 14 and 11
you've got a lot of spaces between your numbers
Does it handle those
Actually that might be mobile discord font nvm
Hello! I haven't been here in a while, but I'm getting back into working on my Pokemon Berry Bushes mod.
I'm currently trying to add a recipe that's obtained through the mail by raising friendship with Vincent and/or Jas, however I've found that doing the typical "f Vincent 3" in the recipe field results in the recipe erroring and appearing as ??? in the cooking menu, and my theory is it's because Vincent and Jas don't have a string in game for sending recipes in the mail?
I was wondering how I could add strings for cooking recipe mail sent by Jas and Vincent after certain friendship thresholds (preferably with i18n support) or if there's another mod I can look at which does the same thing that I can use to figure it out?
the space separates include and exclude regions
One question, how many portraits are to make a mod?
i’m confused how it took 11,6,4,8 and spat out 11,4,8
minimum 1, maximum a lot. up to you
And if with all expressions of all vanilla characters?
!unpack check the unpacked data
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!
some mods have 100+ portraits for some characters, so there is no real limit
!unpack
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
(yeah but I meant between the numbers themselves in the comma list because the part outside the code block looked like it had spaces)
oh gotcha
yeah i think that’s Just Discord TM
anyway @merry river my only advice is to not use DTs for tractions. make separate trigger actions for each config option, not using ANY whens or anything
this has solidified my opinion that tokens are tokens and trigger actions are trigger actions and never the twain shall meet
if you need a GSQ for a config option then uhhh maybe set a mail flag or smth? idk
It's probably fine when it's unconditional tbh
Or at least token ready on game started
yeah i’m too shaky on when tokens do things to offer advice on using them in combination with stuff with lots of moving parts
tractions are already so hard to debug
Hellloo, quick question
For months now, my mermaid pearl and mermaid tear and other "Object" drops in the sea were actually coded like fish but with no mini-game attached
However, in some rare cases, it does not work (some basic rods send out errors when catching it, but fiberglass and better dont)
im unsure why that occurs, however, id rather make my item the right way instead
Does anyone have a link or doc on this would work? I'd just want my pearl to be very rare accidental catch in the Beach, low chance
I don't know if you could code them like jellies? That's a no minigame catch, while still not being trash (which somes with drawbacks iirc)
"{{ModID}}_MermaidTear": "{{ModID}}_MermaidTear/null/mixed/2/8/1800 2600/spring summer/both/-1/4/.01/9/8/false"
This is how they work right now
No idea if CP allows it tho
you might have an error in your console log that you can look at, but my first instinct is that something's gone wrong with your ingredients list or name field somehow? If you've confirmed that your cooking recipe does indeed exist and isn't throwing errors and that it is something to do with the unlock condition, then you might be able to create a trigger action to send the recipe in the mail instead.
If you remove the unlock condition temporarily, does the recipe appear correctly?
Indeed it does, removing the field lets the recipe show up in the cooking menu with the correct icon and name, just shaded out (which might be from a mod I have that changes the UI?)
Idr if the vanilla UI just has unknown recipes as a ?
Okay, and have you added a mail entry for VincentCooking, since you suspect that it doesn't have one already?
That's the next step if it is indeed the problem.
I did try that yes, in a mail.json file
I don't know if you actually need a Data/fish for fishable items
Could you just omit that and try?
Are you using EditData with Data/Mail as your target to add it?
Uhh I think I had technically done "Changes" which I think is from Content Patcher given the error I then got when I added that line to the file
Did you have your own mail.json that you were using as an Include?
Yes
Okay, and in that mail.json, what did the code block look like? The bit after { "Changes": [
It was immediately followed by the data. Hold on a second I can set it back up
If it's not included, it wont be able to be caught
I might try using chance instead
I had undone it cuz it didn't work so gimme a moment
and define it in the locations
Looking at the object data for sea jelly for an example, it looks like giving it the type Fish and the context tag fish_nonfish may be all you need to make an Object fishable without the minigame
Ohhh wait a minute I think I can see my issue 
Included files still expect an Action block (which starts with {"Action":"EditData" unless you are Loading the entries, which you don't want to do for Data/Mail, as it will erase all other preexisting entries.
I already have that, however, I want it so the mermaid pearl is caught like seaweed/trash.
fish_nonfish does not skip the mini-game, but it helps. In order to skip the minigame, you have to set the difficulty property to "null". If set to 0, it will still perform a mini game
What im trying to do is not have it added with a null statement. Most of the time, its fine, ive had this since 1.1, but, there are some users under rare circumstances that get errors saying null cannot be there, even though its fully allowed to be
Right now im checking how MNF added the "i_voted_sticker" trash item, maybe I can try doing how they do it
but still unsure atm
How MNF handles it is using Chance and Precedence (doubt Precedence has much to do with this anyways)
so I will see from there
I'm currently implementing it based on what I already have in the recipes.json file but I don't know which parts are only relevant to adding the shop data
This is likely incomplete but how's this looking so far?
"Changes": [
{
"Action": "EditData",
"Target": "Data/mail",
"Entries": {
"JasCooking": "Hello, umm... you're nice to me... I hope you like this recipe... ^ -Jas%item cookingRecipe%%[#]Jas's Recipe",
"VincentCooking": "Hi! My mom said I should send you something for being so nice to me. I came up with this last night! ^ -Vincent%item cookingRecipe%%[#]Vincent's Recipe",
}
]
}
}```
Any fields I'm missing?
I'd be curious to see a log from someone who is getting an error about null not being allowed for defining the difficulty of the "fish"
I can send to you
Skipped fish 'ASF_MermaidPearl' due to invalid requirements in Data/Fish: required index 1 (int difficulty) has value 'null', which can't be parsed as an integer
Skipped fish 'ASF_MermaidTear' due to invalid requirements in Data/Fish: required index 1 (int difficulty) has value 'null', which can't be parsed as an integer
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 6.1.7601 Service Pack 1, with 42 C# mods and 82 content packs.
This is their log
It shocked be, because I even tested it with their mods, East Scarp + Fish of Stardew
still wasnt able to replicate that issue
What's strange about this, is that it is fully allowed, I tested and caught them multiple times, same as other users. so this error log is partially incorrect
Could be a strange mod they have, I dont know, so far, this is what I'm leaning towards
The difficulty property is typically an int value, but null is allowed to be passed, this allows the mini-game to be skipped
If anyone knows more information on it, feel free to correct me, I'm puzzled on why only the beginner rods produce this error (Training rod, Bamboo rod)
Where are you getting that null is allowed to be passed?
Strangely enough it worked fine before that... No idea why it's suddenly dropping the integers like that
It's worked perfectly for the last 6 months, and all users report that it works
(the DT I mean)
And I got it from another fishing mod as well
This is the first time where one user has faced a weird bug with it, and only happens with the beginner rods
With fiberglass, iridium, and others, it does not cause that error
I've also tested it under the null value when passed to the property, it's not had an issue until today with that user
that warning specifically appears only for training rods if the value is not an int in GameLocation.CheckGenericFishRequirements, but I haven't seen where else it gets parsed yet
Hmm, that's interesting to know
There is an unconditional Convert.ToInt32 in the only BobberBar menu constructor
For that field
It may happen that doing Convert.ToInt32 on an empty string or something doesnt crash, but it's definitely not documented as explicitly allowed to put a null value there
Yeah, this makes a lot of sense
(In fact it's specifically documented as required and not just left ambiguous)
To avoid niche issues like this, what would you recommend I do with the null field?
If set to 0, the fish mini-game occurs
Same as adding the context tag fish_nonfish
which has no effect on the mini-game interestingly enough (in my experience)
I would suggest copying the sea jelly or trash items (I don't remember how trash works) exactly and then changing only the necessary data to turn that duplicate sea jelly into your actual fish
does setting the Category to 0 work? Fish are category -4, but the sea jelly is category 0
In 1.6.16, you add the fish_skip_minigame context tag
You should be able to just omit the data/fish entry
I can look into that
This is literally how every furniture item you fish up works
I'm quite sure you're overcomplicating it
oh, yeah, I was talking about defining the Object. If it's not a fish, no reason for the Data/Fish entry, I imagine
This is getting added? Very nice! I'll add it in here anyways, for when 1.6.16 does come out, but in the meantime, I'm gonna have a look at Sea Jelly's
Where can I dump the Sea Jelly data to see how it's added?
Am I just exporting Data/Fish?
!unpack if you haven't
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!
ahh gotchu
Well look into what everyone else is saying first about ignoring Data/Fish entirely
Alright, so I set up the file (I had ordered brackets incorrectly) but now I'm back to the recipe appearing as this in the cooking menu
How would it be caught, then? I don't think I've done it like this before
I don't know, I'm not one of the three other people who said it. I don't do fish stuff
seajelly gets added in location data, so I imagine it would be there
I'm looking at MNF, it seems they add it to Data/Locations, with "Chance": 0.05, and Precedence": 1999. Under Default -> Fish Target field
I'm assuming I still need to add Vincent and Jas as tags for recipes associated with those mail strings I added, which I'm not sure how to do
@strong kite You leveled up to Cowpoke. You can now share images in all channels!
I don't fully know what Precedence does in the context of fish
https://stardewvalleywiki.com/Modding:Location_data has that info
lower precendence = the entry gets checked earlier
sorry, got called away for a work meeting. To answer your earlier question: unknown recipes do show up as ??? but the silhouette should be specific to your recipe.
Alright. Well with "f Vincent 2" set in the recipe file, it makes it show up like the image I posted above
I'm not sure if this silhouette is the error item symbol or not (which normally means you haven't set a texture properly in the Data/Objects entry)
that’s bizarre but i’ll put it up to Token Nonsense
I'm not sure if this helps, but if I remove that "f Vincent 2" from the recipe file, it does show up correctly. So I'd have to think there's something I'm missing related to that line
I'm looking through Sunberry Village at the moment to see how they handled it
There's no silly conditions on your Data/Objects entry, are there?
I'd imagine not, since it works fine if you remove the condition from the CookingRecipes patch
Correct, though just in case I have it set like this. But the item itself does still appear
"Name": "PBB_EeveeCookie",
"DisplayName": "{{i18n:EeveeCookie_name}}",
"Description": "{{i18n:EeveeCookie_description}}",
"Type": "Basic",
"Category": -7,
"Price": 140,
"Texture": "TntDove.PBB/Objects",
"SpriteIndex": 228,
"Edibility": 24,
"IsDrink": false,
"Buffs": null,
},```
Is there info on 1.6.16 already? There was supposed to be a fix for colored items included, but that was so long ago I'm not certain it made the cut
There is a migration page and an alpha thread.
Most likely irrelevant, but just in case, Sunberry Village does use \\ instead of / in the texture field
They also use the Cooking type but I'm not sure what other impacts that may have
(The slashes are irrelevant. SMAPI normalizes every asset name that passes through it.)
That's.. probably irrelevant yeah? Considering this mod's been published for a while and I've had it like that the whole time for every other entry
Same with them being set to basic for Type
Not sure why either would matter if the friendship condition is what's causing the issue, but just wanted to mention
Yeah, like I said, probably irrelevant. 😄
Alrighty!
I'm looking through SVE purely because I figured the mod would have something like what I'm looking for lol. But it's definitely not the best option for this cuz there is just so much extra stuff I don't need to worry about lmao
Scrolling up to see if I can find your CookingRecipes entry anywhere in the history
Yeah, SBV adds three cooking recipes so it's easier to parse, but they are for custom NPCs, which may or may not have the same weirdness as using one of the kids
Would there be something in the code about them being kids that would be causing issues? Otherwise I feel like it might be the similar if not the same to adding these for custom NPCs?
(I would be curious as to if changing it away from Vincent or Jas to any other NPC results in it behaving as expected)
That's.. a really good idea. I'll test it with Emily real quick
Cuz It could also be because no other entry in the mod uses that field cuz all the recipes thus far have been in shops which the field is technically not required for
Progress.... That field just isn't working for my mod lmao
Well, SBV uses the f <NPC> <hearts> syntax and theirs work fine
just popping in so can you show context
This is what I've got, with a few other entries for reference
"PBB_ConcentratedBlukBerryJuice": "PBB_BlukBerry 250/10 10/PBB_ConcentratedBlukBerryJuice",
"PBB_MiniorKonpeito": "245 1 PBB_RoseliBerry 1 PBB_OccaBerry 1 PBB_ShucaBerry 1 PBB_RindoBerry 1 PBB_YacheBerry 1 PBB_PasshoBerry 1 PBB_PayapaBerry 1 PBB_BlukBerry 1/10 10/PBB_MiniorKonpeito",
"PBB_EeveeCookie": "246 1 245 1 -5 1/10 10/f Emily 2/PBB_EeveeCookie",```
Eevee Cookie being the one not functioning properly
the entry of the Eevee Cookie is malformed
your produce is after the condition instead of before
(also since you were asking about using i18n with it before, your i18n token would go in that last field)
the one after the friendship condition is the display name
I'm getting back into modding so I'm extremely rusty, was adding this basically as a test to get back into the groove, I thought the final thing with the item tag was the display name field, not the yield field
Alrighty, I've corrected it
Is it possible to add new symbols support to the game if I add them to font files
Like star on asterisk
Font smasher
I see
I guess it does depend on what you plan on using this for
Alright, it is indeed showing up in the recipe menu correctly. Now to see if the unlock condition works properly
Just randomly thought about it, nothing much
Asterisk currently does the anger tick mark, yeah?
not in dialogue at least
Alright I don't think the condition is actually working properly. although maybe there's several reasons that could be..
I'll test it with a different NPC again
make sure to test with new save
That's also a great idea
if it's unlocked already I don't think you get new mail
Okay since I mentioned the whole font thing, how do I generally add text keys to Tiled
I already know how to do basic i18n but I'm not sure how to make Tiled work with it
Just some sign action text for example
It's not unlocked, but I know there might be bugginess with having previously been at the required friendship
In Tiled, you generally will reference a Strings entry rather than directly typing your text or i18n tokens, and then use Content Patcher to add that i18n string.
Okay so uhh
(Tiled does not know what tokens are, so they won't parse properly)
Could there be issues with using CJB to raise friendship that might be causing this not to work?
Cuz on a fresh save, setting Emily's friendship to the required level.. actually didn't send ANY recipe mail come to think of it
Is there any example for this?
I may suppose how to do it but I'm not sure if I'm right
Let's say I already have a ready default.json
Do i do data strings entry and just mention my i18n there and then use the string in tiled?
From my Useable Community Center mod, this adds the string that my Message tiledata references:
"Action": "EditData",
"Target": "Strings/StringsFromMaps",
"Entries": {
"EMAFeatureComingSoon": "The ExtraMapActions (EMA) mod is required to use this feature."
},```
The ExtraMapActions (EMA) mod is required to use this feature. this would be changed to be your i18n token
Oh neat, almost got it right
(reminding me to publish my i18n version of that mod in an update, whoops)
Gotta learn more data entry things, those are cool
I'll try again but I'll use like.. stardrop tea or gifts to raise friendship, and I'll make sure not to pass too many recipe gaining thresholds cuz I read that could be an issue
this is the other part, done in Tiled
But that was just to add name and description to a custom object
(pls namespace them though if you put them in the generic Strings/StringsFromMap asset)
(yep, it's part of what I have to update when I do the i18n patch)
(you can put them in your own string asset if you dont wanna type out your mod id (though id personally still recommend namespacing even in "your" asset) )
(actually you'd then have to type out your mod ID anyway so that doesnt save you either)
(this is why I just made CP do all the work in the apartment mod instead of setting the tile actions in Tiled)
Wait I guess the whole data strings folder is just a big i18n
Interesting
Wait it's not data it's just strings
So confusing
11pm is no joke I gotta go sleep
Ty yall, gn
"Layer":"Buildings",
"Position": {
"X": 5,
"Y": 22,
},
"SetProperties": {"Action": "Message \"{{ModId}}_MyStringHere\""}
}```
this saves so much pain because you can use the tokens in it.
YIPPEE
Yippee!!
Now to see if it works with Vincent 
Godspeed soldier 🫡
I gotta learn particles now I wanna do things
To temporarily patch the issue until I come up with a solution, I came across a unique property.
I found a CanUseTrainingRod property, but I'm unsure on where it's used. Do you use this in the Object's definition under EditData -> Data/Objects?
I do not need the items to be caught with a training rod for now. I also got more info, that the bamboo rod does work. It's only the training rod that causes issues

YIPPEEEEEE

Double Fudge Chocolate Deluxe Cookie
(pls)
that goes into the Fish section of Data/Locations
How does this look as a path?
This area?
Just added them here if so
Just wanted to double check with you if this is the correct spot for it :3
(this is a temporary patch, I understand that this isn't the most ideal situation)
yeah i think, been a hot minute since i did fishing stuff
alrr
is there any doc on the CanUseTrainingRod property?
I couldnt find so i was asking here
should just be whether or not it can be fished up while you are using the Training Rod pole
not really, tehres like a few sentences on the wiki on the location page and thats it i believe
(Optional) Whether the player can catch this fish using a training rod. This can be true (always allowed), false (never allowed), or null (apply default logic, i.e. allowed for difficulty ratings under 50). Default null.
Peaks my head in,, Im having a bit of trouble with actually integrating the maps I've made into the game
I've made an edit to add an area to the side of town (made "Custom Town Edit.tmx" file and used the EditMap command)
This is what it looks like, but the farmer can't go past that point for some reason
Is there some command I'm missing? I've also made sure nothing is obstructing the player in the building layer (here's the og town building layer and my edit's building layer)
Now that the code is all working properly and my first new item in a while is functioning, I can add the other 8 items that go alongside this one.
Which has immediately hit me with the realization of just how much effort this is all gonna be 
what does the mod data layers show when you enable it?
Interestingly enough, this does prohibit the fish from being caught with the rod, however, if the item is not catachable under that rod, the rod still outputs the same error, even when I put the CanUseTrainingRod property in both the definition of the object, and the Data/Locations entry. Even though the object isn't in the pool anymore, it still errors
I'll have to recode that then, which sadly I don't have enough knowledge on how to do
or you can use something like debug mode or just patch export the map but data layers is easiest imo
what error does it even have
hover over the tiles in your layer on the Buildings layer and make sure the tooltip says Empty after the coordinates
[game] Skipped fish 'ASF_RedCoral' due to invalid requirements in Data/Fish: required index 1 (int difficulty) has value 'null', which can't be parsed as an integer
[game] Skipped fish 'ASF_MermaidPearl' due to invalid requirements in Data/Fish: required index 1 (int difficulty) has value 'null', which can't be parsed as an integer
[game] Skipped fish 'ASF_MermaidTear' due to invalid requirements in Data/Fish: required index 1 (int difficulty) has value 'null', which can't be parsed as an integer
null?
The vanilla Town map has an invisible tile on Buildings at 112, 96
What the helly,,, yeah I just found it 😭
Thank yeouuu
you got somewhere a null in your data/fish and i guess the game doesnt like that
Also, how do I enable this?
download the mod and then press f2 (or whatever the keybind is set as)
there's a whole suite of QOL testing mods, like debug mode, CJB cheats, etc that i recommend you have when testing
did you remove the Data/Fish entry as suggested by others
hello everyone
I was messing with abigails schedule after marriage in a mod and I wanted her to go home after a little trip and I added, I copied it from another schedule.
1010 BusStop -1 23 3
and I doesn't work
why help
theres a "null" in there where there should be the chance for darting
without code we cant help
!log please upload your log and json to this site and share it here
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.
Not yet, because how that works is confusing to me right now
I was looking at a temp patch
tho the game still reads it regardless if its not allowed to be caught
"marriage_fall_5": "640 BusStop 36 14 0/800 BusStop 36 14 0/900 BusStop 35 13 1/910 BusStop 35 13 1 abigail_flute/1010 BusStop -1 23 3"
I mean, I can tell you right now that -1 is likely not a valid coordinate for pathfinding on the BusStop map.
just delete it
but like the other schedule used it and it worked
yeah, it works, but with the training rod, it gets a little stingy, which the error does not affect anything, it isnt the best to keep either
NPCs cannot pathfind onto the Farm
so how do I get her home? to the farmhouse
just, delete this?
send her to bed, i think?
delete the Data/Fish entry
You'll need to set a NPC warp somewhere to put her back in the farmhouse (may or may not work) or otherwise use bed, yes.
no, your entries in Data/Fish
like just adding bed at the end?
look at the Desert Festival marriage key in her vanilla schedule
After deleting, then what should I add now that its gone?
since it wont be able to be caught yet
or obtained
it can since you put it into Data/Locations
⍼Ц𝓝𝖊, Please note that using bed will make them unable to be interacted with until the next morning, as they will do the "zzz" sleeping text and not be giftable.
nothing (what Void said)
save and then test ingame
okay, I'll just make her schedule longer, thx :3
it works, thanks!
However, its chance is higherthan any fish, how can I adjust this?
it needs to be rare
increase the precedence value and/or decrease the chance
lower precedence get checked earlier
0 is normal
thx it worked, yay!
to get an idea, what kind of precedence is good for a pearl?
i havent played around or used precedence yet
vanilla mostly only uses these values
-1000: location items which should override the global priority items (e.g. fossils on Ginger Island);
-100: global priority items (e.g. Qi Beans);
0: normal items;
100: global fallback items (e.g. clay).
in most cases if you just want the item to be part of the pool use 0
how do I make this door work.... (Please ignore the door being between tiles I do not care to make it proper- unless I need to for some reason)
Do I need a line of code? I haven't written anything for it.
Actually how do I make any of the tiledata work? none of them work currently i think
have you named them TileData?
you can either do doors like that or you can mae them warps solely via json its up to you
......i did not 🤦 I did it for the other map and not this one 😭
Its okay dw
let me do that thank youuu
Name it TileData
Put it on pink Buildings layer
and it should work
If you see a hand cursor when you hover it that means it works
IT WORKS!!!! YIPPEE!!!
Oh that's the timings
WAIT IM STUPID ITS TIME
Hehas-
@brittle pasture @ornate trellis @uncut viper
Thank you! I managed to get it working perfectly!!
Hi! You can bypass the wiki restrictions for new accounts by creating your page in smaller chunks, instead of all at once. As your edit history grows, the limits should ease up too.
We can discuss here, but feel free to DM if you prefer. Margotbean would be the main person to ask about changes in the main namespaces though; I'm mostly only involved in the modding namespace.
It is a big page. I would not want to create it half a table at a time.
I will continue in DMs then, thanks.
StardewModdingAPI.Framework.Exceptions.SContentLoadException: Failed loading asset 'assets/LooseSprites/Cursors.png' from SMAPI\maraluna.overgrownfloweryinterface: an unexpected error occurred.
---> System.Exception: Unable to allocate pixels for the bitmap.
at SkiaSharp.SKBitmap.Decode(SKCodec codec, SKImageInfo bitmapInfo)
at SkiaSharp.SKBitmap.Decode(SKCodec codec)
at SkiaSharp.SKBitmap.Decode(Stream stream)
does someone know how that error can occur? its on different images of different mods so probably not corrupt images
!oom
OutOfMemoryException errors (or other errors about insufficient memory) mean that your game ran out of memory. See this page for more info and common fixes https://stardewvalleywiki.com/Modding:Player_Guide/Troubleshooting#OutOfMemoryException_errors
Unable to allocate pixels is pretty much another word for out of memory
yeah, the only reason that's not a raw OOM message is that skia uses an API with bool Try methods to get memory
I have a question about spacecore. If i wanted to do a custom sleeping animation. I know spacecore has a thing that allows oversized animations, would i draw in in a new spritesheet in a 16x32 style?
you can draw it on the same sheet
you just need to keep in mind that the sprite count is different sinze the size changes
but the example should explain that bit
well because of that wouldnt it be easier to just use a new spritesheet?
it wouldnt be easier cuz then youd need to add code for appearance and when it changes for the animation etc too
isn't 16x32 the default size or is it 32x16
16x32 is default, yes
ah, i meant 32x16 lol, not the other way around
just look at clints or willys sheet, they got bigger animations too on the standard sheet
here's an example as well
32x32?
so it would count as two sprite slots technically?
i mean if you go by standard, i guess. but to the game it will be one big one
okay it is time to suffer
Manifest:
https://smapi.io/json/manifest/29760add29864d86acaa40e9e39c98be
Content, which has my tokens and loads in it:
https://smapi.io/json/content-patcher/f4121cfae62c47f18444e470a3440e08
A patch using the tokens in content with CMCT compatibility things that works fine:
https://smapi.io/json/none/2939c9dfd8a94796a9256bb2977f1c42
A patch using the RSV-specific tokens that works fine:
https://smapi.io/json/none/7c833b25304a40f4bc53f99b300c2e92
The patch that will not load:
https://smapi.io/json/none/6d154c6cc42c4036a4a24609da1e4004
A log to show the errors I'm getting and how running Patch Parse shows the tokens working.
https://smapi.io/log/978ec649f0ff4477bef9b119f7ea97ea
My problem: This compatibility patch will not load. It says the reason is that MY tokens do not exist. The tokens I made myself in the same mod as this patch.
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 19 C# mods and 10 content packs.
I am out of ideas for things to try
I also tried just loading the first RIRSV patch without the settings check, like so:
https://smapi.io/json/none/fd46218aca984d70a9aa2555d601f941
This worked.
so for some reason, my own tokens are failing when I check settings from RIRSV through CMCT.
Hi, by any chance do you know where the sprite for the alien capsule that crashes on the farm is, the one that breaks open and something comes out of it?
Tilesheets/Craftables
Ty
hmmm maybe...
what happens if I just try it with ONE of the patches...
wait that worked okay, see, sleeping helped
okay so maybe just ONE of my patches is doing this
I'll just add them back in one at a time and see when it explodes
Haiii
Does anyone know the of Nature In The Valley creators discord name?
I wanted to ask them about compat with their Shiny Fish mod instead of adding it on my end, but cant seem to find their user here
Hey I found a part that doesn't work and I am EVEN MORE CONFUSED but at least I found it
https://smapi.io/json/none/0301f4cbebaa4789af74721f4ffe4861
This is when it stops working. Adding in the patches marked "Cleanup" is when it started to fail.
tyty
But the patches for the rooms before that look... the same? Their conditions look the same
WAIT OCMMAS
I SEE COMMAS
Oh that's totally it I had some stray commas
thank you rubber ducky chat
You were answered in making-mods-art when you posted that the first time. Mind elaborating on your question if you want to try again?
What, if anything, have you already tried, that kind of thing
looks like its trying to grab the colors of the nonexistent shirt to give it the color for the sleeves. no color so transparent? my best guess. the sleeves are red in the files but in the game they get their color from the shirt
Is it complicated to use the slime incubator to generate a slime? I want to try something, but I looked at the machine’s code and didn’t understand how it works. I imagine it’s not like a regular production machine.
I don’t need C#, right? Or would I have to make my own slime incubator instead?
the hands are still showing up because those are still tied to the skin color
Yup you need to set every shirt sleeveless if you want to do that
(Have you tried editing Data/Shirts to tell it "HasSleeves" is false for the new "shirt"?)
It was fully c# last time I checked
-# TIL we have a Data/Shirts and not just a black box of cursed shirt-ness
maybe time to look even closer at the data folder
So that’s out of my reach, I don’t know C#. Does creating an incubator also require C#?
EMC
its a good framework
But if I also need C#, then I have to rule it out = (
Yeas hehe
if EMC does it then you wont need C#, no?
can json your way to happiness
*happiness may vary
I’m reading what you sent me, it’s similar to what I want to do
Haha, I hope so
@spice inlet Hi, I hope its okay to ping you, there is a bug in the quick save mod where the buff effects will get increased on every save and load, I traced it to the buff constructor adding the buff effects twice
public Buff(string id, ... BuffEffects effects = null, ...)
{
this.id = id;
...
BuffData buffData;
if (id != null && DataLoader.Buffs(Game1.content).TryGetValue(id, out buffData))
{
...
this.effects.Add(buffData.Effects);
...
}
...
if (effects == null)
return;
this.effects.Add(effects);
}
I submitted a merge request to your gitlab repo, though I'm not sure if this is the best way to fix it.
Is Data/Monsters used to edit monster drops?
Yesish
Ty
I set the Minimum and Maximum damage of a custom weapon to 0, but it keeps doing 1 damage anyway?
Crit chance and crit multiplier are also set to 0. I also tried it with only my mod and content patcher installed, so I don't think it's another mod causing it either.
If I create my own slime incubator, can I set my slime eggs to have a different processing time than the ones in the game?
As for your other question, a standard incubator does not require c# for basic things, but the basic thing is pretty much producing a farm animal
i feel like u could change the processing time of the existing thing
im not sure just my intuition
maybe try a negative?
id guess that it might be rounding up or something
">= 0" is used in some final damage calculations, so -1 or lower might help, yeah
incubation time is controlled by the "machine"'s ready time
so you can just use that
just in case I'll reiterate this is with EMC's custom slime incubator feature
I think that worked, ya. Thanks!
I think I got confused about something, I just want to make sure I understood correctly.
If I put this in my machine, does it turn into a slime incubator?
selph.ExtraMachineConfig.IsCustomSlimeIncubator
And I still need to do all the usual machine code as well, right?
yes
Alright, I get it now then. Selph, thank you so much as always,
Wem, if you’re here, I’m curious how long you were working on tilly before release
@stoic blade Heyo, I hope it's okay - I submitted a PR to UI Info Suite 2 Alt. Better Junimos - Hut Range, integration
uhhh
hard to say
i started tilly last year
and i dont remember how long i worked on it
let me check when i started working on tilly this year
that’s fair
i took a very long break from tilly
I’m going to have a hard time answering that question about my next npc mod for similar reasons 😅
july 2025
and then i talked about it again in september
and then february 28 i said i was gonna release and i released march 1st hmm
Ah, ok
girl changed vibes in this pic haha
Safe to say it took several months as an answer then
oh, alright
i think 4

