#making-mods-general

1 messages · Page 61 of 1

lucid iron
#

Well you probably want to use Data/Location instead

#

But since it's just for your map u just put exact warp coords

velvet narwhal
#

SDVpuffersmug me who put the minedeath and hospitaldeath incorrect info

calm nebula
#

Maybe I should ask Pathos if this is the intended behavior

calm nebula
old edge
#

Warp farm x x? For the way back?

lucid iron
#

Yeah

#

Iirc SVE grandpa farm has a lil quarry cave like that

old edge
#

Ok so I can make custom farm with an extra map attached.

rancid temple
#

You can put whatever warps you want on your maps

lucid iron
#

The new location wouldn't automatically have properties of farm

#

Cus it's just a location

#

Need to add IsFarm can build etc

#

Or not, your call blobcatgooglyblep

velvet narwhal
#

oh i just appended minedeath information with the hospitaldeath information cause it was left on TODO

tough crater
#

So if I'm understanding right, it'd be used like
"When": {"HasMod": "UniqueID"}

#

Yay, I'm understanding the code better!!

tough crater
dim dock
#

hi ive never made a single mod in my life but im wondering if it was possible to create a mod that automatically changes your clothes? im thinking it'd be dependent on fashion sense since they have presets, and it'd be like your clothes can automatically change on festival days or when its raining or after a certain time (for like pjs and stuff).. does this sound achievable? bc i wanna try making it but not if its absolutely impossible TwT

velvet narwhal
# dim dock hi ive never made a single mod in my life but im wondering if it was possible to...

