#making-mods-general

1 messages Β· Page 602 of 1

barren tapir
#

How do I do that?

lucid iron
#

literally just iterate through the matcher.Instructions and print it or log it

barren tapir
#

Gotcha

ornate drift
#

uhhhh what command is for events that makes the farmer disappear from the screen

urban patrol
#

you can warp them away

ornate drift
#

so warp farmer -1000 -1000

void aspen
#

Emily's dream cutscene hides the farmer behind the alwaysfront layered tiles SDVkrobusgiggle

ornate drift
#

funny

#

event didnt work for some reason

#

its supposed to occur in his shop

urban patrol
#

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

urban patrol
#

also please specify "didn't work"

ornate drift
#

it just

#

didnt happen when i entered his shop

#

with 4 hearts

urban patrol
#

does it happen when you debug ebi it

severe cairn
#

did you add an event file for his shop

severe cairn
#

as in like, a blank json

ornate drift
#

?

#

uh

#

not sure

urban patrol
#

you need to load a blank file to any non-vanilla target you want to make edits to

#

can't edit something that doesn't exist

ornate drift
#

"Target": "Characters/Dialogue/{{ModId}}_SpeedyManny, Characters/schedules/{{ModId}}_SpeedyManny, Strings/schedules/{{ModId}}_SpeedyManny",
"FromFile": "assets/blank.json",

but i have it loaded

urban patrol
#

none of those are Data/Events/{{ModId}}_SpeedyShop

severe cairn
#

need to add event location

#

ya

coarse pine
ocean sailBOT
#

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

ornate drift
urban patrol
#

yep

ocean sailBOT
#
"Invalid tile GID: <#>"

What does this mean?
You edited your map without one of the tilesheets present in the same folder as your tmx, causing the XML data to lose information about the tilesheet and recalculate the starting GID's for the other tilesets incorrectly.

And/Or

A tilesheet your map references no longer exists in the files, causing the same above problem.

