#making-mods-general

1 messages · Page 472 of 1

mortal hatch
#

cant put double brackets there

uncut viper
#

configs should not have the outer braces

mortal hatch
#

says it unexpected symbol

uncut viper
#

When conditions are an AND operation, is "Set Override" also set to false as well?

mortal hatch
#

yea

uncut viper
#

in the config (I'm assuming it's a config token) and not the when

brittle pasture
uncut viper
#

Selph there should not be any braces

mortal hatch
#

it works with the TileSheets/weapons file, the Tilesheets/tools, but not the Maps/springobjects, for soem reason

brittle pasture
#

(I wasn't sure if |contains needed token style brackets, apologies)

#

(seems like it doesn't)

mortal hatch
#

doesnt the game use the base one and only the 6 for translation?

uncut viper
#

The problem is not with the asset you're targeting the problem is that it can't find the file you're telling it to use to patch

brittle pasture
#

the error is complaining that none_tools.png doesn't exist as a file, meaning the token evaluates to none even though according to the When conditions it shouldn't apply if the config token is none

uncut viper
#

are you certain you've saved the file and reloaded/restarted and are editing the right file in your mod folder, not a copy somewhere else?

brittle pasture
#

that's why I suspect the When condition is malformed

mortal hatch
#

yes

#

thats why i am so confused

uncut viper
#

can you try removing the "Set Override" condition and testing again with just the iridium skin one?

#

and probably send your json as well

#

The whole thing

#

In the validator from the Governor command Selph summoned

golden basin
#

hm oddness in the fishtank

#

the shadow is there

#

maybe its too big....

#

okay so if the tanks are bigger then 3 squares tall it gets weird

lucid iron
#

Yeah the bounding box maff become weird

golden basin
#

itd be really cool if we could have like walk tanks

lucid iron
#

I made mmap fish tank bounds adjustment if u want it

golden basin
#

wall*

lucid iron
#

Yep we can

golden basin
#

wait how

mortal hatch
#

so i have the sprite on a space that vanilla doesnt use on MY tools.png, and apply it to a completly different coordinate on the Maps/springobjects, coudl that be a problem?

lucid iron
#

Some tanks here are painting that were granted fish tank properties by mmap

golden basin
#

oo i see i might do that

lucid iron
#

So they go on wall n take no floor space

golden basin
#

though your tanks solve my issue

#

i might just use your mod and suggest it as a download

#

are you working with the alpha btw chu

lucid iron
#

Not beyond checking if my mods work rn

golden basin
#

ooh well there is a error

lucid iron
#

MMAP has one broken feature in 1.6.16 yeah

golden basin
#

ooo okay cool

lucid iron
#

It's for grass spreading so if you aren't using that it doesn't matter

golden basin
#

also um i hate to report errors jdfghsdfjgdfg

#

is that normal

lucid iron
#

I think it's probably cus of cp rewriters for furniture data

#

But yeah feel free to tell me things, i probably wont fix immediately but knowing is good

brittle pasture
lucid iron
#

*tell me about errors on 1.6.16 with me mods

hard fern
#

So like what's the diff btwn localized text and i28n

uncut viper
#

well i18n is not part of the game

lucid iron
#

One of them is vanilla game system

uncut viper
#

localized text is

#

the game needs some way to store and show translations like mods do and that's localized text

lucid iron
#

I have some very arbitrary reasons to like those better so that's why i used it for tanks

hard fern
#

So in terms of function, as in displaying text for different languages, they're the same? But the way they're done is different?

uncut viper
#

kinda sure

lucid iron
#

Only some places support localized text

#

It's a thing game has to resolve into the actual string

golden basin
#

hell yes

uncut viper
#

there are differences between them in both functionality and use but ultimately they're both ways to display text where the user can see it

hard fern
#

Hmm

#

I see

mortal hatch
#

so, now it works, BUT my variable doesnt work, desüite there being 0 difference

#

if anybody could explain to me why "Set Override" work on ReplaceEdits 1-3 but not 5-8https://smapi.io/json/content-patcher/9ebc65de80c8496db56f7ba95859245a

#

otherwise this code works great in case someone wants to make its own iridium tools multi reskin mod

#

a complete set for each fruit, sounds like a fun idea

brittle pasture
#

the code looks all correct to me but I'm on my phone at work so I can't check the coords and etc
patch summary is a helpful command to see why/whether your patches are being applied

lucid mulch
# hard fern So in terms of function, as in displaying text for different languages, they're ...

The cp i18n token resolves with the value of the current language (and can fall back to english) but the game will only see that one value and if a patch export was done you wouldn't be able to tell the difference between i18n and it being hard coded.

LocalizedText is a vanilla system so it'll stay as-is if you did a patch export, and has benefits particularly in places where the game remembers the value and puts it in the save file.

Vanilla also heavily uses it in places because vanilla can't make runtime changes to the data (which mods can)

ivory plume
#

There's a performance tradeoff: i18n tokens get baked into the text once on asset load, whereas LocalizedText gets re-parsed and re-replaced every time that string is fetched. So if you have a string that's re-displayed on every update tick, it may be much more efficient to use an i18n token (unless the game caches the value, like item names).

vague crag
#

Hello, I installed the A World of Dew mod and the recycling bins are automatically deleting waste. I've looked everywhere and I don't know how to disable it ?

#

For the quest of linus

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

vague crag
#

Thanks

soft lance
#

Does anyone know of a few smaller/compact mods (for easy readability at least) that add quests into stardew? like the ones displayed behind the menu in the "!" mark button on the top right

#

I'm attempting to learn more about quests, the wiki had good information, but I'm attempting to see how it's actually implemented

brittle pasture
#

have you unpacked the game files and see how it does quests

#

that can help too

#

I said so since I dont have an answer on hand

soft lance
brittle pasture
#

tbh the important part is what you put in Entries anyway

#

most of them aren't hardcoded

lucid iron
#

Both quests and special orders go into the journal

#

What's ur plan exactly

soft lance
brittle pasture
#

oh yeah you were asking about special orders earlier

lucid iron
#

You need at least one mod for that then, to add the quest

uncut viper
#

most Quests are not hardcoded at all

#

usually whats more difficult is simply adding it

lucid iron
#

BETAS has a fish fished trigger?

uncut viper
#

but the actual Quest data is mostly done in the asset

#

BETAS does have a FishCaught trigger

brittle pasture
#

you can do trigger on day start if you don't need it to be immediate

soft lance
lucid iron
#

Alternatively add it overnight with dayending

soft lance
#

if its mail

#

but this isnt mail

brittle pasture
#

you can do stuff on day start that isn't mail

lucid iron
#

Then yeah use day ending and the gsq that checks fish caught

#

Idrm the name but it's vanilla iirc, wiki should say

uncut viper
#

theres also a CT for catching a fish the first time you could use too

lucid iron
#

Wiki also got info on quest format

soft lance
#

I got a good idea of it, but not really the best

uncut viper
#

any mod making a quest is going to look exactly like the vanilla data

#

its the same format

lucid iron
#

Well the core intuition with content patcher is that you are using json files of specific schema to add new stuff to content

brittle pasture
#

most of a content patcher mod is going to be "Action EditData, Target this asset that the game uses to read whatevs, and then <new data in the exact way as how the game does it>"

lucid iron
#

Hence why I am mainly saying "how to find out format of data" and not "how to add data" bc the second part is answered by cp docs

#

Remember that patch export is ur friend and good way to check that your data got added

soft lance
#

mail.json:

Photo 1: Mail entry
Photo 2: TriggerActions entry

quests.json:

Photo 3: Quests entry

Oddly, nothing pops up (ID seems correct for the Sardine), as in no mail, does anyone possibly know what I may have done wrong? 😅

brittle pasture
#

that's not how quest data is formatted

lucid mulch
#

has that trigger id ran before on that save?

brittle pasture
#

also you're missing the two terminating %% for your add quest command in the mail

brittle pasture
soft lance
#

im going to look for a mod that does do this, as just saying its not formatted correctly will never get us anywhere

appreciate your help, however

lucid mulch
#

and PLAYER_HAS_CAUGHT_FISH for 1.6 requires qualified ids afaik so would be (O)131

brittle pasture
#

how it's formatted is explained on the page better than I ever could

#

but tl;dr it's a long string consisting of sections separated by slashes

#

"109": "ItemDelivery/Catch A Squid/Willy is challenging you to catch a squid. He says you can fish them from the ocean on winter nights./Bring Willy a squid./Willy (O)151/-1/800/-1/true/Hey, you did it! Not bad. Not bad at all. I'm impressed.#$b#Winter's a good time to break out the old fishing rod, isn't it?", for the vanilla squid quest for example

soft lance
urban patrol
#

you don't need to translate it; data/quests is a slash-delimited string and is formatted exactly like that

#

unfortunately not everything is a data model

soft lance
#

like for instance

#

this is how youd be adding some of the letters without triggers

soft lance
urban patrol
#

a general rule of thumb is that your vanilla target is going to be whatever the JSON is called (Quests.json inside the Data folder, which is where you get Data/Quests from)

soft lance
#

Like this, as an example?

#

Purely example of course

brittle pasture
#

yeah that looks good as a start

#

next you edit each field in the long string; each of them is separated by the slash /

#

first field (index 0) is the type, second field (index 1) is the title, etc.

soft lance
#

from the wiki yeah, i'll try to follow that

#

Now, how can you make it so when you read mail it triggers the quest?

#

ik how to make the mail popup, just the quest activation on read not yet

urban patrol
#

(from Modding:Mail_data)

soft lance
#

Would this be considered correct?

#

As a mail entry?

#


"{{ModID}}_SardineQuest_Start": "Hello!^^I'd love to have 5 sardines! Can you go and catch some for me? Thanks!^^- Willy^^%item quest {{ModID}}_CatchMoreSardines %% [#]Request Letter"

urban patrol
#

looks right to me

soft lance
#

"{{ModID}}_SardineQuestTrigger": {
                    "Id": "{{ModID}}_SardineQuestTrigger",
                    "Trigger": "DayStarted",
                    "Condition": "PLAYER_HAS_CAUGHT_FISH Current 131, !PLAYER_HAS_MAIL Current {{ModID}}_SardineQuest_Start",
                    "Actions": [
                        "AddMail Current {{ModID}}_SardineQuest_Start now"
                    ]
                }

#

And lastly, dis

#

just checking if there was like

#

some sort of thing i had to do extra or not

urban patrol
#

you probably don't need the !PLAYER_HAS_MAIL condition; triggers only fire once by default

soft lance
urban patrol
#

also, when you go to test this, i recommend testing it on a new save because of aforementioned "triggers only fire once"

hollow root
#

Hello, I’m modding for the first time and trying to mod in a fish, but I’ve run into a couple issues. Is it okay if I post my JSON file here so someone can proofread it? I’ve been following the tutorial on the modding wiki.

urban patrol
#

!json yes, you can share the link after uploading to this site

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.

hollow root
urban patrol
#

yep!

hollow root
#

You can ignore all the crop stuff because that's working fine

urban patrol
vernal crest
#

Looks like they're using different IDs in data/locations than for the actual fish

hollow root
#

Should they be the names of the actual textures instead? The aquarium sprite is named miketroutaquarium and the fish one is miketroutfish

#

This was the error I got when I opened SMAPI

soft lance
# hollow root This link I assume? https://smapi.io/json/content-patcher/2200d5e0dbdb483fb62941...

Hello!

This does contain a few small issues with how fish are being added, so I'll recommend you check:

https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_New_Fish#Aquarium_Data

And if you want to see how fish are added, a live demonstration is here:

https://www.nexusmods.com/stardewvalley/mods/38752

I say this as there are multiple issues with this, however if you'd like me to explain it then I can, though I'd recommend re-attempting with this wiki, and especially this mod, since both show how to do it in a clean manner

Nexus Mods :: Stardew Valley

Aquatic Sea Creatures expands Stardew Valley’s fishing experience with over 20 new fish found in the Ocean and Ginger Island. Each fish has its own time, season, and weather conditions, which makes

Stardew Modding Wiki

Last edited by AtlasVBot on 2025-09-13 18:56:18
Adding a new fish to the game has never been easier than in 1.6; nowadays, fish are a simple set of patches via Content Patcher. There are four required steps: you need to load sprite images, define the fish (as an item, and as a fish) and add it to locations. Optionally, you can add aquarium spri...

urban patrol
#

ah yeah this:

    "{{ModID}}.fish.beach",
],```
needs to be the ID in Data/Fish
hollow root
#

Ohhh I see

urban patrol
#

(usually errors like "unexpected character" are because something is missing in the line above)

hollow root
#

Like this?

urban patrol
#

yep! each patch needs to open and close with a pair of {}

#

a patch is a block of code that has an action basically

vernal crest
#

Needs a comma on line 215

hollow root
hollow root
urban patrol
#

oh good catch aba lol

urban patrol
#

Data/Fish is a vanilla data model that you target to edit in order to add your fish

#

(this is what "EditData" and "Target" mean)

hollow root
#

Ah ok
So here? Should it be {{ModID}}/fish instead of {{ModID}}.fish.beach?

urban patrol
#

it should be {{ModID}}.fish (i assume you just typoed that)

hollow root
#

oh yeah lol

#

tutorial had .beach in it so i got confused

urban patrol
#

if you're going to add multiple fish btw, i recommend making the ID {{ModId}}_MikeTrout or something. but for now what you have is fine

soft lance
hollow root
#

I'm going to replace each instance of .beach and see if that fixes it. Thank you so much!!

urban patrol
#

good luck!

soft lance
#

Still unsure why it still doesnt trigger

#

even after catching, two save files now oddly

urban patrol
#

also i'm assuming you're catching the sardine and then sleeping?

soft lance
#

debug gq "PLAYER_HAS_MAIL Current {{ModID}}_SardineQuest_Start"
[game]

Query Result
PLAYER_HAS_MAIL Current {{ModID}}_SardineQuest_Start false

Overall result: false.

lucid mulch
#

you will need to replace {{modid}} yourself for the debug gq command

lucid mulch
#

also debug gq "PLAYER_HAS_RUN_TRIGGER_ACTION Current {{ModId}}_SardineQuestTrigger" (remember to swap out modid)

soft lance
#

debug gq "PLAYER_HAS_MAIL Current ASF_SardineQuest_Start"
[game]

Query Result
PLAYER_HAS_MAIL Current ASF_SardineQuest_Start false

Overall result: false.


debug gq "PLAYER_HAS_RUN_TRIGGER_ACTION Current ASF_SardineQuestTrigger"
[game]

Query Result
PLAYER_HAS_RUN_TRIGGER_ACTION Current ASF_SardineQuestTrigger false

Overall result: false.

urban patrol
#

your mod id is just ASF?

#

(you can find your mod id in your manifest under UniqueId)

soft lance
#

That is correct, it is

urban patrol
#

okay cool, just checking

hollow root
#

IT WORKS!

urban patrol
#

there's no sort of When condition or anything on your trigger action, is there?

#

in fact can you just share the whole patch

soft lance
#

like mod?

urban patrol
#

whatever file has the patch where you target Data/TriggerActions, yes

#

if it's 100000 lines i would appreciate the line number though lmao

soft lance
urban patrol
#

!json can you please upload it here and share the link

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.

soft lance
urban patrol
#

no worries, it's just easier for us to read on the site

urban patrol
#

hmm it all looks correct to me

soft lance
#

which is tiny tiny

#

odddd

hollow root
#

ok it almost works

soft lance
#

for this it would be likely an index of 0 if its the first fish

hollow root
#

this is the aquarium fish data and this is the sprite

urban patrol
# soft lance odddd

i have stupid questions: 1) are you sure you're editing the right file, and 2) have you patch reloaded, started a new save, caught the fish, slept, then checked your mail

ornate locust
#

are you making a Seaman

soft lance
# urban patrol i have stupid questions: 1) are you sure you're editing the right file, and 2) h...

1: Yes, I am. I have also checked my content.json imports:

"FromFile": "code/fish.json, code/objects.json, code/behavior.json, code/locations.json, code/aquarium.json, code/pond.json, code/mail.json, code/quests.json"

Which include my newly added quests.json

2: Unusre as to what a patch reload is, but I made an entirely new save file, caught fish, slept, then checked the mail, I can try again I suppose

hollow root
urban patrol
#

!reload

ocean sailBOT
#
How do I reload my changes while I'm still in game?
  • Content Patcher pack: enter patch reload <your_mod_id> in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate the ConfigSchema or DynamicToken sections if you use them).
  • Translation files: enter reload_i18n in the SMAPI console window. If it's for a Content Patcher pack, also run patch reload afterwards.
  • C#: see the Visual Studio hot reload or Rider hot reload feature.
hollow root
#

HELP 💀

ornate locust
#

which was very strange

#

You talked to it through your microphone and it sorta understood you, but it was a long time ago so it didn't work great

soft lance
#

So unsure really, seems more like a code issue, the game reports its caught, but the trigger never occurs

#

So I'd assume it's how the trigger is setup

urban patrol
#

can you patch export Data/TriggerActions?

#

and check for your trigger

soft lance
#

..hmm sure, im not that knowledgable on patching/checking, so I'll try it

urban patrol
#

patch export Data/TriggerActions and navigate to the folder it says

soft lance
soft lance
#

not even the word

urban patrol
#

i don't see your sardine quest trigger in there, so there's an issue with your patch being applied

#

i see the rest of them though

#

so i would really really double and triple check that you're editing the correct file inside of your mod folder, that you've closed the game completely and then reopened it, or patch reloaded

#

also check that you've saved the file

soft lance
#

I'll check its naming again

soft lance
#

and if it is, im going to fight the air

#

let me try something

#

Hmm, odd, still nothing

I can confirm that the letter, no matter what it is, doesn't matter, it completely cannot trigger, I re-routed it to an older, already-tested letter, and it still wont fire

#

Maybe it's a bug, unsure, no errors while not being in the exported trigger actions is weird

urban patrol
#

well the trigger isn't firing because it doesn't exist in the game

#

it doesn't matter what letter you tell it to send

soft lance
#

i'll take a closer look in the morning

urban patrol
#

the same patch adds all your triggers, so if the rest are in there and that one isn't, that means that the game is seeing a different version of that patch

soft lance
#

and yeah all the rest look identical

#

except this one wont work

urban patrol
#

well, what i would expect is that you have an outdated version of the file in your mod folder

#

i can't think of another reason why the rest would be added and that one wouldn't be

soft lance
#

all of the mods are up to date

vernal crest
#

Patch summary

#

See if the patch is visible to CP but not being applied

urban patrol
#

patch summary YourModId

soft lance
#

ohh okay

urban patrol
#

but the patch is being applied, because the rest of the trigger actions are there and it's the same patch

boreal cliff
#

i now know why this stupid seasonal edits im doing doesnt work

vernal crest
#

Ah right sorry missed that then yeah that won't help much

boreal cliff
#

my fucking pngs get overwritten by the tbin files

vernal crest
royal stump
#

(the bottom 3 triggers are missing, not just the sardine one, at a glance)

boreal cliff
#

i have to edit the damn content json of the actual mod

vernal crest
#

Do you maybe mean that the original mod has its tilesheets in the same folder as the map?

#

Because that would stop your edits from being applied

vernal crest
#

Ah then yeah unfortunately as you have discovered there's no way to edit it with another mod

boreal cliff
#

unfortunately im very stubborn so i WILL make this work

vernal crest
#

Is this just for personal use?

boreal cliff
#

yes

vernal crest
#

Then yeah you can edit the OG mod directly so it works the way you need it to

tight rivet
#

I wonder where the filter rules for Auto-Grabber live

#

is contemplating a mini mod

lucid iron
#

are there rules

calm nebula
#

There are not rules lol

#

It's just handled in AnimalHouse.dayUpdate

tight rivet
#

ah..

#

(The problem is that a mod adds a new type of hay, and guess what happens if you have the Auto-Grabber in it..?)

#

or is that .. maybe a diferent mod. 🤔

calm nebula
#

Almost certainly a different mod tbh

hollow root
#

Unsure what I did wrong here,,

#

is it “miketrout?” should it be .fish instead

rigid musk
#

apparently its pulling from a fish called 'bass' at least thats what the string at the end says ... from what i can see anyways

#

hard to read the text off the screen

hollow root
#

hmmm, maybe i forgot to replace an instance of bass in the tutorial somewhere

urban patrol
#

is a map patch of a custom map OnTimeChanged still expensive, or is it only vanilla/heavily used maps that suffer?

tiny zealot
#

editing a map is expensive in general. the more commonly used a map is, though, the worse it compounds

urban patrol
#

hmm, would editing the tilesheet on time change still be expensive?

#

actually idk if that would even work

golden basin
#

@brittle pasture So the little dude is suppose to harvest crops and also collected clay what does this mean?

#

the clay is a drop i believe

#

does the harvest thing override the drops as well?

brittle pasture
#

does it drop clay or dig them up

golden basin
#

dig

brittle pasture
#

then it's just an UI Info Suite 2 bug

#

it's hardcoded to not show the icon for truffles only

#

the icon means your animal can dig up clay when it's let outside

golden basin
#

oooh let me check and see if the player with this issue has that mod

#

so if i change it to drop it will go away?

brittle pasture
#

sure, but it's just a visual bug

golden basin
#

right now its being reported to me so i wanna do something to make it go away so i dont get reports

brittle pasture
#

in that case after fixing it and releasing the new version also tell them it will go away after they sleep again in case they send another report

#

but note that any animals that dig up will be affected if they don't dig up truffles

#

(I corrected my post a little)

golden basin
#

its fixed! thank you sleph

#

selph*

brittle pasture
#

~~well it's midnight here so I sure need to sleph as well SDVpufferrad ~~

golden basin
#

who made unlockable bundles? are they in the server?

#

i know their nexus but idk if theyre here with a different name

vernal crest
#

Delixx and yep

peak juniper
#

How do I create a custom token mode that makes it false when I take off my shirt and true when I wear it? I try to do as many things as I can throughout the day, but I don't know...

#

I'm going to apply this token to body type mode. I have a bug with retail.

hard fern
#

I don't think there's any way to actually tell if a player is wearing a shirt or not with content patcher

#

🤔

peak juniper
#

I don't understand if it's because I've never used C#, even if I look at Wiki..

#

I've been stuck making mod files

brittle pasture
#

CP tokens are reloaded at best once per time change

#

so even if you know C# it most likely won't do what you want

#

better to just have a config option for shirt/shirtless and tell your user to flip it (I assume they are unlikely to change shirt throughout the day)

peak juniper
#

Thank you. There's a reason to give up
I think it's better to buy it roughly lmao...

woeful lintel
# golden basin wait how

Furniture Framework also allows to mix and match Furniture features if you're interested, might be simpler to use to make wall tanks (and maybe fix the shadow issue? needs to be tested).

heavy pewter
#

Guys, what's the right arguments for Game1.player.useTool()? I'm getting CS1501

brittle pasture
#

!decompile recommend doing this to find the answer directly for any question you may have

ocean sailBOT
brittle pasture
#

to answer your question directly, it's a static function on Farmer that takes the farmer as an argument

heavy pewter
#

Dude! Thanks, finally done it

hollow root
#

I haven’t figured out how to fix these two bugs yet, I’ll ask my dad for help tomorrow. To think I’m starting this journey because I want to add a whole new area and two new NPCs 😅 it’s a little daunting of a task

fossil osprey
#

The left one is because the aquarium sprite is a separate sprite that you need to set up yourself
Right one looks like you made a typo somewhere, although without your JSON it'll be hard to guess

hollow root
wanton sage
#

Anyone know were i could find an image for the letters in stardew?
Bog interface dosent have a letter png and i wanna try to maybe make my own

unreal spoke
#

!unpack
They’re… somewhere in there. LetterBG, I think the file’s called?

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!

wanton sage
#

Yea letterpng is what i need

golden basin
spice inlet
#

I haven't tinkered with the alpha yet

#

would have to see if it compiles

vernal crest
wanton sage
#

OH! I didnt know she had a discord server! Were can i find it?

vernal crest
#

We will be releasing it to Nexus in the next few weeks too once I've had a chance to tidy it up.

uneven spindle
#

hi everyone! I finally got around updating the assets names in my mod with the {{ModId}} token but now my {{Target}} and {{TargetWithoutPath}} tokens are broken. do I need to update every image name too or am I doing this wrong?

drowsy pewter
#

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

vernal crest
uneven spindle
#

but now {{TargetWithoutPath}} has a different value and cp can't find the images. i was wondering if i need to change the image names too for all custom assets

woeful lintel
#

I think the usual way to do this is to expose the asset you want to patch at Mods/{{ModID}}/my_asset_name so that the mod id doesn't appear in the target without path

vernal crest
#

I've never tried using a character sprite or portrait without Characters/ or Portraits/ in the asset name. It might work.

#

If it doesn't (it being what Leroy is suggesting) then yes you'd need to rename your files if you want to use the target without path token.

uneven spindle
#

could you write a small example (or edit mine)? i don't quite understand what you're trying to do

woeful lintel
#

where do you use Characters/{{ModID}}_Abigail_Spring etc?

#

I don't know much about character data

uneven spindle
#

but thats just what i understood when i asked for best practices, i might be wrong

devout otter
vernal crest
vernal crest
soft lance
ocean sailBOT
#

@soft lance You leveled up to Farmer. You're now a prettier shade of blue. Thanks for sticking around!

uneven spindle
worldly wadi
#

Heyyyyy are the items icons 16x16 or 24x24? And does that applies to all the items? (And abt my NPC, I was able to fix her YAAAAAAAY)

vernal crest
vernal crest
lucid iron
#

Isn't scc just working anyways

#

What's the update

uneven spindle
worldly wadi
uneven spindle
#

they gave me permission to update the original instead of making a different release

vernal crest
worldly wadi
#

Oooooh ty ty! :D

uneven spindle
# lucid iron What's the update

mainly bugfixes and the ability to enable portraits and sprites separately, i have a changelog with the details if you're interested

lucid iron
#

I think you don't have permission to release the update then

#

But it is perhaps feasible to release just the content json, in which case you really don't want to change the image file names

devout otter
uneven spindle
#

if by assets you mean images (portraits and sprites) then no, i'm not making new ones just editing the existing ones

devout otter
#

In that case you shouldn't need to load new asset names. Just use what SCC already loads.

#

Basically you're mostly restructuring the Appearance data, yar?

soft lance
#

Quick question, for TriggerActions, is it normal for them to still exist in a patch export Data/TriggerActions, even if they have been fully removed from the code entirely?

uneven spindle
vernal crest
soft lance
#

and did a patch reload for safety

#

before exporting the Data/TriggerActions to see non-existing code exist

vernal crest
#

Then no it shouldn't still exist. Did you definitely remember to save the file?

#

That's usually my problem

soft lance
#

Like every few letters I save lol

devout otter
boreal cliff
vernal crest
soft lance
soft lance
#

This is already a newer save

#

from yesterday

vernal crest
uneven spindle
vernal crest
soft lance
vernal crest
boreal cliff
#

mayb its bc when editing the map in tiled i replaced the tilesheet image for each season instead of placing tiles manually?

devout otter
vernal crest
vernal crest
boreal cliff
soft lance
soft lance
#

Stardew isnt taking in any new changes

lucid iron
vernal crest
vernal crest
soft lance
#

AAAAAAAAAAA

vernal crest
#

@boreal cliff would you like to send me the mod and your assets and tell me what you want to have it do and I will write that for you?

vernal crest
lucid iron
#

The performance cost here is check some relatively fast gsq or cause Data/Characters invalidation daily blobcatgooglyblep

soft lance
#

tysm ur a live saver

lucid iron
#

Which one is "better" is mod list dependent but you should probably actually profile it

vernal crest
uneven spindle
# devout otter Okay, I'm sorry to question again but I'm don't mean to interrogate, I swear. I'...

its fine, so i came up with this idea as i was learning. if new festivals are added in the future i would need to update each json to load new assets, add them to the appearance entries and update the patches that disable portraits and sprites

instead i use a single appearance and edit the asset as needed with this localtoken
https://smapi.io/json/none/51d8681ddd7742c1b916e8408fd9b5b0

and the portraits code updates it accordingly
https://smapi.io/json/none/b49338d72ab046c8972258958a381eb0

if i want to add new festival assets to abigail i just need to add a value to the localtoken instead of doing everythin i mentioned above

#

sorry if i didn't explain it properly, there's a bit more code involved but wanted to keep it simple

lucid iron
#

Local tokens don't work like that

#

Content modder yearn for the foreach once again

uneven spindle
#

could you elaborate a bit?

woeful lintel
#

when CP parses the included json, the token "SupportedFestivals" will have the whole value

lucid iron
#

Hm actually what is this festivalid token, are you defining that elsewhere

woeful lintel
#

it will not take each value one after the other

lucid iron
#

At a glance i thought you were using supportedfestivals in the edit itself which indeed wouldn't work

woeful lintel
#

yeah chu is right

lucid iron
#

I think the point is still the same though

#

Is making content patcher do more work at day start actually worthwhile vs simply relying on game to check the Condition normally

uneven spindle
lucid iron
#

Again I don't have objective answer for this, but do you actually observe lag from existing approach?

uneven spindle
# woeful lintel when CP parses the included json, the token "SupportedFestivals" will have the w...

you mean something like this:

        {
            "Action": "Include",
            "FromFile": "assets/Code/Alex/Alex.json",
            "LocalTokens": {
                "SupportedFestivals": "festival_spring13, festival_spring24, festival_summer11, festival_summer28, festival_fall16, festival_fall27, festival_winter8, festival_winter25"
            }
        },
        {
            "Action": "Include",
            "FromFile": "assets/Code/Caroline/Caroline.json",
            "LocalTokens": {
                "SupportedFestivals": "festival_spring24, festival_fall27"
            },
        },

SupportedFestivals will have "festival_spring13, festival_spring24, festival_summer11, festival_summer28, festival_fall16, festival_fall27, festival_winter8, festival_winter25" for everyone?

devout otter
#

I'll just bring up that this would be very incompatible with other mods that change SCC portraits. But I suppose the point is moot if you're doing this for personal use.

woeful lintel
#

no, as chu said, I thought you were using SupportedFestivals directly in the data as if CP was loading your included json once for each value

uneven spindle
lucid iron
#

Well do whatever that sparks joy I suppose PecoWant

devout otter
#

One of the big advantages of using Appearance data for everything is to have easier compatibility with portrait mod authors.

gentle rose
#

(twice)

uneven spindle
lucid iron
#

Some of the things you want to do could probably be done as a separate content patcher mod that depending on SCA

uneven spindle
#

still i'm aware this would break compatibility but thought it would be for the better

uneven spindle
gentle rose
lucid iron
#

You use all the same loaded textures but manipulate the appearance entries

gentle rose
#

usually when people say "better" it's either better for performance or for compatibility

lucid iron
#

The ones that are difficult to deal with is any editimage sca is doing

soft lance
#

Hey everyone! Very close to completing something, and thank you for pointing out that I was editing the wrong copy of my mod 😅
**
Thankfully, all my event logic and letters work!** Now, is it possible to add it to where once this quest finishes, a letter is sent the next day? Like as a thank you letter from Willy thanking you on giving him the sardines from yesterday?

uneven spindle
lucid iron
#

Next version adds tracking for completed quests

devout otter
soft lance
soft lance
lucid iron
#

When you give willy the fish he has a quest completion dialogue yes?

soft lance
lucid iron
#

That one's parsed by normal dialogue logic which means the $action command is usable and you can call AddMail there

gentle rose
vernal crest
#

I released a mod exploring a new way of doing things and then it broke a bunch of things so I changed back to the usual way for the update and that broke a whole bunch of new things :D

gentle rose
#

speaking of, chu you've done map c#. my dynamically generated map is having the weirdest bug

lucid iron
#

Why are u

vernal crest
#

(It was very humiliating which is why I am bragging about it in public 😌 )

lucid iron
#

Is this the npc dimension

gentle rose
#

where the little swipe from swinging a tool doesn't disappear at the end of the swing

#

and just... stays

lucid iron
#

I know enough map C# to make a tmx for everything bigger than 3x3 SDVpufferpensive

gentle rose
#

I'm not even sure why that would be affected. my map should be for all intents and purposes a normal map

soft lance
lucid iron
#

Oh and you don't have custom GameLocation class?

gentle rose
#

no, normal GameLocation

lucid iron
#

Wack

gentle rose
#

thank you for your expert opinion SBVLmaoDog

lucid iron
#

the swipey is temp anim sprite so it should complete and get pooled again

gentle rose
#

yes

but it remains

lucid iron
#

Not very temporary

gentle rose
#

and I think it may cause lag but that may just be my potato

tiny zealot
#

iro, can you tell me about the npc dimension

soft lance
#

"ASF_WillySardineQuest": "ItemDelivery/Catch More Sardines/Willy heard about your catch, he's asking for more sardines for his research./Bring Willy 5 sardines./Willy (O)131 5/-1/500/-1/true/Hey! You brought the sardines!#$b#Perfect, these will be great for my notes. Thanks!$h$action AddMail ASF_WillySardineThankYouLetter tomorrow"

hmmm haha

gentle rose
#

you put in a debug command and all the NPCs get yote into the NPC dimension

and their dialogue gets replaced with lorem ipsum showing every portrait they have

except for krobus who says his first line and THEN the lorem ipsum for some reason

tiny zealot
#

ah yes, the classic hardcoded krobus introduction dialogue

gentle rose
#

yeah I figured that was it, I was too lazy to check lmao

tiny zealot
#

that's getting dehardcoded in .16 i'm pretty sure

#

but he'll still do it

gentle rose
#

it doesn't matter too much because he still says the lorem ipsum after

lucid iron
calm nebula
#

Yeah

#

Add a #

gentle rose
#

the NPC dimension generates itself in the appropriate size for the number of NPCs

its only issue is the tool swing

soft lance
#

Like this?


"ASF_WillySardineQuest": "ItemDelivery/Catch More Sardines/Willy heard about your catch — he's asking for more sardines for his research./Bring Willy 5 sardines./Willy (O)131 5/-1/500/-1/true/
$action AddMail ASF_SardineFollowup
Hey! You brought the sardines!#$b#Perfect, these will be great for my notes. Thanks!$h"


gentle rose
#

I briefly turned it into the Blair Witch dimension when I made everybody face back instead of front by accident

lucid iron
#

For r&d

gentle rose
#

by the way, if you do more tool swings they do just build up

lucid iron
#

Have u tried bomb

gentle rose
#

no but now I have too

#

remind me in 30 minutes to try that after lunch

patent lanceBOT
#

THUMBS UP EMOJI (#6959359) (30m | <t:1763565851>)

lucid iron
#

R&D!

#

Wow i never seen this marubot message

soft lance
# lucid iron It has to go on a new line before the dialogue line iirc

Gonna be honest I'm half cat and half human, can you show me where? 😭


"ItemDelivery/Catch More Sardines/Willy heard about your catch, he's asking for more sardines for his research./Bring Willy 5 sardines./Willy (O)131 5/-1/500/-1/true/Hey! You brought the sardines!#$b#Perfect, these will be great for my notes. Thanks!$h$action AddMail ASF_WillySardineThankYouLetter now"

vernal crest
#

This content.json is nearly 9,000 lines even though I am using two layers of Includes for this mod SDVpuffermusic

fervent horizon
#

I just looked over the upcoming changes for 1.7 and a lot of that stuff is very exciting, especially the monster changes

vernal crest
#

If those monster changes break this mod I will rampage forever

fervent horizon
#

Have you looked over the changes, cause Monsters is where things will likely break. They reworked how monsters are coded

vernal crest
#

Yeah, I have. Chu's the one who's going to have to do a bunch of rework, poor thing. And for MHF...well...I am just hoping I will know enough C# to fix things myself by the time 1.7 rolls around. I was aware going into making these mods. But it won't stop me from rampaging!

soft lance
vernal crest
fervent horizon
#

I wonder if all the clothing changes will make FS obsolete

#

well I guess it is just hats and boots

#

Display Shops will make some cool mods possible

vernal crest
#

Not unless the changes will allow custom sizes and animation as well as many layers of clothing and accessories

fervent horizon
#

yeah, I got ahead of myself while reading

#

Furniture looks like it will be way easier though

#

Not sure how it will affect Furniture Framework

vernal crest
#

I'm sure Leroy will be very on top of it

fervent horizon
#

Yeah, definitly

vernal crest
#

This will be the first time that I will have to update mods because I have several that are going to break

#

Update due to a game version change, I mean

lucid iron
#

So you have most of the work cus you gotta fix the vanilla monster edits

fervent horizon
#

Oh, fish pond 10 limit hardcode goes away in 1.7

#

Thats cool

lucid iron
#

1.6.16 isn't changing the data model from what i know so this is problem for 1.7

vernal crest
#

Eh that's okay it's one tiny patch

vernal crest
calm nebula
soft lance
vernal crest
gentle rose
soft lance
vernal crest
calm nebula
#

Tbh iirc you can cheat by setting yourself as a temporary location but details will have to wait for me to get home

soft lance
#

DID IT YYAYYYYY

#

TYSMM @vernal crest and @lucid iron

#

Yeah I forgot to add it into the Data/Mail entries, ik im so smart

uneven spindle
ocean sailBOT
#

@uneven spindle You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

gentle rose
#

I’ll look into it

uneven spindle
gentle rose
#

you should be able to do the same patch multiple times without code repetition using includes no matter what you’re editing

#

afaik

patent lanceBOT
devout otter
#

Are you planning to update the mod with more festival costumes?

gentle rose
patent lanceBOT
#

Got it, irocendar (#6959401) (20m | <t:1763567084>)

uneven spindle
gentle rose
#

yup

uneven spindle
patent lanceBOT
devout otter
uneven spindle
gentle rose
# uneven spindle i wouldn't put as "slight convenience", code repetition leads to bugs and a hard...

we’re more trying to show you a more productive direction since we’re familiar with this community and also the results of various modding decisions and want to help you and the authors you impact get the best possible outcome. However, it seems that no matter what we say about the possible problems with this method and the other viable methods, you are set on doing things this way, so all I can do at this point is ask that you ask the original creator of SCC if they’re specifically okay with the update working the way you described.

tight rivet
#

what change?

gentle rose
#

rewriting scc so basically every festival asset is now loaded to a new place and changed in a different way to how scc currently does things in order to avoid either writing the same patch multiple times or using includes

uneven spindle
# gentle rose we’re more trying to show you a more productive direction since we’re familiar w...

and I appreciate the comments and take notes on the issues that would arise should I upload the mod as is.
At no time I decided this method is set in stone and would ship with the update (in fact I mentioned several times that its still WIP and i'm looking those templates you mentioned earlier), I was just arguing why I went with this approach. Yet I feel my reasoning were quickly discarded because of compatibility issues without regards for the pros.
As for the author, they are aware of this compatibility issue when I asked for permission, as my original intentions were to ship it as a separate mod

gentle rose
#

well tbh the rest of us have yet to really understand the pros, considering the code reuse thing can be prevented using includes without this whole change

woeful lintel
#

code repetition in the context of Content Packs is a bit of a misnomer since we're actually only working with data, and repetition in data isn't as bad of an issue

dusk terrace
#

I need a refresher, is OnAssetReady always called after OnAssetRequested? and both ignored if the asset being requested was previously cached?

gentle rose
#

and to be clear, there's really no judgement intended, this is just a place where we talk about how to do things. if this was judging I'm pretty sure chu and button are criminally bullying me every day SDVpuffersquee

uneven spindle
woeful lintel
#

that mindset still stands, but Content Packs are more data than code

tight rivet
#

yeah that's uh.. a change I don't see the virtue in.

tiny zealot
lucid iron
tight rivet
#

but to be fair, I'm also not going to say much if you want to do it. A lot of people code in idiosyncretic ways. If it works and you're willing to maintain it, that's all that matters to a lot of people

lucid iron
#

You may need to watch for edge cases too if using ready

#

Like Game1.objectData being populated a tick late

#

I am a "do my data transform shit in a lazy loading prop" kinda person cus I don't want to think about this

#

So i almost never use asset ready

uneven spindle
tiny zealot
dusk terrace
tiny zealot
#

oh yeah font smasher uses one since it needs to patch the fonts saved in Game1

lucid iron
dusk terrace
#

ahh okay

lucid iron
#

I personally would make a property backed by a nullable field and do the validation in the getter when the backing field is null

#

But that's at least partially cus i want to not write the long Load<type> call every time

dusk terrace
#

ye I do something like that, but on the processed data

#
GetProcessedData()
  if (!_data || _isDirty)
    _data = ProcessTheData(Load...)
  return _data
spiral lion
#

Heelloo!
I am making a NPC mod. In the mod there will be an return item quest. After the quest is finished i would like a mail being sent. Does anyone know how to to this?
I cant find any "quest" related stuff in Game_state_queries.

Thanks! :)))

lucid iron
obtuse wigeon
#

Did I make up that different vanilla farm maps have different starting seeds? if I didn't is there somewhere online like the wiki or something that lists the different starter seeds available? I couldn't find it on the farm wiki page or the farm types wiki page

hard fern
#

seeds? like parsnips?

#

everyone gets parsnips

obtuse wigeon
#

Just parsnips? ace ty!

tiny zealot
spiral lion
#

okay thank you!! :-))

tiny zealot
obtuse wigeon
#

Wow getting used to the file structure after so long is so confusing

spiral lion
#

Just like this then? 🙂

tiny zealot
#

you want $action AddMail instead of $AddMail. looks good otherwise

spiral lion
#

oh haha okay :))

heavy pewter
#

Guys, aside from BETAS, are there other mods that adds more actions,triggers, and game queries

gray bear
#

MEEP? meep

toxic hornet
#

Hi! I want to learn to edit some maps. I already read the modding page on the wiki for it and I got Tiled but I'm still confused. Would anyone be willing to help explain how to go about this or direct me to a better guide somewhere

iron ridge
#

what's the confusing aprt?

urban patrol
#

my advice is to open up vanilla maps in tiled and poke around. learn what sort of things go in what layer, what the different tools do, etc

brittle pasture
toxic hornet
urban patrol
#

have you unpacked the game?

heavy pewter
toxic hornet
urban patrol
#

!unpack here you go

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!

toxic hornet
#

thank you!

brittle pasture
uncut viper
toxic hornet
urban patrol
lucid iron
#

Sometimes there is conditional logic but it's not on a trigger action

dusk terrace
#

When adding a new list entry in CP, this looks like the correct way according to the docs, but what does the key do (foo.bar in my example)? is it used at all or just in case the entry already exists?

{
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Mangupix.DialogueDisplayFramework/Data",
            "Fields": {
                "foo.bar": {
                    "Id": "UniqueModId.UniquePatchId",
                    (some changes...)
                }
            }
        }
    ]
}
uncut viper
#

where did you get foo.bar from

#

the key is how content patcher find what item in the list to edit, by looking for an item in the list with a matching Id field

#

oh for adding not editing

#

i dont remember which has precedent. probably the id field. best to make them the same just in case anyway though

dusk terrace
#

gotcha

high geyser
#

Hello, I am working on a mod that includes a custom location. The location was initially made with Content Patcher, but now I realize it requires more advanced functionality that can only be written in a C# location class. Is there a way to port these C# changes into the location created with Content Patcher?

uncut viper
#

if you really need a custom GameLocation subclass and cannot possibly do it with harmony or SMAPI events, you can change the CreateOnLoad map type for your location to your custom subclass. however, you cannot subclass it without requiring a SpaceCore dependency because you cannot save a custom subclass of anything to the save file. you will need spacecore's serializer functionality

#

i would highly recommend considering whether or not you can achieve what you need via other means than subclassing

lucid iron
#

In many cases the custom feature is just "run some special setup C# when player go into map"

#

Those you can do with C# smapi on warped events

#

Or maybe it is "do something special when player interact with a tile"

#

Those are just tile action

high geyser
# lucid iron What are the advanced features?

I am hoping to reuse the Gem Bird Puzzle from Ginger Island where the player puts gems on pedestals and then gets an item, but modified to use different items. These pedestals are added to the IslandShrine location in its class, and the puzzle is also handled by that class. Would that be possible to create OnWarp?

lucid iron
#

Yeah sure just make them and add to the objects dict on the location to spawn them

#

You can track these in your own list, doesn't have to be on GameLocation

uncut viper
#

you can even just put your own ItemPedestal objects on the map

#

(via C# ofc)

lucid iron
#

You will have to handle the puzzle logic yourself ofc

#

But you should be able to hook the netfield gor heldObject on the pedestal to detect player putting down item iirc

high geyser
#

Ok thank you very much! That all sounds much simpler than what I was trying to do

brittle pasture
#

(funnily enough the game just checks all the pedestals every tick instead of highly optimized netfield change detection)

uncut viper
#

ItemPedestal also has a match netbool that is set to true when the player puts the required item in

#

since you are able to tell it what the required item is in the ItemPedestal constructor

lucid iron
#

Just remember subclassing anything that is serialized to save file is very bad in sdv modding land

#

Hence the suggestions here are about observing the states of stuff and not implementing any method override

uncut viper
#

even if you wanted to override a method completely, you can use Harmony for that

wheat kelp
#

Hey folks! Quick question about folder naming. I'm trying to make a backup of my installed Fashion Sense mods by creating a compressed folder, however, Windows won't allow you to zip a folder if there's foreign characters in the sub-folder names.

Does anybody know if making a .rar instead, will work the same way, or would it allow me to keep the file names as currently are, with Chinese characters?

brittle pasture
#

are you using the built in windows archiver or winrar/7zip/etc

#

I heard it's only a problem with the former, and if you use any of the latter .zips are fine

obtuse wigeon
#

Windows should only stop specific symbols being used (specifically * " / \ < > : | ?) and certain names (CON, PRN, AUX, NUL COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, LPT9) Chinese characters should be perfectly fine, I would hazard a guess one of the files has one of these restricted characters or strings, even using winrar 7zip etc wouldn't allow these to be made (and if it does it can lead to extreamly odd behaviour, shame on the program that lets you accidentally make these /lh)

wheat kelp
#

Windows basic version. I can download 7-zip if needed though

brittle pasture
#

I did a brief lookup and apparently windows' built in archiver indeed barfs if it sees unicode characters even if it's a valid path (since if it's invalid it wouldn't be a file in the first place)

wheat kelp
brittle pasture
#

meanwhile on Linux anything goes but /

wheat kelp
#

So 7zip should be fine, then?

obtuse wigeon
obtuse wigeon
wheat kelp
#

Okay awesome, thank you so much!!

#

That saves me a lot of back and forth on googling translations SDVpuffersquee

iron ridge
soft lance
# iron ridge It's a scary experience to `rm -rf ./~`

Yeah, if anyone gives you advice and to use "rm" to "fix" your drivers, or practically anything, then just remember that rm stands for remove, and from that command, its going to likely wipe some very interesting parts of your system

#

It's a partial equivalent to removing system32 for more fps (this is an internet joke, never do this!!!)

iron ridge
#

Whaaat no I routinely clean up my computer with rm -fr / --no-preserve-root, it cleans up rootkits!

obtuse wigeon
#

nahh that doesn't get rid of rootkits well! you need a big magnet to help with that! it's the only surefire way, it only works of HDD though, SSDs will be forever rotkitted!

maiden citrus
#

hi there, i'm currently trying to do this code

    foreach (var stones in Game1.player.currentLocation.objects.Values)
    {
        if (stones.IsBreakableStone())
        {
            {
                this.Monitor.Log($"Found a stone at {stones.TileLocation}. Mine level {stones.Location}",
                    LogLevel.Info);
                
                
            }
            
        }
    }
}```

however i changed machine and can no longer reference stones.Location or stones.isBreakable stones, is there a dependency i may be missing?
lucid iron
#

These methods/fields are just in the vanilla game dll so if your project isn't referencing that successfully then it won't build

lucid mulch
#

(also Game1.player.currentLocation can be null sometimes)

urban patrol
#

i don't think i've ever paid attention to this before--is it normal for night tiles not to update if you're inside the location, but if you leave and come back, they're correctly updated?

proven mantle
#

Hello! I wanted to make a personal retexture for all of the More New Fish sprites, though I was wondering how I would go about getting permission to post it publicly as well as turn it into a content patcher mod (as opposed to just replacing the image file with my version). I've never modded anything before, so I want to make sure not to do anything wrong permission-wise ^^

urban patrol
proven mantle
maiden citrus
maiden citrus
uncut viper
#

when a farmhand is warping to a new location, their currentLocation may be null

maiden citrus
#

ahh, that's okay i was aware of that, this is just a prototype rn so I'll handle that case later :)