AFAIK a force change is from the highest difficulty (c# coding) https://github.com/Floogen/FashionSense/wiki/Fashion-Sense-API
The API allows mod authors to set (override) the player's current appearance with any Fashion Sense appearances. You can also utilize the API to clear (remove) the player's current Fashion Sense appearance.

i don't actually know what IsLocked does in terms of, whether it's applicable, whether it forces the change, but you could also look into that: https://github.com/Floogen/FashionSense/wiki/Content-Patcher-Integration

tiny zealot
# dim dock hi ive never made a single mod in my life but im wondering if it was possible to...

it is achievable. someone has achieved it https://www.nexusmods.com/stardewvalley/mods/19503
(it also does/requires farmer portraits)

Nexus Mods :: Stardew Valley

NOW WITH RANDOMIZATION!!! Lets you automatically change your Farmer Portraits portrait and Fashion Sense outfit as your farmer goes about their year! The configuration is shared for ease of use, but e

dim dock
#

OMG thank you!! ive been trying to look for it LOL bless you!

tough crater
#

Not me thinking something like that was impossible

velvet narwhal
#

in c# land, nothing is impossible SDVkrobusgiggle

tiny zealot
#

it's not a C# mod, as far as i know

dim dock
velvet narwhal
#

ah yeah i just checked the files, interesting

tiny zealot
#

avi's point stands, though. anything can be done in C# if you are determined enough SDVkrobusgiggle

dim dock
#

ive been wanting to learn how to mod for stardew for a while but whenever i look at mod files ive downloaded it just looks so confusing LOL

velvet narwhal
#

getting a handle of content patcher is probably your best bet, even my first mod is just a portrait/sprite replacer

#

!anyonecancook

ocean sailBOT
#
velvet narwhal
#

stares at ichor

tiny zealot
#

the initial hurdle is the biggest (prior programming experience helps, even if you're not expecting to write C# code). there's a lot of stuff to learn about

#

i do believe in you. the pixels say it, so it must be true

velvet narwhal
#

y'know i'm still on the fence about my first command, my sandwich analogy

dim dock
#

thank you guys!! i wanted to try my hand at making building / clothing mods but im just not sure ab the canvas sizes i should be using or if there's a certain parameters to follow, i tried searching it up but i didnt really get much information so ive just been looking through the mods i have and trying to figure it out from there lol

velvet narwhal
#

that's what we're here for:

#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

brittle pasture
#

following/editing the game sprites is a good start.
though for clothing specifically it depends on whether you want vanilla-like clothing or Fashion Sense. The latter has no limits

velvet narwhal
#

(loosesprites/cursors)

calm nebula
#

Loosesprites/cursors

brittle pasture
#

cursors?

#

aaa I was too late

velvet narwhal
#

we don't have a cursors command?

tiny zealot
#

.q 6218

patent lanceBOT
#
#6218

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

tiny zealot
#

that's as close as i have, sorry

velvet narwhal
#

puts it in my stash

brittle pasture
#

well as level 100 cheetos we have the forbidden powers to add commands...

#

(but I won't)

velvet narwhal
#

i could attach that wiki.gg cursors thing probably

#

jokes on you! it's everything that's misshapen!

tough crater
tiny zealot
#

and of course don't forget Cursors2 and Cursors_1_6, both of which are real and feel like trolling by CA /lh

calm nebula
#

(Ichor is still typing)

tiny zealot
#

shush. i love to type

velvet narwhal
#

1.7, summerobjects, fallobjects, winterobjects

tardy sparrow
#

Hi, I found the game more cozy and relaxing with time speed mode. I don't change the time speed in runtime just slow it down x2.
But I won't be able to get SMAPI to work on Android...

So is there any way to patch apk/libs to change the default time speed?

velvet narwhal
#

!androidmods

ocean sailBOT
#

Many mods are not compatible for Android, but there is an incomplete list of android compatible mods.

If you find a working mod that isn't on there, submit it by following the instructions here.

For mods not listed, they may or may not be compatible with android, but the Modding Android Wiki page provides more info on how to find a compatible version of a mod not listed in the first link.

tiny zealot
velvet narwhal
#

yeah, i don't think we cover that 'round these parts though SDVpufferthink

calm nebula
#

It's one of those things that is probably technically possible

#

But sufficiently hard that no one in their right mind would do it

velvet narwhal
#

more of like, "you're better off becoming the dev for smapi mobile"

tiny zealot
#

nah, i wouldn't wish that on my enemies

velvet narwhal
#

1.6.9 save serializer homogenized across all platforms
1 fear

calm nebula
#

Hopefully 1.6 makes it easier

#

I'm not sure though

#

I wonder how the net6runtime on android is (mono)

brittle pasture
#

praying SMAPI Android Mods (if it's ever a thing) just works (tm) because I'm not doing compat requests

lucid mulch
#

It's probably going to be less bad than 1.5 but still much worse than macos or split screen support

velvet narwhal
#

worse than split screen support SDVpufferfear

brittle pasture
#

is mac incompat (still) a thing

tough crater
brittle pasture
#

Yeah SDV has local co op

tough crater
#

I wish more games has splitscreen stuff but that's so hard when everyone uses separate devices

velvet narwhal
tough crater
#

What happened to sharing a PS1 and playing racing games on a split screen

teal bridge
#

Split screen isn't bad. It threw me for a loop the first time I ran into it, but afterward it's just sprinkling PerScreen here and there.

#

Aside from the really esoteric stuff like tracking quits, obviously.

velvet narwhal
#

SDVpufferthinkblob i haven't heard of mac incompat

#

but i am a wee egg who just got into modding not even 4 months ago SMCKekLmaoDog

brittle pasture
#

It used to be the case that Mac/Linux rolled their own versions of the runtime/game code

#

But that was fixed in 1.3.something? So an eternity ago

velvet narwhal
#

all i know is that microsoft sees linux as 3rd rate citizens because vs22 has all the nice features unavailable to any other OS

teal bridge
#

They do develop VSCode completely for free, though.

brittle pasture
#

them buying a free Linux VS alternative and immediately deprecating it is the bigger asshole move though

#

yeah VSCode is cool, but still not quite VS

teal bridge
#

There was a free Linux VS alternative?

#

You mean monodevelop?

brittle pasture
#

yeah

teal bridge
#

I don't think the fate of monodevelop can really be blamed on Microsoft. The developers simply abandoned it.

brittle pasture
#

true, but it happened when they're owned by Microsoft so I'm blaming them regardless

calm nebula
#

Normal splitscreen modding is not that bad

velvet narwhal
#

that's true, it is wild that the editmap thing has only now been exposed this far in

teal bridge
#

Is this some sort of personal "no harmony" challenge or you just expect harmony to be fragile for this?

calm nebula
#

I don't want to patch smapi

lucid mulch
#

Patching smapi is fun though

#

The core of profiler is a smapi patch

teal bridge
#

I've already done one skipping prefix on SMAPI so I guess that completes my transition to the dark side and everything else is fair game.

lucid mulch
#

Profilers patches into smapi are transpilers into the event dispatch mechanism

tiny zealot
#

i should make that shitpost mod that patches SMAPI just to change the console title to say a random one of the wrong names that users give it, like spami and scampi and smarpy

teal bridge
#

I like Scampi.

next plaza
#

Do you even need harmony for that

#

You could just set Console.Title I think?

tiny zealot
#

oh that would be easier. i never looked into it, i just assumed i'd need to patch it

tough crater
#

Not gonna lie, why the hell is the console name so god damn LONG 😭

fleet crystal
#

Does any one know or have tutorials on how to make indoor custom maps and have them connected to the other house in the custom map

velvet narwhal
#

connection is just through warping

fleet crystal
#

When I play it to the game only one of the maps show

latent mauve
#

is there a reason you are using tbins rather than tmx files for your custom locations?

fleet crystal
#

The tutorial I watched used tbin

latent mauve
#

Ah. TMX has some fancy features you can use in Tiled (like flipped/rotated tiles) so it tends to be the preference, so I was wondering

fleet crystal
#

Ohh

latent mauve
#

A lot of the video tutorials are outdated

brave fable
#

(your tutorial sounds very out-of-date btw, tbin was mostly dropped for sdv1.5 in 2021)

latent mauve
#

Custom locations is a clear indication of an out of date method, also

fleet crystal
#

What’s the newest thing to do?

latent mauve
velvet narwhal
#

checks the wiki.gg for a location_data how to

latent mauve
#

Avi, are locations covered in the npc command too?

brave fable
#

it's very simple to add new locations:```json
"Changes": [
{
"Action": "EditData",
"Target": "Data/Locations",
"Entries": {
"Custom_MyMod_House": {
"DisplayName": "{{i18n:world.house.map}}",
"DefaultArrivalTile": {
"X": 15,
"Y": 15
},
"CreateOnLoad": {
"MapPath": "Maps/Custom_MyMod_House"
}
}
}
},
{
"Action": "Load",
"Target": "Maps/Custom_MyMod_House",
"FromFile": "assets/MyHouse.tmx"
}
]

velvet narwhal
#

contemplates

#

Remind me in 16 hours to contemplate writing the "Full Guide on Creating Custom Locations"

patent lanceBOT
#

you know what rhymes with jerkface? aviroen. aviroen does. but fine i'll remind you anyway... (#6297975) (16h | <t:1728853847>)

latent mauve
#

Also for anyone brave enough, the modding:Maps wiki page still links to a deprecated custom locations CP documentation that links to the Location_data wiki page

#

That could probably be updated on the wiki to link directly there instead of two redirects

velvet narwhal
#

if it's a singular link, probably easy enough

latent mauve
#

Its this bit: Custom map You can add a new map and location to the game. The easiest option is to create the map using Tiled, then use Content Patcher to add the custom location to the game.

#

The "add the custom location to the game" link

velvet narwhal
#

oh we have this though

#

!mapmaking

ocean sailBOT
#

If you want to make mods that add or edit maps:

  1. Use Tiled to edit .tmx or .tbin files.

  2. Refer to the Maps wiki page for details on how maps work in Stardew Valley.

  3. Content Patcher allows you to create custom locations through editing Data/Locations

  4. Vanilla Maps can be edited via Content Patcher as well: EditMap

velvet narwhal
#

i think this was the other command roku and i changed out in our tirade of masked links

drowsy pewter
#

@worthy leaf Hey! This would be the channel to ask for help

#

There should be a quick command for beginner-friendly pixel art programs (can someone link it?)

velvet narwhal
#

!software

ocean sailBOT
drowsy pewter
#

audiohostem needs help figuring out how to use an art program to do simple recolors of some sprites

velvet narwhal
#

tbh if you've got God's Wrists, you can do recolors with paint.net

brave fable
#

you can do recolours with anything so long as you have a fillbucket tool and a lot of patience

fleet crystal
#

Can some one tell me how to make this a valid json I’m so confused

brittle pasture
#

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

brittle pasture
#

it's hard to tell what's wrong with so little pixels

fleet crystal
#

I’m trying to add another custom location but the json it’s making it invalid

brittle pasture
#

(ignoring the fact that CustomLocations is deprecated for now) your second block is outside of the square brackets of CustomLocations

#

and it should be wrapped in {}

dusty scarab
#

yeah, it needs another curly bracket at the very bottom to close everything in with the curly bracket up at the top

#

(also you can use the snipping tool that comes with Windows (type Snip into your start menu to find it!) to take a screenshot of just a portion of your screen, that way you don't need to take a picture with your phone of your computer screen)

brittle pasture
dusty scarab
#

(yes but everyone should know the snipping tool exists, it is my favorite tool)

brave fable
#

or just press prtscrn on your keyboard lol, no need to find the exe

velvet narwhal
#

(alt+shift+s on windows, you're welcome)

lucid iron
#

How can I implement a loader for 3d model LilyDerp

#

Is it worth pursuing

tender bloom
#

on macos command shift 3 or 4

fleet crystal
tender bloom
brittle pasture
brave fable
#

it's win+shift+s on windows, or just printscreen key lol

lucid iron
#

It'll get rendered n stuff

tender bloom
#

like why load a thing if stardew only uses 2d things

fossil osprey
dusty scarab
#

also, I'm working on my promissory notes and I need an object category. would Object.metalResources be affected by the Blacksmith profession? the Items page on the wiki doesn't say that it does, but I wanted to make sure, first

tender bloom
#

or is this meant to work with something

brittle pasture
# fleet crystal

delete the second duplicate set of lines - "Name": "Custom_Village" and the one below it

velvet narwhal
#

(i forget my alt+win swapped places on this keyboard SMCPensiveMove )

lucid iron
#

Well it'll let ppl have funny 3d objects AnnelieStare

brittle pasture
lucid iron
#

But hm I could just pack it into a xnb blobcatgooglyblep

dusty scarab
lucid iron
#

That should work

#

But yeah there's not that much point in this beyond novelty

fleet crystal
#

heyy i got it to work but house wont load into my game does anyone know whats wrong with it?

lucid iron
#

@brittle pasture 2am thoughts about the proposed 1.6 framework design patterns page:

Central topic: how to make C# mods support CP mods

  • ModData & CustomFields (& context tags?)
  • Delegates (TriggerActions, MachineOutputMethod, Tile Actions, etc)
  • Custom Assets
  • Caching & Invalidation
  • Why custom asset instead contentpackfor? To help CP eat everything ofc
dusty scarab
uncut viper
#

its currently just floating out in the first level of the content.json itself which means it does nothing

fleet crystal
#

How would I fix that?

uncut viper
#

it needs its own { ... } section like you have the first Custom_Village in (they will also need different names)

brittle pasture
#

and also put it inside the square brackets of CustomLocation

uncut viper
#

i would also recommend updating to current content patcher format though just in case you plan on using anything else thats been added since 1.24

dusty scarab
brittle pasture
uncut viper
#

one hour of sleep for every piece of computer on the floor

fleet crystal
#

I’m so confused lol

brave fable
#

it's very simple! your Custom_Village map works, so copy what you did with that

lucid iron
#

(but also consider Data/Location instead)

fleet crystal
#

I did and it didn’t load

brave fable
#

it'll look like this:json "CustomLocations": [ { "Name": "Custom_Village", "FromMapFile": "assets/CustomMap.tbin" }, { "Name": "Custom_House", "FromMapFile": "assets/House.tbin" } ]

uncut viper
#

(dont forget the comma after the last bracket at the end tho!)

brave fable
#

your issue was likely that both maps were named "Custom_Village"

uncut viper
#

(just mentioning it in case they copy paste that)

dusty scarab
#

is there anything missing from my OpenShop, or should it open up the shop when you click on the vault on any of its 1x2 building tiles?

brittle pasture
#

does the shop work via debug command

#

your file looks fine at a first glance

velvet narwhal
#

defaultaction looks like it'll use the whole building if actiontiles isn't used

dusty scarab
#

using the whole building is fine, that's what I want

dusty scarab
fleet crystal
#

Ughhh it still says the location wasn’t found or can’t be loaded in smapi idk what I’m doing wrong

latent mauve
#

Some CP changes likely will not work if you haven't changed the Format to 2.0.0 or higher (recommended is 2.3.0 currently)

teal bridge
# lucid iron How can I implement a loader for 3d model <:LilyDerp:664261164208750592>

3D model is not a monolithic thing. We could be talking about something as simple as an .obj or as hideously complicated as a .glb. "Loader" is a little ambiguous; technically, a .gltf is just a JSON file so you could already load the data for one of those; whether or not you could actually do anything useful with the data is another question entirely.

latent mauve
#

@fleet crystal That will probably also take care of any migration issues from you using the old custom locations system

#

Otherwise, if you upload your JSON to smapi.io/json it will be easier for us to find any new issues

#

Odds are fairly good that you haven't loaded your second map asset before using it as a map path if people were mainly focusing on the other pieces though

fleet crystal
#

It still didn’t work lol I updated the format I think there’s something wrong with my JSON because it won’t load but I’m not sure why

#

It’s literally not adding to the game

latent mauve
#

Yeah, the smapi website will point out any lines with errors

fleet crystal
#

It’s a valid json that’s the thing

brave fable
#

valid json isn't necessarily valid Content Patcher input

latent mauve
#

Although, one thing to note since it seems like you are adding the house to backwoods: if you are intending to use this for an NPC they will not use anything added to backwoods.

#

Backwoods is hardcoded to be excluded from NPC pathfinding.

fleet crystal
#

I’m just using this as a test location I plan on moving it

latent mauve
#

Ok, just wanted to be sure you were aware of the issue

fleet crystal
#

But I can’t figure it out lol

#

Like I’ve look it up the most common mistakes are spelling errors but I haven’t spelled anything wrong

latent mauve
#

If you upload the json to smapi.io/json and change the drop-down to Content Patcher, do any issues show up?

#

The validator needs to be told what type of file it is to properly find issues

fleet crystal
velvet narwhal
#

please, just link the smapi json here, i'm not going to parse images

latent mauve
#

Please copy/paste the link in the green box

brittle pasture
#

don't think so, but LOCATION_ACCESSIBLE uses a bunch of hardcoded checks that you can use analogous CP stuff for:

            case "Desert":
                if (Game1.MasterPlayer.mailReceived.Contains("ccVault"))
                {
                    return true;
                }
                break;
            case "CommunityCenter":
                if (Game1.player.eventsSeen.Contains("191393"))
                {
                    return true;
                }
                break;
            case "JojaMart":
                if (!Utility.HasAnyPlayerSeenEvent("191393"))
                {
                    return true;
                }
                break;
            case "Railroad":
                if (Game1.stats.DaysPlayed > 31)
                {
                    return true;
                }
latent mauve
#

@fleet crystal The other useful thing to have would be the exact error from SMAPI's console

#

It typically gives you at least some indication of why it failed to load

brave fable
fleet crystal
#

I think I figured it out I was using the wrong name in tiled lol

latent mauve
#

Ah, that would do it

fleet crystal
#

It worked!

dusty scarab
#

woohoo! my vault works as intended! (after a little bit of troubleshooting because it helps when you load all of your .jsons, haha)
now I just need to add in a config file to enable or disable the silly memes/reference items and set the actual building condition to be after Perfection, and it'll be all done :D

unique sigil
#

hey so has anyone ever had problem loading the panorama assets from daisyniko's tilesheets in a map? i'm getting this error even though there's no tilesheet climbing, dependencies are set properly, and i didn't change the source image's name

dusty scarab
#

double-check it in Tiled, would be my suggestion. sometimes Tiled changes sheets to Untitled or something, and that throws the whole thing off :<

unique sigil
#

done that already

#

i even tried changing the config of the tilesheet itself, but no dice

vernal crest
#

There's no sign in the json that she loads vanilla_day.png anywhere

#

No, I am wrong

uncut viper
#

its based on a dynamic token and loaded into Maps/panorama

#

i dunno if that means you'd need to rename it to just panorama.png

unique sigil
#

this is the same problem with my mod's tilesheet loading except with someone else's mod so (shrug)

unique sigil
#

kinda weird that i have to do that when the FromFile format is like this

uncut viper
#

its bc the fromfile format is like that that makes me think you'd have to rename it, bc thats just for daisyniko loading the tilesheets, not your mod

#

but it loads them all into just "panorama" unlike the other ones which seem to load into assets that have a name matching the .pngs

#

when it comes to map making stuff and tiled and tilesheets and whatnot though im never 100% sure on anything im talking about, so, yknow, take what i say with a grain of salt

unique sigil
#

that's something to try, at least

tardy sparrow
unique sigil
uncut viper
#

alls well that ends well SDVpufferparty

unique sigil
#

oh my god i forgot to add the warps between both halves of the farm. i knew i shouldn't have done that part at night

dusty scarab
#

my "When": field to enable my silly memes option is in my shop, I have the config schema loaded, and I have a .config file for it as well. I'm clearly missing something, but I don't know what. is there something else I need to load in content.json besides the config schema, the data/shop, /building, /object.json(s), and the assets?

uncut viper
#

your config token is Enable Silly Memes not Silly Memes

dusty scarab
#

blaaaaaaaargh

#

thank you

uncut viper
#

the Section and Description parts are just for GMCM

dusty scarab
#

then I'll keep the Description part for GMCM and get rid of the Section, since all it needs is the single checkbox of 'do you want silly memes or not'

unique sigil
#

okay the panorama loaded, but it's loading the snowy version instead for some reason?

uncut viper
#

im assuming its not actually snowing in game right now?

unique sigil
#

of course not, it's a fresh save

#

also, it's not changing with the time

#

oh wait, the time change happened

uncut viper
#

if you're using cjbcheats or something to change the time directly that might not count as a timechanged update, might need to manually let it tick over
if that still doesnt do it then- oh ok

#

as for the weather thing ive got no idea

#

it uses a dynamic token called seas that should be blank in spring summer and fall and _snow in winter so iunno why itd be loading that in spring

dusty scarab
#

hmmm. SMAPI stopped yelling about it not being a valid config, but it still shows the meme items even when the box is unchecked

unique sigil
#

maybe someone who has used the panorama from these tilesheets could weigh in better

#

for the time being i'll mess around with it

#

there's no errors in SMAPI about this, either

uncut viper
dusty scarab
#

sleeping did not fix it :<

#

removing the double quotes from around the true in the When setting didn't help, either

hallow prism
#

you can't use config in shop like that

#

you can only use a when on a whole block, not per item

#

either you use a condition being {{yourtoken}} for each item you want enabled that way, or you use the when for the whole block

uncut viper
#

(oh yeah. clearly its way past my bedtime if i did not catch that lmao)

dusty scarab
#

(it's past my bedtime too lmao, I just wanted to try to get this finished beforehand XD)

unique sigil
#

ugh the panorama still isnt loading the correct asset

soft maple
#

anyone know if using scale up 2 works with farmer base sprites?

dusty scarab
#

can I seperate my shop.json into two blocks, one for items that are available all the time, and one for the silly memes that are only available when the config option is set to true?

hallow prism
#

yes

#

but then you may need to edit the second part differently

#

(depending of how you add them currently)

#

(i didn't look too closely at that)

dusty scarab
#

right now, it's just a straight list that goes down. very braindead

hallow prism
#

you may need to do :


    {
      "LogName": "Editing YOURSHOP Shop",
      "Action": "EditData",
      "Target": "Data/Shops",
      "TargetField": [
        "YOURSHOP ",
        "Items"
      ],```
#

to target the exact field and not erase existing stuff

dusty scarab
#

okay. what exactly did you mean by using a condition being my token? I am assuming my token is RiftstalkerSekun.WealthCondenser, but how do I use that as a condition to enable or disable individual items? I thought that the When was supposed to do that.

I don't want to risk the items disappearing from inventories if the setting is turned off later, just not show up on the vendor any more

uncut viper
#

shop entries have a Condition field that you can put GSQs into, but you can also just put your config tokens in them {{Like This}}

#

if the config tokens are boolean values theyll either be true or false which becomes a valid GSQ

hallow prism
#

            {
              "Id": "Lumisteria.MtVapius_NaveenShop.Coins.PriceACChamomile",
              "ItemId": "Lumisteria.MtVapius_WeirdCoins",
              "Condition": "{{HasMod |contains=wildflour.ateliercrops}}, SYNCED_CHOICE day lumisteria.naveenshop_flower 1 4 1",
              "MinStack": 2,
              "MaxStack": 4,
              "Price": 0,
              "TradeItemID": "(O)wildflour.ateliercrops_chamomile",
              "TradeItemAmount": 1,
              "AvailableStock": 3
            },```
This specific item trade will not show in the shop if the player doesn't have the wildflour mod installed
#

and yes, any token that can result in true/false can be used like this in a GSQ condition

dusty scarab
#

GSQ stands for General Standard Query, or something like that?

uncut viper
#

game state query

dusty scarab
#

ah, okay

hallow prism
uncut viper
#

technically i guess any dynamic token or config token that resolves to a valid GSQ string would work too but i dont know if ive ever seen someone do that bc it seems not so useful :p

hallow prism
#

(yeah i tend to assume people are familiar with stuff like i am sometimes 😄 )

unique sigil
#

...okay i thought redoing the whole process and starting a fresh day 1 spring save would fix it, but nope it's still loading the day_snow one

dusty scarab
unique sigil
#

i've added a comment on daisyniko's mod page but i'm not sure if they would ever reply bc they're (mostly) inactive afaik

hallow prism
#

i'm not sure what a walnut is in this context 😄 it's my turn to have things i'm not familiar with 😄

dusty scarab
#

small brain, hard head XD

hallow prism
#

oh!

dusty scarab
#

it's not a hard head as in I am resistant to learning, but hard in that I will keep smashing it into things until things work the way I want them to, lol

hallow prism
#

that's understandable, i have a tendancy to "just try one last fix" and then it's way too late. But sleep is important too to see the issues clearly

frozen elm
#

Did you sleep after changing the season in cbj? The change for the panorama tile sheet doesn't happen instantly because it's loaded with a token instead of with the winter-prefix in the name

dusty scarab
#

one last question before I sleep. I wanted this to be available after Perfection is achieved, which should be handled by my "BuildCondition": "PLAYER_HAS_MAIL Any Farm_Eternal" part, but testing that this works this way will be a pain.

is there a debug command I can use in SMAPI to give myself Perfection so I test this easier to make sure it works?

uncut viper
#

i think its debug perfection

hallow prism
#

i believe there is

unique sigil
dusty scarab
#

awesome, thank you :D

frozen elm
#

Oh ok that's strange then, I've never had any problems with it except for with the thing that I mentioned. You didn't accidentally leave it in the assets folder or something like that?

unique sigil
#

the thing is, it's loading the correct recolor-based one (desaturated version, bc i'm using VPR and the tilesheet setting is "off"), it's just not loading the correct season

#

and yes i'm loading the vanilla_day one in the .tmx, just renamed the png to "panorama"

frozen elm
unique sigil
#

bc if i don't do the renaming thing the entire map won't load

unique sigil
#

oh wait the image itself is the same

#

my bad

#

would using the desaturated_day one as the source image even do anything

frozen elm
#

You mean in tiled? No all the changing stuff should be handled by the content file, it always needs to be called panorama because that's how the mod loads it

unique sigil
#

i mean using that one renamed as panorama.png

#

this doesn't seem to be a me issue ngl

frozen elm
#

It doesn't matter which one you use, it's just for you to see where you place it. The game should load the correct one automatically

unique sigil
#

and it's not doing that. why? SDVpufferthinkblob

#

actually lemme delete and reinstall and see if anything happens

frozen elm
#

Do you have any other mod that uses the panorama, can you check if it works there?

ocean sailBOT
#

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

unique sigil
vernal crest
#

My two cents: you could try doing a patch summary for the DaisyNiko mod to see what token values are listed and what patches are being applied

unique sigil
#

it looks like this

#

still loading the winter one, by the way

vernal crest
#

If you patch export it, does it export the snowy one?

#

Also you might be able to do a patch parse of the fromfile

unique sigil
#

..how do i do that??

vernal crest
#

Just double checking the format, hold on

#

patch parse "assets/Panorama/{{pan}}_day{{seas}}{{weath}}.png" "DaisyNiko.Tilesheets"

#

Hopefully that should tell you what the fromfile path is being parsed as on any particular day

unique sigil
#

errrrr

#

shouldn't this mean that it's actually using the correct asset but somehow it's showing in my game as the winter one?

vernal crest
#

Yeah

#

What did the patch export show?

#

Or were you also asking how to do that?

unique sigil
#

yeah, that too

vernal crest
#

patch export maps/panorama

#

Then go to your Stardew Valley folder, find the newly created "patch export" folder and open up the panorama image inside it

unique sigil
#

it exported the winter one

pallid wharf
#

How do I delete NPCs and parts of the map?

vernal crest
# unique sigil it exported the winter one

Humm. That is very strange that it is using the correct fromfile but the asset itself is the wrong one. I don't expect this will fix it, but have you tried it with your config set to vanilla?

vernal crest
unique sigil
vernal crest
vernal crest
pallid wharf
#

make entirely new maps and NPCs

vernal crest
hallow prism
#

(i'm not sure there's a clean way to entirely disable vanilla npcs as they are involved in a LOT of stuff)

pallid wharf
vernal crest
# pallid wharf yes

A total conversion mod would involve changing so many things. Mail, quests, dialogue, events, shops, items - nearly everything in the game. Including at least some C# stuff I would guess.

#

If you just tried to remove an NPC you'd have non-stop errors from all the things trying to reference that NPC and couldn't.

brave fable
#

you needn't necessarily delete the npcs, just rename and redraw them

vernal crest
#

Yeah

brave fable
#

wipe their schedules, replace their dialogue, etc

vernal crest
#

Still a lot of work but you could keep internal names at least

pallid wharf
hallow prism
#

honestly i'm not sure it's that even needed, as people may be willing to have both your mod and vanilla content

vernal crest
#

To actually remove them, I'd try setting their entry in data/characters to null - but I'd probably do that last after editing all the game references to them so they aren't referenced anymore.

#

Or you could just make a warp room map and set their schedules and homes to be in there so they exist but are never actually around. Wouldn't stop you having to edit everything else to stop people talking about them or players getting (some) events with them though.

brave fable
vernal crest
#

I thought perhaps they meant they had fewer NPCs than there are in vanilla so they couldn't replace all the vanilla ones

brave fable
#

that's fine, just wipe their schedule and spawn them in an empty cube

#

again, removing is bad

pallid wharf
#

Wouldn't they still show up in the relationships menu?

brave fable
#

mark them as cannot-be-socialised 😌 there's always a simple fix

pallid wharf
#

okay, this does seem like a much simpler way of doing things, thanks!

brave fable
#

so easily amused watching little sprites wobble and fly away

unique sigil
#

@frozen elm a very funny discovery:

the cause for my panorama displaying incorrectly was your mod SDVpuffersquee

it seems that always winter = true for entrance to narnia overrides the panorama for other mods as well. i disabled that setting and my panorama immediately displayed correctly!!

frozen elm
#

No way, I thought I limited that change to only that specific location

unique sigil
#

which 1. i KNEW it wasn't a me problem 2. is funny bc i have spent the past few hours malding over this only for me to remember "wait i have entrance to narnia and it's always winter, would be real funny if that was the cause"

frozen elm
#

I am very sorry

unique sigil
#

then again, i don't have the latest update to narnia; if you fixed that in a later version, i might not have known!

#

im quite behind on updating certain types of mods haha

frozen elm
#

Ok I double checked and I did fix that so it should be fine after you update it

unique sigil
#

nice! thanks, i'll get to that SDVpuffersquee

frozen elm
#

Would have been weird that I didn't notice it working on Mountain Gardens if I hadn't come to think of it 😅

unique sigil
#

now that that's fixed, i can wrangle this FTM file

#

seems like FTM has a love hate relationship with me because one time it instantly works, others it wont spawn stuff lmao

frozen elm
#

I have managed to avoid FTM so far and limited myself to the vanilla features but I will probably need to deal with it at some point SDVpuffersquee

unique sigil
#

i've used FTM my entire map-making career but it seems like it only works correctly from the get go with cliffside cove and secret grove. with my other maps it took me multiple tries to get right lmao

frozen elm
#

I had a problem reported on my farm map with ftm stuff spawning from another farm maps file so I have been a bit scared of it

unique sigil
vernal crest
#

I had that situation with a user. It was just because the creator of the other farm map failed to specify that it should only be affecting its own farm map.

unique sigil
#

whyyyyy is this meteorite not spawning. why do you hate me so, FTM

frozen elm
#

yes it was what Aba said, I think the problem was that that map was set up to replace any other farm map based on config

vernal crest
#

Are you making your maps as AdditionalFarms, Sharogg?

unique sigil
#

quick q: is "quarry" a valid tile property in tiled?

#

my quarry map isnt spawning any ores... wonder why

vernal crest
#

Actually I think it was your map that my user was having quarry stones spawn on, Sharogg. We might be talking about the same person lol

vernal crest
unique sigil
#

OreSpawnEnabled set to true and the spawn settings look like this

#

no extra conditions

#

and i didn't change the spawn chances at all

#

wait could it be bc of the {{ModId}} token in MapName?

hallow prism
#

i don't believe FTM use quarry like that

vernal crest
unique sigil
#

nope, didn't do anything. still no ores spawning

vernal crest
#

Quarry is one of the options for terrain types in the FTM docs

hallow prism
#

maybe it changed then!

#

i remember that we had to use the custom tile stuff before

vernal crest
#

Maybe try changing the includeterraintypes to all just to check

#

I've never used FTM so I am just poking around the docs and other mods

hallow prism
#

your map have the terrain quarry for the quarry tiles?

unique sigil
#

i also have SpawnMountainFarmOreRect in the map properties

hallow prism
#

i mean the property

unique sigil
#

nothing's happening though

hallow prism
#

for the terrain

unique sigil
#

ah, it's set as dirt now. can one tile have multiple terrain types?

hallow prism
#

i don't know

#

in theory dirt should work with what you set too

frozen elm
#

And yes my farm mod (only one so far) is an Additional Farms one

vernal crest
#

Yup that was the one.

#

The user just got rid of Lnh's farm to fix it

unique sigil
#

oh yeah, lnh's comfortable farm definitely caused wrong forage spawns for me too

#

i think it made beach forage spawn on my vanilla forest farm lmao

frozen elm
#

Yeah I dropped a comment on their mod page but I think they've been away for a bit

#

It was just a pain for me to figure out what caused it, especially since it was at the beginning of modmaking and I was kinda clueless

vernal crest
#

I'm sorry I didn't think to let you know about it!

frozen elm
#

Nah don't worry, it was good practice

#

Anyway the issue wasn't my mod, so I was happy about that. I got a bit confused because I also have the option to spawn ores but I didn't realize the config for that doesn't change until you restart the game

unique sigil
#

the ores and meteorite still won't spawn SDVpufferwaaah

#

i've followed the instructions in the FAQ even,,

royal nimbus
#

this anyone? if i cant find a fix im gonna have to add it to my bugs list .-.

patent lanceBOT
#

@calm nebula: write this, you've got all my pieces now (12h ago)

solar shore
#

anyone know if there's a guide for making the farmhouse? the outside and the upgrades

weary haven
#

Can you make a cheese mod.

gaunt orbit
gaunt orbit
#

I don't remember if building data has its own page yet or if it's still part of the 1.6 migration page

solar shore
#

isn't there a template or something similar?

#

i know how to make art but not mods hahaha

#

im gonna check that btw thanks

gaunt orbit
#

You can unpack the game files as reference, but there's not really templates for anything.

It's not very hard to learn, though, and doesn't require any programming

solar shore
#

uhmn ok thank you!

calm nebula
#

(fwiw, once you Have Art, and it honestly sounds like you want to make farmhouse skins, people are often pretty patient in helping you get it into the game.)

#

!unpac

hallow prism
calm nebula
#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

gaunt orbit
#

Building reskins and map replacements are some of the easiest mods to make. It gets a little more complicated if you want to change the shape/size of the exterior, but that's not too hard either

calm nebula
#

...isn't there already cheese in the game

#

unless you mean to cheese the game, as in to make everything easy, in which case cjb is your friend

rancid temple
#

There's only like 2 types of cheese though, so much room for improvement

solar shore
gaunt orbit
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

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

gaunt orbit
#

You want to make a content pack for content patcher

solar shore
#

content patcher is discontinued no? or idk

gaunt orbit
#

No??

solar shore
#

i would like to make it AT

#

ooh ok

calm nebula
#

FULL REALISM

gaunt orbit
#

Okay, there should be a link to the AT wiki on that first link

calm nebula
#

cuts to a confused cat standing in a room sized fridge surrounded by cheese molds

solar shore
#

okii

tender bloom
#

I haven’t figured out how to make all the cheeses yet

#

But they all look tasty

hallow prism
calm nebula
#

how about this

#

instead of playing lumi's mod, I visit france instead

#

FULL REALISM

tender bloom
#

Ooh

#

Then you could eat lots of cheese

#

And croissants

#

Baguettes

#

Ok that’s my full list of French food I can think of

#

But probably other foods too

bronze jungle
calm nebula
#

touching grass isn't scary

bronze jungle
#

I'm terrified of it /j

hallow prism
calm nebula
#

Snails

lucid iron
#

vmv introduced me to many cheese ive never seen irl

hallow prism
#

yeah that is because all the vmv cheeses are fictional for the reason explained above 😄

#

however, they are all inspired by real cheeses, just not 100% transpositions

#

(it's like, pretty common for cheeses to be named after a place hence the names of some VMV cheeses being named after fictional names of places)

calm nebula
#

(The actual answer is that I would need to unfuck a lot to get a save working on 1.6.9)

#

And I don't want to do it

#

Sorry 😦

hallow prism
#

(why are you sorry?)

#

one cheese i like a lot irl that may inspire a modded cheese one day is matured inside chesnut leaves

#

(image found on google)

calm nebula
#

Got it, flying to France immediately

golden basin
#

I have a question, how would i add like map area text to the base map?

latent mauve
#

You mean on the worldmap?

#

There are two strings you can set through Data/WorldMap which are the scrolltext and the tooltip text, you need to define the map region and set those values accordingly

pine elbow
#

Can anyone give me an idea of ​​what to do, I need to use Harmony to override a method in the JojaCDMenu class, the problem is that many variables are not instantiated within the method, but are instantiated outside the method, what is the best method to resolve these instance variable errors in a function?

#

This is the function I want to modify using harmony, several variables give an error in it

#

exitTimer, base, checkboxes, boughtSomething

#

functions too, getPriceFromButtonNumber

brittle pasture
#

you can pass a JojaCDMenu __instance parameter to your prefix/postfix to access what would otherwise be this in the regular function

pine elbow
#

__instance worked on some variables but not on others
These: __instance.exitTimer JojaCDMenu does not contain a definition for exitTimer and no exitTimer extension method could be found that accepts a first argument of type JojaCDMenu

oblique sand
#

Hi guys ! New modder here ! I'm trying to make a mod for my boyfriend. I had no problem with the character nor the portraits, but i can't seem to make my two other mods work. There is one to change Leah's name and another one to change her dialogue. Can someone please take a look ?

brittle pasture
hoary lake
#

so i am finally finishing the stardrop quick start (Build it yourself edition) after a long break...very long break.

everything should be ready and good. Will smapi throw a error at me if i don't have a content.json tho?
is it expecting anything outside of just a manifest.json?

pine elbow
#

that way?
FieldInfo exitTimerField = typeof(JojaCDMenu).GetField("exitTimer", BindingFlags.Instance | BindingFlags.NonPublic);
int exitTimer = (int)exitTimerField.GetValue(__instance);

whole raptor
#

Also your includes lack the changes field and which asset you're actually targeting

brittle pasture
latent mauve
golden basin
#

I will soon I'm afk for now

pine elbow
#

ModEntry mod = ModEntry.Instance;

int exitTimer = mod.Helper.Reflection.GetField<int>(__instance, "exitTimer").GetValue();

#

Will this be right?

#

And as for the "base" variable, it is instantiated in a strange way in JojaCDMenu

public JojaCDMenu(Texture2D noteTexture)
: base(Game1.uiViewport.Width / 2 - 640, Game1.uiViewport.Height / 2 - 288, 1280, 576, showUpperRightCloseButton: true)

What would be the method to access it? Reflector? Or another?

brittle pasture
#

base is used to call the parent class' overridden functions
in your example it means "call the parent constructor as part of the child constructor"

#

do you have any specific examples why you need base?

hoary lake
#

it can't actually do anything but it has to be there...

calm nebula
#

Pretty sure pathos calls you out if you make changes an empt array

#

Like, kindly

hoary lake
#

hmmm can i make it say something funny in the chat?

#

like "hello how are you?" or "stardrop quick start successfully enabled"

#

probably the second one.

#

something nice to put in the content.json without actually putting something that could break.

stable grotto
#

the EditImage looks like the one in the corner and according to the patch summer, it is applied but obviously not

pine elbow
hallow prism
stable grotto
#

one sec, double checking that my vanilla masks still work

tough light
#

I’m not quite sure where to ask this buut, if I’m to play with someone that doesn’t have mods, can I still use mine? 😮

hallow prism
#

!mh i never remmember commands

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

hallow prism
#

!mp maybe

#

well i hate you bot

calm nebula
brittle pasture
calm nebula
#

ngl, once you patch THAT MUCH of a menu it's easier to just replace it tbh

pine elbow
brittle pasture
#

yeah, as mentioned if you want to replicate that in a prefix/postfix you need to handroll some IL
one of harmony's blindspots unfortunately
Like atra said, if you're doing an entire skipping prefix just to insert a few calls into the base function it might be better to just implement a new class that inherits from IClickableMenu

#

and then in the code that would create a JojaCDMenu patch that to return your own menu instead

pine elbow
#

If I create a new class, copying all the code from the original, is it possible to use harmony to replace the original class with mine?

brittle pasture
#

yes, per my last sentence

#

find where the game is returning a JojaCDMenu instance and harmony patch that part of the code

pine elbow
#

var original = typeof(JojaCDMenu);
var prefix = typeof(JojaCDMenu_Prefix);
harmony.Patch(original:original, prefix: new HarmonyMethod(prefix)); << Would it be possible to replace the class entirely?

lucid iron
#

Need to patch where JojaCDMenu gets created I think

brittle pasture
#

JojaMart.viewJojaNote
that function is making a new JojaCDMenu
patch it so it's new YourCustomJojaCDMenu

golden basin
#

this part

#

the actual vanilla world map im wanting to put a label for my graveyard

blissful panther
#

Either of those specifically for whichever one it is?

golden basin
#

im wanting to know how to do it though ^^;

#

ive no idea what it looks like and i learn by seeing

blissful panther
#

Well, best I can do is tell you it'll be an EditData on Data/WorldMap following... the structure of that. SDVkrobusgiggle

#

Maybe a little JSON snippet for each of these would be a good idea for the wiki...

golden basin
#

im trying something out now hopefully it works

blissful panther
#

Oh wait, do you already have the map area for the cemetary in place?

golden basin
#

yes im wanting to add the label now

#

but idk how to add it to the base map

#

i just wanna label it so ppl know where my cemetery is

blissful panther
#

So the one you're missing is the hover text, right?

golden basin
#

yeah and my npc icons are there either

#

but thats not a big deal

#

i guess i dont need a hover text but hmmm

latent mauve
#

You will need to use an EditData to define your WorldMap area so the tooltip knows where to show up, and so that the NPC location map knows where to put the character icons

golden basin
#

i know i just dont know what that would look like, i learn by seeing things done and memorizing

#

cause like idk how to edit the vanilla data i can make custom ones tho

latent mauve
#

If you give me a little bit, I can send my code block for an example, but you will need to fiddle with the exact coordinates and dimensions for your own location

blissful panther
#
"MapAreas": [
  {
    "Id": "{{ModID}}_PasserbyCemetery",
    "PixelArea": {
      "X": 75,
      "Y": 0,
      "Width": 140,
      "Height": 180
    },
    "ScrollText": "{{i18n:FC.PasserbyCemetery}}",
    "ScrollTextZones": [
      {
        "Id": "{{ModID}}_PasserbyCemetary_HoverText",
        "TileArea": {
          "X": 0,
          "Y": 0,
          "Width": 0,
          "Height": 0
        },
        "ScrollText": "THIS A CEMETARY."
      }
    ],

I'm thinking it'll be like this. Not 100% sure what it wants for the tile area part, though.

#

With the power of having your mod here, I figured the best example would be splicing it right in there. SDVkrobusgiggle

golden basin
#

I know what that looks like....Im talking about the editdata part i dont know how to set it up. do i append? do i....use just entries

blissful panther
#

That starts at line 17 of your WorldMap.json that I have on my end. You don't need a separate anything, just include it alongside the entry itself like that!

golden basin
#

but that will apply to my custom cemetery world map not the vanilla

blissful panther
#

Oh, yes it bloody will!

#

Okay, hang on...

golden basin
#

it even works with sve and east installd hell yes

finite sequoia
#

This is so cool to see omg, like I always wanted this w Passerby and now it’s happening!!!

golden basin
#

hehe im hoping to have this done for the next update

stable grotto
golden basin
#

i just hope it looks okay i was trying to do that perspective thing CA does with the desert

stable grotto
ashen goblet
#

Hello! I'm in the process of creating an NPC mod for an upcoming anniversary gift for my partner! As recommended, I started off with downloading SMAPI--me and my partner typically play on CurseForge to load the mods, what should I do here?

latent mauve
#

You will want to install SMAPI

whole raptor
#

I mean... if you ever played with mods I'm pretty sure you still used SMAPI, since it's used for all modding, not just Nexus (which is recommended over CurseForge)

latent mauve
#

Whereever your game is located

#

If you bought the game on Steam, that would be the Steam path

ashen goblet
#

Yeah! The game is on Steam, and it's ran from Curseforge with the mods, still opening the Steam game

#

So then, just use the steam path?

lusty walrus
#

I'm looking at writing some automation mods that use SMAPI integrations. I've played around a bit with SDV modding a while back, but I'm still pretty new to it. I know that for some games I've modded it's a lot easier to mod the GOG version than the Steam version. Is that the case here as well?

finite ginkgo
#

Nope, it's the same difficulty/process for both, there's virtually no difference between them

lusty walrus
#

that's good to know, I think I'm still going to buy and use the GoG version just because it's easier to uninstall a GoG game and delete the directory than for most steam titles.

#

But I may be bringing my biases from years of playing around with Jagged Alliance 2

ashen goblet
#

Hello! Apologies for the bother--I'm sorry for the silly questions, I'm new to all this 😅 though! the manifest, assets, and content files--are they added manually.. or are they added in some other way? I already made the folder for the mod itself as given by the wiki example^

#

I already downloaded both Content Patcher and SMAPI as well

drowsy pewter
#

yes, you just make them manually, the rest of the guide should explain it

ashen goblet
#

What file types are content and manifest?

drowsy pewter
#

you can make new files by right clicking inside the folder and clicking make a new text file, then rename it so it says content.json instead of content.txt

#

json as shown in the image

ashen goblet
#

Ahh

#

Okay!

#

Thank you

drowsy pewter
#

make sure you have view file extensions on!

ashen goblet
drowsy pewter
#

Yup, looks good

ashen goblet
#

I also need some clarification on this part here--probably another silly question! Dooo.. I just copy and paste the second formula and paste it into the blank.json file?

pine elbow
#

In the JojaMart class there is a method
protected override void resetLocalState()
{
communityDevelopmentTexture = Game1.temporaryContent.Load<Texture2D>("LooseSprites\JojaCDForm");
Morris = new NPC(null, Vector2.Zero, "JojaMart", 2, "Morris", datable: false, Game1.temporaryContent.Load<Texture2D>("Portraits\Morris"));
base.resetLocalState();
}

If I use the content patcher to replace LooseSprites\JojaCDForm

with my custom file, will it change in the game, or do I need to create my own form input?

brittle pasture
#

yes it should

velvet narwhal
#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

ashen goblet
ashen goblet
velvet narwhal
#

!npc

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:

velvet narwhal
#

I can see you're already using tia's guide which is a good start, I would also read content patcher docs

#

!cp

ocean sailBOT
ashen goblet
#

Alright, thank you

ashen goblet
velvet narwhal
#

I can't tell because filenames can be anything

ashen goblet
#

It's this part of tia's wiki!

velvet narwhal
#

In regards to putting actual text in these jsons, you can read through my template/github example for how each file actually looks in conjunction with one another

ashen goblet
#

Are you able to send it over?

velvet narwhal
#

3rd bullet point of the npc command

ashen goblet
#

Thank you! I'll look into it

ashen goblet
velvet narwhal
#

Yep now you can see how the game reads the files, like how data/characters looks to create a new npc

#

Just know that the "unpack" folder does nothing, it doesn't affect your game, you can just see it in english

ashen goblet
#

Anddd... I believe that in turn should give me a better idea of tia's wiki I take it

#

Thank you!

ashen goblet
velvet narwhal
#

Npcs have several different things that they pull from

ashen goblet
#

What do you mean?

velvet narwhal
#

mm off the top of my head they pull from the characters folder -> dialogue/schedules, portraits folder, data folder -> characters/npcgifttastes/engagementdialogue/concessiontastes/moviesreactions/weddings

ashen goblet
#

I also must apologize for the bothersome! I'm still trying to learn n' all!

ashen goblet
#

Got you

#

That makes sense

velvet narwhal
#

depending on how in depth you wanna go with an npc, it will definitely teach you everything content patcher can do, whether you like it or not SDVkrobusgiggle

ashen goblet
#

It's an anniversary gift, so i gotta gooo alllll the way!

pine elbow
#

In the content pather, I am changing the form file,

{
"LogName": "Load Objects images",
"Action": "Load",
"Target": "LooseSprites/JojaCDForm",
"FromFile": "Assets/JojaCDForm.{{language}}.png",

    },

In the English game it worked normally, but in Portuguese it didn't work, do I need to put the language in the target?
The problem is also that English doesn't have the "en" next to the name of the original target file

Do you know if it's possible to check using When if the language is not English, or do I need to make the change for each language separately?

atomic vale
#

Hey I have a modding question, for changing item sell prices using SMAPI what language are you supposed to use?
Thank you for your time!

velvet narwhal
pine elbow
#

Yes, it was on this website that I looked at the documentation, however, I was left wondering whether I need to do the English separately?

velvet narwhal
atomic vale
#

If you don't mind answering, if lets say I want to make varable item prices based on rng of planting but they still stack in the inventory at diffent prices, if possable would SMAPI be best for that?

velvet narwhal
brittle pasture
# lucid iron <@218910376732000256> 2am thoughts about the proposed 1.6 framework design patte...

put a first draft together at https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_Framework_Mods (minus the delegates stuff). all framework authors welcome to add to the page and correct any stupid mistakes I made

Stardew Modding Wiki

Framework mods refers to C# mods that add new functionality to the game's code, and allows content mods to make use of them without having to make their own C# component. They usually work by reading custom data set in content mods and then apply their changes accordingly.

velvet narwhal
#

quantified items are kind of a slippery slope iirc SDVpufferthinkblob

atomic vale
velvet narwhal
#

i mean, nothing is impossible with c#

atomic vale
velvet narwhal
#

with like, a dash of handholding, because content patcher will forgive you for trailing commas

uncut viper
#

(the trailing commas are fine bc of newtonsoft)

atomic vale
#

so both are C# at heart?

lucid iron
calm nebula
atomic vale
#

Yay, time to learn a new language!

calm nebula
#

Just fyi, just because it appears like it can't be null doesn't mean it can't be

#

When you get deser involved

lucid iron
#

Yeah big skems

brittle pasture
calm nebula
#

as a general rule, just because your model looks not-nullable doesn't mean some content modder won't try to load a CP action block there instead

#

lol

lucid iron
#

I can write about the delegate stuff, though it's like, very specialized LilyDerp

calm nebula
#

(My general rule is I treat users as if they're incompetent and content modders as if they're deliberately pentesting, lol. It's not...all of them, it's even only a tiny minority, but still.)

velvet narwhal
#

ELI5: me, always

calm nebula
#
var buildingData = building.GetData();
if (buildingData?.CustomFields?.TryGetValue("MyModID_MyFancyKey", out string myFancyData) == true) {
  // do stuff with the myFancyData field
}
#

valley girl code

brittle pasture
#

yeah I considered that (and that's what I use in my own code lol) but I thought the current form is clearer

velvet narwhal
#

the fancy one liner you and bluebs helped me with i can give

#

if (building.GetData() is BuildingData data && (data.CustomFields?.TryGetValue("MyModID_Key", out string? myModData) ?? false))

charred seal
#

Say, does anyone know the exact realtime that a pickaxe swing takes?

calm nebula
#

also yes, I lost my account int he migration

#

say hi to my lazy second account

#

atravita v2

hallow prism
#

what migration?

calm nebula
#

remember back in the day when the modding wiki was on like, I don't know, some other site?

ashen goblet
#

Can somebody verify if this is correct?

atomic vale
#

So I have visual studio and can’t find any way to get any mod files open on it, is there something I have to do?

lucid iron
#

Are you following the wiki C# mod guide?

hallow prism
#

i thought you meant on discord or something

ashen goblet
#

I'm following Tia's wiki tutorial! if that was question for me!

#

This is how my files are lookin' so far,

calm nebula
velvet narwhal
#

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

ashen goblet
#

Ahh\

#

Ahh*

#

Yeah, that can help

#

I'll get Notepad++

calm nebula
#

!vsc

ocean sailBOT
velvet narwhal
#

you could go the hard route and constantly throw your code into the smapi verifier, but it definitely gets old fast

ashen goblet
#

Got Notepad++

#

What difference does it make?

calm nebula
#

my recommendation is vscode

#

it will highlight your errors in json in bright red

velvet narwhal
brave fable
calm nebula
brave fable
#

look for the joy in notepad++, not the reason

calm nebula
#

sourceforge is the site where old crusty open source programmers put things

ashen goblet
#

I am new to all of this! I am slowly evaporating

ashen goblet
calm nebula
#

curseforge is the weird site people sometimes upload mods to

velvet narwhal
#

(and apparently the api was acting screwy with curseforge and manifests)

ashen goblet
#

I'll switch to Nexus though

velvet narwhal
#

do we have a stardrop command?

#

is it !stardrop

ashen goblet
#

How is it used?

calm nebula
#

sourceforge != curseforge

#

then select the directory your mod is in

velvet narwhal
ashen goblet
#

Not content, or manifest

velvet narwhal
#

that's cause those are files, not folders, the preview on the side should be showing your files

ashen goblet
velvet narwhal
#

you don't have to make them all different folders

ashen goblet
#

They can be in one

#

?

velvet narwhal
#

it will obviously look different because i'm on visual studio 2022

#

but [CP] is my main folder,

lucid iron
#

hrm i been calling it delegates

#

but what exactly is umbrella term for "functions you can call from content (because game's doing it already)"

ashen goblet
#

This is all really complicated ahaha

#

Is there a chance somebody, at another time, hop in a call and guide me through the basics n' all for making this mod? No idea if that's okay to ask, but I hope it's not bothersome!

ashen goblet
#

Lookin' into it, but I mean for somebody to visually help me and verify the work!

#

Seems I got the Manifest workin'!

lucid iron
#

do u need to have static method for delegates think

#

never thought about it

brittle pasture
#

Non static methods basically have their 1st parameter be the class instance, so their signature would not match

patent lanceBOT
brave fable
#

does the full guide include wind simulation and simple harmonic motion? wondering if i shouldve waited for the guide(tm)

lucid iron
#

blueberry why dont u write the guide

#

plus the guide about putting your farmer in situations through farmerrenderer

brave fable
#

i tried an art guide once but its hard to be an authority on everything when u dont know anything

#

like realistically would you trust a guide on anything from someone with ~2 years casual experience lol

chrome mountain
#

I have this annoying problem in an event, I want my 2 characters to walk to the right for a short time, while the screen fades to black and I warp them away. But for some reason the Curator continues to walk to the right after warping. Had a similar issue with a different event, figured I'd just increase the pause which fixed it. But not here? SDVpufferthink
move Curator 2 0 0 true/move farmer 2 0 0 true/pause 500/fade/viewport -1000 -1000/warp Curator 30 40/faceDirection Curator 0/warp farmer 33 40/faceDirection farmer 0
Full json: https://smapi.io/json/none/2c96d584b5b34420a66bd3360f3363be

Fixed it, just needed even more pause

lucid iron
#

plus these guides r more about making stuff work at all, not about having opinions about what makes something good

velvet narwhal
#

my guides are basically, "do it work off the shelf? yeah? good enough"

heady crest
#

why is this happenign im so over with this

atomic vale
#

how do i get notepad++ to not do this?

#

it is a json file btw

#

true with all ones i open in notepad++ for SDV mods

hallow prism
#

tokens don't work on load

lucid iron
atomic vale
lucid iron
#

there should be info about formatting errors ike this

heady crest
lucid iron
#

best to follow and fix them

heady crest
hallow prism
#

yes no need to ping me

#

as i said, tokens don't work on load

#

either you load a blank file then edit it, or you put your mod id directly, without a token

heady crest
#

i did put the raw id and it showed the same error

hallow prism
#

then provide a log with the error

ornate trellis
#

did you load your custom maps O:

heady crest
#

nvm i had a typo

#

sorry guys

ornate trellis
#

mood tbh

velvet narwhal
tender bloom
#

Maybe I should change my name back to MathPerson 😛

#

In the spirit of spooky season

velvet narwhal
#

math is definitely spooky

tender bloom
#

It’s fun!

#

And useful

velvet narwhal
#

i only need to understand matricies and sine, i am ignorant to all else

calm nebula
#

Math is beautiful

velvet narwhal
old edge
#

There should be more videos on YouTube but there isn't

#

They are all outdated now

tender bloom
#

Making videos is a huge pain in the ass

next plaza
#

Text > video in my opinion

tender bloom
#

I’ve resolved to only ever do 1-take videos that are less than 10 min long

#

Plus I can’t copy paste from a video

vernal crest
#

I hate it when I want a tutorial and the only thing is a video

velvet narwhal
#

i can't stand my own voice and i'm not interested in editing out me typing something up as a reference, so i won't do it

vernal crest
#

But I do feel bad for the people for whom text is hard to learn from that there aren't any 1.6 videos

brave fable
# tender bloom Do you need more math 👀

surprisingly no! but now that i'm just throwing wobbly dangly pendulums all over my maps i'm thinking i should probably just have an array of 4~5 resolved pendulum values for different resistance/weight values rather than calculating for every single sprite when most of them are pretty similar.

#

on the other hand, giving each one tiny changes in weight/resistance means wonderful tiny changes in how they swing and settle in the wind, which looks nice when there's like 4 lanterns or paper chains or rope tassles in a row

#

after all, what's 5 more ridiculous trig calculations in the grand scheme of things

tender bloom
#

What about a function that you plug in constants? Or is it already that

velvet narwhal
#

SDVpufferthinkblob i mean if you did the array bit can't you just also multiply by* random to the strength

brave fable
#

atm it's a data file where each sprite has a resistance value and weight value, where resistance scales the wind force down, and weight scales the gravity force up

#

random probably wouldn't be good since i'm giving things fairly realistic values to make them blow around all nice

brave fable
pine elbow
#

Hi, I'm editing the community center bundles, and I wanted to make the bus not be for money, does anyone know which of the methods of the class that is in StardewValley.Locations is the CommunityCenter class, I think that's where it works, right? I've been reading it, but I didn't really understand where the bus bundle differs from the other bundles, since the others are items and the bus is money, I would like to put items in it

#

Some time ago I had tried to edit the Bundles.json file even using the content patcher, but it didn't work to make the Bundle Vault the same as the others, the game bugged.

#

I was reading and I think it might be in the last method of the class, but I don't know if I would have to change it to another one, the method is this:

old edge
#

Videos are easier for me. I had to gulp down so much coffee to read the wikis cause I can't pay attention sometimes. Have to cram it in my noggin.

#

If I didn't like modding I wouldn't spend all the time reading I guess

#

Making a farm was a bit easier than I thought except for the greenhouse glitch I would never know how to fix on the wiki since no info

tender bloom
tender bloom
#

I don’t personally know where the methods are for the bus but I get the impression it’s likely to be hardcoded

pine elbow
#

The method I sent called getJunimoNoteTileFrames does a check, if (area != 5)
I think it's right here, the problem now is that map.RequireLayer is not being recognized by my Visual studio, I'm trying to figure out how to do this

#

I found it, it's StardewValley.Extensions

#

Now you will test to see if it works

knotty phoenix
#

Oh gosh I'm looking through the CP documentation and it really does do so many things all on its own. I love this community

calm nebula
#

my coworker says macs have that magic

calm nebula
# pine elbow

I don't know what you're doing but that's map tiles

#

like, editing the map to show different things

#

may I suggest JunimoNoteMenu.setUpBundleSpecificPage

teal bridge
calm nebula
#

He said you can copy of text in a video, it's ocr, and it's surprisingly not bad

#

I suspect you would rarely do it

tender bloom
#

You’re actually right that macOS has a lot of OCR stuff these days

#

But idk about during videos

#

Like i definitely accidentally copy paste text out of images a lot

lucid iron
#

@brittle pasture i put in stuff about delegates

#

possibly put too many headings blobcatgooglyblep

#

im also unsure if stuff about making custom classes that go in content fields as string is worth mentioning

#

that is like, extremely niche and not really a thing u would do for general usage framework

#

machine output delegate fell under this too so i didnt write anything about that

pine elbow
shell heron
#

I'm hoping someone can help me. I'm trying to do an add on pack for a mod and trying to set the condition to only spawn in the items after a certain event. I know using:

"CPConditions": {
"FarmCave": "Bats"
},

will set it correctly, but I want it to be compatible with bats and mushrooms cave as well. Is it as simple as:
**
"CPConditions": {
"FarmCave": "Bats",
"FarmCave": "Mushrooms"
},**

lucid iron
#

is this FTM

shell heron
#

yes I'm using Farm Type Manager

lucid iron
#

Things will be allowed to spawn if all of the provided conditions are true at the start of the day.

#

bats and mushrooms are exclusive so u cant do that

#

try HasSeenEvent for demetrius event?

#

personally would not be bothered if cave was spawning stuff before bats/mushroom, 25k is very early

patent lanceBOT
#

@next plaza: look into spacecore animations not working in other languages and the 0-schedule fix breaking marriage schedules (24h ago)

shell heron
lucid iron
#

No I think the condition is AND

#

You would need a cave that's mushrooms AND bats which is only possible with mod

#

Instead consider checking demetrius' cave event

thorny tiger
#

trying to code a super basic CP mod to just add one fish and ive gotten quite far and the fish is catchable and sellable... but it doesnt do the fishing minigame? just gives it to you like trash or algae or whatever?

uncut viper
#

"FarmCave": "Mushroom, Bats"
works as an OR in a cp condition

tranquil quiver
#

anyone know what im doing wrong? is it the springobjects?

rancid temple
thorny tiger
#

ping me if anyone knows why my custom fish is skipping the minigame (no i havent got something that does that) im going to sleep but if anyone has any info then please contact

thorny tiger
#

it can be caught with a rod

#

and professions work on its sell price

brittle pasture
#

there's no springobjects/cowphotowinter in the game, where did you get that from? and what are you trying to do with it?

rancid temple
#

!json share you content I guess

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.

calm nebula
thorny tiger
thorny tiger
calm nebula
#

Matching data/objects edit looks like?

thorny tiger
# calm nebula Matching data/objects edit looks like?

{
"Action": "EditData",
"Target": "Data/Objects",
"Entries": {
"FishTest_GreenFish": {
"Name": "FishTest_GreenFish",
"DisplayName": "Green Fish",
"Description": "If you can see this, that's a good sign.",
"Type": "Fish",
"Category": -4,
"Price": 1200,
"Texture": "Mods/FishTest/Objects/Objects",
"ContextTags": [ "color_green", "fish_river", "season_fall", "season_spring", "season_summer" ]
}
}
},

tranquil quiver
#

my bad im just trying to replace the cow photo from the haley cutscean.. i used xnb2cp as a guide

brittle pasture
#

did you unpack the files to see exactly where it is?

calm nebula
thorny tiger
#

why are we replacing the fish's name with the id

#

"MNF.MoreNewFish_ghost_eel": "Ghost Eel/60/smooth/8/40/2000 2600/fall/both/682 .2/1/.20/.15/0",

#

^ example from MNF

rancid temple
#

What does the object data look like for that fish?

rancid temple
#

For the Ghost Eel

thorny tiger
#

oh give me 2 sec

calm nebula
thorny tiger
# rancid temple For the Ghost Eel

"MNF.MoreNewFish_ghost_eel":{
"Name": "MNF.MoreNewFish_ghost_eel",
"DisplayName": "{{i18n:ghost_eel.name}}",
"Description": "{{i18n:ghost_eel.description}}",
"Type": "Fish",
"Category": -4,
"Price": 100,
"Texture": "Mods\MNF.MoreNewFish\Objects\Objects",
"SpriteIndex": "14",
"Edibility": 14,
"ContextTags": ["color_sand","fish_ocean",],

calm nebula
#

Display name should not be used anywhere

thorny tiger
#

mnf seems to use the display name for it

#

i think

#

idek

rancid temple
#

Kind of, it's using i18n so it wouldn't match in a different language

#

Vanilla uses the plain names for the internal name rather than the ID

#

I am kind of confused about the Ghost Eel working there

thorny tiger
#

yeah so whats up with using Ghost Eel instead of MNF.MoreNewFish_ghost_eel

thorny tiger
calm nebula
#

I suspect it works until it doesn't

thorny tiger
#

well ill slap in the internal name and see if it works

calm nebula
#

Probably in some nightmarish multiplayer scenario but yeah

rancid temple
#

I guess I don't actually use that mod so I have no idea if it actually works lol

tender bloom
#

MNF did have some odd persistent issues pre-1.6 so that might be part of it

#

Notably the “everything is weeds” bug

next plaza
#

weeds honey

tender bloom
#

MNF is old old old, from before JA

brave fable
#

fond memories of my first mod giving me junk like Weeds Ring

tender bloom
#

I would maybe pick a newer mod to reference if possible

next plaza
thorny tiger
#

well it didnt work but that may or may not be because i forgot to update the folder in my mods folder lmao

next plaza
tender bloom
#

Wait why did they hardcode indexes then???

#

I always assumed it was because it predated JA

next plaza
#

CP didn't have mod-added tokens originally

rancid temple
#

Just because a tool is available doesn't mean someone will use it :P

tender bloom
#

They definitely at least used to hardcode indexes

next plaza
#

Maybe that's why? (No fetching the dynamic JA ID )

tender bloom
#

I suspect after 1.6 they don’t anymore but idk

thorny tiger
#

anyway

#

still insta catches

tender bloom
#

After adding fish data?

next plaza
#

Well, the thing is, JA was released a year and a half after the game was released. CP didn't even exist at the time

thorny tiger
next plaza
#

So maybe it was an XNB mod???

tender bloom
#

Because the game definitely needs fish data to define how hard the mini game is

rancid temple
#

Just to be sure, you definitely are getting the minigame otherwise?

thorny tiger
#

got really excited and then realised it was the minigame for a smallmouth bass

tender bloom
#

Try a patch summary?

#

Maybe the fish data patch isn’t working

#

Or a patch export on fish data

thorny tiger
tranquil quiver
#

Since I’m a beginner i scrapped the cow photo out the code… I’m going to see if it works now

tender bloom
#

!patchsummary

ocean sailBOT
#

Can you do these steps to provide more info?

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

!patchexport

ocean sailBOT
#

A patch export makes a copy of specific stuff in your content folder so you can see what changes have been applied.

  1. Load up a save (with Content Patcher installed)
  2. Type patch export <FILEPATHOFTHING> in the SMAPI console and hit return
  3. Look in your patch export folder in the game folder for the relevant json file or image
  4. If it's a json file, you can share it via smapi.io/json. If it's an image you should just be able to look at it.
thorny tiger
#

im so lost

calm nebula
#

But I haven't used the mod recently due to you know

thorny tiger
calm nebula
#

Hmmm

brave fable
#

your time is formatted wrong: you want 600 2600 instead of 600 200, and you're also missing a true or false on the end

calm nebula
#

Your times say 600 200

#

Can you try fixing that?

thorny tiger
#

right so it is 2600 not 200

#

literally nowhere told me 😭

brave fable
#

well the other fish in the file all say 2600 hahah

thorny tiger
#

yeah i didnt have that until just now

rancid temple
#

!unpack you should unpack the contents so you can see the base data

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!

thorny tiger
#

yeah i changed it to 600 2600 and added the false

#

and its still instant

#

idk what the problem is

#

i might call it for today since its after 1am

#

if anyone has any other suggestions please please ping

#

also bit of a backtrack but the vanilla fish have internal things that don't match the first part (except goby)

#

so what's up with MNF doing the same thing

calm nebula
#

I love it when the decompile looks like this

#

anyways, so far I've not figured it out, it looks fine to me

calm nebula
#

FishTest_GreenFish

#

capitalization matters

thorny tiger
#

oh my god

#

of course I would mess that up

#

literally of course

#

ok

#

thank you I'll fix that tomorrow

calm nebula
#

(meanwhile the zeroth index of Data/Fish seems never used.)

thorny tiger
#

I can't believe I just wasted 90 minutes on two capital Fs

rancid temple
#

That doesn't actually seem that outlandish when it comes to programming

#

Pathos has made so much stuff case-insensitive, it's spoiling

calm nebula
#

what do the young ones say? press f in chat?

rancid temple
#

I dunno if that's a "young'un" saying really, like millenial age at this point lol