How do I fix it?
Make sure all the tilesheets your map uses are in the same folder as your tmx, then make any small change to your map, and finally save your map.
This should cause Tiled to update the XML data and recalculate the starting GID's. You can then remove the change you made and save again.
Always make sure to have your tilesheets in the same folder as your tmx when editing your map (unless you're using tilesheetinator) in order to avoid invalid tile GID errors.

And/Or

If your map was using a tilesheet that no longer exists (several were removed in 1.6.9+), then you need to replace any reference to that tilesheet with one that does still exist or get a copy of it and ship it with your mod.

ornate drift
#

ok great

#

tyty

coarse pine
ornate drift
#

i have so many tabs open just for events πŸ’”

late pewter
#

Does anyone remember the command for baking [CP]'s auto-migrated changes to outdated packs?

severe cairn
urban patrol
late pewter
urban patrol
#

ahhh cool i didn't know that existed!

late pewter
#

I know it exists because someone said somewhere here, but I don't remember the command exactly.

torpid sparrow
#

Errr try the console commands wiki page

royal stump
#

it would be a CP command, but I don't recall one existing and patch help doesn't seem to mention it

ornate drift
#

oh hi wem

torpid sparrow
#

Hi

#

Plane time for me

brittle pasture
late pewter
brittle pasture
#

patch export Data/Characters or whatever asset you want

#

then the game produces the asset as the game sees it

late pewter
#

Uhh, then no, that's not it

brittle pasture
#

if a mod still patches Data/NPCDispositions for example then you can grab the updated format from there

late pewter
#

[CP] Auto migrates mods and I explicitly recall there was a command to export what it is that [CP] is doing to assist with true author-end migration. To improve load time.

brittle pasture
lucid mulch
#

there was some third party tool that could run to do the migrations ahead of time but wasnt part of content patcher itself

late pewter
#

I would ask Pathoschild but they're busy and probably don't have any time for me.

barren tapir
#

UGGGHHHH, is there an easier way of modifying fishing tackles so that they never lose durability?

ornate drift
royal stump
#

since it's not a const, their durability is an upward counter, and it's checked by the display math

rich seal
#

God my changelog has 200 lines. I've been doing too much, but I can't help it; it's fun to make things!

lucid iron
barren tapir
lucid iron
#

just prefix FishingRod.doneFishing and change consumeBaitAndTackle

barren tapir
#

So I was hoping to have the fishing rod still use up bait. HOWEVER, at this point, I don't really care anymore πŸ˜…

I just need a win

tropic wedge
#

what's the best visual mod?

barren tapir
tropic wedge
#

can i add mods on to a ongoing save?

tough osprey
#

I FIGURED IT OUT omg I feel so stupid. So last few days I couldnt figure out why none of my marriage dialogue changed for Seb/Abi/Sam were working or some of my conversation toipics. WELL AT SOME POINT instead of
Characters/Dialogue/MarriageDialogueNPC
my ass added and extra "Data" in there and
Data/Characters/Dialogue/MarriageDialogueNPC
BIG FACEPALM FOR ME

barren tapir
barren tapir
#

So, going through the check list, I still have to do the following books:

  • Pickle Power
  • Keg Power
  • Pig Power (Probably version 2)
  • At least 2 books that edits Lewis' basement
  • Ancient Fruit Power
  • Bonemill Power
  • Calico Cat Power (Definitely version 2 since the feature creep is real)

And add the books to the shop

#

I've technically already done the first two on the list via CP, I just need to redo them in C#

lucid iron
#

Do u care about overlap with other book mods yggy

#

I think there was some kind of keg power in button extra books

barren tapir
#

There is, and this does something completely different than that book

#

IIRC, button's books just decreases the processing time. My book will have kegs produce silver quality wine

lucid iron
#

Ah that one may bonk all those artisian goods keep quality mods bolbsun

#

I don't think it's a big deal though, you just need to make ur mod modular enough

lucid iron
barren tapir
#

Every single book and power (with the exception of mayor lewis' basement books) can be disabled

#

And the only reasons why the basement books can't be toggled is bc:

  • They are going to be sequential (think step of the wind)
  • Disabling the power would almost certainly cause you to lose whatever you've placed in Lewis' basement
  • It's Lewis' basement... there aren't a lot of mods that mess with it.

TBH, I may just make that set of books (I currently have 4, only 2 of which are going into this initial version) special items akin to the town key

fierce vault
#

Tried compiling aseprite myself today, only to find out that I need to update my mac to use Xcode SDVpufferflat

#

And ofc it's been too long since I've backed up my laptop, so I'll need to do that first

#

I like my current mac version

coarse pine
#

what do i type here for the large logs to spawn?

coarse pine
inland rain
pale marten
#

This might be a reading comprehension issue on my part (because I've seen the tile edits section on content patcher readme I just can't make much of it) but is there a way to use a custom tileset without making a custom map to copy parts from in the way of map edits? It doesn't seem efficient to use a whole map in order to paste the very small edits I need across multiple instances.

latent mauve
# pale marten This might be a reading comprehension issue on my part (because I've seen the ti...

It's recommended to start with a vanilla map to avoid issues like breaking base game tile animations or tilesheet names in the "new" map. You can restrict how much of your new map is used to make patches on existing maps through the FromArea and ToArea parts of the EditMap action, and you can reduce your custom map in size to only contain your patched area afterwards if you really wanted

#

Unless you are only overriding a vanilla tileset (like how a recolor mod behaves) then you will need to create a TMX or TBIN file in Tiled with your desired placement of those custom tiles, and in order to make sure that your layers and settings match, it is easier to start from a vanilla map and then add your custom tilesheet and resize it as needed.

ornate drift
#

I'm gonna make mannys 5 heart event with Emily

#

the crazy woman

#

i love her

pale marten
void aspen
#

"Crazy woman" 😭

midnight lintel
ornate drift
#

but like in a good way

viral gazelle
gentle sorrel
#

Where dose the game Store the Remix bundles? Bundles.json only has the normal once

verbal glacier
#

Data/RandomBundles

gentle sorrel
#

Are Remix Bundles not translated? or dose it work differently there since the Normal onces have a .json per language

verbal glacier
#

I believe the translations are stored elsewhere

gentle sorrel
#

if I mod the Bundles,json dose the game load it no matter what language I use or do I have to play in english for it to be loaded?

verbal glacier
verbal glacier
gentle sorrel
#

but I might play with other people that don't use same language

verbal glacier
#

are you changing the bundle names? or are you changing what the bundles contain?

gentle sorrel
#

Contain and add new basically cramming all the Remix and Normal Bundles Together is my goal

verbal glacier
#

then if you're language is one of the ones provided by base stardew you'll have no issues playing with your language and your friends theirs

gentle sorrel
#

So the game will load the modified english bundle file even on other languages?

verbal glacier
#

yeah you are only editing what the bundles contain so it'll automatically be translated

gentle sorrel
#

oh ok if its that simple given the for example Bundles.de-DE.json basically is a copy of the english one with just the name changed I tought it would not be able to easily translate the name

orchid glade
#

You just edit Bundles.json, and if the person is playing in German it would take your i18n/de.json and apply it to Bundles.de-DE.json, I think

#

I'm not sure what happens if you don't provide a translation file?

verbal glacier
#

i just checked to be certain and the only part that might need i18n is the display name (which seems optional? )

orchid glade
#

Apologies for butting in without actually knowing the answers. I am curious, too. I recently edited Strings/Objects.json, and tested that if I had an i18n/fr.json it would work for the game in French, which it did.

#

Maybe I'll test without the i18n and see if they get the unedited French or the edited English.

verbal glacier
#

yeah translation stuff is always something which gets me confused, the name part of the bundles seems to get auto translated but the display part on the wiki says it's shown in english i'm just unsure if that part is necessary or if it is left out that it will just default to the player's language

orchid glade
#

It gives the edited english text rather than the original French! Good to know.

void aspen
#

I love i18n cuz I can just do something like this and it works

orchid glade
#

I spent ages the other night trying to figure out if I had to edit the localised assets individually. It's hard to put all the information from different places together.

void aspen
#

I wonder if using other tokens in names is possible

#

not only i18n ones

orchid glade
#

I think it's a 'tokenisable string'

verbal glacier
#

you mean like {{Season}} for example?

orchid glade
#

I assume you can

verbal glacier
#

don't see why not yeah

royal stump
#

the main reason not to is that most random CP tokens are always in english, but you can, yes

gray bear
#

you can tokenize anything, really

royal stump
#

anyway just to confirm, adding new bundles to Data/Bundles should look like this, if you want i18n support (as far as I know, anyway)
using one of the existing bundles' data as an example

{
    "Action": "EditData",
    "Target": "Data/Bundles",
    "Entries": {
        "{{ModId}}_NewBundle1": "{{ModId}}_NewBundle1/O 465 20/24 1 0 188 1 0 190 1 0 192 1 0/0///{{i18n: this bundle's key in your i18n json}}",
        }
    }
}```
royal stump
#

the game itself loads whichever translated version of Data/Bundles the local user needs, but CP will edit them anyway (unless you use a When condition with language)

#

so just use i18n in anything that should be* translated

gray bear
#

oooh bundles

verbal glacier
gray bear
#

would this just add it as a bundle option or does it just, say which category its in

royal stump
#

that said, idk anything about how the game uses the bundle data SDVkrobusgiggle setting up random replacement data or something might be more technical

gray bear
#

there are mods that add bundles i think? or does might use unlockable bundles framework

#

uhhh

royal stump
#

there's that, and adding the old bundles to RandomBundles instead might be a better option if the goal is just to combine them

#

having skimmed the convo a bit

#

Data/Bundles might just check known keys only

gray bear
#

perhaps this can shed light on how bundles are selectedβ„’

orchid glade
verbal glacier
viral gazelle
orchid glade
#

true

gray bear
#

looking is fine mostly. copying is the issue. if you're just taking a peak to see the general idea of the code i don't think most authors would have an issue

verbal glacier
#

omg that is so cute

gray bear
#

Erin be the mod maker of all time

orchid glade
#

https://www.nexusmods.com/stardewvalley/mods/15121
https://www.nexusmods.com/stardewvalley/mods/26998
@gentle sorrel here are two examples (with open permissions) that do what you are looking to do (albeit possibly in different ways to how you intend to), you could see what they do.

Nexus Mods :: Stardew Valley

This mod add both regular and remixed vanilla bundles to the community center. The bundles cames with minor changes and slightly reworked rewards.It allows players to enjoy all the bundle at onc

Nexus Mods :: Stardew Valley

Adds ALL Community Center Bundles to the Community Center (Normal and Remixed bundles). Also requires ALL items in a bundle to complete it.

void aspen
#

top five reasons I hate nexus mods

#

why does it compress (preview) images SO MUCH

verbal glacier
#

nm?

void aspen
#

nexus mods

verbal glacier
#

oooh πŸ€¦β€β™‚οΈ

gray bear
#

its not that compressed on the site itself

gentle sorrel
orchid glade
#

I downloaded that and put it in a "hard mode" folder I may never use ^^

gentle sorrel
#

it even puts the Christmas and Hallowen Bundle in the Boiler room like I wanted to do

#

Ok Home Cook is less crazy then I wanted to make it but I will just edit it from here

gentle sorrel
#

I would have may even required every wine and jelly but I don't think you can really track that

void aspen
#

ooh neat

golden spire
#

speaking of numbers, I'm nearly at a nice big round number myself, admittedly it's just normal downloads and not unique... but still.. πŸ˜›

ornate drift
#

How am i supposed to make a sprite where he looks collapsed with such a tight space?

verbal glacier
#

do you want him sideways?

ornate drift
#

actually wait i have an idea

ornate drift
#

I guess that works ShrugSpike

verbal glacier
#

it does

barren tapir
#

Yeah, that works

ornate drift
#

yippee

barren tapir
#

Though IDK if you need the red border around the ear

ornate drift
#

that's his ponytail

barren tapir
#

Oooh

ornate drift
#

yeee

barren tapir
#

I didn't realize he had a ponytail

ornate drift
#

I'm gonna have to figure out how to disable Manny for a certain amount of days, like Shane

#

after an event

calm nebula
#

You can set him invisible

#

It's a trigger action

ornate drift
#

wouldn't that still make him interactable

#

just not seeable

verbal glacier
ornate drift
#

ooh ok

#

Though i need to plan out if i want him unconscious in the Hospital or Rasmodius's tower

#

he won't fix his heat problem unless if Rasmodius casts a cold spell that makes him immune to heat

verbal glacier
#

does he have a connection with rasmodius?

ornate drift
#

i think they just interact a bit, not much

#

though Rasmodius would probably be interested in the fact that he's an anthro bear with human properties

#

unlike anything else in the valley...?

#

though to be fair they have a talking wild bear

verbal glacier
#

i always see this random fisher guy as having a dog face

ornate drift
#

looks more like a capybara

verbal glacier
#

that also works

ornate drift
#

xd

golden spire
inland rain
golden spire
#

ah πŸ™‚

#

"no longer will you have to hunt for your cat in the grass, just give it a red balloon.."

waxen thorn
#

Does anyone know how to make a mod that adds a custom animation to an npcs existing schedule? I've been trying to make one for the past few days and its not working πŸ˜”
if you know how please feel free to dm me!

inland rain
#

even has a chance to make prismatic balloons!

golden spire
#

I'd look so rad with my prismatic balloon on my skateboard...

waxen thorn
#

Here's my animationDescriptions:

  "Format": "2.9.0",
  "Changes": [
    {
      "Action": "EditData",
      "Target": "Content/Data/animationDescriptions",
      "Entries": {
        "content": {
          "sam_smoking": "56/56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 57 58 59 60 61 61 61 61 61 61 61 61 61 62 63 56 56 56 56 56 56 56 56 56 56 56/56"
        }
        }
      }
  ]
}```
#

Heres my content.json:

  "Format": "2.9.0",
  "Changes": [

    {
      "Action": "Load",
      "Target": "Characters/Sam",
      "FromFile": "assets/Sam_Smoke.png",
      "When": {
        "Season": "Spring, Summer, Fall"
      }
    },

    {
      "Action": "Load",
      "Target": "Characters/Sam",
      "FromFile": "assets/Sam_Smoke_Winter.png",
      "When": {
        "Season": "Winter"
      }
    },

    {
      "Action": "EditData",
      "Target": "Characters/schedules/Sam",
      "Entries": {

        "Sat": "1800 Town 12 94 3 animate sam false true 200 56 56 56 56 56 56 56 56 56 56 56 56 57 58 59 60 61 61 61 61 60 62 62 63",

        "winter_Sat": "1800 Town 12 94 3 animate sam false true 200 56 56 56 56 56 56 56 56 56 56 56 56 57 58 59 60 61 61 61 61 60 62 62 63"

      }
    }

  ]
}```
viral gazelle
waxen thorn
#

and heres my two sprite sheets:

viral gazelle
golden spire
#

that's not how you tell an NPC to use an animation in their schedule

waxen thorn
#

ive tried multiple methods

golden spire
#

look at one of Sam's vanilla schedule:

waxen thorn
#

thats my most recent attempt

golden spire
#
 "Sat": "800 Town 25 98 2/1100 Town 18 94 3 sam_gameboy/1230 SamHouse 17 15 2 sam_guitar/1500 SamHouse 19 13 3/1800 Town 12 94 3/1940 SamHouse 22 13 1 sam_sleep",
#

at 1100 go to Town 18 94 3 and then use sam_gameboy animation when you get there

#

the game reads what is in animationdescriptions to use for the animation

waxen thorn
#

my other method was: "Sat": "1800 Town 12 94 3 sam_smoking",

golden spire
#

you need more than one schedule point

waxen thorn
#

should i put his entire schedule in or just the saturday line

golden spire
#

depends what you are wanting to change, but remember you might not be the only one altering someone's schedule

#

if you're only changing one entry, then just edit that one entry

waxen thorn
#
  "Format": "2.9.0",
  "Changes": [

    {
      "Action": "Load",
      "Target": "Characters/Sam",
      "FromFile": "assets/Sam_Smoke.png",
      "When": {
        "Season": "Spring, Summer, Fall"
      }
    },

    {
      "Action": "Load",
      "Target": "Characters/Sam",
      "FromFile": "assets/Sam_Smoke_Winter.png",
      "When": {
        "Season": "Winter"
      }
    },

    {
      "Action": "EditData",
      "Target": "Characters/schedules/Sam",
      "Entries": {

        "Sat": "800 Town 25 98 2/1100 Town 18 94 3 sam_gameboy/1230 SamHouse 17 15 2 sam_guitar/1500 SamHouse 19 13 3/1800 Town 12 94 3 sam_smoking/1940 SamHouse 22 13 1 sam_sleep"

      }
    }

  ]
}```
#

