#making-mods-general

1 messages · Page 129 of 1

faint ingot
#

file names...

brittle ledge
#

the actual .png and .json names don't really matter as long as you load them to the right place

#

so you don't have to rename your actual files

faint ingot
#

just let me be grump OK I'm having a George moment

brittle ledge
#

(I assume you're not using i18n?)

faint ingot
#

I am using it

brittle ledge
#

oh, in that case you would be able to replace everything that's not in your i18n, I think SDVpufferthinkblob

#

and then if you don't want to change the file names, just switch those back. Shouldn't be too many

uncut viper
#

tbh i see why you wouldnt want to but it might actually be quicker to just ctrl F literally everything and then just launch the game and play error whack-a-mole as it points you to which places need fixing lol

faint ingot
#

yeah I get it, and actually I've been pleasantly surprised that so far I haven't broken anything with my changes

#

for a second after I did a search/replace I looked at a comment line and wondered why it didn't put {{ModId}}_ in front of my NPC's name in the comment

#

it's because I misspelled his name 😛

tiny zealot
#

you can make a dynamic token for your NPC's internal name so you can use the token in event scripts.
typing and reading {{Russell}} isn't as nice as plain Russell but it beats sdvhead.LongIrritatingModName_Russell

faint ingot
tiny zealot
#
{
  "Name": "Russell",
  "Value": "{{ModId}}_Russell"
}```
should do it
faint ingot
#

I would just like to thank you all for ruining my Friday night

light bramble
#

Question, where do I find the sprite icons for the animals?

#

found them

brave fable
#

for future reference, Data/FarmAnimals lists the ShopTexture and ShopSourceRect for each animal SDVpufferthumbsup

light bramble
#

So question, I'm following what Ichor did for their pet mod...But I don't quite understand what it is they are doing? like this part here:

          "IconTexture": "Mods/{{ModId}}/Icons",```
I don't get it. Are they making subfolders? or is that just something that you can do?
#

and before you link me to modding pets on the wiki, I have it open but there's nothing that explains this for me....

uncut viper
#

those are just asset names

#

they are what you Load t hings into

hard fern
#

it's the texture location

uncut viper
#

theyre not folders and not files, its not like a file system

#

if you did like "Action": "Load", "Target": "ExampleCatTex" then you would put "Texture": "ExampleCatTex"

#

naming your asset names like Mods/ModId/whatever is just a common convention

#

but its just a name for a thing

#

a single thing

light bramble
#

It looks like a file path 😭

uncut viper
#

it does. but it is not a file path

#

it is a common confusion though

light bramble
#

This is why we need a tut on making pets...like I don't know what half the things in the wiki do or even how to make them work

#

Like it makes little to no sense for me 😭

hard fern
#

oof i gotta finish events for my mod

uncut viper
#

its the same concept for anything with a texture, not just pets

#

i dont know enough about the other pet specific fields to offer any more specific guidance here, though, sorry

light bramble
#

Ok, I get that now, but like...this stuff... Behaviors like how in the heck do I know what to put? Or the bark sound? or anything else. The wiki doesn't do a good enough job at explaining for me

#

like some say are optional but I still don't get it

#

Ichor...can you halp plz

latent mauve
#

Unless you want a custom sound or behavior, you can just copy the values from the original dogs

#

In Data/Pets

light bramble
#

:Sob:

#

I feel so dumb

latent mauve
#

Are you adding the dog as a completely new pet, or just a new breed of dog?

#

(Breeds are way simpler)

#

this is all the dog breed section uses

light bramble
#

new breeds of dog

#
            "Target": "Data/Pets",
            "TargetField": ["Dog", "Breeds"],```
#

is what I am doing

serene quarry
#

Thank you for code.
I try to got error message that I dont know 😦

[Content Patcher] Ignored NPC Yamionisama > EditData Data/Festivals/summer11 #2: TextOperations > 1 is invalid: the Target value 'set-up{{FestivalYear}}' couldn't be parsed: '{{FestivalYear}}' can't be used as a token because that token could not be found.
uncut viper
latent mauve
#

All you'd need to change for your own breed is the Id, Texture, and IconTexture values, really.

light bramble
#

Puts on dunce cap I really am the dumb

latent mauve
#

Nah, you just got lost in the wiki, it's understandable

light bramble
#

I feel that the wiki can be both friendly to my autistic self but also very very unfriendly

#

XD

latent mauve
#

But yeah, for breeds, the only things that really matter if you don't want custom barks or anything are the appearance-related fields

serene quarry
light bramble
#

Ok ok ok, another question...do I need any of this????

#

Or like will it be fine?

brittle ledge
# serene quarry Thank you for code. I try to got error message that I dont know 😦 ``` [Content ...

I put the setup I used for my {{FestivalYear}} dynamic token here! (Note: dynamic tokens have to go in content.json, they can't be in includes) https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC#Festivals

Stardew Modding Wiki

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...

latent mauve
light bramble
#

ok thank gosh

#

well imma go to sleep XD

latent mauve
#

haha, rest well!

faint ingot
#

OK... of all the problems to pop up after I fixed all my NPC names... I didn't expect the ladder to disappear?? I don't even do anything with it in the event, it is just part of the TMX file

#

WHERE is my ladder??

teal crest
#

what layer name that ladder is?

faint ingot
#

oh wait its showing the wrong tmx file... the problem is in my content.json

#

that makes more sense

teal crest
#

ok

faint ingot
#

thanks for trying to help though I appreciate you SDVpufferheart

teal crest
#

excuse me, does anyone know how "KissSpriteFacingDirection" works?

I wrote as

"KissSpriteIndex": 51,
"KissSpriteFacingDirection": false,
it displays Kiss sprite itself, but it wont change direction true or false either.

brave fable
#

you want "KissSpriteFacingRight": false SDVpufferthumbsup

teal crest
#

ok, I'll try

brave fable
#

ah, the agony of apparently having to add a single new translation entry in a +0.0.1 update

rancid musk
#

I am so bad about my translations. I mean I keep all my strings localizable but I am very used to not having to think about it at all because backend magic happens and translations get merged and deployed without me doing a darn thing.

brave fable
#

imagine merging and deploying translations 😌

#

i throw mere crumbs into the wind and translators swoop in and upload their own

#

such a wealth of power

rancid musk
#

I do kind of wish there was just one big crowdin or whatever for Stardew mods where translations could live and automatically happen.

brave fable
#

BC really does highlight the absurdity of cooking everything in a frying pan

#

yeah i wish translators and users had things a little easier. all the systems we have now work well enough on their own but it doesn't really scale well

#

maybe cp is the future 🌌

rancid musk
#

Yay you have it working~

#

Clearly you should just rename it to Freezing Pan if the recipe is ice cream.

brave fable
#

works pretty well! no complaints so far

#

what's with the token formatting on "@C{red} though? are you manually parsing that or do you somehow have a string formatter that takes named tokens

#

out of curiosity ofc

rancid musk
#

Manually parsing it. @ to start a sequence, C for foreground color, {...} for the value, and red as a color. You could also use hex if you wanted but may as well just use the name.

brave fable
#

ah i see. i ask since i was desperately trying to use named tokens in string formatting while converting i18n to cp hahah

#

gave up in the end and just used regular string format via game1.content.loadstring

rancid musk
#

I didn't want to worry about setting up an xml parser, I don't like bbcode, and markdown doesn't have the sort of formatting I'd need so I just kind of implemented that. It is definitely not ideal, but eh

#

You could get fancier if you wanted. Include a frying pan image or something.

brave fable
#

is that so SDVpufferlurk

rancid musk
#

@M{itemid}

#

Actually that includes the item name too I think

brave fable
#

not bad SDVdemetriums

ivory star
#

Hii is anyone here familiar with the pspvita? i just wanna ask a few questions about modding

and cos i wanna play stardew on there aswell but idk what its like

hard fern
#

the

#

...

brave fable
#

it's a lot like modding the gameboy advance

uncut viper
#

are you asking because you wanna make a mod for pspvita or because you wanna use mods on the pspvita. if the latter i think you want #modded-stardew
if you mean the former then i dont know. i dont know how to mod a pspvita

#

can pspvita run linux

ivory star
rancid musk
#

I'll be honest I didn't even know there was Stardew for vita

brittle pasture
#

SDV on Vita is 1.02; is there even a SMAPI for that old of a version

ivory star
hard fern
#

you should ask the modded farmers channel then? probably

brave fable
#

hi i have a bug report for almanac. it uses dialog for a font id but the game correctly uses dialogueFont

brittle pasture
#

you probably have better luck asking around on one of those vita hacking discords (disclaimer, this is a hypothetical, I don't know of any)

rancid musk
#

hey look at the time time to sleep

brave fable
#

one day i'll understand why ca chooses to use simplified english throughout the game code, but still holds dialogue in his heart

ivory star
ivory star
ivory star
brave fable
#

incredible. you can't even date shane in sdv1.0.2

#

what a relic

ivory star
#

Lolll

#

im hoping haley WAS available in that version

#

omg i hate auto

#

it’s killing me

brittle pasture
#

assuming you can even run SMAPI on a jailbroken vita (you most likely can't) you'd need a giga old version of it, like 1.something

#

and giga old versions of associated mods

#

I suppose you can do XNB replacements, but I'd hardly go through all that trouble just for some retextures

brave fable
#

i'm fairly sure the only mods that even existed at that time were xnb, and they sucked

ivory star
#

this is my first time modding and i was thinking of getting some guy to do it for me but the difference between the game style worries me /im not sure what i’d need for it ??

brittle pasture
#

hmm vita is running on ARM, so SMAPI is probably right out (as said, assuming you can even run custom executables on it)

ivory star
#

selph im too slow ...!! 😥 what executables what

#

guys i don’t mind buying stuff for this

#

and im pretty sure i can mod it directly on the psp

#

but id need to buy a new or have something higher than 128gb

uncut viper
#

we're saying its basically almost not possible

#

and that "almost" is probably still not possible

ivory star
#

im so slow

#

and illiterate with technology

uncut viper
#

Vita wont be able to load the modloader, so the only mods you could possibly have are ones that replace the game files, but that assumes the game files are even in the same format. And even if they were, you would need mods that were made in like, 2016

brittle pasture
#

yeah for all we know the vita version uses a custom format, so even XNB is right out

uncut viper
#

And only in 2016

ivory star
#

oh

#

man

brave fable
#

if you want to mod a game, use a pc. same as it always has been 🌌

ivory star
#

i just wanted to know whether i could mod it on my psvita or not because i usually carry that old thing around with me

uncut viper
#

the answer is unfortunately pretty much no

#

if its possible at all, no one here would be able to know how

ivory star
#

that’s totally ok, thank u guys so much for responding about it anyways

#

i atleast got my answer there

#

i know someone who can mod a few other old games like gta but that’d have to be from what 2015

brave fable
#

(funny to think that the latest gta is an old game, even older than 2015)

tribal umbra
#

Hii! how do i make a custom tilesheet siteable? i've read the wiki but it isn't well explained there and i couldn't make it work

#

Thanks for anyone who can help ❤️

uncut viper
#

siteable?

tribal umbra
#

you can sit in a custom tilesheet

#

it's a bench

#

i've tried to edit the tilesheet but i couldn't make it work

brittle pasture
tribal umbra
#

yes but i couldn't make it work

#

i'm not sure how should i do it by just following these instructions

brittle pasture
#

post your code?

tribal umbra
#

I've tried to add an object propriety but i'm not sure if that's what i'm supposed to do, i'm also not sure if i did write the code right

tribal umbra
# brittle pasture post your code?

i've deleted it since it wasn't working 😅 i was hoping to know how should i do it first, since i think i didn't understood how to properly apply the code to the tilesheet

brittle pasture
#

you don't apply anything to the tilesheet

#

you just add entries to Data/ChairTiles asset referencing your tilesheet

tribal umbra
#

this in the mod code, not in tiled right?

brittle pasture
#

yea

tribal umbra
#

ohhh thx

timid hawk
#

are the mods for mobile?

brittle pasture
#

!smapiandroid

ocean sailBOT
#
Android SMAPI is NOT compatible with 1.6

SMAPI isn't updated for Android and does not work past version 1.5.6.39. We don't know if/when it'll be updated or who will update it. It is not possible to legally downgrade to 1.5.6.39, so do not ask how to do this.

Please see Installing SMAPI on Android for more info.

Be advised we most likely won't be able to help you with android modding issues.

brittle pasture
earnest orchid
#

is there a repository of item context tags somewhere? I don't mean just the list of context tags, but what tags items have.

brittle pasture
#

keep in mind that mods can add whatever tags they want

#

you can also run patch export Data/Objects, but that won't catch autogenerated tags

#

the most surefire way to know what tags an item have is installing Lookup Anything, enabling debug fields and look up an item ingame

earnest orchid
#

alright

#

I'll see if patch export provides what I was looking for

brittle pasture
#

if you dont install any mods that'd just be the unpacked Data/Objects.json file lol

#

the command is useful for when you have other mods installed

slender badger
#

!mh

ocean sailBOT
#

For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).

woeful lintel
#

do you think it would be a good idea to create "Furniture as machine" on top of FF? There's already a lot of stuff that go around vanilla limitations, so it would only be a matter of editing already existing methods instead of having to setup harmony patches.

distant radish
#

Would turning furniture into machines be compatible with mods that alter the behavior of big craftables?

#

I am really interested in this topic because my next mod, Machine Evolution System, turns furniture into machines

#

So I was looking for a framework that is able to do this (selph knows about this)

#

Bigger Craftables was good for this, but the 1.6 version seems… not good

tall wind
#

Hello.
Is it possible to change the dialogue when receiving the mermaid pendant to something NPC specific?
I was looking at the wiki, and there is a section for changing the dialog when the bouquet is received, but there is no section for the pendant, so I was wondering.

final arch
#

this one?

#

oh Im a bit late SDVkrobusgiggle
@tall wind

slender badger
#

Tikamin's looking for a NPC-specific dialogue string like the bouquet or unique gift reactions though, while that still affects all NPCs. It'd be possible to do a patch with a When check for whether you're dating the NPC or not, but it wouldn't play nicely with polyam mods

final arch
#

the <NPC_name> does make it NPC specific, no? 🤔

slender badger
#

Huh, possibly? SDVpufferthinkblob Is that new? I don't remember seeing it with the NPC name before

final arch
#

a thing since 1.4 it seems

mighty lake
#

what's the character limit for dialogue boxes in sdv before it starts to get too crowded?

livid kite
#

I know quite a few people would like that

round dock
#

(this reminds me of Shane's 99 beers on the wall)

mighty lake
#

I wanted to avoid breaking things up where it wouldn't make sense to if possible (if that makes sense) so that's good news lovebump

round dock
round dock
mighty lake
#

it's my first time doing any sort of game modification so i am completely new xd

round dock
#

Sure! Take your time!

mighty lake
#

currently writing pierre to be a raving conspiracy theorist

#

teehee

woeful lintel
woeful lintel
# livid kite Idk if this has been brought, but what about gifting furniture as a feature?

Is it not possible? To be honest, I don't know much about gifts. If you're talking about gifting to villagers, I'm pretty sure it can be made into a mod without any compatibility issue with FF or other mods, it feels like the issue would come from having to give gift taste to every Furniture, which would be a big task, even by grouping them into categories/styles.

Long story short: not the job of the Furniture Framework from what I know about gifts

nimble marlin
#

@rancid musk Hi Khloe! I was trying hard to simplify Weather Wonders code but I notice target fields for edit data doesn't seem to work with it, at least not with every entry. Is this intended or am I doing something wrong? Here's the file:

livid kite
mighty lake
mighty lake
# round dock Wdym? Can you expound on that?

I was reading a guide for adding it using content patcher and they mentioned that you can use a condition to keep dialogue from repeating again if the player has seen it once already (like once per save)! I was wondering if you think it's a good idea to use that for added dialogue or leave the dialogue in like normal so there's a chance to get it again if you keep talking to the character.

#

because I'm adding kinda niche lore drops idk if it would be weird for the player to see it again xd

round dock
#

That's completely up to you tbh, you can make dialogue appear on extra specific days like spring_1 for example or make it contingent depending on their heart level, season, year, finishing the CC, etc. or even a mixture of the former.

hallow prism
#

there are different ways to make a dialogue appears only once, but i suggest to keep advanced stuff for once you got the basis (if you got them already, my usual approach for one time dialogue is the flag + kill, but query may work better)

mighty lake
#

thank you both!

#

i appreciate you taking the time to answer my noob questions lovebump

#

The finishing cc thing is gonna be very helpful

faint ingot
#

I was trying to figure out why my character wasn't following their schedule then saw it includes the spa which is not yet unlocked. So in those cases they revert to the default schedule, is that correct?

brittle pasture
woeful lintel
#

Once I'm done with 3.0, we can make a thread about it, I'm not sure I'll be able to work on another bug thing for a while, I've got research to do next year.

brittle pasture
#

I did some prior research here and already got some code written

#

(ignore the assessment, my current opinion is that this is easier than reimplementing bigger craftables logic)

woeful lintel
brittle pasture
#

got it! it might be a good idea to release this as my own mod then so I can take care of maintaining it and responding to bug fixes alongside my other machine mods

#

but I'll be sure to ping you for help if needed (I'm going to have to stare at draw code lol)

calm nebula
#

Lookin forward to my lint producing carpet, selph

gray linden
#

how do i add a crop to the shop that is not available in this season using c#?

brittle pasture
rancid musk
distant radish
lucid iron
brittle pasture
#

wobble needs transpilers or skip prefix, working anims is doable (furniture has a field that it uses for rotations that I can hijack), TAS is also doable in a postfix

lucid iron
#

Just skip wobble then I never liked how the keg undulate

#

Wait rotations blobcatgooglyblep

#

What r u gonna do when people actually just rotate a table then

brittle pasture
#

for the MVP (Maybe Viable Product) I'll just forbid rotatable furniture

#

as a stretch goals I can add a rotation offset

gray linden
calm nebula
latent mauve
# faint ingot I was trying to figure out why my character wasn't following their schedule then...

Per the wiki: the game has special logic for unlockable locations. If this is JojaMart/Railroad and it's not available yet, the game gets the replacement destination from the first entry in the <location>_Replacement schedule if available; otherwise it switches to the default schedule if available, else spring. If this is CommunityCenter and it's not available yet, the game switches to the default schedule if available, else spring.

#

So basically, you can add a Railroad_Replacement schedule entry to use as a fallback schedule if you are testing a specific schedule

woeful lintel
#

well, my proposition of making this part of FF was to avoid creating unfixable incompatibility. For example with rotation, because FF is already highjacking it (modData will easily take care of animation frame count), and drawing, which I already cleaned a lot to make it easier to have variables like offsets and other animation stuff (I had to do a skipping prefix, because a postfix would only draw over what vanilla draws). It's perfectly fine for a MVP but it would be nice to work together on this.

unique sigil
#

anyone know how to deal with this error? i followed kailey's method of making custom interior doors to add a couple to my farmhouse, but i keep getting this error on renovation to the next house upgrade level (through debug houseupgrade or manually).

   at xTile.Tiles.TileArray.set_Item(Int32 x, Int32 y, Tile value) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\xTileSource\xTile\Tiles\TileArray.cs:line 64
   at StardewValley.InteriorDoor.closeDoorTiles() in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Locations\InteriorDoor.cs:line 164
   at StardewValley.InteriorDoorDictionary.CleanUpLocalState() in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Locations\InteriorDoorDictionary.cs:line 81
   at StardewValley.GameLocation.cleanupBeforePlayerExit_PatchedBy<FlashShifter.SVECode>(GameLocation this)
   at StardewValley.Game1.onFadeToBlackComplete_Patch1(Game1 this)
   at StardewValley.BellsAndWhistles.ScreenFade.UpdateFade(GameTime time)
   at StardewValley.Game1.UpdateOther(GameTime time)
   at StardewValley.Game1._update(GameTime gameTime)
   at StardewValley.Game1.Update(GameTime gameTime)
   at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate)```
#

at first i suspected it was because of the 2nd upgrade has more doors than the 1st upgrade but it doesnt seem like it? also, the error just totally crashes the game, it loops continuously

winter dust
#

@rain flax hey, I like the mods you made, especially with the sprites and tilesheets in them.

rain flax
rain flax
#

Ooh gotcha lol, thank you!

#

I had a lot of fun making them! ☺️

kindred adder
#

question regarding portrait mod etiquette

i'm making a portrait set for a mod in an existing style. currently i'm only doing it for personal use and i know i don't need to ask permission for personal use, but if i did ever want to release it, i should ask the author of the mod i'm making the portraits for and the author of the portrait sets i'm matching, right? and is there anything else i need to think of?

winter dust
nimble marlin
brittle pasture
# gray linden im new to this and dumb i still cant get it to work, could you dm me with the co...
// Make wheat sellable year round (note, there's another wheat entry for fall so this would create a duplicate. in retrospect I should have picked another seed lol
public void OnAssetRequested(object? sender, AssetRequestedEventArgs e) {
  if (e.NameWithoutLocale.IsEquivalentTo("Data/Shops")) {
    e.Edit(asset => {
      var shopData = asset.AsDictionary<string, ShopData>().Data;
      // This would throw if SeedShop doesn't exist, which should never happens, hopefully
      var seedShop = shopData["SeedShop"];
      var wheatShopEntry = seedShop.Items.Find(entry => entry.Id == "WheatSeeds_Summer");
      if (wheatShopEntry is not null) {
        // Remove the condition that limits this entry to summer
        wheatShopEntry.Condition = null;
      }
    });
  }
}
#

then add this function to the asset requested handlers

rancid musk
winter dust
rancid musk
#

Absolutely not.

rancid temple
#

!commissions

ocean sailBOT
rain flax
winter dust
winter dust
rancid musk
#

Please stop pinging me.

fallow musk
#

a question related to C#
so the main class inherits the Mod class and gets access to its Monitor instance to print logs.
If i move the implementation to some other class, i will always have to pass the Monitor instance in the class' constructor, is there a way to access some logging method directly from secondary classes? I assume only the ModEntry class should inherit the Mod class

rancid temple
#

Just make a public static SMonitor

#

Assign it in Entry and call it elsewhere with ModEntry.SMonitor

rancid musk
#

You are correct that only the ModEntry class should inherit the Mod class.

#

I normally just store a static reference to my ModEntry instance itself rather than the monitor specifically.

#

For harmony patches, which have to live in static classes, I'll store a copy of the monitor in a static field there when setting up the patches.

#

(Assuming I don't just rely on the ModEntry instance, which definitely happens sometimes too.)

fallow musk
#

got it

#

thanks

candid stirrup
#

I have a problem/question so in the past I've been able to use the wiki to get the size of the pixels and the file's photo I've needed for something for example: one of Sam's portraits I could click on it and I would the pixels size and the sprite then after changing it I could just copy and paste it on the spritesheet as it was the right size.

But today I went to do that with some Joja Furniture thinking it would work like always does but the pixels size on the wiki doesn't match the spritesheet... 😰

drowsy pewter
#

don't use wiki images for your artwork please

#

Unpack the game and you wont have these problems

#

Wiki images are upsized so we can see them

#

!unpack

ocean sailBOT
#

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!

gray linden
candid stirrup
#

Fair enough as I said it's worked in the past so I thought all of the sizes were right

ocean sailBOT
#

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!

brittle pasture
#

the shop entries are defined in Data/Shops

#

lol just noticed the other unpack msg above

calm nebula
#

!repack

tardy adder
brittle ledge
wise river
#

how does one turn off the edit then?

kindred adder
brittle ledge
fervent horizon
#

If I update an asset in the GMCM midgame, is there a way to have the game refresh the asset without having to leave the game and reload

#

in a c# mod

gaunt orbit
# fervent horizon in a c# mod

yes. GMCM has an "apply config" hook, which you should already be using to write your config file. You can add an InvalidateAsset call there to tell the game to reload the asset when the config changes are applied

tall wind
rancid temple
#

Have you tried adding dialogue for AcceptGift_(O)460?

vale stream
#

Does anyone know if NPC dialogues can be modified?
This dialogue edit works properly:

if(box.dialogues?.Count > num)
{
    var text = box.dialogues[num]?.Replace("$no_player ", "");
    box.dialogues[num] = text;
}

But this one doesn't:

if (box.characterDialogue?.dialogues?.Count > num)
{
    var characterText = box.characterDialogue.dialogues[num]?.Text.Replace("$no_player ", "");
    box.characterDialogue.dialogues[num].Text = characterText;
}

(the code is called for all dialogues, so unless i'm missing something, no clue why it's not applying)

#

I thought num was at fault, but it's not

tall wind
rancid temple
#

I recall editing that generic NPC line when you're dating the specific NPC was a workaround for this before

brittle pasture
#

the game falls back to the generic lines above if a specific NPC's isnt found

rancid temple
#

Oh I see, then yeah you would just need to create one for the specific NPC you want, Krobus has one since you don't actually marry Krobus and thus there needs to be a different dialogue for it

tall wind
rancid temple
#

Ah yeah, that's true. Well, seems like the Engaged dialogue should do what you want

tall wind
#

Oh, sorry, I misunderstood something!
“<NPC name>_Engaged” did indeed do what I was thinking! Thanks!

#

“Data/EngagementDialogue” and I got mixed up and something went wrong, in my head lol.

nimble marlin
tardy adder
#

:3

tame orbit
#

I was wondering if there is a way to change the NPC name when reach a certain amount of hearts?
I’m trying to make an NPC with a full name “Thomas” and after reaching 4 hearts I want the NPC name to show up as “Tommy” in the dialogue boxes and menus
The NPC would be going by a nickname now that the NPC has reached a certain friendship level
I know there are lots of dependencies on the NPC name but is there a condition I can set to have it change from “Thomas” to “Tommy” at 4 hearts and above?

shadow pagoda
#

I am looking at the recipeList dictionary in the CraftingRecipe class to check if the player has enough of each item to craft said recipe. The key is the id of item, while the value is the amount of the item needed to create the recipe. However, I realized that the key uses ItemId instead of QualifiedItemId, which is what I'm using everywhere else in my mod to avoid conflicting ids. Is it safe to assume that all items found in a recipeList have a TypeDefinitionId id of (O)? If not, is there a way to safely handle duplicate ids?

latent mauve
uncut viper
#

(you will also need to do the same for any dialogue you use the name in)

brittle pasture
tame orbit
#

OMG THANK YOU
Is it okay I ask what the initial edit would look like?

#

I'm very new to coding and not exactly sure what the Target would be or the FromFile
Would I need to make a whole new set of sprite portrait dialogue etc?

latent mauve
tame orbit
#

BLESS!🖤

uncut viper
#

if you use the [CharacterName whatever] token actually in your dialogue you probably don't actually have to do extra patches on the dialogue itself

tame orbit
#

THANK YOU!!!🖤

shadow pagoda
gray linden
#

trying to add out of season seeds to the shop with c#, going well until i hit strawberrySeeds_Monday, it just wont show up even though i set the condition to null. is this because it has to be the event?

topaz zenith
#

Also lune, I sent you non saree stuff too

lucid iron
#

strawberrySeeds_Monday is for desert festival

topaz zenith
#

I’m probably gonna work on a clothing project mod soon

#

I have ideas

lucid iron
topaz zenith
#

Is there a general style for stardew clothing I should follow to keep it looking atleast decent?

gray linden
brittle pasture
#

sure if it helps

uncut viper
#

(if its super long use something like pastebin though)

lucid iron
#

u can make a git repo first if u want

#

or gist

brittle pasture
#

not the seed shop

gray linden
#

yes alright thats what i thought the problem was

#

is there any way to add strawberryseeds_monday to seedShop?

brittle pasture
#

add a new entry yourself

lucid iron
#

blueberry im sad to report that Passable T does make it impossible to interact hokuhands

topaz zenith
#

I’m gonna make an Indian jewelry mod

#

So a ton of jewelry from India for fashion sense

brittle pasture
brave fable
hard fern
#

😔 so that

#

*so that's why my thing wasn't working

#

:(

brave fable
#

i'm not terribly surprised this leaves a tile there, i think i knew at the time there'd be different patch update rates on characters and locations

#

but i'm surprised i can't SetProperties to use both Action and Passable

#

taking suggestions on how to do this without new dependencies 🥳

lucid iron
#

turn the kot into a building tile

#

and conditionally patch her in

brave fable
#

well that's just the same issue as before

uncut viper
#

(i dont know what the original issue is)

lucid iron
#

what is the behavior of kot anyways

#

does she walk over there or does she just appear on some days

brave fable
#

Sailor Styles adds an NPC to an open tile in the Forest and adds a Buildings tile to where they're standing with Action Shop

#

the NPC only appears on mondays and sundays, and disappears every other day

#

they don't move either, they just sit on the tile and animate throughout the day

lucid iron
#

i think it should be fine to put the editmap behind a when day of week right

brave fable
#

but the issue apparently is that the Buildings tile patch isn't updated at the same rate as the character's daily appear/disappear rate, which could be fixed by making the EditMap patch every day, but isn't the usual rate for map patches only every season

lucid iron
#

u will need to include the part that actually adds in the tile on building layer

brave fable
#

it'd be a nuisance to have to reload the entire forest map every day just for the shop tile

lucid iron
#

i thought map patches follow normal asset invalidate rules think

uncut viper
#

i dont think theres any difference in update rates between like, anything

brave fable
#

if that's the case i'll just make it conditional

lucid iron
#

my other idea is

#

give the kot a little stool

#

at least it's not invisible then

calm nebula
#

Ooh!

#

Kitty

brave fable
#

HOW do u still have that

lucid iron
#

github remembers all

brave fable
#

maybe i just imagined the whole locations-dont-invalidate-every-day thing

calm nebula
#

You imagined it I assume meow!

brave fable
#

is there any solid rule about using spring as a default schedule key instead of default?

#

i remember reading someone say something about that somewhere

uncut viper
#

iirc spring is the default?

brave fable
#

spring is, but so is default

uncut viper
#

i didnt even know default was an option so i will bow out of answering here

brave fable
#

spring it is 😌

latent mauve
#

The important thing is if you ever don't have a spring schedule everything breaks, so you can leave out "default" but never "spring"

brave fable
#

huh, the cat has had default only for this long

latent mauve
#

Then luckily you have never had anything that needed to fall back?

brave fable
#

this is the complete schedule now:```json
{
"Mon": "GOTO shop",
"Sun": "GOTO shop",
"shop": "0 33 96 2 blueberry.SailorStyles.Anim.Standing/1240 33 96 2 blueberry.SailorStyles.Anim.Sitting/1830 33 96 2 blueberry.SailorStyles.Anim.Drowsy/2020 33 96 2 blueberry.SailorStyles.Anim.Snoozing",
"spring": "0 Forest -999 -999/2400 Forest -999 -999"
}

#

previously default instead of spring

latent mauve
#

I wonder if CP or SMAPI is automatically aliasing default to spring then?

hallow prism
#

basically spring is needed for NPC when they return to a schedule after something special changed their (like going to GI)

light bramble
#

Question, for adding animals, this isn't a "path" right? Like this is ok?

"IconTexture": "{{ModID}}/Pets/Icons",```
brave fable
#

thasnks, suppose it doesn't make a difference here then SDVpufferthumbsup

hallow prism
#

it's better to be safe than sorry in case another game feature or modded one may use it too

light bramble
#

Ok but this is good? Like CP won't think it's a path? I'm kinda taking some creative inspiration from Ichor

brave fable
#

what do you mean 'think it's a path' SDVpufferthinkblob

hallow prism
#

i was answering to blueberry

uncut viper
#

there is no difference between calling it "{{ModId}}/Pets/Dogs/Boo" and calling it "whatevername"

hallow prism
#

i have no idea what you meant either

uncut viper
#

its not a pathg

#

the slashes do not mean anything

#

you can remove them entirely and it will work exactly the same

#

(so longf as your load matches obv)

light bramble
hallow prism
#

hu, i don't think i get what "path" means then

uncut viper
#

its not like "assets/File.png" is a path

brave fable
#

yeah so the asset name/key is what you're providing here, and the only requirement for it is that it's completely unique and generally meaningful

uncut viper
#

when you give an asset a name in your Load its just taking your one thing and putting a label on it

#

that label just happens to have slashes in it

hallow prism
#

but you need that to match with where the game will search the texture

light bramble
#

I'm kinda following what Ichor did for their cat mod. And they have "Texture": "Mods/{{ModId}}/Cat", "IconTexture": "Mods/{{ModId}}/Icons",
I just wanna make sure that what I am doing is good too...

uncut viper
#

its not adding anything to a folder

hallow prism
#

it's not the folder path but it's the game content pipeline (insert synonym here)

light bramble
#

And I wll say that the game has "Texture": "Animals\\dog", "IconTexture": "LooseSprites\\Cursors",

uncut viper
#

there is zero reason to have the texture names start with Mods/ people just do it bc convention

calm nebula
#

Yeah

#

Is old convention

uncut viper
#

basically if what you're using does not have a file extension (.png, .tmx, etc) then its not a file path. its just a long name for a thing

light bramble
#

Should I just do {{ModID}}.BooTex?

uncut viper
#

you can do literally whatever you want

brittle pasture
#

Using a png file has two steps:

  1. Load it into an asset name
  2. Use that asset in the data
    The name you created in 1 is what you're passing, and your code is step 2. It doesn't really matter what it is named (though of course you want your mod ID in there to prevent collision with other mods)
uncut viper
#

but it is recommended to have your mod uniqueid in there somewhere as blueberry mentions

#

(and selph)

light bramble
#

Ok then Imma stick with the {{ModID}}/Pets/Dogs/Boo

#

XD >_<

uncut viper
#

as long as you remember then that the name of the texture is not "Boo"
it is "{{ModID}}/Pets/Dogs/Boo"
the whole thing is the name

light bramble
#

This is all so confusing for me and idk why lol

brave fable
#

it took me a while to understand paths/assetnames and all in the content pipeline too, but it does click eventually

#

it's really very simple once you understand it

light bramble
#

I mean I have been modding since about 2018ish?

#

maybe 2020?

#

I have to check

brave fable
#

2019 here haha

#

your mileage may vary

light bramble
#

LOL ok ok my first ever message was in 2019

#

yeah I started making mods in 2020

#

Ok but another question. for the "IconSourceRect" does the X,Y corrolate to the bottom left or top left corner?

brave fable
#

always the topleft

brittle pasture
#

top left

loud ice
light bramble
brittle pasture
ocean sailBOT
#

Log Info: SMAPI 4.1.8 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 12 C# mods and 41 content packs.

brittle pasture
light bramble
loud ice
#

oof my bad

light bramble
#

Do we not have a command for the json link for people? XD

brave fable
#

(it's not the issue, but your item+cropimages patch is using the target ModsRoseloves109.DreamCrops/assets/Iron_Ore_Seeds with a missing /)

brittle ledge
light bramble
#

hmmm ok

loud ice
#

OOf thanks blueberry

#

Youre the Queen

light bramble
#

Also Tai, I think I'm SLOWLY understanding how to make the i18n stuffs...They need to be in their own folder tho right? Like a folder named i18n?

#

or is it I18n

#

lowercase i or uppercase?

brave fable
#

always lowercase

light bramble
#

See now we need an auto responder that just says "always __" XD

brittle ledge
#

yes, you should have one file in there called default.json that has all the text strings you want translateable.

#

Jorts and Jean's current version has it if you need an NPC example.

brave fable
#

squish squash, another lazy sunday

hard fern
#

Is jorts and jean the go-to example NPC mod at this point XD

light bramble
#

awesome! Once I finish with this simple mod for adding my pets I will look into it

uncut viper
#

(you CAN split your i18n up into multiple files now too if you have a lot of things to translate)

brave fable
hard fern
#

XD that would explain it

#

You can split up your i18n now?

light bramble
#

Also also also. Does dialogue just repeat over the years????

brave fable
#

dialogue generally repeats unless made conditional or year-specific

#

a Mon entry will play every monday, a spring_12 entry will play on spring 12th every year, etc.

#

they don't actively repeat, they just play whenever their key matches

light bramble
#

Wish there was a dialogue helper for npcs like there is an npc builder.

uncut viper
light bramble
#

I've also realized how hard the scheduel is gonna be.....

#

DANGIT

hard fern
#

Oh well that's neat. My default.json is so long, even i have trouble managing it...

brave fable
#

aehhh you can make the schedule as basic as you like. just add different things to it whenever you get an idea

loud ice
brave fable
#

post your json validator page link here!

ocean sailBOT
#

Log Info: SMAPI 4.1.8 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 12 C# mods and 41 content packs.

brave fable
#

not the log!

#

!json <-- this onew

ocean sailBOT
#

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.

loud ice
#

!json

ocean sailBOT
#

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.

hard fern
#

...

brave fable
uncut viper
#

(the biggest downside ive found to splitting up your i18n is if a user just drags and drops the new files into their mod folder, theyll have both top level and folder structure i18n, which isnt allowed. and apparently SMAPI prefers the top level ones if it finds both and suggests reinstalling the mod entirely to fix it, instead of using the folders instead :v)

loud ice
#

Sorry i copied the wrong link XD

uncut viper
#

(i wouldve done it the opposite way since i figured if a mod suddenly had folders and top level, it probably means they added folders since thats the new one... but c'est la vie)

hard fern
#

If you use folders for i18n from the get go, would users still have that issue?

uncut viper
#

nope

#

its only bc if you use folders, all your i18n for every language has to use folders

#

and vice versa for top level

lucid iron
#

Tbh i would only think of splitting things up if my i18n reaches like 1k lines

uncut viper
#

so if you have both it has to choose one to go with, and it chooses top level

#

which means if your new i18n from the update you just made is only in the folders, then... they dont get used

#

smapi also only logs it as a warning, which like, i guess it kind of is, but...

#

i split up my i18n for my books mod so its much easier for me to find where things are since the file was getting too long for me, but also mostly because it means i can have one i18n file called "untranslated.json" in the other language folders, and translators will know immediately what still needs to be translated, bc its all in that file

#

which is where i can put new strings from new updates

brittle ledge
hard fern
#

I remember this discussion earlier, but don't really want to have to search for it, for making custom engagement lines?

faint ingot
#

Do you think I should have the farmer be stuck in there if they don't leave in time? Right now I have a warp out but...

hard fern
#

How would one go about that

lucid iron
#

But button wouldn't your translators have to sort the key into the correct file going forward

uncut viper
#

nope

lucid iron
#

Unless the plan is you doing it for em

uncut viper
#

every file just gets added to the same dictionary

#

if theres a dupe it gets ignored

brittle ledge
#

I don't think you can lock the farmer in but I wouldn't recommend it either way

lucid iron
#

Then u just have translated keys no?

#

In untranslated.json

uncut viper
#

the untranslated.json is for the translators convenience but its not what i use in the mod itself

faint ingot
#

I mean, I definitely can, unless they have a scepter or warp totem...

brave fable
uncut viper
#

if they send me a translated untranslated.json then i am the one that moves it into the correct files after

#

which gets packaged into the next update i release

brave fable
#

(rose's mod)

uncut viper
#

uhh im not sure about the \r\n\t stuff

#

like i know what those do in text files obv but i dont know what CP thinks of them

#

some of those target names are missing commas separating them

brave fable
#

canvas size looks fine SDVpufferthinkblob

#

128x32

light bramble
#

Ok so like I know this is a SMALL thing, but LOOK THE MOD WORKED!!!!

uncut viper
#

also RE locking a farmer in: if a mod did that i would uninstall it

hallow prism
#

congratulation on progress!

brave fable
#

congrats!

light bramble
#

My doggos are now IN THE GAMEEEEE

loud ice
light bramble
#

Next step...get my other doggos in the game

brave fable
tribal umbra
#

hii! when doing a map, how do i specify from which file i'm using a tilesheet in the code? the map i'm doing has multiple tilesheets files, and each of the file has tilesheets with a unique number in the file, but some of the files has a different tilesheet with the same number. Rn i'm trying to use tilesheet 416 but it's loading one from the landscape vanilla file not from the mod i want. The code is like this " "NightTiles": "Front 64 45 416",

uncut viper
loud ice
#

i guess i have to remove the crop then :/

brittle pasture
#

yeah, missing comma on end of line 72 of the content.json file

#

(was busy 5 mins earlier hence late reply)

uncut viper
#

i was only looking on smapi.io so theyre all on line 30 for me SDVpuffersquee

brave fable
#

that one ^

loud ice
#

I gonna see if its the coma

#

if not then i have to remove and rewrite the code again :'}

#

FINALLY LOL

#

the mods works

brave fable
#

another satisfied customer SDVpufferchickmayor

loud ice
#

Now people can grow pearls XD

loud ice
brave fable
#

he runs this town 😌

loud ice
#

Thanks guys :3, everyone in the modding community is chill

loud ice
#

Perfertion here baby SDVpufferwow

faint ingot
#

The hazards of trying to make your mod compatible with another mod SDVpuffersob . Didn't realize this couch was missing in SVE.

latent mauve
#

Thankfully it just looks like you need to move them over one tile to the right in SVE for the chair?

hallow prism
#

just an head up, i believe wren may sit here sometime

#

@brittle ledge do i remember right? i think you got a similar issue so it's why it feels familiar

hard fern
#

😔 thinking of cutting out the seasonal outfits for my npc. I'd rather focus on dialogue

hallow prism
#

it's not really how seasonal outfits works, once they are cut they work only for summer, you would need to resew them for winter

#

joke aside, yes, focus on what you have fun to make

#

seasonal outfit can be more or less work depending of what you do, but honestly i don't really care if a mod don't have them, they are a +, not the main thing

brittle pasture
#

whoops

uncut viper
#

whoops what, whats wrong

lucid iron
#

the furniture dimension

#

now make them aggressive

brave fable
#

ah yes the read-only furniture catalogue

hallow prism
brittle ledge
#

you have to move back one tile for LUTI, another interior mod, and apparently also SVE

#

(but also yes she could potentially conflict with Wren if she sits there during a weekday evening)

shy trout
#

im getting abck into modding after about a year, the last time i was modding, it was 1.5 and we used BFAV to make custom animals. i know 1.6 shook up a lot of animal coding, so is there a new program to use?

ornate trellis
#

CP

#

CP ate a lot tbh

brittle ledge
#

they're doable in CP now! Silvermoonchan has a lot of BFAV conversions you could reference.

brittle pasture
shy trout
brittle ledge
#

(yes, I am, thank you SDVpufferheart )

hard fern
#

I sure love Furniture

brave fable
#

a full set 🥳

brittle pasture
brave fable
#

honestly just release these test objects as the most confusing mod pack ever

uncut viper
#

i dont know why but i feel like the table feels pain throughout this process

brave fable
#

cjb item spawner is also capable of experiencing agony and regret when you resize the game window

lucid iron
#

did u give any thought to FF's multiple placed item feature monS

brittle pasture
#

no, and I will likely not support it

lucid iron
#

but at least it no die right

brittle pasture
#

probably SDVpufferclueless

nimble marlin
#

anyone knows what is the audio cue id of the earthquake that unlocks the SPA?

brave fable
#

that'd be thunder_small

lucid iron
#

is the best way to detect if player has at least 1 of a thing still just

#

utility for each item

uncut viper
#

like, anywhere in the world?

lucid iron
#

yea

#

i was thinking of making a progression mode for machine mod

#

so i hide say keg until player makes or obtain a keg

brave fable
#

there's Utility.doesItemExistAnywhere, which is ofc foreachitem

uncut viper
#

you could patch the behaviour for picking up an item to add individual mail flags for every single item they ever pick up if you wanted

lucid iron
#

this is a very button suggestion but it does seem like the least amount of calc Dokkan

uncut viper
#

it is a very me suggestion but i do also think it may actually be better than looping over everything always

#

as long as you dont mind having a mess of a mailbox dictionary

lucid iron
#

my kneejerk thought was like

#

foreach item once on save load

uncut viper
#

also it kinda works how the crow shop works so

lucid iron
#

do some ??? to update that during play

calm nebula
brave fable
#

just update once each day, you don't really need instant updates do you

lucid iron
#

i would like instant updates

calm nebula
#

(So in my case as soon as a fruit tree or fruit entered the inventory.)

#

In that mod I had a multiplayer message system set up to broadcast that info lol

lucid iron
#

hm although inventory changed has that problem with inability to detect new things

#

its fine for my purpose which is "obtain once"

uncut viper
#

if you go the mail flag route you dont need to care whether its new SDVpuffersmile

lucid iron
#

i was thinking i do inventory changed + mail flag LilyDerp

#

well, maybe not even mail flag

#

i have 2 other caches for things what is 1 more

uncut viper
#

1 more is the inability for other mods to access ur mail flags

lucid iron
#

they cant have it

uncut viper
#

is that a fuckin challenge

lucid iron
#

it's a sekrit to everyone except button

uncut viper
#

oh ok thats fine

lucid iron
#

i also wonder about like

uncut viper
#

new in BETAS v3.0: Spiderbuttons.CheckChuCaches action

calm nebula
lucid iron
#

is there a soft limit on number of mail flag before game starts hurging

uncut viper
#

whats the max limit on a dictionary

calm nebula
#

In case mod installed mid save

#

Never did though

uncut viper
#

i dont think its something to worry about

#

dictionaries use hashtables anyway dont they. so it shouldnt really matter how much stuff is stored in them right. at least not until you get into absolutely absurd numbers?

lucid iron
#

how do u reflect into someone else's internal static class anyways

uncut viper
#

same way you reflect into anything else

lucid iron
#

im sure there's some way but it was pretty annoying

#

when i was doing the sid thing

uncut viper
#

if you want the easy way then you can just search every assembly for a type in a namespace

#

or you can bank on the fact that SMAPI keeps a list of every single mods assembly

#

and just grab it through there

#

then you just find the field like you would normally

lucid iron
#

oh smapi knows the assembly Bolb

#

for some reason i thought it just knew about the ModEntry : Mod class

teal bridge
#

dictionaries use hashtables anyway dont they.

Kinda-sorta-mostly-don't-rely-on-it

uncut viper
#

i will keep this in mind if i ever store millions of items in my dictionaries

teal bridge
#

Actually, the problem with millions of items is the hash-table-ish implementation, since a copy of each key needs to be stored.

#

(I have stored millions of items in dictionaries.)

lucid iron
#

Button gonna make the first sdv mod to have a redis dependency

uncut viper
#

thats what i meant, its not somethin i expect to need to worry about whether or not i can rely on it until i get to that point

teal bridge
#

Forget Redis, there is stuff like FASTER that doesn't require external dependencies. But a lower-tech solution is just to compress keys.

#

And yes I understand this is a theoretical, YAGNI problem for modders.

rancid musk
#

(Also forget redis because the company running redis these days is doing not so good things and you should use the oss fork instead.)

teal bridge
#

Yes, also that.

#

Khloe, since you're online anyway - I don't want to bug you with a ping, but any chance of ModManifestBuilder seeing an update to the build tools to resolve the obnoxious security warning in VS/dotnet?

rancid musk
#

Yeah I can look into that soon, though I'm honestly not sure what's happening there.

teal bridge
#

It's a silly transitive package dependency on an ancient version of System.Drawing.Common

rancid musk
#

Yeah. Which is there for... whatever reason, lol

#

I probably need to look at what ModBuildConfig is doing again and compare the csproj

teal bridge
#

Well, it's been removed in the newer build tools.

brave fable
#

system.drawing my nemesis

teal bridge
#

That's why updating the package will resolve it - the dependency is no longer there (because it should never have been there in the first place).

rancid musk
#

Wonder if there's anything else I need to fix. Can't immediately think of anything.

lucid iron
#

i never seen this System.Drawing.Common thing

teal bridge
#

Nah, I had to deal with this in a few other projects, the old version of the build tools package just had an annoying mess of dependencies that Microsoft finally fixed, and decided to "deprecate" the old one by making the vulnerability public.

lucid iron
#

is it a vs specific problem?

teal bridge
#

There shouldn't be any changes required on the caller side.

teal bridge
#

Plus VS shows an annoying alert panel for it when you open the project (Rider and VSCode don't).

lucid iron
#

oh i always build with dotnet build

teal bridge
#

It's... really no big deal, just a nuisance.

#

dotnet build will definitely print that warning. I suspect you are not paying attention to warnings.

lucid iron
#

think nop it doesnt

teal bridge
lucid iron
#

maybe linux thing i dunno

teal bridge
#

(and so on - the transitive dependency is through the MMB, which is through the build tools, which is through 3 or 4 other packages, one of them is System.Windows.Extensions I think)

lucid iron
#

there was this warning i been meaning to ask about

~/StardewUI/Framework/obj/Debug/net6.0/StardewUI.SourceGenerators/StardewUI.SourceGenerators.DescriptorGenerator/View.g.cs(197,31): warning CS0618: 'View.IsFocusable' is obsolete: 'Use Focusable instead of IsFocusable when interacting directly with a concrete View.' [~/StardewUI/Framework/StardewUI.Framework.csproj]
#

it looks like it should stay for backwards compat?

teal bridge
#

That has to do with the descriptor source generator. I'm just being lazy about that warning. It's not a real problem.

#

IsFocusable is obsolete but it still has to be implemented, so... yeah. I'll get around to fixing it some day.

#

(Or just removing the original property if no one is still using it.)

uncut viper
#

"I suspect you are not paying attention to warnings."
"I'm just being lazy about that warning."

teal bridge
#

Yes. Part of it is "do as I say, not as I do". But also part of it is that warnings proliferate due to warning noise; since I'm already seeing 10 warnings, I'm less inclined to fix my 1.

#

I admitted it was laziness, didn't I?

lucid iron
#

i genuinely don't see the modmanifestbuild warning tho blobcatgooglyblep

calm nebula
#

You'd love thr 2k+ warnings my repo current has

lucid iron
#

mystery

calm nebula
#

||I hate those warnings||

teal bridge
# calm nebula You'd love thr 2k+ warnings my repo current has

I've been through that at work. Been on teams that didn't care about warnings, and just let them pile up. Or worse, monorepos with an upstream dependency whose team didn't care about spurious warnings, or just expected everyone downstream to drop everything to deal with their new warnings.

#

It's a real problem when you need to debug something. Good luck finding your one relevant warning in the soup of 10,000 junk warnings.

calm nebula
#

I prefer to get down to warnings 0 but I would like to declare warnings bankruptcy

#

Oh wait, I did

#

(90% of them are from stylecop too.)

teal bridge
#

Yes yes.

#

I don't count style warnings as warnings... are they actually set up as warnings and not suggestions?

calm nebula
#

Yeahhhh

teal bridge
#

Hah, well, that's on you...

calm nebula
#

yeahhh

#

part of the problem is that stylecop is aging (it doesn't, say, understand records at all.) so

#

I Should TM switch to something else but then it becomes something else I Should TM do and I don't wanna (insert whining voice.)

teal bridge
#

I have not used stylecop since ever. Since it was called fxcop. Actually, I'm not even sure if they're the same tool or if it diverged at some point. That's how long ago I stopped paying attention.

#

I just throw on csharpier-msbuild and call it a day. Could not care less about nonsense like perfect consistency between var foo and int foo.

calm nebula
#

Doesn't help VS randomly crashes my computer these days

#

Lol

#

I think the universe is telling me something

teal bridge
#

That you need a new computer? I don't get random VS crashes.

uncut viper
#

another cup of coffee oughta fix it

calm nebula
#

I mean, yes, I could upgrade my computer but I'm loathe to put money into it when I don't think I use enough to justify

teal bridge
#

Fair enough. Same reason I don't upgrade my car.

#

Still, if my car were randomly crashing, I might upgrade anyway.

calm nebula
#

I put my name down for "possibly buying a laptop off my workplace if one comes up" but we don't think one will soon

nimble marlin
brave fable
#

i may have gone slightly overboard. last one i promise SDVdemetriums

teal bridge
#

lol, it's "Where's Waldo" except Haley is Waldo.

lucid iron
#

i need the creacher on the wall

brave fable
#

long artemis is looooong

#

haley is desperately trying to blend in

blissful saddle
#

that giant Luna head is awesome

hard fern
#

Lo

#

Long artwmis

blissful saddle
#

he is trying to reach the moon by himself

latent mauve
#

Can I put in a future request for Diana or the Amazoness Quartet plushes? XD

brave fable
#

sorry, i haven't watched past R SDVdemetriums

lucid iron
#

why does my brand new save own 33 casks LilyDerp

#

and now i own 264 of em

teal bridge
#

You're going to need a bigger basement.

lucid iron
#

does game just

#

create 8 cellars...

calm nebula
#

yes

unique sigil
unique sigil
#

in general when using a custom tilesheet you always set a dependency, bc otherwise you would have to put the assets in your release folder, which afaik is forbidden in all custom tilesheet mods (or at least ones i've ever used)

brave fable
#

oh that's a nuisance, i wanted a passable furniture but setting the collision size to 0 0 means it just gets a 1px bounding box in the bottom left

#

maybe he can be a rug instead

#

actually yeah 0 0 decor is bad, this flat cat can't be picked up again

lucid iron
#

cat behavior

calm nebula
#

awwww

#

whata bout making a pet

solid ocean
#

Im having problems converting CP-A mods to Spacecore. They dont animate after converting

lucid iron
#

u really have to post the convert

#

we cant help you off a general statement like that

brave fable
#

actually diana cat pet would be way too cute

#

artemis has a job so he's not on the menu. need him for sailor styles shop

calm nebula
#

real question, bluebs

#

are thesee sailor saaturing characters

#

(also I have to say my keyboard is on the fritz)

#

thus the questionable tping

brave fable
#

i don't know what saaturing is SDVpufferthumbsup

hard fern
#

sailor moon characters 🤔

calm nebula
#

sailor saturn

hard fern
#

sailor saturn is one of the sailor scouts.

calm nebula
#

god I'm finally updating my ubuntu

latent mauve
calm nebula
#

and I missss uni internet lol

#

22 fing minutes to download the ubuntus

tiny zealot
brave fable
#

sailor saturn appears like 100 episodes into sailor moon lol

#

literally not seen her appear yet

calm nebula
#

blubs I'm old and ttirrreed aaandd have nevverrr watched sailor moon

brave fable
#

it was made in like 1996, if you've watched it you are old

#

u have no excuse

hard fern
#

🤔 blueberry did you not fully watch all 200 something episodes of dailor moon

teal bridge
#

Was that before or after DBZ came on the scene?

lucid iron
#

i was a cardcaptor sakura child DokkanStare

#

and doraemon

teal bridge
#

Trying to gauge how old I am by westernized anime standards.

brave fable
#

i'll be honest with u shrimpy it was a struggle to finish the second season when chibiusa came in

#

idk i never watched dragon ball haha

hard fern
#

😭 ive finished the whole thing

calm nebula
#

dbz?

hard fern
#

dragon ball z

brave fable
#

dw i'm watching ranma '89 now which also has 200 episodes

calm nebula
#

damn ddo I need aa winterfest name

hard fern
lucid iron
#

dbz is 1989 while sailor moon is 1992, but idk when each made it over to the west

#

pmuch same era anyhow

calm nebula
#

hey, annd lady gaga loooks old now

hard fern
#

i told myself i'd watch sailor moon crystal too

calm nebula
#

I remember listteenning tto herer r mmus

hard fern
#

i got halfway because the other seasons weren't out at the time

long linden
#

guys, quick question how do you sell tiger slime eggs?!

hard fern
#

?

#

the... shipping bin?

calm nebula
#

also thee kkkkiidids haven't lisisstened to briiittney spears

#

so I'm bold

uncut viper
long linden
#

thanks

hard fern
#

😔 how did you get lost in here

calm nebula
#

Iii assummme sell in a shop?

long linden
#

my bad

calm nebula
#

orr something

lucid iron
#

atra are you a evil super AI getting shut down manually

brave fable
calm nebula
#

yes

lucid iron
#

are you gonna start singing daisy bell soon

calm nebula
#

save me plz

#

I don't get the reference

uncut viper
#

you of all people not understanding the daisy bell thing is surprising

calm nebula
#

"Daisy Bell (Bicycle Built for Two)" is a song written in 1892 by British songwriter Harry Dacre with the well-known chorus "Daisy, Daisy / Give me your answer, do. / I'm half crazy / all for the love of you", ending with the words "a bicycle built for two". The song is said to have been inspired by Daisy Greville, Countess of Warwick, one of th...

uncut viper
#

correct

brave fable
#

will vouch og ranma is hilarious & very weird

solid ocean
latent mauve
#

!json

ocean sailBOT
#

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.

latent mauve
#

Share your content file so we can check to see if there is anything missing

solid ocean
#

Kk gimme a bit. Not at pc rn

faint ingot
#

so it's kind of frustrating that a character's offset at their scheduled destination depends on the direction they were coming from. Is there a way to force their position to be independent of that? if that makes sense

#

like I may have to have an animationDescription that accounts for approaching the tile from the NE, and a different one approaching from SW

latent mauve
#

Are you not using the facing direction?

faint ingot
#

I do put in a facing direction but does that change the offset? I guess that didn't occur to me but that makes sense

latent mauve
#

You can also change the offset in the animation piece of the schedule string

faint ingot
#

OK no that's not it.... here's what I mean. Here is one schedule and the result: 000 Saloon 14 21 1/610 Saloon 19 20 3 {{Shannon}}_stool_bar

latent mauve
#

Ah

faint ingot
#

here is another schedule and the result: 000 Saloon 33 18 0/610 Saloon 19 20 3 {{Shannon}}_stool_bar

#

in both cases I am using the same destination coordinates and animation / offset

#

but the travel direction is opposite

tiny zealot
#

oh this is just a regrettable(?) feature of how NPCs determine that they're done moving

#

depending on the direction they enter the tile from, they can be off by several macro pixels in that direction

faint ingot
#

right, so I can plan to have two different animation descriptions depending on where the NPC is traveling from, I was just seeing if there was a better way, and I guess there isn't

tiny zealot
#

yeah i don't think so

faint ingot
#

OK thanks for confirming

uncut viper
ocean sailBOT
#

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.

faint ingot
#

also @tiny zealot I noticed your use of the word 'macropixels' and I'm not sure what that means, but I did notice the offset didn't seem to map 1:1 with the character pixels. Can you explain? Like if I want to move my character one 'sprite pixel' to the left is that like 5 or 10 'macropixels'?

tiny zealot
faint ingot
#

no apology needed thank you just something I didn't understand, and now (maybe) I do, thanks.

hollow vessel
#

Weird error its says a mod don't have manifest json files how do I fix

lucid iron
#

!mh

ocean sailBOT
#

For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).

lucid iron
#

Usually re-download fixes that

tiny zealot
#

characters are rendered at 4x but move by screen pixels, so just saying "off by a few pixels" could have been ambiguous and i felt the need to clarify which pixels i meant

hard fern
#

SDVpufferflat i just banged out half a heart event after not having any idea for weeks

#

🤔 sometimes i wonder if i have too many

brave fable
#

usually u dont get events at half a heart

faint ingot
#

I assume he means half of the event, not an event that happens at half a heart

hard fern
#

ahaha, yeah half of my npc's 8 heart event

brave fable
#

hmmmm. i dont think so

hard fern
#

😔 you don't think so?

brave fable
#

nope SDVpufferpensive

tiny zealot
#

i have had this experience

faint ingot
#

I still need marriage events for my two NPCs but I haven't felt inspired yet

#

and you don't wanna just half-🫏 it because committing to marry the NPC shouldn't be a disappoinment

slender badger
faint ingot
#

sorry my mistake

slender badger
#

If you don't know and someone doesn't have their pronouns in their Discord bio, it's best to use they/them

hard fern
#

I don't really mind what people use for me

#

So i never really thought to put it in my bio

shadow pagoda
#

Is there a way to check if the player has requested to upgrade the farmhouse? Like right after you press "yes" in the first picture? I found upgradeLevel and currentlyDisplayedUpgradeLevel in the FarmHouse class, but that seems to only upgrade once the farm physically has been upgraded.

slender badger
uncut viper
hard fern
#

🤔 The fact that I don't even remember... Lol

#

It must have really been ages

atomic vale
#

where are the sprites for the item crops stored?

faint ingot
#

I answer to it/that SDVitemblobfish

slender badger
atomic vale
slender badger
#

Welcome to modding 😆 It's a running joke that everything you're looking for is in either springobjects or Cursors lol

atomic vale
#

almost everything is

tiny zealot
#

.q 6218

patent lanceBOT
#
#6218

It's not in Cursors
There's no way it's in Cursors
... it was in Cursors

teal bridge
#

The only things in springobjects are... well, objects.

#

Cursors is far wilder.

slender badger
#

And the boulders for some reason

calm nebula
#

Also big rocks

#

And some animation frames for some reason

atomic vale
#

i am surprised that it is not just one mega sized photo

calm nebula
#

Like I think the totem warp effect is in there

#

My favorite is still maps/menutiles

atomic vale
#

also the beach farm boxes are in there

calm nebula
#

Sure, it's 100 % menu tiles

brave fable
#

the stars and spirals from the totem warp are definitely in cursors. not far from alex's mum, construction guy, some seagulls, and the entire ocean

atomic vale
#

in objects

hard fern
#

Ughh menu tiles

calm nebula
#

But why is in maps

hard fern
#

Did you know i was looking in loosesprites for so long

#

Looking for the menu tiles

calm nebula
hard fern
#

And i never found kt

atomic vale
#

do artifact spots only have 1 sprite?

#

nvm

#

why is only one frame of the artifact spot in spingobj?

brittle pasture
#

because

slender badger
#

For the error item artifact spot

atomic vale
#

oh.

#

wait then can you get all of the ones in springobjs?

brittle pasture
#

there are unused sprites in there, namely the smashed sprites next to some of the items

brave fable
#

nope, the only item-break animations are from TileSheets/Animations

atomic vale
#

wow there are a lot of unsed

brittle pasture
#

also the meat sprites are unused

atomic vale
#

slised melon for example

calm nebula
#

Technically the broken egg is used ||in Sam's heart event||

hard fern
#

Lol

#

Haley's bracelet is in there too, right?

atomic vale
#

wait there is an empty plate!?

hard fern
#

Ys

brittle pasture
#

I guess CA initially planned for every item to be breakable, before calling off the idea after texturing the first 30 or so, out of 600

atomic vale
hard fern
#

In springobjects

atomic vale
brittle pasture
#

6 heart event, she asks you to find her grandma's missing bracelet

hard fern
#

Iirc it even has a description and everything

calm nebula
#

Frankly I'm glad that isn't in vanilla

brittle pasture
#

there's even a function for rotting items in the code, though its only usage AFAIK is to rot the pumpkin lamps

atomic vale
#

is top left unused?

brittle pasture
#

the fabled Weeds

brittle pasture
#

(yes it's unused)

atomic vale
slender badger
calm nebula
#

I really wish the golden clock stopped my pumpkins from decaying tbh

#

I just want to decorate 😦

uncut viper
#

sounds like an easy enough mod to make

atomic vale
#

thx

brittle pasture
#

must... resist... spinning up... new project...

shadow pagoda
calm nebula
#

(Yes I'm aware that is a 30 s harmony patch)

#

But also like.

brave fable
#

there's really nothing stopping you from adding a new identical object via CP with the jack o' lantern sprite SDVdemetriums

#

think of the DP.

uncut viper
#

tbh im kinda surprised i couldnt immediately find an already existing mod that stops them from rotting

latent mauve
#

You should remove AllowMultiple unless your intent is to make it true, since the default value is false anyway.

patent lanceBOT
#

@latent mauve: You can make a mini-mod specifically to add a shop entry that I can change the item queries on for what should probably be standard food tags. (5d ago)

uncut viper
#

uber-bot changes "I" to "you" on its own?!

#

the wonders of technology

brittle pasture
#

would it detect "Richard I King of England"

latent mauve
#

It also changed you to I on its own!

uncut viper
#

i didnt even notice that

#

incredible

#

guess uberbots making a mod

latent mauve
#

Nah, Uber wants to use my mod, based on this wording. xD

uncut viper
#

they need to make a mod to change the item queries on it!

teal bridge
#

Uber has been upgraded with GPT technology.

#

It's now almost as smart as a cockroach.

latent mauve
#

They don't, though, Button! I MADE the mod already and it uses predefined config options to make dynamic tokens that are used in the Item Query for the context tags

#

I also abandoned the idea of actually doing anything further with it because not a single food mod that I downloaded to test with used a single consistent context_tag

#

which was very depressing

uncut viper
#

but Uber wants to change the item queries, you see. so it needs to make another mod to patch over your edits

latent mauve
#

Nah, you change the item queries through the config

#

(that part did work)

uncut viper
#

i guess itsu p to uber to clarify whether it means that or means it wants to change the e ntire item query field entirely

#

we'll get an answer soon im sure

latent mauve
#

LOL

lucid mulch
#

.choose I meant via config, I meant change the item query field entirely

patent lanceBOT
#

Choose result: I meant change the item query field entirely

uncut viper
#

wellll welll welllllllll

latent mauve
lucid iron
#

Remind me in 5 years to steal the death sculpt of Richard I the Lionheart

patent lanceBOT
#

don't you have like a cell phone or something chu2.718281828459045235360287471? it can do the same gosh darn thing and then I can be lazy. but okay, I'm on it. (#6405983) (5y | <t:1891317238>)

uncut viper
#

did you think you were gonna see the response right away

#

like a preview

lucid iron
#

Yes Dokkan

brittle pasture
#

uber is too smart unfortunately

uncut viper
#

you better not cancel that reminder

lucid mulch
#

better not leave the server until you receive it too

uncut viper
brittle pasture
#

because 5 seconds didn't work

uncut viper
#

i like my theory better

brave fable
#

do you think uber would respect 300 seconds. or isn't he all that smart

lucid mulch
#

does not respect the keyword second at all, can however give absolute time or just 1 minute

normal heart
#

how would i go about making a content patcher mod that edits an existing item example like triple shot expresso to give more health and energy? im new to making mods but have a rough idea how to use json

brittle pasture
#

!cp you would edit the item's entry in Data/Objects

ocean sailBOT
brittle pasture
#

!unpack unpack the game to see where to edit

ocean sailBOT
#

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!

normal heart
#

cheers

lucid iron
#

nonuple shot expresso DokkanStare

latent mauve
#

"Edibility: (Optional) A numeric value that determines how much energy (edibility × 2.5) and health (edibility × 1.125) is restored when this item is eaten." <-- That will be in the Object data for the Triple Shot Expresso

solid ocean
latent mauve
#

Double check your Format number also?

#

I think that's more likely to be the issue, we are currently on 2.4.0, but you should at least try to use the most current version number of Content Patcher for whatever version of Stardew you are targeting with your mod.

#

Your JSON showed 2.0, which is... Very old.

uncut viper
#

2.0.0 is as old as stardew 1.6 is, which really isnt that old. not that im suggesting you dont use the latest when possible, ofc

brave fable
#

(2.0 is equivalent to 2.0.0, which is for SDV1.6.0)