#making-mods-general

1 messages · Page 553 of 1

ocean sailBOT
#

Making mods can be broadly divided into two categories:

Usually it’s easier to start with making content packs, since you don't need to learn programming.

ornate trellis
#

what exactly would you need a tutorial off?

#

most of the time its enough to state what you want to make and people in ehre can tell you how easy or hard it is to pull off and often help too

hollow pine
#

Ok, Im very new and Have been mainly using the wiki and youtube. When it said modID I thought it wanted the Unique ID

uncut viper
#

I have yet to see a youtube tutorial that is updated for 1.6 (not to say they 100% don't exist, but there's very good odds you are using outdated material, especially if it is telling you to use CustomLocations)

hollow pine
#

Chances are pretty good

solar jolt
#

alrighty dighties how possibly could I make these mods

have the texture of these mods as an AT mod

how do I go about that? This is for personal use I do not plan on publishing it I just want to do it for myself

tender bloom
#

it turns out making youtube videos is much more work than typing some words on a wiki (sadly)

hollow pine
#

It worked for the first map but no video has seemed to properly handle how to had a house interior map

lucid iron
hollow pine
tender bloom
#

like I think what you want is:

  1. make matching art
  2. create AT content packs with the matching art
uncut viper
#

Those buildings all seem to be of different sizes though so it'd take more than just making an AT pack

tender bloom
#

There is a wiki for AT

lucid iron
tender bloom
lucid iron
#

AT not rly needed here

tender bloom
#

yeah you could do a straight file replace in the top 3 mods with new art if you want them to match the style of the lower 2

#

the bigger question is how up for an art adventure you are

uncut viper
solar jolt
#

I have no idea how to code so it was mostly to see if I could replace the but hut, the reptile hut, and the dino hutch with something less uh. Saturated

#

*bug

uncut viper
#

(Or not necessarily the same size)

distant bolt
# ornate trellis what exactly would you need a tutorial off?

Well I had a couple mods in mind and I started getting the tools but then I got hung up on pixel art which led to finding an art program and thus learning it and suddenly I totally forgot about mod making.

But back to the point, iirc there were a couple NPC ideas I had and a small expansion or two. I know they were way too advanced for my skill level and I was having trouble finding a comprehensive modding guide for dummies.

For example, one idea I had was importing characters from other games to SDV that I thought fit the vibe. Another was adding a “Dino Tribe” that would expand on dinosaurs in the desert

latent mauve
#

Yep, confirmed, walking over the tile to change into swimsuit does nothing in an event. Not sure how Date Night got it to work

tender bloom
#

Whether it's a frankensprite off the lower 2 or just from scratch

vocal knoll
#

UPDATE: I don't think you can add more than one item/action to a letter since I tried it with %% in between, % in between, and even a slash in between and it ignores one and triggers the other from the looks of things

solar jolt
#

DANG I was hoping I didn't need to do that. buh, okay I'll just have to see how I can desaturate it in an editor or smth

distant bolt
#

It’s not hard (well there’s a learning curve but i digress), so much as I’m pre occupied atm with a different March challenge

ornate trellis
loud sandal
tender bloom
#

there's also the consideration that those buildings would then not be visually distinguishable from the barn or horse stall or whatever you borrowed them from

uncut viper
vocal knoll
#

yes

solar jolt
#

Oh I have the medieval replacement for everything, I was tryna get it to match that

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.

vocal knoll
#

yeah one sec!

distant bolt
ornate trellis
#

its a good start when you want to do an npc

ornate trellis
#

tbh browsing the wiki in general is a good idea to look at all the tutorials there

distant bolt
uncut viper
loud sandal
mortal blade
#

AND the Dinos still try to bite you. Yet they still crave your affection....

vocal knoll
#

Okay i'll try it with 3 %%%! (And they're flags haha I'm having trouble with those too sicne they're sending without the conditions being validated but thats a whole thing and the Appearance part is in my Content.json)

modest dagger
distant bolt
ornate trellis
torpid sparrow
jaunty shuttle
vocal knoll
# uncut viper You ended the first action with `%%` but then did not start the next action with...

Three %%% worked! I also added a space between "True" and %% don't know if that made a difference but it worked! My item now is now an error and the translation file isn't working but I'll figure that out 🙂 Thank you!!\