how does this look?

golden spire
#

a quick glance, it looks fine..

waxen thorn
#

what file type should my animations descriptions be

#

is it fine as a json

golden spire
#

all text files are json

waxen thorn
#

ok thank you

#

heres my main folder

#

and within assets i have my two sprite sheets

#

and within content i have a Data folder

#

and then within that i have the animationDescriptions.json

#

thats all correct?

golden spire
#

At minimum you have a content.json and a manifest.json, how everything else is utterly depends on how you structure it.

waxen thorn
#

ill let you know if it works

ornate drift
#

Thinking about scrapping the chef outfit

#

kinda no point in it being there if it's for one area only ShrugSpike

#

I'll just keep my 5 outfits

verbal glacier
#

wait why would it have no point?

rich seal
#

Agreed. Cooking in the buff isn't a good idea. Keep the chef outfit for sure. There's nothing wrong with a sprite only being used once. Look at Krobus for example; he's only ever lifted by the sea monster one time.

ornate drift
#

well 1 it's for the bakery specifically so it wouldn't have any other use
and 2 it would make switching tilesheets kinda annoying

inland rain
#

I gave Pierre a balloon

ornate drift
verbal glacier
rich seal
ornate drift
#

I'll leave it for last, maybe

#

gotta get everything out first

inland rain
verbal glacier
inland rain
strong kite
#

Does anyone know how the showFrame command in events works with a 32 x 32 character sprite?

verbal glacier
#

just count each 32x32 starting at zero

golden spire
strong kite
#

ACK- STARTING FROM 0, RIGHT-

#

Maybe I should've made this sprite for every direction despite only needing it for one 😭

rich seal
strong kite
#

Hmm.. maybe I should make a few special orders in a future update that make use of the berries from my mod? πŸ€”
More reasons to grow the berries is never a bad thing

golden spire
#

any errors?, use patch summary or patch export to check your patches are being applied correctly

waxen thorn
#

no errors and patch summary says its being applied

golden spire
#

patch export (asset) to have a look and see what is in the game

golden spire
barren tapir
#

Yall, I just had an idea for the absolute worst mod ever...

... What if each time you use the minecarts to go from point a to point b, you had to beat a level of Junimo Kart?

golden spire
#

oh no

rich seal
#

Easy way for the mod to never be downloaded lol

barren tapir
verbal glacier
golden spire
#

might as well have to beat a level of junimo kart to load the game πŸ˜›

inland rain
rich seal
#

If lucky purple shorts balloon is memed into reality, it must make Lewis angry if he sees it

inland rain
#

could add a balloon tag to make custom balloons

barren tapir
golden spire
#

long wait tho'

#

if you lose, you get injured and the day ends at harvey's

strong kite
#

Is there any way to play an animated Mega Bomb in an event?

barren tapir
# golden spire long wait tho'

You don't understand, I'm currently concurrently working on no less than 3 different mods at a time rn. I don't need more mods to work on rn

verbal glacier
verbal glacier
strong kite
#

Something so it's not just a static object sprite with a fuse sound going on

waxen thorn
severe cairn
verbal glacier
ornate drift
#

would it make sense to make more events in y2 after Manny gets immunity to heat? like his weakness is gone so it doesn't affect his events anymore

#

but the player would have to finish it within y1 for it to make sense

verbal glacier
#

more events in y2 is always nice

orchid glade
strong kite
severe cairn
#

could make the final event a requirement for the others so you dont have to wait for year numbers (not that you cant restrict it)

ornate drift
#

hmmm
yeah

verbal glacier
ornate drift
#

10 heart then after that other ones for y2

severe cairn
strong kite
#

Oh right. all of this... heehee

verbal glacier
waxen thorn
#

OH

severe cairn
#

also for some reason these can't loop forever??? why isnt that an option??? 😭

verbal glacier
#

just set the loop number extremely high

strong kite
#

So what does "Asset Name" mean and how do i set it for Mega Bomb 😭

severe cairn
#

i know but like grr

ornate drift
#

make it 9 million

#

or 9999999999999

strong kite
#

Wait I think I get what it means actually

waxen thorn
severe cairn
strong kite
#

Anyone know where the animation sprites for the Mega Bomb are because they don't seem to be in animations.png? Thonking

languid knoll
#

I'm absolutely sure more than one person has asked this, but anyway, hi! This is my first time moding (well, I'm tinkering a bit with the code from a mod that already exists because, im on Android, so i can't access SDV's internal files..) the thing is, I want to add dialogue to characters, But I don't understand why it has to be restricted to a parameter, i mean: mon10, mon8, and so on (I don't quite understand those parameters tbh), Is there a way to make the text appear randomly? πŸ’”

verbal glacier
#

the 8 or 10 refer to a characters heart level

strong kite
#

You might be able to work something with a conditional "RANDOM" GameStateQuery, though the specifics of doing such a thing I'm not sure

severe cairn
#

ok yeah i think it needs filepath πŸ€”

strong kite
#

Yee, then I gotta specify the pixel position and width/height of the sprite sheet I wanna use

#

Still searching for it

#

My first thought after Animations.png was Cursors.png cuz there seems to be a bunch of random bullshit in there heehee
But I'm not seeing it

#

It would suck if the bombs are actually hardcoded effects rather than a repeating animation

languid knoll
#

Like

severe cairn
languid knoll
#

Mon8 πŸ’”πŸ’”πŸ₯Ή

severe cairn
#

a lot of random stuff is in springobjects honestly lmao

#

it doesnt have animation tho, maybe they used tint and movement

#

which will be annoying in an event

strong kite
#

Oh you said that oops-

languid knoll
brittle pasture
#

bomb animation is just the sprite shaking and flashing

languid knoll
#

Thanks for clarifying about mon8-10 btw 😭🩷

severe cairn
#

since it fills the whole 16x16 sprite box it probably isn't an animation sheet just code stuff ya

#

I mean you can make your own spritesheet of it shaking but its gonna look funky SDVIridiumKek I manually drew a carp swimming

#

its real laggy in game but it work

strong kite
#

Would I be better off making a mega bomb NPC and applying the shake effect to it in the event

verbal glacier
languid knoll
#

Oohhh TYSM 😭🩷

orchid glade
severe cairn
strong kite
#

I mean I guess I could just make my own animated sprite too

waxen thorn
severe cairn
#

also what does attachCharacterToTempSprite do, i mean i can guess from the name but the wiki isnt very clear on the specifics

#

do they move together, where do they attach, who is above who

strong kite
#

Oh wow that has literally no explanation on the wiki of what it means heehee

orchid glade
languid knoll
severe cairn
orchid glade
# waxen thorn i fixed it and it still isnt working

Because I don't think you are actually running that code. The EditData patch either needs to be in your content.json, OR in another .json that you include using an "Action":"Include" patch in your content.json. If you do that, the format is a little different (it doesn't have the CP format number at the top)

waxen thorn
#

i put it in there now

#

i had it in a seperate folder

waxen thorn
#

in the main mod folder i had content/data/animationsDescriptions.json

#

and my content.json was just in the main folder