brave fable
#

bombs, damage numbers, and other temp sprites won't update or animate correctly

gentle rose
#

and now I'm fighting non temporary sprites

brave fable
#

location.name.startswith(temp) my beloved

gentle rose
#

the answer was yes btw

brave fable
#

ah stderr, the surefire way to print to the log

latent mauve
urban patrol
gentle rose
#

all this hard work but for a good reason 😌

brave fable
#

actually i wonder if we should change the startswith(temp) behaviour for a future SDV update, since this might give some weird behaviour for someone with a modid starting with an authorname such as TemplarKnight or TemporalSkunk

grizzled bronze
#

Question, because my friend and I are about to go mental. Is there any easy way to solve the "Always Front" issue with a sprite?
For example: I want a sprite sitting at the table in the library. Problem is, there's this...very...unpleasant strip of about 4 or 5 pixels at the top of that table which cuts off anything on a 32x32 sprite set.

brave fable
#

not too far removed from the mailreceived weirdness with mail.id.contains(cooking) for LoveOfCooking mail

gentle rose
vernal crest
grizzled bronze
urban patrol
vernal crest
fervent horizon
#

Anyone know what the flag is for having the hatmouse show up? The wiki says it is after the first achievment, but it doesn't say what the flag is.

grizzled bronze
vernal crest
urban patrol
#