(also if it got lost, I said (And they're flags haha I'm having trouble with those too sicne they're sending without the conditions being validated but thats a whole thing and the Appearance part is in my Content.json)

torpid sparrow
jaunty shuttle
#

I hope not- lol

#

Although I hope to still be modding stardew in 10 yrs

loud sandal
#

I wish the modfest happened when I was on holidays lol

mortal blade
#

Except in 10 years it'll be written in C##+ v2035.3

jaunty shuttle
#

Kill me now-

ornate trellis
#

C extra sharp like damasc steel

mortal blade
ornate trellis
#

delicious

mortal blade
#

I think it's time to make some Pizza Soup.

distant bolt
loud sandal
#

That's nice you got into modding after only playing a little while 🙂

jaunty shuttle
#

It's 1000% up to you

mortal blade
#

FOMO? For Official Mutton Only?

lucid iron
#

i think it'd be nice to make something smol Bolb

uncut viper
#

(Fear of missing out)

lucid iron
#

u get badge no matter what

distant bolt
#

SDV kinda saved my sanity from work and I kinda wanted to try my hand at modding since it looked relatively simple enough.

jaunty shuttle
mortal blade
#

Oh... I thought that was CP.... nope. It was SMAPI. Never mind.

jaunty shuttle
#

Lol odd that they didn't just do it in a CP patch

mortal blade
#

Do what in CP?

jaunty shuttle
#

Wait that's you

mortal blade
#

Yes. It was ME!!!! Muahahahahaha!

jaunty shuttle
#

Help i'm stuck in modception

distant bolt
# loud sandal I hear you, same here

The thing that made me really want to make mods was that I couldn’t find a good non-wine/beer brewing mod at the time and wanted to make one of my own, and then a bunch of mods that did that were thrown my way but I still wanna make a cool mod

mortal blade
#

Jajajajajaja

#

I tried with just CP, but I needed to override a few things to REALLY make it work.

jaunty shuttle
#

Ahh ok, well it looks cute so W

loud sandal
mortal blade
#

I think I just copied the original sea crabs skittering, and modified so they could both show up on the beach. And I didn't like the way the original was, so I tweaked it.

hollow pine
#

So i ended up redoing my content.json so it was more in line with the wiki. The main location map is loading but when i try to use the warp to enter the interior map it doesnt work. I'm clearly doing something wrong

tender bloom
#

what does the log say?

brave fable
#

the log, inanimate, remains quietly nonplussed

mortal blade
#

Someone here has played Zork. 😉

jaunty shuttle
tender bloom
#

(i get cute little red errors in my log when i try to go to a location that does not exist properly)

jaunty shuttle
#

Your first mod doesn't have to be large, it just has to exist SDVpufferheart
That's the only baseline

mortal blade
#

Like a clothing brewer for that chest of clothes you've found but will never wear. Just brew them into something colourful and tasty!

hollow pine
tender bloom
#

!log

ocean sailBOT
#

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:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. 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.

tender bloom
#

basically it's the terminal window where debug messages and stuff get logged

mortal blade
#

Same page, different link

vocal knoll
#

Hello again y'all! Any idea why it keeps doing this in the translation file? I tried looking over it and nothing is amiss. There's not even a { anywhere in there and it won't go to the next line of text...

        "RosaliesRibbonForJas": "$action AddItem stardewaly.rosalie_RosaliesRibbon 1 0#Aww, the cute little girl with the green bow liked my ribbon?$1 #$b# Here, she can have it! #$b# Don't worry! I'm like a cartoon character, I got plenty at home!$9",

@uncut viper sorry to bug you again but it started doing this after adding it to the mail! I thought it was a format issue but not sure now...

loud sandal
hollow pine
uncut viper
onyx panther
#

silly dialogue thing idk

tender bloom
#

you can upload your mod using the site in governor's message

#

which would let us also look at it

hollow pine
vocal knoll
# uncut viper I don't think dialogue likes to be started with an action, but I don't know if t...

If it helps heres the whole thing from the Mail... The item didn't work when I had {{ModId}} either but when I removed it ti fixed it but it thought there were extra {} in there so it thought it was looking for an item {{{ModId}}}_RosaliesRibbon not sure if thats a clue?

"{{ModId}}_Jas.RosaliesRibbon.QuestFlag":"Hello, @! This is a test to see if you are able to do something for me! ^ Rosalie's ribbon is beautiful and I want it so please talk to her and get one. Thanks! ^ -Jas -%item quest Jas.RosaliesRibbon.Quest true%%%action Spiderbuttons.BETAS_SetNewDialogue {{ModId}}_Rosalie \"{{i18n:RosaliesRibbonForJas}}\" true %%[#]A Quest from Jas"

tender bloom
#

you nested the map path inside the "CreateOnLoad" field

onyx panther
#

would this work? (just adding some fun additional dialogue lol)

hollow pine
onyx panther
#

the fishCaught one not the event seen

tender bloom
#

or at least, my best guess!

hollow pine
#

oh ok cool, thank you so much ill give it a go

loud sandal
tender bloom
#

if you compare them side by side you should see the nesting thing i said

#

i like to open two tabs and swap between them to get it to be really obvious if i'm comparing things

hollow pine
#

my cat is attacking me right now and he keeps clawing me and trying to eat my hair while im trying to respond

#

so sorry if im slow

tender bloom
#

no worries lol

#

this chat moves fast and I sometimes disappear to do IRL things

#

cat tax?

hollow pine
#

He's on my shoulder purring with my hair in his mouth, clawing my neck and back when i try to get him to stop. it feels like a little more than tax lol

#

He's just a baby

jaunty shuttle
hard fern
#

Mine likes to sit on my mother

#

Her head and chest, more specifically

#

Hes heavy.

ornate trellis
#

theres someone whistling a weird tone outside, maybe i wont go to bed

hollow pine
#

He's very clingy He demands constant attention.

ornate trellis
#

modding suddenly sounds very intrigued at 3:30am

jaunty shuttle
#

Void!!!

hollow pine
#

thats totally not creepy at all and you just have important modding to do

ornate trellis
jaunty shuttle
#

Go sleeps

ornate trellis
#

do YOU want to go to bed when some rando suddenly whistles all creepily outside your window

hollow pine
#

He's just playing you a lullaby, a little tune if you will

ornate trellis
torpid sparrow
ornate trellis
#

wem come back i didnt mean it

jaunty shuttle
#

I mean... what if he casts a spell as you fall asleep and you get isekai'd into another universe? Could be exciting

ornate trellis
#

this whistling is in the top ten of weird shit happening late at night in my area tho ngl. nothing tops the 10pm ice cream truck tho

torpid sparrow
#

who r they trying to sell to

#

children r not out at 10 pm

ornate trellis
jaunty shuttle
#

They will be when they hear the music

#

RIP parents sleep

ornate trellis
torpid sparrow
#

raccoon

jaunty shuttle
#

Raccon are children I can confirm

#

I've been wanting to make a mod where you can have a family without having kids, raccoon would be a great alternative

calm nebula
#

Pelicans are Right There

#

....storks. I'm thinking of storks

#

Which are not in the game

mortal blade
#

stonks?

ornate trellis
#

too late, pelican lore accepted

ornate locust
#

neither are pelicans

mortal blade
#

There are some great ideas for the taking out on the github. 🙂

calm nebula
#

It's called Pelican Town

#

How are there not pelicans

#

Anyways.

onyx panther
#

hey, so, would this work like I think it would?

distant bolt
hollow pine
#

For real though @ornate trellis you safe?

torpid sparrow
ornate locust
#

Good question! Haven't seen any though

ornate trellis
mortal blade
tiny zealot
onyx panther
#

I just want Abigail to have a slightly more "into the farmer" response at 8 hearts lol

ornate trellis
#

now i jsut need to get myself to bed but im sitting rather comfortably

calm nebula
#

You could always do it the i18n + token way tbh

#

If that doesn't work (but the query is better if it does)

jaunty shuttle
#

Your bed will be comfier in 5 mins when it warms up with the blankies

#

Comfier doesn't look real

mortal blade
#

Your bed misses you, Voidy.

#

Ichor: Crab juice is something I never knew I needed. Until now.

#

.oO( But what about crab WINE? )

torpid sparrow
#

scary

ornate trellis
#

anything will be crab one day so why not

tiny zealot
#

fortunately we are all safe from crab wine (for now). the keg is already claimed (for the juice)

calm nebula
#

Late night Friday question....what repeatedly added by mods item would you like to see adopted by vanilla, and why it butter

#

There's precedence in the carrot

mortal blade
ornate locust
#

Age juice in the basement and it makes wine

tiny zealot
#

those are both good ideas, actually

#

maybe when march is over

calm nebula
#

...ewww

hollow pine
#

Im about to throw this monitor accross the room

calm nebula
#

Age the juice in the basement and it fucking grows mold

ornate trellis
#

0.1% of a crab coming of of the keg to pinch you

tiny zealot
hollow pine
#

I used the edited file that were edited for me and now my main location map isnt working

calm nebula
#

That doesn't even make biological sense smh

#

Truffles. Are. Mushrooms

#

Pigs are mammals and do produce milk

ocean sailBOT
#

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:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. 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.

tiny zealot
#

please direct all your complaints at respected stardew modder 6480

tender bloom
calm nebula
#

I WILL direct complaints at 6480

tender bloom
#

hmm, does look like i was wrong

#

can you go back to the old version (right before my edit) and do a patch summary full and post a log?

#

!patchsummary

ocean sailBOT
#

Can you do these steps to provide more info?

  1. Load your save and view the content that should be patched.
  2. Type patch summary directly into the SMAPI window and press enter.
  3. Upload your SMAPI log to https://smapi.io/log (see instructions on that page).
  4. Post the log link here.
tiny zealot
#

(please direct all your complaints about crab juice to the simpsons writers' room in the 1990s)

tender bloom
hollow pine
tender bloom
#

yup

mortal blade
tender bloom
#

you can always do debug warp MAPNAME as well to just check if the map exists

#

it does a fuzzy match

#

so try debug warp orphan or something like that

loud sandal
#

It's a different way of doing it

pale river
tender bloom
#

I don't think TouchAction Warp vs AddWarp is the issue if the error is that the location doesn't exist

ornate locust
#

B U T T E R

hollow pine
#

I did debug warp Orphanage and this happened

#

I’m trapped in the corner

vernal crest
#

That's because you don't have a default arrival tile so you arrived at 0 0

loud sandal
mortal blade
#

YOU are the monster under the bed?

vernal crest
#

You can just use noclip to let you move around. But that shows that the location does exist!

hollow pine
#

HES IN THE WALLS

mortal blade
#

Noclip mod is essential for modding.

vernal crest
#

Or you can redo the debug warp command with coordinates at the end

lucid iron
loud sandal
lucid iron
#

Defend yourself

ivory plume
hollow pine
loud sandal
loud sandal
lucid iron
#

Now you can tell everyone conveniently

mortal blade
#

@tiny zealot Why do I feel the urge to re-skin your portable hole into a police box?

#

😉

hollow pine
onyx panther
#

stupid verb hack thing

#

wait that not be not

#

damni invert this lol

hollow pine
#

The Railroad warp to box canyon isnt working and saying [game] Warp to BoxCanyon failed: location wasn't found or couldn't be loaded. but i can debug warp there

tender bloom
#

Possibly it’s spelled wrong then

#

In the warp command

#

BoxCanyon vs Box_Canyon for example

#

Or {{ModId}}_BoxCanyon vs {{ModId}}BoxCanyon

loud sandal
# hollow pine Yeah

In map load, instead of "Target": "Maps/{{ModId}}_BoxCanyon" do "Target": "Maps/Test_BoxCanyon",
Then change in EditMap the warp location to Test_BoxCanyon

#

Keep it the same

tender roost
lucid iron
onyx panther
#

yeah ik im like half asleep rn I'll prob regret this whole thing in the morning and then go and rip out the entirety of Abby pronoun stuff or something

hollow pine
#

I appreciate the patience with me

fierce vault
#

Evelyn's internal name is Evelyn, isn't it?

#

oh

#

nvm

ocean sailBOT
#

Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 36 C# mods and 92 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

hollow pine
#

So thats both the json and the log

#

No clue whats going wrong

loud sandal
#

Just have all your code use {{ModId}}_BoxCanyon

#

Just trying to narrow it down if it is a mismatch somewhere, but otherwise next step is check if the actual map file is in the right folder

#

Or if the file is exactly named BoxCanyonMap.tmx

fierce vault
#

Have anyone ever messed up an event so badly that the game ignores the entire json because it can't parse it? Asking for a friend!

torpid sparrow
#

there must be an error

loud sandal
hollow pine
loud sandal
# hollow pine The tiled map is called BoxCanyonMap

Yeah so basically you're telling it you have loaded up BoxCanyonMap.tmx and it will now refer to that in the code as {{ModId}}_BoxCanyon so you must use {{ModId}}_BoxCanyon when doing anything with the map. Hopefully I'm making sense, trying to make it a bit easier

tender roost
tiny zealot
fierce vault
#

because the reason was so dumb. This was the culprit:```{ModID}}_Jack

torpid sparrow
#

i do that all the time

fierce vault
#

Literally broke the whole json 😅

ivory plume
vernal crest
# hollow pine I think so

The issue is the warp, right? It's because you need it to be Warp {{ModId}}_BoxCanyon 68 31. You're missing the {{ModId}}_.

#

(Sorry, I missed that XanCreations already said that.)

loud sandal
hollow pine
#

My lack of proper sleep the past 3 days probably isn’t helping either lol

vernal crest
#

(Also, you really don't need one Data/Locations patch per location. You can add them in the same patch.)

hollow pine
#

What is a patch?

#

I have an idea but not positive

loud sandal
vernal crest
hollow pine
#

Ah I see

#

Yeah so I can get into Box canyon but still not the orphanage interior

vernal crest
#

There's nothing in your json to send you to the orphanage interior

loud sandal
vernal crest
#

Do you have it in the box canyon map itself?

hollow pine
#

Yeah so I have the building in the Canyon and in tiled i put a locked door warp to get to the interior of the building which is a different map

tender roost
hollow pine
#

Both maps are saved in the assets folder of the mod

vernal crest
hollow pine
#

ooooh that could definitely be it lemme check

loud sandal
#

But can you get to the Box Canyon? That's the first step, then can add warp for Orphanage after

vernal crest
#

You can't use {{ModId}} in Tiled, which is why I am asking for your unique ID so I can tell you what the location name should be.

ivory plume
tender roost
loud sandal
vernal crest
#

You should

#

In the json

hollow pine
loud sandal
#

I don't 🤣 but I make the name unique so it doesn't cause any issues

#

Error said it was PunkBuggy.BoxCanyon_BoxCanyon.xnb

vernal crest
#

If you use mod id then lookup anything will tell players what mod your maps are from

hollow pine
#

Should I change the name of the Box canyon warp in the Orphanage map properties?

vernal crest
#

Yes

hollow pine
#

PunkBuggy.BoxCanyon_BoxCanyon ?

vernal crest
hollow pine
#

this popped upin the log

vernal crest
#

The reason that you can't use {{ModId}} in Tiled is that it's a CP token and CP doesn't edit the .tmx file so it can't replace the token with your mod's id.

loud sandal
#

I put it in vscode and immediately saw the missing commas lol

turbid plank
#

Looking for some help on this content patch (https://smapi.io/json/content-patcher/ede64dc338e548dd9fbfadea4b7aa51a)

  1. the validator says it's missing the format field but I got a parsing error in SMAPI until I removed the format field. Is Format only for the content.json in the root folder?
  2. any ideas why this first recipe won't load? the object itself loads just fine but it does so without a recipe. other recipes load without issue
vernal crest
#

Can you please share your log instead of copying and pasting individual errors?

gaunt orbit
#

you need the tilesheet to be in the same folder as the map file while editing

vernal crest
#

You shouldn't have any tilesheets in your map folder at any time

#

If you do have them, you should delete them

gaunt orbit
#

in general it's a good idea to just have a separate folder for making maps and then copy the maps into your mod folder

loud sandal
#

You need to go into your map's code and remove the filepaths so it only finds what is in the vanilla game's files

vernal crest
#

I used to recommend having a separate map making folder but with Tilesheetinator none of that is necessary

#

You can make your map in your map folder without any tilesheets or maps moving anywhere

gaunt orbit
#

that's certainly an option too, but you have to do at least one of those things

vernal crest
gaunt orbit
#

otherwise your tilesheets break and your map explodes

loud sandal
vernal crest
#

It's not going to be json related, it's about the file setup

loud sandal
#

Last time it was missing commas

vernal crest
#

But this time it was a missing tilesheet

#

Specifically that the summer tilesheet was missing, which it shouldn't be if the map is pulling the tilesheets from the vanilla content

loud sandal
#

Yeah it's still looking for the tilesheet because the tmx code has the path set to their drive

#

they just need to remove the filepath

vernal crest
#

Yeah so to fix that will involve opening the .tmx file in a text editor and removing the file path as you said

turbid plank
loud sandal
#

But originally the other error about it not loading might be the lack of commas is what I meant

vernal crest
#

But....it said that it was looking in assets and that's where the map is too so there shouldn't be a filepath

ocean sailBOT
#

Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 36 C# mods and 92 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

loud sandal
#

Ok so these two:
spring_AlvadeasTileSheet.png
z_luan.Extras_furniture.png
They should be next to your TMX file

gaunt orbit
#

but only while editing, not in your mod folder

#

or use tilesheetinator

vernal crest
gaunt orbit
#

also you should not be shipping alvadea's tiles with your mod

loud sandal
#

I'm just assuming that Bug has their own version of those PNGs and wants to ship it with their map

vernal crest
#

They cannot

#

That is against the perms of those mods

loud sandal
#

I know, but trying to get down to what the intention is

fierce vault
#

can you offest an npc by pixels to stand in-between tiles on the grid during an event?

vernal crest
#

Yes, the reason I so heavily push Tilesheetinator is that it cuts down massively on the mistakes like shipping vanilla tilesheets or other modmakers' tilesheets in your mod, having tilesheet climbing issues, having seasonal issues

#

The reason is probably that they don't know what they are doing (not meaning any insult to you, Bug, tilesheet stuff for maps is really complex at the beginning)

gaunt orbit
fierce vault
#

Thanks!

hollow pine
gaunt orbit
#

but you do actually have to get official permission'

vernal crest
hollow pine
#

ah ok i think i see what youre saying

loud sandal
gaunt orbit
#

it's not an asset pack, it's a content mod that you depend on

hollow pine
#

I dont currently plan to publish this mod. It's my first try at modding and something im doing for a friend

#

making a mod of their D&D character

loud sandal
#

Sorry guys n gals, not trying to say anything bad here, but I was genuinely just trying to figure out the why behind it

vernal crest
#

I really recommend getting Tilesheetinator. Then you can leave all the tilesheets in their proper places at all times and the question of accidentally including tilesheets in your mod never comes up because they never come near your mod folder, yet you can edit your map at any time without having to move it anywhere either.

hollow pine
loud sandal
#

Like if you're taking something from someone else and not having them as a dependency and then publish it, you would get in trouble for it without permission

gaunt orbit
#

it's like the difference between using CP as a framework, and shipping a copy of CP's dll in your mod zip

loud sandal
#

Yeah use Tilesheetinator like Abagaianye suggests because it will save you the hassle

hollow pine
#

pretty sure i already did

vernal crest
#

As in you got it just then or you have been using it this whole time?

#

Hmmm hmm hmm I have grass tiles making woodyStep sounds

loud sandal
vernal crest
loud sandal
ocean sailBOT
#

@loud sandal You leveled up to Cowpoke. You can now share images in all channels!

loud sandal
#

Oh finally a level up haha

ivory plume
vernal crest
#

Mwa ha ha I am a genius

loud sandal
#

Oh nice, for each season too. My wife likes the witchy stuff, I'll have to add it to the list now

vernal crest
#

Bog looooooves seasonal stuff haha

#

We just released a Grass Variety mod yesterday too and that has seasonal grass starters

loud sandal
#

You're both well on your way to making everything boggy haha

vernal crest
#

That is the plan! Bog wants to boggify the entire valley

tender roost
loud sandal
vernal crest
#

I wish there was a "Sit" action for tiles

loud sandal
#

I have to finish updating my pokemon mod and then get back to my actual job before the day is out lol
Nice to catch up with yall SDVpufferheart

lucid iron
#

But y'know what if u just spawn chairs with ftm

#

Make them unremovable

hollow pine
#

well I've reached the point where i may cry from frustration so I think it's time to sleep and try again tomorrow. Thank you all for your help

vernal crest
vernal crest
#

I wonder if chairtiles works on Buildings tilesheets

#

Probably not

pale river
#

itd probably have to be with the building data itself since cabins have a message tile data

vernal crest
#

It can't be though because there is no sit action

#

The only way to do sitting is using chairtiles, that I know of

brave fable
#

✔    plum
✔    mandarin
x    crabapple
✔    magnolia
✔    frangipani
    camellia
    rose

    no more than five. five is enough. five is good ✔
    six ✔
    seven

like a weed, the sprite wishlist grows as quickly as it's cleared

urban patrol
#

they're so pretty though

brave fable
#

they take.. so long though......

#

i have to keep drawing trees before i realise how much time i'm wasting on them

urban patrol
#

i'm excited for camellia and rose

hard fern
#

I thought you said the tree was a weed and was confused but accepting

brave fable
#

i might actually ditch camellia if roses work, since the only camellias i particularly like are the ones that look most like roses lol

#

but naturally makoto has to sell roses or i'm a fraud

hard fern
#

I like the camellias u see on the bush

brave fable
#

frangipanis look so stupid naked

hard fern
#

Where's its clothes

brave fable
#

blew away 🌬️

urban patrol
#

C#ers, before i waste a bunch of time, which path sounds better? i want to spawn a custom monster (designed by chu thank you chu 🙏 ) so that it shows up in a location at the end of a specific event playing. should i register it as an event command, as an action, or should i spawn it manually (i currently don't know how to do any of these, but especially not the third)

#

my first instinct was to do an event command but idk if that's actually secretly incredibly stupid

uncut viper
#

When you say at the end of an event, do you mean still within the event?

#

Or that it should appear in the world once the player has left the event?

urban patrol
#

definitely the second, and the first i can just do with a TAS

#

or temporary actor

uncut viper
#

My first attempt would be a custom event command placed at the end of the event, making sure to place it in the location's characters list and not the event's actors list.

#

Assuming the location the monster should be in is the same location the event takes place in

urban patrol
#

yep

brave fable
#

yeah there's not very much difference between the three options, particularly since writing an event command/action is doing it manually

#

you could also do any number of other methods like harmony patching the cleanupevent method

urban patrol
#

okay cool!

#

i'll avoid harmony for now i'm not even solid on regular stuff

urban patrol
#

is there some rule of thumb or somewhere i can learn what event is best to use for certain things? like obviously i have to use on button pressed if i want something to happen when a button is pressed, but for things that are less time-sensitive?

brave fable
#

well the usual events are fairly self-explanatory; save-loaded, day-started, time-changed, menu-opened, button-pressed, ..

#

if you need a more arbitrary real-time delay between occurrences you can use update-ticked/ticking and check for a modulo of ticks or count-down a float by gametime.elapsedgametime.totalmilliseconds towards 0

#

or if you're feeling odd chain a sequence of DelayedAction.functionAfterDelay together

#

other than that if you want something to occur at a specific occurrence in the game you're going to have to use harmony patches

#

the SMAPI events are just there to provide convenient entry points so you don't have to use harmony patches for common tasks

urban patrol
#

let me ask a concrete question: should i register my event command on save load? i just didn't want to ask that without trying to help myself first. it would annoy everyone for me to come in here asking when to do each thing lol

brave fable
#

i'm pretty sure you'd register event commands, tile actions, trigger actions, console commands, et cetera all on game-launched

#

the odd one out being console commands, which being handled by SMAPI is probably fine to do on entry

uncut viper
#

I register all my everythings in Entry

half tangle
#

yeah, I also do so in Entry

uncut viper
#

I usually only delay til GameLaunched for things that require content patcher mods to be ready

urban patrol
#

i'm working with chu's code rn and they only call their own manager in entry

brave fable
#

i'm strange and usually register things on (entry > gamelaunched > onesecondupdateticked > if everything is loaded then register)

half tangle
#

yeah, doing that for content patcher things is important

brave fable
#

but then you get mods like CP which won't let you register any later than gamelaunched

uncut viper
#

Or any sooner than GameLaunched + 4 ticks specifically in some cases 😌

urban patrol
#

wait stupid question, is Entry also an event??

uncut viper
#

Not in the same sense, no

urban patrol
#

oh okay

uncut viper
#

It's just a thing SMAPI will manually call for every mod once it loads it

#

Approximately

brave fable
#

you can consider Entry(), SMAPI events, and harmony patches to all be entry points in one form or another, but an event is a specific C# construct

uncut viper
#

You can even do things in your ModEntry constructor if you have really specific needs (you don't)

urban patrol
#

...SMAPI events are distinct from event in the C# sense? 😵‍💫

uncut viper
#

SMAPI events use C# events to function

brave fable
#

nope, those are events

uncut viper
#

Blueberry just means that an event is like, a defined C# thing

urban patrol
uncut viper
#

It's not just an arbitrary name we call the smapi stuff

urban patrol
#

oh okay i see

#

phew

uncut viper
brave fable
#

deeply resisting the urge to make secateurs drop some produce from these misbegotten decorative non-producing shrubs when used while flowering

#

roses will be the very end of me

urban patrol
#

would you say that every rose has its thorns

brave fable
#

this rose got hands

lucid mulch
#

you can technically use the ModEntry constructor for things, it just runs at a different lifecycle timing that isn't particularly useful as none of the stuff smapi injects/adds onto the ModEntry class for you like all the helpers, manifest, monitor etc are there yet.

half tangle
#

I am trying to create a menu with chest-like functionality and I am completely failing. The closest I've come is creating a new StorageContainer but I cannot put items into it - it's just visually a chest inventory. Nothing I've tried with ItemGrabMenu has worked. Maybe I'm just tired, but I could use some direction or example.

I want something that is effectively a chest except that I can make it go away and it doesn't look or sound like a chest. ItemGrabMenu seems like the thing I should be working with, but I can't tell what I'm supposed to be doing with it. Do I need to create my own Object and give it an inventory somehow? From what I've been reading it sounds like subclassing Chest is a bad idea for compatibility reasons.

brittle pasture
#

do you want something like a junimo chest

#

you can create and open any arbitrary global inventory if that's your goal

half tangle
#

It would be fine if it was per-player... I forget if the junimo chest is shared across farmers

brittle pasture
#

append the player id into the chest name 🙂‍↕️

half tangle
#

by chest name do you mean its GlobalInventoryId

urban patrol
#
private static void SpawnSpiderEventCommand(Event @event, string[] args, EventContext context)
{
    if (Game1.currentLocation == null)
        return;
    Point position = args[0], args[1];
    SpooderManager.Spawn(Game1.currentLocation, "DollSpider", position);
}```
so i know this isn't how to make a Point out of args (gotta convert an array of strings), but why isn't it letting me do literally anything with `args`? it's saying i have to declare it, but it's a parameter of the method??
uncut viper
#

You aren't using the Point constructor, you're just trying to assign it as two things in the args array

#

Which are also strings and not numbers so they'd need to be parsed even if that did work

#

But also, look at how other event commands get their stuff

#

ArgUtility.TryGetPoint() and the like will be of great help

brave fable
#

the correct implementation would be more like this, using the new ArgUtility commands```cs
if (!ArgUtility.TryGetPoint(args, 0, out Point position, out string error))
{
e.LogCommandErrorAndSkip(args, error);
return;
}
SpooderManager.Spawn(Game1.currentLocation, "DollSpider", position);

uncut viper
#

Well nothing against this mod but I wouldn't then

#

It might predate the ArgUtility stuff

urban patrol
#

ough okay

#

is ArgUtility a SMAPI thing?

brave fable
#

nope, you can hover your cursor over it to see the assembly, it's from StardewValley

#

likewise you can hover over the method name (or arg names) to see what documentation there is

urban patrol
#

yeah, that's how i got to EventCommandDelegate, but then hit a brick wall lol

#

i only know of one other mod that adds event commands (ichor's ECC) but i also doubted both my ability to read it and also how helpful it would be as an example, because as far as i know it's kind of reworking events entirely

brave fable
#

really if you have the decompiled game code handy it's pretty much the same as for any mod, just you'll also be calling Event.RegisterCommand(...)

urban patrol
#

yep that's where i started! i got that from the wiki, which required the delegate, and then i needed an example of what a delegate is/does

#
 public override void Entry(IModHelper helper)
 {
     I18n.Init(helper.Translation);
     mon = Monitor;

     SpooderManager.Register(helper);
     helper.Events.GameLoop.GameLaunched += GameLoop_GameLaunched;
 }

 private void GameLoop_GameLaunched(object? sender, StardewModdingAPI.Events.GameLaunchedEventArgs e)
 // register a new event command 'mushymato.BigSpooder_spawn x y'
 { 
     Event.RegisterCommand("mushymato.BigSpooder_spawn", SpawnSpiderEventCommand);
 }

 private static void SpawnSpiderEventCommand(Event @event, string[] args, EventContext context)
 {
     if (Game1.currentLocation == null)
         return;
     if (!ArgUtility.TryGetPoint(args, 0, out Point position, out string error))
     {
         //e.LogCommandErrorAndSkip(args, error);
         return;
     }
     SpooderManager.Spawn(Game1.currentLocation, "DollSpider", position);
 }```
(some of this code is chu's) i think with the use of ArgUtility i'm good now though? except LogCommandErrorAndSkip threw an error because no `e`
brave fable
#

e was just my alias for @event

uncut viper
#

You also don't want to just return like that if the currentLocation is null

brave fable
#

since i don't particularly fancy the @keyword syntax

uncut viper
#

For starters you don't really need to worry about the currentLocation being null because an event can only occur in a location

#

But also, you're not incrementing the CurrentCommand counter

#

So if your return DID happen, it'd infinitely loop

#

This is also why you do not return if you can't get a Point, and why you use LogCommandErrorAndSkip

urban patrol
#

oh okay. i copied that from the console command spawn spider but i can see how that's not what to do here

half tangle
#

(ArgUtility is a Pathos addition to vanilla, iirc)

#

also, thank you for the direction earlier, Selph - I actually understand what's going on because of that and should be able to work from there

urban patrol
#

LogCommandErrorAndSkip did indeed just save my ass lmao

#

for some reason my event command requires index 0 to be an int though which makes no sense

uncut viper
#

the 0th argument is the command itself

#

If the event json says SpawnSpider 5 12 true then when it's split by spaces, SpawnSpider is the first thing

#

Indices 1 and 2 would then make up your Point

urban patrol
ocean sailBOT
#

Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 11 (10.0.22631.0), with 21 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

urban patrol
#

ignore the quest warning i haven't made it yet

uncut viper
#

You are asking it to get a Point from index 0

urban patrol
#

oh inside TryGetPoint

uncut viper
#

if (!ArgUtility.TryGetPoint(args, 0, out Point position, out string error))

#

Change the 0 to a 1

urban patrol
#

i swear i'm learning 😓

#

yay the spawn method got successfully called! there's an error now but it was thrown by chu which i can figure out

#

although not tonight oops

#

thank you button and blueberry for your continued patience as i fumble my way through C#

cedar thorn
#

thank you!

west jacinth
#

Hey! I have a question. Is it possible to give a character a second animation for a schedule? For Example a running animation instead of a walking one? Or can i only give them an Animation at the arrival of the coordinates?

tame burrow
#

Pretty sure no unless someone made a framework to change the walking animation behavior while I wasn't looking

west jacinth
#

Alright, gotta improvise then. But Thanks SDVpufferparty

wooden rampart
#

out of curiosity, how would i write a mod that would specifically target shop portraits to be changed - not the character portraits themselves, but JUST the shop portraits?

#

(or is there even a way to do that)

cedar thorn
#

i wanted to mod the mill building to turn my cacao pods into cocoa powder, do i code it like i would a machine?

#

the wiki says "a "machine" is a placeable object which takes input and/or produces output based on the rules in Data/Machines."

brave fable
#

❌ the mill is not a placeable object! it is a building

#

you'll want to edit "Target": "Data/Buildings" with "TargetFields": [ "Mill", "ItemConversions" ], and edit the list with a new entry in the format used by the existing mill data

#

remember that while it's a [] list of {} objects, CP requires that you use EditData with a {} map of objects, so you'll have to duplicate the Id field like so:

"Entries": {
  "{{ModId}}_MyCocoaRule": {
    "Id": "{{ModId}}_MyCocoaRule",
    "RequiredTags":  // ...
  }
}```
#

and so on for the remaining fields as usual

#

you'll also notice that it takes context tags as input filters, and you can do as the existing mill rules do and use the auto-generated context tags for your item, for example for some item "(O){{ModId}}_MyCocoaBean" you'd use the context tag "id_o_{{ModId}}_MyCocoaBean"

#

hopefully this all makes sense hahah

cedar thorn
#

i think so! thanks 🫶

cedar thorn
brave fable
#

roses too hard. baby trees instead 🙂‍↕️

#

merely shrubs

cedar thorn
#

they're cuteee

swift falcon
#

i love em

cedar thorn
#

^^

#

adorable little shrubs

cedar thorn
#

does this look good?

#

wait i think there's a mistake

#

why is it that i only see it after sending

brave fable
#

that's usually how it goes 🙂‍↕️ send email effect

cedar thorn
#

real

brave fable
#

definitely looks like you've closed too few {} braces, it's hard to tell how many you need when they're all at the same indentation

#

in any case i don't believe id_o_cacaopod will work, since it won't match any item with ID cacaopod

#

your item ID is probably closer to Morgan.EssentialCrops_CocoaPod

cedar thorn
#

ok thanks 👍

#

autocorrect my nemesis

maiden citrus
#

heyy, i've been looking into the pathfinding for the NPCs and was wondering if anyone knew how the Skeleton pathfinding works? i'm looking for existing code that handles pathfinding within the mines avoiding the rocks

barren tapir
#

Is this a valid sprite sheet, or would I need to make a separate sheet for the petrified slimes?

For context, the top row will be a sprites for different big craftables which will produce colored petrified slime.

My original plan was to have the generated slime in hutches change color over time, but I wanted a less complicated mod 😅

barren tapir
#

Also, how would you get sprites if it were located in a /Assets folder in a file called "sprites.png"?

lucid iron
vernal crest
vernal crest
swift gust
#

the ideas always run away from you :')

barren tapir
swift gust
#

does anyone know how kel's gender is decided in multiplayer? is it unique for each farmer, or does it use the gender of the host?

barren tapir
#

AND UGGGHHHH WHY IS GITHUB THROWING TOO MANY REQUESTS

gentle rose
#

it’s been doing that on and off for weeks

tiny zealot
#

love too get rate limited for (checks notes) trying to look at source code using the web interface

gentle rose
torpid sparrow
#

i thought that was just me

tiny zealot
#

(cynical answer to "why": microslop probably put some slop in the backend sauce and now we're all paying for it)

torpid sparrow
#

im just trying to view cp tokens ok i dont have them all in my brain

gentle rose
cedar thorn
calm nebula
#

(Unless I log in)

#

Welp

torpid sparrow
#

u have a bracket

cedar thorn
#

guys this was supposed to be a quick and easy mod

torpid sparrow
#

instead of a comma i think

cedar thorn
#

aha

torpid sparrow
#

or ur missing an end bracket

calm nebula
#

Nice knowing you guys, turning in my programmers license and keyboard, etc, hope I'm not going to jail

gentle rose
tiny zealot
torpid sparrow
#

actually let me keep looking

#

pause

gentle rose
#

can’t remember the last time I managed to look at github on my phone

torpid sparrow
#

yeah missing comma

#

right behind target fields

tiny zealot
#

usually because i encounter something cursed in the codebase, then it cascades as every workaround i come up with finds a different cursed thing

torpid sparrow
#

behind the square bracket

cedar thorn
torpid sparrow
#

riiiight there

calm nebula
#

Missing comma, end of line 511

gentle rose
calm nebula
#

I hear ichor is rewriting the audio engine

tiny zealot
calm nebula
#

And moving monogame native

jaunty shuttle
#

Fixing the farmers pants sprites

calm nebula
tiny zealot
#

my most recent "i can't believe it's this cursed" is the chest menu, if you can believe it

#

did you know every time you click an item, the chest code replaces the entire menu with a new instance? i didn't, until recently

jaunty shuttle
cedar thorn
# torpid sparrow

thanks again, this chat has saved my mental sanity many a time now

calm nebula
#

I even probably bitched about it here

tiny zealot
#

it's truly baffling. there doesn't seem to be any need to do it, either, and yet there is also code to transfer over a callback (in the one situation vanilla would need it, and no others, of course) so it was obviously considered and accounted for

brave fable
#

the junimo note menu is a lot like that 🙂‍↕️

calm nebula
#

I just think....yeah, there is zero chance I would ever make a video game

brave fable
#

and daytimemoneybox i think

calm nebula
#

Catch me redoing the memory layout for the planes for the 3rd time

#

Game is Like That but I think games are just like that. I hear horror stories from Terraria

brave fable
#

i hear terraria is a Lot Like That

lucid mulch
#

Making a fully functioning game particularly on xna/monogame where you kinda have to do most things yourself anyway, there will be crimes somewhere just to have something that works

tiny zealot
#

reminder

lucid mulch
#

People in the source2 space were making fun of Minecraft rendering code which is similar vibes

brave fable
#

it's important to remmeber that not only did the game ship, but it does in fact still work

lucid mulch
#

Notch code was also a big meme but he was also doing like daily releases of a fully functional multiplayer game

calm nebula
#

My favorite thing is still the white pixel in the moon being used for the drinking animation

brave fable
#

that's secondary to me compared to the dialogue box selection square being used for the fruit cave bats

calm nebula
#

That one wraps from wtf to genius for me

tiny zealot
#

a land of contrasts

buoyant moon
#

Trying to wrap my head around the idea of blank loading, seeing if I got this right:

The idea behind blank loading is to ensure that a file that normally doesn't exist is loaded and then can be patched like any other file and isn't necessary otherwise.

Doing it that way will make sure events aren't overwritten since they're added as a patch, like two different mods that both add events to the Beach Night Market.

vernal crest
#

Blank Loads are so that we can use CP tokens in our data

tiny zealot
#

yeah it's for when you need to use EditData on an asset that doesn't already exist

cedar thorn
tiny zealot
#

since Load won't parse your tokens

lucid mulch
#

Load can't use tokens and there can only be one load.

It's a mix of those two reasons

buoyant moon
#

Ah yeah, I forgot about the token aspect.

vernal crest
cedar thorn
#

okay so just TargetField then

lucid mulch
#

Targetfield is to rescope the patch deeper into the asset you are targetting

vernal crest
#

For a situation where it's a vanilla asset that doesn't already exist, the important part with any Load (whether it's blank or with tokenless data in it) is that it's set to Low priority so that your mod doesn't try to exclusively load to a vanilla asset, which another mod might also try to do and then both your loads will fail.

buoyant moon
#

I was about to ask about priority for that reason, if there are multiple blank loads with low priority it's not an issue?

tiny zealot
#

oh, and don't forget, if you are doing a blank load and the asset isn't exclusively for you (example: Data/Events/AdventurersGuild), set a priority on the load other than Exclusive (it is customary to use Low but anything except exclusive will do)

vernal crest
#

(I don't recommend loading a non-blank file to a vanilla asset because if a user does have another mod installed that loads to the same target and they're using a higher priority, your file will never load and then your data won't exist. If you use editdata then you'll be safe.)

vernal crest
lucid mulch
#

Anything other than exclusive and the tiebreaker is load order within cp or more broadly event priority/order registering asset requested

buoyant moon
#

And the file you're loading being blank means it's not an issue and all the actual content is subsequently added through patching

lucid mulch
#

Exclusive by design has no tiebreaker and if multiple exclusive loads happen they mutually explode and no one loads and vanilla tries instead

#

By convention the blank asset is just {}

#

So there are a few data models where you would need something else as it's Topline data structure isn't a dictionary but they are rare

buoyant moon
#

oh good point, I've mostly been looking at events so far so hadn't considered other models

brave fable
#

(i almost mentioned the elusive [] blank but figured you're not likely to run into one)

lucid mulch
#

Offhand the only one that comes to mind that's a list is confectionary or something

#

Maybe achievements? But that's weird for other reasons

#

Almost everything is a dictionary

vernal crest
#

Events and NPC schedules and dialogue are the only assets I know that need loading anyway

#

Oh festivals, I guess

tiny zealot
#

festivals are just events with more steps /lh

buoyant moon
#

thanks all, fills in some of the reasoning I was trying to figure out

brave fable
#

well anything new containing data you want to use CP tokens in is a good candidate really

#

you'll probably have one if you're making a C# mod with a custom data model populated by CP

#

that Load FromFile gets real long for a variety mod lol

tiny zealot
#

my C# mods with custom data assets handle the load themselves, so clients only have to EditData

brave fable
#

welcome to another edition of guess da plant

jaunty shuttle
#

Baby fig tree

calm nebula
#

Cute

#

The answe is cute

#

Figs have bigger leaves

lucid mulch
#

I'm going to guess it's a tree

brave fable
#

figs are very very varied. creeping figs for example have minute leaves 🙂‍↕️

buoyant moon
#

I was about to ask if there was a way to check for certain achievements in events but think I can find a subsequent workaround (like a mail that gets sent afterward)

calm nebula
#

Passionfruit

#

(Is not passionfruit)

lucid mulch
#

Id rather be accurate over precise (I think I got them the right way around)

tiny zealot
brave fable
#

you'd rather be correct than a winner

lucid mulch
#

The only trees I can think of are Runescape ones like dragonfruit

brave fable
#

see when i think runescape trees i think Tree and Oak Tree

#

wtf dragonfruit

lucid mulch
#

I have a farming cape, dragonfruit is the highest tier of fruit tree

buoyant moon
lucid mulch
#

There's probably mail flags for each achievement or conversation topics as well

buoyant moon
#

I currently have a lot of questions that I feel like I can answer myself through experimenting, I just can't jump into the game right now to try things out

barren tapir
#

Is there a channel for recommending mods? Bc I'd like a mod that allows you to configure calico statues, namely:

  • how likely they are to appear
  • what buffs/debuffs they give if possible
  • maybe even an option to let them spawn year round

I really like the calico statues and seeing how many monsters can spawn. Unfortunately I feel like this would be a mod far outside my current skill set 😅.

jaunty shuttle
#

!modideas

ocean sailBOT
#

If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas

However, this does not mean anyone is guaranteed to work on your idea—modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.

tiny zealot
#

is there an equivalent of Game1.Multiplayer.broadcastSprites that broadcasts to delete a TAS? i have one that i would like to stick around for an indeterminate amount of time
i'm sure i could make it work with smapi messages but it would be nice if there was already a function for it

lucid iron
tiny zealot
#

i'll get back to you on that. turns out it doesn't seem to be broadcasting in the first place

lucid iron
#

Tbh im not rly sure what is the difference between broadcast and just adding to location temp sprites

calm nebula
#

Multiplayer

barren tapir
#

BTW, is it normal to be working on multiple mods at once? I've been concurrently working on 2 mods at the same time (one of them is super simple, the other one isn't 😅).

The simple one adds a seed sifter that gives a use to mixed seeds.

The complex one aims to add more depth to slime farming. I've broken this one down into tasks that I'd like to approach as my modding skills improve. Right now I'm currently working on trying to fix the assets problem, but then I plan on tackling new special orders (and probably a new recipe for Hardwood between the two).

torpid sparrow
#

sure it is

#

just depends on ur work style

barren tapir
#

Yay! Hooray for my ADHD brain being unable to focus on a single task at a time 😅

vernal crest
#

I do know of a few modmakers who do one mod at a time but many of us bounce

#

There is a massive proportion of ADHDers (including AuDHD) in here lol

torpid sparrow
#

i tend to work on one at a time because npcs have a bunch of different parts so it's not rly one single task

vernal crest
#

Pah

barren tapir
#

I also have a gut feeling I'm gonna have to learn how to do cross mod compatibility for the special orders. I'd like Marlon to be the quest giver, but if that isn't possible I'll look into adding a box to the adventures guild.

vernal crest
#

Weak

#

(/j)

#

I have 3 NPCs (two mods) going at once!

barren tapir
#

I could never do an NPC mod 😅

vernal crest
#

Although TBH I probably wouldn't if Hiria wasn't Māori. I worry so much about her being offensive to Māori players that I struggle to progress with her despite loving her so much.

barren tapir
#

With that said, I highly recommend the custom NPC Aliyah mod. I was constantly surprised at all of her unique dialog (even if the summit dialog was broken 😅)

whole raptor
torpid sparrow
#

oh god i just scope creeped myself

vernal crest
#

If Nic's experiences are anything to go from, the hardest part of mod compat is being surprised repeatedly about stuff you thought you'd already fixed lol

torpid sparrow
whole raptor
#

Yep SDVpuffersquee

#

I'm just glad I decided to organize it fairly early on SDVpufferpain

barren tapir
vernal crest
#

I started Hiria right at the start of my modmaking journey and then booped around and did a whole bunch of other stuff and go back to Hiria's files where I have written screeds of notes for myself for how to do things and I am shocked by how little I understood then hahahaha

whole raptor
#

Oh btw Aba, do I remember correctly that we could frankenstein Bog's tilesheets and assets for the modfest? As in.. make some changes and include them in the mod if the original isn't exactly matching? Ofc not entirely, so the original tilesheets mod would be a requirement

tender bloom
#

I think everyone has that one mod they started years ago when they first started modding and it taking an eternity

#

Am I saying this from personal experience? Maaaaaybe

barren tapir
#

Anyway, I have to get back to work 😅.

Abagaianye, would you mind if I ping you later today on fixing the assets problem? Hopefully I understood your comments correctly, but I'm sure something will inevitably go wrong 😅

vernal crest
vernal crest
whole raptor
#

Nice!

barren tapir
mortal blade
#

"Borscht is a sour soup popular in Eastern Europe, most famously the vibrant red version from Ukraine made with beets, cabbage, potatoes, and meat stock, often garnished with sour cream and dill."

#

BTW... the Pizza Soup was DEWISHUS! 😉

sullen rain
#

I could make that work probably

whole raptor
#

I was gonna ask is it Borscht.. but looks nothing like the Borscht I know SDVpuffersquee

#

Although true, Ukrainian one is a bit different

mortal blade
#

Just a rando foto of "borscht" I found on the intertoobs

whole raptor
#

I knew I'm gonna have to ask dumb questions if I started on map making again... sooo if I want to add a Tileset (specifically Bog's) are there any extra steps I need? I copied the tilesheets to the map folder, but still when I'm trying to add an external tileset (the tsx file) I'm getting an error about BogsWitchyInteriorTiles missing

#

Or should I just add the tilesheets and ignore the tsx files? (I only vaguely know what tsx files are for..)

quasi dew
#

Having some issues with changing a sprite based on in-game time. (Going crazy bc I know I've done this before.)
Does "EditData" not work with time changes?
I've been using this example from Pathos's author guide
{ "Action": "EditMap", "Target": "Maps/Town", "SetProperties": { "CurrentTime": "{{Time}}" }, "Update": "OnTimeChange" }

#

obviously changed the action and target to what I need it to be : )

#

also tried using "Time": "{{Range: 0600, 1200}}" as a when condition, adn that didn't work either. :/

vernal crest
#

That example patch is not valid CP syntax as far as I'm aware

quasi dew
vernal crest
# quasi dew oop! that would explain it!!

To edit a map based on in-game time (which I strongly recommend you rethink doing because it's bad for performance especially if it's a frequently edited vanilla map) you would do this:

{
    "Format": "2.9.0",
    "Changes": [
        {
            "Action": "EditMap",
            "Target": "Maps/Town",
            "FromFile": "assets/town.tmx",
            "FromArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 },
            "ToArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 },
            "When": {
              "Time": "{{Range: 0600, 0800}}"
            },
            "Update": "OnTimeChange"
        },
    ]
}
quasi dew
#

just switching from a custom one to vanilla

vernal crest
#

Different spritesheets for what?

quasi dew
#

for characters!! sorry

tender bloom
#

The SetProperties part is the bit that doesn’t make any sense to me

quasi dew
vernal crest
#

What is the EditData for then? Why not just use the Appearance system?

lucid iron
#

Yeah u can use appearance to have them change clothes at night

#

The main thing is that the npc must change locations

quasi dew
vernal crest
#

The GSQ TIME is what you need

#

Not multiple patches using CP When conditions

quasi dew
#

So this is what I have rn that's not working

{    "LogName": "Sebastian Holds Baby Stage 2",
    "Action": "EditData",
    "Target": "Data/Characters",
    "TargetField": ["Sebastian", "Appearance"],
    "Entries": {
            "{{ModId}}.SebastianBabyStage2": {
                "Id": "{{ModId}}.Sebastian_BabyStage2",
                "Condition": "PLAYER_NPC_RELATIONSHIP Current Sebastian Married, !DAY_OF_WEEK Monday Friday Saturday, !DAY_OF_MONTH 4 8 9 11 13 16 25 28, TIME 0600 1200",
                "Sprite": "Characters/Sebastian_BabyStage2",
                "Precedence": -120,
                            },
            },
},
#

(testing on sunday the 14th... that was one of the first things I double-checked bc I'm a doofus sometimes)

#

it loads fine, just doesn't change to the vanilla sprite after 1200

vernal crest
#

Yes that is the one where the NPC needs to change location for it to update

quasi dew
#

ahhhh makes sense makes sense

#

thank you!!

#

is there any way to change the sprite without them needing to change locations? or is that impossible?

vernal crest
quasi dew
cedar thorn
#

it works!! thank you to everyone who helped my mod is alive and well

stark ocean
#

sup y'all, i am having issues with my npc not going to certain coordinates in his custom room map and i'm not sure why all of a sudden, cuz it was working before. i thought maybe it was a tiled issue? basically, i have him stand at a different spot in his room before he goes to his desk. i have an animation set where he is studying, which still plays, but only in the coordinates he was set to BEFORE the desk coordinates. like he is just refusing to move to the spot at all. i thought the chair was the issue, changed it, still no dice. i have the chair on the buildings layer, which i figured wouldn't be an issue since that's what they are on all of the other maps

fossil osprey
#

Classic "schedule issue" question, but just to be sure, have you slept after changing the schedule and before testing it?

torpid sparrow
#

and if not, send json

stark ocean
#

not slept, just exited in and out of the game. i shall try it out now tho

fossil osprey
#

schedules are only applied on day start, so when changing a schedule it's recommended to sleep out a day

gaunt orbit
#

@uncut viper what version of mgfxc are you using? I installed it but it says it's for a newer version of monogame than what the game is using

restive summit
#

i’m trying to make my first mod. I have visual studios and everything when I load into the game I just have call besides one of them. It seems like it’s not launching. Can anyone help?

urban patrol
#

are you making a C# mod? if so, did you build your project into your mod folder? does your log show that your mod has been loaded by SMAPI?

restive summit
#

I will check if it's enabled first, and then I’ll take a picture of the log

urban patrol
#

!log we prefer logs uploaded to this site over pictures

ocean sailBOT
#

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:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. 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.

restive summit
#

i’ll update when I’m in. It’s just taking a while to load in the actual game itself.

#

I just have the portrait how do I make the actual physical character that that’s what I’m missing

urban patrol
#

!npc oh you don’t need C# at all to make an NPC! it’s much simpler to use content patcher. use this tutorial

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

urban patrol
#

also, i suspect your game is taking so long to load because you have many mods installed. in general we recommend testing on a minimal loadout—your mod, its dependencies, and any QOL/testing mods you need

restive summit
#

yeah, I’ll probably do that. Just have the CBJ cheat menu so I can check if they’re actually in the game.

urban patrol
#

[[Modding:Console_commands]] these are super useful as well

restive summit
#

so do you put the spray of the character in the assets file along with their portrait so this is my first time making mods ever I do not know exactly what I’m doing

tiny zealot
urban patrol
spring stirrup
#

Is there someone who wouldn't mind pointing me in the correct direction to learning how to use Content Patcher for mod creation? A video tutorial perhaps? I've been experimenting on my own but need the next step

restive summit
#

I don’t know, but I think if you just have the content patcher and you make a mod I’m learning of course I’m new with all of this, but I think it’s just there once you put it in, but don’t ask me. I’m new with this.

calm nebula
#

To be fair to the github rate limiter I haven't tried the thing it wants me to do (log in)

#

To be unfair to gitbub 92.xx % uptime for a major service in 2026 is pathetic

urban patrol
spring stirrup
latent mauve
#

Did you want to just change how something looks? If so, what is it, etc.

spring stirrup
latent mauve
#

Yep! Changing how a NPC looks would be a different code than say, changing a building or a map.

spring stirrup
#

It's probably helpful to say I come from the Pokemon (Gen3) modding scene

latent mauve
#

Ok, so depending on HOW you want to offer your building retextures, this tutorial explains how to create a building "skin": https://stardewmodding.wiki.gg/wiki/Tutorial:_Change_Building_Appearances

Stardew Modding Wiki

Last edited by AtlasVBot on 2025-09-13 18:56:28
Stardew Valley 1.6 added a feature to have custom building skins. You can now have multiple appearances on one kind of building just like what Alternative Textures enabled. It can be useful to offer this feature even if you only plan on having 1 skin for each building, since it will allow people to...

#

Skins let users have multiple looks for the building rather than every version of that building looking the same

#

So it depends on your intent whether you would add a building skin or just do a patch to replace the building texture entirely.

spring stirrup
latent mauve
#

Cabins are a base game example of a skinned building

stark ocean
ocean sailBOT
#

Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 18 C# mods and 5 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

spring stirrup
latent mauve
#

There would normally be the Content Patcher GitHub documentation as well but it seems to be getting rate limited this morning

latent mauve
stark ocean
#

on it !!! SDVpuffersalute

latent mauve
#

Generally you always want to load your tmx files to somewhere in the Maps directory, because that's where the game will look by default. 🙂

stark ocean
#

that makes sense! i'm glad it was an easy fix at least. it all loaded up in-game fine now, it is now that there were some errors with the tilesheets? i havent moved them from my maps folder yet since i'm still working on some things with the tiled maps, will the error logs go away when i remove them from the file? here's the new error log: https://smapi.io/log/893409cdf275460c96fff30579d08668

ocean sailBOT
#

Log Info: SMAPI 4.5.1 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 18 C# mods and 5 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

stark ocean
#

don't mind the spouse room yellow error at the bottom. i'll be fixing that later lel

latent mauve
#

Once the game finds one seasonal tilesheet in your mod's folder, it will keep looking there for the others, even if they are in the game's Maps folder.

stark ocean
#

good to know!! thank you!

sinful vector
#

alright i have a mod and i think i'm almost ready to publish it 😄 thanks to whoever here was helping me the other day

hollow pine
#

@vernal crest Hi, you said to ping you?

tender bloom
#

(FYI aba may be asleep rn but with the ping should be able to get back to you when awake)

cedar thorn
#

is edibility still x 1.125? the values i'm inputting are wayyy higher in game

#

as opposed to what i calculated

#

and my shop items are about 2x the price i coded

onyx panther
#

so I have a problem

#

TouchAction does not seem to work in events

#

as in I'm not maaging to get the player to ChangeIntoSwimsuit during the event

onyx panther
#

it would work if it was an Action, but also, ChangeIntoSwimsuit isn't an action, it's a touch action, and those are not interchangeable

cedar thorn
#

nevermind i just reread the wiki and energy is x2.5 and health is x1.125

#

my bad

tender bloom
#

maybe check on Penny's event in the spa

#

i think it's a change appearance on Penny but idk what it is for the player

brittle pasture
cedar thorn
#

oh i see haha i already took that into account and doubled it so i'll put it down lol

onyx panther
#

I want the player to start not in swimsuit, then change into swimsuit during the event

tender bloom
onyx panther
#

swim also warps the sprite into the ground, so would look wrong

tender bloom
#

or is that just the jumping into pool?

#

hmm, might need a custom event command in C# then

#

it's possible some framework mod has this

onyx panther
#

yeah that's what it looks like

onyx panther
#

I know there's a mod that lets you swim anywhere

#

yeah it's got a dll, means it has code that does what I need

#

weeeee

#

I'll try and recreate it myself tbh

tender bloom
onyx panther
tender bloom
#

could even look through the source code, it's MIT licensed

#

the one that lets you switch spritesheet may indirectly let you swap to swimsuit

onyx panther
#

maybe

tender bloom
#

I don't remember how swimsuit works under the hood

onyx panther
#

it's on a single sprite sheet

tender bloom
#

just a question of whether you'd rather use that mod, edit the mod to do what you want, or what

onyx panther
#

might make a mod that adds change into swimsuit as an event command if that doesnt already exist tbh

#

ok, now I need to figure out how to do a c# mod lmao

#

weeeeee

tender bloom
#

have you ever programmed before?

onyx panther
#

yeah, in java

#

and c, but I hate c

tender bloom
#

so it won't be too terribly different

onyx panther
#

makes me wanna eat a whole lemon, would be more enjoyable

onyx panther
tender bloom
#

actually maybe a little higher on the wiki page

#

like 1 section above so you install the requirements

onyx panther
#

right

barren tapir
quasi dew
#

is there an easy way to use config values in GSQs? or do those only work in "when" conditions?

#

oh would that be with "PLAYER_MOD_DATA"?

lucid iron
#

if your config is true/false you can directly put it as a token

#

but i think the question is more why, are you sure you want to use them as a gsq instead of just conditionally not adding some data?

quasi dew
#

I'm modding appearance data based on config values. I'll look around at some other mods and see how they do it

lucid iron
#

you would simply not add in the data yea

#

use targetfield

#

drill down to the Appearance block n do edit blocked by When

onyx panther
#

I made it work yay

old edge
#

Could someone help me close to close a ui box with c# with escape button

fallow musk
#

exitThisMenu is an internal method of iclickablemenu

#

you just need to call that if you are using it

#

if your current UI extends iclickable menu something like this should work

#

public override void receiveKeyPress(Microsoft.Xna.Framework.Input.Keys key)
{
if (key == Microsoft.Xna.Framework.Input.Keys.Escape)
{
Game1.playSound("bigDeSelect");
exitThisMenu();
}
}

lucid iron
#

tbh i dont think i ever had to impl this myself

#

if u look at IClickableMenu.receiveKeyPress

#

if (Game1.options.doesInputListContain(Game1.options.menuButton, key) && readyToClose())

#

ESC is one of the default menuButton bindings

#

should it not work for you see if you rebound it or if readyToClose is always returning false

#

that and remember to call base.receiveKeyPress(key) if you override that method

fallow musk
#

yeah that sounds correct, i think i had this redundant code in my mod

half tangle
#

the number of times I've forgotten to call base. in overrides...

long jungle
#

Anyone know if it's possible to edit the effect of rings using content patcher WITHOUT using any framework mods?

If no, any framework mods that can do this?

e.g. turning the Vanilla Ruby Ring from +10% attack to +20% attack

lucid iron
#

yea write your own C# SMCPufferjail

#

unbelievably hardcoded

uncut viper
#

The closest you'd get (even with frameworks, as far as I know) would be just giving the player a separate second attack buff when wearing the ring

lucid iron
#

you can do it with spacecore which is pretty ubiquitous

fierce vault
#

globalFade has a default speed of 0.07... is .07 <7> miliseconds or something else?

urban patrol
# onyx panther I made it work yay

would you ever consider making a tutorial or annotated version or something for this? just last night it took me hours to add an event command lol but it seems you did it super easily!

#

plus a tutorial could be entered into modfest if that entices you lol

uncut viper
fierce vault
#

Oh, what amount are ticks again...?

uncut viper
#

"it" being the alpha of the black screen

fierce vault
#

Ok

uncut viper
#

Approximately 16 milliseconds if the game is running at 60fps

fierce vault
#

hmm

#

I'm trying to hide several things changing behind the fading and unfading of the screen, so that's why I'm looking into the time

devout otter
#

Does tokenizable string only work in dialogue and events?

uncut viper
#

Tokenizable strings work in a lot of places

#

I tried to find an old list of places, but difficult on mobile when I don't remember exactly what I wrote. But there's like 20 different places they're accepted

#

Something like that

#

And ofc they'll also work in any mod targets if the mod opts to parse tokenizable strings

#

(Shameless plug alert) They don't work in trigger actions or gsqs in 1.6.15, but they do in BETAS tractions and gsqs SDVpufferowo

devout otter
#

Thank you for the list!

uncut viper
#

Keep in mind the disclaimer below that list

#

For some data assets it's very likely only specific fields accept them

devout otter
#

Hmm is the "make the first letter in this word uppercase" thing a tokenizable string thing?

onyx panther
devout otter
#

Yeah, that's also tokenizable string, isn't it? And thus doesn't work in Data/mail?

urban patrol
urban patrol
#

a lot of C# modding is just figuring things out yourself unfortunately

fierce vault
#

is there a way to smoothly hide stuff happening behind a fade for a few seconds, because the unfade here doesn't hide anything, and happens after it's needed: fade/ warp Vincent 28 18/ move Vincent 0 0 3/ stopAnimation {{ModID}}_Jack 0/ playSound snowyStep/ pause 1000/ playSound snowyStep/ pause 1000/ playSound snowyStep/ globalFadeToClear 0.07/ and when trying the global fade with viewports which looked something like this, it was also janky: globalFade 5 true/ viewport -3000 -3000/ warp Vincent 28 18/ move Vincent 0 0 3/ stopAnimation {{ModID}}_Jack 0/ playSound snowyStep/ pause 1000/ playSound snowyStep/ pause 1000/ playSound snowyStep/ viewport 27 18/ globalFadeToClear 0.01/

lucid iron
#

mail my nemesis

devout otter
calm nebula
#

I love getting things in the mail!

#

Why do u hate it

fierce vault
#

yes, I want it to fade to black, and last a few to several seconds while actions happen with a smooth unfade at the end

calm nebula
#

Aren't there like nine fade commands

#

Anyway

#

Doesn't stay faded iirc

#

Must go warp to -1000 -1000

devout otter
#

Yeah, you go viewport -1000 -1000

fierce vault
#

My warping made it janky when I tried. I want it to unfade at the end, but I needed to warp the viewport back to the event area beforehand, which flashes it before the unfade I think

#

I did not warp only -1000 tho

devout otter
#

And then just global FadeToClear before everything.

fierce vault
#

Oh, before all the actions and warping viewports?

devout otter
#

This is an example I have globalFade/ viewport -1000 -1000/ proceedPosition Demetrius/ globalFadeToClear 0.007 true/ viewport 20 19/ warp farmer 19 20 true/ warp Robin -100 -100 true/ warp Demetrius 19 18 true

fierce vault
#

Huh. If I want it to last a little longer I guess I also mess with time on the unfade. thanks

hidden tinsel
#

hi! does anyone know how to make an event end with a warp to your bed? the doc says you can use "end bed" but it doesn't seem to work

sullen rain
#

Would anyone happen to know what would be causing rocks to spawn at custom farm entrances?

onyx panther
#

well, I uploaded that mod that lets you change players into swmisuits... weeeeee

fierce vault
#

Ok!

#

So, discovered something interesting

#

the smaller the number you make 0.07, the slower the GlobalfadeToClear is, and the larger the number, the faster! Everytime I went higher like to 10.0, it seems to look even worse, so I knew something must have been up which is why I finally tried it the other way 😅

#

Eventmaking really is a ton of trial and error. I wish there were an effortless way to keep track of how many times I've tested this event ingame, because it's definitely 10's upon 10's of times. I'm not confident to throw out a number though.

calm nebula
#

Basically

uncut viper
#

Makes sense if that is the amount it is changing per tick. Alpha only goes from 0 to 1 as well

brave fable
#

0.07 is the rate of change, not the amount of time overall

uncut viper
#

Which is what I said earlier! I just wasnt 100% sure if it was a direct addition or not or if it had some extra numbers added on top from various things

fierce vault
#

so, could my fades get completely ruined if someone has the wrong hardware and abnormal fps?

uncut viper
#

Yep.

#

It'd have to be very abnormal, though.

#

Also, many other things would also be ruined visually

#

The game kinda expects to run at 60 fps

brave fable
#

most event commands don't particularly care about real-world time, they're not very granular or precise

#

thinking of viewport pan while writing this

uncut viper
#

Turns out low FPS looks worse. Have scientists solved this one yet

#

(don't tell them that too high FPS can also look worse)

#

(the scientists I mean)

fierce vault
#

something like 90 fps would also ruin it huh? Are there people running stardew at that rate?

uncut viper
#

Stardew is locked to 60

brave fable
#

please tell the scientists that resizing the game window resets and breaks any viewport commands you've used until the next

uncut viper
#

You need to force it to not be locked to 60 to go higher

fierce vault
#

Oh GOOD

brave fable
#

the world needs to know

uncut viper
#

But yes if you ran at like 120 fps then your fade would go twice as fast

brave fable
#

pretty sure your temp sprites will also run at double speed

calm nebula
#

Npcs would also run twice as fast

#

Debris would bounce faster

#

Etc, etc

fierce vault
#

uh oh 😅

uncut viper
#

Also your cats would wander around more

brave fable
#

most things aren't scaled by elapsed milliseconds between ticks haha

calm nebula
#

That is adorable and more correct

fierce vault
#

well, time to go back to writing this intro. First impressions can only be had once, and this event needs to be the best I can make it

calm nebula
#

I believe @blissful panther has run the game at uncapped like 1kfps

fierce vault
#

why...? To test in a flash I guess...

tender bloom
#

blueberry i drew a leaf today!

calm nebula
#

That is a leaf

torpid sparrow
#

i was like who stole ur leaf