orchid glade
waxen thorn
#
  "Format": "2.9.0",
  "Changes": [

    {
      "Action": "Load",
      "Target": "Characters/Sam",
      "FromFile": "assets/Sam_Smoke.png",
      "When": {
        "Season": "Spring, Summer, Fall"
      }
    },

    {
      "Action": "Load",
      "Target": "Characters/Sam",
      "FromFile": "assets/Sam_Smoke_Winter.png",
      "When": {
        "Season": "Winter"
      }
    },

    {
      "Action": "EditData",
      "Target": "Characters/schedules/Sam",
      "Entries": {

        "Sat": "800 Town 25 98 2/1100 Town 18 94 3 sam_gameboy/1230 SamHouse 17 15 2 sam_guitar/1500 SamHouse 19 13 3/1800 Town 12 94 3 sam_smoking/1940 SamHouse 22 13 1 sam_sleep"

      }
    },

    {
      "Action": "EditData",
      "Target": "Data/animationDescriptions",
      "Entries": {
        
          "sam_smoking": "56/56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 56 57 58 59 60 61 61 61 61 61 61 61 61 61 62 63 56 56 56 56 56 56 56 56 56 56 56/56"
        
      }
    }

  ]
}```
#

how is this?

verbal glacier
#

!json next time you want to share your .jsons you can do that via these steps

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.

orchid glade
#

Oh, no pings

orchid glade
#

what

#

I fail at discord

verbal glacier
#

they have krunkus_ as the full name thingy

waxen thorn
#

oh okay is it easier to just put it in the same file?

#

then you dont have to do that?

languid knoll
verbal glacier
verbal glacier
orchid glade
waxen thorn
#

ok thank you so much

#

hopefully this works 🀞

#

you guys have been a huge help

#

i really REALLY appreciate it ❀️

rich seal
#

Question regarding animals; I want to set up a coop animal whose egg can only be produced if you have two specific coop animals in the same coop, more or less like crossbreeding. Is this easily doable?

ornate drift
#

is there an entry for making a character warp to somewhere and then immediately change outfits

waxen thorn
#

i used to make little dialogue swap mods back in the day but this is a whole other league 😭

golden spire
brittle pasture
rich seal
#

Ooh. I'll look into that then, thanks.

orchid glade
golden spire
#

D=

waxen thorn
#

yeah i was doing xnb

brittle pasture
#

selph.ExtraAnimalConfig_ANIMAL_HOUSE_COUNT Target should work

waxen thorn
#

this was like 2019?

golden spire
#

the before times

ornate drift
#

Although that would mean he'd sleep with his shoes on....shudders

golden spire
#

you want to use their dispo to use a different sprite in a different location

ornate drift
#

should probably finish the sprites first before anything

rich seal
golden spire
#

you can look at Maru's for a vanilla example

#
      {
        "Id": "WorkOutfit",
        "Condition": "LOCATION_NAME Target Hospital",
        "Season": null,
        "Indoors": true,
        "Outdoors": true,
        "Portrait": "Portraits/Maru_Hospital",
        "Sprite": "Characters/Maru_Hospital",
        "IsIslandAttire": false,
        "Precedence": -1000,
        "Weight": 1
      },
ornate drift
#

Is there a way to add a timeduration

brittle pasture
rich seal
#

Okay cool. Just making sure. Appreciate it!

ornate drift
#

Let's say that like, i want him to have the outfit from 9 AM to 4 PM
if he's outside at 4 PM he'll keep the outfit but as soon as he warps to ANY area, it immediately switches back to his seasonal

verbal glacier
#

, TIME 900 1600 after the Hospital

ornate drift
#

ah
CP has so much customization it's insane skaifoPog

#

thank you

#

uhhh one issue though

#

when he wakes up at 6 he's already in the bakery

waxen thorn
#

IT WORKS

verbal glacier
ornate drift
#

does it just immediately swap out his outfit when it hits 9?

ornate drift
#

in bed

golden spire
#

unless someone is just stalking him/warping directly.. not many people will notice or care

#

πŸ˜›

verbal glacier
#

but yeah it'll change at 9

ornate drift
#

shoes while sleeping....blegh

golden spire
#

all the vanilla npcs sleep in their clothes

#

he's just following the crowd

ornate drift
#

oh

#

oh wait im a dumbass

verbal glacier
ornate drift
#

πŸ’”

#

ok 6 am to 4 pm

verbal glacier
#

you can just move him to (for example) his dresser and have him change when it's 9 no need for 6 am

ornate drift
#

it would take more time and i feel lazy

waxen thorn
#

@orchid glade @verbal glacier @golden spire ITS WORKING!!!! thank you guys so much for your help!! ❀️

ornate drift
#

Actually hmm, I'll just remove the dresser and add a non-interactable door

verbal glacier
ornate drift
#

That way he just warps to nowhere for 10 ingame minutes and immediately warps back

#

i think I've been burnt out from the 3 events i made

#

that's why

#

should probably take a break

strong kite
#

oh wait a minute I put an _ instead of a /

#

Do I even need the mod Id?

#

well I def need more than just the name of the file heehee

#

The documentation on the wiki is really not clear what I need. It just says "asset name". does that include the file extension? what about filepaths? mrshrug

#

Am I supposed to do my target? I'd think so, but how do I do that when it uses a / like the rest of the event script?
My guess would be \" \" but I feel like that could be explained on the page?

brittle pasture
#

asset name is whatever you loaded the image into in the Target field

#

if the target has slashes i think replacing them with \\ works

strong kite
#

I'll try that then

#

Okay it loaded! However-

#

how do I make these do nothing heehee

#

i think it's specifically the change that's just messed it up

#

Just set as 0?

#

Ohh I think I see what my issue now is

#

Alright, I don't think this is necessarily very complicated, but the wiki could probably use some better explanation for each field?

#

I actually got temporaryAnimatedSprite to work properly! allthethings

stray trellis
#

Hi! This is a personal use mod, but I edited the farmer sprite sheet in Fashion Sense assets, and everything works except I can't make the blinking stop.

I deleted all the pixels in the top right corner (pic 1) but it still blinks

hard fern
stray trellis
balmy valve
#

is there any way to make a portrait sheet conditional to an event? I want Sylvia's portraits to change after the player sees her 8-heart event

golden spire
#

yes

balmy valve
#

how do i do that

golden spire
latent mauve
#

(keep in mind that the NPC Appearance system only checks for changes when the location is changed, so you may have a brief period where they do not use the new portrait unless you work around that)

#

I don't recall if it's when the player changes locations or the NPC that matters in this case

tiny zealot
#

NPCs recheck their appearance when they change locations (not the player)

latent mauve
#

Thanks ichor!

rose bobcat
#

is there a tool for converting something more easily readable by a human (i.e. a .json at the very least) to dialogue that can be read by the game?

barren tapir
rose bobcat
#

no, i want an interface that takes care of the shorthand for me

#

if it does not exist, that is okay, i will make one

barren tapir
#

So you want a GUI for making CP mods essentially?

rose bobcat
#

well that would definitely be something to look at, does that exist?

barren tapir
#

Not that I'm aware of

rose bobcat
#

ah, kk

fossil osprey
#

there are NPC makers (no idea how accurate it is nowaday), but nothing generic

#

I think there is a thing for schedules or animations too? I can't remember

rose bobcat
#

but nah, what i want is the ability to input a season, day/date, heart level, or acceptgift (yadda yadda), then the string w/ options to make it a question

#

all without looking at the .json

#

this is doable, i just wanted to know if someone else had done the work for me lol

fossil osprey
#

there is no such tool to my knowledge no

#

maybe the NPC makers implement something similar, but again they may be outdated

barren tapir
#

You could put that as a string in your i18n json folder, but IDK how you'd go about avoiding json entirely.

Though, with that said, I'd love it if we could have multi-line dialogs in the json files.

rose bobcat
#

TIME TO BOOT UP THE OLLLLL' ELECTRON FOR A CRUD EDITOR

fossil osprey
#

I've done things like that to convert files

rose bobcat
fossil osprey
#

:O XNB mentioned >:(

rose bobcat
#

dude the last time i modded this game, there was no content patcher

#

back in my day...!

fossil osprey
#

!xnb >:(

ocean sailBOT
#

XNB mods often break the game and are not recommended. See:

For mod creators, see editing XNB files for help unpacking & editing them (including for use with Content Patcher).

barren tapir
fossil osprey
#

bad XNB >:(

golden spire
#

to me what would be more interesting is something that can check dialogue for lines that just can never fire/or rarely fire

rose bobcat
#

the number of times i had to reinstall sdv because i messed up with a mod i was making was very high and i only made 2

golden spire
#

as I am sure some people with large dialogue files have lines that just never happen.

tiny zealot
rose bobcat
#

quick question about dialogue:
here's a vanilla abigail dialogue line from the wiki

"winter_1": "Well, fall is over...$s#$e#But I like winter, too!$h"

would this only proc on the first year without _*? so does abigail on winter 1 year 2 not have this line?

fossil osprey
#

(I think you dropped a few \ to stop formatting)

rose bobcat
#

there we go

golden spire
#

that's just day 1 of winter

rose bobcat
#

the wiki gives a warning against not using _* because it catches people out when they are new

latent mauve
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:

latent mauve
#

Dialogue does get tricker because of the different dialogue commands and potential keys though

rose bobcat
verbal glacier
versed wyvern
#

Not sure if I've asked this before but if I'm trying to patch some keys added/altered by another mod, and their patch has Update OnLocationChange, do I also need to have that update rate set on my patch? I'm unsure if load order alone would give my patch priority or not in this

rose bobcat
ornate locust
#

Winter_1 should be every Winter 1

#

The y1 only stuff is from a different thing. Keep reading on that wiki page

#

Specifically it's season_number not dayofmonth

ornate drift
#

it's winter something

#

like winter_1_*

#

damnit discord

#

that happens only on the 1st of winter

latent mauve
#

For the years, the key only works when applied to a day of week or day of month, not when the season is added

ornate locust
latent mauve
#

<dayOfMonth>_<firstOrLaterYear> and <dayOfWeek>_<firstOrLaterYear> are given examples in the wiki

ornate locust
#

So winter_1 will be for every Winter 1

strong kite
#

If I move /skippable in my events, will that change when in the event it actually becomes skippable?

latent mauve
#

If you want specific dialogue on the specific day of a season in a specific year, you can do that using a When condition to edit the line per season

golden spire
#

the event becomes skippable when the event gets to the skippable part

ornate locust
#

They were asking about Abigail's Winter_1 dialog

latent mauve
#

Sorry for the confusion, LOL

ornate locust
#

S'alright, it happens!

rose bobcat
#

checking the actual json i get it now, but i am left worried that i do not understand other things now lol

ornate locust
#

Always check the examples, took me a bit to grasp it too. Dayofmonth is just a number

#

So the key would be 14 for day 14. No month or anything in it

rose bobcat
#

sure, but the way it's written, is it not valid to understand summer_14 as <season>_<key>?

#

i guess i'm just frustrated, not really productive lol, mb

verbal glacier
#

every 14 would apply to all 14's of each month (for year 1), summer_14 applies to the 14th of summer

golden spire
#

people will also use content patcher itself to go beyond what the base game can do with dialogue

hard fern
golden spire
#

can use content patcher to have a specific dialogue in town map on spring 23, year 5, with an exact heart level of 7 with Abigail, and 4 with Pierre whilst it's raining

ornate locust
#

Season _ Day is farther down the page, not sure what you're asking. There's a season_key bit above the bit you were reading, but it's talking about the order things are checked in. The comment about y1 was specifically on day keys

#

If I understand the point of confusion right

rose bobcat
#

where is it further down?

#

because i think you might be looking at the marriage dialogue section

ornate locust
#

I am not

#

Or maybe I am?

#

God I hate phones

rose bobcat
#

see? it's confusing as heck lol

ornate locust
#

Four inches of readable screen, one sec

rose bobcat
#

the confusion comes from the fact that the wiki has <season> as a "season name" which links to just the names of the season, but says that "season_14" is, altogether, <season>

#

or at least that's the only way i can figure out how the wording is consistent with reality

#

in the end, i blame concernedape anyway :p

ornate locust
#

I am also confused about this page now.

rose bobcat
#

SEE?!

golden spire
#
  "winter_25_2": "{{i18n:dialogue.winter_25_2}}"```