are you sure it's on alwaysfront? i see the library table like this:

lucid mulch
#

mail ids containing the word cooking is never saved in mailreceived because the game assumes its the temp mail stuff for cooking recipes

grizzled bronze
#

It's just Front

#

sorry

#

That orange strip

vernal crest
#

Yup so you can just put yours on AlwaysFront or make a new layer Front1

calm nebula
lucid mulch
#

but this is part of the war against legacy assets and move more stuff to data model to have all of these explicit knobs instead of magic conventions

uncut viper
#

easy solution: just dont make cooking mods

#

stardew was not meant to handle cooking mods. blueberry has played us all for fools

grizzled bronze
brave fable
#

surprisingly loc has never actually had an issue with this since it sets other flags/states as soon as the mail is removed from the mailbox, so ape's clever trick amounts to naught

vernal crest
grizzled bronze
#

I am not the correct person to be asking this, lol.
Basically, this isn't a map. It's just that the character sprite that has 3 frames, each frame is 32x32. That orange strip cuts off a section of that 32x32.

I think I was more or less trying to figure out if there's anything we could do that didn't involve additional map edits.

(I am not trying to be a problem, I promise)

vernal crest
#

Sorry, I have misinterpreted your original question as meaning you wanted to put something ON the table.

grizzled bronze
#