from mine  winter_25 will occured in the first year winter_25     winter_25_2 will occur on 2nd,3rd,4th year
rose bobcat
#

yes, i understand how it works now, just trying to grok how the wiki is phrasing things

#

oh i guess that's an ai now, can't use it as a verb

gray bear
#

that's a verb?

ornate locust
#

I mean, I know how it works, I think I am just confused how this page is telling me this.

rose bobcat
#

means understand

verbal glacier
#

it's not

gray bear
#

well anyone can edit the wiki so fixing any issue isnt out of scope

ornate locust
#

It is, coined by Heinlein

rose bobcat
golden spire
#

the page is saying use

<season>_<key> and the <key> is whatever is in the key format section

ornate locust
#

Stolen by you know who

gray bear
#

where is this page?

clever monolith
rose bobcat
#

with how it is currently worded

golden spire
#

yes

gray bear
#

<key>...

#

does it just mean any other value that you can add

golden spire
#

winter 1 year 3, because she has no winter_1 dialogue for year2+ it defaults to winter_mon

wanton pine
#

has anyone written anything on adding raising & lowering doors to new buildings, and hiding animals (the horse) behind them?

uncut viper
rose bobcat
#

i tested it wrong and found the dialogue in year 2 winter 1 somehow and just went with the flow

#

i think i and a couple other people were feedback looping confusion lol

hard fern
#

What even is a dialogue anymore

ornate drift
#

a dialogue is a dialogue

gray bear
#

words

barren tapir
#

Fish

orchid glade
ornate drift
#

i did before

#

to -1

#

that did nothing

verbal glacier
#

can you share your .json again?

ornate drift
#

I'm not at my laptop unfortunately

verbal glacier
#

ah

ornate drift
#

I'm trying to do the chef portraits

#

I'll send it later tho

strong garden
#

I edited the map in Tiled using the Action Message "……", but the displayed text always comes with an extra string of characters as shown in the screenshot. Is there any way to fix this?

golden spire
#

do you have a patch to add your labels in Strings/StringsFromMaps?

strong garden
#

Sorry, I don't understand what is that

golden spire
#

using content patcher have you added any keys to Strings/StringsFromMaps?

//Map Labels
{
      "LogName": "Map Labels",
      "Action": "EditData",
      "Target": "Strings/StringsFromMaps",
      "Entries": {
      "TheLimeyDragon.Ayeisha1": "{{i18n:Ayeisha.MapLabel01}}",
      "TheLimeyDragon.Ayeisha2": "{{i18n:Ayeisha.MapLabel02}}",
....
},
#

key being whatever you are using in the map

strong garden
#

ok, I will try this, thank you

golden spire
#

burukesi.text1 or whatever

strong garden
#

it works! Thank you!

golden spire
#

no problemo

languid knoll
#

I'm stuck on something I've been trying to do , I'm trying to make a simple question, answer, and reply interaction work, And I think the problem is in how it's written,

"spring_Fri":
"Creo que irΓ© de camping maΓ±ana"
#$q 67/68 "campinhquestion_followup"#"quisieras venir conmigo?"
#$r 67 15"campingquestion_yes"#"Claro! Me encantarΓ­a!"
#$r 68 0"campingquestion_sorry"#"ughh lo siento, ya hice planes...a la prΓ³xima si?"
   ",
"campingquestion_yes": "bien! Es una cita! Bueno...cita cita no jeje".$h", "campingquestion_no": "Oh, estΓ‘ bien".$6",
      },
 },

I don't know what to do Since it's literally my first day of modding (I got most of the code from the wiki)

languid knoll
#

Nvm i did It, It was exactly what I feared, It was malformed, And the Syntax Poorly closed

barren tapir
#

Can a GSQ check a mod's config value? And if so, how?

brittle pasture
#

you can pass a token into it as long as it turns into either TRUE or FALSE when evaluated

merry rampart
#

Trying to replace the snowy footsteps sounds with the grassy footstep sound that already exists in game. Problem is, I don't know what to put for the file path. Here's what I got so far:

            "Action": "EditData",
            "Target": "Data/AudioChanges",
            "Entries": {
                "WinterFootstepSoundReplacement": {
                    "Id": "snowyStep",
                    "Category": "Footsteps",
                    "FilePaths": [
                        "???"
                    ],
                    "StreamedVorbis": true
                }
            }
        },```
brittle pasture
#

the wiki has an example you can copy

#

"FilePaths": [ "{{AbsoluteFilePath: assets/music.ogg}}" ],

merry rampart
#

Wouldn't that just pull from the ogg I'd have in my assets folder?

#

which I don't see the sense in doing because it already exists in game

brittle pasture
#

ah you meant changing a sound cue to another sound cut

barren tapir
brittle pasture
#

in that case I don't think AudioChanges support it

uncut viper
#

you can't re direct a sound cue no

merry rampart
#

ugh. I guess I'll have to add it into assets. Which I don't know how to do because I can't find it

brittle pasture
merry rampart
#

I don't want to add a dependency for this mod. So I'm just gonna find an audio track for what I want and add it in myself

barren tapir
#

Is this not how you edit machine data in C#?

golden spire
brittle pasture
#

aka that code looks fine to me; run patch export to confirm that your changes are/are not being applied

languid knoll
brittle pasture
#

also make sure to invalidate the machine data if you want the changes to apply immediately

barren tapir
brittle pasture
#

if it works after you restart the game then the issue is most likely you did not invalidate

barren tapir
#

Right now, I'm getting the following error when trying to launch the game:

[Money Sinks - Books for Dark Offerings] Mod crashed when editing asset 'Data/Machines', which may cause errors in-game. Error details:
NullReferenceException: Object reference not set to an instance of an object.

With that said, I think I just saw what's causing the error

brittle pasture
#

the ol NRE, gets em everytime

barren tapir
#

OMG, finally the game launched without errors

#

Now its time to see if the changes actually did anything

wanton pine
#

Thoughts on this machine shed?

calm nebula
#

CustomData is null yeah by default

barren tapir
brittle pasture
barren tapir
#

Take 2

#

Yes, it took the item!

#

And just like that, the pickle power book is officially finished

hard fern
#

t-the

#

pickle power...

barren tapir
#

Yes. The book allows you to age pickles

#

Though I still need to figure out how to change the popup message via SPU

#

It sounds like dinner is ready. After I eat I'm going to do one of the following:

  • Modify ancient fruit
  • Modify kegs
  • Modify bone mills

Which will mark off all of my basic books planned for version 1, which would leave me with 2 books left (I've been referring to them as "Lewis Books")

#

I also need to update a different mod. UGHH IT NEVER ENDS πŸ˜…

old edge
#

Hello I have a Custom LostItem quest issue NPC always uses fallback (LostItemQuest DefaultThankYou) instead of my reaction textβ€”even with plain text (no i18n).

#
"QuestC": "LostItem/{{i18n:quest2.title}}/{{i18n:quest2.description}}/{{i18n:quest2.objective}}/CustomNPCName (O)CustomItem Forest 29 94/-1/700/-1/true/DialogueText",```
barren tapir
#