Yes, I do.

vernal crest
#

You want an NPC on the table

grizzled bronze
#

Part of the animation in their schedule. and that you’re trying to get the character to interact with the table in the animation (having her lean over and write on papers on top of it)

brave fable
#

Sorry, I have interpreted your original question correctly

vernal crest
#

Yes, mentioning that it was an NPC sprite and not an object you were placing on the map does change things

drowsy pewter
gentle rose
brave fable
#

no, loc has never had issues. version 1.0.0 btw

vernal crest
#

Your options are: change the map, change the NPC sprite, move the NPC, or ignore the clipping

grizzled bronze
#

Not on the table, they are sitting behind the table, but yes she is leaning over the table and writing with things scattered over the table.

uncut viper
grizzled bronze
#

So basically do nothing

#

And by do nothing, I mean do something else entirely. Because it's not going to work.

gentle rose
grizzled bronze
#

Which was what we figured but I wanted to ask anyway just in case

vernal crest
#

(I think this would've been easier with screenshots lol)

grizzled bronze
#

Probably

#

Ah well. Thanks for the help anyway!

uncut viper
gentle rose
#

removed because he has neither sprite nor portrait and was making my code upset

#

same with ???

uncut viper
#

ah yes, i see now, there are no errors in your screenshot

#

none whatsoever

gentle rose
#

there are not 😌 don't be mean to gil and grandpa

uncut viper
#

im not! im being mean to you

#

(/lh)

gentle rose
#

(gil doesn't have a normal sprite, grandpa's sprite is for some reason a 1x1 png)

latent mauve
#

Welwick is a map tile NPC IIRC

#

Gil is also a map tile NPC

uncut viper
#

exists in Data/Characters though was my point

latent mauve
#

And Grandpa uses the sprite in TemporarySprites 😛

#

Gotcha, wasn't sure why it was an issue that they were in Data/Characters.

uncut viper
latent mauve
#

LOL, I was just peeking in while I fight with this code to see if I can wrangle Hime and Wildflour's windows into cooperating with a night tile for the kitchen clutter / Grandma's Pantry pack xD

#

(for a personal edit at this point)

#

The furniture pack got released without night views of the windows, so they are lovely brown squares in the evening or rain by default.

blissful berry
#

death by counter beheading

lucid iron
#

oh r u getting messed with by backpack

#

or just a tile there

blissful berry
#

the tile covering her face is on the Front layer

#

so it just overlaps everything that dares enter its space

#

something we unfortunately did not consider for a few different ideas we had SDVpufferclueless

grizzled bronze
#

But now we know. And G.I. Joe has a phrase just for that.

fervent horizon
#

Anyone know what the flag is for having the hatmouse show up? The wiki says it is after the first achievment, but it doesn't say what the flag is.

uncut viper
#

hatter

#

at least i presume so

fervent horizon
#

Thank you

#

I'll try that

uncut viper
#

that does appear to be in Data/mail, so

#

probably woulda looked there first SDVpuffersquee

fervent horizon
#

Totally should have, it has been 9 months since I messed with anything, and it all hasn't come back to me yet

uncut viper
#

the shop doesnt actually check the flag itself though, only that you have any achievements, to be able to open it

#

(and show it on the map)

#

you just also happen to get mail to let you know

fervent horizon
#

right, but I am making a bundle that I don't want to show up until the shop is available

#

so the mail flag should work

uncut viper
#

then yeah go with hatter

#

just wanted to make it clear that the flag itself does not control any functionality

fervent horizon
#

Thanks for the info, big help

gentle rose
#

it's nearly 2am, I'm in the middle of a 24h ekg, and I have to make dinner

...I think it's time to stop modding for today SDVpuffersquee

uncut viper
#

why? the day just started

#

its only 2am

drowsy pewter
#

mindset

oblique meadow
lucid mulch
#

The difference between 0200 and 2600 is just a matter of perspective

gentle rose
#

well, from my irl perspective, one isn't a thing /lh

#

!chatgptcode

ocean sailBOT
#

We don't recommend using generative AI (such as ChatGPT, Copilot, Claude, Grok, etc.) to write mods for Stardew Valley. There are a few reasons.

  • AI-generated content is not allowed to be posted in the server. If you need help with your code, you won't be able to post it.
  • Large Language Models aren't trained on enough Stardew-specific information to give reliable, accurate output. They also have no concept of what they don't know, and so cannot tell if they're incorrect. In short, they don't know if they're hallucinating a solution that simply feels like it makes sense or not.

This holds true for both SMAPI/C# mods, and mods for frameworks such as Content Patcher.

There's no shame in being new to Stardew modding, and you won't be talked down to for not knowing what you're doing. We strongly recommend consulting with other mod authors in the appropriate channels as a first step if you're completely stuck at step one.

gentle rose
#

no I deleted my own message lmao, it was an attempt at this command

lucid iron
#

chatgpt code aside, this isn't describing "you need to add menu in C#" it's describing "spacecore will open a menu if you do this and that"

#

you don't really need to know C# for most kinds of mods, content patcher is very powerful

tender agate
#

we can use content patcher to add menus?

brittle pasture
#

you can use content patcher to add that specific menu as described in the docs

#

what is the exact functionality you want

lucid iron
brittle pasture
#

so you want a list of all events in game and pick which one to view?

lucid iron
#

that sounds like a normal kind of event then

gentle rose
#

yeah, you don’t need a new menu for that, you can do that with question forks

hollow root
#

I uh, need a tutorial to add new clothing with content patcher but I haven’t found one 🤔

lucid iron
#

so if u look at the rest of the docs there is a section about NPC Questions

ornate locust
#

I think I can just FEEL the number of users giving you tech support questions that amount to "how does this work?" that you'd get from arbitrarily doing it a different way from everything else

lucid iron
#

that is what you want to add if u wish to start an event

patent lanceBOT
#

@lofty sparrow: you set this reminder 7 years ago (7y ago)

obtuse wigeon
#

Oh wow, witnessing the unboxing of a time capsule

patent lanceBOT
#

YEAH SURE NP, KISSASS

fervent horizon
#

This is very impressive

lofty sparrow
#

lol

livid kite
#

I actually have a reminder set for 1000 days

lofty sparrow
#

i forgot how to set a reminder, otherwise i'd set another one

obtuse wigeon
#

you just say remind me in 5 seconds

livid kite
#

Don't know how long that is though

obtuse wigeon
#

just without the first filler text

lofty sparrow
#

thanks

#

remind me in 10 years that i need to set another reminder

patent lanceBOT
#

hahahaha what? are you serious? I'm a bot not an alarm clock but okaaaaaay (#6960117) (10y | <t:2078965650>)

obtuse wigeon
livid kite
#

LMAO, I meant how many years that would be 🤣

dusky sail
#

1000 days is a little less than 3 years

lofty sparrow
#

i'm honestly surprised the reminder stuck around for 7y

dusky sail
#

or maybe more like 2 and a half

lofty sparrow
#

i'd have expected it to disappear at some point

obtuse wigeon
#

it's a pretty stable bot tbf

livid kite
#

Then it should pop up in 2026?

autumn tide
#

i feel like i witnessed some once-in-a-lifetime thing 😂

autumn tide
#

!2020

ocean sailBOT
#

That was five years ago, mate.

autumn tide
lofty sparrow
#

i should go back and find when i made that reminder

autumn tide
obtuse wigeon
#

usually it replies to you I think, this time it didnt

#

remind me in 5 seconds to melt

autumn tide
#

i think you gotta put a 'to'

#

remind me in one second to 34ufh2i3h;oi4

uncut viper
#

(not really the channel to be messing around with bot commands tho...)

autumn tide
#

aw :(

gentle rose
#

can’t spell out the number

urban patrol
#

it only likes numerals

obtuse wigeon
#

oops sorry button

gentle rose
uncut viper
#

why are you apologizing to me

autumn tide
uncut viper
#

im actually working on draw code

#

but very slowly

tiny zealot
uncut viper
#

i have things that need drawing to screen but i dont wanna do math im so lazy

fervent horizon
#

You were the first to adult in the room

gentle rose
#

make the computer do the maths

uncut viper
#

the computer would be doing the math but i need to tell it what math to do

lofty sparrow
uncut viper
#

and i dont wanna

lofty sparrow
#

anyway i should disappear again but this was fun

obtuse wigeon
#

bye!

fervent horizon
#

See you in 2035

autumn tide
#

see ya!

lofty sparrow
#

i hear people get unbanned in warframe in 2035 so it'll be an interesting year. cya

uncut viper
#

part of my blocker is that i dont wanna do the math til i have the class structure planned out but i dont wanna plan the class structure out when i dont know exactly what i wanna draw

brave fable
#

hi pers SDVconcernedpride bye pers

#

why do you need maths to draw SDVpufferthinkblob surely that's art, and art doesn't have numbers

#

except painting by numbers, which is an outlier and should not be counted

uncut viper
#

calculating positions and sourcerects

#

its not difficult math im just exceptionally lazy tonight

#

ive had rider open for an hour and ive written one line bc id much rather be distracted by second monitor video, as practiced since time immemorial

brave fable
#

this is why we keep our second monitors vertical SDVpufferpensive

#

except vertical videos, which are an affront to my senses and should not be counted

uncut viper
#

i have never used a vertical monitor but if i had a spare i might try it

#

seems nice for code

autumn tide
#

uhhh wanna double check something, do you put GSQs under the 'conditions' field for trigger actions, or CP token things?

uncut viper
#

can you reword the question
what do you mean "CP token things"
are you asking if you can also use tokens in Condition fields?

brave fable
#

(didn't you just.. second monitor video..)

uncut viper
#

im not sure what your point is. do you think im using a vertical monitor for second monitor video

autumn tide
#

uh, like these guys?

calm nebula
#

Button deserves a third monitor

#

And a 4th

uncut viper
#

i used to have 4 monitors

calm nebula
#

Wow! Posh

brave fable
#

generally when a model has a Conditions field, it's expecting a GSQ

uncut viper
#

ive since had to downsize for various reasons

autumn tide
uncut viper
#

one monitor was a crappy old TV on my wall to be fair. cant use that bc the GPU i upgraded to did not have the ports for it

autumn tide
uncut viper
brave fable
#

however, since true and false are valid GSQ inputs, and since CP tokens can resolve to true and false, you can use the appropriate tokens directly as GSQ values

#

or indeed as inputs into other GSQ queries

brave fable
#

e.g. Condition: PLAYER_HAS_MET Current {{ModId}}_NpcName or Condition: {{MyTrueFalseConfigValue}}

brave fable
uncut viper
#

sounds awful

brave fable
#

(though my second monitor mount is currently a blank vesa plate since my beloved 1440p vertical is now the main monitor for my second desk)

calm nebula
#

What if I want nine monitors bluebs

brave fable
#

are you a spider

calm nebula
#

I'm a tax bill

#

I'm totally milking this joke until I die

vernal crest
hollow root
fervent horizon
#

Are ccbundles through Unlockable Bundles shared status in multiplayer?

vernal crest
# hollow root That does sound like a good idea, but i’m more confused on what code I have to p...

An EditData patch that Targets whichever clothing asset you want to add (e.g., Data/Shirts if it's a shirt) and then inside the "Entries" field you put all the fields that go in Data/Shirts, which the wiki page explains. Add a Load patch too that loads the texture for the shirt to a Target that you can use in the Texture field for the Data/Shirts entry and you're done.

Yes, looking at mods that add new clothing via CP will help.

ornate locust
#

Yes, I'm only a bill, and I'm sittin here on Capital Hill

hard fern
#

is that where atra is

heavy pewter
#

Is there a mod that adds a trigger like "OnButtonPressed" or gsq like "HAS_CLICK" or similar. I made a basic mod that lets you open shops, but as of now, I'm using the trigger one second update ticked(EMP) and the gsq BETAS ITEM_HELD to open the shop.

urban patrol
#

if you want to open a shop when you use a specific item, spacecore has that

heavy pewter
urban patrol
#

what is your desired behavior? do you want the player to be able to open a shop anywhere just by clicking?

brittle pasture
#

SpaceCore has a use item trigger, which you can set to open a shop, and you can specify that the item is not used up

heavy pewter
brittle pasture
#

so you can set an item to open a shop on use

urban patrol
#

that will almost definitely require C#

#

in fact the button press tutorial would get you halfway there

tiny zealot
#

checking for a particular keypress and opening a menu in response is nearly the example SMAPI/C# tutorial mod on the wiki

heavy pewter
#

Aight, thanks guys for the responses

brittle pasture
#

yeah I'm not sure if anyone will add a "button pressed" trigger any time soon (performance issues being the main thing) but I'll defer to Button for whether she wants that

#

if you really need a content pack accessible way, I will continue to recommend SpaceCore's item used trigger

urban patrol
lucid iron
#

i think the ??? is just that you only got so many buttons so the things happening bc button is usually some special thing that ought to be accessible anywhere

uncut viper
urban patrol
#

can you not use SawEvent as an event precondition to check if the player saw a certain fork/switchEvent? a full patch summary includes that i saw the parent event but none of the switchEvents. i can set a mail flag i suppose but i thought SawEvent would be convenient

ornate locust
#

I don't think it works. I tried to do something with that for the variant of the CC where Pierre punches Morris and it didn't seem to work

royal stump
#

yeah, I don't think forks mark the sub-event ID as seen, they just load the value from that key

ornate locust
#

Which sucks, because that'd be handy, yeah

urban patrol
#

mannnn annoying that they’re not unique enough to be used as preconditions but still unique enough that i need to prefix with my mod ID lmao

#

thanks though, good to note

steel musk
#

//RING { "Id": "{{ModId}}.Gem.Ring", "Triggers": [ { "Trigger": "ItemPlacedInMachine", "RequiredTags": [ "polished_gem" ], "RequiredCount": 1, } ], "OutputItem": [ { . . . "CustomData": { "selph.ExtraMachineConfig.RequirementId.1": "(O){{ModId}}.Ring.Base", "selph.ExtraMachineConfig.RequirementCount.1": "1", "selph.ExtraMachineConfig.RequirementInvalidMsg": "{{i18n: RAR.Base.missing }}", "selph.ExtraMachineConfig.CopyColor": "true", }, } ], }, //NECKLACE { "Id": "{{ModId}}.Gem.Necklace", "Triggers": [ { "Trigger": "ItemPlacedInMachine", "RequiredTags": [ "polished_gem" ], "RequiredCount": 1, } ], "OutputItem": [ { . . . "CustomData": { "selph.ExtraMachineConfig.RequirementId.1": "(O){{ModId}}.Necklace.Base", "selph.ExtraMachineConfig.RequirementCount.1": "1", "selph.ExtraMachineConfig.RequirementInvalidMsg": "{{i18n: RAR.Base.missing }}", "selph.ExtraMachineConfig.CopyColor": "true", }, } ], },

I'm trying to create machine output rule where the same input can lead to a different output depending on the "fuel" used. Im using @brittle pasture's Extra Machine Configs to achieve this but It's not working.

Somehow it only checks for the first one in the entry (Ring).

Even tho I have the correct item that will let me make a Necklace, it still says I'm missing the required item cause it only checks for Ring entry.

tame meadow
#

this is probably a really stupid question, but im just planning to make a seasonal portrait mod, and i figured itd just be easier to download some other mod and replace the actual drawings and stuff

#

and i regularly do that stuff in programming anyway but im just wondering if maybe it's not okay to do in the modding community? 😭

steel musk
tame meadow
#

ohhh thats a good point 🙂‍↕️ i'm probably better off doing it myself

lucid iron
#

You can definitely reference mods as long as you also look at cp docs at the same time to understand what's going on

#

In terms of whether it's "ok", take a look at the permissions tab on a mod

#

Code mods are more likely to have actual license so without that nexus perms next best thing

tame meadow
#

youre right i didnt even notice permissions are a thing lol

tame meadow
#

im new to all this sorry 😭 i just didnt want to accidentally offend other mod authors

drowsy pewter
#

Someone told me some of my cooked dishes dont count as fresh for qi's cuisine quest

#

First of all what even is that

hollow root
#

the walnut room quest?

#

it’s the one where you have to cook a ton of food for qi gems

royal stump
#

seems like that's the "Qi's Cuisine" special order, which works by setting an "orderData" field on any cooking recipe objects made while it's active
it should affect anything that's technically a normal cooking recipe

if (this.isCookingRecipe && item is Object obj && Game1.player.team.SpecialOrderRuleActive("QI_COOKING"))
{
    obj.orderData.Value = "QI_COOKING";
    obj.MarkContextTagsDirty(); //updates to add the context tag "quality_qi"
        //this also filters the item's display name through Strings/StringsFromCSFiles:Fresh_Prefix
}```
#

stuff that bypasses the normal crafting system or isn't Object type (O/BC/F/etc) would dodge that, I guess, but I'm not sure if that's relevant

drowsy pewter
#

I'm sure its an interaction with spacecore recipe overrides and/or loc integration so i told them to just turn off the feature

royal stump
#

makes sense, yeah

drowsy pewter
#

@blissful panther I got this strange log from someone whose game is not picking up on the new MEEP closeup trigger action, despite meep being up to date and cornucopia cooking having the closeup reference in its manifest (ofc). Any idea what could be going on? https://smapi.io/log/9350128b50f24b8e97046e1d3ec1cf70

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 73 C# mods and 183 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

exotic token
#

Is there a good resource guide that tells you why things happen codewise in the game?

frosty hull
#

is would better if we made a console app exe auto submit the log file?

#

example, my SMAPI Launcher on android that it have a feature
"Share Log" just a click button on app launcher and then it will auto send & copy create text into clipboard

vernal crest
exotic token
#

What causes the jojamart to become an abandoned jojamart after the community center, and the community center into a warehouse in the joja route

fossil osprey
#

I'd say let's not fall into an XYZ problem, and instead would you tell us what you want to do?

steel musk
#

Is it possible to create a machine output rule where the same input can lead to a different output depending on the "fuel" used?

dusky sail
#

I know this is possible if you do it backwards so the "input" is actually the fuel and the two different fuels are the input

#

Someone else may know more than me but like. As a backup

drowsy pewter
#

both are possible but i recommend what oclarina said for player intuition

#

Because youd have to choose a fuel by arranging them in your inventory