How would I modify kegs to output silver quality wine if a player has a certain stat in C#?

brittle pasture
#

QualityModifiers

barren tapir
#

Gotcha

#

Is there a better way of finding the "Default_Wine" output rule other than iterating through the machine rules until you find it?

brittle pasture
#

well you can make it cleaner with LINQ

barren tapir
#

Iteration it is then!

brittle pasture
#

eww

calm nebula
#

It's fine

rose bobcat
#

is there a way to make an event trigger when you go to sleep?

brittle pasture
#

nah we should all be Functional Programmersβ„’ when possible

calm nebula
#

We should all be functional humans? Sign me up

uncut viper
rose bobcat
#

alright, that about tracks

#

tysm, was wondering if i was missing something

#

the other alternative i was thinking of was having it trigger if you enter the farmhouse after 1 am and call end newday, but i hate when games do that lol

old edge
#

My issue was resolved. The game just likes to spit out errors for no reason it seems

#

Was able to use debug quest command to test the quest

#

Been reloading an old save in year 3 for testing purposes

barren tapir
wanton pine
barren tapir
#

And just like that, I'm on to the bonemill!

#

I also just remembered that I need to actually add the powers

wanton pine
#

I've been asking in making-mods sporadically how to implement it's pull-down door (like the livestock buildings) and have not received a reply.

brittle pasture
#

you can look at the vanilla building for examples?

#

but honestly I'm not 100% sure what you want is completely possible

barren tapir
#

Gonna add "bone_item" to bone swords

wanton pine
#

the art is done. It's the coding that I need help with

brittle pasture
#

hmm it probably is with some tweaking of the passable tiles field

wanton pine
#

and I know it can be done because flashshifter has done just that in SVE

barren tapir
#

Actually, there's probably a better way

brittle pasture
#

but like I said reference the vanilla coops/barns as well as building data

hard fern
#

hahh... making recipes is fun except for the actual recipe part... sometimes i kinda miss JA formatting.

barren tapir
#

I just wanna be able to mill those dang swords if I'm honest. I feel like I get far too many of them

hard fern
#

omg

#

yeah

#

i want that bone sword GONE

barren tapir
#

Whelp, look out for "Money Sinks: Books for Dark Offerings" - a mod coming to a nexus near you sometime soon!

Though I may honestly make another mod that just makes those dang swords millable for those who don't want to go through the whole rigamaroll of that mod

hard fern
#

i think that would be a good idea lol

#

im sure theres plenty of us who hate the bone sword

languid knoll
#

Hii I want to make a little cutscene/event, The typical thing is to put the screen to black with a fade, maybe 4 hours pass and the screen returns to normal, After accepting a response, And after the transition, have the NPC say a few lines...Saying it like that makes it sound easy for someone who's been doing modding for a while, but I literally just started πŸ˜­πŸ’”

barren tapir
#

Screw it, I'm just gonna make a quick CP bone sword mod after I have dessert. I already know how to do it.

#

Time to begin!

hard fern
languid knoll
#

I mean, i think i dont mind, but maybe like, 2 hours (Obviously in Game)

hard fern
#

even 2 in game hours is long

barren tapir
#

Time to test

hard fern
#

you'd basically be staring at a black screen for several minutes

barren tapir
#

I think they mean progress the in game time 4 hours

languid knoll
#

Yeah yeah

hard fern
#

πŸ€” not sure how you'd do that tbh

#

well, you can just make the event as is and worry about the passing time part later

#

[[modding:events]]

#

wow

#

um you didnt see that

#

[[modding:event_data]]

calm nebula
#

(There is no command for it)

loud niche
#

Can we leave here ideas for a mod? Asking here cus I myself am no programmer nor have any other kind of experience of making a mod
UPDATE: im broke, i dont have money at all, so i only wanted to give some ideas, not commission a mod T_T
the credits will go to the dev of course
sorry for not mentioning it at the start

calm nebula
#

I believe ichor maybe has one in hat mouse lucy

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.

hard fern
#

hat mouse lucy...

languid knoll
#

I saw it, the thing is that I find the wiki a bit complicated to understand πŸ’”πŸ’”

calm nebula
#

Lacey

languid knoll
#

I usually try to watch videos or something like that

uncut viper
#

The closest you can get in vanilla is end newDay which will, yknow, end the day

hard fern
#

well we dont have videos

loud niche
#

Thank you Mr governor

uncut viper
#

and i dont even know if that forces it to actually end in multiplayer anyway (and if you could just arbitrarily set time, you'd be screwing over the farmhands)

languid knoll
calm nebula
#

In multiplayer that is ignored

uncut viper
#

then yeah in multiplayer it wont work then

calm nebula
#

Also I hate events that do that lol and personally will get annoyed

uncut viper
#

(same)

calm nebula
#

My crops! That i haven't finished gathering!

hard fern
uncut viper
#

dont have to cater your event to what players prefer but if you plan on publishing it, it is worth keeping in mind that you may get some less than nice comments about it

#

(not in this server i mean! but on nexus)

hard fern
#

(knowing me, if i made an event like that i would forget about it and then catch myself in the trap XD)

languid knoll
#

I mean, At least I've been able to add dialogues with questions and answers, that's progress

hard fern
#

i can suggest taking a look at the vanilla event data, to see how the commands are used πŸ€”

languid knoll
#

Is there anywhere I can get the data? The problem is I'm on Android, so accessing the Stardew Valley files is difficult for me; the most I can do is modify Existing mods that already affect the vanilla game

wanton pine
#

... do I need to set it as an animal door for the animaldoor animations to trigger? Also, the animal doors layer over the livestock, right?

hard fern
#

ooh.... SDVpuffersweats android..

languid knoll
#

Yeahh

#

It's a nightmare doing things like this on Android

hard fern
#

!androidsmapi

ocean sailBOT
#
Android SMAPI

We are not able to provide support if you run into trouble or compatibility issues with Android SMAPI; please use the discord linked on the Android SMAPI github.

IMPORTANT: This is a highly experimental build and may be prone to glitches, bugs, or incompatibilities. Please see the wiki instructions for more information regarding installing the unofficial Android port of SMAPI for Stardew Valley 1.6.

Do not harass mod authors to make Android specific compatibility patches.

uncut viper
#

I'm not sure how android modders usually unpack their files, to be honest. The android smapi server might know?

hard fern
#

try asking the smart ppl

#

on the android server

uncut viper
#

Some of the wiki pages for specific data types do have unpacked examples on them, such as the event data page at the very top

languid knoll
#

Nothing appears other than save files

languid knoll
barren tapir
#

Aaaand done

#

Only took 18 minutes, not bad!

uncut viper
#

Unfortunately this server isnt really able to support android like the command says and we cannot recommend/allow other means of obtaining game files besides the usual unpack instructions, so hopefully what you do have access to will be enough

languid knoll
ornate locust
#

Well yeah, we just don't know how

uncut viper
#

We're not saying it is, just that this server can't support it due to the lack of knowledge from near everyone in here

ornate locust
#

so we can't really help

languid knoll
#

Ik ik

ornate locust
#

I don't even own the right kind of device to test if my mods work on Android.

languid knoll
#

I'll try to get something from the wiki in case it works

torpid sparrow
languid knoll
ornate locust
#

Can't do it, it is a mystery

barren tapir
#

Time to make the mod post

gentle rose
#

@ocean pagoda continuing in the correct channel, those aren't bold in english though, so why make them bold in bulgarian?

barren tapir
#

Seeing as I'm a cheeto now, how do I show case a mod?

ornate locust
#

Right click, apps, leah

#

Publish

barren tapir
#

Dope

hard fern
#

oops that only got half of what i wanted in frame but oh well LOL

barren tapir
#

I think that's the fastest I've ever made and published a mod πŸ˜…

ornate locust
#

Got the part I missed before mis-tapping enter because my cat wants pets LOL

barren tapir
#

Can you no longer add notes to the requirements in the new upload form?

ocean pagoda
# gentle rose

Looks better bold - and if they are not bold the default Loading... is shown as not bold

ornate locust
#

I haven't messed with it much, but that'd be odd

barren tapir
#

I couldn't see any options to provide one

gentle rose
ornate locust
#

If you use legacy requirements, you can edit one to add a note from what I can tell?

barren tapir
#

Huh. Weird

ornate locust
#

Adding one also lets you add a note

#

But it's just in Legacy, I dunno about non-Legacy

barren tapir
#

Back to the actual mod

ornate locust
#

This is from a mod edit page, not the new mod page

barren tapir
#

My mod showcase wardrobe has grown this day

ocean pagoda
#

it's definitely not a carbon copy πŸ˜„ I've tried ... but as it takes time to draw them perfectly and I'm not that patient - it's fine for me - if someone want's to make them better - it will be published soon - so anyone can type any text with SDV font (Latin/Cyrillic)

wanton pine
#

repeat:
... do I need to set it as an animal door for the animaldoor animations to trigger? Also, the animal doors layer over the livestock, right?

gentle rose
#

unless it's missing some of the letters you need?

wanton pine
#

Good.

brittle pasture
#

(trying for yourself to see if it works is definitely more informative than asking if it works)

vernal crest
#

(And thanking people for their help is nice, by the way ^_^)

tiny zealot
wanton pine
#

facepalm.

languid knoll
#

To at least give the impression that they did what the answer says

#

I just want my old man Yaoi event where they spend the day camping πŸ₯ΉπŸ’”

wanton pine
brittle pasture
#

-# (admittedly because building code has surprised me before)

ocean pagoda
brittle pasture
#

this case though I think it works

wanton pine
wanton pine
ocean pagoda
#

that's why I "made" mine πŸ˜„

devout otter
#

This is most probably the case, but I'm asking just to be sure: the sequence of Lewis checking the Fair grange display one by one is hardcoded, right?

tiny zealot
#

yes. it's an event command string but it's baked into the C#

#

this.setUpAdvancedMove(ArgUtility.SplitBySpace("advancedMove Lewis False 2 0 0 7 8 0 4 3000 3 0 4 3000 3 0 4 3000 3 0 4 3000 -14 0 2 1000"), lewisDoneJudgingGrange);

devout otter
#

Aw. Alright then, thank you!

wanton pine
#

SVE managed to extend it, if that's any help whatsoever

devout otter
#

Yar, probably part of its C#.

wanton pine
#

what's the condition/token thing for the day/night cycle? Hoping to be able to go "when": [is night]

devout otter
#

There's nothing like that, AFAIK. You could use Time instead.

wanton pine
#

how do you combine conditions, then?

devout otter
#

The only place with something like that is when you define DayTiles and NightTiles in map making.

devout otter
wanton pine
#

so what time night starts at (for night and day tile purposes) changes by season. Therefore, if I want to properly go about having a background (rear layer) that changes with the time for day and synchs with the other tile changes, I need to set it up to rely on two conditions - or figure out how to set a condition that has a different value in most seasons.

#

I'd use day tiles and night tiles but this is for an elaborate horse makeover, so...

#

(I don't think I can use that on the stable)

lucid iron
#

You can do it with ontimechange yes, mmap also provides conditional draw layers

devout otter
#

Honestly, I'm still not sure about the exact conditions you want, but you can do patch with multiple conditions like so:

    "Time": "{{Range: 1700, 2600}}",
    "Season": "winter",
}```
wanton pine
#

of course, I could also take the easy way out and erase the opaque window panes in my background but I'd prefer to learn more

wanton pine
devout otter
#

If you have multiple seasons, then "When": { "Time": "{{Range: 0600, 2600}}", "Season": "winter, fall", }

barren tapir
#

Ughh, nothing I do seems to be modifying the bone mill. I'm going to come back to this tomorrow when its not almost the middle of the night. If I don't see anything immediately wrong, I'm probably gonna shoot my shot over here.

devout otter
#

You can't have several "When" in one action, and you can't have several "Season" in "When".

wanton pine
devout otter
#

You mean if you want Fall to have different range than Winter?

analog jungle
#

I have a question please. The github documentation and google have not been really helpful in finding the answer. Can I use the config schema values to directly put them into a dynamic token, without having to use multiple when conditions?

devout otter
#

Make another "EditImage" patch.

devout otter
analog jungle
#

So if I do in the config schema: "Grass Spring" and the values are none, light_green, dark_green. Can I then do a dynamic token with "Value": "grass"Grass Spring""? Or do I put it as grass{{Grass Spring}}

#

I'm trying to avoid writing tenthousand lines of codes with When to set my dynamic tokens.

ornate locust
#

Config values are, by default, a dynamic token and you can use them as such

devout otter
#

Yeah, in that case just directly use the config token, I feel.

ornate locust
#

{{Grass Spring}} will resolve as whatever the value they pick

analog jungle
#

I need to put "grass_ " in front of the config token. Because I also need cliff and dirt and want to use the config menu only with the color names.

ornate locust
#

You can do Grass_{{Grass Spring}}

analog jungle
#

how do i copy and paste code here in the code box format? So i can show. I forgot how to do it

ornate locust
#

Three `

wanton pine
# devout otter Make another "EditImage" patch.

would that also apply for "drawlayers", or is that the wrong way to go about this? For reference, the sprite sheet I am using is below:
(there are three layers in play - the front of the buidling, the "interior" of the building, and the animal-style door sandwiched between them)

ornate locust
#

Uh, if it's small code anyway. If you're about to show a lot of code, put it on smapi.io

devout otter
analog jungle
#


"Grass Spring": {
        "AllowValues": "none, light_green, dark_green",
        "Default": "light_green",
        "Description": "Select the grass color in spring.",
        "Section": "Grass Color:"
    },
},
"DynamicTokens": [

{
    Name: "grass_spring",
    "Value": "grass_{{Grass Spring}}",
    "When": { 
        !{{Grass Spring}}: "none" 
        },
]

    {
        "Action": "EditImage",
        "Target": "Maps/{{season}}_outdoorsTileSheet, Maps/{{season}}_outdoorsTileSheet2, Maps/{{season}}_outdoorTileSheet_extra, Maps/{{season}}_town, Maps/{{season}}_island_tilesheet_1, Maps/{{season}}_monsterGraveTiles, Maps/{{season}}_beach",
        "FromFile": "assets/{{Target}}_{{grass_{{season}}}}.png",
        "PatchMode": "Overlay"
        "When": { 
            !{{Grass {{Season}}}}: "none" 
        },
    },
#

Does that look about right?

wanton pine
ornate locust
#

That isss pretty messy, I'm not sure why you are doing it like that and I'm not sure my brain is wrapping around how it'd work out

#

and I don't think ! in the when work like that at all

uncut viper
devout otter
uncut viper
#

also you'd need to remove the outer braces

analog jungle
#

I didnt put the "changes" this is just a small part of the whole code.

analog jungle
devout otter
#

Alright, but roughly, is that what you want to do? Apply only when "none" is not selected?

#

ALso, how do you name your image files?

devout otter
analog jungle
devout otter
#

Okay, so you don't need the Dynamic Token, actually.

analog jungle
#

I also have a problem with the filename I just noticed but that is another story.....

devout otter
#

Just put your When condition as "When": { "Grass {{season}} |contains= none": false },

analog jungle
#

I only have one png named season_outdoortilesheet etc. for all seasons so I can't even use the {{Target}} I just realized.... I don't want to use spring summer etc in the filenames. But then I need more code q.q

analog jungle
devout otter
#

Then all that matters is for you to put the right "FromFile" name scheming, which I admit I am unable to parse from your code. πŸ˜…

analog jungle
#

season_outdoorsTileSheet_grass_light_green this is the filename

#

I have only 1 tilesheet that I want to be able to apply via config to all seasons

uncut viper
#

You cannot use tokens to construct the name of another token like that

devout otter
#

Aw, really? Sorry about that Seerafroggie.

analog jungle
#

Are you sure? I dont want to have to do a editImage for each Season q.q

uncut viper
#

(for a simpler example, thats like doing {{Sea{{mytoken}}}} and expecting it to work when {{mytoken}} = son. CP will bonk you for trying)

ornate locust
#

Doing a separate edit image for each season is just a matter of copy paste at least

analog jungle
#

{
Name: "snow",
"Value": "snow_{{Snow Color}}",
"When": {
"Snow Color |contains= none": false
},
{

Name: "snow",
"Value": "{{snow}}_dark",
"When": { 
    "Darker Snow": "true" 
    },

Can I build up a dynamic token like that? Or is that also a nono?

#

If not I'll just use different whens

uncut viper
#

You can use a previous version of a dynamic token in its own value, yeah. So long as there is actually one above it that applies.

#

If that first When condition there was ever invalid, I believe the 2nd dynamic token below it would then cause errors.

#

(because thre is no fallback default value above them both)

#

(im not 100% on that part though)

analog jungle
#

i can put the when condition of the first one in the second one as well

wanton pine
analog jungle
#

I'm trying to recode my whole recolor, to make the colors chooseable for all seasons and trying to keep the code slim. (Feel like throwing it outta the window q.q)

ornate locust
#

I applaud efficient code, but there's something to be said for functioning code that is easy to read and write and tweak if needed. Doing one editimage per season isn't that bad

#

I love tokens, but tokening too close to the sun can really bog you down

wanton pine
#

πŸ‘† Will do this

ornate locust
#

Oh I was talking to SeeraFroggie uhhh LOL I should have been clearer

analog jungle
ornate locust
#

got a one-problem-at-a-time level of brain function here

analog jungle
uncut viper
#

the most efficient code is of course the code that uses no tokens at all, if possible for your usecase

ornate locust
analog jungle
ornate locust
#

and my brain is tired

#

nono, me, my brain LOL

analog jungle
#

πŸ₯Ί

wanton pine
ornate locust
#

Hey if it works, it works

wanton pine
#

Indeedy!

analog jungle
#

Thank you for helping! I'll try to rewrite my code per season and leave out the layered tokens!

analog jungle
#

(For me)

uncut viper
#

extreme convenience is a very valid reason to use tokens. they are there to be used, after all

analog jungle
#

You know what, I think you were right! I might not even need the dynamic tokens....

#

I need sleep and look at it again tommorow. I can just put _grass in the From File and then the config menu token propably.

glossy cargo
#

Does anyone know how SMAPI events work and where they are called from?

I'm talking of stuff like Helper.Events.GameLoop.DayEnding and the likes. My usual tools to track it down haven't found anything.

I need to try to learn more about these to fix a conflict between my mod and another mod

uncut viper
#

what is the conflict? all of those events are handled in smapi's own internal code like SCore.RunInteractively()

#

or some Run function. might be confusing it with like PlayerInstanceUpdated or smth

glossy cargo
#

Apparently, when players are using my MultiSleep mod (which automatically sleeps for a given number of days), some other mods' DayEnding (and, presumably, other events) are not being called and not running, which can cause trouble in their code

#

I'm trying to figure out a good way to remedy this

#

but I kinda need to understand how these events are called, usually, to figure out why they aren't called properly in my case, and hopefully, fix it

uncut viper
#

i believe it does also use the games ModHooks stuff StardewValley.Mods.ModHooks but im not sure in what way it does, but may be helpful for you to look around there

glossy cargo
#

oh, that's exactly what I needed

#

thank you!

glossy cargo
#

Is there a way to write custom EventPriority values?

#

The fact that the presets are -1000 and 1000, instead of -1 and 1, suggests we can have custom values in-between, but it seems like the attributes are strongly typed to this enum specifically?

inland rain
brittle pasture
glossy cargo
#

oh

#

not sure why I didn't think to try that

#

Thanks!

inland rain
devout otter
#

If I want a particular crafting recipe to require less material right after seeing a particular event, is it possible to do an "Update": "OnTimeChange" on a patch to Data/CraftingRecipes?

#

And if so, is it reasonable to do so?

latent mauve
#

It's probably slightly more performance friendly to do OnLocationChange and force the event to warp them out of the shop so they have to reenter the location, but using a Condition might be an ever better solution (I do not know when Conditions are checked)

devout otter
#

Does recipe data have a Condition field specifically for changing its data?

latent mauve
#

I got mixed up because of the Unlock Conditions field, which is pretty limited in scope, so unfortunately not, but there might be an Event command to add the recipe directly?

#

Lemme check

latent mauve
#

addCookingRecipe <recipe> Adds the specified cooking recipe to the player.
addCraftingRecipe <recipe> Adds the specified crafting recipe to the player.

devout otter
#

Oh it's not a new recipe. I want to make kegs and casks cheaper to craft after the event.

latent mauve
#

The only other way to use a Condition would likely be a Trigger Action, which would run into the same update check issue, probably

#

Ah, I see

urban patrol
#

what if you faked it by nulling out the original recipe after having seen the event and adding a new cheaper one

devout otter
#

Hmm, that could work. Concerned about compatibility, though.

#

And honestly I do fret about using OnLocationChange ot OnTimeChange for something like this. Maybe I'd just instead give a message like After a night's rest, casks, kegs, and preserve jars will require less wood to craft.

latent mauve
#

It's definitely easier to make it sound like it will only take effect the next morning.

#

I honestly would be concerned about a potential issue with Perfection score if you removed a recipe and then added a new one

ocean pagoda
#

@gentle rose here you go - https://github.com/AcTePuKc/stardew-cyrillic-fonts
This uses my own BMFont to generate those for the game YourFont.fnt as I've got pissed on the OG BMFont at some point - that I had to click 101 things to generate with different fonts - while testing which font could be good - but yeah - it's not 1:1 SDV, but is to my liking, the previews are in the repo - to not spam the people here - I've attached just one.

gentle rose
uncut viper
#

I would not label that official if it is not an official project

ocean pagoda
#

it's official for Bulgarian

faint ingot
#

I have a question about loading events... I have an event that happens in a random location and I am doing a low priority load for that location in case there is no events entry for it. It looks like maybe that is causing it to overwrite vanilla events? Is that a thing that could happen on a low priority load?

uncut viper
#

if it's not endorsed or created by ConcernedApe LLC, then it is not official

ornate locust
#

If vanilla has events, I don't think you should load it

uncut viper
#

Vanilla is the default, it has no priority. ANY load will overwrite vanilla

faint ingot
#

OK yikes time to push out a patch

latent mauve
#

Unless you are 100% certain that the vanilla location does not have an Events file (which can be checked in the unpack), you should always EditData

faint ingot
#

Yeah I had always done that in the past but I was doing an editdata on {{randomMap}} and got an error that I saw I needed to load it first. So I added a load on {{randomMap}} and didn't realize that would cause a problem with vanilla maps when {{randomMap}} was one that had vanilla events

severe cairn
#

So I have two conditions but one uses on location change and the other is a regular patch

#

On location change is just the one-day thing

faint ingot
#

What's worse is now that I'm reviewing the code I think I took out the randomMap that needed a loadData in the first place

#

easy fix at least

devout otter
severe cairn
#

Nod nod yeah

#

That thing was funky to make and think about despite being the one to do it

ornate drift
#

morning

#

slept too much

severe cairn
#

Is that Pikachu

ornate drift
#

no 😭

#

it's a very popular furry artist/streamer

torpid sparrow
#

Wdym that is definitely pikachu

ornate drift
#

also hi wem

torpid sparrow
#

Hi wem

ornate drift
#

:(

verbal glacier
#

omg pikachu!

ornate drift
#

auuughfuhughfuuhghg

torpid sparrow
#

hi speedy SDVpuffersmirk

ornate drift
faint ingot
#

you guys are mistaken that's obviously Raichu

verbal glacier
#

omg raichu!

#

but what if it's gorochu?

ornate drift
#

i gotta finish the spritesheet before events

#

Would it make sense to give a character more arcs after their "main" arc has already been fixed?

verbal glacier
#

yeah

#

now that your character has been through this arc, what they are like afterwards is always worth exploring

ornate drift
#

characters aren't exactly perfect
so technically they could have infinite arcs

verbal glacier
#

if your character is immortal or a one piece character

ornate drift
#

😭

placid coral
#

just need to add cliff shadows (already have the detection working well) and finalize things around the rest of town / ginger island, getting close to a release

#

and some minor bug fixes, like that bench in the top left lol

#

I will probably be asking for some people to help test at some point in the future

warped vessel
#

it looks so good!! SDVpufferwow

subtle condor
#

Hey guys, I have a question about FarmTypeManager. Is it possible to spawn my own stone/ore types in? I added the stone in the Objects json and while this is enough to spawn them using C#, it seems like for FTM, something is missing. It is giving me the message "type does not match any known ore types"

#

I could spawn them in using C#, but I would like to have all the settings that FTM gives me

gray bear
#

how would I format a GSQ for when the greenhouse is unlocked?